¿Por qué la familia c es el regimiento de estudio CS estándar para los programas de Matemáticas / CS en lugar de la familia LISP? [cerrado]

14

Me he estado familiarizando con LISP para fines de superación personal. Una de las cosas que he notado es que LISP está mucho más dentro del paradigma de las Matemáticas que decir C. La estructura de sintaxis y diseño parece hacer eco directamente del modelo matemático real de un algoritmo. No tiene sentido para mí por qué incluso los buenos programas de CS basados ​​en matemáticas estudian C en lugar de LISP. Creo que LISP emplea más directamente conceptos matemáticos más altos que C. No digo que no se puedan modelar estructuras matemáticas en C. Simplemente me doy cuenta de que LISP parece estar conectado a los matemáticos.

He leído muchas de las críticas de Joel Spolsky sobre las escuelas de JAVA y lo que no, y estoy de acuerdo con su evaluación, pero mi escuela no enseñó JAVA por esa misma razón. Fueron estrictos en la enseñanza de conceptos fundamentales como punteros, diseño de algoritmos, recursividad e incluso instrucciones de ensamblaje. Sin embargo, hicieron todo esto en C y c ++. ¿Alguien sabe las razones de esto y / o su historia?

Jonathan Henson
fuente
Al final del día, un título en informática debería ser agnóstico al lenguaje en cierta medida. La idea de un CS es que él / ella debería poder aprender cualquier idioma nuevo ya que la informática es teórica. Fuera de CS, parece ser el todo incluido que le enseña cómo ser un programador y un científico. Este no es el caso, aprender a aprender un idioma es de lo que se trata CS.
Chris
2
De la misma manera que LISP "hace eco del modelo matemático real de un algoritmo", C hace eco de la estructura real del hardware y es sencillo cómo las construcciones en C se asignan a la memoria (que es naturalmente especialmente útil para sistemas integrados). Sin embargo, estoy totalmente de acuerdo contigo. Hubiera apreciado más cursos de pregrado en LISP para poder profundizar aún más en ello
Bill VB

Respuestas:

13

OKAY. Entonces, la respuesta aburrida es que, al final, la mayoría de las escuelas enseñan con qué se sienten cómodos los profesores, y la mayoría de los profesores no crecieron pirateando a Lisp; Pasaron sus primeros años en el campo con idiomas basados ​​en Algol. Debido a esto, años más tarde, cuando están creando un plan de estudios, terminas con escuelas que enseñan CS con una base en Pascal, luego C, luego C ++ y luego Java.

Entonces tienes escuelas que son un nivel más bajo y algunos años más jóvenes. Y miran hacia la barra establecida por las escuelas que lideran el camino, y ven que los estudiantes abandonan esas escuelas sabiendo C, y ven que sus propios estudiantes esperan lo mismo, por lo que comienzan a enseñar C, luego C ++, luego Java.

Finalmente, tiene algunas de las instituciones técnicas o de "nivel inferior" que simplemente enseñan cualquier conjunto de tecnología que coincida con las palabras clave que los estudiantes desean en sus currículums, por lo que prácticamente obtiene Java.

Dicho esto, algunas escuelas enseñan Lisp, aunque puede ser más un lenguaje electivo que básico. E incluso las escuelas que no enseñan a Lisp como idioma independiente, lo usan ampliamente en los cursos de IA, por lo que los cursos de IA para principiantes se concentran en comenzar la programación de Lisp.

Andrey Butov
fuente
2
Te escucho. Sin faltarle el respeto a C y c ++, han sido mis lenguajes de elección en toda mi carrera, pero LISP sería una herramienta de enseñanza mucho mejor para estudiantes de matemáticas que C. C es un gran lenguaje, y por supuesto, nunca contrataría a alguien quien no lo sabía, pero el propósito de un título de CS no es la capacitación técnica de campo, es dominar los conceptos de Matemáticas e Informática. LISP parece mucho más adecuado para este propósito.
Jonathan Henson
Creo que ambos tienen su lugar, y las universidades pueden beneficiarse de tener una trayectoria más teórica / académica para obtener un título de CS donde amplíe su mente. Esa pista debe tener una buena variedad de idiomas, incluidos Lisp, Prolog, basado en Algol, etc., y una pista basada en la práctica, con una concentración en el sabor práctico del día.
Andrey Butov
@ Jonathan Henson: ¡En el clavo!
Chris
9

Esto realmente depende de la universidad. Scheme (un dialecto de lisp) ha sido el lenguaje para el curso introductorio de ciencias de la computación en el MIT durante años, aunque recientemente ha sido reemplazado por python. Obtuve mi BS en CS en una escuela de ingeniería, donde estuve expuesto a C, Scheme, Prolog y C ++ durante mi primer año. Creo que fue una buena mezcla.

Creo firmemente que con qué lenguaje comienzas es mucho menos importante que estar expuesto a múltiples paradigmas desde el principio, antes de que tu cerebro se congele en una forma de mirar el mundo.

Dima
fuente
1

Fundamentalmente, la teoría de la informática es matemática. La ingeniería de software, sin embargo, no lo es. Modelar conceptos matemáticos directamente no es una ventaja inherente; diría que a menudo puede ser una desventaja.

Las buenas teorías y los buenos programas no están necesariamente relacionados.

DeadMG
fuente
"Las buenas teorías y los buenos programas no están necesariamente relacionados". La programación se trata de construir y combinar abstracciones que resuelvan problemas. Y, según Wikipedia, "la teoría es ... un tipo de pensamiento abstracto o generalizador, o los resultados de dicho pensamiento". ( en.wikipedia.org/wiki/Theory ) Entonces, la teoría y la (buena) programación son realmente muy cercanas entre sí.
Giorgio