Question

Je suis curieux de savoir quels outils sont utilisés pour construire la prochaine version d'eux-mêmes.

Par exemple, Delphi a longtemps affirmé que " Delphi est écrit en Delphi . ".

Je suppose que Visual Studio est écrit à l'aide de Visual Studio.

Quels sont quelques autres exemples d’outils écrits en eux-mêmes?

Était-ce utile?

La solution

Bjarne Stroustrup est mentionné dans la la conception et l'évolution du C ++ . Le premier compilateur C ++ a été écrit en C ++.

Je viens de remarquer que cette question figure également dans sa FAQ :

  

Le premier compilateur C ++ (Cfront) était   écrit en C ++. Pour construire ça, j'ai d'abord   utilisé C pour écrire un "C" avec   Classes "-to-C préprocesseur. "C avec   Classes " était un dialecte C qui est devenu   l'ancêtre immédiat de C ++. Cette   préprocesseur traduit "C avec"   Classes " constructions (telles que classes   et constructeurs) en C. C’était un   préprocesseur traditionnel qui n'a pas   comprendre toute la langue, à gauche   la plupart du type vérifiant pour le C   compilateur à faire, et traduit   constructions individuelles sans complète   connaissance. J'ai ensuite écrit le premier   version de Cfront dans "C with Classes".

Autres conseils

Fait intéressant, le fichier VB.NET & amp; Les compilateurs C # eux-mêmes sont écrits en C ++ non géré (menant au t-shirt de l'équipe C ++: "Mon compilateur compilé par vous"). L’équipe C # espère disposer d’un compilateur C # entièrement géré et hébergé par C # pour VS2010.

Ceci est hors sujet, mais à proprement parler, il s'agit d'un exemple d'outil qui se construit lui-même.

La reprap - une machine de prototypage 3D à source ouverte, qui a donné "naissance" à "son premier exemplaire complet et répliqué".

J'aime ce genre de choses.

Généralement parlant, les compilateurs C sont généralement écrits en C ... * les noyaux nix sont compilés sur * nix, etc.

Il existe également le projet pypy qui fournit un interpréteur Python. écrit en Python.

Lorsque gcc (le compilateur Gnu C http://gcc.gnu.org/ ) n'était pas largement disponible, vous devez le compiler à partir des sources, compiler le compilateur stage1, puis compiler stage2 avec stage1, jusqu’à ce que vous ayez votre compilateur final. Je suppose que ce doit être la même chose aujourd'hui.

Voici un autre exemple: le compilateur C # de Mono est hébergement autonome - autrement dit, il est écrit en C # et utilisé pour se compiler.

L'alimentation pour chiens fait référence à la pratique plus générale d'une entreprise qui utilise son propre produit en interne, en particulier lors de son développement.

Beaucoup de gens aiment regarder comment Lisp peut être implémenté dans Lisp .

Squeak est une implémentation de Smalltalk-80 écrite en elle-même.

  

même sa machine virtuelle est entièrement écrite en Smalltalk, ce qui facilite le débogage, l'analyse et la modification.

Le compilateur Java de Sun est écrit depuis longtemps en Java. Toutefois, travail récent écrit également un compilateur JIT en Java. C'est le composant JVM qui convertit le code en octets Java en instructions de processeur natif.

Nous avions l'habitude de développer à l'aide de RealBasic. L’IDE est écrit en soi, c’est ce qui m’a amené à le croire.

ghc, le compilateur Haskell, est principalement écrit en Haskell.

tcc est un autre compilateur C autonome pour x86 et ARM. Sa renommée est bien minuscule (environ 100 000 pour le préprocesseur, le compilateur, l’assembleur et le lieur).

Je suppose que pratiquement tous les outils faisant partie du processus de développement typique participent à son propre développement, dans la mesure du possible. Cela comprend:

  • certains langages de programmation, en particulier ceux compilés
  • IDE
  • éditeurs de texte
  • systèmes de contrôle de version
  • suiveurs de bogues
  • construire des systèmes

Si vous faites partie d'une équipe qui crée l'un de ces outils et que vous ne le développez pas pour un créneau spécifique qui ne s'applique pas à votre équipe, je ne sais pas pourquoi vous ne l'utiliseriez pas pour créer lui-même. Faire en sorte que les développeurs soient des utilisateurs du produit est l’un des meilleurs moyens de trouver des améliorations possibles.

Pour AmigaOS, il existait un interpréteur tiers de base (vous ne vous souviendrez pas du nom) pour lequel vous pourriez ultérieurement acheter un compilateur. Le compilateur a été livré en tant que source, vous avez donc dû utiliser l'interpréteur pour l'exécuter pour se compiler lui-même ...

Pour citer Kent Beck:

  

... cela peut sembler un peu comme une opération du cerveau sur vous-même.

Visual Studio et Team Foundation Server se construisent eux-mêmes. Il s’appelle dogfooding , terme qui, s'il n'est pas originaire de Microsoft, aime

Oracle Application Express est un outil de développement d'applications Web. qui est construit en soi.

Eclipse IDE est généralement construit et développé à l'aide d'Eclipse IDE.

Il est assez typique d’avoir un compilateur de langages écrit dans son propre langage. Ceci s'appelle auto-hébergement ou amorçage .

Maven2 est créé à l'aide de Maven2. Ok, il n’est pas construit (c’est-à-dire écrit ) en utilisant lui-même, car c’est un outil de construction (c.-à-d. compile ), mais il utilise son propre code pour compiler .. .

J'ai été surpris par JSLint

.

En bref, il a été décrit comme Javascript " compilateur " en utilisant javascript.

Je construis un générateur de code basé sur l'IDE et je l'utilise pour se construire lui-même. En réalité, comme Stroustrup, je construis d'abord un modèle de générateur valide et utilise un pré-processeur pour générer le code C ++ final à compiler. Une fois que je disposerai d’une bonne version de l’EDI, je commencerai à l’utiliser pour en créer de nouvelles versions.

C'est comme donner une nouvelle dimension à la signification de la "programmation récursive"!

autant que je sache, OpenJDK se construit d'abord avec le java installé, puis avec lui-même.

Naturellement, l'équipe Jetbrains utilise son propre IDE IntelliJ IDEA pour développer cet IDE.

Je suppose que cela est vrai pour la plupart des fournisseurs IDE.

Autant que je sache, lors de la création d’EMACS à partir des sources, tout le code ELISP est démarré. J'ai trouvé cela assez remarquable.

Ce n’est pas ce que vous demandez, mais l’environnement de développement complet de Revolution http://www.runrev.com est construit à l'aide de Revolution lui-même et le source (à l'exception des petites pièces appliquant la licence) est complètement exposé sous la forme source. Donc, si vous n'aimez pas la façon dont l'environnement dev est implémenté, vous pouvez le changer. Trouvez un bug, corrigez-le. Vous pouvez également créer facilement des outils de développement supplémentaires et les intégrer.

Ada et Forth

J'ai donné une petite hausse à la réponse Smalltalk-80. Le meilleur exemple, le plus élégant auquel je puisse penser. La question me rappelle également un problème légèrement lié qui était populaire auparavant: écrire un programme qui se génère lui-même. Pas le même niveau de démarrage, mais un petit casse-tête de programmation amusant pour votre divertissement. Peut-être pas possible dans toutes les langues?

L'ancien compilateur Watcom C / C ++ a été construit à l'aide de lui-même.

Le Ur-Scheme de Kragen Sitaker est un bel exemple de petit compilateur non trivial écrit en lui-même. Cette page contient des liens vers plusieurs autres bonnes sources dans la même veine.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top