• HOME
  • ALBANESI
    • Chi siamo
    • I nostri libri
    • Video
    • Pubblicità
    • Rassegna stampa
    • Contatti
  • Tu
    • Felicità
    • Intelligenza
    • Manuale della cultura
    • Il gioco della vita
    • Test e quiz
    • Gocce di vita
  • Salute
    • Medicina
    • Sintomi
    • Farmaci
    • Esami
    • Benessere
    • Fitoterapia
  • Nutrizione
    • Alimentazione
    • Dieta
    • Cucina e ricette
    • Cucina ASI
    • Alimenti (cibi)
    • Qualità dei cibi
  • Scuola
  • Sport
    • Corsa
    • Running
    • Maratona
    • Altri sport
    • Integratori
    • Medicina sportiva
  • Società
    • Ambiente
    • Diritto
    • Economia
    • Lavoro
    • Politica
    • Religione
  • Casa
    • Casa
    • Giardino
    • Orto
  • Animali
    • Patologie e sintomi
    • Consigli
    • Dal veterinario
    • Razze di cani
    • Gatti e altri amici
  • Scacchi
  • News
Ti trovi qui: Home / Manuale della cultura / Informatica / I linguaggi di programmazione

I linguaggi di programmazione

Il testo sottoriportato è protetto dal diritto d’autore e ogni riproduzione (cartacea, elettronica, in Internet) deve essere esplicitamente autorizzata per evitare di incorrere nelle sanzioni previste dalla legge.

Come visto descrivendo il funzionamento della CPU, un computer è in grado di comprendere le istruzioni di un programma solo se queste sono espresse in linguaggio macchina, ovvero opportunamente tradotte in codice binario.

Un livello più complesso di linguaggio di programmazione è costituito dai linguaggi assembly, in cui le variabili sono identificate da nomi e i codici delle istruzioni da stringhe di caratteri invece che da numeri. Per tradurre un programma scritto in assembly nel relativo codice eseguibile dalla CPU è necessario usare un assemblatore, che effettui la “traduzione” da un linguaggio all’altro. Tuttavia, i linguaggi macchina e assembly, oltre che essere dipendenti dal microprocessore, sono molto lontani dalla modalità in cui un programmatore “umano” è portato a pensare e lavorare. Per questo motivo, nella seconda metà del secolo scorso sono nati i linguaggi ad alto livello, così chiamati perché il programmatore non deve preoccuparsi delle peculiarità del microprocessore su cui il programma verrà eseguito.

Per passare alla programmazione ad alto livello è necessario quindi introdurre una certa astrazione nella definizione delle variabili, nell’accesso alla memoria e nella realizzazione di operazioni aritmetiche logiche. Inoltre, nei linguaggi ad alto livello, sono stati introdotti particolari costrutti di controllo per effettuare cicli iterativi e test. I costrutti di controllo permettono di combinare assieme istruzioni elementari per creare blocchi di codice strutturati in cui il programmatore può facilmente controllare il flusso dell’esecuzione.

Anche in questo caso, per tradurre un programma da un linguaggio ad alto livello al linguaggio macchina è necessario utilizzare un programma ad hoc, che può essere un compilatore o un interprete. Concettualmente sono simili a un assemblatore, ma sono molto più complessi perché, mentre esiste una corrispondenza uno-a-uno tra le istruzioni in assembly e le relative istruzioni in linguaggio macchina, nel caso dei linguaggi ad alto livello, una singola istruzione può corrispondere a parecchie istruzioni a livello più basso del microprocessore.

La differenza fondamentale tra un compilatore e un interprete è che il primo esegue la traduzione di tutto il codice sorgente in una volta sola generando il codice oggetto che poi si può eseguire, mentre nell’uso dell’interprete, la traduzione viene fatta istruzione per istruzione e seguita dalla sua esecuzione, quindi, nel caso dell’interprete, traduzione ed esecuzioni sono operazioni che si susseguono di volta in volta e al termine non esiste una generazione di un codice oggetto. Volendo mandare in esecuzione il programma con l’interprete, è necessario quindi effettuare di nuovo la traduzione. Per questo motivo, l’uso dell’interprete è meno efficiente e in generale più lento dell’utilizzo di un compilatore.

L’utilizzo di compilatori e interpreti non solo semplifica il lavoro al programmatore, ma consente di utilizzare linguaggi ad alto livello che non sono dipendenti dall’architettura della CPU utilizzata. I programmi scritti in linguaggi ad alto livello hanno una maggiore semplicità di sviluppo, di debug nonché maggiori portabilità e semplicità di manutenzione. Il termine debug è un termine tecnico che deriva dall’inglese to debug, (mettere a punto, eleminare gli errori), ovvero togliere i bachi, o bug, del programma. La fase di debug è fondamentale per assicurarsi che il programma sviluppato sia esente da errori, non solo sintattici (legati al linguaggio usato), ma anche da errori run-time, ovvero malfunzionamenti che si verificano in fase di esecuzione. Gli errori run-time possono essere generati da molteplici cause: errate letture di dati, situazioni di overflow o underflow, errata allocazione di memoria o altre situazioni non previste dal programmatore nelle fasi iniziali dello sviluppo del software e che portano a un comportamento del programma non aderente alle aspettative e alle specifiche prefissate.

Per quanto riguarda la portabilità, un programma scritto in linguaggio ad alto livello (indicato con codice sorgente) può essere mandato in esecuzione su computer diversi, a patto di utilizzare l’opportuno compilatore (che genera il codice oggetto). Nella scrittura di programmi ad alto livello, il programmatore può anche usare più volte porzioni di codice, riutilizzandolo sotto forma di chiamate a funzioni o routine.

I linguaggi ad alto livello si distinguono in due grandi classi: linguaggi imperativi e linguaggi dichiarativi (anche detti funzionali). I primi comprendono la maggior parte dei linguaggi strutturati utilizzati attualmente per sviluppare software, come il linguaggio C, il Pascal, i linguaggi a oggetti o i linguaggi paralleli. I linguaggi funzionali comprendono il linguaggio Lisp e il Prolog.

Nei linguaggi imperativi, il modello di programmazione si basa sul paradigma di cambiamento di stato della memoria del computer. Se si effettua la somma di due variabili e si assegna il risultato in una terza, per esempio:

A=B+C

tale operazione può essere vista come il cambiamento di una cella di memoria dove viene memorizzata la variabile A. Un programma scritto in un linguaggio imperativo può essere visto come una successione di stati (cambiamenti della memoria) che porta a uno stato finale (l’esito complessivo del programma).

Un linguaggio di tipo funzionale invece è basato su un insieme di funzioni o relazioni e l’elaborazione consiste nella valutazione delle relazioni esistenti tra entità diverse (per esempio postulati logici o booleani) mediante il calcolo di tali funzioni matematiche. I linguaggi funzionali sono propri dell’intelligenza artificiale.

Un’importante ulteriore suddivisione tra i linguaggi imperativi individua la classe dei linguaggi di programmazione a oggetti (C++ o Java), in cui la programmazione avviene utilizzando il modello astratto delle classi, ovvero oggetti software (porzioni di codice) in grado di scambiarsi informazioni sotto forma di messaggi. Caratteristiche di un linguaggio a oggetti sono l’incapsulamento (ovvero in una classe si distingue chiaramente l’interfaccia, verso altri oggetti, e il suo stato interno), l’ereditarietà (una classe può essere definita a partire da un’altra classe di cui eredita le caratteristiche) e il polimorfismo (la stessa porzione di codice può essere usata all’interno di classi diverse).

Oggigiorno esistono molti linguaggi di programmazione ad alto livello, e una distinzione ragionevole è per quale tipo di applicazione si vuole sviluppare il software. Come indicazione di massima, si può pensare di utilizzare i linguaggi Fortran o C per il calcolo scientifico, Prolog, Lisp, C per l’intelligenza artificiale, Cobol, o C per le applicazioni gestionali, C++, Visual C o Visual Basic per applicazioni grafiche o pittoriche (anche dette applicazioni visuali) e linguaggi Java, PHP o ASP per applicazioni web.

I programmi in linguaggio ad alto livello, come pure i relativi codici oggetto e i dati, vengono memorizzati in file. Un file è infatti un’astrazione logica con cui, mediante un nome e una sua posizione (percorso al file), si può accedere a un insieme di dati presenti sulle memorie di massa del sistema. Tali dati rappresentano il contenuto del file. Nei moderni sistemi, i file sono organizzati in modo gerarchico in directory (contenitori di file che possono essere via via contenuti uno nell’altro in modo nidificato).

 

Manuale di cultura generale – Informatica – I linguaggi di programmazione – Continua

Condividi:
  • Share via Facebook
  • Share via Twitter
  • Share via Email

I BEST SELLER

  • Manuale di cultura generale
  • La felicità è possibile
  • Il manuale completo della corsa
  • Correre per vivere meglio
  • Il metodo Albanesi
  • Il manuale completo dell'alimentazione
  • Guida agli integratori alimentari
  • Migliora la tua intelligenza
  • Capire gli scacchi
  • Il manuale completo della maratona
  • Gli altri nostri libri...



Privacy Policy - Cookie Policy - Cambia impostazioni privacy - Ulteriori informazioni sul GDPR

ATTENZIONE - Le informazioni contenute e descritte in questo sito sono solo a scopo informativo; non possono essere utilizzate per formulare una diagnosi o per prescrivere o scegliere un trattamento, non vogliono né devono sostituire il rapporto personale medico-paziente o qualunque visita specialistica. Il visitatore del sito è caldamente consigliato a consultare il proprio medico curante per valutare qualsiasi informazione riportata nel sito.


L'IDEA REGALO

manuale della cultura Il Manuale di cultura generale è una grande opportunità per chi studia, prepara un concorso, seleziona il personale o, semplicemente, un'idea per un regalo a uno studente o a una persona di cultura. Da poche ore a pochi giorni per costruirsi un’eccellente cultura generale nella materia preferita fra le 43 trattate.

BUONUMORE

barzellette

Ogni giorno una delle nostre barzellette divertenti



I NOSTRI SOCIAL NETWORK

Twitter FacebookYouTubeFeed

modernità Il gruppo Facebook dei nostri più affezionati amici


Thea – San Martino Siccomario (PV) © 2000 - 2021 | P.IVA 01527800187 | Tutti i diritti riservati