Perché la famiglia c è il reggimento di studio CS standard per i programmi Matematica / CS invece della famiglia LISP? [chiuso]

14

Mi sono familiarizzato con LISP per scopi di miglioramento personale. Una delle cose che ho notato è che LISP è molto più all'interno del paradigma della matematica che dire C. La sintassi e la struttura del progetto sembrano ricalcare direttamente l'attuale modello matematico di un algoritmo. Non ha senso per me perché anche i buoni programmi di matematica basati su Matematica studiano C anziché LISP. Penso che LISP utilizzi più direttamente concetti matematici più elevati di C. Non sto dicendo che non puoi modellare strutture matematiche in C. Sto semplicemente notando che LISP sembra essere cablato per i matematici.

Ho letto molte delle invettive di Joel Spolsky nelle scuole JAVA e cosa no - e sono d'accordo con la sua valutazione -, ma la mia scuola non ha insegnato a JAVA proprio per questo motivo. Erano severi nell'insegnare concetti fondamentali come i puntatori, la progettazione dell'algoritmo, la ricorsione e persino le istruzioni di assemblaggio. Tuttavia, hanno fatto tutto questo in C e c ++. Qualcuno conosce le ragioni di questo e / o della sua storia?

    
posta Jonathan Henson 17.08.2011 - 20:37
fonte

3 risposte

13

OK. Quindi, la risposta noiosa è che, alla fine, la maggior parte delle scuole insegna ciò con cui i professori si sentono a proprio agio, e la maggior parte dei professori non è cresciuta come hacking Lisp; hanno trascorso i loro primi anni nel campo con le lingue basate sull'Algol. Per questo, anni dopo, quando stanno costruendo programmi, finisci con scuole che insegnano CS con una base in Pascal, poi in C, poi in C ++ e poi in Java.

Poi hai scuole che sono di livello inferiore e di alcuni anni più giovani. E guardano al bar fissato dalle scuole che aprono la strada, e vedono che gli studenti lasciano quelle scuole conoscendo C, e vedono che i loro stessi studenti si aspettano lo stesso - quindi iniziano a insegnare C, quindi C ++, quindi Java.

Infine, hai alcune istituzioni tecniche o "di fascia bassa" che semplicemente insegnano qualunque insieme di tecnologie abbinano le parole chiave che gli studenti vogliono sui loro curriculum - quindi ti serve praticamente Java.

Detto questo, alcune scuole fanno insegnano il Lisp, sebbene possa essere più di un linguaggio elettivo che non di un linguaggio fondamentale. E anche le scuole che non insegnano il Lisp come linguaggio autonomo, lo usano ampiamente nei corsi di intelligenza artificiale, quindi i corsi per principianti di intelligenza artificiale ottengono una concentrazione all'inizio della programmazione Lisp.

    
risposta data 17.08.2011 - 21:08
fonte
9

Questo dipende molto dall'università. Schema (un dialetto di lisp) è stato il linguaggio per il corso introduttivo in informatica al MIT per secoli, anche se è stato recentemente sostituito da python. Ho ottenuto la mia laurea in CS in una scuola di ingegneria, dove sono stato esposto a C, Scheme, Prolog e C ++ durante il mio primo anno. Penso che sia stato un buon mix.

Credo fermamente che la lingua con cui inizi sia molto meno importante di essere esposta a molteplici paradigmi nella fase iniziale, prima che il tuo cervello si congeli in un modo di guardare il mondo.

    
risposta data 17.08.2011 - 22:13
fonte
1

Fondamentalmente, la teoria dell'informatica è matematica. L'ingegneria del software, tuttavia, non lo è. La modellazione diretta di concetti matematici non è un vantaggio intrinseco - direi che spesso può essere uno svantaggio.

Le buone teorie e i buoni programmi non sono necessariamente correlati.

    
risposta data 17.08.2011 - 22:47
fonte

Leggi altre domande sui tag