王垠:一起开发 Yin 语言: - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
egen

王垠:一起开发 Yin 语言:

  •  
  •   egen 2014 年 5 月 9 日 via iPhone 19122 次点击
    这是一个创建于 4370 天前的主题,其中的信息可能已经有所发展或是发生改变。
    经常看王垠大神吐槽各种编程语言,很期待他什么时候出手自己设计语言,现在终于出手了:

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

    Github围观地址:
    https://github.com/yinwang0/yin
    68 条回复    2014-05-13 22:24:38 +08:00
    vibbow
        1
    vibbow  
       2014 年 5 月 9 日
    等他开发出来,被一大堆人吐槽后,不知道他会不会疯掉...
    Xrong
        2
    Xrong  
       2014 年 5 月 9 日 via Android
    有大一统的感觉
    vibbow
        3
    vibbow  
       2014 年 5 月 9 日
    看了一眼源代码的测试用例...

    感觉还不如回去学Haskell呢......
    blacktulip
        4
    blacktulip  
       2014 年 5 月 9 日 via iPhone   1
    目测写到最后就是个 Java
    WildCat
        5
    WildCat  
       2014 年 5 月 9 日 via iPhone
    哈哈,翻身做主人,拭目以待!
    sanddudu
        6
    sanddudu  
       2014 年 5 月 9 日
    坐等写好之后被集火喷
    bitbegin
        7
    bitbegin  
       2014 年 5 月 9 日 via Android
    前景很动人
    lang1pal
        8
    lang1pal  
       2014 年 5 月 9 日
    为什么项目页打开来发现70%都是java,不懂,坐等高手解答
    vicence
        9
    vicence  
       2014 年 5 月 9 日
    他说他缺乏硬件知识,所以现在只做软件层面的设计,而且他还跟无人机的设计者接触过,更能证明他他想更加深入的了解硬件知识
    yangff
        10
    yangff  
       2014 年 5 月 9 日
    令人感动。
    kinghenry
        11
    kinghenry  
       2014 年 5 月 9 日   1
    有中国人愿意做这样高难度的尝试,我怎么都觉得应该是感到高兴的人,别人才开始就开喷的不知道是什么心态
    rannnn
        12
    rannnn  
       2014 年 5 月 9 日
    这不是lisp么???
    ChiangDi
        13
    ChiangDi  
       2014 年 5 月 9 日
    怎么说也是个计算机博士,一般人对他做的东西一点不懂,是没资格喷他的。
    isaced
        14
    isaced  
       2014 年 5 月 9 日
    膜拜大神!
    ooh
        15
    ooh  
       2014 年 5 月 9 日
    老外那么多写语言的,这么没见人家喷?写了未必流行,没写怎么知道未必流行?
    se77en
        16
    se77en  
       2014 年 5 月 9 日
    vibbow
        17
    vibbow  
       2014 年 5 月 9 日
    一个语言能不能成功个人认为取决于三个因素:
    文档
    社区
    IDE
    manfay
        18
    manfay  
       2014 年 5 月 9 日
    Linus当年也被喷得够惨,所以后来他把事情做成了之后喷起别人来毫不留情。(好吧这只是个段子,我不知道当年的情况……)
    jsonline
        19
    jsonline  
       2014 年 5 月 9 日 via Android
    这语言的名字不好听
    NemoAlex
        20
    NemoAlex  
       2014 年 5 月 9 日   2
    “很多人对 Java 有逆反心理,然而你会发现,我的 Java 代码其实跟普通 Java 程序员的代码有很大不同,所以会比较容易读懂。”
    高端黑
    se77en
        21
    se77en  
       2014 年 5 月 9 日
    表示是位 lisp 程序员准备的

    lsmgeb89
        22
    lsmgeb89  
       2014 年 5 月 9 日
    @kinghenry 没错,而且王垠终于正式出手了!
    se77en
        23
    se77en  
       2014 年 5 月 9 日   2
    @manfay 读 Linus 的自传表示没有这一段,一开始就有很多人支持,而且当他提出 Linux 这个名字与自己太相近怕别人觉得自己自大想要换名字时,社区表示强烈反对,坚持让他用 Linux
    NemoAlex
        24
    NemoAlex  
       2014 年 5 月 9 日
    @se77en 这飘逸的缩进和诡异的换行是怎么回事...
    pepsin
        25
    pepsin  
       2014 年 5 月 9 日   4
    不知道有什么好喷的。

    这家伙之前光说,你们说有本事你搞个。

    现在他开始搞了,又说搞出来没用。

    打键盘的确是最简单的事。
    clino
        26
    clino  
       2014 年 5 月 9 日
    @se77en +1
    看了test下的这些源代码,()那么多是确定给人用的吗?
    为了降低编译器的负担才有那么多的()?
    madeinclojure
        27
    madeinclojure  
       2014 年 5 月 9 日
    LISP万岁
    se77en
        28
    se77en  
       2014 年 5 月 9 日
    @clino 倒不是降低编译器负担,lisp 语系的都这样,他自己也说是拿 scheme 当原型的
    linkgod /td>
        29
    linkgod  
       2014 年 5 月 9 日
    不知为何要被喷
    meizhile
        30
    meizhile  
       2014 年 5 月 9 日
    他说主要是一个人写,要写到什么时候才能变成比较具有生产力的语言呢?
    est
        31
    est  
       2014 年 5 月 9 日
    学院派的语言,除了haskell 各种刷分,就是个呵呵。
    kurtis
        32
    kurtis  
       2014 年 5 月 9 日
    artwalk
        33
    artwalk  
       2014 年 5 月 9 日
    @manfay Linus 当年开发 linux 的事儿,可以看他写的那本 Just for fun, 蛮有意思的

    http://book.douban.com/subject/1451172/
    zzNucker
        34
    zzNucker  
       2014 年 5 月 9 日
    @pepsin 就是

    @ChiangDi 同意,我就不懂。。。 慢慢看
    dzb2k9
        35
    dzb2k9  
       2014 年 5 月 9 日
    人因梦想而不同
    lijinma
        36
    lijinma  
       2014 年 5 月 9 日
    java没怎么用过,大家知道使用下能跑起来test ?

    没找到文档 0.0
    sneezry
        37
    sneezry  
       2014 年 5 月 9 日 via iPhone
    支持!
    clino
        38
    clino  
       2014 年 5 月 9 日
    @se77en 好吧,对lisp系基本上不了解
    不过真有人喜欢()那么多的语言吗?
    lisp语言比较小众是不是因为可读性的原因?
    binux
        39
    binux  
       2014 年 5 月 9 日
    又一个没用的语言?
    se77en
        40
    se77en  
       2014 年 5 月 9 日
    @clino 一种语言小众大众很多时候不是语言本身的原因,更多的是商业因素,Lisp 本身非常强大(非黑),而且能自我进化,其它语言的特性在 Lisp 中也就是几个宏定义的事
    ayang23
        41
    ayang23  
       2014 年 5 月 9 日
    @jsonline 同意,垠的一首好师
    对王垠的做法很支持,大部分人吐槽过头了
    somethin
        42
    somethin  
       2014 年 5 月 9 日
    感觉和Typed Racket很相似啊...
    clino
        43
    clino  
       2014 年 5 月 9 日
    @se77en 我对这种"强大"但可读性差的语言很不感冒,可能这种"本身非常强大(非黑),而且能自我进化"的语言对于少数能力比较强的人是好用的,代码量很小非常灵活,但对普通的开发人员的学习和维护上如果负担过重,那应该注定会是小众的
    在这上面不一定会是商业因素在起决定性的作用

    程序开发主要还是一种工匠类型的活动,而不是艺术创造类的,所以适合工匠们使用,能很好地工程化是很重要的
    这方面估计yinwang0不怎么会去考虑吧?
    m1a0
        44
    m1a0  
       2014 年 5 月 9 日
    额, 我承认邪恶了, 淫语言。。。
    jiang42
        45
    jiang42  
       2014 年 5 月 9 日
    @clino 同意,语言对于我来说是工具,好用顺手就行了。和花瓶一样还怎么用!
    ioleon13
        46
    ioleon13  
       2014 年 5 月 9 日
    看到域名,我也邪恶了,yinwang,王者风范
    yuelang85
        47
    yuelang85  
       2014 年 5 月 9 日
    “淫”语言。。。。。
    alsotang
        48
    alsotang  
       2014 年 5 月 9 日
    无论成败,多几个王垠的世界更有趣。
    lch21
        49
    lch21  
       2014 年 5 月 9 日
    "硬“语言

    男人女人都喜欢的语言
    muzuiget
        50
    muzuiget  
       2014 年 5 月 9 日
    呵呵
    egen
        51
    egen  
    OP
       2014 年 5 月 9 日
    @kinghenry 个人还是比较期待的,也希望真能做出些比较有用的东西
    dustinth
        52
    dustinth  
       2014 年 5 月 9 日
    王垠虽然自恋,文章吐槽也偏多,但是他有些文章的确很有深度.看不出喷他有什么意义...
    ravenw
        53
    ravenw  
       2014 年 5 月 9 日
    还是很值得期待的吧,王垠虽然喜欢喷,每次看他的文章都觉得很开眼界,也许是我太弱了?
    jiyinyiyong
        54
    jiyinyiyong  
       2014 年 5 月 9 日
    希望他的语言稍微对社区支持好些吧,
    要是真为了做到不犯错误而导致社区不方便使用, 还是在某种意义上失败了
    cpp255
        55
    cpp255  
       2014 年 5 月 9 日
    好多括号,类lisp么
    hepin1989
        56
    hepin1989  
       2014 年 5 月 9 日
    还不如在scala上搞一套再
    shyrz
        57
    shyrz  
       2014 年 5 月 9 日
    即使被喷无数,前人的尝试总是后人的借鉴,支持!
    FrankHB
        58
    FrankHB  
       2014 年 5 月 9 日
    @clino 一直没搞清楚关于这里的“可读性”的判据是什么。
    如果说命名烂,让读者搞不清楚意图,所以可读性差,那么应该都没什么意见。
    如果嫌()多,试试把一般语言的[] {} <> begin end全部替换成(),统计下token多多少,(不管人肉还是机器)parse起来能省多少劲?
    如果嫌))))))))))多觉得麻烦……看起来像那么回事,但不管是读还是写的时候都没人逼着用户靠数数来人肉匹配吧。(前的缩进也不是当摆设的。
    还是说,只是单纯看不惯使用()分隔AST节点,所以可读性就差了?
    如果只有这样的理由,只能是当作跟理性无关的习惯了。工匠需要这种品质么。
    heganj
        59
    heganj  
       2014 年 5 月 10 日
    已fork
    ini
        60
    ini  
       2014 年 5 月 10 日
    看test case,感觉有点像scheme和clojure的混合体。。
    FooNode
        61
    FooNode  
       2014 年 5 月 10 日
    看了一下他的博文,难道他想再造Lisp Machine?
    ericls
        62
    ericls  
       2014 年 5 月 10 日
    虽然不懂
    但是感觉这个人还是有几把刷子的
    lazyphp
        63
    lazyphp  
       2014 年 5 月 10 日
    虽然不懂,但能够亲自动手,这点就已经比 喷子强百倍了!我支持 王垠!
    clino
        64
    clino  
       2014 年 5 月 10 日
    @FrankHB 我对lisp系了解很粗浅,所以评论可能不太对,像对()多的这点,可能习惯了会好很多(不过我个人对这个还是表示非常怀疑),不过lisp系语言的可读性可维护性就是比其他大部分语言差这个应该会受到大部分工匠的认同吧(当然这也只是我的想当然)

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

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

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

    我说的可读性可不光外行,有时候自己写的代码过比较长时间来维护,可读性好对自己来说都是有好处的,否则比较复杂的东东自己维护都很痛苦
    当然我只是普通的工匠,能力强的黑客型开发人员另当别论了
    holy_sin
        67
    holy_sin  
       2014 年 5 月 13 日
    支持一个
    weakish
        68
    weakish  
       2014 年 5 月 13 日
    授权是 AGPL ,这意味着所有使用这个语言开发的网站都需要开源,赞~ (当然如果保持主要贡献者是 王垠的话可以找他买商业授权?
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2817 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 139ms UTC 09:37 PVG 17:37 LAX 02:37 JFK 05:37
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86