PROGETTARE LINGUAGGI DI PROGRAMMAZIONE

in
Conversazione con Larry Wall, creatore del linguaggio Perl
di Roberto Zunino

Lo scorso 17 febbraio Larry Wall, il creatore del linguaggio Perl, è stato ospite del centro COSBI (The Microsoft Research - University of Trento Centre for Computational and Systems Biology) e ha tenuto un seminario dal titolo “That Goes Without Saying (or Does It?)” presso il Polo Scientifico e Tecnologico Fabio Ferrari a Povo. In occasione della sua lezione ho avuto il piacere di parlare con lui degli aspetti inerenti alla progettazione dei linguaggi di programmazione.

Larry WallNella progettazione dei linguaggi di programmazione devono essere presi in considerazione molti aspetti, tra i quali performance, usabilità, rigore matematico. Normalmente è facile concentrarsi su alcuni di questi aspetti, tralasciandone altri. Secondo te, quali sono gli aspetti più trascurati e i trabocchetti più comuni nei quali si incorre progettando linguaggi di programmazione?

Lo sbaglio più comune è quello di non considerare i programmi come attività umane. Noi siamo creature linguistiche, e dedichiamo molto tempo comunicando in linguaggio naturale. Le nostre lingue madri sono espressive e l’utilizzo che ne facciamo è spesso guidato da motivazioni diverse da quelle del discorso immediato. Per analizzare correttamente il linguaggio umano, si deve fare attenzione ai diversi livelli di contesto. Per un progettista di linguaggi di programmazione è facile cadere nella trappola di credere che si debba pensare come un computer, anziché cercare di far pensare il computer in maniera più simile a quella umana. Fornire più di un modo per esprimere un’idea nei linguaggi di programmazione va contro al principio matematico dell’ortogonalità, ma dall’altra parte aumenta la capacità espressiva del linguaggio che così può rispondere ai requisiti che sono di interesse al programmatore. […]
In sostanza i linguaggi devono saper rispondere bene ai requisiti esterni. I linguaggi umani sono utilizzati da diverse persone con diverse abilità. I nostri linguaggi sono così ricchi da potere esprimere idee complicate in modo conciso. Alcune persone sono poeti, altre usano il linguaggio solo per risolvere i problemi o per lamentarsi che non li si stanno risolvendo. Analogamente un buon linguaggio di programmazione dovrebbe adattarsi facilmente al problema, permettendo a diversi tipi di persone di risolvere diversi tipi di problemi senza creare inutili complessità nella soluzione. Questa è una buona simbiosi.

I trend attuali nella progettazione di hardware indicano che l'hardware futuro sarà sempre più parallelo. Pensi che i linguaggi di programmazione debbano provare a includere caratteristiche in grado di permettere ai programmatori di