V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
jiyinyiyong
V2EX  ›  程序员

我觉得现在的编程语言括号都太多了

  •  
  •   jiyinyiyong ·
    jiyinyiyong · 2013-02-22 18:27:15 +08:00 · 8392 次点击
    这是一个创建于 4290 天前的主题,其中的信息可能已经有所发展或是发生改变。
    在 Github 上写了篇详细的, 不过大意我概括一下:
    https://github.com/jiyinyiyong/cirru-script/issues/3

    * 代码块增多的括号, 导致手动编辑不方便, 过于依赖编辑器
    * 若干个例子当中, 有括号存在, 对文本编辑造成了明显影响
    * 干扰了文本操作本身的简洁, 太复杂化
    * 造成了一些不必要的操作, 就像分号那样多此一举
    * 现在的编辑器对缩进的支持不够强大

    至于说倾向什么样的代码, 我想基本上是去掉括号的 Scheme 语法
    http://site.douban.com/125894/widget/public_album/4973595/photo/1846146215/
    虽然我不觉得缩进是完美的方案, 但相对来说我是讨厌编程语言里有大量的括号
    48 条回复    1970-01-01 08:00:00 +08:00
    xiaochong
        1
    xiaochong  
       2013-02-22 18:34:48 +08:00
    python没括号
    halfelf
        2
    halfelf  
       2013-02-22 18:35:12 +08:00
    你需要Ruby
    Hualin
        3
    Hualin  
       2013-02-22 18:38:51 +08:00   ❤️ 2
    简单的东西就是有括号你也会觉得简单,复杂的东西就是没有括号你也看不懂。
    cassyfar
        4
    cassyfar  
       2013-02-22 18:41:14 +08:00
    括号很号啊 一眼看出层次感 我看if endif这种都费劲 更别说靠缩进区分的了
    另外逻辑运算符离开括号怎么办?
    Hualin
        5
    Hualin  
       2013-02-22 18:41:48 +08:00
    编程语言的风格来自数学公式。比如四则运算表达式和函数名。这么说吧,可以用匈牙利序列来表达四则运算,没有一个括号,但看起来有很反人类,但很简洁,不知道是不是你想要的?
    fx
        6
    fx  
       2013-02-22 18:53:18 +08:00
    @xiaochong python 有的
    yorkw
        7
    yorkw  
       2013-02-22 18:58:07 +08:00
    我觉得现在的编程语言space和tab都太多了, blah, blah, blah...
    jiyinyiyong
        8
    jiyinyiyong  
    OP
       2013-02-22 19:05:48 +08:00
    @Hualin "匈牙利序列" Google 不出来.. 是什么?
    jiyinyiyong
        9
    jiyinyiyong  
    OP
       2013-02-22 19:08:31 +08:00
    行内的括号无可避免, 我排斥的, 具体说是跨了行的括号

    @xiaochong Python 极好了. 但写字典和大的数组还会有括号
    @halfelf Ruby.. 其实我当是被 end 吓跑的, 当时不懂事..
    X_Del
        10
    X_Del  
       2013-02-22 19:09:12 +08:00
    Ruby 你值得拥有。
    jiyinyiyong
        11
    jiyinyiyong  
    OP
       2013-02-22 19:11:15 +08:00
    @cassyfar 难道是习惯问题, 我觉得括号和使用 end 基本上一致的视觉效果呀
    我认为是缩进提示线不够智能和显眼的问题, 好的提示线缩进应该更清晰的
    但我觉得用括号照样有缩进的问题不是么?
    jiyinyiyong
        12
    jiyinyiyong  
    OP
       2013-02-22 19:12:30 +08:00
    @X_Del 表示已投靠 CoffeeScript, 向 Ruby 社区致敬.. 虽然我 Ruby 只会四则运算
    Hualin
        13
    Hualin  
       2013-02-22 19:25:57 +08:00
    @jiyinyiyong 波兰表达式,早上没喝咖啡。。。。
    xlmo
        14
    xlmo  
       2013-02-22 19:35:53 +08:00
    习惯括号了,感觉还行。话说你要lisp情何以堪啊……
    jiyinyiyong
        15
    jiyinyiyong  
    OP
       2013-02-22 19:40:32 +08:00
    @Hualin 前缀表达式, 我觉得很好. 最廉价的方案了
    jiyinyiyong
        16
    jiyinyiyong  
    OP
       2013-02-22 19:41:49 +08:00
    @xlmo Lisp 恨过.. 一个脚本自动填括号的 http://jiyinyiyong.github.com/she/bin/
    jetbillwin
        17
    jetbillwin  
       2013-02-22 19:44:03 +08:00
    Scheme!Scheme!!
    Sin
        18
    Sin  
       2013-02-22 19:56:06 +08:00
    最近学coffeescript, 感觉已经可以做到省略很多圆括号了,可是在写的时候还是都加上了圆括号,因为经常搞不清楚执行的顺序……
    Mutoo
        19
    Mutoo  
       2013-02-22 20:38:26 +08:00   ❤️ 3
    “一个黑客冒死偷到了美国用于导弹控制的lisp代码的最后一页,却发现那一页上全是右括号。”
    reusFork
        20
    reusFork  
       2013-02-22 21:02:51 +08:00
    甜咸问题而已
    xiaochong
        21
    xiaochong  
       2013-02-22 21:14:20 +08:00
    @fx
    @jiyinyiyong
    括号太多是麻烦,但必要的括号还是不可少的,正如 the zen of python 中说的 “Simple is better than complex. Complex is better than complicated. ”
    jiyinyiyong
        22
    jiyinyiyong  
    OP
       2013-02-22 21:16:59 +08:00   ❤️ 1
    @xiaochong "必要"在于怎么区分括号.
    跨行的括号很缩进在意义上分明重复, 部分语言也实现了, 那我认为是不必要的
    行中间区分运算优先级当然是必要的
    rqrq
        23
    rqrq  
       2013-02-22 21:46:46 +08:00 via iPhone   ❤️ 1
    我想说的是通篇字母的代码看久了会累的。
    Asimov
        24
    Asimov  
       2013-02-22 21:58:42 +08:00
    i love Python
    wenbinwu
        25
    wenbinwu  
       2013-02-22 22:02:39 +08:00
    在v2ex的python和ruby用户多吧 :)
    Ricepig
        26
    Ricepig  
       2013-02-23 00:02:29 +08:00
    说到括号,除了lisper,Objective-C用户也挺惨吧
    fwee
        27
    fwee  
       2013-02-23 00:22:59 +08:00
    ruby已经不错了。。
    momo5269
        28
    momo5269  
       2013-02-23 00:48:16 +08:00
    你需要使用Lisp并购买一个可以自动数出最后一行究竟有多少个括号的编辑器 233
    ↑借用的吐槽
    Alex_L
        29
    Alex_L  
       2013-02-23 00:49:27 +08:00
    因为你不写语法解析器
    jiyinyiyong
        30
    jiyinyiyong  
    OP
       2013-02-23 01:01:10 +08:00
    @Alex_L 我已經尝试去学了呀, 反而现成很多工具对括号语法非常支持
    倒是直接支持缩进语法的解释器不多, 结果我自己去写了很矬的一个
    https://github.com/jiyinyiyong/scirpus/tree/master/src
    swulling
        31
    swulling  
       2013-02-23 01:10:17 +08:00
    @jiyinyiyong "但写字典和大的数组还会有括号"
    字典不用括号怎么破

    a={a:2,3:[1,2],4:[5,6,7]}
    变成
    a=1:2,3:1,2,4:5,6,7

    除非所有字典和数组强制缩进换行,这要多蛋疼
    X_Del
        32
    X_Del  
       2013-02-23 01:34:29 +08:00
    @swulling
    Hash: h["key"] = "value"
    Array: a[0] = "value"

    这样,一个一个来。
    MildC
        33
    MildC  
       2013-02-23 03:59:52 +08:00
    Perl Python Ruby都可以省略一部分括号
    写的不是Lisp应该也就还好吧
    cassyfar
        34
    cassyfar  
       2013-02-23 05:53:21 +08:00
    @jiyinyiyong 突然发现其实有种古老而又流行的语言 绝对没有括号的概念
    汇编语言...
    twm
        35
    twm  
       2013-02-23 07:15:00 +08:00 via iPhone
    go lang
    skydark
        36
    skydark  
       2013-02-23 08:23:30 +08:00
    Forth
    jiyinyiyong
        37
    jiyinyiyong  
    OP
       2013-02-23 11:34:45 +08:00
    @swulling @X_Del 动态语言好多了. 我不反对在行内使用括号的
    ..关于这应该是我太苛求了. 前提也是语义不发生混淆
    coffee 里数组的括号, Ruby 里 Hash 的括号都不能省的
    jiyinyiyong
        38
    jiyinyiyong  
    OP
       2013-02-23 11:37:34 +08:00
    @cassyfar 汇编用文本编辑器操作可是更痛苦的哦
    我期待编辑代码更轻松自在, 因而反对括号和缩进可以取代时用括号
    但转化成汇编, 在编辑上造成的麻烦比括号消耗的时间多得多
    jiyinyiyong
        39
    jiyinyiyong  
    OP
       2013-02-23 11:38:28 +08:00
    @skydark 虽然很犀利, 但喜欢前缀表达式的时候看后缀的感到太痛苦了
    jack1991
        40
    jack1991  
       2013-02-23 11:46:57 +08:00
    如果没有括号那就更依赖编辑器了。因为在那些对缩进、折叠支持不够好的编辑器上,代码就没法看了。当年先贤们设计语言时,想到要用括号表示一段结构的开始与结束,大概就是基于易读易懂性的考量吧?
    swulling
        41
    swulling  
       2013-02-23 11:57:05 +08:00 via Android
    @X_Del 你这个会增多括号量吧,一行两个。。。
    jiyinyiyong
        42
    jiyinyiyong  
    OP
       2013-02-23 12:42:28 +08:00
    @jack1991 我个人几乎不用折叠, 不知道怎么说.
    关于早期语言的括号, 我在知乎问过, 关系到编译器复杂度的问题
    http://www.zhihu.com/question/19620446
    另外个人倾向认为无关的符号越少, 文本更清晰
    middleware
        43
    middleware  
       2013-02-23 15:27:54 +08:00
    括号的必要来自于无歧义的需求。你可以看看法律文本,那种繁复程度会让你发现编程语言并不是那么糟糕。
    jiyinyiyong
        44
    jiyinyiyong  
    OP
       2013-02-23 17:15:10 +08:00
    @middleware 承受能力太差, 不敢问您要链接了...
    leafduo
        45
    leafduo  
       2013-02-24 21:37:15 +08:00
    @Ricepig Xcode 基本都能帮忙填好
    chisj
        46
    chisj  
       2013-02-25 10:12:38 +08:00
    @Ricepig 一点都不惨,我觉得object-c在xcode写太方便了。
    Ricepig
        47
    Ricepig  
       2013-02-25 12:14:41 +08:00
    @chisj 在一行里来回跳,眼镜的焦点来回移动,这还不惨。。。你觉得方便可能是因为习惯了吧。
    jiyinyiyong
        48
    jiyinyiyong  
    OP
       2013-02-25 20:25:29 +08:00
    关于我说的缩进线和组合缩进, 做了个视频解释一下:
    http://www.tudou.com/programs/view/GD6UYRf1xCY/
    代码暂时网络不佳无法同步, 网络正常我发到 Github Pages 上
    https://github.com/jiyinyiyong/rich-indentations


    @chisj Linux 用户表示没用上 Mac 求视频..
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   989 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 22:00 · PVG 06:00 · LAX 14:00 · JFK 17:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.