Come la matematica e la programmazione (informatica) sono legate l’una all’altra?

Questo è un po' come chiedere cosa hanno a che fare i tuoi genitori con la tua esistenza. Te ne vai a fare le tue cose dopo qualche anno? Certo! Avrai sempre un legame di sangue con i tuoi genitori? Infatti.

La matematica appare praticamente in tutte le aree dell'informatica. Anche nell'ingegneria del software, se non capisci la matematica discreta di base, sarai molto indietro nella comprensione degli algoritmi e delle strutture dati. Prima ancora che l'informatica esistesse come campo, gli algoritmi erano ancora sviluppati dai matematici.
Nella grafica computerizzata, non si potrebbe nemmeno iniziare senza una solida conoscenza dell'algebra lineare. Per l'intelligenza artificiale, vorrete essere abili nel calcolo e nell'algebra lineare, così come in diversi altri campi matematici a seconda di dove siete diretti. Per l'informatica teorica, vorrete essere ben versati in diversi argomenti, se non in tutta la matematica di base, in particolare nella probabilità.

Siccome hai chiesto come la matematica è legata all'informatica, penso che l'origine di CS sia piuttosto importante. Così facciamo un viaggio nel passato!

Pre-1920:
I fondamenti della logica matematica hanno visto una notevole crescita con circa un secolo di attività, da George Boole (1815-1864) a David Hilbert (1862 - 1943). Ricordatevi di Hilbert, perché si ripresenterà tra 8 anni.

1928:
Wow, 8 anni sono passati così in fretta! Scopriamo cosa c'è di nuovo. Ah! David Hilbert ha introdotto il famoso Entscheidungsproblem
Esiste una serie generale di passi (un algoritmo) che determina se una data affermazione può essere derivata da un insieme di assiomi. A seconda di quello che si sa, la risposta a questa domanda potrebbe essere sorprendente o ovvia.

1936:
In altri 8 anni sono successe un sacco di cose, ma mi concentrerò solo su due ragazzi in particolare. Probabilmente avrete già sentito parlare di uno di loro grazie al recente film The Imitation Game.
Alan Turing e Alonzo Church hanno entrambi indipendentemente trovato un clamoroso NO al problema dell'Entscheidungsproblem.

Turing ha fatto questo nel suo documento seminale On Computable Numbers With Am Application To The Entscheidungsproblem: Page on virginia.edu
Ha costruito la macchina di Turing, una importantissima macchina teorica di uso generale, per ragionare sulla computabilità. La macchina di Turing rimane attivamente in uso oggi, e si spera che imparerai a conoscerla in un corso di Teoria della Computazione. Fondamentalmente sono proprio come il computer o il telefono che usate attualmente ... solo molto più semplici.

Alonzo Church arrivò anche lui alla conclusione No per l'Entscheidungsproblem, ma usò una piccola cosa chiamata Lambda calculus per definire "computabilità effettiva". Va notato che il calcolo lambda è essenzialmente un linguaggio di programmazione ed è il fondamento della moderna programmazione funzionale.

Quello che si dovrebbe prendere sul calcolo lambda e sulle macchine di Turing è che sono entrambi modelli di computazione (e si dà il caso che siano equivalenti!) L'idea di computazione è nata da una domanda sulla logica matematica. Questa è la relazione fondante tra l'informatica e la matematica.

Ora, ho saltato un bel po' di dettagli in questo salto indietro nel tempo (cioè mi vergogno di aver ignorato le funzioni [math]mu - recursive[/math]!) ma penso che questo sia sufficiente per darvi un'idea generale.

1945 - Post WWII:
Come probabilmente sapete, per gentile concessione di The Imitation Game, le macchine fisiche sono state centrali nella seconda guerra mondiale per rompere Enigma. Dopo la guerra, anche l'ingegneria informatica decollò con l'obiettivo di un computer di uso generale come la macchina di Turing. L'ENIAC è uno di questi esempi, terminato direttamente dopo la guerra. Mentre l'hardware progrediva con i circuiti stampati, l'architettura di von Neumann, ecc, la programmazione e i linguaggi di programmazione seguirono. Questi sono viaggi a sé stanti e meritano di essere trattati in un'altra domanda. Le cose progredirono anche dal punto di vista teorico. L'analisi degli algoritmi sbocciò e il campo ora conosciuto come l'Informatica Teorica continuò, viaggiando presto nelle idee della teoria della complessità computazionale alla fine degli anni '50 - '60. Il resto, come si dice, è storia.

Phew! Tutto questo viaggio nel tempo mi ha reso piuttosto stanco. Non posso aspettare il mio Amazon.com : Pepsi Perfect Cola, 16.9 Ounce - Limited Collector's Edition : Grocery & Gourmet Food arrivi così posso festeggiare (a malapena ne ho avuto uno nella seconda uscita)!