Gesù, ora mi sento vecchio e non ho mai dovuto fare casino con le schede perforate o l'elaborazione in batch. Diavolo, ho dovuto usare un terminale cartaceo solo una o due volte nel corso della mia carriera universitaria.
Ecco come abbiamo fatto le cose nel tardo Cretaceo (circa 1986). Stavo lavorando su VAX / VMS tramite un terminale basato su caratteri VT220 ambra su nero che poteva essere visualizzato in 80x24 o 132x24.
Innanzitutto, hai avviato l'editor di testo:
$ EDIT/EDT HELLO.C
EDT era l'equivalente VMS di vi, che era in qualche modo in funzione tra DOS edlin e Notepad. Hai digitato il testo del tuo programma
#include <stdio.h>
int main(void)
{
printf("Hello, Stupid\n");
return 0;
}
salvato nel file e quindi uscito dall'editor.
Quindi hai eseguito il codice tramite il compilatore:
$ CC HELLO
Questo ha tradotto il codice sorgente in HELLO.C e ha generato il file oggetto HELLO.OBJ. Il file oggetto conteneva il codice macchina per il programma, ma non era ancora in una forma eseguibile. Per prima cosa, il codice binario effettivo per la printf
chiamata non è presente; c'è solo un segnaposto per questo. Dovevi ancora eseguire il file oggetto tramite un linker , che incorporava il codice binario dalla libreria standard (e qualsiasi altra libreria di cui hai bisogno) e formattava il file in modo che potesse essere riconosciuto come eseguibile:
$ LINK HELLO
Il risultato di questo passaggio è il file HELLO.EXE, che è la versione eseguibile del programma.
La procedura è praticamente la stessa su qualsiasi sistema moderno; è solo che le toolchain specifiche sono diverse. Ad esempio, la sequenza di comandi su un tipico sistema Linux sarebbe
$ vi hello.c
$ gcc -o hello hello.c
o
$ vi hello.c
$ gcc -c hello.c
$ ld -o hello hello.o -lc
Da quando sono cresciuto in questo ambiente, non ho mai capito come qualcuno potesse aver bisogno di un IDE solo per scrivere il proprio codice. Tuttavia, all'inizio di quest'anno ho iniziato a lavorare in Java, e mentre Eclipse ha molti, molti difetti, posso capire come qualcuno può fare affidamento su un IDE per svolgere il proprio lavoro. Dato che Java è un linguaggio così grande rispetto a C, e dal momento che sto ancora cercando di ridurre i punti più fini della sintassi, aiuta ad avere un ambiente di sviluppo intelligente che sappia in quali pacchetti sono presenti determinati tipi e mi aiuta a organizzare le importazioni.