Cosa significa programmare? Come si fa a “dire” ai computers quello che devono fare? Se sono veramente stupidi, allora come fanno a prendere delle decisioni? Perché un computer può battere Kasparov a scacchi (link) anche se il programmatore che l’ha programmato non sa farlo?
Queste sono alcune tra le domande che vengono poste più spesso da chi ha pressochè nessuna competenza in ambito di programmazione.
Questa prima lezione è dedicata a loro, vedremo insieme cosa c’è oltre lo specchio del comune utilizzatore del computer e daremo una sbirciata al, ancora per poco, misterioso mondo della programmazione.
Un pò di storia
La preistoria
Anche se può sembrare strano, la programmazione nasce ben prima dell’avvento dei computer, nasce infatti nell’epoca della rivoluzione industriale ad opera di una donna di nome Ada Augusta Lovelace (link). Ada Lovelace creò il primo programma per la macchina calcolatrice inventata da Charls Babbage (link), un matematico del 1800 che per primo si rese conto che le macchine potevano essere costruite in modo da non avere un comportamento prestabilito (di solito si usa dire “comportamento deterministico”, vedi Nota 1) ma in modo tale che le azioni compiute dalla macchina dipendessero in qualche modo con l’interazione con l’esterno. Nello specifico la macchina calcolatrice di Babbage utilizzava un sistema già utilizzato nei telai da tessitrice, utilizzava infatti delle schede di cartone perforate che venivano “lette” dalla macchina e, a seconda di dove si trovavano i buchi, venivano eseguite delle operazioni piuttosto che altre. Più o meno quello che sarebbe successo poco tempo dopo con i pianoforti automatici Welte-Mignon (link).
Nota 1: un sistema si dice deterministico quando il suo stato finale e univoamente identificato dal suo stato iniziale.
La storia moderna
Nessuno prestò attenzione alle “macchine programmabili” fino agli anni 40 quando l’inghilterra, entrata in guerra contro i tedeschi, capì che se voleva sconfiggere l’esercito nemico doveva riuscire a decriptare le sue comunicazioni radio. Purtroppo tali comunicazioni erano cifrate con una ingegnosa macchina simile come struttura alle vecchie macchine da scrivere e molto complessa chiamata “enigma” (link). L’ unica strada per decifrare queste comunicazioni era un enorme lavoro di calcolo manuale così lungo che una volta decriptata la comunicazione sarebbe stata sicuramente obsoleta.
In quegli anni il matematico Alant Turing (link) stava lavorando ad un problema completamente diverso: stava cercando, insieme ad altri matematici del suo tempo, di dare risposte a domande come “la matematica sarà mai contraddittoria” e “se dimostro un teorema posso essere sicuro che sia vero?” e per far questo ideò la sua “macchina di Turing” una sorta di macchina ideale, non costruibile, in grado di calcolare in linea teorica qualsiasi problema. Queste competenze gli assicurarono un posto a Berkley Park per la costruzione della macchina, questavolta reale, per la decifratura del codice tedesco. Turing riuscì nell’impresa costruendo la “bomba” di fatto il primo “computer” della storia e permise agli inglesi di vincere la seconda guerra mondiale.
La storia contemporanea
Negli anni della seconda guerra mondiale e con gli studi compiuti da A. Turing nasceva quindi una nuova scienza, l’informatica. “Informatica” nella sua accezione originale del termine, di teoria dell’informazione. Così se non vi ha sopreso scoprire che la programmazione è nata prima del computer, sappiate che ciò vale anche per l’informatica.
Da quegli anni l’informatica è sempre stata sotto l’occhio attendo degli uomini di scienza, infatti è ormai diventata una disciplina formalizzata e rigorosa ed è un’area dove confluiscono competenze diverse. L’informatica di oggi è quella che è grazie a tantissimi matematici, logici, linguisti…
i computer che oggi abbiamo nelle nostre scrivanie, i cellulari che abbiamo nelle nostre tasche, sono quello che sono grazie ad uomini straordinari che hanno costruito una nuova scienza formale prima che per questa fosse prevista alcuna applicazione pratica.
Programmatori ai giorni nostri
Cosa c’è dentro un computer?
Dentro un computer per quel che ci riguarda ci sono le stesse cose che stanno dentro ad una calcolatrice e dentro un distributore di sigarette. Quello che c’è dentro un pc è stato scoperto da un’altro matematico del passato, John von Neumann che intorno agli anni 40 scoprì che, se mai si fosse riusciti a costruire un computer, non si sarebbe potuto fare a meno di trovare al suo interno questi componenti:
- Memoria. Nei computer si chiama memoria RAM
- Unità che esegue i calcoli. Nei computer si chiama processore o CPU
- Input/Output. Nei computer sono rispettivamente la tastiera e lo schermo
La cosa strabiliante è che questo semplice elenco è valido adesso, è stato valido nel passato e sarà valido probabilmente per sempre, perchè è il minimo indispensabile che permette di svolgere dei compiti.
Ma anche l’uomo è in fondo una macchina che esegue compiti e quindi, come tale, deve avere una memoria, una cpu e dispositivi di input output.
Supponiamo ad esempio di chiedere ad un uomo (Bob) di svolgere al posto nostro una complessa moltiplicazione e fornirci il risultato. In qualche modo dovremo fornire a Bob quali sono i numeri da moltiplicare, scritti su un foglio oppure a voce, ma questo presuppone che Bob abbia dei dispositivi di INPUT, come i suoi occhi per leggere il foglio o le orecchie per sentire la nostra voce. Se fosse completamente sprovvisto di dispositivi di INPUT non potrebbe certo portare a termine il nostro compito.
Quando Bob avrà ricevuto i due numeri ripescherà nella sua memoria quali erano le istruzioni dettate dalla maestra per eseguire una moltiplicazione, se non avesse memoria sicuramente non sarebbe in grado di farlo.
Veniamo adesso alla cpu, i più zelanti diranno “la cpu è il cervello!” mentre invece devo deludervi perché non è così semplice, in fondo che cosa stiamo realmente calcolando quando svolgiamo a mente un prodotto come 3×3 ? stiamo calcolando o stiamo semplicemente ricordando che il risultato è 9 ? Non voglio addentrarmi in problemi di questo tipo, ma va detto che la cpu, nell’elenco di von Neumann, è solo qualcosa che velocizza il calcolo, ma potrebbe essere sostituita da ulteriori accessi alla memoria. (non a caso la macchina di Touring ne era sprovvista).
Pensiamo sempre a Bob impegnato nella sua lunga moltiplicazione, se possedesse una cpu allora potrebbe svolgere velocemente operazioni semplici come 3×3, mentre se ne fosse sprovvisto, anche per queste semplici operazioni dovrebbe ripescare dalla memoria qual’era la procedura corretta per ricavare il risultato.
Astrazione
Il precedente esempio ci è utile per introdurre un concetto fondamentale nell’ambito della programmazione, sto parlando dell’astrazione.
Abbiamo visto che la cpu può essere considerata un’unità per svolgere in modo rapido calcoli semplici. Supponiamo di essere ingegneri e che ci venga commissionata una cpu in grado di calcolare “il doppio di un numero più 10”, e abbiamo due cpu, una sa fare “il doppio di un numero”, l’altra sa fare “aggiungi 10”. Se le colleghiamo insieme ecco che abbiamo ottenuto una nuova cpu, che sa fare “il doppio più 10”. Avremmo potuto ottenere lo stesso risultato in infiniti altri modi con altre cpu, per esempio con una che fa “il doppio” e due che fanno “aggiungi 5” ma quello che conta è che alla fine abbiamo una cpu che fa “il doppio più 10”. Indipendentemente dall’implementazione interna le due cpu realizzate in questo modo sono uguali, intercambiabili e possono essere utilizzate allo stesso modo.
Possiamo fornire al nostro committente o l’una o l’altra soluzione e per lui sarà indifferente, perchè al suo livello di astrazione, la nostra cpu è solo una “black box” che esegue “il doppio, più 10”.
Questo concetto è alla base dell’astrazione ed è un concetto con cui i programmatori hanno a che fare tutti i giorni. Io so che la cpu dentro il mio portatile sa fare un milione di cose, ma non è compito mio sapere nel dettaglio come questi compiti vengano svolti.
Microprogrammazione
Fino ad ora abbiamo parlato soltanto di cpu teoriche, mentre invece nei nostri computer le cpu sono fisiche, tangibili e funzionano ad elettricità. Il loro funzionamento interno è molto complicato ma la logica che ci sta alla base è abbastanza semplice da essere affrontata in questo articolo.
La cpu funziona a corrente elettrica, e sono previsti solo due livelli distinti di corrente, di solito sono zero e cinque volt. Agli albori dell’invenzione delle cpu ci si ricordò di un matematico di nome George Boole che aveva inventato un modo di scrivere tutti i numeri e fare le più comuni operazioni utilizzando solo due simboli, di solito indicati con 1 e 0. Fino ad allora inutilizzata, l’agebra di Boole, si rivelò invece utilissima nel fornire una logica al funzionamento delle cpu.
La presenza/assenza di corrente poteva essere interpretata come uno dei due simboli dell’algebra di Boole ed ecco quindi che una sequenza come 101 (si chiama sequenza binaria perchè composta da sole due cifre ed equivale al valore cinque) poteva essere inserita nella cpu semplicemente portando la corrente a cinque Volt, poi a zero Volt e ed infine nuovamente a cinque Volt.
Quindi parlare di zero e uno è un modo più astratto per parlare di corrente a zero volt e cinque volt.
Le cpu sono di forma e struttura diverse, ma tutte le cpu hanno dei pins, visibili in questa foto: (questa è una vecchia cpu, in quelle attuali in pins sono meno visibili)
Il funzionamento interno è tale che data una sequenza di zeri e uno (0 volt e 5 volt) su un pin, riusciamo ad ottenere su un altro pin un’altra sequenza di zeri e uno (sempre 0 volt e 5volt) che se interpretata correttamente corrisponde ad esempio al doppio del numero dato in ingresso.
Un esempio? Fornendo su un pin la sequenza 101 (che per noi rappresenta 5) su un altro pin potremmo leggere la sequenza 1010 (che per noi rappresenta 10). Ecco che quindi la cpu con la sola elettricità è stata in grado di svolgere l’operazione “per due”.
Ovviamente questo esempio non è reale, il funzionamento di una cpu è molto più complesso di così ma questo è il principio che ci sta alla base. Per avere una idea della velocità degli attuali processori basti sapere che queste variazioni di corrente tra 0 volt e 5 volt si susseguono con una velocità di circa 3 miliardi in ogni secondo.
Quando si iniziarono a progettare le prime cpu probabilmente ci si stancò presto di avere un pin per fare la somma, uno per fare la sottrazione etc ed ecco che iniziò la microprogrammazione. Si realizzarono le cpu in modo tale che i dati in input potessero essere forniti sempre sugli stessi pin, mentre su un altro pin si forniva un codice che identificava l’operazione da eseguire. Ad esempio fornire un codice come 101 su questo pin significava “fai la somma dei numeri in ingresso” mentre ad esempio 111 poteva significare “fai la differenza”. Nasce quindi il concetto di “operatore decisionale“, la cpu è in grado di svolgere due compiti diversi e separati e decide quale eseguire in base ad un valore letto su un pin. Questo concetto sarà fondamentale nello sviluppo dei futuri linguaggi di programmazione, senza di esso non si può scrivere nessun programma, senza l’operatore decisionale i programmi non sarebbero altro che una ripetizione, sempre identica, delle medesime operazioni e questo vìola anche il concetto teorico di algoritmo e quindi di programma!
Questo è il più basso livello di programmazione, si chiama microprogrammazione ed è un compito riservato ai progettisti di cpu ed è anche il primo livello di astrazione. Da grezzi valori di corrente, si inizia a parlare di numeri e di operazioni su di essi. A questo livello possiamo dire “somma 2 + 3” senza preoccuparci di quale sia il livello di corrente associato a uno, a zero e altri problemi di questo tipo.
Assembly
Dalla microprogrammazione in poi è tutta una questione di astrazione e traduzione. Ci si rese conto che memorizzare istruzioni come 101 e 111 per effettuare la somma e la differenza di due numeri era assolutamente poco intuitivo, si ricorse quindi ad un altro strato di astrazione, il linuguaggio assembly (link). In tale linguaggio le istruzioni in binario vengono sostituite da parole chiave mnemoniche come ADD o SUB, rendendo così il lavoro dei programmatori più semplice.
La cpu però continua a riconoscere soltanto i comandi forniti come stringhe binarie, ed ecco che quindi interviene un programma che si chiama assembler il cui compito è appunto quello di tradurre le parole chiave del linguaggio assembly come ADD e SUB nelle rispettive stringhe binarie adatte alla cpu.
Il linguaggio assembly oggi non è sicuramente il linguaggio più comune, realizzare un programma moderno scrivendolo tutto in assembly sarebbe un’opera folle, ma è utilizzato ancora per particolari programmi che hanno bisogno di un accesso quasi diretto alla cpu.
Linguaggi di alto livello
I linguaggi come l’assembly vengono di norma definiti “di basso livello” per via della loro posizione relativamente bassa nella gerarchia delle astrazioni. Con il passare degli anni si sono evoluti linguaggi di programmazione via via più distanti dall’assembly ed a questi è stato assegnato il nome di linguaggi “di alto livello”
I linguaggi di alto livello astraggono molto più di quanto non faccia il linguaggio assembly, perchè non si tratta di una semplice traduzione tra parole chiave binare a parole chiave mnemoniche, ma forniscono un modo semplice per l’accesso alla memoria, e facilitano la rappresentazione dei dati all’interno del calcolatore in maniera più simile al ragionamento umano.
I primi linguaggi di programmazione furono il FORTRAN ed il BASIC, seguirono poi ALGOL, LISP, SIMULA e a ruota tantissimi altri, mentre per veder nascere il C bisognerà attendere fino al 1975. Il proliferare di tanti linguaggi (ad oggi se ne contano più di 2500!) è dovuto in piccola parte ai variabili gusti dei programmatori, ma soprattutto all’evoluzione scientifica teorica che sta dietro a tali linguaggi.
Come scrivere un programma?
Questo argomento verrà approfondito nelle prossime lezioni di questo corso, ma vorrei fornire qui una panoramica del processo di scrittura di un programma.
Per scrivere un programma sono necessari pochi strumenti, bisogna avere la documentazione del linguaggio che si vuole utilizzare, un programma per scrivere del testo (come notepad) e un compilatore. Sui primi due credo che non ci sia altro da aggiungere, mentre per quanto riguarda il compilatore bisogna sapere che è un programma concettualmente simile all’assembler, il suo scopo è quello di trasformare quello che abbiamo scritto nel linguaggio da noi scelto, e trasformarlo in istruzioni binarie adatte ad essere interpretate dalla cpu.
Ovviamente questo è il set minimo di strumenti, ma se si vuol lavorare in maniera più comoda sono stati inventanti tanti programmi alternativi al blocco note che permettono di scrivere il nostro programma in modo più agevole permettendo la collaborazione tra più programmatori etc.
Nelle prossime lezioni esamineremo il concetto di algoritmo ed analizzeremo nel dettaglio il linguaggio C. Scriveremo i nostri programmi, li compileremo e li eseguiremo, consapevoli che quello al quale stiamo lavorando è un livello discretamente alto di astrazione rispetto al linguaggio delle cpu.
Letture consigliate:
Il linguaggio C. Principi di programmazione e manuale di riferimento (Accademica)
Brian W. Kernighan – Dennis M. Ritchie
Editore: Pearson | Lingua: Italiano | Brossura: 313 pagine
Prezzo Listino: EUR 27,00
Prezzo Promozione: EUR 22,95 con Spedizione gratuita
C. Corso completo di programmazione
Paul J. Deitel – Harvey M. Deitel
Editore: Apogeo | Lingua: Italiano | Brossura: 640 pagine
Prezzo Listino: EUR 39,00
Prezzo Promozione: EUR 33,15 con Spedizione gratuita













38 Responses to “1. Storia della programmazione”
4 Marzo 2011
Rriky92Complimenti! Articolo fantastico! Io devo fare la tesina di maturità su questi argomenti qua!! Ottimo lavoro continuate così!!
4 Marzo 2011
Gianluca T.Ottimo articolo! È stato addirittura più istruttivo delle prime lezioni di programmazione a Architettura degli Elaboratori all’università! Bravissimo! Non vedo l’ora di leggere i prossimi articoli (soprattutto perché sto studiando il C++ e non il C all’uni :p)
4 Marzo 2011
MelaCafe411Debbo dire che partire dalle basi, dalla storia di una disciplina, è l’unico approccio che realisticamente può avere successo.
Completo e chiaro e sintetico, il panorama iniziale di questo corso, complimenti.
Lo dico da informatico quale sono.
Seguirò con piacere.
7 Marzo 2011
mitico303Beh, complimenti, non c’è che dire!
Cercavo da tempo un corso approfondito per avvicinarmi allo sviluppo per ios e credo di averlo trovato.
nel caos della rete è sempre più difficile trovare persone realmente esperte che si mettono a disposizione.
ancora complimenti.
7 Marzo 2011
Impariamo a programmare grazie alle lezioni gratuite di devAPP « Tutorial « Italiamac[…] Se vi siete persi la prima lezione, potete recuperare tramite questa pagina. […]
7 Marzo 2011
GloriaFantastico! Davvero utile e ben fatto che mi chiedevo a quando la prossima lezione? 🙂 Ancora complimenti.
8 Marzo 2011
Alexho già aggiunto questa pagina ai preferiti.
Grazie e complimenti per l’iniziativa.
8 Marzo 2011
LinkatmeComplimenti, analitici, chiaro, tecnico ma semplice, essenziale, attendo il prossimo step!
9 Marzo 2011
stardevsalve sono un programmatore C++ beginner , in realtà lo studio da un anno, ma per i tanti impegni di lavoro che ho sono costretto sempre a ripassare cose già fatte per timore di perderle, così sono arrivato soltanto alle liste,i files,ecc.. in questi giorni io e il mio prof abbiamo deciso di andare avanti con le classi ( C con Classi) .
Quello che chiedo è di accompagnare ogni puntata “testuale” con un podcast audio inerente la lezione corrispondente , in questo modo si ha la possibilità di riascoltare una lezione anche se si è in viaggio per recarsi sul posto di lavoro, insomma l’obbiettivo è studiare sempre, in qualsiasi circostanza, persino quando faccio jogging , c’è da aggiungere che l’ascolto favorisce l’essere vigili, lo so bene io che dopo una giornata di lavoro mettersi sui libri mi causa pesantezza della vista e forti sbadigli .
A presto!
9 Marzo 2011
filippobellissima idea questo corso! complimenti allo scrittore: descrizione lineare, sintetica ma precisa.
Ogni quanto pubblicate una lezione?
10 Marzo 2011
ignaziocnon pensare che i programmatori ricordino tutto a memoria, le reference guide sono sempre lì a ricordarti i nomi dei metodi, dei parametri etc etc.
purtroppo se non fai questo lavoro tutti i giorni per 12 ore al giorno è difficile prende confidenza con queste cose.
Ma lo sai quante volte mi sono detto “se questo argomento potessi spiegarlo a parole ci metterei la metà del tempo!!”
Purtroppo però anche la realizzazione di un video/audio ben fatto richiede del tempo, più di quanto non ne richieda scrivere un testo. Per l’azienda ho realizzato qualche video, senza audio…30minuti di montaggio ogni 2 minuti di video 🙁
Comunque non lo escludo, magari qualche lezione più complessa verrà accompagnata da un file audio.
come non darti ragione? io vedo videolezioni di programmazione sull’ipod in metro 😀
10 Marzo 2011
FumaxOttimo corso, molto interessante, soprattutto per chi come me non sa niente di programmazione.
Ogni quanto farete uscire la lezione? ci sarà un giorno fisso?
Grazie di tutto.
10 Marzo 2011
congiCi saranno giorni fissi per l’uscita delle lezioni.
Se no,c’e’ un modo per essere avvisato quando esce?
Grazie e complimenti per l’idea e per la competenza delle due prime uscite del corso.
10 Marzo 2011
StefanoComplimenti!!!!!!! Ottima idea!!!
10 Marzo 2011
Rino PicardiCiao, rispondo qui un po’ a tutti.. Uscirà una lezione a settimana, vogliamo offrire materiale di qualità e questo richiede tempo, sono certo che alla fine apprezzerete l’intero corso (Ignazio Calò è proprio in gamba, non vi deluderà!!!) ^^
Non abbiamo deciso un giorno fisso.. un buon modo per sapere quando esce una nuova lezione è seguirci tutti i giorni.. male non fa, non richiede grossi sforzi e ci aiuta a crescere sempre di più 😛
oppure potete iscrivervi ai nostri feed rss.. o ancora seguirci via Twitter e Facebook dove avvisiamo di volta in volta quando esce un nuovo articolo 😉
11 Marzo 2011
SyleCaspita ragazzi che articolo … Complimenti se ne trovano pochi in rete come voi.. una meraviglia.. Alla fine del corso spero che abbiate già pensate di stampare questo corso e pubblicarlo perché sicuramente a qualcuno servirà.. Complimenti veramente…
13 Marzo 2011
BacardiComplimenti.. veramente bella guida… finalmente sono riuscito a trovare una guida seria su questo argomento…
14 Marzo 2011
mariusguarda io vengo da un altro paese e prima di parla italiano tipo 5 anni fa ho sempre parlato l inglese ho fatto tante di quelle guide in inglese ma la vostra in una lingua che la conosco a piu o meno 4 anni e un opera d arte ! complimenti
14 Marzo 2011
Ruvecahahah bella … siamo in due 🙂 ottimo articolo cmq 🙂
14 Marzo 2011
daddi86complimenti… avevo paura di potermi annoiare nel corso della lettura, ma invece, più leggevo e più volevo sapere.. tanto che adesso non vedo l’ora che arrivi la prossima lezione.. se fosse per me, potreste farla anche adesso… ho appena scaricato xcode, e adesso bramo dalla voglia di poterlo conoscere come le mie tasche quel programma..
mitici continuate così, ci state dando un grandissimo aiuto..
14 Marzo 2011
LuigiSolo una parola: amazing!
14 Marzo 2011
LuigiHo studiato la programmazione ad ingegneria dell’automazione ed ho avuto la fortuna di avere un grandissimo e bravissimo programmatore come insegnante che ti faceva capire le cose all’istante, senza difficoltà e che mi ha fatto amare il c++. Da quanto ho letto fin ora in questa prima parte, siete partiti benissimo e spero continuiate così
15 Marzo 2011
DanieleSe non fossi un ing. Informatico con una tesi sulla microprogrammazione dubito che ci avrei capito qualcosa. Un consiglio: affrontate meno argomenti alla volta in modo tale da poterli descrivere in modo più chiaro per consentire una più rapida lettura e reale assorbimento degli argomenti trattati.
Saluti
15 Marzo 2011
RaffpioGrazie!! 🙂
col vostro permesso me ne salvo una copia in pdf…..
15 Marzo 2011
PaoloBellissimo articolo, non mancherò di seguire le prossime lezioni 😉
15 Marzo 2011
Alfredo MorelliBuongiorno,
sono un principiante alle primissime armi nella programmazione, ma con una buona informazione da autodidatta nell’informatica. Mi sono registrato come sviluppatore di applicazioni per iPhone e devo dire che questo corso mi sta entusiasmando sin dalle prime righe….
E come si dice…. “Il buongiorno si vede dal mattino”…
Grazie per tutto questo che avete fatto e che continuate a fare…
15 Marzo 2011
LapoComplimenti per la guida, la seguirò assiduamente.
Dopo lo studio della programmazione in Cobol a scuola ho abbandonato completamente la programmazione occupandomi solo di hardware ma pentendomene sempre e credendo di non potercela più fare. Mi avete rincuorato, grazie davvero! 🙂
16 Marzo 2011
IgnaziocIn effetti per gli argomenti trattati in questa lezione non sarebbe bastato un corso universitario..dietro ogni parola ci si sarebbe potuto scrivere un libro.
Spero quantomeno di aver fatto capire chi si avvicina adesso al mondo dell’ informatica almeno di cosa stiamo parlando. Qui si parla si scienza, non di smanettamento con il pc.
18 Marzo 2011
Corso di programmazione in C - Panoramica sui linguaggi di programmazione | devAPP[…] distinzione l’abbiamo già incontrata nella prima lezione, per chi non l’avesse ancora letta ricordo che “basso” o “alto” […]
22 Marzo 2011
MauroOggi mi sono registrato a questo sito e girovagando ho trovato questo corso,il lavoro svolto e’ davvero notevole,io sono alle prime armi e non conosco praticamente nulla del linguaggio c ho deciso di voler imparare a programmare e come inizio mi sembra ottimo,complimenti.
8 Aprile 2011
Nico74Ho lavorato come tecnico informatico HW per molti hanni. Ho sempre voluto accostarmi al mondo della programmazione ma non ne ho mai avuto l’occasione.
Leggendo questo sito e devo dire di aver trovato quello che cercavo e che non ho mai trovato. Le informazioni sono scritte bene, in maniera chiara ed approfondita ma fruibili in modo da essere capite anche da chi, come me si avvicina da ignorante a questo mondo.
Tantissimi complimenti e grazie per l’aiuto che riuscite a fornire!
8 Maggio 2011
federicoComplimenti! Ho iniziato adesso a seguire questo corso, spero che sia tutto cosi ben strutturato e chiaro! I miei prof non sono stati altrettanto chiari nelle loro lezioni e forse per questo non sono riuscito a dare l’esame, spero che questo mi possa aiutare!! 😉
14 Novembre 2011
GiampyMa non era Geore Boole il nome del matematico?
14 Novembre 2011
Ignaziocsi, il nome corretto è George Boole http://it.wikipedia.org/wiki/George_Boole
17 Gennaio 2012
NardiIo ho fatto la tesina 2 anni fa di questa cosa, argomento molto interessante che ho riletto volentieri data la vostra chiarezza.
Bravi
18 Aprile 2012
andrea85GRAZIE DI CUORE…SIETE FANTASTICI…GIA CON LE PRIME 2 PAG RIPORTATE ALLA LUCE DISCORSI FONDAMENTALI PER CHI HA UN MINIMO DI BASI…INOLTRE LA LETTURA è SCORREVOLE E INVOGLIA A SAPERNE SEMPRE DI PIU…RIPETO: GRAZIE
18 Aprile 2012
Ignaziocgrazie a tutti i lettori! 😀
26 Giugno 2012
MicheleQuesti articoli sono davvero una figata!
Grandi!