Perché informatica scienza (vedi sotto) e persino programmazione informatica, è matematica applicata.
Ed Dubinsky, un insegnante di matematica che una volta era un programmatore professionista stesso, ha detto:
La conoscenza matematica di una persona è la sua tendenza a rispondere a certi tipi di situazioni problematiche percepite costruendo, ricostruendo e organizzando processi mentali e oggetti da usare per affrontare le situazioni.
A un livello leggermente meno generale, considera cos'è la matematica. Scegli o crei un linguaggio in cui puoi esprimere determinate idee e quindi la manipolazione simbolica secondo un insieme di regole che hai anche scelto o creato per creare dichiarazioni più valide in quella lingua secondo quelle regole. Se non stai attento a farlo correttamente, potresti uscire con affermazioni non valide. I risultati che ottieni possono avere una sorta di applicazione nel "mondo reale" (ad esempio, posso usare il linguaggio e le regole degli "interi" per tenere traccia di ciò che le persone mi devono e io devo loro) o possono essere solo un lavoro per aiutare capisci meglio come puoi usare il linguaggio e le regole e come possono esserti utili per un ulteriore utilizzo.
In molte parti della matematica usiamo simboli particolari chiamati "numeri" e abbiamo una vasta libreria di regole e linguaggi spesso condivisi in relazione a questo, ma ci sono altre aree della matematica che non usano affatto i numeri (ad esempio, la teoria delle categorie) o, sebbene possano essere applicate ai numeri, non riguardano realmente i numeri di per sé (teoria dei gruppi, strutture algebriche, molti altri).
Anche prima di entrare nello studio o nell'uso di algoritmi particolari e simili, scrivere un programma per computer è fondamentalmente quello che ho descritto sopra. Molti dei concetti "più semplici" nella programmazione di computer che utilizziamo ogni giorno, come l'idea di una funzione, sono concetti puramente matematici.
Ora, come hai visto, è perfettamente possibile attaccare il mondo reale
problemi con questi strumenti matematici in modo non rigoroso e ottenere risultati utili. Tipicamente i risultati non saranno veramente corretti (cioè, i tuoi programmi avranno bug), ma saranno "abbastanza corretti" per svolgere il lavoro. (Per un programma ben scritto nell'industria, potresti non incontrare mai le situazioni che dimostrerebbero che non è corretto.) Questa è la disciplina dell'ingegneria: ottenere risultati che funzionano abbastanza bene nel mondo reale a costi accettabili.
Ma anche quando fai ingegneria, gran parte di ciò che fai funziona bene solo perché qualcuno è andato e ha fatto abbastanza sollevamento pesi matematici da darti concetti e strumenti che puoi usare per farlo. Potresti non avere una buona comprensione di cosa una funzione o una relazione è, ma il tuo linguaggio di programmazione o il tuo sistema di database funziona perché qualcuno ha capito quelli.
E le persone che hanno fatto quel lavoro sono gli scienziati informatici.
Tutto questo è stato conosciuto e seriamente contemplato da molto tempo. Penso che sia particolarmente ben dimostrato da un commento nel classico articolo di PeterLandin del 1966 ["The Next 700 ProgrammingLanguages"] [landin66]:
Il contributo più importante di LISP non era nell'elaborazione delle liste o nell'allocazione della memoria o notazione, ma nelle proprietà logiche che stanno dietro la notazione. qui ISWIM apporta pochi miglioramenti perché, a parte qualche piccolo dettaglio, LISP non ne ha lasciato nessuno da fare. Esistono due modi equivalenti per affermare queste proprietà.
(a) LISP ha semplificato le relazioni di equivalenza che determinano la misura in cui i pezzi di un programma possono essere scambiati senza influenzare il risultato.
(b) LISP ha portato la classe di entità che sono denotate da espressioni che un programmatore può scrivere più vicino a quelle che sorgono nei modelli di sistemi fisici e nei sistemi matematici e logici.
Se lo capisci (che probabilmente richiede una comprensione almeno intuitiva del lambda calcolo o simili), tu
probabilmente rendiamo conto che molti dei problemi che affrontiamo oggi sono ancora gli stessi problemi fondamentalmente matematici che venivano indagati negli anni '60 quando stavamo studiando seriamente cosa sia e cosa significhi veramente un "linguaggio di programmazione". strong> Sui programmi di lavoro
Si può anche guardare a questo dal punto di vista più ristretto di "Voglio solo scrivere un programma e assicurarmi che funzioni". Anche qui questo diventa matematica se prendi come vincolo "Voglio davvero, nel miglior modo possibile, assicurarmi che funzioni". EWD303 di Dijkstra, "Sull'affidabilità dei programmi", espone questo argomento in dettaglio. Il suo riassunto:
I problemi di affidabilità ci costringono a limitarci a programmi gestibili intellettualmente. Questo ci pone di fronte alle domande "Ma come gestiamo intellettualmente una struttura complessa? Quali aiuti mentali abbiamo, quali modelli di pensiero sono efficienti? Quali sono i limiti intrinseci della mente umana che dovremmo rispettare meglio?" Senza la conoscenza e l'esperienza, sarebbe molto difficile rispondere a tali domande, ma fortunatamente la nostra cultura ospita una tradizione di secoli una disciplina intellettuale il cui scopo principale è applicare una strutturazione efficiente a complessità altrimenti intellettualmente ingestibili. Questa disciplina si chiama "Matematica". Se prendiamo l'esistenza dell'impressionante corpo della matematica come prova sperimentale dell'opinione che per la mente umana il metodo matematico è, in effetti, il modo più efficace per affrontare la complessità, non abbiamo più scelta: dovremmo rimodellare il nostro campo di programmazione in modo tale che i loro metodi di comprensione diventino ugualmente applicabili, poiché non ci sono altri mezzi.
Su "Informatica" contro "Informatica"
Alcuni di noi, inclusa l ' University of Alberta, trovano il nome più comune della disciplina leggermente fuorviante e invece
preferisco chiamarlo Informatica Scienza. Come ha detto Keith Smillie in "Computing Science at the University of Alberta, 1957-1993":
La scelta del nome "informatica" invece del più comune "informatica" è stata deliberata per indicare che l'informatica piuttosto che i computer doveva essere il fondamento della disciplina.
Pensare a ciò con cui stiamo discutendo come "informatica" piuttosto che "computer "Way può aiutarti a ricordare che tutto il software in esecuzione nel mondo di oggi dipende molto più dagli strumenti matematici che utilizziamo per essere in grado di modellare in modo efficace e accurato i nostri problemi e il mondo che dall'hardware su cui gira.