Self-hosting

Il self-hosting è l'uso di un programma come parte della toolchain o del sistema operativo che produce nuove versioni dello stesso programma—per esempio, un compilatore che può compilare il suo stesso codice sorgente. Il software self-hosting è un luogo comune su personal computers e sistemi più…

Il self-hosting è l'uso di un programma come parte della toolchain o del sistema operativo che produce nuove versioni dello stesso programma—per esempio, un compilatore che può compilare il suo stesso codice sorgente. Il software self-hosting è un luogo comune su personal computers e sistemi più grandi. Altri programmi che sono tipicamente self-hosting includono kernel, assembly, interpreti a riga di comando e software di controllo versione.

Se un sistema è così nuovo che nessun programma è stato scritto per esso, allora il software è sviluppato su un altro sistema self-hosting e messo su un dispositivo di archiviazione che il nuovo sistema può leggere. Lo sviluppo continua in questo modo finché il nuovo sistema può con affidabilità ospitare il suo stesso sviluppo. Scrivere nuovi strumenti di sviluppo software senza usare un altro sistema di host è raro e in molti casi non pratico.

Storia

Il primo compilatore self-hosting (escludendo gli assembler) fu scritto per Lisp da Hart e Levin al MIT nel 1962. Essi scrissero il compilatore Lisp in Lisp, testandolo in un interprete Lisp. Una volta migliorato il compilatore al punto che potesse compilare il suo stesso codice sorgente, esso era self-hosting.

La tecnica è possibile solo quando esiste già un interprete per lo stesso linguaggio che deve essere compilato. Esso si ispira al concetto di eseguire un programma su se stesso come input, il quale è anch'esso usato in varie prove in informatica teoretica, come la prova che il problema della terminazione è indecidibile.

Esempi

Ken Thompson iniziò lo sviluppo su Unix nel 1968 scrivendo e compilando programmi sul GE-635 e portandoli al PDP-7 per testarli. Dopo che kernel Unix iniziale, un interprete a linea di comando, un editor, un assemblatore e alcune utility furono completate, il sistema operativo Unix era in self-hosting: i programmi potevano essere scritti e testati sullo stesso PDP-7.

Lo sviluppo del kernel Linux era inizialmente ospitato dal sistema Minix. Una volta che abbastanza pacchetti, come GCC, GNU Bash e altre utility sono state portate, gli sviluppatori possono lavorare su nuove versioni del kernel di Linux usando una versione precedente dello stesso (ad esempio compilare un kernel 3.21 su una macchina con kernel 3.18). Questa procedura può anche essere usata quando si costruisce una nuova distribuzione di Linux da zero.

Molti linguaggi di programmazione hanno avuto implementazioni self-hosting: compilatori che sono in quel linguaggio per quel linguaggio. Questi linguaggi includono Ada, BASIC, C, C++ C# , ClojureScript, CoffeeScript, Dylan, F#, FASM, Forth, Gambas, Go, Haskell, HolyC, Java, Lisp, Modula-2, OCaml, Oberon, Pascal, Python, Rust, Scala, Smalltalk, Vala, e Visual Basic.

In alcuni altri casi, l'implementazione iniziale non era self-hosted, ma piuttosto scritta in un altro linguaggio (o perfino in linguaggio macchina); in altri casi, l'implementazione iniziale era sviluppata usando bootstrapping.

Servizi correlati

Altre voci

P

PHP

PHP (acronimo ricorsivo di "PHP: Hypertext Preprocessor", preprocessore di ipertesti; originariamente acronimo di "Personal Home Page") è un linguaggio di scripting interpretato, originariamente concepito per la programmazione di pagine web dinamiche. L'interprete PHP è un software libero…

Leggi la voce →
G

Google Chrome

Google Chrome (detto anche semplicemente Chrome) è un browser web sviluppato da Google, basato sul motore di rendering Blink (a partire dalla versione 28, precedentemente sfruttava WebKit): basato sul browser Chromium, nel corso degli anni è cresciuto a tal punto da diventare il browser più…

Leggi la voce →
W

Web agency

Web agency è un termine nato per identificare aziende con una conoscenza approfondita di tutto ciò che riguarda il web: dal design, programmazione e promozione dei siti web alla progettazione e realizzazione di complesse applicazioni web.

Leggi la voce →
I

ICANN

L'ICANN (Internet Corporation for Assigned Names and Numbers) è un ente di gestione internazionale (dal 2 ottobre 2016), istituito il 18 settembre 1998 per proseguire i numerosi incarichi di gestione relativi alla rete Internet che in precedenza erano demandati ad altri organismi.

Leggi la voce →
M

Microsoft SharePoint

Microsoft SharePoint era una piattaforma software di Content Management System (CMS) sviluppata da Microsoft, ovvero un programma che girando lato server permette la creazione e distribuzione di particolari siti web principalmente ad uso aziendale (Intranet), ma che possono anche essere…

Leggi la voce →
PhpBBP

PhpBB

phpBB è uno tra i più popolari sistemi liberi per la gestione di forum scritti mediante il linguaggio di programmazione PHP: il nome è un'abbreviazione di PHP Bulletin Board.

Leggi la voce →