Programmazione #6: Linguaggi di scripting e ordinari.

Spesso ci scordiamo di lui e lo emarginiamo. Vergogna.

Spesso ci scordiamo di lui e lo emarginiamo. Vergogna.

Approfitto del fatto che per l’università sto preparando una relazione sui linguaggi di scripting per approfondire questa ulteriore (e per noi ultima) classificazione dei linguaggi di programmazione.

Per finire la nostra panoramica sui linguaggi di programmazione, e prima di addentrarci nei particolari più tecnici, affronteremo i cosiddetti linguaggi di scripting, non una novità nel panorama informatico ma che negli ultimi 15 anni stanno subendo uno sviluppo e una diffusione di tutto rispetto.

Per affrontare questo argomento cominceremo dalle caratteristiche che differenziano questi linguaggi dai linguaggi ordinari con cui fino a pochi anni fa erano fatti tutti i programmi esistenti.

Innanzitutto i linguaggi di scripting sono sempre linguaggi interpretati o al più semi-compilati.

Il programma che si occupa dell’esecuzione di questi programmi prende il nome di shell.

Storicamente le shell (e quindi i relativi linguaggi di scripting) erano utilizzate esclusivamente per interagire con il sistema operativo. La prima shell di un certo rilievo fu la Thompson Shell, utilizzata come shell di default dei sistemi Unix fino alla versione 7 quando fu sostituita dalla Bourne Shell.

Attualmente le shell di sistema sono numerose (tanto per citarne alcune, Bourne Again Shell conosciuta meglio come B.A.SH. la quale è la shell di default dei moderni sistemi Unix, la Korn Shell, la C Shell che ha una sintassi simile al C e infine COMMAND.COM, e il suo successore cmd.exe, la shell di default dei sistemi DOS e Windows) e alcune di loro mettono a disposizione linguaggi di scripting piuttosto potenti.

Quando utilizzate il terminale di linux o il prompt dei comandi di windows in realtà state programmando. Siete già programmatori. State già effettuando algoritmi.

Per esempio la serie di comandi che date per andare nella cartella “SPORCIZIE E PORCATE” per cancellare un file di nome “xxx.avi” è formalmente un programma. L’unica differenza fra quello ed uno script è che state istruendo interattivamente la shell invece di dargli un file (il programma o script appunto) in cui la shell va a leggersi i comandi da eseguire.

Non cambia assolutamente nulla. A parte che fare uno script per cancellare un file sarebbe uno spreco di tempo e inoltre… non lo si potrebbe utilizzare due volte 🙂 (quindi a che pro fare uno script usa e getta?)

Proprio per il loro compito strettamente legato al sistema gli script si differenziano dai programmi tradizionali per:

  • Complessità relativamente bassa.
  • Esecuzione di mansioni accessorie specifiche.
  • Una spiccata linearità (inizio-esecuzione-fine).
  • Mancanza di interfaccia grafica.
  • Richiamo di programmi esterni per svolgere funzioni complesse.

Successivamente, all’incirca dal 1993 in poi, si sono sviluppati anche linguaggi di scripting non necessariamente legati al sistema operativo. Molti addirittura mettono a disposizioni più o meno completamente modalità di esecuzione Object Oriented, una funzionalità che va decisamente oltre l’uso storico dei linguaggi di script. Fra questi annoveriamo per esempio Python, Ruby, Tcl e Perl.

Lo sviluppo di internet inoltre, favori la diffusione dei linguaggi di scripting per il web quali ad esempio PHP, JavaScript, tutti i linguaggi legati ad ASP e altri…

Ma cosa distingue allora un linguaggio di scripting suddetto da un linguaggio tradizionale?

Caratteristia comune nei linguaggi di scripting consiste nel fatto che il programmatore può disinteressarsi delle risorse di sistema. Per esempio può trascurare la gestione della allocazione e deallocazione della memoria, la dichiarazione del tipo delle variabili e conversione tra tipi.

In generale un linguaggio di scripting permette a chi lo utilizza di trascurare i dettagli implementativi e i tecnicismi per concentrarsi esclusivamente sul problema da risolvere.

Meraviglioso direte voi. Ma ogni cosa ha il suo prezzo e questo prezzo nel caso dei linguaggi di scripting sta nelle prestazioni che risultano non adatte a programmi che utilizzano massicciamente il processore per compiti di calcolo.

E’ usanza attuale infatti creare motori in linguaggi ad alte prestazioni come il C a cui affiancare interfacce scritte utilizzando i linguaggi di script. Di questo però vedremo di parlarne in una delle lezioni avanzate quando tratteremo le API e il Wrapping.

Con questo chiudiamo la nostra panoramica generale per cominciare ad affrontare altri temi più specifici. Cominceremo dai linguaggi procedurali e affronteremo la questione dell’allocazione della memoria parlando quindi di stack, heap, variabili, puntatori, allocazioni dinamiche e statiche.

Insomma. Iniziamo a divertirci. 🙂

Comments are closed.