Pregunta

Tengo curiosidad acerca de qué herramientas se utilizan para construir la próxima versión de ellos mismos.

Por ejemplo, Delphi siempre ha afirmado que " Delphi está escrito en Delphi " ;.

Asumo que Visual Studio está escrito usando Visual Studio.

¿Cuáles son algunos otros ejemplos de herramientas que están escritas en sí mismas?

¿Fue útil?

Solución

Bjarne Stroustrup mencionó en El diseño y la evolución de C ++ que el El primer compilador de C ++ se escribió en C ++.

Acabo de notar que esta también es una pregunta en su Preguntas frecuentes :

  

El primer compilador de C ++ (Cfront) fue   escrito en C ++. Para construir eso, primero   usó C para escribir una '' C con   Clases '' a preprocesador de C. " C con   Clases " era un dialecto C que se convirtió   El antepasado inmediato de C ++. Ese   preprocesador traducido " C con   Clases " construcciones (como clases   y constructores) en C. Era un   preprocesador tradicional que no lo hizo   entender todo el lenguaje, izquierda   la mayor parte del tipo de comprobación de la C   compilador para hacer, y traducido   construcciones individuales sin completar   conocimiento. Entonces escribí el primero   versión de Cfront en " C con clases " ;.

Otros consejos

Curiosamente, el VB.NET & amp; Los propios compiladores de C # están escritos en C ++ no administrado (lo que lleva a la camiseta del equipo de C ++: "Mi compilador compiló el suyo"). El equipo de C # espera tener un compilador de C # totalmente administrado y alojado en C # para VS2010.

Esto está fuera de tema, pero estrictamente hablando, es un ejemplo de una herramienta que se construye sola.

El reprap , una máquina de creación de prototipos 3D de código abierto, que recientemente dio 'nacimiento' a '' su primera copia replicada de trabajo completa ''.

Me encanta este tipo de cosas.

Hablando genéricamente, los compiladores de C generalmente se escriben en C ... * los núcleos nix se compilan en * nix, etc.

Además, está el pypy proyecto que proporciona un intérprete de Python escrito en Python.

Cuando gcc (el compilador Gnu C http://gcc.gnu.org/ ) no estaba disponible ampliamente, tenía que compilarlo desde la fuente, compilando el compilador stage1, luego compile stage2 con stage1, hasta que tenga su compilador final. Asumo que debe ser lo mismo hoy.

Aquí hay otro ejemplo: el compilador C # de Mono es self hosting , es decir, está escrito en C # y solía compilarse.

Alimentación para perros se refiere a la práctica más general de una empresa que usa su propio producto internamente, especialmente durante su desarrollo.

A mucha gente le gusta ver cómo Lisp se puede implementar en Lisp .

Squeak es una implementación Smalltalk-80 escrita en sí misma.

  

incluso su máquina virtual está escrita completamente en Smalltalk, lo que facilita la depuración, el análisis y el cambio.

El compilador Java de Sun se ha escrito durante mucho tiempo en Java. Sin embargo, trabajo reciente también está escribiendo un compilador JIT en Java. Este es el componente JVM que convierte el código de bytes de Java en instrucciones de procesador nativo.

Usamos para desarrollar usando RealBasic. El IDE está escrito en sí mismo, o eso me han hecho creer.

ghc, el compilador de Haskell, está principalmente escrito en Haskell.

tcc es otro compilador de C de alojamiento propio para x86 y ARM. Su reclamo a la fama es, bueno, pequeño (más o menos 100k para preprocesador, compilador, ensamblador y enlazador).

Supongo que prácticamente cualquier herramienta que sea parte del proceso de desarrollo típico estaría involucrada en su propio desarrollo, en la medida de lo posible. Esto incluye:

  • ciertos lenguajes de programación, especialmente los compilados
  • IDEs
  • editores de texto
  • sistemas de control de versiones
  • rastreadores de errores
  • construir sistemas

Si estás en un equipo construyendo una de estas herramientas, y no la estás desarrollando para un nicho específico que no se aplica a tu equipo, no sé por qué no la usarías para construir sí mismo. Hacer que los desarrolladores sean usuarios del producto es una de las mejores maneras de encontrar posibles mejoras.

Para el AmigaOS había un intérprete básico de terceros (no recuerdo el nombre) para el que luego podría comprar un compilador. El compilador se entregó como fuente, por lo que tuvo que usar el intérprete para ejecutar el compilador para compilarse ...

Para citar a Kent Beck:

  

... puede parecer un poco como realizar una cirugía cerebral en usted mismo.

Visual Studio y Team Foundation Server se construyen solos. Se llama dogfooding , un término que si no se origina en Microsoft, ciertamente me gusta

Oracle Application Express es una herramienta de desarrollo de aplicaciones web eso está construido en sí mismo.

Eclipse IDE generalmente se construye y desarrolla utilizando Eclipse IDE.

Es bastante típico tener un compilador de idiomas escrito en su propio idioma. Esto se llama self-hosting o bootstrapping .

Maven2 se construye con Maven2. Ok, no está construido (es decir, escrito ) usándose a sí mismo, ya que es una herramienta para construir (es decir, compilar ) proyecto, pero está usando su propio código para compilar. .

Me sorprendió JSLint

En resumen, se ha descrito como Javascript " compilador " utilizando javascript.

Estoy construyendo un generador de código basado en IDE, y lo estoy usando para construirlo. De hecho, como hizo Stroustrup, primero estoy construyendo un modelo generador válido y usando un preprocesador para compilar el código final de C ++. Una vez que tenga una buena versión funcional del IDE, comenzaré a usarla para construir otras versiones de sí misma.

Es como dar una nueva dimensión al significado de " programación recursiva " ;!

AFAIK hace OpenJDK construirse primero con el Java instalado y luego consigo mismo.

Naturalmente, el equipo de Jetbrains utiliza su propio IDE IntelliJ IDEA para desarrollar este IDE.

Supongo que esto es cierto para la mayoría de los proveedores de IDE.

Hasta donde yo sé, cuando se construye EMACS desde la fuente, todo el código ELISP se inicia. Me pareció bastante notable.

No es exactamente lo que está pidiendo, pero todo el entorno de desarrollo para Revolution http://www.runrev.com se construye utilizando Revolution, y la fuente (a excepción de las partes pequeñas que hacen cumplir la licencia) está completamente expuesta en forma de fuente. Entonces, si no le gusta la forma en que se implementa el entorno de desarrollo, puede cambiarlo. Encuentra un error, arréglalo. También puede crear fácilmente herramientas de desarrollo adicionales e integrarlas.

Ada y Forth

Le di a la respuesta Smalltalk-80 un repunte. El mejor y más elegante ejemplo que se me ocurre. La pregunta también me recuerda un problema ligeramente relacionado que solía ser popular: escribir un programa que salga solo. No es el mismo nivel de bootstrapping, pero es un pequeño rompecabezas de programación divertido para tu diversión. ¿Quizás no es posible en todos los idiomas?

El antiguo compilador de Watcom C / C ++ se creó usando él mismo.

El Ur-Scheme de Kragen Sitaker es un buen ejemplo de un pequeño compilador no trivial escrito en sí mismo. Esa página enlaza con varias fuentes buenas más en ese sentido.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top