lunedì 18 novembre 2019

L'antica lotta tra C e Pascal

Ora che sappiamo che avere delle conoscenze di programmazione serve, qualcuno potrebbe lamentarsi dell'aver indicato il Pascal come linguaggio piuttosto che il C. 

Effettivamente sia il C che il Pascal nascono attorno al 1970, ed il C è estremamente sintetico come linguaggio. Fine dei vantaggi del C.

Non ha nulla di più il C rispetto al Pascal. Molti lo indicavano come molto vicino al linguaggio macchina, come possessore di particolari doti di efficienza. La verità però è che l'efficienza del codice compilato dipende dalla bontà del compilatore, e a livello di linguaggio Pascal e C sono identici per caratteristiche e strutture messe a disposizione del programmatore. Non è infatti un caso che entrambi originino ampiamente da ALGOL.

Il Pascal è più espressivo mentre il C è estremamente sintetico. Basti pensare ai blocchi che nel Pascal sono racchiusi tre BEGIN ... END; mentre in C troviamo { ... }. Il Pascal è un rigoroso linguaggio strutturato a blocchi, il C non è propriamente un linguaggio strutturato. Il C permette di manipolare più comodamente flussi di dati (che sia input da tastiera, file o aree di memoria).

Ma se stiamo studiando per imparare, meglio partire con il Pascal, più chiaro, più espressivo, forse prolisso ma immediato a chi legge il codice e sta imparando. Poi nulla impedisce, una volta padroneggiate le strutture del linguaggio Pascal di passare al C, certamente un linguaggio ancora molto attivo ed utilizzato per la scrittura di codice per hardware specifico, driver, e parti dei sistemi operativi, piuttosto che rimanere affezionati al Pascal. D'altra parte anche il Pascal fu utilizzato da Apple nella produzione dei propri sistemi operativi che all'epoca chiama System. Ma si tratta solo di tradurre ciò che si scriveva in Pascal in C imparando qualcosa di nuovo, ossia come sfruttare le doti di sintesi del C avendo però solide basi Pascal per uno stile di programmazione chiaro, senza lasciarsi trascinare in assurde aberrazioni cui la libertà del linguaggio può indurre.

Purtroppo mi spiace constatare che i linguaggi più moderni, spesso molto più permissivi e nelle mani dei programmatori più o meno dotati, portano alla produzione di codice a mio parere obbrobrioso, ma che chi lo scrive pensa sia espressione di una propria capacità di sfruttare al massimo lo strumento, mentre è solo la porta verso il caos e i bug inesplicabili.