Sui linguaggi di programmazione

Devo dire un articolo abbastanza ben fatto di wired che nonostante qualche cavolata fa ben capire due cose:

  1. Cos’è e a cosa serve un linguaggio di programmazione
  2. Che non esiste il linguaggio assoluto e che parlare del linguaggio più figo del momento come di esso è un errore

E soprattutto che l’informatico, il programmatore deve saper “programmare” e “programmare” non significa solo conoscere a menadito la sintassi del linguaggio superfigo del momento. In conclusione è descritto anche il modo più efficace per insegnare la programmazione.

Sorgente: Cobol e gli altri dinosauri dell’informatica che ancora si aggirano nei nostri computer | Wired Italia

I linguaggi di programmazione sono lo strumento con il quale i programmatori traducono gli algoritmi in una serie di istruzioni che il computer può eseguire. Ne esistono tantissimi: l’History of Programming Languages (Hopl) ne ha documentati quasi novemila, di cui una cinquantina i più importanti. Ma, come per le lingue umane, sono teoricamente infiniti. Il modello mentale “sbagliato” che però spesso ci portiamo dietro è che i linguaggi di programmazione migliorino con il passare del tempo e delle generazioni. In realtà, le cose non stanno assolutamente così.

“Ci sono due aspetti da capire – dice Matteo Pradella, che insegna linguaggi di programmazione al Politecnico di Milano -. Il primo è capire a che cosa serve un determinato linguaggio. Perché linguaggi diversi fanno cose diverse, anche se ci sono stati vari tentativi nel corso del tempo per creare un linguaggio “definitivo” buono per tutti gli usi: dallo storico PL/I di Ibm [pdf, ndr] all’ambizioso Ada creato dalla Darpa. E tutti però hanno fallito”. (…)

“A cosa serve” un linguaggio vuol dire chiedersi che potenza espressiva ha, cioè la sua comodità e predisposizione a fare meglio una determinata cosa rispetto a un’altra. Tuttavia, i linguaggi di programmazione sono “Turing-completi” (vedi più avanti) e quindi capaci di implementare qualsiasi algoritmo. Solo ad alcuni determinati algoritmi vengono più facili che altri.

Il secondo aspetto è relativo al livello di astrazione a cui il linguaggio si pone, osserva Pradella: “C’è uno spettro di linguaggi, quelli più vicini al modo con il quale lavora la macchina e quelli più vicini a come ci esprimiamo noi: si dice cioè di basso o alto livello. Quelli di basso livello sono più efficienti, perché puoi fare più cose ma vanno conosciuti bene, sono molto verbosi e difficili da programmare perché il livello di astrazione non è molto alto. Invece, man mano che ci avviciniamo a linguaggi più comprensibili, diventa più facile scrivere il codice ma più difficile controllarlo: la distanza dalla macchina è molta e il controllo di conseguenza diventa molto poco”. (…)

“Ci si dimentica spesso – mi dice Pradella – che i linguaggi di programmazione hanno una parte sociale importante. Creano anche degli appassionati che si innamorano di una determinata scelta e poi cercano di trovare a posteriori motivi tecnici per cui quel particolare linguaggio “è meglio” di un altro”.

Insomma, anche gli informatici e gli studiosi delle università si lasciano prendere dai differenti approccio, dalla moda, dal marketing. “È stato il caso di quando Sun Microsystems, oggi assorbita dalla Oracle di Larry Ellison, ha creato Java – dice Pradella – investendo moltissimo nel marketing per “vendere” il suo linguaggio”. Risultato? Tifosi e partigiani di un linguaggio rispetto all’altro. Come per esempio il linguaggio C, creato nel 1972-1973 da Dennis Ritchie, uno dei padri di Unix, per programmare le utility necessarie al funzionamento del sistema operativo che è l’antenato di Linux, è alla base di macOS e fa girare buona parte di internet. Chiedere se è meglio il C o C++ è come parlare di guelfi e ghibellini nella Firenze di Dante Alighieri.

“Invece, secondo me – dice Pradella – un informatico dovrebbe essere uno che non è legato a dei linguaggi in particolare, ma dovrebbe essere abbastanza flessibile da cambiarli senza problemi. Anziché focalizzare sullo studio di uno molto popolare, come Java, al mio corso copro linguaggi accademici o relativamente poco usati, però ottimi rappresentanti del proprio paradigma di programmazione. Il mio obiettivo, più che far imparare questo o quel linguaggio, è far capire i concetti che ciascuno porta avanti”.

Un pensiero su “Sui linguaggi di programmazione

  1. Questo articolo (il tuo, con incluso quello di Wired) mi garba assai.
    E’ ormai parecchio che non mi aggiorno, anche perchè mi sono abbastanza impigrito, non ho più l’elasticità mentale di una volta e soprattutto la curiosità che avevo per questo mondo (che comunque rimane il mondo che mi dà di che campare) è stata dirottata su altri fronti.
    Il mio primo approccio è stato con il BASIC (perchè all’ epoca, con i sistemi che c’erano, giusto quello potevi usare), poi quando ho deciso di fare “sul serio” mi sono rimbecillito appresso all’ Assembler. Al termine ho chiuso coi “fuochi artificiali” del C (il Kernighan & Richie, più guida di riferimento ce li ho ancora in libreria), che a mio avviso ti dà i “poteri” dell’ Assembler con la facilità e la flessibilità del C.
    Da lì in avanti (ci fermiamo al 1995 circa) non posso dire di aver più seriamente “programmato” alcunchè. Certo, ho usato in maniera estensiva HTML, PHP e ho goduto come un riccio quando PHP e MySQL mi hanno dato modo di creare delle applicazioni web che ancora oggi funzionano (e pure quelle , modestamente, due spicci di “royalties” ancora me li fanno entrare). Ma chiamare questi “linguaggi di programmazione” non so quanto sia corretto.
    La cosa sicura è che ogni interprete ha le sue caratteristiche peculiari, dipende tutto dall’ uso che se ne deve fare. Ora che gira tutto sul web e che i sistemi operativi server sono praticamente fermi a quello che erano 20 anni fa (se qualcosa si aggiorna è solo per correre appresso all’ evoluzione dell’ hardware e poi superarla in modo da costringere il pubblico a comprare macchine nuove), credo che da un punto di vista commerciale sia più richiesto uno capace di scrivere codice in PHP che un genio del “C”.
    Non è per fare il vecchio nostalgico, ma ormai la conoscenza di certe “basi” è completamente inutile: c’è chi si dice “programmatore” perchè è capace di installare e personalizzare una piattaforma WordPress su un server proprietario… a me viene da sorridere, ma in fondo è giusto così. Si va dove vuole il mondo, e se oggi è richiesto quello è bene che si sappia fare quello. Il “linguaggio” migliore” è quello il mondo del lavoro ti richiede nel dato momento. Poi possiamo parlare di passione e di hobby, ma quella è un’ altra cosa.

    "Mi piace"

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo di WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.