Articoli della categoria ‘Programmazione di base’

1. LA STORIA E L’EVOLUZIONE DEI LINGUAGGI DI PROGRAMMAZIONE

gennaio 19th, 2009
Commodore
Iniziamo questo cammino nel mondo della programmazione con un po’ di storia dei linguaggi di programmazione, cercando di evidenziare le evoluzioni che si sono avute in questo secolo dell’informatica, se lo si può definire così. Prima di continuare, però, è bene dare la definizione di linguaggio di programmazione, onde chiarire le idee ai lettori:
Linguaggio di programmazione: si dice linguaggio di programmazione un linguaggio formale, con una struttura semantica ben definita, atto ad essere utilizzato per il controllo di una macchina formale.
Una macchina formale è un qualsiasi insieme di componenti elettronici che può ricevere comandi in un codice stabilito. Generalmente è il computer, ma può essere considerata una macchina formale anche le ultime console o gli ultimi cellulari. Di conseguenza possiamo dire che ci possiamo servire di un linguaggio di programmazione per comandare la macchina secondo i nostri desideri.
Ritornando ai linguaggi di programmazione possiamo senz’altro affermare che l’evoluzione di cui è stata protagonista la materia è stata un’evoluzione che ha preteso di allontanarsi sempre più dal livello della macchina (ovvero il livello 0, come vedremo successivamente) e di avvicinarsi sempre più all’uomo. Testimone di questo fatto può essere la visione di un linguaggio come Python che ha una semantica completamente in inglese. Infatti nel corso degli anni si è stati sempre più tesi ad agevolare il lavoro del programmatore. Se prima per creare un programma con una discreta interfaccia grafica serviva scrivere centinaia e centinaia di righe di codice, oggi ne bastano poche per crearne una molto più user-friendly. Nel caso poi dei linguaggi visuali, che sono quelli che oggi stanno prendendo il sopravvento per la programmazione di tutti i giorni, non serve nessuna riga di codice: l’interfaccia si crea con dei semplici click del mouse.
Creare un’interfaccia così in un passato piuttosto vicino (non più di 25 anni fa) non era nemmeno immaginabile. Nell’informatica degli anni 80 erano protagoniste le righe di un sistema operativo come DOS ma di interfacce grafiche (ovvero GUI: graphical user interface ) neanche l’ombra. Solo qualche anno dopo si è sentito il bisogno di attirare persone al mondo dell’informatica. E, giacchè anche l’occhio vuole la sua parte, sono nate le GUI, con le prime icone che mascheravano i comandi del sistema operativo interno.
Programmare con i computer degli anni 80 non era impossibile. Sicuramente non era semplice come oggi, ma non era impossibile. Uno dei primi linguaggi di programmazione è stato sicuramente lo shortcode che poi fu sostituito dall’assembly che, con le sue istruzioni, ha fatto la rappresentazione emblematica del linguaggio macchina. Le uniche istruzioni del controlo del flusso era rappresentata dai salti condizionati, ovvero i go to.
I linguaggi che sono ancora famosi ai giorni nostri, invece, nascono tra gli anni ’60 e ’70. Parliamo dei celebri FORTRAN, che si occupa principalmente di risolvere problemi matematici. Non a caso è annoverato nella lista dei linguaggi appartenenti al paradigma Logico/Funzionale. Dal celebre Fortran deriverà un linguaggio di cui tutt’oggi respiriamo ancora i bit: BASIC, alla metà degli anni 60 (1964, 10 anni dopo il Fortran).
Basic rappresenta uno dei linguaggi di programmazione più usati dell’epoca. Questo perchè il linguaggio rappresentava una semantica molto vicino all’inglese. Infatti bastava sapere un po’ di inglese e si sapeva programmare in Basic. Un altro punto di forza di questo linguaggio fu la capacità di ridurre l’uso del go to introducendo i costrutti di selezione, iterazione condizionata e non. Parliamo dei celebri cicli IF-THEN-ELSE, WHILE, CASE / SWICH e del ciclo FOR.
Un altro linguaggio di cui vale sicuramente la pena parlare è il LISP. Questo linguaggio, annoverato nel paradigma Logico/Funzionale è nato nel 1959, ed è tutt’oggi utilizzato in quegli studi sull’intelligenza artificiale.
Nel 1970 nasce uno dei linguaggi di programmazione più famoso, e usato tutt’oggi a scopo didattico: Pascal. Esso tra i suoi meriti ha senz’altro quello di essere strutturato, ovvero ha la capacità di poter ordinare il codice utilizzando le apposite strutture chiamate procedure e funzioni.
Due anni dopo (1972) nasce il linguaggio di programmazione che segnerà la storia dell’informatica: il C (che successivamente divenne C++ con l’implementazione di poter scrivere codice orientato agli oggetti). Il C viene utilizzato tutt’oggi insieme all’assembly nella creazione dei sistemi operativi, e nella creazione di tantissime applicazioni, anche se è un linguaggio totalmente procedurale.
Oggi, con l’avvento dei linguaggi visuali, questi linguaggi sono passati in secondo piano per chi fa applicazioni tutti i giorni. Chi infatti si metterebbe a scrivere un applicazione per un cliente in C++ ? E’ contro producente. Per questa esigenza sono nati i linguaggi visuali, quei linguaggi che automatizzano la creazione delle GUI, lasciando al programmatore la sola fantasia.
Con questi righi chiudo questo primo capitolo. Non vi spaventate per la lunghezza. Sono stato molto sintetico in quanto a noi non interessa la storia della programmazione vera e propria. Dal prossimo capitolo inizieremo ad entrare nel concetto della programmazione. Per ogni chiarimento commentate l’articolo.

(continua…)

Condividi questo articolo:
  • email
  • Print
  • PDF
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • Blogplay
  • Add to favorites
  • BarraPunto
  • blogmarks
  • Diggita
  • Live
  • MSN Reporter
  • MySpace
  • Reddit
  • RSS
  • Segnalo
  • Slashdot
  • Technorati
  • Twitter
  • Yahoo! Bookmarks
  • Yahoo! Buzz

4. IL RAPPORTO HARDWARE – SOFTWARE

gennaio 18th, 2009

Nel capitolo precedente abbiamo parlato dei livelli dei linguaggi di programmazione. Si è visto come la suddivisione in livelli avviene. Infatti quando parliamo di alto o basso livello non parliamo delle caratteristiche tecniche di un linguaggio ma, invece, della sua distanza dalla macchina. Per distanza non indichiamo i centimetri che ci distano dal computer. Immaginavo già qualcuno che andava a prendere il metro per vedere a che livello era. Risate a parte, per distanza si intende la distanza di semantica dal linguaggio che capisce il computer: il linguaggio binario. Nel corso di questo capitolo parleremo del rapporto che c’è tra software e hardware, toccheremo le definizioni di compilatore ed interprete, definizioni necessarie per proseguire in questo cammino verso la programmazione.

4. Il rapporto Hardware – Software

Bene o male, sappiamo tutti la differenza che occorre tra l’hardware e sotware. Nonostante ciò è bene ripetere questa definizione che spesso da nascita alle confusioni più disparate:

Hardware: Tradotto in inglese significa ferraglia. L’hardware rappresenta lo scheletro della macchina, tutti i componenti fisici che materialmente si possono toccare sono i componenti hardware. Un hardware può essere una memoria RAM, un Processore, ma anche la USB Pen è un dispositivo hardware.

Software: Il software rappresenta i programmi, ovvero quell’insieme di programmi che sono in grado di far funzionare una macchina programmabile (il pc, un cellulare ecc..).

Potrebbe essere spontanea la domanda: a me programmatore cosa può interessare il rapporto che intercorre tra il software e l’hardware di una macchina? Alla domanda si può rispondere in modo molto semplice. Se nel capitolo precedente abbiamo detto che la prima cosa che un programmatore deve sapere è il cosa programmare, al secondo posto deve sicuramente mettere in conto le potenzialità che il suo programma ha bisogno per funzionare. Un programma occupa dello spazio sull’hard disk, e per funzionare utilizza la memoria RAM.

Sapere quindi che un programma andrà su un computer che non riuscirà ad eseguire quelle istruzioni è obbligatorio, perchè si potrà distribuire un programma che occupi meno risorse, oppure nel peggiore dei casi, si avvisa l’utente che quel programma non è designato per quel determinato computer. Ecco perchè è stato reso obbligatorio specificare le caratteristiche di un programma, mettendone in evidenzia sopratutto le risorse che richiede per un corretto funzionamento.

Smentiamo poi chi vuole mettere su piani diversi queste due componenti che caratterizzano un compuer funzionante. Dire che l’hardware ha una valenza maggiore del software o viceversa è poco corretto. È come dire che il binario sinistro di un treno è più importante di quello destro. Hardware e Software camminano in modo parallelo, poichè se uno manca, l’altro automaticamente non serve a niente. Provate voi ad utilizzare un computer senza il sistema operativo e senza il BIOS, oppure prendetevi in mano un cd. A cosa serve? Diventano, l’uno senza l’altro, un insieme di cose inutili, buone solo ad essere cestinate.

Più volte nel corso dei capitoli precedenti abbiamo parlato del codice binario. Il computer è in grado, infatti di comprendere solamente questo codice formato da numeri, da 2 numeri: lo zero e l’uno. Lo zero indica un segnale OFF, FALSO, NO mentre la cifra uno indica segnali come ON, VERO, SI. Al computer quindi non potremo mai parlare in inglese, state sicuri che non ci degnerà neanche della sua attenzione. Tuttavia imparare il linguaggio binario è davvero molto difficile. Ed è proprio per l’esigenza di scrivere semplicemente i programmi che nascono due strumenti che fanno si che oggi programmare sia molto semplice: i compilatori e gli interpreti. Diamone la definizione:

Compilatore: Si definisce compilatore quel programma che traduce simultaneamente tutte le righe di un codice, in istruzioni binarie, che possono essere comprese dal computer. Si definiscono poi linguaggi compilati, quei linguaggi che utilizzano questa tecnica.

Anche se non informatica, un esempio di compilazione è una traduzione. Infatti il compilatore non fa altro che tradurre le istruzioni di un linguaggio di programmazione in istruzioni del linguaggio macchina.

Interprete: Si definisce interprete quel programma che traduce un’istruzione alla volta dal linguaggio di programmazione al codice binario. Si definiscono linguaggi interpretati quei linguaggi che lavorano in questa logica.

Anche qui possiamo fare un esempio per capire questa logica. Immaginate un convegno ed un interprete che fa la traduzione parola per parola di quello che dice un’altra persona. Questa logica lavora, su grandi linee, in questo modo.

Chiudiamo qui questo quarto capitolo. Dal prossimo capitolo inizieremo ad entrare nell’ottica del problema, guardando la struttura di esso, delle risoluzioni. In particolare inizieremo a parlare dell’algoritmo, che sta alla base di tutta la programmazione. Come al solito se avete problemi non esitate a commentare.

Lezione precedente Lezione Successiva

(continua…)

Condividi questo articolo:
  • email
  • Print
  • PDF
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • Blogplay
  • Add to favorites
  • BarraPunto
  • blogmarks
  • Diggita
  • Live
  • MSN Reporter
  • MySpace
  • Reddit
  • RSS
  • Segnalo
  • Slashdot
  • Technorati
  • Twitter
  • Yahoo! Bookmarks
  • Yahoo! Buzz

3. I LIVELLI DEI LINGUAGGI DI PROGRAMMAZIONE

gennaio 17th, 2009

Nel capitolo precedente si è parlato, in forma tuttavia molto generica, dei paradigmi di programmazione. Si è detto cosa erano, a che servivano e come classificano il linguaggio di programmazione. Scegliere un paradigma piuttosto che un altro non dipende dal programmatore e dal paradigma che ci sta più simpatico. Bensì il paradigma è scelto in base al programma che dobbiamo portare a termine. Se sarà un programma semplice ci basterà anche solo il paradigma imperativo, se lo vogliamo fare con un taglio più reale ci serviremo del paradigma ad oggetti. Insomma, se credete che la cosa più difficile per la creazione di un software sia la scrittura vi sbagliate di grosso. Il lavoro di progettazione è quello che determinerà il successo o meno di un software.

Ancora per un capitolo, questo, parleremo dei linguaggi di programmazione. Concluso questo capitolo i linguaggi di programmazione non saranno più il centro dei nostri studi, ma solamente un punto di riferimento. Nel corso del terzo capitolo parleremo della suddivisione dei linguaggi di programmazione non per paradigma, ma per lontananza dalla macchina.

3: I Livelli dei linguaggi di programmazione

I linguaggi di programmazione possono essere suddivisi in categorie che vengono chiamati livelli. Esistono vari modi di classificare un linguaggio di programmazione. Il primo è, come detto nel precedente capitolo, per paradigma, l’altro è per distanza dalla macchina. Preferendo la seconda scelta si ha una visione generale di tutti i tipi di linguaggi, poichè generalmente quelli meno user-friendly sono quelli che stanno ai livelli più bassi, mentre quelli che hanno un interfacciamento verso l’utente più gradevole e curato sono quelli che stanno ai livelli più alti.

Dividiamo i linguaggi di programmazione in ben 5 classi definite livelli. I livelli partono dal livello 0 (che indica il livello fisico della macchina, e in programmazione indica il livello del codice binario) al livello 4, dove troviamo i fogli elettronici che non sono dei veri linguaggi di programmazione ma hanno il pregio di poterci introdurre alla programmazione.

Entriamo ora nella descrizione dei livelli:

LIVELLO BASSO: è il livello della macchina. Per natura una macchina digitale importa i segnali in un sistema binario, ovvero usa solo le cifre 0 e 1; 0 sta per spento, 1 per acceso. Il codice binario è molto difficile da imparare e in pochi lo sanno.

LINGUAGGIO ASSEMBLER: questo linguaggio varia da macchina a macchina e da le istruzioni al microprocessore. È indispensabile utilizzare questo linguaggio per la progettazione dei sistemi operativi. Questo linguaggio si discosta dalla logica binaria avvicinandosi a quella umana, ma è ancora molto lontana dalla logica dell’uomo.

LINGUAGGIO AD ALTO LIVELLO: linguaggio che si discosta dalla logica assembler, e si avvicina molto alla logica umana, e si avvicina molto anche per sintassi, poiché molti comandi assomigliano alla nostra lingua parlata. Esempi di questi tipi di linguaggi sono: C e PASCAL.

LINGUAGGI AD ALTISSIMO LIVELLO: sono i linguaggi che sono molto molto lontani dalla logica della macchina avvicinandosi molto di più alla logica dell’utente. Molte volte le parole chiavi del linguaggio sono molto simili alla parlata di tutti i giorni. A questa categoria appartengono anche i linguaggi visuali; questi permettono una costruzione semplificata dell’interfaccia. A questa categoria di linguaggi appartiene il Visual Basic. Altri linguaggi come C++ è lo stesso orientato alla costruzione di interfacce, ma mediante codici sorgenti. Ci sono tuttavia dei programmi che semplificano questa cosa, rendendo il c++ creatore di interfacce.

FOGLI ELETTRONICI: non sono dei veri e propri linguaggi di programmazione, anzi, non lo sono per niente. Però se prima di iniziare con la programmazione ci dedicassimo qualche mese ai fogli elettronici vedremo che hanno molto in comune con i linguaggi veri e propri. In particolare questi programmi imparano a scrivere le istruzioni, in particolare quelle matematiche.

Chiudiamo questo articolo con il livello dei fogli elettronici. Se avete dubbi o consigli da dare commentate pure l’articolo. Nel prossimo capitolo parleremo del rapporto che esiste tra la macchina ed il software.

Lezione precedente Lezione Successiva

(continua…)

Condividi questo articolo:
  • email
  • Print
  • PDF
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • Blogplay
  • Add to favorites
  • BarraPunto
  • blogmarks
  • Diggita
  • Live
  • MSN Reporter
  • MySpace
  • Reddit
  • RSS
  • Segnalo
  • Slashdot
  • Technorati
  • Twitter
  • Yahoo! Bookmarks
  • Yahoo! Buzz

GUIDE ALLA PROGRAMMAZIONE DI BASE (Introduzione)

gennaio 15th, 2009

 

Codice binario

 

 

Fino ad oggi ci siamo sempre limitati ad utilizzare il computer per quello che è e per quello che fa, ma mai ci hanno detto che il computer è in grado di fare molto ma molto di più. Quello che cercheremo di fare nel corso di queste guide è di farvi abbandonare la concezione utentistica del computer, per farvi avvicinare a quella che è la programmazione di base.

Giorno per giorno utilizziamo il computer per andare su internet, per scrivere documenti, per ascoltare musica e quant’altro. Ma rimaniamo sempre semplici utenti. La nostra ambizione non sarà farvi programmatori, poichè per diventare programmatori ci vogliono studi più approfonditi che tratteremo su questo sito con il passare del tempo. Quello che ci proponiamo di fare subito, invece, è quello di farvi entrare nell’ottica di un programma. Cioè non esserne più semplici utilizzatori, ma capirne anche i meccanismi che ne sono all’interno, utilizzando semplicemente la logica del problema.

Ad esempio: consideriamo il semplice programma calcolatrice. Questo è stato creato per risolvere i problemi elementari legati alla somma, sottrazione, moltiplicazione e divisione, se vogliamo considerare una calcolatrice semplice. Nel corso di questa guida, che sarà pubblicata a capitoli, vi faremo arrivare alla logica di base che sta nella creazione di un programma.

Nel corso della nostra guida toccheremo questi aspetti:

  • La storia e l’evoluzione dei linguaggi di programmazione
  • I paradigmi di programmazione
  • I livelli dei linguaggi di programmazione
  • Macchina – Programma
  • La concezione algoritmica del problema
  • L’algoritmo: dalla definizione alla creazione
  • Le istruzioni di input/output
  • Le operazioni
  • Le strutture di selezione
  • Le strutture di iterazione condizionata
  • Le strutture di iterazione
  • Variabili complesse
  • Dalla variabile all’Array
  • Array monodimensionali: i vettori.
  • Array bidimensionali: le matrici.
  • La necessità di strutturare il codice
  • La procedura
  • La funzione
  • Un particolare tipo di funzione: la funzione ricorsiva
  • Conclusioni

Potrete notare che non è stato fatto riferimento a nessun linguaggio di programmazione. Ebbene per ora vogliamo solamente darvi l’idea della programmazione. Molti siti partono direttamente con l’insegnamento di un linguaggio di programmazione, ma spesso si ci dimentica che alla base di un linguaggio di programmazione c’è la programmazione!

Chiudo qui questa introduzione alla guida. Vi do appuntamento al primo capitolo. Se avete consigli o dubbi commentate pure.

 

(continua…)

Condividi questo articolo:
  • email
  • Print
  • PDF
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • Blogplay
  • Add to favorites
  • BarraPunto
  • blogmarks
  • Diggita
  • Live
  • MSN Reporter
  • MySpace
  • Reddit
  • RSS
  • Segnalo
  • Slashdot
  • Technorati
  • Twitter
  • Yahoo! Bookmarks
  • Yahoo! Buzz