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

V

Vivaldi (browser)

Vivaldi è un browser web freeware e multipiattaforma prodotto da Vivaldi Technologies, una società fondata dall'ex AD di Otello Corporation Jon Stephenson von Tetzchner e Tatsuki Tomita, disponibile per i sistemi operativi Windows 64 e 32 bit, Linux 64 e 32 bit, MacOS.

Leggi la voce →
T

Tailwind CSS

Tailwind CSS è un framework CSS open source che si distingue da altri framework come Bootstrap: anziché offrire una serie di classi predefinite per elementi specifici come pulsanti o tabelle, Tailwind mette a disposizione un ampio elenco di classi CSS "di utilità". Queste classi possono essere…

Leggi la voce →
A

Accessiway

Accessiway è un'azienda italiana di accessibilità digitale con sede a Torino, fondata nel 2021. Sviluppa software e fornisce servizi di consulenza in materia di conformità alle normative sull'accessibilità dei contenuti digitali. Nel dicembre 2024 il gruppo team.blue ha acquisito una quota di…

Leggi la voce →
S

Shodan (sito web)

Shodan è un motore di ricerca dedicato ai dispositivi collegati a internet. È chiamato anche il motore di ricerca del mondo dell'Internet delle cose perché permette di ottenere informazioni sui dispositivi connessi in rete (webcam, router, server, etc.) utilizzando diversi filtri.

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 →
D

Domain Name System

Domain Name System (DNS, lett. "sistema dei nomi di dominio"), in informatica e telecomunicazioni, indica un sistema per assegnare nomi ai nodi della rete (in inglese host).

Leggi la voce →