IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

GCC Discussion :

GCC r�impl�ment� en C++


Sujet :

GCC

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    R�dacteur
    Avatar de Hinault Romaric
    Homme Profil pro
    Consultant
    Inscrit en
    Janvier 2007
    Messages
    4 570
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activit� : Consultant
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Janvier 2007
    Messages : 4 570
    Billets dans le blog
    121
    Par d�faut GCC r�impl�ment� en C++
    GCC r�impl�ment� en C++
    les d�veloppeurs du compilateur andonnent le C pour garder son code facilement maintenable et compr�hensible

    Le d�veloppement du compilateur GCC (GNU Compiler Collection) passe du langage C au C++.

    La communaut� en charge du d�veloppement de la suite de compilateurs libre GCC vient d�annoncer que son code a �t� r�impl�ment� avec le langage orient� objet C++.

    Avant cette adoption d�finitive du C++, le code utilis� dans l��tape un du processus de construction de GCC a �t� mis en �uvre avec le langage C. Le code des �tapes deux et trois de ce processus a �t� d�velopp� pendant un certain temps en C++ avant d��tre abandonn�.

    L�id�e d�utiliser le C++ en lieu et place du C avait germ� dans la t�te des d�veloppeurs de GCC en mai 2010, qui estimaient que le C++ �tait acceptable pour d�velopper le compilateur.

    Selon les explications sur le Wiki du projet, le passage du C au C++ a pour objectif de maintenir le code du GCC compr�hensible et facilement maintenable. Les d�veloppeurs du projet notent n�anmoins que l�utilisation imprudente de C++ peut �tre lourde de cons�quences. Un point qui cependant n�est pas qualitativement diff�rent des probl�mes rencontr�s actuellement.

    Les modifications du code de GCC ont �t� planifi�es et mises en �uvre dans le cadre du projet � GCC in Cxx �. Certaines structures de donn�es ont d�j� �t� r�impl�ment�es en C++ et, actuellement, les d�veloppeurs sont en train de travailler sur les changements qui ont �t� int�gr�s � la branche 4.7.

    GCC est � sa version 4.7.1 depuis juin 2012. La suite de compilateurs permet de transformer le code source en langage machine pour plusieurs langages de programmation dont C, C++, Java, Objective-C, Ada et m�me Fortran 95.



    Source : Wiki conversion GCC vers C++


    Et vous ?

    Bonne ou mauvaise id�e ? Pourquoi ?
    Vous souhaitez participer aux rubriques .NET ? Contactez-moi

    Si d�boguer est l�art de corriger les bugs, alors programmer est l�art d�en faire
    Mon blog, Mes articles, Me suivre sur Twitter
    En posant correctement votre probl�me, on trouve la moiti� de la solution

  2. #2
    Membre �clair�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    D�cembre 2008
    Messages
    836
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : D�cembre 2008
    Messages : 836
    Par d�faut
    Citation Envoy� par Hinault Romaric Voir le message
    Bonne ou mauvaise id�e ? Pourquoi ?
    Bonne... question.

    D'un c�t�, C++ permet d'utiliser plus de paradigmes de d�veloppement, mais cet ajout implique pour moi une certaine n�cessit� de re-r�fl�chir � la conception.
    Je ne suis pas du tout persuad� que la migration d'un langage � un autre soit une bonne id�e.

    D'un autre c�t�, C++ permet de compiler du C. Le fait qu'il soit multi-paradigme permet tout simplement une refonte en douceur, tr�s progressive, via divers refactoring tr�s l�gers.
    Donc la stabilit� ne devrait pas trop en souffrir.

    Apr�s... Quels sont les avantages de C++ contre C?
    _ la possibilit� d'utiliser des outils pour g�n�rer des diagrammes de classes UML afin de comprendre nettement plus rapidement la structure de code. Diagrammes UML qui sont quand m�me de plus en plus connus par les d�veloppeurs, je pense. L'int�r�t de ce point, c'est de pouvoir amener facilement de nouveaux contributeurs: plus un projet est simple a appr�hender, moins �a co�te cher en formation et motivation, plus rapidement les nouveaux contributeurs peuvent contribuer. Donc, plus vite le projet peut lui-m�me �voluer.
    Bien s�r, ce n'est pas parce qu'un projet est �crit en C qu'il est mal document�, mais je n'ai jamais entendu parler d'outils qui extraient la structure d'un projet �crit en langage non objet.

    _ utilisation des templates. Ca allonge la dur�e de compilation, mais �a permet de r�duire la base de code de fa�on parfois drastique. Je doute fortement que �a aie un impact en terme de performances, en revanche, niveau maintenance, c'est une �vidence. Bon... tant qu'il n'y a pas besoin d'aller lire le code source des templates fournis par G++, parce que bon, ces bouts de code n'ont pas grand chose de simple � lire... Voire de lisible...

    Donc, pour moi, le seul gain potentiel sera un gain en terme de maintenance, une certaine partie du code sera fusionn�e via les templates, une autre sera plus lisible gr�ce aux fonctions inline, et une doc pourra �tre g�n�r�e � partir du source via les diagrammes de classe.

    Peut-�tre m�me de l�g�res pertes de performances dans l'absolu, parce que migrer du langage C au langage C++ est truff� de subtilit�s, mais s'ils g�rent bien (ce qui est probable, on parle de gens qui �crivent des compilateurs, dont un compilateur C++ hein), la diff�rence ne sera pas perceptible (voire inexistante?):
    Utiliser les m�thodes et fonctions inline � bon escient et ne pas abuser du code virtuel (h�ritages et m�thodes) permet de n'avoir que peu voire pas du tout d'impact.
    Vu que la base de code est en C, je doute qu'il y ait de l'h�ritage de structures autre que "manuel" et du coup, il ne devrait pas y avoir trop de virtuel. De ce c�t�, il est m�me possible qu'il y ait un gain de performances occupation m�moire et/o� utilisation CPU).
    Pour l'inlining, le compilateur fait bien le boulot lui-m�me, je pense.

    D'ailleurs, cette nouvelle am�ne une question:
    C++, oui, mais C++11?
    Parce que si ce n'est pas le cas, ils vont se priver de certains m�canismes qui peuvent consid�rablement simplifier leur vie: move semantic, int�gration des instructions multi-thread, et ce genre de choses. Choses qui pour certaines sont fournies avec le C11, mais �a n'aurait �t� "qu'une simple mise � jour" du code, avec de probables oublis r�guliers (je n'ose imaginer la taille en LOC du projet!). Ici, le changement de langage va probablement impliquer un travail avec plus d'attention, qui pourrait permettre d'int�grer les avanc�es de C11 et C++11, et la, je suis certain qu'on aura des am�liorations de performances.

    Quant � la question du fait que �a emp�cherait que �a fonctionne sur certaines architecture d'utiliser du code trop r�cent: je suis s�r � 95% qu'ils utilisent GCC pour compiler, du coup, �a implique qu'au moins un compilateur pourra compiler leur compilateur: le leur. Et donc, il pourra le faire sur toutes les plate-formes d�j� support�es, non?

    [edit]
    J'ai vu juste, le gain qu'ils semblent attendre est effectivement ax� sur la maintenance:
    Background

    What matters for GCC going forward is that it continue to be comprehensible and maintainable. That is a struggle that GCC has faced for its entire existence as a free software project. It is certainly true that using C++ unwisely can make that struggle more difficult. But this issue is not qualitatively different from the issues we face today.

    Whether we use C or C++, we need to try to ensure that interfaces are easy to understand, that the code is reasonably modular, that the internal documentation corresponds to the code, that it is possible for new developers to write new passes and to fix bugs. Those are the important issues for us to consider. The C++ features which are not present in C -- features which are well documented in many books and many web sites -- are not an important issue.

    For additional background information on this effort and its scope, please check out http://airs.com/ian/cxx-slides.pdf .
    ==>
    Ce qui importe est que GCC reste compr�hensible et maintenable[...]que nous utilisions C ou C++ nous devons nous assurer que les interfaces soient simples � comprendre, que le code soit raisonnablement modulaire, que la documentation interne corresponde au code, qu'il soit possible pour de nouveaux d�veloppeurs d'�crire de nouvelles passes et de corriger les bugs.

    ==>
    Les fonctionnalit�s de C++ qui ne sont pas pr�sentes en C -- fonctionnalit�s qui sont tr�s bien document�es [...] -- ne sont pas importantes.

    Du coup, j'en d�duis qu'ils ne vont pas utiliser les fonctionnalit�s des nouveaux standards, ce qui r�pond(?) � ma question pr�c�dente.

  3. #3
    Membre �clair�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Janvier 2010
    Messages
    553
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 45
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2010
    Messages : 553
    Par d�faut
    Citation Envoy� par Freem Voir le message
    [...]je n'ai jamais entendu parler d'outils qui extraient la structure d'un projet �crit en langage non objet.
    Doxygen est capable d'analyser du code C, de d�crire les structures, de les lier entre elles et m�me de faire des diagrammes pour synth�tiser tout �a.

    bon c'est pas de l'UML, mais c'est d�j� bien pratique.

  4. #4
    Membre tr�s actif Avatar de jmnicolas
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Juin 2007
    Messages
    427
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 47
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2007
    Messages : 427
    Par d�faut
    GCC r�impl�ment� en C++ ?

    Les signes avant-coureurs sont bien l�, les Mayas avaient raison : 2012 c'est la fin du monde

  5. #5
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 49
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations professionnelles :
    Secteur : Sant�

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Par d�faut
    Pourquoi pas ? Mais perso, je suis plus int�ress� par les nouvelles fonctionnalit�s qui seront impl�ment�es : support complet de la norme (il doit manquer des choses je crois), proposition de nouvelles fonctionnalit�s pour le prochaine TR ou C++1x (SG1 et SG5 en particulier), am�lioration des temps de compilation et des messages d'erreurs de template (clang en mieux). Si cette �volution permet de faciliter l'ajout de ces fonctionnalit�s, je prend

  6. #6
    Membre �clair�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    D�cembre 2008
    Messages
    836
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : D�cembre 2008
    Messages : 836
    Par d�faut
    Citation Envoy� par jmnicolas Voir le message
    GCC r�impl�ment� en C++ ?

    Les signes avant-coureurs sont bien l�, les Mayas avaient raison : 2012 c'est la fin du monde
    Post tr�s argument� s'il en est.

    J'ai lu un peu plus en d�tail le contenu de cette source et des documents qui y sont cit�s...

    D'ailleurs, j'ai l'impression que le titre de cet article fait dans la sensation.

    Le C n'est pas abandonn�, pas totalement du moins, puisque "GCC generates temporary garbage which is only freed by ggc collect", GCC �tant �crit en C. D'un autre c�t� "C++ permits reference counting smart pointers." et donc "We may want to use a mixture of reference counting and garbage collection."

    En gros, le C++ va �tre utilis�, oui, mais uniquement quand il pr�sente un avantage par rapport au C.
    Basiquement, je suppose qu'ils ne vont pas utiliser les stream (et je ne pourrait leur en vouloir, personnellement je ne les appr�cie pas du tout)

    Pendant que j'y suis, j'ai juste ador� le PDF que j'ai cit�, notamment un passage:
    The FSF doesn�t like it!
    ◮ The FSF is not writing the code.
    Je salue la justesse du raisonnement de l'auteur

    Ce PDF attaque aussi d'autres id�es re�ues, telles que:
    _ C++ trop lent
    _ C++ trop compliqu�
    _ C++ pas portable
    Et surtout, les exemples de code sont tr�s instructifs.

    Bon... n'emp�che, il pr�cise aussi que ce n'est pas la panac�e, juste une am�lioration.
    Pour le coup, je me demande ce qu'en pense ce cher Linus.

    Au sujet de la source elle-m�me, il semble qu'ils attendent un v�ritable gain en m�moire, et donc en dur�e de compilation.
    Gain d� au fait que le C++ aie des destructeurs, et que donc, d�s que l'on sors d'une port�e, on lib�re de la m�moire. La ou l'impl�mentation C utilisais un gargage collector, une impl�mentation C++ �conomise la m�moire gr�ce � la RAII.
    Quand je vois qu'en 2-3 threads je monte vite � 1Gio, qui est la limite de mon netbook, c'est plut�t une bonne nouvelle qu'ils esp�rent ce type d'am�lioration.
    Divers autres passages parlent aussi de diminution du nombre de cast dynamiques, et donc d'optimisation de la vitesse �galement.

    En tout cas, je pense que ce projet permettra de montrer clairement si oui ou non, C++ est une am�lioration par rapport au C, et dans quelle mesure l'efficacit� est am�lior�e.
    A noter tout de m�me, qu'ils ne semblent pas vouloir tout convertir, mais juste quelques modules.

    En tout cas, ils n'y parlent pas d'impl�menter les fonctionnalit�s restantes des standards.
    Ce qui para�t logique: je pense qu'ils vont commencer par migrer les parties stables, pour faciliter le travail.
    Migrer une partie stable, �a veut dire qu'il est possible qu'il existe des tests unitaires pour cette partie, donc que le code migr� sera bien test�, plut�t que de devoir � la fois lutter contre les bugs de migration et ceux d'impl�mentation.
    Donc, pour moi, a court et moyen terme, on ne peux s'attendre qu'a une am�lioration en terme de m�moire et de vitesse � la compilation (pour les raisons d�j� �voqu�es)

  7. #7
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 49
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations professionnelles :
    Secteur : Sant�

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Par d�faut
    Pour le coup, je me demande ce qu'en pense ce cher Linus.
    On connait d�j� sa position sur le C++ et ce n'est pas non plus lui qui �crit le code de gcc

    Pour les id�es re�ues, le pdf date de 2008. Si les gens ont encore ce genre d'id�es 4 ans apr�s, faudrait peut �tre qu'ils se remettent en question

    Dans http://gcc.gnu.org/gcc-4.8/changes.html :
    GCC now uses C++ as its implementation language. This means that to build GCC from sources, you will need a C++ compiler that understands C++ 2003.
    Donc pas de C++11

  8. #8
    Membre �clair�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    D�cembre 2008
    Messages
    836
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : D�cembre 2008
    Messages : 836
    Par d�faut
    Citation Envoy� par gbdivers Voir le message
    On connait d�j� sa position sur le C++ et ce n'est pas non plus lui qui �crit le code de gcc
    Ce n'�tait pas une phrase s�rieuse en m�me temps

    Citation Envoy� par gbdivers Voir le message
    Pour les id�es re�ues, le pdf date de 2008. Si les gens ont encore ce genre d'id�es 4 ans apr�s, faudrait peut �tre qu'ils se remettent en question
    En m�me temps, si j'avais confiance dans la capacit� des gens (y compris moi-m�me hein) � se remettre en question ou � changer d'id�es quand la raison l'impose, je pense que j'aurai pr�f�r� un m�tier avec plus de contact humain. Le fait que mon contact se limite � des rapports de bugs et des demandes de fonctionnalit�s me suffit amplement.

    Citation Envoy� par gbdivers Voir le message
    La source indique �galement que le compilateur version N doit pouvoir �tre compil�e par le compilateur version N-1, donc effectivement, C++11 ne sera pas utilis� de sit�t.
    Je suppose qu'il faudrait d�j� qu'il soit compl�tement impl�ment� et surtout d�bogu� pour �a... Un compilateur qui utilise une techno qui n'est pas n�cessairement stable risquerait d'introduire pas mal de bugs dans les binaires par effet de cascade.
    Je suis tout de m�me assez content de voir qu'ils n'y vont pas comme des brutes. En tout cas, je me demande combien de temps �a va mettre pour qu'ils sortent un truc en b�ta, et je me demande quel sera le r�sultat niveau am�liorations de perfs.

    D'ailleurs, vu que mingw est bas� sur GCC, peut-�tre qu'on aura aussi des am�liorations de ce c�t�-ci? Histoire de pouvoir concurrencer un peu VS, ce serait pas mal.

  9. #9
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 49
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations professionnelles :
    Secteur : Sant�

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Par d�faut
    Citation Envoy� par Freem Voir le message
    La source indique �galement que le compilateur version N doit pouvoir �tre compil�e par le compilateur version N-1, donc effectivement, C++11 ne sera pas utilis� de sit�t.
    Je suppose que c'est le num�ro de version mineur de gcc, j'esp�re qu'ils compilent pas gcc avec la version 3
    Dans ce cas, la version N-1 (gcc 4.7) supporte d�j� une tr�s grande partie du C++11, donc ils pourraient l'utiliser sans probl�me pour gcc 4.8

    Citation Envoy� par PINGOUIN_GEANT
    Tu posais une question sur les nouvelles fonctionnalit�s support�es par gcc, mais il me semble que la version de langage pour d�velopper gcc est quelque chose diff�rent de l'actuel support d'un langage. J'ai peut-�tre rat� quelque chose.
    Pas compris. On parle du langage pour �crire gcc et non du langage pris en charge par gcc

    Citation Envoy� par PINGOUIN_GEANT
    Passer de C a C++, qu'est ce que cela veut dire sur l'optimisation des 2 versions de gcc pour compiler du C et du C++ ? Est-ce que la variante pour compiler du C++ est maintenant plus mature que la variante pour le C ? A-t-on des indices pour le savoir (aussi en comparaison des variantes pour Java, FORTRAN 95, etc.) ?
    Il n'y a pas plusieurs variantes de gcc, il y a une version de gcc en cours de dev et la prise en charge des langages d�pend : 1. de l'�volution des langages (le C et le C++ ont eu des nouvelles normes r�centes) 2. de la disponibilit� des �quipes de dev
    Bref, pas trop compris la question

  10. #10
    Membre �prouv� Avatar de PINGOUIN_GEANT
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    149
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 149
    Par d�faut
    Citation Envoy� par gbdivers Voir le message
    GCC now uses C++ as its implementation language. This means that to build GCC from sources, you will need a C++ compiler that understands C++ 2003.
    Donc pas de C++11
    Tu posais une question sur les nouvelles fonctionnalit�s support�es par gcc, mais il me semble que la version de langage pour d�velopper gcc est quelque chose diff�rent de l'actuel support d'un langage. J'ai peut-�tre rat� quelque chose.
    Passer de C a C++, qu'est ce que cela veut dire sur l'optimisation des 2 versions de gcc pour compiler du C et du C++ ? Est-ce que la variante pour compiler du C++ est maintenant plus mature que la variante pour le C ? A-t-on des indices pour le savoir (aussi en comparaison des variantes pour Java, FORTRAN 95, etc.) ?

  11. #11
    Membre tr�s actif
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    688
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 688
    Par d�faut
    c'est pas trop t�t !!

Discussions similaires

  1. R�ponses: 9
    Dernier message: 29/03/2013, 15h58
  2. gcc et win32
    Par MatRem dans le forum Autres �diteurs
    R�ponses: 1
    Dernier message: 16/01/2003, 12h22
  3. getch() avec gcc
    Par Jorus dans le forum Autres �diteurs
    R�ponses: 5
    Dernier message: 16/12/2002, 14h47
  4. R�ponses: 1
    Dernier message: 13/11/2002, 20h34
  5. [Kylix] gcc et kylix
    Par alexsmadja dans le forum EDI
    R�ponses: 1
    Dernier message: 28/05/2002, 10h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo