Informatica

Da Wikipedia, l'enciclopedia libera.

« L'informatica non riguarda i computer più di quanto l'astronomia riguardi i telescopi. »

(Edsger Wybe Dijkstra)
Una rappresentazione artistica della macchina di Turing

L'informatica è la scienza applicata che si occupa del trattamento dell'informazione mediante procedure automatizzate. In particolare ha per oggetto lo studio dei fondamenti teorici dell'informazione, della sua computazione a livello logico e delle tecniche pratiche per la sua implementazione e applicazione in sistemi elettronici automatizzati detti quindi sistemi informatici. Come tale è una disciplina fortemente connessa con l'automatica, l'elettronica ed anche l'elettromeccanica.

L'informatica come scienza si accompagna, si integra o è di supporto a tutte le discipline scientifiche e non, e come tecnologia pervade pressoché qualunque "mezzo" o "strumento" di utilizzo comune e quotidiano, tanto che (quasi) tutti siamo in qualche modo utenti di servizi informatici. La valenza dell'informatica in termini socio-economici ha scalato in pochi anni la piramide di Anthony, passando da operativa (in sostituzione o a supporto di compiti semplici e ripetitivi), a tattica (a supporto della pianificazione o gestione di breve termine), a strategica. In tale ambito l'informatica è diventata talmente strategica nello sviluppo economico e sociale delle popolazioni che il non poterla sfruttare, uno status ribattezzato con l'espressione digital divide, è un problema di interesse planetario.

L'informatica, assieme all'elettronica e alle telecomunicazioni unificate insieme sotto la denominazione Information and Communication Technology (ICT), rappresenta quella disciplina e allo stesso tempo quel settore economico che ha dato vita e sviluppo alla terza rivoluzione industriale attraverso quella che è comunemente nota come rivoluzione digitale.

Etimologia e significato[modifica | modifica wikitesto]

Il termine italiano "informatica" deriva da quello francese «informatique», contrazione di informat(ion) (automat)ique, coniato da Philippe Dreyfus nel 1962.[1][2][3][4] Il primo utilizzo italiano risale al 1968.[4]

Nei paesi anglofoni, "informatica" si dice "computer science", espressione che appare per la prima volta in un articolo del 1959 in Communications of the ACM[5], nel quale Louis Fein discute la creazione di una Graduate School in Computer Sciences analoga alla Harvard Business School, giustificando il nome dicendo che, come la management science, la computer science è per sua natura una materia di studio applicata e interdisciplinare, avendo allo stesso tempo le caratteristiche tipiche di una disciplina accademica.[5] I suoi sforzi, e quelli di altri come l'analista numerico George Forsythe, saranno ricompensati: le università istituiranno tali corsi, a partire da Purdue nel 1962.[6][7] In Gran Bretagna è utilizzato anche il termine "informatics".

Il calcolatore, lo strumento base dell'informatica, è diventato insostituibile nei campi più disparati della vita e della scienza, grazie alla velocità di calcolo e alla notevole flessibilità della sua architettura-tipo, il modello di Von Neumann. È importante anche notare il differente significato di origine tra queste tre lingue nel denominare il computer:[8]

  • elaboratore (o calcolatore), in italiano, per le sue svariate capacità di elaborazione (anche se oggi il termine più utilizzato è computer).
  • ordinateur, in francese, a sottolineare le sue capacità di organizzare i dati e le informazioni;.
  • computer, in inglese, letteralmente calcolatore, in diretta discendenza delle calcolatrici, prima meccaniche, poi elettromeccaniche, poi elettroniche.

Il principio fondamentale dell'informatica, che è anche il significato della parola stessa, è che attraverso un calcolatore l'utente ottiene delle informazioni a partire da dati, per mezzo di una elaborazione automatica (mediante una procedura stabilita in precedenza, cioè il programma[9]). Il programmatore organizza e scrive le istruzioni del programma (attraverso specifici linguaggi di programmazione), il programma viene installato su un calcolatore e infine quest'ultimo ne esegue le istruzioni programmate, rispondendo agli input dell'utente. Un input è una immissione, inserimento, ingresso di dati, a cui segue l'elaborazione, che si conclude con l'output, ovvero una uscita di informazioni organizzate in modo tale da trarne conoscenza.[10] Dunque, l'attività di un calcolatore è essenzialmente l'esecuzione di calcoli logico-aritmetici, che vengono svolti eseguendo istruzioni precedentemente impartitegli da un programmatore.

Il calcolatore non è dotato di una qualche forma di autocoscienza, poiché possiede una forma di intelligenza sui generis che prescinde dalla consapevolezza. Secondo Yuval Noah Harari non occorre, per portare a termine un compito che richiede l'elaborazione di dati, che un dispositivo di calcolo restituisca un risultato valutando anche esperienze soggettive.[11] Egli scrive che «oggi stiamo sviluppando nuovi tipi di intelligenza non cosciente che possono portare a termine tali compiti [giocare a scacchi, guidare automobili, etc...] in modo assai più efficace degli umani, poiché tutti questi compiti sono basati sul riconoscimento di pattern», e che «le esperienze soggettive di un tassista in carne e ossa sono infinitamente più ricche di quelle di un auto a guida autonoma, che non prova assolutamente nulla. [...] Ma il sistema non ha bisogno di niente di tutto questo da un tassista. Tutto quello che vuole davvero è che i passeggeri siano portati dal punto A al punto B nel modo più veloce, sicuro ed economico possibile. E l'auto a guida autonoma sarà presto in grado di fare meglio di un conducente umano, anche se non può godere della musica o rimanere impressionata dalla magia dell'esistenza».[11]

Una branca specifica dell'informatica, l'intelligenza artificiale (IA), si occupa di creare tecniche, algoritmi e programmi atti a simulare processi di pensiero e ragionamento. Queste tecniche non sono meno algoritmiche e deterministiche nei loro esiti di quelle usate in altri settori dell'informatica, tuttavia hanno il potenziale di catturare conoscenza e farne uso per fornire risposte spesso di qualità superiore a quella ottenibile mediante l'uso di esperti umani. Secondo i filosofi, l'intelligenza artificiale delle macchine non è vera e propria intelligenza, in quanto a esse mancano la coscienza di essere-nel-mondo e un rapporto concreto con l'ambiente circostante, caratteristiche tipiche dell'essere umano.[12] Di recente lo studio dell'informatica ha anche assunto rilevanza multidisciplinare nel cercare di chiarire o giustificare processi e sistemi complessi del mondo reale, quali ad esempio la capacità del cervello umano di generare pensieri a partire da interazioni molecolari (studi facenti capo alla bioinformatica).

Cenni storici[modifica | modifica wikitesto]

Magnifying glass icon mgx2.svg Lo stesso argomento in dettaglio: Storia dell'informatica e Storia del computer.

Premessa

Sostanzialmente, i calcolatori si dividono in analogici e digitali:

  • Un calcolatore analogico è un tipo di calcolatore che elabora i problemi per analogia, o in termini più scientifici, per quantità continue (cioè ammette valori infiniti).
  • Un calcolatore digitale è un tipo di calcolatore che elabora i problemi digitalizzando, ovvero le quantità che considera sono discrete (cioè ammette valori finiti).

I dati cioè, possono essere rappresentati in due modi, analogico o digitale:[13] un dato analogico è una rappresentazione continua, analoga all'informazione effettiva che rappresenta, mentre un dato digitale è una rappresentazione discreta, che spezza l'informazione in elementi distinti poiché l'elaborazione viene eseguita per passi finiti (vedi Algoritmo). L'informatica, per come si è sviluppata, ha preso maggiormente in considerazione la seconda categoria di calcolatori. La prova è che i computer contemporanei funzionano secondo l'algebra booleana, ovvero la logica di funzionamento di un normale computer ammette due stati precisi, rappresentati dalle cifre 0 e 1. Esempi di calcolatori analogici odierni sono il termometro e l'orologio tradizionali: nonostante vi siano gli indicatori dei gradi o delle ore, in realtà essi non sono sufficienti per astrarre la posizione esatta del mercurio o delle lancette.[13][14] Il mercurio nel termometro sale con continuità lungo le tacche, mentre un termometro digitale calcola la temperatura secondo una logica binaria e discreta.

Origini

Vari strumenti di calcolo antecedenti al moderno computer

La storia dell'informatica in realtà comincia ben prima dell'invenzione del computer moderno. Infatti, già l'abaco (anch'esso un dispositivo digitale, ma ovviamente di minima complessità) veniva utilizzato nell'Antichità per fare le semplici quattro operazioni. Si riscontrano anche altri dispositivi automatici come le macchine di Erone, gli automi di alcuni ingegneri arabi nel Medioevo, l'automa cavaliere di Leonardo da Vinci. È stato proprio un matematico arabo, Muḥammad ibn Mūsā al-Khwārizmī, a sistematizzare l'algebra (non ancora binaria); dal suo nome sarà coniato il termine "algoritmo", che sta a indicare una sequenza finita di operazioni.

L'Orologio Calcolatore di Schickhard (1592-1635), la Pascalina di Pascal (1623-1662), la Stepped Reckoner di Leibniz (1646-1716), sono stati i primi calcolatori analogici utilizzati come strumenti ausiliari per i calcoli matematici. Babbage (1791-1871) ideò una macchina per il calcolo automatico di grande complessità, la macchina differenziale, che riuscì a realizzare tra mille difficoltà, anche per i limiti della meccanica del tempo. Grazie a un metodo detto delle differenze, particolarmente adatto ad essere espresso in termini meccanici, Babbage creò un sistema per l'esecuzione automatica dei calcoli necessari per la compilazione delle tavole matematiche. Ideò poi, partendo dalle schede perforate del francese Jacquard, una nuova macchina, la macchina analitica: per essa, identificò un'unità di calcolo numerico (noi diremmo un processore), una unità di controllo dell'esecuzione, una memoria per conservare i risultati intermedi e un dispositivo di uscita per visualizzare il risultato del calcolo.

Informatica moderna e contemporanea

I padri dell'informatica moderna sono John von Neumann (1903-1957) e Alan Turing (1912-1954). Al primo si deve l'organizzazione concettuale del moderno calcolatore, oggi nota come architettura di von Neumann; al secondo invece dobbiamo studi sulla crittografia (disciplina già avviata nei secoli precedenti) e la formalizzazione della Macchina di Turing, il modello di "macchina" fondamento teorico di ogni moderno sistema programmabile.[10]

Si vedano le voci: Cronologia dei computer dal 1950 al 1979, Cronologia dei computer dal 1980 al 1989, Cronologia dei computer dal 1990 al 1999, Cronologia dei computer dal 2000 al 2009, Cronologia dei computer dal 2010 al 2019.

Informatica d'uso[modifica | modifica wikitesto]

Esistono frange di persone che confondono l'informatica con aree vocazionali che tipicamente riguardano l'utilizzo dei programmi per l'ufficio (come Microsoft Office), la navigazione sul web o il gaming. In realtà, l'informatica vera e propria (che si distingue in teorica e applicata) è lo studio di procedure, algoritmi e linguaggi capaci di permettere a una macchina di eseguire operazioni in modo automatico, e perciò richiede notevoli conoscenze e competenze in materie di studio come la matematica, logica, linguistica, psicologia, nonché elettronica, automatica, telematica, e altre. Mentre occorrono notevoli conoscenze tecniche per appartenere alla categoria degli informatici di professione, per appartenere a quella degli utenti finali ne occorrono decisamente di meno – talvolta solo il minimo indispensabile – e questo grazie al lavoro dei primi, costantemente orientato a rendere sempre più semplice l’uso del computer per tutti.[10] Un informatico dovrebbe sempre avere un interesse genuino per i fondamenti teorici dell'informatica; che poi, per professione o per passione, spesso faccia lo sviluppatore di software è possibile ma, potendo sfruttare le proprie capacità di problem solving (soluzione di problemi) in diversi ambiti, non è scontato. In ogni caso l'informatica, almeno nella sua parte applicativa, è una disciplina fortemente orientata al problem solving.

L'informatica, oggi autonoma disciplina di studio, nasce dal convergere di differenti campi disciplinari che, per vie diverse, si sono posti il problema di come automatizzare il calcolo, cioè la manipolazione di simboli attraverso determinate regole, rendendolo eseguibile da una macchina.[15] Ma i fondamenti teorici della disciplina discendono direttamente dalla matematica (matematica discreta), a cui l'informatica è strettamente legata. L'informatica vera e propria spazia tra diversi campi più ristretti: lo studio dei linguaggi formali e degli automi, che riguarda anche i compilatori; lo studio della complessità computazionale, in particolar modo per la minimizzazione del numero di istruzioni da eseguire per la risoluzione di un problema e per la ricerca di algoritmi approssimati per risolvere problemi NP-difficili; la crittologia, la scienza che studia i metodi per rendere un messaggio incomprensibile a chi non sia in possesso di una chiave di lettura del messaggio stesso; la teoria dei codici, utilizzata per la compressione dati o per aumentare l'integrità dei dati; la ricerca operativa, per fornire strumenti matematici di supporto alle attività decisionali; la computer grafica, suddivisa a sua volta in grafica bitmap e grafica vettoriale; citando solo alcuni sottocampi. Un caso particolare o sottoinsieme di informatica d'uso è l'informatica aziendale.

Terminologia di base[modifica | modifica wikitesto]

Data l'ampiezza del trattare l'informatica è quindi necessario definire, sia pure a grandi linee un quadro generale entro il quale comprendere la materia. Pertanto questa sezione cerca di essere un glossario introduttivo dell'intera disciplina.

  • Algebra di BooleGeorge Boole ha introdotto una vera e propria rivoluzione nel mondo della logica, che prima di lui per due millenni era rimasta ancorata a quella codificata da Aristotele.[16] Ha fondato l'algebra della logica, creando un sistema nel quale è possibile trattare ogni relazione logica attraverso l'utilizzo di formule algebriche. Le operazioni (come l'addizione, la sottrazione e la moltiplicazione) vengono sostituite da operazioni logiche con valori di congiunzione, disgiunzione e negazione, mentre gli unici numeri utilizzati, 1 e 0, assumono rispettivamente i significati di vero e falso. Circa settant'anni dopo la morte del suo ideatore, negli anni Trenta del Novecento, la logica booleana ha dato vita a una nuova (e ancor più vasta) rivoluzione quando un altro logico, nonché ingegnere elettronico, Claude Shannon, ha avuto l'idea di applicarla ai circuiti elettronici, creando così quella che è tutt'ora la base di funzionamento logico dei computer.[16] (vedi Algebra di Boole)
  • Algoritmo – Un algoritmo è un procedimento sistematico di calcolo, che risolve un determinato problema attraverso una sequenza finita di passi elementari.[15] Il termine deriva dalla trascrizione latina del nome del matematico persiano al-Khwarizmi, che è considerato uno dei primi autori ad aver fatto riferimento a questo concetto. L'algoritmo è un concetto fondamentale dell'informatica, anzitutto perché è alla base della nozione teorica di calcolabilità: un problema è calcolabile quando è risolvibile mediante un algoritmo. Inoltre, l'algoritmo è un concetto cardine anche della fase di programmazione dello sviluppo di un software: preso un problema da automatizzare, la programmazione costituisce essenzialmente la traduzione o codifica di un algoritmo per tale problema in programma, scritto in un certo linguaggio, che può essere quindi effettivamente eseguito da un calcolatore rappresentandone la logica di elaborazione. (vedi Algoritmo)
  • Applicazione – L'espressione "applicazione informatica" indica un programma che specializza il funzionamento di un computer in una determinata attività (per esempio il word processor, cioè l'elaboratore di testi, è il tipo di applicazione più diffusa nei personal computer).[4] Le prime applicazioni pratiche si ebbero tra la fine degli anni Sessanta e inizio anni Settanta, nelle grandi aziende, e in generale nelle grandi organizzazioni pubbliche o private, laddove soluzioni informatiche abbastanza semplici permettevano significativi risparmi di tempo nelle operazioni quotidiane e di routine. Basti ricordare Inps (a lungo capofila dell'informatica italiana), Banca d'Italia, Alitalia, Eni, Montedison, Enel. Con gli anni, e con uno sviluppo sempre più veloce delle capacità di elaborazione in parallelo all'abbassamento dei costi, l'informatica ha pervaso qualsiasi settore, fino alla vita quotidiana e all'intrattenimento personale. (vedi Applicazione informatica)
  • Bit – È l'unità elementare dell'informazione trattata dagli elaboratori digitali; può assumere due valori, convenzionalmente indicati dalle cifre 0 e 1. È l'abbreviazione di binary digit, ovvero "cifra binaria". (vedi Bit)
  • Byte – È l'unità di informazione costituita da 8 bit, usata come unità di misura della capacità di memoria di un sistema di elaborazione. (vedi Byte)
  • Computazione – Procedimento di calcolo completamente specificato, cioè composto da un numero finito di operazioni elementari o a loro volta scomponibili in operazioni elementari.[15] La computazione di una funzione, cioè il calcolo del suo valore in corrispondenza di particolari valori in ingresso, è effettuata attraverso un algoritmo espresso in un determinato linguaggio formale.[15] (vedi Computazione)
  • Database – Struttura complessa di organizzazione di dati, che permette l'inserimento di nuovi dati e la rimozione di vecchi, nonché la modifica dei dati stessi, il loro aggiornamento e la loro elaborazione.[15] L'unità informativa elementare del database è il record, inteso come stringa organizzata in campi per consentire l'archiviazione di un gran numero di informazioni anche di diverso tipo. Il record è, infatti, un insieme costituito da un numero finito di elementi, detti campi del record, ciascuno dei quali viene identificato da una stringa alfanumerica. (vedi Base di dati)
  • File – Un file è un insieme di informazioni omogenee, codificate in formato digitale, logicamente correlate e registrate su un supporto di memoria di massa di un elaboratore (disco rigido, DVD, chiave USB, etc...).[15] I fine sono tutti binari, ma possono memorizzare entità diverse e si classificano a seconda della tipologia di informazioni cui si riferiscono: un programma eseguibile, un documento di testo, un'immagine, un suono, un video. (vedi File)
  • Hardware – Nell'informatica pionieristica degli anni Sessanta questo termine inglese, letteralmente "ferramenta" (il significato letterale è "merce dura"), ben si prestava a indicare le macchine utilizzate. L'hardware informatico è strettamente legato all'elettronica (analogica e digitale) di cui si avvale per la progettazione e realizzazione dei relativi sistemi. All'hardware appartiene anche il settore della rete di computer e apparati relativi. Anche con la sostituzione delle valvole termoioniche in favore dei transistor e poi dei primi circuiti integrati MOS, tali macchine erano composte da telai e pannelli metallici robusti tutti rigorosamente assemblati mediante bullonature vistose, per contenere i preziosissimi e delicatissimi circuiti elettronici che erano il cuore degli elaboratori e delle prime periferiche di base. Oggi, quando risulta difficile ritenere ferramenta un mouse o una webcam, il termine è rimasto più che altro per distinguere tutto ciò che è macchina, apparecchiatura, dai programmi (il software) per far funzionare la macchina o lo strumento. In pratica l'hardware è tutto ciò che è palpabile e visibile con gli occhi, come un hard disk, un monitor, un cavo, un'antenna, lo stesso involucro di un PC. Altri termini descrittivi generali possono essere: risorse fisiche e materiali. (vedi Hardware)
  • Informatica quantistica – L'informatica quantistica è l'insieme delle tecniche di calcolo e del loro studio che utilizzano i quanti per memorizzare ed elaborare le informazioni. Molte sono le differenze con l'informatica classica, soprattutto nei principi fondamentali. (vedi Informatica quantistica)
  • Interfaccia – Punto di contatto tra un computer o un dispositivo controllato da computer e l'utente, o tra due componenti fisici del computer.[4] L'interfaccia grafica utente (GUI) è invece ciò che rappresenta gli oggetti e le entità interne al computer o al programma in una forma grafica direttamente manipolabile dall'utente, per esempio configurando lo schermo come una scrivania (desktop) su cui sono attivi menu, finestre e icone.[4] (vedi Interfaccia e Interfaccia grafica utente)
  • Ipertesto – Insieme di informazioni interconnesse, costituito da testi, indici gerarchici, note, illustrazioni, tabelle collegate fra loro da rimandi e collegamenti logici.[4] La sua consultazione al computer avviene per libera esplorazione dell'utente, che può decidere quali collegamenti seguire e in che ordine.[4] È la struttura su cui si basano i contenuti dei siti Internet. (vedi Ipertesto)
  • Sistema informatico – Insieme di processore e periferiche, di cui è composto un calcolatore oppure configurazione hardware e software; da non confondere con sistema informativo che è invece l'insieme delle risorse tecnologiche impiegate per supportare la circolazione delle informazioni all'interno di un'organizzazione.[4] A parte il classico personal computer o il server di rete pensiamo ad esempio al telefono cellulare, alla fotocamera digitale, ad una console per videogiochi, al cruscotto auto con il navigatore satellitare, al monitoraggio in sala di rianimazione, ecc. Sono tutti sistemi informatici, che ci forniscono servizi specifici. Pensiamo ad un aereo moderno: al suo interno possiamo trovare non uno, ma molti sistemi informatici, ciascuno con un preciso compito. Internet nel suo insieme è un sistema informatico, formato a sua volta da una rete di sistemi informatici che lavorano per un obiettivo comune: permettere a chiunque di connettersi e scambiare informazioni con chiunque, in qualsiasi parte del globo. (vedi Sistema informatico e Sistema informativo)
  • Software – Il software è l'insieme dei componenti immateriali e virtuali che consentono all'utente di eseguire operazioni. È importante distinguere il software di base (oggi chiamato sistema operativo) dal software applicativo (comunemente detto programma o applicazione): il software di base serve per rendere operativo l'elaboratore, Il software applicativo serve per implementare nuove funzioni e/o rendere operative parti dell'elaboratore. Nondimeno, molte funzioni del software di base offrono valore aggiunto anche all'utente finale (ad esempio, il file system consente all'utente di memorizzare e poi riutilizzare secondo necessità il proprio lavoro). Perciò, all'interno del software di base è possibile ulteriormente distinguere le funzionalità a valore aggiunto per l'utente e quelle che sono meramente di servizio per garantire il funzionamento della macchina.[17]

Aree dell'informatica[modifica | modifica wikitesto]

In qualità di disciplina, l'informatica spazia dagli studi teorici sugli algoritmi e i limiti della computazione ai problemi pratici dell'implementazione dei sistemi informatici di hardware e software.[18][19] La CSAB, chiamata formalmente Computing Sciences Accreditation Board – che è costituita dai rappresentati dell'ACM e dell'IEEE Computer Society[20] – identifica quattro aree che considera cruciali per la disciplina dell'informatica: teoria della computazione, algoritmi e strutture dati, metodologia e linguaggi della programmazione, e architettura ed elementi del computer. In più, la CSAB identifica anche campi come l'ingegneria del software, intelligenza artificiale, comunicazione e le reti di computer, sistemi di basi di dati, calcolo parallelo, calcolo distribuito, interazione uomo-macchina, computer grafica, sistemi operativi e calcolo simbolico e numerico, come aree importanti dell'informatica.[18]

Informatica teorica[modifica | modifica wikitesto]

Magnifying glass icon mgx2.svg Lo stesso argomento in dettaglio: Informatica teorica.

L'informatica teorica è essenzialmente astratta e matematica, ma deriva la propria ragion d'essere dai calcoli pratici e quotidiani. Il suo scopo è di capire la natura della computazione e, come conseguenza di questa comprensione, fornire metodologie sempre più efficienti.

Teoria della computazione[modifica | modifica wikitesto]

Secondo Peter Denning, la domanda fondamentale che soggiace l'informatica è «cosa può essere (efficientemente) automatizzato?».[21] La teoria della computazione cerca di rispondere alle domande fondamentali che riguardano cosa può essere calcolato e la quantità di risorse necessarie per eseguire i calcoli. La teoria della computabilità si sforza di rispondere alla prima domanda, esaminando quali problemi computazionali sono risolvibili attraverso vari modelli teorici di computazione. Alla seconda domanda invece cerca di rispondere la teoria della complessità computazionale, che studia i costi in termini di spazio e tempo associati ad approcci differenti per risolvere una moltitudine di problemi computazionali.

Il famoso problema P = NP?, uno dei Problemi per il millennio, è un problema ancora aperto nella teoria della computazione.

DFAexample.svg Wang tiles.svg P = NP? GNITIRW-TERCES Blochsphere.svg
Teoria degli automi Teoria della computabilità Teoria della complessità computazionale Crittografia Teoria del calcolo quantistico (computer quantistico)

Teoria dei codici e dell'informazione[modifica | modifica wikitesto]

La teoria dell'informazione è relativa alla quantificazione dell'informazione. Fu sviluppata da Claude Shannon per trovare i limiti fondamentali delle operazioni di elaborazione dei segnali, come la compressione dati e l'archiviazione e la comunicazione affidabile degli stessi.[22] La teoria dei codici è lo studio delle proprietà dei codici (sistemi per convertire l'informazione da una forma all'altra) e la loro adattabilità per una specifica applicazione. I codici sono usati per la compressione dati, crittografia, rilevazione e correzione d'errore, e più recentemente anche per la codificazione delle reti. I codici sono studiati in modo da progettare metodi di trasmissione dati affidabili ed efficienti.

Algoritmi e strutture dati[modifica | modifica wikitesto]

Questo campo studia i metodi di calcolo comunemente usati e la loro efficienza computazionale.

Sorting quicksort anim.gif Singly linked list.png TSP Deutschland 3.png SimplexRangeSearching.svg
Analisi degli algoritmi Algoritmi Strutture dati Ottimizzazione combinatoria Geometria computazionale

Teoria dei linguaggi di programmazione[modifica | modifica wikitesto]

La teoria dei linguaggi di programmazione è una branca dell'informatica che ha a che fare con la progettazione, implementazione, analisi, caratterizzazione, e classificazione dei linguaggi di programmazione e delle loro peculiari caratteristiche. Rientra nella disciplina dell'informatica e allo stesso tempo dipende e influenza matematica, ingegneria del software e linguistica. È un'area di ricerca attiva, con numerosi giornali accademici dedicati.

Compiler.svg Python add5 syntax.svg
Teoria dei tipi Compilatori Linguaggi di programmazione

Metodi formali[modifica | modifica wikitesto]

Questo è un tipo particolare di tecnica basata sulla matematica per la specificazione, sviluppo e veridica di sistemi hardware e software. L'utilizzo dei metodi formali per la progettazione di hardware e software è motivata dall'aspettativa che, come nelle altre discipline ingegneristiche, eseguire analisi matematiche appropriate possa contribuire all'affidabilità e alla robustezza di un progetto. I metodi formali formano un importante pilastro dell'ingegneria del software, specialmente dove è coinvolta la sicurezza e rappresentano un utile aggiunta al software testing poiché aiutano a evitare errori e possono anche fornire un framework per il testing stesso.

I metodi formali sono meglio descritti come l'applicazione di una sufficientemente ampia varietà di fondamenti dell'informatica teorica, in particolare calcolo logico, linguaggi formali, teoria degli automi, e semantica, ma anche sistemi dei tipi, tipi di dati algebrici, riguardo problemi nella specificazione e verifica dell'hardware e del software.

Informatica applicata[modifica | modifica wikitesto]

Magnifying glass icon mgx2.svg Lo stesso argomento in dettaglio: Informatica applicata.

L'informatica applicata punta a identificare specifici concetti informatici che possono essere utilizzati direttamente per risolvere problemi del mondo reale.

Intelligenza artificiale[modifica | modifica wikitesto]

L'intelligenza artificiale (IA) punta o è richiesta per la sintesi di processi orientati agli obiettivi come per esempio problem solving, decision making, adattamento all'ambiente, apprendimento e comunicazione, riscontrabili in umani e animali. Fin dalle sue origini all'interno della cibernetica e nella Conferenza di Dartmouth (1956), la ricerca sull'intelligenza artificiale è stata necessariamente interdisciplinare, ricorrendo ad aree specialistiche come la matematica applicata, logica simbolica, semiotica, ingegneria elettrica, filosofia della mente, neurofisiologia e intelligenza sociale. L'IA è associata, secondo il pensiero comune, allo sviluppo dei robot, ma il campo principale in cui vi è un'applicazione pratica è lo sviluppo di software, che richiede una comprensione computazionale. Il punto di partenza è stato il quesito di Alan Turing «Can computers think?» dei tardi anni Quaranta del XX secolo, che rimane effettivamente senza risposta, sebbene il Test di Turing sia ancora usato per valutare l'output del computer sulla scala dell'intelligenza umana. L'automazione delle attività di valutazione e predizione ha conosciuto crescenti successi nel sostituire il monitoraggio e l'intervento umano in campi dell'informatica applicata che coinvolgono dati del mondo reale di una certa complessità.

Nicolas P. Rougier's rendering of the human brain.png Human eye, rendered from Eye.png Corner.png
Machine learning Visione artificiale Elaborazione digitale delle immagini
KnnClassification.svg Julia iteration data.png Sky.png
Riconoscimento di pattern Data mining Computazione evolutiva
Neuron.svg English.png HONDA ASIMO.jpg
Rappresentazione della conoscenza Elaborazione del linguaggio naturale Robotica

Architettura dei calcolatori e ingegneria informatica[modifica | modifica wikitesto]

L'architettura dei calcolatori, o organizzazione dei calcolatori digitali, è il design concettuale e la struttura operativa fondamentale di un sistema computerizzato. Si focalizza ampiamente sul modo in cui la CPU svolge le operazioni internamente e accede agli indirizzi in memoria.[23] Il campo spesso coinvolge discipline dell'ingegneria informatica e dell'ingegneria elettrica, selezionando e interconnettendo i componenti hardware per costruire computer che vengano incontro a obiettivi funzionali, prestazionali ed economici.

NOR ANSI.svg Fivestagespipeline.png SIMD.svg
Logica digitale Microarchitettura Multiprocessing
Roomba original.jpg Flowchart.png Operating system placement.svg
Ubiquitous computing Architettura dei sistemi Sistemi operativi

Analisi della performance dei calcolatori[modifica | modifica wikitesto]

La computer performance è lo studio del lavoro svolto dai computer, che ha per obiettivi generali il miglioramento del throughput di dati, il controllo del tempo di risposta, l'uso efficiente delle risorse, l'eliminazione dei colli di bottiglia, e la predizione della performance sotto carichi di punta anticipati.[24]

Computer grafica[modifica | modifica wikitesto]

La computer grafica è lo studio dei contenuti visuali digitali, e coinvolge la sintesi e manipolazione di dati immagine. Lo studio è connesso a molti altri campi dell'informatica, includendo la visione artificiale, l'elaborazione digitale delle immagini, la geometria computazionale, ed è pesantemente applicata nei campi degli effetti speciali e videogiochi.

Sicurezza informatica e crittografia[modifica | modifica wikitesto]

La sicurezza informatica è una branca delle tecnologie dell'informazione, che ha per oggetto la protezione dell'informazione da accessi non autorizzati, interruzioni, o modifiche, pur mantenendo l'accessibilità e l'usabilità del sistema per gli utenti a cui è destinato. La crittografia è la pratica e lo studio dell'occultamento (criptaggio) e della decifrazione (decriptaggio) dell'informazione. La crittografia moderna è ampiamente connessa all'informatica, poiché molti algoritmi di criptaggio e decriptaggio sono basati sulla loro complessità computazionale.

Scienza computazionale[modifica | modifica wikitesto]

La scienza computazionale è il campo di studio che concerne la costruzione di modelli matematici e tecniche di analisi quantitativa tali da utilizzare il computer per analizzare e risolvere problemi scientifici. Nella pratica, tipicamente consiste nell'applicazione della simulazione al computer e altre forme di computazione a problemi in varie discipline scientifiche.

Lorenz attractor yb.svg Quark wiki.jpg Naphthalene-3D-balls.png 1u04-argonaute.png
Analisi numerica Fisica computazionale Chimica computazionale Bioinformatica

Reti di calcolatori[modifica | modifica wikitesto]

Una rete di computer è un insieme di dispositivi hardware e software collegati l'uno con l'altro da appositi canali di comunicazione, che permette il passaggio da un utente all'altro di risorse, informazioni e dati in grado di essere pubblicati e condivisi.

Sistemi concorrenti, paralleli e distribuiti[modifica | modifica wikitesto]

La concorrenza è una proprietà dei sistemi in cui vengono eseguite svariate computazioni simultaneamente, e che potenzialmente interagiscono le une con le altre. Sono stati sviluppati diversi modelli per la generale computazione concorrente, fra cui la rete di Petri, process calculi, PRAM. Un sistema distribuito estende l'idea della concorrenza a più computer connessi attraverso una rete. Computer all'interno dello stesso sistema distribuito hanno una propria memoria, e l'informazione è spesso scambiata tra di essi per conseguire un obiettivo comune.

Basi di dati[modifica | modifica wikitesto]

Una base di dati (database) è un sistema inteso per organizzare, memorizzare, e recuperare grandi quantità di dati facilmente. Una base di dati digitale è gestita utilizzando sistemi di gestione per memorizzare, creare, mantenere, e cercare dati, attraverso modelli e linguaggi di interrogazione.

Interazione uomo-macchina[modifica | modifica wikitesto]

L'interazione uomo-macchina è campo di ricerca che sviluppa teorie, principi, e linee guida per i progettisti delle interfacce utente, in modo che possano creare esperienze utente soddisfacenti con dispositivi desktop, laptop e mobile.

Ingegneria del software[modifica | modifica wikitesto]

L'ingegneria del software è lo studio della progettazione, implementazione, e modifica del software, in maniera tale da garantire alta qualità, affidabilità, sostenibilità, e velocità nella costruzione. È un approccio sistematico al software design, che consiste nell'applicazione di pratiche ingegneristiche al software. L'ingegneria del software ha a che fare l'organizzazione e l'analisi del software, e non solo con la sua creazione e produzione, ma anche con la sua manutenzione interna e sistemazione.

Insegnamento, titoli di studio e certificazioni[modifica | modifica wikitesto]

L'insegnamento dell'informatica avviene in diversi modi ed a diversi livelli. Nelle scuole secondarie di secondo grado esiste la specializzazione di perito informatico.

L'informatica è entrata nel panorama dell'insegnamento universitario italiano negli anni Settanta. Oggi vi sono corsi di Informatica in praticamente tutte le Università che abbiano dipartimenti a carattere scientifico. Solitamente il corso di informatica appartiene alla facoltà di scienze matematiche, fisiche e naturali, anche se di fatto esiste anche un corso di laurea in ingegneria informatica presso la facoltà di ingegneria con elementi misti di informatica pura e sistemi hardware elettronici. L'attuale corso di studi è suddiviso in una laurea triennale, una laurea specialistica e il dottorato in informatica offrendo una formazione teorica di base e avanzata sull'informatica stessa.La laurea in Informatica permette inoltre di sostenere l'Esame di Stato per l'abilitazione alla professione di Ingegnere dell'Informazione.[25]

In Italia si hanno inoltre varie certificazioni che attestano una preparazione informatica sul fronte più pratico:

  • ECDL - European Computer Driving Licence, detta anche Patente europea per l'uso del computer.
  • EUCIP- European Certification of Informatics Professionals, sistema di servizi e certificazioni, di riferimento nel mondo delle professioni dell'informatica, dell'impresa e della formazione.

Esistono poi numerose altre certificazioni professionali in ambito programmazione (es. Microsoft .Net e Java della Sun Microsystems) e sistemistico (es. Red Hat Linux Administration, Windows certification, application server certification, Vmware virtualization certification, Oracle DBA certification, IBM DB2 certification, SAP certification, Cisco e Juniper networking certification), tutte altamente spendibili in ambito lavorativo nel mercato informatico aziendale, detto anche terziario avanzato, fortemente espanso a partire dai primi anni 2000 con la diffusione di Internet.

Note[modifica | modifica wikitesto]

  1. ^ Ma nel 1957 l'informatico tedesco Karl Steinbuch aveva già coniato la parola «Informatik» pubblicando un documento chiamato Informatik: Automatische Informationsverarbeitung.
  2. ^ (IT) informàtica in Vocabolario - Treccani, su www.treccani.it. URL consultato il 29 settembre 2017.
  3. ^ (FR) Alain Le Diberder, Informatique, su LeMond.fr, 24 gennaio 2001. URL consultato il 25 marzo 2016.
  4. ^ a b c d e f g h (IT) Francesco Sabatini e Vittorio Coletti, Il Sabatini Coletti dizionario della lingua italiana 2008. Con CD-ROM, Rizzoli Larousse, 31 luglio 2007, ISBN 9788852501739. URL consultato il 30 settembre 2017.
  5. ^ a b Louis Fein, The Role of the University in Computers, Data Processing, and Related Fields, in Commun. ACM, vol. 2, nº 9, September 1959, pp. 7–14, DOI:10.1145/368424.368427. URL consultato il 29 settembre 2017.
  6. ^ Durante i primi giorni del calcolo automatico, fu suggerito un gran numero di termini per i praticanti di tale campo in Communications of the ACM ‒ "turingeer", "turologist", "flow-charts-man", "applied meta-mathematician", e "applied epistemologist". Tre mesi dopo, nello stesso giornale, fu suggerito "comptologist", seguito nell'anno successivo da "hypologist". Fu suggerito anche il termine "computics".
  7. ^ Donald E. Knuth, George Forsythe and the Development of Computer Science (PDF), stanford.edu, 20 ottobre 2013. URL consultato il 29 settembre 2017 (archiviato dall'url originale il 20 ottobre 2013).
  8. ^ Carlo Sansotta, Nozioni di Informatica, Lulu.com, 2011, ISBN 9781470925024. URL consultato il 29 settembre 2017.
  9. ^ (IT) programma in Vocabolario - Treccani, su www.treccani.it. URL consultato il 29 settembre 2017.
  10. ^ a b c (IT) Fiorenzo Formichi, Giorgio Meini e Ivan Venuti, Corso di informatica. Per le Scuole superiori. Con espansione online: 1, Zanichelli, 1 gennaio 2012, ISBN 9788808161802. URL consultato il 29 settembre 2017.
  11. ^ a b Yuval Noah Harari, Homo deus. Breve storia del futuro, Bompiani, 2017, ISBN 9788845292798. URL consultato il 29 settembre 2017.
  12. ^ Giovanni Fornero e Franco Restaino, Storia della Filosofia. Il pensiero contemporaneo: il dibattito attuale, vol. 9, Gruppo Editoriale L'Espresso, 2006.
  13. ^ a b (EN) Nell Dale e John Lewis, Computer Science Illuminated, 6ª ed., Jones & Bartlett Pub, 31 dicembre 2014, ISBN 9781284055917. URL consultato il 29 settembre 2017.
  14. ^ (IT) Marisa Addomine e Daniele Pons, Informatica. Ediz. arancione. Metodi e fondamenti. Per le Scuole superiori. Con DVD. Con espansione online, Arancione, Zanichelli, 13 gennaio 2014, ISBN 9788808312785. URL consultato il 29 settembre 2017.
  15. ^ a b c d e f Walter Maraschini e Mauro Palma, Enciclopedia della Matematica, A-L, Corriere della Sera, 2014.
  16. ^ a b Paolo Freguglia (a cura di), Boole, in Grandangolo Scienza, vol. 29, Corriere della Sera, 2016.
  17. ^ Si potrebbe argomentare che tutte le funzioni del SO offrono valore aggiunto all'utente, ma molte di queste operano in background e sono trasparenti rispetto all'utilizzatore del sistema, mentre altre sono parte integrante della computing experience.
  18. ^ a b Computer Science as a Profession, csab.org, 17 giugno 2008. URL consultato il 30 settembre 2017 (archiviato dall'url originale il 17 giugno 2008).
  19. ^ (EN) National Research Council, Computer Science: Reflections on the Field, Reflections from the Field, 04 ottobre 2004, DOI:10.17226/11106, ISBN 9780309093019. URL consultato il 30 settembre 2017.
  20. ^ CSAB, Inc., su www.csab.org. URL consultato il 30 settembre 2017.
  21. ^ Peter J. Denning, Computer Science: The Discipline (PDF), idi.ntnu.no, Encyclopedia of Computer Science, 25 maggio 2006. URL consultato il 30 settembre 2017 (archiviato dall'url originale il 25 maggio 2006).
  22. ^ (EN) Graham P. Collins, Claude E. Shannon: Founder of Information Theory, in Scientific American. URL consultato il 30 settembre 2017.
  23. ^ Ronald A. Thisted, Computer Architecture (PDF), Departments of Statistics, Health Studies, and Anesthesia & Critical Care, University of Chicago, 1997.
  24. ^ Bob Wescott, The Every Computer Performace Book, 1ª ed., ISBN 1482657759, OCLC 857903757.
  25. ^ Iscrizione all'ordine degli ingegneri per laureati Informatici | ALSI, su www.alsi.it. URL consultato il 12 febbraio 2017.

Bibliografia[modifica | modifica wikitesto]

  • G. Ausiello, C. Batini, V. Frosini, «Informatica» in Enciclopedia Italiana - Appendice VI, Roma, Istituto dell'Enciclopedia Italiana, 2000.
  • A.M. Gambino, A. Stazi, Diritto dell'informatica e della comunicazione (Manuale), Giappichelli, Torino, 2009.
  • Italy. Parlamento. Camera dei deputati. Segretariato generale, ed. Ambiente e informatica: problemi nuovi della società contemporanea. Vol. 16. Servizio studi, legislazione e inchieste parlamentari, 1974.
  • Enrico Grassani, L'assuefazione tecnologica. Metamorfosi del sistema uomo-macchina, Editoriale Delfino, Milano 2014

Voci correlate[modifica | modifica wikitesto]

Altri progetti[modifica | modifica wikitesto]

Collegamenti esterni[modifica | modifica wikitesto]

Controllo di autorità LCCN: (ENsh89003285 · GND: (DE4026894-9 · BNF: (FRcb11932109b (data)
Informatica Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica