Cenni sui linguaggi di programmazione Classi di linguaggi Ad oggi esistono circa 2500 linguaggi di programmazione più o meno noti e diffusi: questi vengono normalmente classificati in tre grandi famiglie basate sul concetto di istruzione: • i linguaggi imperativi • i linguaggi funzionali • i linguaggi logici Classi di linguaggi Nei linguaggi imperativi l'istruzione è un comando esplicito, che opera su una o più variabili e le istruzioni vengono eseguite in un ordine prestabilito. Scrivere un programma in un linguaggio imperativo significa essenzialmente occuparsi di cosa la macchina deve fare per ottenere il risultato che si vuole e mettere a punto gli algoritmi necessari a manipolare i dati. Classi di linguaggi I linguaggi funzionali sono basati sul concetto matematico di funzione. In un linguaggio funzionale puro l'assegnazione esplicita risulta addirittura completamente assente (si utilizza soltanto il passaggio dei parametri). In tale modello rivestono particolare importanza la ricorsione, e, come struttura dati, la lista (sequenza ordinata di elementi) Classi di linguaggi Nei linguaggi logici l'istruzione è una clausola che descrive una relazione fra i dati: programmare in un linguaggio logico significa descrivere l'insieme delle relazioni esistenti fra i dati e il risultato voluto. Non c'è un ordine prestabilito di esecuzione delle varie clausole, ma è compito dell'interprete trovare l'ordine giusto Linguaggi di scripting I linguaggi di questo tipo nacquero come linguaggi batch: vale a dire liste di comandi di programmi interattivi che invece di venire digitati uno ad uno su una linea di comando, potevano essere salvati in un file. Il passo successivo fu quello di far accettare a questi programmi anche dei comandi di salto condizionato e delle istruzioni di ciclo, regolati da simboli associati a variabili. Linguaggi di scripting In ambito web i linguaggi di scripting più diffusi sono: JavaScript (client-side: il linguaggio di programmazione viene interpretato ed elaborato dal computer locale) Asp e Php (server-side: i linguaggi di programmazione vengono interpretati ed elaborati dal server il quale, successivamente, invia i risultati al client: il browser dell'utente). Concetti base Tutti i linguaggi di programmazione esistenti possiedono questi due concetti chiave: Variabile: un dato o un insieme di dati, noti o ignoti, già memorizzati o da memorizzare. I linguaggi inoltre attribuiscono alle variabili un tipo, con differenti proprietà (stringhe di testo, numeri, liste, ecc.) Istruzione: un comando, una funzione, oppure una regola descrittiva: anche il concetto di istruzione è molto variabile fra i vari linguaggi Alcuni concetti sono poi presenti nella gran parte dei linguaggi: Espressione: una combinazione di variabili e costanti, unite da operatori; le espressioni sono state introdotte inizialmente per rappresentare le espressioni matematiche, ma in seguito la loro funzionalità si è estesa Strutture di controllo: che permettono di governare il flusso dell'esecuzione del programma, alterandolo in base al risultato di una espressione (che può ridursi al contenuto di una variabile, o essere anche molto complessa) …………. sono poi presenti nella gran parte dei linguaggi: Sottoprogramma: un blocco di codice che può essere richiamato da qualsiasi altro punto del programma. Strutture dati: meccanismi che permettono di organizzare e gestire dati complessi. Il codice sorgente Programmare in un dato linguaggio di programmazione significa generalmente scrivere uno o più semplici file di testo, chiamato codice sorgente. I font, i colori e in generale l'aspetto grafico sono irrilevanti ai fini della programmazione in sé: per questo i programmatori non usano programmi di videoscrittura ma degli editor di testo. La compilazione Il codice sorgente, contenente le istruzioni da eseguire, può essere poi eseguito passandolo ad un interprete che eseguirà le istruzioni in esso contenute, il che è la prassi normale per i linguaggi di scripting. Oppure può venire compilato, cioè tradotto in istruzioni di linguaggio macchina da un programma compilatore: il risultato è un file binario eseguibile che non ha bisogno di altri programmi per andare in esecuzione, ed è anche molto più veloce di un programma interpretato. La compilazione La compilazione offre numerosi vantaggi, primo fra tutti il fatto di ottenere eseguibili velocissimi adattando vari parametri di questa fase all'hardware a disposizione. Ha lo svantaggio nel fatto che bisogna ricompilare ogni volta che si cambia sistema operativo e hardware su cui ci si basa se si vuole rendere disponibile il programma su più piattaforme.