王垠:一起开发 Yin 语言:

2014-05-09 04:51:53 +08:00
 egen
经常看王垠大神吐槽各种编程语言,很期待他什么时候出手自己设计语言,现在终于出手了:

一起开发 Yin 语言:
http://www.yinwang.org/blog-cn/2014/05/08/yin-lang/

Github围观地址:
https://github.com/yinwang0/yin
18384 次点击
所在节点    分享发现
68 条回复
FooNode
2014-05-10 00:16:20 +08:00
看了一下他的博文,难道他想再造Lisp Machine?
ericls
2014-05-10 01:11:21 +08:00
虽然不懂
但是感觉这个人还是有几把刷子的
lazyphp
2014-05-10 14:16:54 +08:00
虽然不懂,但能够亲自动手,这点就已经比 喷子强百倍了!我支持 王垠!
clino
2014-05-10 22:36:25 +08:00
@FrankHB 我对lisp系了解很粗浅,所以评论可能不太对,像对()多的这点,可能习惯了会好很多(不过我个人对这个还是表示非常怀疑),不过lisp系语言的可读性可维护性就是比其他大部分语言差这个应该会受到大部分工匠的认同吧(当然这也只是我的想当然)

搜了一下别人的说法,这个不知道你会不会认同?
"那么建立特定领域的语言来作为一个问题的解决方案,它会出现什么问题呢?结果是它非常高效。然而,这种做法会使语言分化。这导致许多子语言都略有不同。这是Lisp代码对其他人而言可读性差的真正原因。在其他语言中,相对来说比较简单就能臆测出一段给定代码的作用。有着超强的表达力的Lisp,由于一个给定的符号(symbol)可能是一个变量,函数或操作,需要阅读大量代码才能找出它。"

"在其他语言中,相对来说比较简单就能臆测出一段给定代码的作用",适合于工匠

"有着超强的表达力的Lisp,由于一个给定的符号(symbol)可能是一个变量,函数或操作,需要阅读大量代码才能找出它" 黑客比较容易做到,比如你可能就是这种人
FrankHB
2014-05-11 16:43:58 +08:00
@clino 代码可读性好还是不好,根本上取决于两类因素:代码自身的构造;读者的理解能力。光从一个角度考虑得到的不全面的结论难以说明多少问题。是不是习惯了就会“好很多”,也得看代码写的怎么样和读者的理解水平怎么样两方面,没法一言蔽之。
要使特定领域的语言来作为一个问题的解决方案具有可操作性,一个重要的前提是读者必须具有对这个领域足够熟悉。不管是不是针对工匠,没有这个前提的“臆测”都是下下之选——这可能会让一个解决方案看起来可行,却埋下更高的因为理解错误带来整体失败的风险。如果你说的“可读性”好包括能让外行臆测比较容易撞大运蒙对的话,那我情愿可读性更差一点,排除掉不合格的读者,免得逼所有人都一起低效。大部分工匠更喜欢怎么样我没法下定论,但我相信,干大部分活的工匠不会乐于为蒙出来的问题买单。
从绝对意义上来说,只要用户有超过一种语用习惯,语言的分化是不可避免的。消极避免语言分化基本上算不上是可行的选择。实际上用户需要的结果是尽量达成合理的共识,这跟分化并不全然矛盾。在工程上,形成共识的一种主要手段是参照规范。无论在此之前如何减少了分化,也不会取代这个步骤,这个意义上刻意从语言设计上避免分化,在这里就成了过早的优化。
进一步地,在特定的环境下,因为语用习惯的多样性导致的“可读性差”是不是真能成问题,也未为可知。如果使用的代码总是由具有足够领域经验的用户编写的,一组项目中在参照规范之前取得领域含义的共识来解决“由于一个给定的符号可能是一个变量,函数或操作”这样的问题都不怎么困难。
而如果说要让所有用户都形成统一的风格,上面所说的“事后”方法自然的确不怎么可行,非得要做到就基本只能残害语言设计的灵活了;但这同样没有多少现实意义:取得共识的成本大于收益,还仅仅因为习惯问题就提前把一部分可能发挥价值的潜在用户排除掉了。
顺便,利用语言的分化恰恰能够更快捷地设计DSL并观察有效性。至于文化之类另当别论。
clino
2014-05-11 17:42:14 +08:00
@FrankHB "如果你说的“可读性”好包括能让外行臆测比较容易撞大运蒙对的话,那我情愿可读性更差一点,排除掉不合格的读者,免得逼所有人都一起低效"
可能喜欢lisp系的人想法都和你比较接近吧,而且你我的观点不矛盾,我说lisp系看起来注定小众,你说小众比较好

我说的可读性可不光外行,有时候自己写的代码过比较长时间来维护,可读性好对自己来说都是有好处的,否则比较复杂的东东自己维护都很痛苦
当然我只是普通的工匠,能力强的黑客型开发人员另当别论了
holy_sin
2014-05-13 11:18:28 +08:00
支持一个
weakish
2014-05-13 22:24:38 +08:00
授权是 AGPL ,这意味着所有使用这个语言开发的网站都需要开源,赞~ (当然如果保持主要贡献者是 王垠的话可以找他买商业授权?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/111703

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX