fondamenti di informatica
Transcript
fondamenti di informatica
FONDAMENTI DI INFORMATICA Andrea Fusiello Informatica! • Scienza dei calcolatori (Computer Science) o Scienza dell’informazione? • L’informatica è la scienza che studia l’elaborazione delle informazioni • L’informatica è la scienza degli algoritmi che descrivono e trasformano l’informazione: la loro teoria, analisi, progetto, efficienza, realizzazione ed applicazione [ACM - Association for Computing Machinery] • Information and Communication Technology (ICT) Informazione! L'informazione è ciò che, per un recettore posto in una situazione in cui si hanno almeno due occorrenze possibili, supera un'incertezza e risolve un'alternativa, cioè sostituisce il noto all'ignoto, il certo all'incerto. In altre parole, essa riguarda il contesto in cui i dati sono raccolti, la loro codifica in forma intelligibile e -- in definitiva -- il significato attribuito a tali dati, [Wikipedia] Precisazione: i dati sono valori che non hanno significato se non in se stessi, mentre l'informazione è ciò che il recettore del dato ricava dalla sua interpretazione. Algoritmo! • Sequenza di passi che definiscono il modo in cui viene eseguita un’operazione. • Una volta definito un algoritmo per eseguire un . determinato compito, svolgerlo non richiede più alcuna conoscenza sui principi su cui l’algoritmo si basa. • La conoscenza necessaria per svolgere il compito è tutta codificata nell’algoritmo, di modo che l’esecuzione diventa meccanica (= fattibile da una macchina) • Programma: un algoritmo espresso come sequenza di istruzioni che una macchina è in grado di interpretare ed eseguire. Algoritmo di Euclide per MCD ! Descrizione: questo algoritmo riceve in input due interi positivi e ne calcola il massimo comune divisore. Procedura Passo 1 Si assegni a M e a N, rispettivamente, il valore maggiore e minore dei due valori di ingresso. Passo 2 Si divida M per N, e si denomini il resto R. Passo 3 Se R non è 0, si assegni a M il valore di N, si assegni a N il valore di R, e si ritorni al Passo 2; altrimenti, il massimo comune divisore è il valore assegnato a N. Evoluzione delle capacità! • Macchine a funzione fissa: Macchina di Pascal (1642) per le addizioni, calcolatore di Atanasoff–Berry (1941) costruito per risolvere sistemi di equazioni lineari. • Macchine programmabili: macchina analitica di Babbage (1837), ENIAC (1946) • Macchine a programma memorizzato (Von Neumann, 1945), prima realizzazione nel 1948. Evoluzione dellʼhadware! Ingranaggi Relè Valvola termoionica Transistor Transistor VLSI Timeline! • 1939 Prime macchine elettromeccaniche (es. Mark I nel 1944) • 1941 Prima macchina a valvole termoioniche (Atanasoff–Berry) poi Colossus e ENIAC (1946) • 1955 transistor rimpiazzano le valvole (es. IBM 1401 del 1960 all-transistorized) • 1960 circuiti integrati, minicomputer (es PDP-11 del 1970) • 1970 microprocessore • 1975 Olivetti P6060, uno dei primi PC, seguono Apple I (1976) e IBM PC (1981) • 1982 Compaq introduce il primo “clone” • 1983 Apple Lisa, prima interfaccia grafica • 1984 Psion Organizer, primo palmtop computer (o PDA). Segue Palm nel 1996. • 1994 IBM Simon, primo PDA+telefono (smartphone). Segue Nokia Communicator nel 1996 Mark I The all-transistorized IBM 1401 Data Processing System DEC PDP-11 IBM PC Apple Lisa Palm Pilot Internet timeline! • 1961 Commutazione di pacchetto • 1969 ARPANET, 4 nodi • 1974 viene formalizzato il TCP/IP (appare il termine “Internet”) • 1983 ARPANET adotta TCP/IP • 1973-1990 processo di unione di reti, nasce Internet • ~1990 Internet si apre ad operatori commerciali • 1989, Tim Berners-Lee (CERN) inventa HTTP • 1994 Lycos primo motore di ricerca • 1998 Google Astrazione! • Distinzione tra le proprietà esterne di un’entità ed i dettagli della sua struttura interna. • L’astrazione permette di costruire, analizzare e gestire sistemi complessi che non sarebbero comprensibili nella loro interezza se considerassimo i dettagli tutti assieme. Astrazione in informatica! Computer science commonly presents levels of abstraction, wherein each level represents a different model of the same information and processes, but uses a system of expression involving a unique set of objects and compositions that apply only to a particular domain. Each relatively abstract, "higher" level builds on a relatively concrete, "lower" level, which tends to provide an increasingly "granular" representation. For example, gates build on electronic circuits, binary on gates, machine language on binary, programming language on machine language, applications and operating systems on programming languages. Astrazione in ingegneria! • Designing and building things that work is at the heart of engineering. Engineers have to work together in teams to build complex systems, whether software, hardware, cars, planes, or bridges. This complexity is a major source of engineering cost and errors • The solution to complexity is abstraction, also known as information hiding. Abstraction is simply the removal of unnecessary detail. The idea is that to design a part of a complex system, you must identify what about that part others must know in order to design their parts, and what details you can hide. The part others must know is the abstraction. Astrazione in generale! • L’astrazione consiste nell’ eliminare tutti i dettagli ininfluenti (in un certo contesto) per concentrare l’ analisi sulle variabili determinanti. • L’astrazione è il processo di riduzione dei dettagli in una rappresentazione della realtà, al fine di concentrare l’ analisi e lo studio sui fattori determinanti dei fenomeni. • Sostituire una situazione del mondo reale complessa e particolareggiata con un modello comprensibile e privo di dettagli inessenziali, all’interno del quale si possa risolvere il problema. Ingegneria, complessità e astrazione! • L’ingegnere deve essere preparato a gestire la compessità dei sistemi. • Se ci riflettete, questa capacità è il filo rosso che lega tutte le specialità dell’ingegneria. • L’astrazione è lo strumento principale per affrontare il compito.