Brevi cenni sulle categorie dei linguaggi di programmazione

Tempo di lettura stimato:3 Minuti, 1 Secondi

Nell’ambito legale, la competenza tecnologica è diventata una risorsa indispensabile. Mentre tradizionalmente gli avvocati potevano fare affidamento esclusivamente sulla loro conoscenza del diritto e della prassi legale, l’avvento della tecnologia ha aperto nuove frontiere che richiedono una comprensione approfondita dei linguaggi di programmazione.

E’ chiaro che per chi scrive tale compito è agevolato dal fatto che prima di essere un giurista, già in età scolare divenne programmatore (basic), ma oggi, l’assistenza legale non si limita più alla carta e alla penna. Con la crescente digitalizzazione dei dati e dei processi legali, gli avvocati devono essere in grado di navigare nel mondo del software e del codice per fornire un supporto completo ai loro clienti.

Agli albori dell’informatica chi volesse governare un calcolatore doveva utilizzarne direttamente il linguaggio macchina: la qual cosa è duplicemente complicata, innanzitutto per la redazione, e poi per la comprensione. Complicazioni dalle quali derivano i limiti di questo linguaggio, su tutti il fatto che il livello di complessità affrontabile mediante il linguaggio macchina è inevitabilmente molto basso: solo algoritmi semplici e brevi possono esprimersi in questa forma. Ulteriore limite, poi, deriva dal fatto che un programma redatto in linguaggio macchina può funzionare solo su di un particolare tipo di macchina. Cioè, per eseguire la medesima elaborazione su di un diverso calcolatore sarebbe necessario riformulare interamente il programma.

Il superamento dei citati limiti del linguaggio macchina si ottenne formulando le istruzioni destinate ai calcolatori in un linguaggio più facilmente comprensibile all’uomo ed affidando ai calcolatori stessi il compito di tradurre tali formulazioni nel proprio linguaggio macchina da un apposito programma traduttore. Ne risulta una precisa divisione del lavoro tra uomini e calcolatori: gli uomini predispongono una formulazione algoritmica usando un linguaggio a loro congeniale; tale formulazione diventa poi l’input di un processo computazionale, eseguito dai calcolatori seguendo le istruzioni di un programma traduttore; la traduzione così ottenuta è direttamente eseguita dai calcolatori. Cioè in pratica i numeri che indicano operazioni in linguaggio macchina sono sostituiti da parole che evocano l’operazione corrispondente, e gli operandi binari (tipici del linguaggio macchina) sono sostituiti da numeri decimali. Si ottiene così il c.d. linguaggio assembler.

Vi è però stato un ulteriore passo evolutivo dei linguaggi di programmazione che è consistito nella creazione dei cosiddetti linguaggi di alto livello, i quali consentono agli umani di esprimere in modo sintetico ed intuitivo le istruzioni che indicano le elaborazioni da eseguire, ma consentono altresì ai calcolatori di tradurre tali istruzioni in univoche combinazioni di istruzioni del suo linguaggio macchina. Il medesimo programma informatico espresso in un linguaggio di alto livello può essere tradotto nei diversi linguaggi macchina di diversi calcolatori.

Esistono due tecniche di traduzione:

compilazione: l’intero programma, fondato in un linguaggio di alto livello, che è il suo c.d. codice sorgente, viene trasformato in un programma equivalente in linguaggio macchina, il suo c.d. codice oggetto.

interpretazione: il programma sorgente è tradotto in linguaggio macchina istruzione per istruzione, con immediata e contestuale esecuzione di ogni istruzione. A differenza della compilazione, dunque, l’interpretazione non dà luogo ad una versione permanente (codice oggetto) in linguaggio macchina: per eseguire nuovamente il software bisogna interpretarlo nuovamente.

Per approfondire:

- L. LESSIG, Code and Other laws of Cyberspace, New York, 1999; 

- G. SARTOR, Il diritto della rete globale, in Ciberspazio e diritto, 4, 2003, pp. 67-94;

- G. SARTOR, L'informatica giuridica e le tecnologie dell'informazione, Torino, 2016;

- F. ROMEO, Lezioni di logica ed informatica giuridica, Torino, 2012;

- W.S. MCCULLOCH, W.H. PITTS, A logical calculus of the ideas immanent in nervous activity, 1943;

- A.M. TURING, Computing machinery and intelligence, in Mind, 59, 1950, p. 236 ss.
The following two tabs change content below.

Nicola Nappi

⚖️ Diritto commerciale, assicurativo, bancario, delle esecuzioni, di famiglia. Diritti reali, di proprietà, delle locazioni e del condominio. IT Law. a Studio Legale Nappi
*Giurista, Master Universitario di II° livello in Informatica Giuridica, nuove tecnologie e diritto dell'informatica, Master Universitario di I° livello in Diritto delle Nuove Tecnologie ed Informatica Giuridica, Corso di Specializzazione Universitario in Regulatory Compliance, Corso di Specializzazione Universitario in European Business Law, Corso di Perfezionamento Universitario in Criminalità Informatica e Investigazioni digitali - Le procedure di investigazione e di rimozione dei contenuti digitali, Corso di Perfezionamento Universitario in Criminalità Informatica e Investigazioni digitali - Intelligenza Artificiale, attacchi, crimini informatici, investigazioni e aspetti etico-sociali, Master Data Protection Officer, Consulente esperto qualificato nell’ambito del trattamento dei dati.