Evoluzione dei linguaggi di programmazione - Linguaggio binario Il sistema numerico binario è un sistema numerico posizionale in base 2. Esso utilizza solo due simboli, di solito indicati con 0 e 1, invece delle dieci cifre utilizzate dal sistema numerico decimale. Ciascuno dei numeri espressi nel sistema numerico binario è chiamato "numero binario". In informatica il sistema binario è utilizzato per la rappresentazione interna dell'informazione dalla quasi totalità degli elaboratori elettronici, in quanto le caratteristiche fisiche deicircuiti digitali rendono particolarmente conveniente la gestione di due soli valori, rappresentati fisicamente da due diversi livelli di tensione elettrica. Tali valori assumono convenzionalmente il significato numerico di 0 e 1 o quelli di vero e falso della logica booleana. - Assembler Un assembler (assemblatore in italiano) è un software che trasforma le istruzioni mnemoniche dell'assembly in linguaggio macchina. Si tratta dunque di un compilatore per un particolare linguaggio assembly. Il termine assembler deriva dal fatto che le istruzioni vengono convertite e montate una accanto all'altra come se fossero in fila. Ci sono molti tipi di linguaggi assembly e di conseguenza diversi assemblatori: esistono gli assembler per programmare i microchip, per creare programmi sul Personal Computer, per telefoni cellulari, ecc. Questo perché un assemblatore produce linguaggi macchina per una specifica famiglia di processori (intel 8086, 80386, Motorola 68000, ecc.). - Fortran Il è uno dei primi linguaggi di programmazione, essendo stato sviluppato a partire dal 1954, da un gruppo di lavoro guidato da John Backus. Il primo manuale di riferimento per il programmatore del FORTRAN I, "The FORTRAN automatic coding system for the IBM 704 EDPM", scritto dallo stesso Backus, è del 1956; il compilatore fu pubblicato nel 1957. Il Fortran è un linguaggio quasi sempre compilato, imperativo, con tipizzazione statica delle variabili, progettato principalmente per ilcalcolo scientifico e numerico; vi sono state però anche implementazioni con codice interpretato. Un tipo particolare di Fortran compilato è il Fortran FLAG (Fortran Load And Go), sviluppato da Bob Richardson, programmatore presso la Rice University, molto usato negli anni settanta per l'esecuzione di programmi non troppo complessi. Grazie sia agli innumerevoli programmi applicativi sviluppati nel corso degli anni, sia alle immense librerie di funzioni (richiamabili anche da programmi scritti con altri linguaggi di programmazione), il Fortran è tuttora molto usato. Di esso esistono varianti per il calcolo parallelo (usate nel calcolo scientifico: simulazione di fluidi, interazioni fra particelle, previsioni meteorologiche, ecc.); inoltre, anche se progettato originariamente come linguaggio procedurale, alcune sue versioni più recenti consentono di usare anche costrutti propri della programmazione orientata agli oggetti. - Pascal In informatica il Pascal è un linguaggio di programmazione creato da Niklaus Wirth. Si basa sul linguaggio ALGOL e fu così chiamato in onore del matematico e filosofo francese Blaise Pascal, inventore della prima macchina calcolatrice automatica. Le caratteristiche principali del Pascal sono una sintassi molto chiara e molto rigida con l'obbligo di dividere il programma in sezioni ben definite (uses, implementation) e di dichiarare in anticipo tutte le variabili usate nel programma (var, const); permette l'uso di tipi di dati complessi e definibili dal programmatore (i record) tramite la sezione type; permette (con alcune rigidità) l'uso dei puntatori e l'allocazione dinamica della memoria (new e dispose). Il Pascal è pertanto classificato come linguaggio semidinamico, in quanto gestisce i puntatori, permettendo di creare liste di variabili di dimensione non nota all'atto della compilazione, ma questi possono essere solo di un tipo alla volta, il tipo usato per definire la variabile puntatore stessa. Al posto delle subroutine di uso comune nei linguaggi di allora, il Pascal introduce le procedure e le funzioni, che estendono il concetto di subroutine incapsulando al loro interno le variabili e i dati locali, ed esponendo solo i valori in ingresso ed in uscita. Inoltre, nella sua formulazione originale, era privo dell'istruzione GOTO, aggiunta poi in seguito con riluttanza. - Basic Il BASIC, in informatica, è un linguaggio di programmazione ad alto livello sviluppato nel 1964 presso l'Università di Dartmouth sulcalcolatore GE-225. Ne furono coinventori i professori John George Kemeny e Thomas Eugene Kurtz. Il primo programma in BASIC "girò" il 1º maggio 1964 alle ore 4:00. - RPG RPG oppure RPG IV è un linguaggio di programmazione nativo per minicomputer IBM della serie iSeries, denominata anche, più comunemente, AS/400. La sua versione più recente comprende l'uso di prototipi di funzioni e procedure, binding statico e dinamico dei dati, accesso a librerie di routine scritte in C, uso di funzioni contenute in DLLcompilate a partire da altri linguaggi, e supporta totalmente codice dotato di sintassi ricorsiva e rientrante. Un programma RPG inizia tipicamente con una File Specification, contenente la lista di tutti i file da scrivere, leggere o modificare, seguita da una Input Specification, con le strutture dei dati (data Structures) e le matrici. Segue la Calculation Specification che racchiude la parte più importante del programma, ed infine la Output Specification, usata, fra l'altro, per impostare l'aspetto dei report stampati. Una delle modalità di funzionamento più caratteristiche del linguaggio è il cosiddetto ciclo (The Cycle): ogni programma RPG gira all'interno di un loop (letteralmente anello, cioè gruppo di istruzioni eseguite ciclicamente), che può essere usato, ad esempio, per esaminare uno alla volta tutti i record di un file. In alternativa il ciclo può ripetersi per un numero indefinito di volte, finché non viene interrotto dal verificarsi di un evento, oppure a seguito di un esplicito comando dell'utente. Altra caratteristica dell'RPG è che, molto più del COBOL e del FORTRAN, il modo in cui il codice è scritto è strettamente dipendente da come il testo è incolonnato. In altre parole anche gli spazi vuoti all'interno del codice devono avere un'esatta dimensione. Tutto questo era valido fino a qualche anno fa. Ultimamente il linguaggio si è evoluto e permette anche la scrittura in formato -C LANGUAGE Il C è un linguaggio di programmazione ad alto livello che integra caratteristiche dei linguaggi di basso livello, come il linguaggio macchina e l'assembly, per questo si usa anche l'espressione "di medio livello". Il C è rinomato per la sua efficienza, e si è imposto come linguaggio di riferimento per la realizzazione di software di sistema su gran parte delle piattaforme hardware moderne. La standardizzazione del linguaggio (da parte dell'ANSI prima e dell'ISO poi) garantisce la portabilità dei programmi scritti in C (standard, spesso detto ANSI C) su qualsiasi piattaforma. Oltre che per il software di sistema, il C è stato a lungo il linguaggio dominante in tutta una serie di altri domini applicativi caratterizzati da forte enfasi sull'efficienza. Esempi tipici sono le telecomunicazioni, il controllo di processi industriali e il software real-time. Oggi il predominio del C in questi contesti è in parte diminuito a seguito dell'avvento dicompetitor significativi, primo fra tutti il C++. Il C ha, e continua ad avere, anche una notevole importanza didattica, sebbene, per la sua complessità semantica e per le forti relazioni di tale semantica con il funzionamento dell'hardware dei computer, non si tratti di un linguaggio particolarmente intuitivo per i principianti, e in special modo a quelli sprovvisti di un adeguato background sull'elettronicadei calcolatori. Se un tempo scuole superiori e corsi universitari adottavano il C come linguaggio di riferimento a causa della sua importanza tecnica, oggi questa scelta trova un'ulteriore motivazione nella crescente importanza di linguaggi che dal C derivano (per esempio C++, Java e C# e, per consentire allo studente un approccio iniziale più rapido ed intuitivo, linguaggi ad alto livello come Python). -C ++ Il linguaggio di programmazione C++ fu originariamente derivato dal C. Tuttavia, non tutti i programmi C sono programmi validi in C++. Via via che il C e il C++ evolvevano indipendentemente, sono aumentate le loro incompatibilità. L'ultima versione del C, C99, creò un numero di conflitti in più. Le differenze rendono difficile la scrittura di programmi e librerie che funzionino sia in C che in C++, e creano confusione in chi programma in entrambi i linguaggi. La disparità rende difficile per entrambi i linguaggi l'adozione di caratteristiche dall'altro. Bjarne Stroustrup, il creatore di C++, ha ripetutamente suggerito[5] che le incompatibilità tra il C e il C++ dovrebbero essere ridotte il più possibile per massimizzare l'interoperatività tra i due linguaggi. Altri hanno sostenuto che poiché il C e il C++ sono linguaggi differenti, la compatibilità tra i due è utile ma non vitale; secondo questa posizione, gli sforzi per ridurre l'incompatibilità non devono ostacolare i tentativi per migliorare i linguaggi nel loro isolamento. - JAVA In informatica Java è un linguaggio di programmazione orientato agli oggetti, specificatamente progettato per essere il più possibile indipendente dalla piattaforma di esecuzione. Java è stato creato a partire da ricerche effettuate alla Stanford University agli inizi degli anni Novanta. Nel 1992 nasce il linguaggio Oak (in italiano "quercia"), prodotto da Sun Microsystems e realizzato da un gruppo di esperti sviluppatori capitanati da James Gosling. Tale nome fu successivamente cambiato in Java a causa di un problema di copyright (il linguaggio di programmazione Oak esisteva già). Per facilitare il passaggio a Java ai programmatori old-fashioned, legati in particolare a linguaggi come il C++, la sintassi di base (strutture di controllo, operatori e così via) è stata mantenuta pressoché identica a quella del C++; tuttavia, non sono state introdotte caratteristiche ritenute fonti di una complessità non necessaria a livello di linguaggio e che favoriscono l'introduzione di determinati bug durante la programmazione, come l'aritmetica dei puntatori e l'ereditarietà multipla delle classi. Per le caratteristiche orientate agli oggetti del linguaggio ci si è ispirati al C++ e soprattutto all'Objective C. In un primo momento Sun decise di destinare questo nuovo prodotto alla creazione di applicazioni complesse per piccoli dispositivi elettronici; fu solo nel 1993 con l'esplosione di internet che Java iniziò a farsi notare come strumento per iniziare a programmare per internet. Contemporaneamente Netscape Corporation annunciò la scelta di dotare il suo allora omonimo e celeberrimo browser della Java Virtual Machine (JVM). Questo segna una rivoluzione nel mondo di Internet: grazie alle applet, le pagine web diventarono interattive a livello client (ovvero le applicazioni vengono eseguite direttamente sulla macchina dell'utente di internet, e non su un server remoto). Gli utenti poterono per esempio utilizzare giochi direttamente sulle pagine web ed usufruire di chat dinamiche e interattive. Java fu annunciato ufficialmente il 23 maggio 1995 a SunWorld. Il 13 novembre 2006 la Sun Microsystems ha distribuito la sua implementazione del compilatore Java e della macchina virtuale (virtual machine) sotto licenza GPL. Non tutte le piattaforme java sono libere. L'ambiente Java libero si chiama IcedTea. L'8 maggio 2007 Sun ha pubblicato anche le librerie (tranne alcune componenti non di sua proprietà) sotto licenza GPL, rendendo Java un linguaggio di programmazione la cui implementazione di riferimento è libera. Il linguaggio è definito da un documento chiamato The Java Language Specification (spesso abbreviato JLS). La prima edizione del documento è stata pubblicata nel 1996. Da allora il linguaggio ha subito numerose modifiche e integrazioni, aggiunte di volta in volta nelle edizioni successive. Ad oggi, la versione più recente delle specifiche è la Java SE 8 Edition (quarta). - ASP In informatica, le Active Server Pages (Pagine Server Attive, in genere abbreviato in ASP) sono pagine web contenenti, oltre al puro codice HTML, degli script che verranno eseguiti dal server (elaborazione lato server) per generare il codice HTML runtime da inviare al browser dell'utente (proprio per questo vengono in genere definite pagine web dinamiche). In questo modo è possibile mostrare contenuti dinamici (ad esempio estratti da database che risiedono sul server web) e modificarne l'aspetto secondo le regole programmate negli script, il tutto senza dover inviare il codice del programma all'utente finale (al quale va inviato solo il risultato), con notevole risparmio di tempi e banda. La tecnologia ASP comprende alcuni linguaggi di scripting per la programmazione Web all'interno del cosiddetto paradigma del Web dinamico. I linguaggi utilizzati sono VBScript e JScript per l'ambiente ASP e VB.NET, C# e J# per l'ambiente ASP.NET (anche se il più utilizzato è proprio VB.NET). Grazie a questi linguaggi il sistema dinamico può comunicare lato server con tutti gli oggetti presenti sul sistema, infatti le possibilità offerte dal sistema sono fortemente orientate verso l'interfaccia con un corrispondente database, rendendo così possibile lo sviluppo di siti dinamici basati sulle informazioni contenute nel database. È possibile interfacciare le pagine ASP con qualsiasi tipo di database che abbia un driver OLEdb o ODBC, come ad esempio Access, SQL Server, MySQL, Oracle, Firebird,Sybase e tanti altri. Funziona ufficialmente solo sul web server Microsoft Internet Information Services (IIS). Nonostante questo, per quanti utilizzano piattaforme GNU/Linux è disponibile un emulatore che consente di eseguire i codici ASP senza dover riscrivere l'intero progetto ma soltanto una piccola porzione di esso. Nel diffuso web server Apache, ad esempio, è possibile utilizzare pagine dalla sintassi simile ad ASP installando e configurando il modulo Apache: ASP funzionante sulla base di Perl. In alternativa esiste inoltre un modulo generalmente noto come ChiliASP (su cui si basa il modulo SJSASP, Sun Java System Active Server Pages, disponibile sul sito di SUN). Una caratteristica molto apprezzata dagli utilizzatori dell'interprete ASP è la semplice e comprensibile sintassi di programmazione che rende la curva di apprendimento di tale linguaggio poco ripida. L'interprete ASP, tuttavia, presenta alcuni limiti, specialmente di prestazioni. Principali concorrenti di ASP sono il PHP, che funziona in modo molto simile, ma con una sintassi del tutto diversa dal VBScript, e l'unione di Perl/Python e CGI, che è un meccanismo meno integrato nella sola pagina web e quindi più macchinoso da gestire, che tuttavia permette al programmatore più flessibilità. ASP è stato ufficialmente abbandonato, seppure continua ancora ad essere supportato e può funzionare sulle ultime versioni di IIS, in favore di ASP.NET, ormai giunto alla versione 4.x, che consente di creare applicazioni web su piattaforma Microsoft che possono sfruttare anche funzionalità avanzate e, soprattutto, contare su un'infrastruttura molto più avanzata, qual è quella offerta dal .NET Framework in accoppiata con IIS 7. - PHP PHP (acronimo ricorsivo di "PHP: Hypertext Preprocessor", preprocessore di ipertesti; originariamente acronimo di "Personal Home Page") è un linguaggio di programmazione interpretato, originariamente concepito per la programmazione di pagine web dinamiche. L'interprete PHP è un software libero distribuito sotto la PHP License. Attualmente è principalmente utilizzato per sviluppare applicazioni web lato server, ma può essere usato anche per scrivere script ariga di comando o applicazioni stand-alone con interfaccia grafica. PHP riprende per molti versi la sintassi del C, come peraltro fanno molti linguaggi moderni, e del Perl. È un linguaggio a tipizzazione debole e dalla versione 5 migliora il supporto al paradigma di programmazione ad oggetti. Certi costrutti derivati dal C, come gli operatori fra bit e la gestione di stringhe come array, permettono in alcuni casi di agire a basso livello; tuttavia è fondamentalmente un linguaggio di alto livello, caratteristica questa rafforzata dall'esistenza delle sue moltissime API, oltre 3.000 funzioni del nucleo base. PHP è in grado di interfacciarsi a innumerevoli database tra cui MySQL, PostgreSQL, MariaDB, Oracle, Firebird, IBM DB2, Microsoft SQL Server solo per citarne alcuni tra cui anche database NoSql come per esempio MongoDB, e supporta numerose tecnologie, come XML, SOAP, IMAP, FTP, CORBA. Si integra anche con altri linguaggi/piattaforme quali Java e .NET e si può dire che esista un wrapper per ogni libreria esistente, come CURL, GD, Gettext, GMP, Ming, OpenSSL ed altro. Fornisce un'API specifica per interagire con Apache, nonostante funzioni naturalmente con numerosi altri server web. È anche ottimamente integrato con il database MySQL, per il quale possiede più di una API. Per questo motivo esiste un'enorme quantità di script e librerie in PHP, disponibili liberamente su Internet. La versione 5, comunque, integra al suo interno un piccolo database embedded, SQLite. Dispone di un archivio chiamato PEAR che mette a disposizione un framework di librerie riusabili per lo sviluppo di applicazioni PHP e di PECL che raccoglie tutte le estensioni conosciute scritte in C. PHP non ha ancora un supporto nativo per le stringhe Unicode o multibyte; il supporto Unicode è in fase di sviluppo per una futura versione di PHP, e consentirà di usare caratteri non ASCII in stringhe e nomi di funzioni, classi e metodi.