D码点评:10 编程语言的可读性

http://99-bottles-of-beer.net/ ~这个网站目前已收集了1434种不同的编程语言和语言变种来这首歌的歌词!

Readability.png(PNG 图像,500x354 像素)

Readability in Programming Languages

转自: [编程语言的可读性 外刊IT评论网](http://www.aqee.net/readability-in-programming-languages/)

最近我在网上看到一些人把各种脚本语言放到一起进行比较. 脚本语言:PHP, Perl, Python, Ruby. 我的第一反应,以及第二反应是:讨厌!我有我自己的偏好,从没向任何人说过. 我喜欢可读性好的程序,程序里出现的任何的特殊字符(任何非数字,字母的字符)都会影响我的阅读速度. 这让我思考起我们应该如何设计编程语言?我们语言设计是在进步还是在倒退还是在停步不前?

回到我刚开始写程序的时候,大概是40年前,那时的三大编程语言是FORTRAN,COBOL 以及后来的BASIC. FORTRAN(FORmula TRANSlation的简写)被数学家(我的数学专业的哥哥必须要学它)和科学家们使用. COBOL (其中的B 代表Business)被用于企业应用. BASIC是一种教学语言,在企业里广为使用. COBOL因为它的冗长的语法而受一些人痛恨,而同时却也被另外一些人所喜爱. 但它至少是很容易理解的. 看看下面循环的写法:

PERFORM VARYING WS-BOTTLE-NUM FROM 98 BY -1
               UNTIL WS-BOTTLE-NUM < 2
END-PERFORM

很像一个英语句子. 跟C语言风格的语言(C#)比较:

for (WSBOTTLENUM = 98; WSBOTTLENUM >= 2; WSBOTTLENUM--)
{
    ...
}

哪一个更显而易见?除非你谎称自己没经验.

BASIC (这里是Visual Basic)某些地方可读性处于中等水平.

For WSBOTTLENUM = 98 To 1 Step -1
Next

步长–每次减少的数–很容易理解,至少我是这么认为. 让我们看一些非常简单的东西.

k = i / 10;

这会让初学者抓狂. 这是做什么的?我们这些程序员当然会知道,但对于初学者,这种指令操作方式会让他们困惑. 你可以把它与相同功能的COBOL语言比较:

divide i by 10 giving k

有点长?不错,但一个初学者能看懂. 我现在并不是在主张重新回到COBOL语言,诚然,相比起当时在纸片上打孔的时代,现代的集成开发工具和像Intellisence这样的功能让我们的编程变的容易的多了. 可是,我还是要说,一些入门语言应该罗嗦一些–英语句子比”#号在这种编程语言里代表什么”要容易上手的多.

只是好玩,如果你想看一看各式各样的语言,可以访问99 Bottles of Beer这个网站.

是也乎

不禁想到了:

大妈当时的点评好象是: 但凡有节制的减少程序员心理负担的语言特性都是靠谱的...

其实,从一名程序猿角度而言,开发语言永远是我们无法逃避的G 点原因在:

  • 沉没成本!
  • 花费了无数不眠之夜,通过无数挫折后,才掌握的那一堆语言持有的技巧,在看到其它语言,一行代码搞掂以往要用一堆代码才作得到的事儿
  • 那时,第一反应绝对是 益rz…
  • 然后,第二反应,就是找这新语言的茬儿,坚定自己的心智,拉小伙伴一起来黒,以免自个儿崩溃跳楼…

呵呵…

本质上,代码写出来是给电脑运行的,无所谓可读性.

但是,悲摧的是! 目测,人类还无法设计出能根据人的意愿自动完成所有代码的系统来… 所以,代码首先要通过程序猿编写/维护/修订/调试/演进…才跟得上业务的变化,才能交给电脑运行.

所以,软件工程的效率,追到根儿上,还是人的效率, 而系统大了,肯定无法一个人完成所有的代码, 团队协作时,也不可能你的代码永远不会有其它人看! 所以,语言特性,能有节制的,引导/约束/制止 代码变得太过个性,除了作息本人,其它人很难看懂! 这样的开发语言,才适合团队协同,适合大型项目,值得认真学习使用…

进一步的,也可以推导出,如果一门语言,离开了 IDE 的各种自动辅助功能,居然无法人工编写代码了, 这语言就已经不是给人阅读的了,而是为 IDE 设计的了…

以上! 太多梗! 死死忍住不继续发挥了,有机会当面吐糟了…

Happy Hacking!

PS:

题图是 名为 Readability 的跨浏览器扩展,能一键将页面的文章部分提取成干净的页面, 其它一切都清取了!

非常实用!

也从另外一个方面指证了: 可读性 的一个指标:

  • 没有任何干挠阅读的无用信息存在!
  • 所以,那些死要使用 end 来标示代码块儿结束的语言就是自找不痛快的设计!

当期活动 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

珠海GDG[11.23]珠三角技术沙龙HOA.5

和久违的珠三角技术沙龙的小伙伴,共同来GDG 分享!

内容(可能):

  1. Jeff小乐队 PyCon2013China 开场曲目内部练习
  2. iFanr 编辑一斌 有关跨界成长的体验
  3. 北理工学生有关 TI SensorTag 试玩体验
  4. Leo ~ 文学化编程再再再谈
  5. AngularJS 现教现用
  6. Web的未来-新语言和新技术

其它征集中…

筹备活动 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

PyCon2013CHina 珠海场

  • Python 年度大会
  • Pythonner 大趴
  • Pythonista 相亲集会
  • Pythonic 体验交流

请及时举报你身边的 华蠎行者! 举报热线: zoomquiet+pycon (AT) gmail.com

巡阅

2013-11-05  

声明: 本文采用 BY-NC-SA 授权。转载请注明转自: #ZHGDG#


以上...


加入 珠海GDG

  1. 注册 Meetup
  2. 关注 Zhuhai GDG
  3. 或扫描: 2meetup

通过 珠海GDG 可以:

    第一时间获知谷歌最新技术,
    可以学到如何去谷歌平台上赚钱的思路和方法,
    可以认识很多有可能将来一起走上自己创业道路的人,
    可以学会把你的创新带向国际市场,
    参加那里的活动有经常和国际上的开发者们进行交流的机会...

PS:

若无意外,题图都是从原文提取或是通过 Google 图片搜索出来的, 版权属左, 不负责任 ;-)

PPS:

珠海GDG 微信/Blog 欢迎投稿,只要追自认内容吻合以下条件:

0. 有趣 ~ 至少是自个儿有兴趣的领域吧...
1. 有料 ~ 至少有点儿原创的东西吧..
2. 有种 ~ 至少不能是成功学吧!

有好物请及时通过邮件列表投稿成也: [email protected]
(发空邮件到 [email protected] 即完成订阅)

微信公号

栏目设定:

    G术图书 (gb:推荐好书,书无中外)
    D码点评 (dd:麻辣评点,善意满盈)
    G说公论 (gt:时评杂文,新旧不拘)
    珠的自白(dm:大妈自述,每周一篇)
    海选文章(hd:得要相信,大妈法眼)

总之, 请大家告诉大家, 珠海生活中的技术社区 都来订阅呗 ;-)

订阅方法

hacker emblem

GDG珠海 社区资源:

大妈的多重宇宙 - YouTube

全新自媒体系列...科学幻想,读书,说故事...

任何问题

随时邮件提问可也:
[email protected]