layout: post author: zoomq title: D码点评:10 编程语言的可读性 description: ~ 麻辣评点,善意满盈 categories: gDgcoDe tags: gdg D码点评 dd wechat coding
http://99-bottles-of-beer.net/ ~这个网站目前已收集了1434种不同的编程语言和语言变种来这首歌的歌词!
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 分享!
内容(可能):
- Jeff小乐队 PyCon2013China 开场曲目内部练习
- iFanr 编辑一斌 有关跨界成长的体验
- 北理工学生有关 TI SensorTag 试玩体验
- Leo ~ 文学化编程再再再谈
- AngularJS 现教现用
- Web的未来-新语言和新技术
- ...
其它征集中...
筹备活动 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PyCon2013CHina 珠海场
- Python 年度大会
- Pythonner 大趴
- Pythonista 相亲集会
- Pythonic 体验交流
请及时举报你身边的 华蠎行者! 举报热线: zoomquiet+pycon (AT) gmail.com
以上...
码不停提马上无虫 ;-)
|_|0|_| |_|_|0| |0|0|0|
加入 珠海GDG
- 注册 G+
- 关注 GDG Zhuhai
- 成为 GDG Zhuha开发者
通过 珠海GDG 可以:
第一时间获知谷歌最新的技术, 可以学到如何去谷歌平台上赚钱的思路和方法, 可以认识很多有可能将来一起走上自己创业道路的人, 可以学会把你的创新带向国际市场, 参加那里的活动有经常和国际上的开发者们进行交流的机会...
PS:
若无意外,题图都是从原文提取或是通过 Google 图片搜索出来的, 版权属左, 不负责任 ;-)
PPS:
珠海GDG wechat/Blog 都是欢迎投稿的,只要追认内容吻合以下条件:
0. 有趣 ~ 至少是自个儿有兴趣的领域吧... 1. 有料 ~ 至少有点儿原创的东西吧.. 2. 有种 ~ 至少不能是成功学吧!
有好物的,及时向大妈们吼: [email protected]
微信栏目
当前应该是:
G术图书 (gb:推荐好书,书无中外) D码点评 (dd:麻辣评点,善意满盈) G说公论 (gt:时评杂文,新旧不拘) 珠的自白(dm:大妈自述,每周一篇) 海选文章(hd:得要相信,大妈法眼)
总之! 珠海的组委大妈们,决定开始坚持发文,方方面面细细同大家分享/交流
总之! 请大家告诉大家, 珠海生活中的技术社区
已经认真回归 微信,都来订阅吧!
订阅方法
- 搜索微信号
GDG-ZhuHai
- 或查找公众号:
GDG珠海
- 或扫描:
GDG珠海 社区资源:
- 邮件列表: [email protected] (可发空邮件到 [email protected] 即完成订阅)
- 微博: @GDG珠海
- 微信: GDG珠海
- G+ 主页: GDG ZhuHai
- G+ 社群: ZhuHai GDG
Author: /mail / gittip / github