Domanda

Sono curioso di sapere quali strumenti vengono utilizzati per creare la versione successiva di se stessi.

Ad esempio, Delphi ha a lungo affermato che " Delphi è scritto in Delphi ".

Suppongo che Visual Studio sia scritto usando Visual Studio.

Quali sono alcuni altri esempi di strumenti scritti in se stessi?

È stato utile?

Soluzione

Bjarne Stroustrup menzionato in The Design and Evolution of C ++ che il il primo compilatore C ++ è stato scritto in C ++.

Ho appena notato che questa è anche una domanda nelle sue FAQ :

  

Il primo compilatore C ++ (Cfront) era   scritto in C ++. Per costruirlo, io per primo   usato C per scrivere un & C; con   Pre-elaboratore di classi " -to-C. "C con   Classi " era un dialetto C che divenne   l'antenato immediato del C ++. Quello   preprocessore tradotto " C con   Classi " costrutti (come le classi   e costruttori) in C. Era un   preprocessore tradizionale che non ha funzionato   capire tutta la lingua, a sinistra   la maggior parte del controllo del tipo per il C   compilatore da fare e tradotto   costrutti individuali senza completo   conoscenza. Ho quindi scritto il primo   versione di Cfront in " C con Classi " ;.

Altri suggerimenti

È interessante notare che VB.NET & amp; I compilatori C # stessi sono scritti in C ++ non gestito (che porta alla maglietta del team C ++: "Il mio compilatore ha compilato il tuo"). Il team di C # spera di avere un compilatore C # ospitato in C # completamente gestito per VS2010.

Questo è fuori tema, ma a rigor di termini, è un esempio di uno strumento che si costruisce da solo.

Il reprap - una macchina di prototipazione 3d open source, che recentemente ha dato vita a "la sua prima copia replicata funzionante completa".

Adoro questo tipo di cose.

In generale, i compilatori C sono generalmente scritti in kernel C ... * nix sono compilati su * nix, ecc.

Inoltre, c'è il progetto pypy che fornisce un interprete Python scritto in Python.

Quando gcc (il compilatore Gnu C http://gcc.gnu.org/ ) non lo era ampiamente disponibile, è stato necessario compilarlo dal sorgente, compilando il compilatore stage1, quindi compilare stage2 con stage1, fino ad avere il compilatore finale. Presumo che debba essere lo stesso oggi.

Ecco un altro esempio: il compilatore C # di Mono è self hosting - ovvero è scritto in C # e usato per compilare se stesso.

Cibo per cani si riferisce alla pratica più generale di un'azienda che utilizza il proprio prodotto internamente, specialmente durante il suo sviluppo.

A molte persone piace vedere come Lisp può essere implementato in Lisp .

Squeak è un'implementazione di Smalltalk-80 scritta in sé.

  

anche la sua macchina virtuale è interamente scritta in Smalltalk, per semplificare il debug, l'analisi e la modifica.

Il compilatore Java di Sun è stato a lungo scritto in Java. Tuttavia, lavori recenti sta scrivendo anche un compilatore JIT in Java. Questo è il componente JVM che converte il codice byte Java in istruzioni del processore nativo.

Usiamo per sviluppare usando RealBasic. L'IDE è scritto in sé, o almeno così sono stato portato a credere.

ghc, il compilatore di Haskell, è principalmente scritto in Haskell.

tcc è un altro compilatore C self-hosting per x86 e ARM. La sua pretesa di fama è, beh, minuscola (circa 100k per preprocessore, compilatore, assemblatore e linker).

Suppongo che praticamente tutti gli strumenti che fanno parte del tipico processo di sviluppo siano coinvolti nel proprio sviluppo, per quanto possibile. Questo include:

  • alcuni linguaggi di programmazione, specialmente quelli compilati
  • IDE
  • editor di testo
  • sistemi di controllo versione
  • bug tracker
  • costruisci sistemi

Se fai parte di un team che sviluppa uno di questi strumenti e non lo stai sviluppando per una nicchia specifica che non si applica al tuo team, non so perché non lo utilizzeresti per costruire si. Avere gli sviluppatori come utenti del prodotto è uno dei modi migliori per trovare possibili miglioramenti.

Per AmigaOS esisteva un interprete Basic di terze parti (non ricordare il nome) per il quale è possibile acquistare successivamente un compilatore. Il compilatore è stato consegnato come sorgente, quindi è stato necessario utilizzare l'interprete per eseguire il compilatore per compilare se stesso ...

Per citare Kent Beck:

  

... potrebbe sembrare un po 'come eseguire un intervento chirurgico al cervello su te stesso.

Visual Studio e Team Foundation Server si costruiscono da soli. Si chiama dogfooding , un termine che se non originario di Microsoft, certamente Mi piace

Oracle Application Express è uno strumento di sviluppo di applicazioni Web che è costruito in sé.

Eclipse IDE è generalmente costruito e sviluppato utilizzando Eclipse IDE.

È abbastanza tipico avere un compilatore di lingue scritto nella sua lingua. Questo si chiama self-hosting o bootstrapping .

Maven2 è realizzato con Maven2. Ok, non è costruito (cioè scritto ) usando se stesso, in quanto è uno strumento per costruire (cioè compila ), ma sta usando il proprio codice per compilare .. .

Sono rimasto sorpreso da JSLint

In breve, è stato descritto come Javascript "compilatore" usando javascript.

Sto costruendo un generatore di codice basato su IDE e lo sto usando per costruirlo da solo. In realtà, come ha fatto Stroustrup, sto prima costruendo un modello di generatore valido e usando un pre-processore per costruire il codice C ++ finale da compilare. Una volta che avrò una buona versione funzionante dell'IDE, inizierò ad usarlo per creare ulteriori versioni di se stesso.

È come dare una nuova dimensione al significato di "programmazione ricorsiva"!

AFAIK fa OpenJDK costruirsi prima con Java installato e poi con se stesso.

Naturalmente il team Jetbrains utilizza il proprio IDE IntelliJ IDEA per sviluppare questo IDE.

Presumo che ciò sia vero per la maggior parte dei venditori IDE.

Per quanto ne so, quando si crea EMACS dal sorgente, tutto il codice ELISP viene avviato. L'ho trovato abbastanza degno di nota.

Non proprio quello che stai chiedendo, ma l'intero ambiente di sviluppo per Revolution http://www.runrev.com è costruito usando la rivoluzione stessa e la fonte (ad eccezione di piccole parti che impongono la licenza) è completamente esposta in forma di fonte. Quindi, se non ti piace il modo in cui l'ambiente di sviluppo è implementato, puoi cambiarlo. Trova un bug, risolvilo. Puoi anche creare facilmente strumenti di sviluppo aggiuntivi e integrarli.

Ada e Forth

Ho dato una risposta alla Smalltalk-80. L'esempio migliore ed elegante che mi viene in mente. La domanda mi ricorda anche un problema leggermente correlato che prima era popolare: scrivere un programma che si autodiagnosi. Non lo stesso livello di bootstrap, ma un piccolo puzzle di programmazione divertente per il tuo divertimento. Forse non è possibile in tutte le lingue?

Il vecchio compilatore Watcom C / C ++ è stato creato usando se stesso.

Ur-Scheme di Kragen Sitaker è un ottimo esempio di piccolo compilatore non banale scritto in se stesso. Quella pagina si collega a molte altre buone fonti in quella vena.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top