Approximately 70% of the source code of a software system consists of identifiers
——“Concise and Consistent Naming: Ten Years Later”
刚又看到有回复提到中文编程语法带空格有违和感。有些话不吐不快。
源码中七成左右的篇幅是标识符。现在的多半英文源码应该用的是驼峰命名法。仔细想想,驼峰命名是多么“不自然”啊!
英文自然语言本身用空格作为分隔符,除非专用名词词组一般不在句中使用首字母大写,即便是文章题目的话,那也是包括第一个词汇在内都需要大写。驼峰命名沾了哪的边?
再来说类名首字母大写而变量、方法小写这种风俗。这“自然”吗?即便是当时设计时真是借鉴了生物学中的“Class”命名法而首字母大写(比如 Mammalia、Maxillopoda),又有多少国内开发者知道这个渊源?绝大多数该都仅仅知其然吧。
更不用说,这个生物学中的“Class”概念,知道它对应中文生物学术语“域、界、门、纲、目、科、属、种”中的哪个吗?是“纲”!(刚才查资料才意识到)。咋当初就翻成了“类”了?
无论如何,即便在英文母语的开发者中,貌似也没人确切了解为何要这样大小写区分。随便搜搜相关的疑问就看到这个好问题:
In programming, the classes are capitalized (usually) and the instances are written in small letters. Why is real life the other way around?
一般人眼里这风俗根本是“反自然”的好么:
接下来轮到中文编程了。
好嘛貌似最高优先级就是要设计出“接近中文自然语言”的语法,第一大条就是把空格全都干掉。(注:非常欢迎对各种中文语法的实干摸索。这里针对嘴炮,真诚探讨者请勿对号入座)。
那占了七成的标识符呢?中文天生不需要空格分隔,用于命名标识符在视觉效果上几乎和自然语言一模一样,为啥就不能/不屑从这门槛最低又见效最快的部分开始实践了?
现在好像倒是多数开发者都知道大多数编程语言都支持中文命名了。有趣的是,我看到的多数开源的自研中文编程语言(尤其最近几个沸沸扬扬的)在实现中仍旧用的是英文命名,这是为甚?中文编程语言项目本身就完全针对中文用户,这种可以说有最大理由和最小阻力使用中文命名标识符的项目里,都不率先使用,搞毛啊?
是因为语言打算同时支持中英文两种语法可以同时吸引国内外用户进而可能会有国外开发者参与贡献??醒醒吧有那么多纯英文编程语言,搞一个混搭版的还指望雨露均沾?不两边不讨好就不错了!
扯远了 回来说 带空格的 中文编程 语法. 之前 有段时间 群里 有位 同仁 喜欢 用 这种格式 打字, 也许 是 自研的输入法 用习惯了.
群里百来个人没一个发问为啥要中间带这么多空格的,包括我自己。不就是因为交流仍旧无碍吗?
到底为啥,对英文编程的各种“不自然”都能“顺其自然”地忍下来,而不能同等对待刚上路的中文编程??
言语偏激之处请谅解。中文编程有太多当下就可以实践并有立竿见影成效的事(中文命名标识符、开发中文 API、为IDE中文输入提供额外辅助等等等等)。
语法带不带空格,绝不应是焦点。
2020 年 四月 28 日