Home
 
寻找漂亮的语言
 
这篇文章会有很多个人观点吧, 不大熟悉这方面的同学注意链接, 高人的话求指点
从开源的习惯说, 不喜欢一门语言可以动手 Folk 一个版本, 直到得心应手
但不是说每个人有能力去完成一门新的语言, 我一直在尝试也没有窥到门径
也因为我的语法洁癖, 恐怕永远无法安于他人设计的一种语言了, 即便是 CoffeeScript
很庆幸很早我就学过了一些 Haskell, 没有函数式编程, 编程也许会是非常无趣
当然, 有人会说具体问题需要具体的工具, 不过这不是我最关心的一点
我关心的是语言能更好地表达和解释困惑和现象, 一种能在我脑子里流畅运行的语言
 
语法
 
语法是编程语言很直观的区别, 我期待的是, 所有多余的语法都交给算法处理
比如 Scheme 外层的圆括号, 块级代码的 end{}, 纯粹是影响到语言的舒适度
人们制定编码规范, 设计漂亮的编辑器功能, 却不去美化语法本身, 我难以接受
知乎上有说那是解析语法的工具的需要. 可是我觉得那是可以被解决的问题
而且已经有许多语言可以用来解决问题, 代码的可读性的对比 非常明显
rosettacode.org/wiki/Pi
那么为什么就不能选取更漂亮的语言, 作为自己的日用, 而非要面面俱到
 
源于 Lisp 的语法正像 Alan Kay 说的, 仅仅是编程语言的材料而已
个人觉得到 Clojure 吸收了太多复杂的概念, 完全不如 Scheme 那样继续简洁
既然是材料, 我更觉得 Clojure 中泛滥的语法让他更像是 JS 或者 Java 了
我尝试写了脚本去减少 Guile 教程里括号的使用, 明显, 语言应该减少一些括号
我更期待有一天括号可以被图形的分隔取代, 像 Cirru 所展望的那样
Lisp 语言成堆的 ))) 恐怕是我却步的一个原因, 因为缩进语言并没有在那里推广
 
平台
 
再是平台, Linux, JVM 上都有很棒的语言, 也是现在大多语言运行的平台
可我一开始接触到是浏览器, 随后 V8 的强大带来了相当多给新手玩耍的便利
JS 本身几乎是很丑陋的语法, 直到 CoffeeScript 进入视野我才开始上手
后来, 其实 JS 平台有了相当多不错的语言可以选择, 下面的列表很多人都看到了
github.com/jashkenas/coffee-script/wiki/List-of-languages-that-compile-to-JS
我花费了相当多精力在 CoffeeScript 上, 我一直觉得目前还是最适合我的语言
coffee-js.github.com/coffeescript.cn/
 
我没有继续学 Haskell 学 Scheme 的原因是他们并不轻松的模块管理工具
cabal 是要编译的, Racket 和 Guile 也没有像 Gems 那么轻松的工具用来管理
JVM 上的语言通常和 Java 模块关系紧密, 而我并不熟悉 Java 那套工具
JVM 上也有语法非常精致的语言, 但因为这我不想去亲近了
looplang.org/
 
工具
 
更现实地说, 学习编程是为了做更便利的工具来方便日常的生活
比如说创建图形, 处理文本, 甚至聊天室一类网上省事的工具, 主要是便利
用更强大的语言开发出服务几亿用户的系统当然是很好的, 可那是一个人么
编程就像喜欢动手的人去制作器具完善自己的生活
可惜目前只有浏览器平台才是能轻易运行到别人电脑上, 又能很好地交互的语言
对, 因为这样想了, 所以上边我都白说了, 因为我没有多少选择了
JS 有很多的不足, 但它有速度, 有用户, 有开发者, 而且便于入门
 
寻找
 
于是我渐渐用烦了 CoffeeScript, 最后还是尝试去找 JS 上的语言
而且我长久以来一直在这里徘徊, 无论寻找合适学习
当然很多语言能够编译成为 JS, 但为了能用上平台大量的模块, 必须有改变
 
类似 Lisp 语法的语言我最后找到了 LispyScript
lispyscript.com/ lispyscript.com/tryit/
文档上操作 JS 基本的数据类型的例子明确了, 能看出来的
除了括号, 我还在犹豫, 因为和 CoffeeScript 一样, 里面依然完全是 JS
另外一门漂亮的语言是 Sibilant, 幻灯片介绍很清晰, 我也觉得非常有意思
sibilantjs.info/#welcome
但是处理 - 连接的变量名和字符串还有 macro 都比较怪异, 我不喜欢
 
Haskell 类似的语言, 之前有 Elm, 然而完全不能用 jQuery 的方式操作 DOM 了
比较吸引人的是 Roy, 文档也还不错, 虽然的确能说比较苍白
roy.brianmckenna.org/
因为缺少文档, 我并不能马上将其用在 Node 和浏览器的脚本当中
同时 NPM 上的模块有多少是否能在代码中使用, 我也看不清楚
此外还有 Fay, 可我不觉得那是全然跑在 Node 当中的语言了
fay-lang.org/
 
CoffeeScript 的方言中用 Coco 和 LiveScript 曾经被唐凤大神推荐过
github.com/satyr/coco/wiki/side-by-side-comparison
gkz.github.com/LiveScript/
两者都在基础上加入了大量语法糖, 让人很有种被甜腻的感觉
后者加入了很多 Haskell 影响的语法, 我觉得用起来会有不少难度
实际上我不喜欢大量设计语法, 语言就应该简洁一些不是么
另外一门 Contracts.coffee 加入了 Haskell 的类型匹配语法
disnetdev.com/contracts.coffee/
但我写的小脚本对类型问题并不敏感, 所以没有尝试用过
 
Moescript 是国人写的语言, 像 Python, 我看到许多别处没的语法
weibo.com/belleveinvis
be5invis.github.com/moescript/
感觉就"羡慕"两个字概括了.
 
另一门比较中意的语言是 Move, 文档非常不错, 也有点像 Python
movelang.org/language/
rsms.me/2011/03/02/move-programming-language.html
rsms.me/2011/07/30/an-update-on-move.html
不去看语法的特殊, 文档还有语言的细节看得人很舒服, 甚于 CoffeeScript
我同时看了下作者另外一门 Hue 语言, 单纯缩进的语言非常清爽
rsms.me/2012/05/14/hue.html
github.com/rsms/hue
 
对比下来我主要想尝试下 Move 和 Moe, 可惜, 两者都没有成功
很早, 我在知乎发贴问有什么漂亮的语言, 很多达人指点了答案
www.zhihu.com/question/19696446
一般语言之争不会多少好的结果, 可我依然一直挑剔着不同的语言
回到文章开头说的, 应该自己去做, 没有语言会来主动适应我的
同样我也在期待一天刷 RSS 就看到了很漂亮的语言发布了, 那才美的
 
comments powered by Disqus