I linguaggi di programmazione

Avviso
Se non avete mai letto niente sull'informatica vi serviranno delle nozioni di base o in caso stiate cercando determinate pagine provate uno dei link di sotto Introduzione alla programmazione su computer Lista linguaggi
Multiformi Linguaggi
Nel corso degli anni si sono susseguiti numerosi tipi di linguaggio, ognuno con le proprie caratteristiche, scopi e finalità. Come ogni linguaggio umano, anche quelli per computer sono caratterizzati da una serie di regole formali, una grammatica che ne definisce la struttura. Possiede costrutti che permettono di rappresentare spesso concetti molto complicati, per nascondere alla persona il grosso di quello che accade.
Il computer agli albori
Inizialmente i primi modelli di computer, o meglio calcolatrici, furono realizzati sin dall'ottocento, con molte parti meccaniche in movimento. Il primo caso pertinente di calcolatore fu lo storico Z1, seguito da altri modelli fino al Z4. Tuttavia questi erano composti da relè e non transistor. La svolta si ebbe il febbraio del 1946. In quel giorno, venne alla luce l'ENIAC il primo vero computer elettronico anche se effettivamente fu l'ABC ad essere il primo completamente elettronico. In seguito vennero presentati sempre computer più potenti (i primi avevano un clock di pochi Hz). Se inizialmente si potevano programmare con schede forate, le esigenze si accrebbero e venne la neccessità di semplificare un po' la vita dei programmatori. Vennero sviluppati nelle università i primi linguaggi di programmazione ad alto livello. Il sistema binario non è un buon metodo per gli umani di comprendere i programmi, il BASIC, caratterizzato da codici alfanumerici si.
L'origine e l'evoluzione dei linguaggi
Le lingue nel corso del tempo hanno la tendenza a semplificarsi. Così vale anche per l'ambito della programmazione. Confrontati a quelli in voga una ventina di anni fa, si vede che a livello concettuale, ci sono state delle modifiche in questi, in funzione di una migliore efficienza. Adesso come adesso un buon linguaggio (a parte quelli particolari di alcuni settori) deve essere innanzitutto facile da imparare in poco tempo. Deve essere semplice nelle sue caratteristiche e soprattutto deve offrire un codice riuttilizzabile. Il riciclo del codice è la chiave moderna secondo la quale viene maggiormente recensito un linguaggio.
20 anni fa
Torniamo indietro nel tempo di 20 anni. A quel tempo i linguaggi erano molto meno potenti rispetto a quelli attuali. I pochi linguaggi buoni di alto livello erano il C e il PASCAL. Il resto era un indistinto ammasso nero. Altrimenti i linguaggi utilizzati che ormai sono in disuso erano la programmazione diretta del computer in linguaggio macchina o più comunemente in Assembly. I processori erano a 16 bit, si potevano usare le funzioni del BIOS e nè Windows, nè Linux dominavano la scena. I normali linguaggi di alto livello erano decisamente rudimentali. Erano costituiti da tantissime parole chiave, un inesistente livello di astrazione e di riutilizzo del codice.
Ritorniamo al presente...
Come detto prima un linguaggio deve essere riutilizzabile. Essere riutilizzabile vuol dire scrivere meno codice e non doverlo adattare da piattaforma a piattaforma. Pertanto un linguaggio deve essere anche portabile. Ecco perchè negli ultimi tempi hanno preso voga i linguaggi di scripting. Sono dinamici, esenti da errori e portabili, basta avere l'interprete sul proprio computer. Ultimamente si è sviluppata l'idea di WebOS ovvero i sistemi operativi online attraveso browser... ecco dove siamo finiti in basso.
Uno sguardo al futuro
Cosa ci riserverà il futuro? Secondo la piega che sta prendendo, la programmazione di basso livello verrà completamente abbandonata nei prossimi anni. Le applicazioni si sposteranno sempre più sul lato internet e browser. Per i vecchi C/C++ si aprirà una sonnecchiosa vecchiaia, mentre i discendenti di Ruby e Php governeranno tutti i settori. E ci si lamenterà sempre di più dei processori troppo lenti a causa di strati e strati di sovrapposizione. Chissà se si ritornerà all'Assembly...
I linguaggi di oggi
Al giorno d'oggi ci sono tantissimi linguaggi, alcuni popolarissimi, altri sconosciuti fuori dalla famiglia del suo creatore, altri in declino. Si dividono secondo molti parametri, che verranno presentati uno alla volta in ogni paragrafetto. Sono compilati o interpretati, tipizzati o non tipizzati, case-sensitive o non case-sensitive, strutturati e/o orientati agli oggetti e/o ad eventi, grafici o testuali.
Compilati vS Interpretati
Questa è una distinzione che sfocia nel dibattito della portabilità. E' meglio un linguaggio lento ma portabile su più piattaforme, o uno velocissimo ed ottimizzato per un processore ma non portabile? Tutto dipende dall'uso che se ne deve fare. I linguaggi compilati vengono scritti in un file detto sorgente. Questo viene poi passato ad un programma che ne verifica l'integrità. In seguito se non vi sono errori viene creato un codice oggetto, e poi viene passato ad un programma detto linker che lo trasforma in un eseguibile. Gli interpretati, come i compilati vengono scritti in un file sorgente, passato ad un parser che ne verifica la struttura corretta. Se ciò ha esito, viene mostrato un risultato ottenuto dall'elaborazione. Il fatto è che questo processo avviene ogni volta che il file viene richiesto.
Solitamente i linguaggi compilati sono anche tipizzati fortemente per essere più efficienti, strutturati perlomeno e gli ultimi anche orientati aglo oggetti. Sono case sensitive e testuali.
Cionondimeno, quelli interpretati sono non tipizzati e pertanto più dinamici, orientati agli oggetti in molti casi, e solitamente case-sensitive (specie se derivano come sintassi dal C).
Tipizzati vS Non tipizzati
Un linguaggio tipizzato definisce vari tipi che i dati possono assumere e non li gestiscono autonomamente. Ad esempio in un tipizzato bisogna dire se la variabile che ci apprestiamo a definire sia un carattere o un numero. Questo permette una migliore ottimizzazione del codice che risulta più veloce ed efficiente (di solito). Viene usato nei linguaggi compilati (ma non in tutti sia ben chiaro). i linguaggi di scripting (interpretati) preferiscono un approccio più dinamico che non richieda il tipo di dato.
Strutturati X Oggetti X Eventi
Come potete vedere non ho messo vS perchè non è una contrapposizione stilistica ma un'evoluzione dei linguaggi (anche se c'è qualcuno che aprirebbe una lunga discussione etico-programmativa). I linguaggi strutturati sono quelli che usano le funzioni per riutilizzare il codice. Le funzioni sono blocchi di codice ai quali possono essere passati dei parametri che eseguono operazioni simili a livello di algoritmo. I linguaggi più evoluti oltre ad implementare una strutturazione, possiedono anche un complesso sistema di oggetti, che data la vastità dell'argomento, non mi accingo a descrivere argomenti che richiederebbero più spazio. Le classi sono un'astrazione di un insieme di oggetti simili che possono essere messe in relazione (le porte sono simili fra loro, hanno caratteristiche identiche e possono essere rappresentate da una classe). La programmazione ad eventi esegue operazioni al verificarsi di un evento ovvero un click su un bottone, il caricamento di una finestra e via dicendo.
Grafici vS Testuali
Le distinzione è molto intuitiva, i grafici possono essere utilizzati in vari modi, con il drag&drop dei controlli o con la scrittura di blocchi come i programmi per i PLC ad esempio. I testuali sono quasi tutto il resto di quelli usati, si scrive in un semplice editor come il notepad o Kate e si passa al compilatore/interprete
IDE & GUI
Gli IDE sono degli ambienti di sviluppo che semplificano la compilazione o la scrittura del codice evidenziando errori, la sintassi, i blocchi di codice e così via. La compilazione è semplificata solitamente premendo F5. Permette la gestione dei progetti via dicendo.
Le GUI sono degli ambienti che permettono di disegnare la grafica in modo diretto e appunto grafico, tramite il trasporto di controlli sullo spazio di lavoro.
Linguaggi particolari e linguaggi esoterici
Ci sono linguaggi davvero particolari che sono stati realizzati allo scopo di rendersi difficili da programmare. E' l'esempio di Malborge o Camefrom, tutti linguaggi di difficile comprensione e utilizzo usati per diciamo divertimento. Addirittura i programmi in Malborge sono così difficili che malapena i computer riescono a scriverli...
Finito il 22.01.08 alle 18:50