Linguaggi di programmazione (appunti del docente)



Scaricare 30.5 Kb.
24.11.2017
Dimensione del file30.5 Kb.

Linguaggi di programmazione (appunti del docente)
• Un linguaggio di programmazione è costituito, come ogni altro tipo di linguaggio, da

un alfabeto con cui viene costruito un insieme di parole chiave (il vocabolario) e da un insieme di regole sintattiche (la grammatica) per l’uso corretto delle parole del linguaggio.

• I microprocessori presenti all’interno della macchina sono stati progettati per riconoscere ed eseguire un insieme piuttosto ristretto di istruzioni; tali istruzioni costituiscono il

cosiddetto linguaggio macchina.

• Il linguaggio macchina è basato su una codifica estremamente compatta e poco intuitiva.
• Codificare un programma utilizzando il linguaggio macchina è assai arduo e richiede una

conoscenza approfondita del funzionamento di un particolare calcolatore (o meglio: del

microprocessore che costituisce la CPU della macchina).

• Per ovviare a questo problema, che ha costituito per molti anni un grosso limite alla diffusione della programmazione e quindi anche dell’uso dei

calcolatori, sono stati sviluppati dei linguaggi di programmazione più evoluti, che si pongono a metà strada fra il nostro linguaggio naturale ed il linguaggio macchina.

• Sono semplici e poveri (poche parole chiave, poche regole), ma privi di qualsiasi ambiguità


In informatica si parla di programmazione a basso livello quando si utilizza un linguaggio molto vicino alla macchina, al suo funzionamento interno.

• Si parla invece di programmazione ad alto livello quando si utilizzano linguaggi più sofisticati ed astratti, slegati dal funzionamento fisico della macchina.

• Si viene così a creare una gerarchia di linguaggi, dai meno evoluti (il linguaggio macchina e l’assembler) a quelli più evoluti (Pascal, Fortran, Cobol, Perl, Java);

• Il linguaggio C si pone ad un livello intermedio.


La programmazione a basso livello è più ardua e meno intuitiva, ma consente di sviluppare programmi molto efficienti su uno specifico sistema hardware/software, sfruttandone a fondo le caratteristiche.

• Ad alto livello la programmazione è più “naturale” e rapida, ma è possibile che non consenta di produrre software particolarmente efficiente.


Possiamo aggregare i numerosi linguaggi di programmazione esistenti sulla base del modello astratto di programmazione che sottintendono e che è necessario adottare per utilizzarli.
Linguaggi di Programmazione (classificazione in Imperativi e dichiarativi)

Imperativi: Procedurali: (C, Pascal, Fortran), Ad oggetti: (C++, JavaSmallTalk), Paralleli: (implem.Parallele)

Dichiarativi: Funzionali: (Lisp), Logici: (Prolog), Relazionali: (SQL)
Linguaggi imperativi:

– Il modello computazionale è basato sui cambiamenti di stato della memoria della macchina.

– È centrale il concetto di assegnazione di un valore ad una locazione di memoria (variabile).

– Il compito del programmatore è costruire una sequenza di assegnazioni (spesso reiterandole più volte) che

producano lo stato finale (in modo tale che questo rappresenti la soluzione del problema).
Linguaggi dichiarativi:

– Il modello computazionale è basato sui concetti di funzione e relazione.

– Il programmatore non ragiona in termini di

assegnazioni di valori, ma di relazioni fra entità e di valori di una funzione.


Sulla base dell’ambito in cui è necessario risolvere il problema, è opportuno adottare un

linguaggio piuttosto che un altro:


Calcolo scientifico: Fortran, C

Intelligenza Artificiale: Prolog, Lisp

Applicazioni gestionali: Cobol, SQL, C, C++, C#

Sistemi, device driver: Assembler, C

Applicazioni client visuali: Java, Visual Basic, C++, C#, C

Applicazioni su Web: Perl, PHP, ASP, Java, JavaScript, C#

Applicazioni distribuite: Java, C, C++, C#

Applicazioni mobile: Java, JavaScript, C++, C#


Compilatori

Un programma è la codifica di un algoritmo eseguita utilizzando un linguaggio di programmazione.

• L’unico linguaggio che la macchina è in grado di interpretare è il linguaggio macchina.

• Per eseguire un programma scritto in un linguaggio di alto livello è necessario dunque



tradurlo in linguaggio macchina.

• Naturalmente è possibile eseguire la traduzione in modo automatico utilizzando un programma “traduttore” (un compilatore o un interprete).

• Ogni traduttore è in grado di interpretare e tradurre un solo linguaggio (compilatore C, interprete Perl, compilatore Pascal, ecc.).
Interprete: itera più volte questo processo

Legge un’istruzione del programma “sorgente”

Traduce l’istruzione in linguaggio macchina

Esegue l’istruzione

– Passa all’interpretazione dell’istruzione successiva

• Al termine di questa operazione, del programma in linguaggio macchina non rimane alcuna traccia (la traduzione non viene memorizzata).

• Se il programma torna più volte su una stessa istruzione, questa verrà tradotta (ed eseguita) ogni volta.

• È necessario disporre dell’interprete per poter eseguire il programma.


Compilatore: esegue una sola volta il processo

Legge tutte le istruzioni del programma “sorgente”, ne verifica la correttezza sintattica e le traduce in linguaggio macchina.

Memorizza su disco il programma “eseguibile” tradotto in linguaggio macchina.

• Al termine della compilazione avremo un programma “eseguibile” in linguaggio macchina.

• La traduzione di ogni istruzione del programma avviene una sola volta, anche se una stessa istruzione viene ripetuta più volte all’interno del programma.

• Non ho bisogno di avere il compilatore ed il



“sorgente” per eseguire il programma: mi basta il programma “eseguibile”.


Condividi con i tuoi amici:


©astratto.info 2019
invia messaggio

    Pagina principale