之前零零散散地学习了 Haskell 或 Lisp 等,这次又心血来潮想试试 Racket ,所以有了上述疑问。
从计算机教育上讲,Lisp 系列语言是否真的比 C/Python/Java 等更好?如果是,为什么后者还是主流。
进一步,目前有了 LLM ,上述情况是否有变化?
![]() |
1
lonenol 3 天前 ![]() 没啥变化,依然是圈地自萌。lisp 在可见的未来都是非主流,,但因为非主流而且语法奇怪显得逼格高,又不会被彻底淘汰。。
|
2
Meursau1T 2 天前
因为是在说“计算机教育”,所以我就从 Scheme 来说,不谈工业上的 Common Lisp 。
Scheme 虽然因为默认偏向函数式、直接展示抽象语法树这两个特点有一定优势,可以辅助理解递归概念、学习形式语言与自动机,但离开这一小部分场景后,带来的很多是劣势。 一方面语法太特别,和未来的实际应用场景完全不挂钩,这一点被 C 语言完全克制。 另一方面表达冗长,在学算法的时候,很多算法用的都是迭代、数组,用 Lisp 写会很麻烦,赋值语句都要长不少。 而且,现在计算机领域面向对象还是有一席之地的,大学可能不会教函数式,但必然会教面向对象,就 Scheme 而言,面向对象实在不是强项。 再有,考虑到计算机专业大部分课程是和硬件有关的,Scheme 的设计跟这些课程实在是不搭。 所以基本上不可能取代 C 的位置,在入门学习整个计算机领域方面 C 真的更合适,Lisp 作为课外的东西学学顶天了。 |
3
kagenomirai 2 天前
教育上也没有银弹,例如讲底层常用 C 讲算法常用 Java 。
另外教育上比较出名的应用就是上个世纪 MIT Scheme 了吧,但那个时候语言选择本来也不多。 你学过了 Lisp ,有没有感觉 Python 和 JS 包含个阉割版 Lisp ? Lisp 的很多设计已经像家常便饭一样融入主流语言,历史价值更大。 |
![]() |
4
levelworm 2 天前 via Android
函数式对应的是计算机科学 lamda calculus 这块的东西吧。
|
![]() |
5
soul11201 2 天前
首先,你把重点搞错了,语言本身其实不重要,更重要的是下面一些相关领域:
软件工程、编译原理、静态语言分析、编程语言原理、理论计算机科学、形式化证明、范畴论、语义学,这块知乎上有很多高手 谁更好?单纯从语言特性来说,看 Python/Java/PHP 很多语言加上一些特性后,有些人的那个热乎劲,跟看傻子在吃屎一样。看社区有些人为了要不要加一些人特性,撕来撕去,感觉跟傻子打架一样,仔细想想,但其实不是~ 其实他们都是不同人手中的工具,不同的语言也不过是在不同的领域流行而已~ 当年陈浩有个观测,大意是:基础设施:C/Rust 云原生:Go 企业级应用:Java 最近听了一个 Podcast 通过他们的工程实践来看:目前 LLM 不会写 Rust 。从 LLM 是个网络信息整合器来看,目前估计也写不好~ |
![]() |
6
soul11201 2 天前
再来一个先前看到的八卦:
Racket 后面会碰到延续,当年 Lua 作者发了一篇论文,说 Lua 的协程是和一阶延续是等价的~ |
![]() |
7
ZE3kr 2 天前 via iPhone
大学我觉得 Haskell 和 Lisp 都很好。C/Java/Python 留给培训机构去讲就够了。大学哪怕拿 C 去教也是与工业脱节的。美国的少数学校已经用 SML/NJ (类 Haskell )作为第一门编程课的编程语言了。
但是这么搞有很大的阻力,因为后续很多高阶一点的编程课,或者偏工业的编程课,是基于 Java 或类 C 编程语言的。Haskell 和 Lisp 又无法衔接上这些课程,最终还是要再学一遍类 C 语言。非计算机专业的话这么搞就没问题 |
![]() |
9
Ocean810975 2 天前
南大有 SICP ,这个课是买的 MIT 的 SICP 课,现用 Python 主要内容继承自原来的 Lisp 讲述的。
|
10
caiqichang 2 天前
|
![]() |
11
westtide 2 天前
你是想学函数式编程吗?在学界我们主要用它写定理证明求解器、模型检验工具,例如 https://github.com/uuverifiers/eldarica 和 HOL ,华东师范大学的邓玉欣有详细介绍函数式编程的讲义和课程。
|
![]() |
12
maix27 2 天前
》从计算机教育上讲,Lisp 系列语言是否真的比 C/Python/Java 等更好?如果是,为什么后者还是主流。
主流就更好吗?欧美的 zzzq 也是主流,人家那个你能接受?当然这个类比是错的,回到这个话题,国内的教育脱离工业界和学术界主流也不是一年两年吧? 0 几年就有上交的大学生自救指南,到现在 20 多年了,你可以想想,除了少数几个学校(清华/南大)还在革新。其他的学校的是什么情况不用讲了吧? 当然这并不意味着国外的教育就很好,我只是在评价某个国家的教育的时候拿这个举例子。 国外主要是不强制,因为没有非升即走和自由民主,对学生的学习计划的安排不会很僵硬,FP 可以是选修课,甚至可以替代 C 系做非主流的必修课,美加的滑/华大都有 racket 的课,ucb 就更极端了,直接融进入门课里,函数式和命令式, oop 兼讲。 欧校那边可能教 FP 课的(尤其是小语种,编程语种)更广泛的更广泛。 |
![]() |
13
mightybruce 2 天前
Lisp, Scheme 这些注定不会火, 并且很多函数式语言比如 go/rust 吸收了它的特点,我觉得完全没有必要再学 lisp 了,倒是 AI 大爆发后,
我觉得可以学学 AI 三大流派之一的 符号主义影响下的语言 prolog 。 |
14
KellaTeRyan 10 小时 6 分钟前
@mightybruce prolog 对于先入为主的人很难改变,之前每次想学的时候都会先想 java 怎么实现。
|
![]() |
15
xiaopanzi OP @KellaTeRyan 我也接受不了 Prolog 。
|