Introduzione alla Programmazione © Giselda De Vita - 2015 1 Sulla base dell’ambito in cui si colloca il problema da risolvere, è opportuno adottare un linguaggio piuttosto che un altro: ² Calcolo scientifico: Fortran, C ² Intelligenza Artificiale: Prolog, Lisp, C ² Applicazioni gestionali: C++, C#, Java, Delphi ² Sistemi operativi: Assembler, C, C++ ² Applicazioni visuali: C++, Java, Visual Basic, C# ² Applicazioni Web: Java, PHP, ASP © Giselda De Vita 2 Definizione di programmare Programmare: fornire al computer una sequenza di istruzioni da eseguire per ottenere un certo risultato, ovvero un programma. Fonte: Glossario informatico http://www.pc-facile.com/glossario/processo/ © Giselda De Vita 3 Definizione di programmatore Il programmatore è il professionista che scrive programmi utilizzando un linguaggio di programmazione. © Giselda De Vita 4 "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." Martin Fowler, Refactoring: Improving the Design of Existing Code © Giselda De Vita 5 Un buon programmatore Caratteristiche comuni a un buon programmatore: ü passione ü autodidattica ed amore per l’apprendimento ü intelligenza ü esperienza ü varietà tecnologica ü curiosità ü fortuna… © Giselda De Vita 6 Linguaggio Macchina Linguaggio ad alto livello C++ Java VB .NET Linguaggio Macchina Hardware Linguaggio macchina – E’ il linguaggio compreso dai computer. Tutti i programmi vengono eseguiti da un computer in linguaggio macchina. Ogni sistema Operativo ha il suo linguaggio macchina Ø Windows Ø Linux Ø Macintosh © Giselda De Vita 7 Linguaggi ad alto livello Linguaggio ad alto livello – Linguaggio ad alto livello C++ Java VB .NET Linguaggio Macchina Hardware Un linguaggio di programmazione comprensibile. Permette ai programmatori di creare eseguibili per i computer. Un linguaggio ad alto livello deve essere trasformato in linguaggio macchina per essere eseguito © Giselda De Vita 8 Compilatori e Interpreti Esistono due modi per trasformare un programma scritto in linguaggio ad alto livello in linguaggio macchina: 1. Usando un compilatore 2. Usando un interprete Codice sorgente – Codice scritto da un programmatore con un linguaggio di programmazione (linguaggio ad alto livello). © Giselda De Vita 9 Compilatori Compilatore: Un programma che trasforma il codice sorgente in un altro formato (linguaggio macchina) Linguaggio ad alto livello Source code Linguaggio Macchina Windows compiler Windows code Windows Linux compiler Linux code Linux Macintosh compiler © Giselda De Vita Macintosh code 10 Macintosh Compilatore • Un compilatore, in informatica, è un programma che traduce una serie di istruzioni scritte in un determinato linguaggio di programmazione (codice sorgente) in istruzioni di un altro linguaggio (codice oggetto). • Questo processo di traduzione si chiama compilazione. (fonte Wikipedia) © Giselda De Vita Fonte immagine: http://www.okpedia.it/compilatore 11 Interpreti Interprete – Un programma che traduce ed esegue il codice scritto con il linguaggio ad alto livello Linguaggio Macchina Linguaggio ad alto livello Source code Interprete Codice per Windows, Linux e Macintosh © Giselda De Vita Windows, Linux and Macintosh 12 Interprete L’ Interprete è un programma in grado di eseguire altri programmi a partire dal codice sorgente. L’interprete si differenzia dal compilatore in quanto non crea un eseguibile, ma ha il compito di tradurre ed eseguire le istruzioni una alla volta. © Giselda De Vita - 2015 13 Compilatore vs. Interprete I programmi compilati: Vantaggi I programmi sono veloci Svantaggi Dipendenti dal SO – I programmi lavorano solo per il sistema Operativo per cui sono stati sviluppati Esempio linguaggi compilati: C,C++ © Giselda De Vita 14 Interpreti vs. Compilatori Vantaggi Indipendenti dal SO Non necessitano di una compilazione globale ad ogni modifica. Svantaggi Gli interpreti devono essere installati sulla macchina su cui il programma deve essere eseguito. Esecuzione piu’ lenta rispetto ai compilati. Si possono usare servizi presenti in tutte le piattaforme. Esempio linguaggi interpretati: Perl, Visual Basic © Giselda De Vita 15 I nuovi linguaggi (compilati e interpretati) Ø I linguaggi di programmazione più recenti (Java e i linguaggi della piattaforma .NET) sono sia compilati che interpretati Ø I file che contengono il codice sorgente di un programma sono compilati Ø Il file compilato non contiene codice specifico di un determinato SO Ø Per eseguire il programma compilato è necessario un interprete, che traduca il codice del processore virtuale in istruzioni del processore reale (Java Virtual Machine, Framework .NET) © Giselda De Vita 16 La programmazione è una scienza esatta? © Giselda De Vita - 2015 17 la programmazione è una scienza esatta? naturalmente SI (approccio positivista) perché le conseguenze di ogni singola istruzione possono essere determinate e valutate, quantomeno in linea di principio © Giselda De Vita 18 la programmazione è una scienza esatta? naturalmente NO (approccio estetico) perché è impossibile determinare e valutare tutte le conseguenze di ogni istruzione in relazione a tutte le altre Fonte: http://www.feaci.it/filosofia/leggi_programmazione.htm © De Giselda ® Giselda Vita De Vita 19 Java: compilato e interpretato Java è sia compilato che interpretato I file che contengono il codice sorgente di un programma Java (.java) sono compilati (javac) Il file generato ha lo stesso nome del sorgente ed estensione .class Il file compilato non contiene codice oggetto specifico di un determinato processore ma un bytecode Il bytecode non è specifico per alcun processore poiché Java è un linguaggio multipiattaforma Per eseguire il bytecode è necessario un interprete, che traduca il codice oggetto (bytecode) in istruzioni del processore in uso (Java Virtual Machine) © Giselda De Vita 20 Fonte: http://twiki.di.uniroma1.it/pub/Metod_prog/RS_L01_storia/storia.html © Giselda De Vita - 2015 21 Linguaggi di programmazione Linguaggi maggiormente conosciuti anni ‘60 metà anni ’60 1974 COBOL BASIC C 1991 1994 VB Java metà anni ’50 1968 1990 FORTRAN Pascal C++ Linguaggi di Programmazione Procedurale © Giselda De Vita Linguaggi Ibridi 2000 C#, VB.NET Linguaggi Orientati agli Oggetti 22