无意中又跟云风讨论起lua语言的设计问题,谁也没说服谁。我始终认为变量默认global,整数﹑浮点数不分,数组跟hash表不分,没continue等问题让开发者不方便,而他认为这是语言设计的需要,作者做出这些决定是有充分理由的。
其实过多的讨论语言的优劣是没太大意义的,项目的质量更多是取决于架构的设计和代码质量跟用什么语言以及语言本身的设计或特性没太大关系。用有缺陷的语言也能做出优秀的项目。过多的偏爱某一种语言是不可取的。
每种语言都有它的设计思想,强制的去比较语言间某项特性如运行效率也是片面的,你需要知道语言间的效率差异但不应该以此来评判语言的优劣。开发一种工具来做语言翻译(比如为了提高运行效率把lua翻译成C语言)我认为是不可行的,一是调试会很头痛,另外工具没办法理解程序员的设计思想,翻译出来效果很难预测,翻译工具本身的稳定性也是个大问题。
技术人员之间应该更多的讨论项目需求差异、设计思想比较、技术应用的比较等问题,将更多的精力放在项目本身上面来,而不应该过多的比较开发语言和开发工具的技术细节甚至优劣。 对于开发语言的选择很多时候不是基于语言特性,至少以下两方面的考虑比语言特性更重要:
1﹑产品需求,比如运行效率和平台的要求,需求的稳定性等。
2﹑团队的技术积累,已经稳定的可用的库,开发平台,成员对语言的掌握程度等。
如果每个项目都白手起家自己随意挑选不同的开发语言,也许可以说这家公司没什么技术积累,从零开始做得东西不一定会有预想的好,要充分相信积累下来的已经稳定的东西,如果它有问题那么改进它,不一定要全部抛弃重写,但这恰恰是很多程序员的通病,自己做得才最有成就感,才是最好的,如果不是,那么重做一遍一定是最好的。