Por que a família c é o regimento padrão de estudos de CS para programas de Matemática / CS em vez da família LISP? [fechadas]

14

Eu tenho me familiarizado com o LISP para fins de auto-aperfeiçoamento. Uma das coisas que notei é que o LISP está muito mais dentro do paradigma da matemática do que o C. A sintaxe e a estrutura do design parecem refletir diretamente o modelo matemático real de um algoritmo. Não faz sentido para mim por que mesmo bons programas de CS baseados em Matemática estudam C em vez de LISP. Eu acho que o LISP emprega mais diretamente conceitos matemáticos mais elevados do que C. Eu não estou dizendo que você não pode modelar estruturas matemáticas em C. Estou apenas percebendo que o LISP parece ser hard-wired para matemáticos.

Eu li muitos discursos de Joel Spolsky nas escolas de JAVA e o que não - e eu concordo com sua avaliação -, mas minha escola não ensinou JAVA por essa mesma razão. Eles eram rigorosos no ensino de conceitos fundamentais como ponteiros, design de algoritmos, recursão e até mesmo instruções de montagem. No entanto, eles fizeram isso tudo em C e c ++. Alguém sabe as razões para isso e / ou sua história?

    
por Jonathan Henson 17.08.2011 / 20:37
fonte

3 respostas

13

OK. Assim, a resposta chata é que, no final, a maioria das escolas ensina com o que os professores se sentem confortáveis, e a maioria dos professores não cresceu hackeando Lisp; eles passaram seus primeiros anos no campo com linguagens baseadas em Algol. Por causa disso, anos mais tarde, quando eles estão construindo o currículo, você acaba tendo escolas que ensinam CS com uma base em Pascal, C, C ++ e Java.

Então você tem escolas que são um nível mais baixo e alguns anos mais jovens. E eles olham para o bar que foi definido pelas escolas que lideram o caminho, e eles vêem que os alunos deixam essas escolas sabendo C, e eles vêem que seus próprios alunos esperam o mesmo - então eles começam a ensinar C, então C ++ Java.

Finalmente, você tem algumas das instituições técnicas ou "de baixo custo" que simplesmente ensinam qualquer conjunto de tecnologia que irá combinar as palavras-chave que os alunos querem em seus currículos - então você basicamente consegue Java.

Dito isto, algumas escolas do ensinam Lisp, embora possa ser mais uma linguagem eletiva do que fundacional. E mesmo as escolas que não ensinam Lisp como uma linguagem autônoma, usam-na extensivamente em cursos de IA, então cursos de IA iniciantes se concentram em iniciar a programação de Lisp.

    
por 17.08.2011 / 21:08
fonte
9

Isso realmente depende da universidade. Scheme (um dialeto de lisp) tem sido a língua para o curso introdutório em ciência da computação no MIT há muito tempo, embora tenha sido substituído por python recentemente. Fiz meu BS em CS em uma escola de engenharia, onde fui exposto a C, Scheme, Prolog e C ++ durante meu primeiro ano. Eu acho que foi uma boa mistura.

Acredito firmemente que a linguagem com a qual você começa é muito menos importante do que estar exposto a múltiplos paradigmas no início, antes que seu cérebro se congele em um modo de olhar o mundo.

    
por 17.08.2011 / 22:13
fonte
1

Fundamentalmente, a teoria da ciência da computação é matemática. Engenharia de software, no entanto, não é. Modelar conceitos matemáticos diretamente não é uma vantagem inerente - eu diria que muitas vezes pode ser uma desvantagem.

Boas teorias e bons programas não estão necessariamente relacionados.

    
por 17.08.2011 / 22:47
fonte