我觉得现在的编程语言括号都太多了 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技问题时复制粘贴 AI 生成的内容
jiyinyiyong
V2EX    程序员

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

  •  
  •   jiyinyiyong
    jiyinyiyong 2013-02-22 18:27:15 +08:00 8915 次点击
    这是一个创建于 4668 天前的主题,其中的信息可能已经有所发展或是发生改变。
    在 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 complicatd. ”
    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     Solana     955 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 19:34 PVG 03:34 LAX 11:34 JFK 14:34
    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