zoukankan      html  css  js  c++  java
  • 语言的信息密度


    不同语言的表现力是不一样的,以变量名为例,虽然大部分语言都对变量命名的长度没有严格的限制(只要别太长),但语言的风格强烈影响了代码的信息密度。

    1. 低密度语言(10-20字符/语义)

    我不得不谈到Java,Java是我见到的信息密度最低的语言。大量的Factory,Builder风格的超长命名,加上各类设计模式,继承和接口,再由于没有匿名函数导致的大量的内部类,大量的import,让Java冗长不堪。

    C#好很多,至少解决了Java的很多问题,比如Linq,lambda和event,如果你愿意,能够大量压缩代码。但由于两者本系同源,所以命名一定要长,一定要TaskManagementFactoryBuilder才显得专业。

    2.中密度语言(2-5字符/语义)

    Python的风格,让它成为典型的中密度语言。

    • 类名驼峰,变量名小写+下划线。
    • 用_打头来替代private修饰符。
    • 动态类型特性使其不需要声明变量类型
    • c=[1,2,3]替代了C#风格的c=new List<int>(){1,2,3}
    • 变量名普遍较短,能用repl就不用replace,约定俗成。

    像go, Ruby基本都属于这一类。

    3.高密度语言(1字符/语义)

    正则应该是密度最高的语言了吧,一个字符代表一个含义,简直不能更短。Perl与正则如此有渊源。因此Perl的代码可以惊艳成下面这个样子:

    my @fib = 0, 1, *+* ... *;
    say "Fibonacci number #8 is @fib[7]";
    

    在C#/Java中用枚举,Python中用全大写变量,而到了Perl,只需要一个字符去指定行为,比如Perl下的正则控制字符:

    /g 全局替换
    /i  不区分大小写
    /x 宽松排列模式
    

    所以,写Perl可以写成天书,只有自己能懂。代码简洁到无可附加。
    bash的风格和命令,也是高密度语言的典范,想想ls,tar等等...

    5. 其他语言

    C语言有点不好评价,它太灵活,大神可以将其用成Perl,也能让它变成Java。当然,C语言的最佳实践,应该在低到中密度中间的位置,5-8字符/语义。

    Lisp也是个特例,因为表现能力太强,而且一堆括号。所以如果你看很多人写的Lisp,变量名都长得像注释。我估计大神本来也不想写这么长,只是发现如果不这么长,连自己都记不得怎么回事了。

    语言风格本来是见仁见智的事情,现在自动补全已经如此完善,密度低一点是不是让领导觉得更有工作量呢?

    一年以前我还是C#控,觉得Python代码看着不专业,为了保证和C#代码的兼容性,我把Python按C#的套路写(驼峰式变量+继承),后来怎么看怎么不对劲。再后来,我一气之下扔掉了包袱,按照Python风格全部重改了代码,看着好多了。

    当然,大神说过,不能REPL的语言都是耍流氓,高到一定密度之后,代码都不用保存了,随想随写。

    以前我觉得,没有自动代码提示简直没法写代码,后来在各种开发机上用vim写python,发现并没有感到不适,我还是被Visual Studio惯坏了。事实上,我们写作文从来没有“自动提示”,不也写的很好效率很高么?

    特定领域,尤其涉及到模式等抽象概念,很适合regex/Perl风格。但我觉得用Python风格可能更漂亮吧。至于Java,如果有任务开发,那就没办法只能按标准风格去写了呗。说不定再过一段时间,我就迷恋上了Perl,又觉得Python这样的语言不能看了呢。

  • 相关阅读:
    [LeetCode] 90. 子集 II
    [LeetCode] 91. 解码方法
    [LeetCode] 89. 格雷编码
    [LeetCode] 88. 合并两个有序数组
    转:Google论文之三----MapReduce
    转:Google论文之二----Google文件系统(GFS)翻译学习
    转:Zend Framework 2.0 分析
    转:PHP include()和require()方法的区别
    转:cookie和session(二)——php应用
    转:cookie和session(一)——原理
  • 原文地址:https://www.cnblogs.com/buptzym/p/5785456.html
Copyright © 2011-2022 走看看