Vorrei sapere con quale software vengono creati i sistemi operativi (Windows,Unix,DOS…) e i programmi per creare software (Visual Basic, C++ …). Possibile ci sia un “programma per fare programmi”?

I linguaggi di programmazione ed i relativi programmi che consentono di compilare,
ovvero trasformare in moduli eseguibili per le varie piattaforme, sono
la “base” di componenti (un po’ come i mattoncini delle costruzioni)
per costruire altri programmi: “programmi per fare programmi”, appunto.

Il

C

e la sua versione ad oggetti

C++sono i linguaggi di programmazione storicamente più
utilizzati non solo per la creazione di sistemi operativi, ma anche per
la scrittura di gran parte delle applicazioni commerciali.

Il
linguaggio C nasce nel 1970 ad opera di Dennis Ritchie nel cuore dei
Bell Labs (la compagnia telefonica americana) e sostituisce il
farraginoso predecessore, il linguaggio B, basato su un compilatore di
pessima efficienza.

Il successo del C è immediato, tanto che in pochi anni, nel 1973, consente di scrivere per intero un sistema operativo, lo

UNIX

, a tutt’oggi imbattuto per efficienza, qualità, stabilità e portabilità. Il linguaggio gode di proprietà importantissime:

  • E’ un
    linguaggio di medio livello, ovvero consente contemporaneamente di
    aggregare le funzioni in macro-aree e di programmare bit-per-bit.
  • E’ portabile in più piattaforme

  • Fa uso estensivo di strutture di puntatori e gestisce direttamente l’indirizzamento di aree di memoria.

  • Il codice compilato è efficiente quasi quanto il linguaggio
    macchina (il set di istruzioni nativo di ogni microprocessore), ma non
    dipende dalla piattaforma o dall’hardware.
  • Consente di produrre e di richiamare agilmente

    librerie

    di funzioni. 

  • Consente di inglobare chiamate a procedure in linguaggio macchina e di gestirne il ritorno in modo consistente

Il primo libro sul C

Kerningham & Ritchie – Linguaggio C

, diviene in pochissimo tempo un best-seller e costituirà la base per la versione standard

ANSI C

, che verrà definita nel 1989 con pochissime variazioni rispetto al C di Kernigham e Ritchie.

Nel periodo tra il 1983 ed il 1985, Bjarne Sroustrup, sempre nei Bell Labs, idea e realizza il C++, la versione

ad oggetti del C, che risponde ai nuovi concetti di linguaggi
formali, in corso di definizione proprio in quegli anni. Il C++ è una
vera e propria estensione del C, tanto che i compilatori C++ compilano
programmi scritti in C K&R e ANSI.

Nelle facoltà di informatica si studia da anni una versione semplificata del sistema operativo UNIX: il MINIX scritto

(da zero) interamente in C e linguaggio macchina nel 1987 dal Prof. Andrew Steven Tanenbaun a scopo didattico.

Anche
questa idea in breve tempo gode di un successo clamoroso e  si
prospetta l’idea di scrivere un vero e proprio sistema operativo in
grado di girare su varie piattaforme, proprio grazie alle
caratteristiche di portabilità del linguaggio C.

In poco
tempo, il MINIX viene utilizzato in tutte le università grazie al fatto
di essere scritto interamente in codice aperto e condiviso con tutti.
E’ proprio uno dei tanti studenti, Linus Torvalds dell’università di
Helsinki, che nell’Agosto del 1991 inizia a pensare alla scrittura di
quello che diventerà l’unico vero concorrente allo strapotere di
Microsoft e del suo validissimo sistema operativo Windows (anche questo
scritto per lo più in C): il Linux, scritto in C e C++.

Un altro folgorante successo:

milioni di sviluppatori si uniscono all’idea, nascono consorzi,
gruppi, reti e catene di distributori. Il 1999 consacrerà il Linux come
soggetto di business allettante e redditvo: colossi come IBM, DELL,
Oracle, Motorola si lanciano nell’affare. All’inizio del terzo
millennio, SUN produrrà una suite di Office Automation, StarOffice

, per disegnare, elaborare testi, scambiare messaggi e lavorare analoga al più blasonato e diffuso

Office di Microsoft e le maggiori aziende di consulenza si
lanciano nell’offrire servizi consulenziali e di implementazione basati
su Linux.

Tutto questo, grazie all’incredibile potenza e flessibilità dei “programmi che scrivono programmi”, come il C.