论编程语言的可读性:老语言更通俗易懂

开发 开发工具
新的语言在这个互联网时代层出不穷,比如从Go语言到Scala。似乎C++、COBOL这样的老语言,就应该扔进历史垃圾堆了。其实不然,老语言在可读性方面更胜一筹,特别是大家都不愿意写备注的时候。

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

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

 

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

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

 

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

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

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

 

  1. For WSBOTTLENUM = 98 To 1 Step -1Next 

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

k = i / 10;

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

 

  1. divide i by 10 giving k 

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

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

  这个网站收集了用各种不同语言编写的99 Bottles of Beer的歌词。目前已经有1434种不同的编程语言和语言变种来表现这首歌。

【编辑推荐】

  1. Perl、PHP、Python、Java和Ruby的比较
  2. C++程序员必读:让你的代码更强大
  3. 各大主流.Net的IOC框架性能测试比较
  4. Ruby之父出任Heroku首席架构师 推进Ruby云计算应用
  5. 汉语编程:程序员你们等不到了
责任编辑:彭凡 来源: 外刊IT评论
相关推荐

2021-05-27 08:47:16

C语言C语言程序开发

2023-01-30 08:16:39

Go语言Map

2011-10-26 19:57:33

2023-10-10 18:12:02

函数编程语言

2019-06-19 08:30:47

网络协议IPTCP

2023-01-06 09:40:20

项目性能

2020-06-08 10:50:58

前端TypeScript代码

2021-10-09 10:24:53

Java 代码可读性

2021-05-26 16:12:20

区块链加密货币比特币

2022-06-28 07:31:11

哨兵模式redis

2022-09-23 08:32:53

微服务架构服务

2021-04-01 16:43:05

代码可读性开发

2017-10-30 15:22:29

代码可读性技巧

2021-11-04 08:16:50

MySQL SQL 语句数据库

2022-07-06 08:17:50

C 语言函数选型

2019-05-20 07:37:00

TCPIP网络协议

2018-01-17 22:36:46

2021-05-30 19:02:59

变量对象上下文

2021-05-25 09:50:01

GitLinux命令

2018-03-11 15:11:38

物联网数据物联网数据
点赞
收藏

51CTO技术栈公众号