For faster navigation, this Iframe is preloading the Wikiwand page for Self-hosting (compiladores).

Self-hosting (compiladores)

Self-hosting o auto-hospedaje es el uso de un programa de computadora como parte de la cadena de herramientas o sistema operativo que produce nuevas versiones de ese mismo programa, por ejemplo, un compilador que puede compilar su propio código fuente. El software self-hosted es común en computadoras personales y sistemas más grandes. Otros programas que suelen ser self-hosted incluyen kernels, ensambladores, intérpretes de línea de comandos y software de control de versiones.

Si un sistema es tan nuevo que no se ha escrito ningún software para él, entonces el software se desarrolla en otro sistema, a menudo con un compilador cruzado, y se coloca en un dispositivo de almacenamiento que el nuevo sistema puede leer. El desarrollo continúa de esta manera hasta que el nuevo sistema pueda albergar de manera confiable su propio desarrollo. Escribir nuevas herramientas de desarrollo de software sin usar otro sistema host es raro.

En el contexto de la administración del sitio web y la publicación en línea, el término self-hosting se utiliza para describir la práctica de ejecutar y mantener un sitio web utilizando un servidor web privado.[1]

Historia

[editar]

El primer compilador self-hosted (excluyendo ensambladores) fue escrito para Lisp por Hart y Levin en el MIT en 1962. Escribieron un compilador de Lisp ese mismo lenguaje, probándolo dentro de un intérprete existente de Lisp. Una vez que habían mejorado el compilador hasta el punto en que podía compilar su propio código fuente, se considera self-hosted.

El compilador, tal como existe en la cinta de compilación estándar, es un programa de lenguaje de máquina que se obtuvo al tener la definición de S-expresión del compilador en sí mismo a través del intérprete.
AI Memo 39[2]

Esta técnica solo es posible cuando ya existe un intérprete para el mismo lenguaje que se va a compilar. Toma prestado directamente de la noción de ejecutar un programa en sí mismo como entrada, que también se usa en varias pruebas en informática teórica, como la prueba de que el problema de detención es indecidible.

Ejemplos

[editar]

Ken Thompson comenzó el desarrollo en Unix en 1968 escribiendo y compilando programas en el GE-635 y llevándolos al PDP-7 para su prueba. Después de que se completó el núcleo inicial de Unix, un intérprete de comandos, un editor, un ensamblador y algunas utilidades, el sistema operativo Unix se auto-hospedaba: los programas se podían escribir y probar en el PDP-7.[3]

El desarrollo del kernel de Linux se alojó inicialmente en un sistema MINIX. Cuando se transfieren paquetes suficientes, como GCC, GNU bash y otras utilidades, los desarrolladores pueden trabajar en nuevas versiones del núcleo Linux basadas en versiones anteriores de sí mismo (como construir el núcleo 3.21 en una máquina que ejecuta el núcleo 3.18). Este procedimiento también se puede utilizar al crear una nueva distribución de Linux desde cero.

Muchos lenguajes de programación tienen implementaciones auto-hospedadas: compiladores que están en y para el mismo lenguaje. Estos lenguajes incluyen Ada, BASIC, C, C ++,[4]C #,[5]CoffeeScript, Crystal, Dylan, F #, FASM, Forth, Gambas, Go, Haskell, HolyC, Java, Lisp, Modula-2, OCaml, Oberon, Pascal, Python, Rust, Scala, Smalltalk, TypeScript, Vala y Visual Basic.[5]

En algunos de estos casos, la implementación inicial no fue auto-hospedada, sino más bien escrita en otro lenguaje (o incluso en lenguaje de máquina); en otros casos, la implementación inicial se desarrolló utilizando bootstrapping.

Véase también

[editar]

Referencias

[editar]
  1. «Self Hosting |» (en inglés estadounidense). Consultado el 7 de mayo de 2017. 
  2. Tim Hart and Mike Levin. «AI Memo 39-The new compiler». Consultado el 23 de mayo de 2008. Uso incorrecto de la plantilla enlace roto (enlace roto disponible en Internet Archive; véase el historial, la primera versión y la última).
  3. Dennis M. Ritchie. "The Development of the C Language" Archivado el 28 de marzo de 2015 en Wayback Machine.. 1993.
  4. gcc 4.8, LLVM/clang
  5. a b Mono gmcs and Microsoft Roslyn
{{bottomLinkPreText}} {{bottomLinkText}}
Self-hosting (compiladores)
Listen to this article

This browser is not supported by Wikiwand :(
Wikiwand requires a browser with modern capabilities in order to provide you with the best reading experience.
Please download and use one of the following browsers:

This article was just edited, click to reload
This article has been deleted on Wikipedia (Why?)

Back to homepage

Please click Add in the dialog above
Please click Allow in the top-left corner,
then click Install Now in the dialog
Please click Open in the download dialog,
then click Install
Please click the "Downloads" icon in the Safari toolbar, open the first download in the list,
then click Install
{{::$root.activation.text}}

Install Wikiwand

Install on Chrome Install on Firefox
Don't forget to rate us

Tell your friends about Wikiwand!

Gmail Facebook Twitter Link

Enjoying Wikiwand?

Tell your friends and spread the love:
Share on Gmail Share on Facebook Share on Twitter Share on Buffer

Our magic isn't perfect

You can help our automatic cover photo selection by reporting an unsuitable photo.

This photo is visually disturbing This photo is not a good choice

Thank you for helping!


Your input will affect cover photo selection, along with input from other users.

X

Get ready for Wikiwand 2.0 🎉! the new version arrives on September 1st! Don't want to wait?