logo windoweb


Foto gratis Home Page sito Storia Computer

Sei qui: Home > Storia computer > Linguaggi di programmazione > Caratteristiche

dei linguaggi

Storia dei Linguaggi di programmazione

CARATTERISTICHE

OFFERTE AMAZON



TABELLA UTILIZZO DEI LINGUAGGI DI PROGRAMMAZIONE
1° anno General purpose Educa tion Scient.

matem.

A.

I.

robot
Difesa militare Simula zioni Missioncritical Comuni cazioni Works tation Web Finanza banche Business GraficaCAD Stati stiche Giochi Sist.

op.

Objectorient.

ADA 1977 x x x x x X-ob
ALGOL 1958 x
APL 1962 x x
Assembly 1940 x x
BASIC 1964 x x x
C 1972 x x
C ++ 1986 x x x-oo
COBOL 1959 x x
DELPHI 1995 x x-oo
FORTRAN 1957 x x
HTML 1989 x
JAVA 1995 x x x-oo
LISP 1960 x x x x
MODULA-2 1975 x x
OBERON 1988 x x x-oo
PASCAL 1975 x x x-oo
PERL 1986 x
PL/1 1965 x x x
PROLOG 1970 x x-oo
RPG 1960 x
SIMULA 1967 x x-oo
V.

BASIC
1987 x x x x x-oo
SCHEMA EVOLUTIVO DELLE GENERAZIONI DEI LINGUAGGI DI PROGRAMMAZIONE1GLlinguaggi di Prima generazioneBasati sul codice macchina (in binario)1110010111110000110011012GLlinguaggi di Seconda generazioneSimbolici di tipo AssemblyEsempi: IBM BAL, VAX Macro.

calc:decL R5pushL R5calls #1, recfibmovL R0, R6decL R5pushL R5calls #1, recfibaddL R6, R0ret.

end3GLlinguaggi di Terza generazioneLinguaggi procedurali, con termini in lingua ingleseI programmatori devono specificare il "cosa" e "come" desiderano mandare in output.

Esempi: COBOL, RPG, FORTRAN, Pascal, Ada, C, BASIC, PL/I.

4GLlinguaggi di Quarta generazioneNon procedurali, ma ancora basati sulla lingua inglese.

Contengono dizionari di dati integrati, database relazionali dinamici, consentono rapidi sviluppi del sistema tramite anche prototipizzazioniI programmatori (e a volte gli utenti) specificano il "cosa" dell'output desiderato, lasciando al software il compito di stabilire il "come".

Esempi: FOCUS, Powerhouse; access admissions set report device printerset report device discset report name AD32select if term = "961" and (app-status="AC" or app-status="PP")sort on ad-source on namereport id name ad-source class hs-code entrance-code app-statusfooting at ad-source skip 2 "Total for: " ad-source "=" count skip 3final footing "Total enrollment " countset report nolimitgo?GLlinguaggi della prossima generazione?L'evoluzione dei linguaggi di programmazione e la disponibilità di tools di sviluppo non finiscono certo con la 4^ generazione.

Si è detto che la programmazione Object-Oriented rappresenta una nuova generazione di strumenti.

Lo sviluppo O-O si basa sull'uso di "oggetti" che rappresentano sia la struttura dei dati che dei processi che possono agire su di essi.

La maggior valenza degli oggetti deriva dal fatto che una volta definiti sono riutilizzabili infinite volte, riducendo drasticamente lo sforzo di programmazione.

Successive generazioni di programmi potranno apparire sempre meno vincolati ad un linguaggio di tipo tradizionale, con le sue regole grammaticali e la sua sintassi.

Ricky Spelta
LA CLASSIFICAZIONE DEI LINGUAGGI DI PROGRAMMAZIONE
IL LIVELLO DEI LINGUAGGI 1) linguaggi di basso livello Sono tutti quelli che comunicano direttamente con il computer, utilizzando i codici operativi dello stesso processore, quindi in "linguaggio macchina".

Questo modo di programmare dà al tecnico la più ampia libertà e potere, ma nello stesso tempo lo porta a scendere al più basso dei livelli dei linguaggi formali, ovvero deve parlare la stessa lingua operativa della macchina, adoperando una catena molto lunga di istruzioni elementari, quindi con molta difficoltà di scrittura e di verifica del corretto funzionamento.

Prima della nascita dei linguaggi formali di alto livello (high-level languages) questa era l'unica maniera per fare compiere un lavoro ad un computer.

2) linguaggi di alto livello Sono invece tutti quelli che fanno uso di uno pseudo-linguaggio umano, utilizzando allo scopo parole-chiave o codici operativi ispirati quasi esclusivamente alla lingua inglese.

Ovviamente ciò facilita molto sia la stesura che la rilettura di un programma, ma non mette il computer in condizione di capire direttamente cosa vogliamo.

Per ottenere il risultato finale è dunque necessario applicare un "interprete" che traduca il nostro linguaggio simbolico e decisamente più sintetico, in reali istruzioni di macchina.

Nel tempo l'interpretazione del linguaggio simbolico (programma "sorgente") ha messo in evidenza la lentezza causata dalla traduzione contemporanea durante lo svolgimento del calcolo e perciò si è pensato di creare dei "compilatori" che svolgessero un ruolo molto più completo e produttivo.

Il compilatore è un programma (scritto in linguaggio macchina) in grado di leggere le istruzioni del sorgente, verificarne la correttezza linguistica, e sviluppare automaticamente le corrispondenti istruzioni in codice operativo di macchina (ottenendo così un programma "oggetto" o "eseguibile" che dir si voglia).

In questo modo abbiamo ottenuto un valido compromesso, tra il parlare come la macchina e il parlare con la nostra lingua naturale.

Ovviamente i linguaggi simbolici impongono nuove regole di grammatica e sintassi, per cui dobbiamo comunque fare uno sforzo iniziale per apprenderne le esigenze, ma dopo ci troviamo la vita più facile perchè con termini sintetici riusciamo a ottenere ciò che vogliamo dal computer.

ATTRIBUTI DEI LINGUAGGI Generalmente si tende a suddividere i linguaggi ad alto livello in 3 categorie:- imperativi- funzionali- dichiarativi Però la classificazione può anche essere più ampia, e soprattutto comprendere alcuni attributi particolari che ne definiscono meglio le capacità.
Linguaggi Imperativi: sono composti da una sequenza di istruzioni in grado di modificare il contenuto della memoria del computer o di determinare le modalità di esecuzione di altre istruzioni.

Molto importante è l'istruzione di assegnazione.

Quasi tutti i linguaggi più comuni (RPG, Pascal, Basic, Fortran, C, Cobol, ecc.

) agiscono in questo modo.
Linguaggi Funzionali: che servono a calcolare il valore di una 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, in pratica l'utilizzo di funzioni che richiamano se stesse e, come struttura dati, la lista (sequenza ordinata di elementi).

Il più importante rappresentante di questa categoria è senz'altro il Lisp (LISt Processing).
Linguaggi Dichiarativi (o logici): dove il programma è considerato come la dimostrazione della verità di una asserzione.

Il sorgente è costituito da una sequenza di asserzioni di fatti e regole.

Non è necessario indicare esplicitamente il flusso di esecuzione, ma dato un obiettivo di partenza è il sistema che cerca di individuare i fatti e le regole rilevanti.

Il fatto che vi sia una netta separazione tra la parte dichiarativa (il cosa fare) e la parte procedurale (il come) rende un programma scritto in un linguaggio logico particolarmente leggibile.

I linguaggi logici risultano molto adatti a risolvere problemi che riguardano entità e le loro relazioni, mentre nelle normali applicazioni risultano essere di difficile utilizzo, anche perché, comportano un modo di programmare completamente diverso dal solito.

Il linguaggio più famoso di questo tipo è il Prolog (PROgramming in LOGic).

Altri attributi dei linguaggi

Linguaggi Strutturati: la programmazione strutturata è una tecnica il cui scopo è di semplificare la stesura dei programmi, limitando l'uso dei controlli a pochi casi semplici, tutti con un solo ingresso e una sola uscita.

Tale metodo è stato adottato da molti linguaggi anche preesistenti.

Ad esempio per evitare l'uso indiscriminato del famoso GOTO (salto incondizionato) sono state introdotte istruzioni di controllo strutturato del flusso, come i blocchi IF-THEN-ELSE, DO WHILE, CASE, FOR, ecc.

L'adozione di nuove regole di strutturazione non impedisce, in casi in cui sia ritenuto veramente utile, l'utilizzo dei vecchi comandi di salto (GOTO), ancora in uso, per esempio, per uscire da una routine in caso di errore.
Linguaggi Object-Oriented: il programma opera su insiemi di oggetti (insiemi di dati e regole che manipolano questi dati) che comunicano tra loro e verso l'esterno mediante messaggi.

L'Object-Oriented ha adottato nuovi concetti come l'incapsulamento, l'ereditarietà e il polimorfismo.

Oltre a linguaggi specializzati che implementano i principi di tale metodologia, come Smalltalk, ad esempio, sono nate delle estensioni dei linguaggi già esistenti, che li integrano (ad es.

C++ per il C, il Visual BASIC, Visual RPG, ecc.

).
Linguaggi Event driven: per programmare in ambienti di tipo Windows è necessario provvedere alla gestione contemporanea del possibile verificarsi di tutta una serie di eventi (movimento del mouse, click, comandi da tastiera, ecc.

)In un ambiente guidato da eventi non determinabili a priori, ma appunto "event driven" non esiste più una sequenza determinata di comandi da eseguire, ma ad ogni evento bisogna promuovere una determinata azione.

Per questo motivo anche il linguaggio di programmazione deve poter essere in grado di gestire questi fatti segnalati dal sistema, ma non tutti i linguaggi lo sanno fare.

Il grande successo che ha riscosso il Visual Basic della Microsoft, o MS Access, derivano anche da queste loro spiccate attitudini, che permettono di creare facilmente applicazioni sotto Windows, fornendo anche la capacità di governare un flusso di tipo event driven.

Ricky Spelta
DIFFERENZE TRA LINGUAGGI "STRUTTURATI" E "NON-STRUTTURATI"(ovvero che fanno uso del comando GOTO)
Strutturato "Spaghetti"
START:
   PERFORM DOG
   PERFORM CAT
   PERFORM FISH
   PERFORM BIRD
   PERFORM FROG
   EXIT.

DOG: WALK THE DOG RETURNCAT: PUT OUT THE CAT RETURNFISH: FEED THE FISH RETURNBIRD: COVER BIRD CAGE RETURNFROG: SING TO THE FROG RETURN
START:
  GOTO MAMMALS
DOG:
  WALK THE DOG
  GOTO CAT
MAMMALS:
  GOTO DOG
FISH:
  FEED THE FISH
  COVER THE BIRD
  GOTO FROG
CAT:
  PUT OUT THE CAT
  GOTO FISH-AND-FOWL
FISH-AND-FOWL:
  GOTO FISH
FROG:
  SING TO THE FROG
EXIT.

(esempio di programma strutturato e non) Un linguaggio può essere definito "strutturato" solo se offre la possibilità al programmatore di organizzarne il flusso in modo chiaro, con una netta distinzione tra flusso logico principale (main program), funzioni di servizio, chiamate esterne ad altri programmi o funzioni, subroutines, gestione errori separate e via dicendo.

A tale scopo il linguaggio dovrebbe presentare comandi di controllo del tipo: IF-->THEN-->ELSE DO (while - until) FOR-->NEXT CASE GOSUB LOOP CALL ecc.

Oltre a istruzioni di questo tipo, la strutturazione dovrebbe presentarsi con incolonnamenti progressivamente spostati verso destra, per dare l'esatta informazione dei vari livelli di profondità dei suoi blocchi di istruzioni condizionate (indent delle righe).

La strutturazione ben fatta rende molto più leggibile un programma, evita molti possibili casi non gestiti, facilita la manutenzione e richiede meno sforzo creativo.

Di contro il programmatore deve preventivamente ordinare e organizzare meglio le sue idee, seguendo magari il criterio di procedere per approfondimenti successivi (metodo top-down).

La caratteristica di linguaggio strutturato non è decaduta con l'avvento di linguaggi object-oriented, anzi, la complessità a cui a volte arrivano questi programmi ne sollecita maggiormente una buona organizzazione strutturale, per evitare le possibili dispersioni che ne potrebbero derivare.

Ricky Spelta
LE DOTI DEI LINGUAGGI
In queste poche righe non ho certo la velleità di affrontare e risolvere il complesso problema dei linguaggi di programmazione e del loro utilizzo migliore, ma il contenuto può servire ai profani per comprendere e sensibilizzarsi sulla grandezza del problema, rimandando gli interessati ad altre fonti di approfondimento più qualificate.

Ci sono due strade altrettanto importanti per valutare un linguaggio di programmazione:- capire "cosa" sa fare il linguaggio, ovvero le motivazioni che ne hanno spinto la realizzazione, ma non alle sue origini, che magari si perdono nella notte dei tempi, bensì nel suo stato più recente di disponibilità- capire "come" lo sa fare, nel senso che molti linguaggi presentano strumenti di sviluppo analoghi tra loro, ma possono presentarsi con regole grammaticali o sintattiche anche molto diverse, oppure avere altri limiti, anche gravi, se valutati nel contesto delle nostre esigenze.

Oggi la scelta di un linguaggio da adottare per una certa applicazione si presenta assai vasta e complessa.

Sono finiti i tempi in cui un programmatore studiava e imparava un solo linguaggio e campava con quello per tutta la sua carriera.

La conoscenza di differenti linguaggi è indispensabile perchè il mondo informatico tende ad ampliarsi sempre di più, integrando in una stessa applicazione problemi che possono essere di gestione dei dati di un database, di comunicazioni remote, di accesso a Internet, di gestione della sicurezza, di controllo dei processi, di collaborazione e scambio informazioni tra varie piattaforme o tra vari sistemi operativi e via dicendo.

Un conto è dovere scegliere un linguaggio per sviluppare dei giochi al computer, ben diversa la scelta per l'insegnamento universitario ed ancora diversa quella per realizzare, invece, applicazioni in ambienti aziendali.

Solo per citare tre differenti approcci al problema.

Il più elevato numero di programmi e di righe di codice oggi è sicuramente legato al mondo aziendale, o commerciale o del business o del gestionale, che dir si voglia.

E' per questo motivo che anche molti linguaggi "puri", nati semplicemente per lo studio o con scopi ben più teorici e nobili, hanno finito, prima o poi, per essere implementatie presentati anche sul mercato del "grande business".

La domanda di sviluppatori competenti è quindi sempre più orientata a questa area di interesse, che non a tutte le altre.

Allora nella marea di linguaggi proponibili per lo sviluppo di applicazioni aziendali dobbiamo essere in grado di fare scelte precise e vincenti.

Chiariamo un altro concetto: imparare un nuovo linguaggio richiede tempo e fatica e soprattutto un buon periodo di esercitazione pratica, senza la quale non s'è imparato un bel niente!Sbagliare scelta, sia in termini di cultura personale che -a maggior ragione- in termini di scelta aziendale, può costare molto caro e condannarci a proseguire per quella strada nel nostro sviluppo di programmi, non potendo buttare via tutto il lavoro già fatto per ricominciare daccapo.

Gli elementi più critici da valutare possono quindi riguardare:- la standardizzazione e diffusione del linguaggio e relativa tranquillità e fiducia nel fornitore, che deve offrire tutte le garanzie di proseguire nella sua evoluzione, adeguando di volta in volta il suo prodotto al rinnovarsi delle tecnologie, senza piantarci in asso, magari alla versione 0.

1/beta, del suo prodotto- le caratteristiche strutturali del linguaggio, gli strumenti che mette a disposizione e le sue doti fondamentali, ovvero: elasticità, flessibilità, completezza, affidabilità, autodocumentabilità, semplicità e chiarezza, manutenibilità, sicurezza, economicità (rendimento in termini di tempi di scrittura e debug), e via dicendo- la portabilità del codice su varie piattaforme hardware e sistemi operativi diversi.

Ognuno dei suddetti punti è più o meno importante e siccome non esiste il linguaggio ideale, come non esistono tante altre cose ideali, bisogna dare pesi diversi ai vari attributi, in base alle nostre specifiche esigenze.

Per esempio, in alcune circostanze la portabilità di un applicativo è fondamentale, mentre in altre situazioni può non essere un grave problema.

Teniamo anche presente che molto spesso esistono tools che alla più disperata ci potrebbero aiutare molto a migrare da una soluzione ad un'altra.

Così pure la manutenibilità non è sempre un requisito primario.

Tutti i programmi si possono manutere, ma chiaramente in un' applicazione rivolta a paghe e stipendi o a gestire una produzione assai variabile nel tempo, questo problema può essere cruciale, mentre in altri processi potrebbe passare in secondo ordine di importanza.

Al di là, poi, delle caratteristiche intrinseche di ogni linguaggio di programmazione c'è una valutazione altrettanto importante che deve essere fatta: la conoscenza già acquisita.

Se un linguaggio è già in uso da un certo team di lavoro, anche se non è il linguaggio migliore, probabilmente i risultati che loro riescono ad ottenere saranno ancora più validi di quelli conseguibili se passassero ad un nuovo linguaggio.

Bisogna anche pensare che l'approccio al problema della scelta è radicalmente diverso se visto dal lato degli interessi aziendali piuttosto che da quello del giovane che vuole affrontare la sua carriera.

L'azienda ha il dovere di scegliere strade sicure e soluzioni basate su linguaggi ben diffusi, in modo da non correre rischi di trovarsi in un vicolo cieco con l'investimento o di essere posta sotto ricatto dal fornitore di software esclusivo.

Il tecnico, invece, può anche seguire i suoi gusti personali e fare scelte di specializzazioni di nicchia, rischiando qualcosa in più, ma giocando la carta della richiesta sul mercato.

Oggi, per esempio, quanta gente al mondo sa programmare (o comunque dice di saper programmare) in codice HTML? Sicuramente in tantissimi.

Mentre quanti tecnici si sono specializzati in Postscript? O conoscono bene l'ASP o XML o Perl o Delphi o Visual RPG? Sicuramente molti di meno.

Ma ciò non significa che non ci sia una domanda anche per quelle conoscenze.

Un punto che secondo me è fondamentale nell'area delle applicazioni aziendali è la scelta di un linguaggio che sia il più possibile "problem oriented", ovvero che non richieda grandi sforzi di stesura del codice, ma che lasci al programmatore il tempo e la mente libera per potersi concentrare molto di più sulle reali esigenze aziendali e la loro traduzione in programmi gestionali, piuttosto che arrovellarsi il cervello sul perchè una certa attività del programma non funzioni.

Le applicazioni aziendali muovono un'infinità di dati e oggi sono tutte imperniate su database relazionali.

Il programmatore in questo campo deve dunque essere più un fedele e sensibile interprete ed esecutore della volontà direzionale o della sua società di servizi, che non un tecnico che si diverta a fare cose sofisticate al computer.

"Più è facile, meglio è", dovrebbe essere il motto.

Mentre purtroppo per la maggior parte degli hackers, (intesi come smanettoni), vale sempre il pensiero che "più è difficile e più mi diverto".

Ricky Spelta




ADA PL1
ALGOL PASCAL
APL PROLOG
ASSEMBLY RPG
BASIC SIMULA
C e C++ UNIX
COBOL Storia dei linguaggi
FORTRAN Caratteristiche dei linguaggi
JAVA Il linguaggio RPG
LISP

Introduzione alla Storia Computer e Informatica Cronologia ed evoluzione hardware
Protagonisti e inventori Storia Linguaggi programmazione e Sistemi Operativi
Storia computer IBM Storia computer Microsoft
Storia computer Apple Evoluzione Interfacce grafiche
Storia Internet e reti Storia Linux
Approfondimenti e articoli vari su computer e informatica Altri link sul tema dei vecchi computer
Breve corso di grafica al computer e ritocco fotografico Glossario dei termini informatici
Storia dei Giochi e videogiochi al Computer Corsi online e videocorsi
Racconto di Attilio Romita "Computer, Ordinateur, Elaboratori .
Forse Cervelloni!"
Selezione di libri su computer e informatica
guida della segretaria dalla A alla Z. A La guida della segretaria dalla A alla Z.
Agenda, archivio, documentazione, informatica, organizzazione, riunioni, telefono, viaggi

Bazin Dorothée, Broilliard Anne, 2012, Franco Angeli
Fondamenti di diritto dell'informatica Fondamenti di diritto dell'informatica
Farina Massimo, 2012, Experta
Internet spiegata a mamma e papà. Per fa Internet spiegata a mamma e papà.
Per fare a meno di amici, figli e nipoti
Ubuntu. Guida ufficiale. I portatili Ubuntu.
Guida ufficiale.
I portatili

Mako Hill Benjamin, Helmke Matthew, Burger Corey, 2012, Mondadori Informatica
Joomla! Guida all'uso Joomla! Guida all'uso
North Barrie M., 2012, Mondadori Informatica
Computer certification guide. Manuale pr Computer certification guide.
Manuale propedeutico al conseguimento della certificazione informatica europea Eipass

Schiano di Pepe Mauro, Caruso Marco, Ettari Diego, 2012, S.
TFA Fisico informatico matematico. Pacch TFA Fisico informatico matematico.
Pacchetto promozionale per la preparazione ai test di accesso. Con software di simulazione

2012, Edises
Fondamenti di informatica e programmazione web
Angelaccio Michele, Fanti Alessia, 2011, Texmat
Elementi di informatica per le professio Elementi di informatica per le professioni sanitarie
Antonetti Giovanni, 2011, Universitalia
Hacker contro hacker. Manuale pratico e Hacker contro hacker.
Manuale pratico e facile di controspionaggio informatico

Aranzulla Salvatore, 2011, Mondadori Informatica
Informatica. Informatica.
2008, Edizioni Giuridiche Simone
Informatica Informatica
Esposito Francesco, 2011, Edises
Informatica umanistica Informatica umanistica
2010, McGraw-Hill Companies
Informatica e crittografia attraverso gl Informatica e crittografia attraverso gli esercizi.
Una metodologia e una pratica didattica

Cecchi Alberto, Orazi Roberto, 2010, Liguori
Informatica. Insieme verso la conoscenza Informatica.
Insieme verso la conoscenza

Zaccarelli Guido, 2010, Athena Audiovisuals
Informatica testuale. Teoria e prassi Informatica testuale.
Teoria e prassi

Orlandi Tito, 2010, Laterza
Informatica industriale Informatica industriale
Fantechi Alessandro, 2009, CittàStudi
Informatica facile. Guida alle tecnologi Informatica facile.
Guida alle tecnologie dell'informazione e della comunicazione.
Manuale per il conseguimento della Certificazione informatica europea EIPASS®
Informatica per i beni culturali Informatica per i beni culturali
Rossignoli Nicola, 2010, Lampi di Stampa
Informatica di base Informatica di base
De Rosa Antonio, Di Capua Giuseppe, 2010, Edizioni Giuridiche Simone
Informatica applicata al Suono per la Co Informatica applicata al Suono per la Comunicazione Musicale.
Musical Digital Audio

Malcangi Mario, 2009, Maggioli Editore
Informatica teorica Informatica teorica
Mandrioli Dino, Spoletini Paola, 2011, CittàStudi
Informatica di base. Conoscere e compren Informatica di base.
Conoscere e comprendere le risorse digitali nella società del'informazione

Allegrezza Stefano, 2009, Simple
Informatica per tutti dalla chiocciolina Informatica per tutti dalla chiocciolina allo zip
Carucci Giuseppe, 2008, Simple
Informatica per le professioni infermier Informatica per le professioni infermieristiche e ostetriche
Terzoni Stefano, 2010, Hoepli
Informatica per l'economia Informatica per l'economia
cur.Clerici A., 2011, EGEA Tools
Segnala un sito redazione@windoweb.it
© 1999-2014
Tutti i diritti riservati
Invia le tue foto o i documenti che vuoi pubblicare