lisp 的开发原则是, 自下而上, 从小到大, 建立从思维概念到应用领域的映射, 从而实现 DSL, 用问题领域的概念来思考问题, 而不是用电脑领域的概念来思考.
用 haskell 写的毕业设计, 加上注释才 114 行的代码就让我知道了, 从更高的维度思考问题, 代码会多么简单.
在这点上, haskell 可以算是一种新兴的语言, 说实话, 它很强大, 但是:
1, 它太纯了, 要实现副作用, 比较麻烦
2, 它是静态类型推导的, 比较严格, 我不是太喜欢
3, 它基于范畴论, 我的数学基础还远没有到那个深度
4, 它调试和开发起来比较慢, 在我看来, 经常因为一些诡异的错误编译不能通过, 相比 REPL, 要困难得多, 而 REPL 的思考和开发方式, 正是我的思维方式. 像 ghci 这样的东东还是很好的.
5, 它是一种相对较新的语言, 还在不断变化, 版本之间的兼容性(6 和 7 之间就有很多不兼容) 尚需要时间的磨练, 而 lisp 已经经历了半个世纪之久, 基本没什么变化.
当然,它也有好外
1, 编译生成 obj, 体积也比较小, deploy 比较方便
2, monad 这种纯粹从数学映射过来的想法, 无疑是强大的 ( 只是我暂时没看出它的用处 )
3, 纯粹的 deep copy
4, 完全数学形式上的函数定义
5, 功能强大的 list comprehension
6, 优美的 curry
7, lazy
8, 数据和函数真的没有区别, 看不出来什么是数据, 什么是函数 ( common lisp 中有时还是需要标记的)
所以, 我现在更倾向于学习 lisp, 当然, 后面还是要深入学习 haskell 的.
阅读(1298) | 评论(0) | 转发(0) |