IL SOFTWARE

Utilizziamo software in qualunque momento della giornata, a volte si trascura la sua rilevanza, a volte non consideriamo nemmeno la sua presenza, dimenticandoci dell’importanza che riveste nelle nostre vite. Utilizziamo un software quando scriviamo, quando navighiamo sul web, per scattare e modificare fotografie, per inviare mail o messaggi su WhatsApp, vediamo un film e non solo sempre più spesso i software permettono il funzionamento delle automobili, dei termostati di frigoriferi, lavatrici e quasi ogni altra cosa utilizziamo. L’elenco è interminabile. La maggior parte delle azioni quotidiane vengono eseguite attraverso un programma informatico.

Marc Andreessen, uno dei guru della Silicon Valley, ha scritto: “i software stanno divorando il mondo” (una forte affermazione, dietro la quale non si nasconde nessuna critica) evidenziando come gli strumenti digitali che ogni giorno ci permettono di compiere le nostre attività, abbiano raggiunto una forte influenza su tutti noi.

Se e quando si arriverà a raggiungere un’intelligenza artificiale pari a quella umana, sarà la tappa “conclusiva” di un percorso iniziato molto tempo fa con interminabili sequenze binarie di 0 e 1

LA NASCITA E L'EVOLUZIONE DEI LINGUAGGI DI PROGRAMMAZIONE

Il termine software (soft = morbido e ware = componente), con cui si intende un programma o un insieme di programmi in grado di funzionare su un elaboratore (computer), è stato coniato durante la seconda guerra mondiale.

Enigma è un dispositivo elettromeccanico per cifrare e decifrare messaggi che per la facilità d'uso e la presunta indecifrabilità fu ampiamente utilizzata dalle forze armate tedesche durante la seconda guerra mondiale.

In questo periodo i tecnici del Royal Army erano impegnati nella decrittazione dei codici tedeschi di Enigma, di cui, grazie ai servizi segreti polacchi, già conoscevano la meccanica interna (detta hardware, “componente dura”, volgarmente, ferraglia) . La prima versione di Enigma sfruttava tre rotori per mescolare le lettere. Dopo il 1941, ad Enigma venne aggiunto un rotore, e il team di criptoanalisti inglesi, capitanati da Alan Turing, si dovette interessare non più alla sua struttura fisica, ma alle posizioni in cui venivano utilizzati i rotori della nuova Enigma (foto a destra).

Dato che le istruzioni erano scritte su pagine solubili nell’acqua (per poter essere più facilmente distrutte, riducendo al minimo la possibilità di farle cadere nelle mani del nemico) furono chiamate software (componente tenera), in contrapposizione all’hardware (la componente meccanica)

A partire dal secondo dopoguerra, con lo sviluppo dell’hardware aumentano di pari passo le possibilità per gli sviluppatori.

il termine Software fa la sua prima apparizione ritenuta certa in una pubblicazione scientifica del 1958 dell’American Mathematical Monthly da parte dello statistico John Wilder Tukey, anche se Paul Niquette sostiene di averlo coniato nel 1953.

LA CRONOLOGIA

1837

Analytical Engine order code
in questo periodo, Babbage, sembra scrisse delle istruzioni esplicite sul come programmare la macchina manualmente, ma di sicuro ha mostrato come i programmi stessi siano formati da una serie di stati, e quali operatori venissero utilizzati durante l’esecuzione di ognuno di essi.
Ada Lovelace incontrò in molte occasioni Charles Babbage e rimase affascinata delle sue idee e, interessatasi al suo lavoro, iniziò a studiare i metodi di calcolo realizzabili con la macchina differenziale e la macchina analitica. Anche Babbage fu colpito dall’intelligenza della Lovelace e dalla sua abilità.

Dall’inizio degli anni 40, praticamente ogni anno (anche più spesso) viene creato un nuovo sistema di programmazione, in questo articolo ne elencherò solo alcuni, ma volendo approfondire, qui ci sono elencati “tutti”

Anni '40

I primi veri e propri computer appaiono negli anni’40, per programmarli (per parlare con questi “armadi”) c’è il linguaggio macchina, cioè all’epoca chi programmava settava ogni singolo bit a 1 o 0 su enormi computer, di volta in volta aggrappandosi a questi enormi apparecchi che occupavano stanze intere, dal peso di decine di tonnellate.
Il metodo era complicato e per niente agevole dato che tutto ruotava attorno al “primitivo” ENIAC (Electronic Numerical Integrator And Calculator ), un mastodontico calcolatore pesante 30 tonnellate

Il Plankalkül (dal tedesco: piano di calcolo) è un linguaggio di programmazione sviluppato per applicazioni ingegneristiche da Konrad Zuse. Sembra essere stato progettato tra il 1942 e il 1946 ma mai pubblicato per una serie di fattori fra cui i problemi derivanti dalla seconda guerra mondiale (il governo di quel periodo si rifiutò di sovvenzionare i progetti di Zuse in quanto la loro realizzazione, avrebbe richiesto più tempo di quello che il governo tedesco contava di impiegare prima della fine della guerra) ed il fatto che Zuse si concentrò piuttosto nella commercializzazione dello Z3 e dei suoi successori.

dal 1943 venne costruito L’Electronic Numerical Integrator and Computer  (l’ENIAC), il quarto computer elettronico (computer Turing) digitale della storia.
L’ENIAC, utilizzava il sistema numerico decimale. La sua memoria poteva contenere solo 20 numeri di 10 cifre, era di tipo flip-flop (un circuito sequenziale molto semplice, utilizzato come dispositivo di memoria elementare. Il nome deriva dal rumore che facevano i primi circuiti elettronici di questo tipo), l’input era consentito da schede di carta perforate. Era in grado di riconoscere il segno di un numero, confrontare numeri, e di eseguire le operazioni di addizione, sottrazione, moltiplicazione, divisione e radice quadrata.
veniva gestito da due sistemi di programmazione: ENIAC coding system, ENIAC Short Code, Von Neumann, ENIAC coding system, ARC Assembly, CPC Coding scheme, Curry notation system, Brief Code e il C-10 

Anni '50

Arriviamo agli anni ’50, la dimensione dei calcolatori si riduce e nascono i primi due linguaggi (nel senso moderno) di programmazione della storia, nel 1954 il FORTRAN (FORmula TRANslator), il cui utilizzo era ed è semplicemente quello di svolgere in maniera automatica calcoli matematici e scientifici, e nel 1958 l’ALGOL (ALGOrithmic Language), considerabile come il capostipite di una grande famiglia di linguaggi di notevole successo come il Pascal e il C.

Dopo la comparsa del Fortran nacquero una serie di altri linguaggi di programmazione storici, che implementarono una serie di idee e paradigmi innovativi: i più importanti sono il Lisp (1959) e l’ALGOL (1960) . Tutti i linguaggi di programmazione oggi esistenti possono essere considerati discendenti da uno o più di questi primi linguaggi, da cui derivano molti concetti di base; l’ultimo grande progenitore dei linguaggi moderni fu il Simula (1967), che introdusse per primo il concetto di oggetto software.

Anni '60

Gli anni’60 sono caratterizzati da un avvicinamento tra il mondo dei computer e della programmazione.

Nel 1961 nasce il Cobol, primo linguaggio che di fatto viene utilizzato non solo dalla comunità scientifica, è il primo linguaggio di programmazione che permette l’organizzazione di dati, manipolazione file e quant’altro, il tutto applicato alle amministrazioni di vario tipo, al commercio e ai sistemi bancari. Gli applicativi Cobol, noti per la loro stabilità, sono stati, alla base del funzionamento dei Bancomat e dell’operatività di molte banche e assicurazioni, fino al 2013 e oltre.

Iniziato a progettare nel 1959 da un gruppo di lavoro composto da vari elementi dell’industria e di alcune agenzie governative, tra cui spicca Grace Murray, con il suo ruolo primario nello sviluppo di Cobol, una delle menti storiche della programmazione mondiale, (prima di Cobol aveva inventato un altro linguaggio, il FLOW-MATIC)
Cobol rappresenta “la spinta scientifica” che porta nel 1964 al Basic, linguaggio che nasce per rendere tutto più semplice.

GE-235Il Basic infatti diventa uno dei linguaggi più utilizzati al mondo in brevissimo tempo e viene utilizzato in situazioni diametralmente opposte ma che riguardano il nostro quotidiano.

Il BASIC è un linguaggio di programmazione ad alto livello sviluppato nel 1964 sul calcolatore GE-225 (immagine a lato) dai professori presso dell Dartmouth College: John George Kemeny e Thomas Eugene Kurtz.

La parola è l’acronimo della frase in lingua inglese Beginner’s All-purpose Symbolic Instruction Code, ovvero “codice simbolico di istruzioni adatto a ogni esigenza dei principianti”. L’acronimo corrisponde anche all’aggettivo inglese basic (“semplice” o “fondamentale”). Il primo programma in questo linguaggio venne eseguito il 1º maggio 1964 alle ore 4:00 a.m.

 

Anni '70

Gli anni’60 sono stati importanti anche per il preludio ad un linguaggio che ancora oggi viene studiato nelle scuole. ma all’inizio degli anni ’70 e in scena entra Pascal: possibilità di creare programmi finalmente più leggeri e comprensibili di quelli sviluppati in Basic; ed è subito una vera e propria rivoluzione.

Un successo mondiale che porta alla ribalta Niklus Wirth, il suo creatore. Pascal diventa il primo linguaggio strutturato, a scopo didattico, basato sul linguaggio ALGOL e il cui nome è dedicato a Blaise Pascal che nel 1645 inventò la Pascalina, considerata la prima calcolatrice.

Nel 1972 dal BCPL nascono prima il B (rapidamente dimenticato). Nello stesso anno compare anche il Prolog, finora il principale esempio di linguaggio logico, che pur non essendo di norma utilizzato per lo sviluppo industriale del software (a causa della sua inefficienza) rappresenta una possibilità teorica estremamente affascinante.

Anni '80

Le cose stanno cambiando profondamente, programmare inizia ad essere un’attività sempre più vicina ai bisogni degli utenti e si pensa di cambiare in maniera radicale e definitiva l’approccio, l’architettura, toccando successivamente la procedura.

Compare quindi C, un linguaggio chiave della storia della programmazione, considerato “il linguaggio di più basso livello tra i linguaggi di alto livello” proprio per la sua potenza paragonabile al linguaggio macchina. E’ un linguaggio che mantiene un’ottima facilità d’uso e rappresenta di fatto l’inizio della rivoluzione di un’idea, di un sistema: stiamo parlando della programmazione orientata agli oggetti.

Nel 1983 quando Bjarne Stroustrup inventa il C++ introduce, sfruttando come base C, la programmazione Orientata agli Oggetti usando una nuova struttura: la classe, un concetto tanto semplice che riesce a ribaltare un’epoca potendo dividere l’interfaccia dal contenuto,e ottenere in questo modo tanti “moduli” che interagiscono tra loro tramite interfacce consentendo così al programmatore di cambiare il contenuto di una classe.

C++ è il linguaggio che ci ha messo in condizione di cliccare con gioia e stupore a inizio degli anni’ 90 nelle icone di Windows, è in pratica il progenitore vero e proprio di una catena di linguaggi che sono sfociati in framework.

Con i primi mini e microcomputer e le ricerche a Palo Alto, nel 1983 vede la luce Smalltalk, il primo linguaggio realmente e completamente ad oggetti, che si ispira al Simula e al Lisp: oltre a essere in uso tutt’oggi in determinati settori, Smalltalk viene ricordato per l’influenza enorme che ha esercitato sulla storia dei linguaggi di programmazione, introducendo il paradigma object-oriented nella sua prima incarnazione matura. Esempi di linguaggi object-oriented odierni sono Eiffel (1986), C++ (che esce nello stesso anno di Eiffel)

Benché sia molto noto come linguaggio per lo sviluppo di CGI, segnaliamo che nel 1987 Larry Wall creò il PERL (Practical Extraction and Report Language) quando tentava di produrre alcuni report da una serie di file. Decise di risolvere il problema della mancanze di un linguaggio adeguato, scrivendo un tool general-purpose. Oggi il PERL è diventato un linguaggio di programmazione disponibile su ogni implementazione di Unix, e lentamente sta crescendo e si sta perfezionando sempre più. Il Perl è un linguaggio interpretato ottimizzato per la scansione di file di testo arbitrari, l’estrazione di informazioni da questi file di testo e la stampa di report basati su queste informazioni. È anche un buon linguaggio per molti lavori di manutenzione di sistema. Il linguaggio è pesato per essere pratico e non per essere bello. Sintatticamente il Perl è molto simile al C.

Anni '90

Nasce il principe dei linguaggi di programmazione. Java (nome che deriva dalla tipologia indonesiana di caffè di cui ha abusato il Green Team durante il periodo di sviluppo del linguaggio) nasce unicamente per scopi universitari, come linguaggio dedicato alla ricerca assoluta, un linguaggio che va così a colmare alcuni vuoti lasciati dai suoi predecessori e che rende leggendaria la Sun Microsistem, piccola azienda di Santa Clara California che firma il capolavoro mondiale dei linguaggi di programmazione in termini di duttilità e diffusione del codice. Nascono le Common Gateway Interface e inizia un’altra rivoluzione, forse la più assoluta di tutte: prende forma il World Wide Web.

Il successo di Java è immediato, Sun Microsystem mette a disposizione gratuitamente il kit di sviluppo JDK (Java Development Kit) e Netscape Navigator (fu il primo web browser grafico di successo della storia dell’informatica. Negli anni novanta fu per un periodo il browser con le percentuali di utilizzo più elevate; successivamente queste percentuali si ridussero notevolmente, fino a registrare nel 2002 la quasi scomparsa) ne assorbì il core di Java facendolo diventare un linguaggio universale, multipiattaforma. Nel giro di pochi mesi i download del JDK diventano tantissimi, e Java è diventato il linguaggio più utilizzato al mondo agli inizi del 1996.

Un linguaggio ad alto livello è un linguaggio che tende con i suoi costrutti, la sua sintassi e grammatica di avvicinarsi il più possibile al linguaggio ed al ragionamento umano. In contrapposizione ai linguaggi ad alto livello, ci sono i linguaggi a basso livello come l’Assembler ed affini che rimangono molto più vicini al linguaggio macchina utilizzato dal calcolatore.

Nel 1991lo stesso anno di uscita di Visual Basic esce Python, un linguaggio di programmazione di più “alto livello” rispetto alla maggior parte degli altri linguaggi, orientato a oggetti, adatto, tra gli altri usi, a sviluppare applicazioni distribuite, scripting, computazione numerica e system testing.

Python è stato creato da Guido Van Rossum, ricercatore di Amsterdam che avendo lavorato ad un progetto di un linguaggio di programmazione con fini didattici di nome ABC, è riuscito a trasferire questa conoscenza in python.
Il nome del linguaggio non ha niente a che spartire con il rettile. Guido Van Rossum stava cercando un nome breve e semplice, mentre seguiva una commedia trasmessa dalla televisione di nome “The monty Python’s Flying Circus”, da qui il nome “Python”.
Python viene definito un linguaggio di scripting orientato agli oggetti. Infatti esso raccoglie in se la flessibilità e la semplicità dei linguaggi di scripting con la potenza di elaborazione e la ricchezza di funzioni dei più tradizionali linguaggi di programmazione di sistema.

Python, pur essendo distribuito gratuitamente, ha un notevole supporto tecnico e ha una comunità in costante crescita. Python è stato scritto in ANSI C, quindi la sua portabilità deriva direttamente da quella del C. Questo ha permesso di scrivere presto un interprete python per le principali piattaforme. Esiste un interprete python per Unix, Linux, MS-DOS, Windows, Macintosh, persino per Amiga, BeOS, OS/2, VMS, QNX.
Recentemente è stato scritto un interprete anche in java e anche per sistemi Palmari. Python è un linguaggio interpretato. In questo caso “interpretato” non è sinonimo di lento, infatti python “compila” il proprio codice in un bytecode molto efficiente. Questo permette di raggiungere prestazioni vicine ai linguaggi in codice nativo.
Analogamente a ciò che avviene in Java, in python esiste un meccanismo, il quale permette di liberare il programmatore dall’ansia di allocazione selvaggia della memoria.
Questo linguaggio presenta una sintassi pulita e sintetica. L’idea migliore è rappresentata dalla indentazione( l’inserimento di una certa quantità di spazio vuoto all’inizio di una riga di testo), che non serve più al programmatore per ordinare meglio il codice, ma diventa l’unico strumento per strutturare il codice.
Questo permette un apprendimento più veloce e una maggiore facilità a leggere il codice scritto da altri.
Solo la dotazione standard offre numerose librerie alle quali si aggiungono moduli di terze parti che crescono continuamente. Tutte queste caratteristiche stanno convincendo molti grandi attori del mercato informatico ad utilizzare python.

Nel 1994 nasce PHP (Personal Home Page, acronimo ricorsivo di “PHP: Hypertext Preprocessor”) è un linguaggio server side di scripting completamente Open Source che si sta diffondendo sempre di più sul mercato per la sua somiglianza con il C e il Perl e per la sua potenza. Sempre più applicazioni e siti Web sono sviluppati usando le proprietà di accesso ai dati di PHP, su piattaforma Linux che sta diventando una scelta alternativa alle costose soluzioni Microsoft.
Attraverso l’interazione con HTML è possibile creare pagine web dinamiche che vengono processate dal server (il più delle volte Apache Server) in maniera rapida ed efficiente.

Nel 1995 nasce Delphi come evoluzione del “Borland Turbo Pascal“. La prima  versione di Borland Delphi produceva applicazioni per Windows a 16-bit. Successivamente venne rilasciata la versione 2.0 completamente rivista ed ottimizzata per lo sviluppo di applicativi in ambiente 32-bit. Siamo all’incirca nel 1996 e da qui il Delphi si è evoluto ad una velocità impressionante, quasi una versione all’anno. Con il Delphi la Borland ha introdotto il concetto di sviluppo Visuale RAD orientato alla gestione degli eventi come nel Visual Basic, senza perdere però i vantaggi della compilazione Pascal. Da notare che, come l’Object Pascal il Delphi è un linguaggio GP ovvero un tool di sviluppo che permette di realizzare applicazioni di qualsiasi tipo, più o meno complesse e tutto questo con una semplicità estrema.

Anni 2000

Esce Visual Basic .NET, la nuova versione di Visual Basic. Le novità principali di questo nuovo linguaggio di sviluppo del Framework .NET è la programmazione a oggetti e che è compilato.

Il Visual Basic, come il suo corrispondente C#, è un punto di congiunzione di tante iniziative e tecnologie di sviluppo Microsoft del passato come ad esempio: il COM (Component Object Model) e gli ActiveX, sostituiti con assembly e classi di oggetti completamente gestiti (managed) cioè che la gestione della memoria è gestita autonomamente dal garbage collector. Con Visual Basic è possibile realizzare: applicazioni windows forms, web, servizi, componenti COM, MQ, Web service ed anche destinate a dispositivi mobili tramite l’uso delle librerie del Compact framework.

Nel 2011 Google pubblica DART, il suo scopo è quello di sostituire JavaScript per lo sviluppo web. Il compilatore Dart permette di scrivere programmi sia per il web che per desktop e server, attraverso l’uso di due diverse piattaforme: DartWeb e DartNative.

Da questo momento il passo rallenta e si aggiornano o implementano i sistemi già presenti, attendiamo prossimamente novità.

Qui ho elencato solo alcuni linguaggi, ma volendo approfondire, e vederli tutti, almeno i conosciuti, qui c’è l’elenco completo