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

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 estrutura da sintaxe e do design parece ecoar diretamente o modelo matemático real de um algoritmo. Não faz sentido para mim por que bons programas de CS baseados em matemática estudam C em vez de LISP. Penso que o LISP emprega mais diretamente conceitos matemáticos do que C. Não estou dizendo que você não pode modelar estruturas matemáticas no C. Estou apenas observando que o LISP parece estar muito conectado para matemáticos.

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


No final do dia, um diploma em ciência da computação deve ser independente da linguagem em certa medida. A idéia de um CS é que ele / ela deve ser capaz de aprender qualquer novo idioma, pois a ciência da computação é teórica. Para o exterior, o CS parece ser o ensinamento completo, inclusive como ser um programador e um cientista. Não é esse o caso, é o aprendizado do aprendizado de um idioma.
Chris

2
Da mesma forma que o LISP "ecoa o modelo matemático real de um algoritmo", C ecoa a estrutura real do hardware e é simples como as construções no C são mapeadas para a memória (o que é naturalmente especialmente útil para sistemas embarcados). No entanto, eu concordo totalmente com você. Eu teria apreciado mais alguns cursos de graduação no LISP para poder realmente aprofundar ainda mais o assunto #
Bill VB

Respostas:


13

ESTÁ BEM. Portanto, 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 invadindo o Lisp; eles passaram seus primeiros anos no campo com idiomas baseados em Algol. Por causa disso, anos depois, quando eles estão criando um currículo, você acaba com escolas que ensinam CS com base em Pascal, depois em C, depois em C ++ e em Java.

Então você tem escolas que são um pouco mais baixas e alguns anos mais jovens. E eles olham para o padrão estabelecido pelas escolas que lideram o caminho, e veem que os alunos deixam essas escolas conhecendo C, e veem que seus próprios alunos esperam o mesmo - então eles começam a ensinar C, depois C ++ e depois Java.

Por fim, você tem algumas instituições técnicas ou de "nível mais baixo" que simplesmente ensinam qualquer conjunto de tecnologia que corresponda às palavras-chave que os alunos desejam em seus currículos - para que você obtenha o Java.

Dito isto, algumas escolas fazem ensinar Lisp, embora possa ser mais de uma disciplina eletiva em vez de uma linguagem fundamental. E mesmo as escolas que não ensinam o Lisp como um idioma autônomo, o usam extensivamente nos cursos de IA; portanto, os cursos iniciantes de IA concentram-se no início da programação do Lisp.


2
Eu te ouço. Sem desrespeito ao C e c ++, elas foram minhas línguas de escolha durante toda a minha carreira, mas o LISP seria uma ferramenta de ensino muito melhor para os estudantes de matemática do que o C. O C é uma ótima linguagem e, de qualquer maneira, eu nunca contrataria alguém quem não sabia disso, mas o objetivo de um diploma de CS não é o treinamento técnico em campo, é dominar os conceitos de Matemática e Ciência da Computação. O LISP parece muito mais adequado para esse fim.
Jonathan Henson

Eu acho que ambos têm o seu lugar, e as universidades podem se beneficiar de ter uma trilha mais teórica / acadêmica para um diploma em CS, onde você amplia sua mente. Essa faixa deve ter uma boa variedade de idiomas, incluindo Lisp, Prolog, baseado em Algol, etc. E uma faixa baseada na prática, com uma concentração em qualquer que seja o sabor prático do dia.
Andrey Butov 17/08/11

@ Jonathan Henson: Spot on!
Chris

9

Isso realmente depende da universidade. O esquema (um dialeto do lisp) tem sido a linguagem para o curso introdutório de ciência da computação no MIT há séculos, embora tenha sido substituído por python recentemente. Eu me formei 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 ser exposta a múltiplos paradigmas desde o início, antes que seu cérebro congele em uma maneira de ver o mundo.


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.


"Boas teorias e bons programas não estão necessariamente relacionados.": Programação consiste em construir e combinar abstrações que resolvem problemas. E, de acordo com a wikipedia, "Teoria é um ... tipo de pensamento abstrato ou generalizador, ou os resultados de tal pensamento". ( en.wikipedia.org/wiki/Theory ) Então, teoria e (boa) programação são realmente muito próximas uma da outra.
Giorgio
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.