Qu'est-ce que Clang et LLVM ?

Le problème exposé dans ce sujet a été résolu.

Bonjour,

j'ai lu les articles Wikipédia et la page sur leur site, mais ça n'a pas suffi à ce que je comprenne vraiment. Que sont-ce ? J'ai cru comprendre que Clang était un front-end de compilateur, mais dans ce cas, pour l'utiliser avec quoi (pour avoir les autres parties du compilateur), et pourquoi développer juste un front-end ? Quant à LLVM, je n'ai pas compris du tout ce que c'était. J'ai cru comprendre que le but de leur projet était de faire un compilateur qui surpasse GCC. Je ne comprends pas pourquoi eux ils y arriveraient mieux que ceux de GCC, ni ce que leur projet a de si extraordinaire :D .

Merci !

Lu'!

Clang est ensemble de front-end pour les langages C, C++ et Obj-C qui compile le code d'entrée vers un code en langage LLVM qui est grosso-modo un langage qui ressemble à de l'assembleur mais un poil plus "haut" niveau.

LLVM est à la fois le nom du langage et de l'infrastructure de compilation en fait. C'est à dire que tu as avoir une deuxième phase de compilation pour transformer le code LLVM en code machine.

J'ai cru comprendre que le but de leur projet était de faire un compilateur qui surpasse GCC. Je ne comprends pas pourquoi eux ils y arriveraient mieux que ceux de GCC, ni ce que leur projet a de si extraordinaire :D .

jtruc34

GCC est vieux. Il est putain de vieux. Il a été conçu et a grossi pour des contraintes complètement différentes que celle qu'on a aujourd'hui quand on compile. Ce qui fait qu'aujourd'hui son code est un énorme bordel dans lequel il est très difficile de maintenir et faire évoluer des choses.

Clang a été un peu mieux architecturé au départ et surtout n'est pas aussi vieux, donc le code est moins un empilement de correctif et d'évolution bizarre. Ce qui fait qu'aujourd'hui, bosser par l'intermédiaire de Clang est moins chiant, il est par exemple bien plus facile d'aller y ajouter des extensions que dans GCC.

L'autre point c'est que lorsqu'on produit un nouveau langage, on n'a besoin que d'aller jusqu'à LLVM puisque le reste du chemin est déjà fait. Ce qui est assez confortable dans ce cas-ci aussi (pour GCC de ce côté c'est mort).

D'après Wikipédia, LLVM est une infrastructure de compilateur (donc qui regroupe plusieurs compilateur) dont un qui se nomme Clang et qui compile le C et ses dérivés (C++, Objective-C).

Niveau performance LLVM-Clang et GCC se valent globalement.

Je pense que le projet à tous de même de l'avenir étant donné qu'il est développé par des sociétés du GAFA, et qu'il est utilisé par exemple comme compilateur par XCode pour le développement d'applications iOS et MacOS (et sûrement pour WatchOS et TvOS).

EDIT : Cramé, c'est bien mieux expliqué par mon VDD.

+0 -0

Par VDD, tu entends bien « volontairement mort par déshydratation » (Voluntary Death by Dehydration), ou l' « association pour les braques allemands à poil dur » (Verein Deutsch Drathaar) ? Je demande, on sait jamais… :lol:

Donc Clang ne sert à rien du tout, tout seul ? On doit forcément l'utiliser avec un autre truc (LLVM ?) ? Wikipédia français dit que Clang est un compilateur, mais ce n'est qu'une partie en fait ?

Mais donc, pour l'instant, pour un programmeur, Clang n'a pas encore tellement d'intérêt par rapport à GCC, n'est-ce pas ? C'est plutôt du côté du développement si j'ai bien compris.

Et j'ai aussi lu que GCC permettait aussi de changer de front-end, mais pas du côté utilisateur, pour les développeurs. C'est bien juste ?

Merci !

+0 -0

VDD = voisin du dessus.

Par expérience, les message d'erreur de clang sont plus clair que ceux de gcc, et la compilation est plus rapide. Par contre, je crois que clang produit des binaire plus lent à l’exécution.

Après, mes infos datent un peu, plus le temps passe et plus gcc compile vite, fais des erreurs claires, tandis que clang produit des binaires de plus en plus rapide à l'exécution.

+0 -0

Donc Clang ne sert à rien du tout, tout seul ? On doit forcément l'utiliser avec un autre truc (LLVM ?) ? Wikipédia français dit que Clang est un compilateur, mais ce n'est qu'une partie en fait ?

jtruc34

Les installeurs de Clang embarquent toujours LLVM.

Mais donc, pour l'instant, pour un programmeur, Clang n'a pas encore tellement d'intérêt par rapport à GCC, n'est-ce pas ? C'est plutôt du côté du développement si j'ai bien compris.

jtruc34

Si carrément. D'abord parce que la majorité du temps les exécutables produits sont au coude à coude avec GCC. Mais surtout parce que (putain) les messages d'erreurs de Clang sont bien plus clairs, les warnings plus nombreux et les options de sanitize dispo plus nombreuses aussi.

Et j'ai aussi lu que GCC permettait aussi de changer de front-end, mais pas du côté utilisateur, pour les développeurs. C'est bien juste ?

jtruc34

Ah ouais on peut. Mais vu la souffrance que c'est, c'est pas souhaitable à moins d'être masochiste.

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte