为什么c系列是LISP系列而不是数学/ CS计划的标准CS学习团?[关闭]


14

为了自我改善,我一直在熟悉LISP。我注意到的一件事是LISP在数学范式中比在C语言中更重要。语法和设计结构似乎直接反映了算法的实际数学模型。对我来说,为什么即使是基于数学的优秀CS程序也学习C而不是LISP,这对我来说都没有道理。我认为LISP比C更直接采用更高的数学概念。我并不是说您不能在C中对数学结构进行建模。我只是注意到LISP对于数学家来说似乎是一成不变的。

我已经在JAVA学校中阅读了许多Joel Spolsky的咆哮,而没有读到(我同意他的评价),但是我的学校并没有因此而教JAVA。他们在教授诸如指针,算法设计,递归甚至汇编指令之类的基本概念方面非常严格。但是,他们在C和c ++中都完成了这一切。有谁知道原因和/或其历史?


归根结底,计算机科学学位应该在某种程度上与语言无关。CS的思想是他/她应该能够学习任何新语言,因为计算机科学是理论上的。对于外界来说,CS似乎是一个全方位的课程,教您如何成为一名程序员和科学家。事实并非如此,CS就是要学习如何学习语言。
克里斯(Chris)

2
C与LISP“回避算法的实际数学模型”的方式几乎相同,C呼应硬件的实际结构,并且很直接地将C中的构造映射到内存(这对于嵌入式系统特别有用)。但是,我完全同意你的看法。我希望能有更多有关LISP的本科课程学习,所以我可以进一步深入研究
Bill VB

Answers:


13

好。因此,无聊的答案是,最终,大多数学校都教授教授们所熟悉的东西,而大多数教授并没有长大以后入侵Lisp。他们在基于Algol的语言领域中度过了早年的时光。因此,几年后,当他们建立课程时,您会结识在Pascal,然后是C,然后是C ++,然后是Java的基础上教授CS的学校。

然后,您的学校就低了一些,还年轻了几年。他们抬头看着学校领导的树立的标杆,他们看到学生离开了那些了解C的学校,并且看到自己的学生也期望C-因此他们开始教C,然后教C ++,然后Java。

最后,您拥有一些技术或“低端”机构,他们只是在教授任何与学生在履历表上想要的关键字相匹配的技术集-因此,您几乎就可以掌握Java。

话虽如此,有些学校确实在教Lisp,尽管它可能更多是选修课而不是基础语言。甚至那些不以独立语言教授Lisp的学校,也在AI课程中广泛使用它,因此,初学者AI课程的确专注于开始Lisp编程。


2
我听到了。毫不尊重C和c ++,它们一直是我一生中选择的语言,但是LISP对于数学专业的学生来说比C是更好的教学工具。谁不知道,但是CS学位的目的不是技术领域的培训,而是掌握数学和计算机科学的概念。LISP似乎更适合于此目的。
乔纳森·汉森

我认为两者都有其应有的地位,大学可能会从理论/学术方面获得更广泛的学习,从而获得CS学位,从而扩大视野。该曲目应具有多种语言,包括Lisp,Prolog,基于Algol的语言等,并且该曲目应基于实践,并且要专注于当天的实际风格。
2011年

@乔纳森·亨森:当场!
克里斯(Chris)

9

这确实取决于大学。Scheme(Lisp的方言)多年来一直是麻省理工学院计算机科学入门课程的语言,尽管最近它已被python取代。我在一所工程学校的CS中获得了学士学位,在第一年就接触了C,Scheme,Prolog和C ++。我认为这是很好的组合。

我坚信,在您的大脑陷入一种审视世界的方式之前,开始使用哪种语言比在早期接触多种范式重要得多。


1

从根本上讲,计算机科学理论是数学的。但是,软件工程不是。直接对数学概念进行建模并不是固有的优势-我认为这通常是不利的。

好的理论和好的程序不一定相关。


“好的理论和好的程序不一定相关。”:编程是关于建立和组合解决问题的抽象。而且,根据维基百科,“理论是……一种抽象或概括性思维,或这种思维的结果。” (en.wikipedia.org/wiki/Theory)因此,理论和(好的)编程确实非常接近。
乔治
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.