语言一致性不是非常重要,大部分成功项目已经验证语言不一致一样可以出成功项目。对于技术从业者而言,是否能作出好产品,关键不是用什么技术而是如何运用技术。
语言一致性是否值得追求,我觉得值得追求,这种追求是软件工程方面的追求,没有这样的追求,软件工程也不会进步,软件工程的根本其实就是追求用更低的成本做更好的事情,诸如模块化编程、面向对象编程、java语言等等这些技术的产生都是因为人对效率和成本的追求,语言一致性跟这些追求没什么区别。
项目中实际场景:策划给了一个功能模块的配置,这些配置不单纯用于功能逻辑也用于表现逻辑,于是客户端和服务端的开发人员,分别都在代码里用各自的方式配置了一份数据,于是一份配置分散到了两个地方,产品上线后策划所功能要调整,于是就开始陆续出现前后端配置不一致产生的bug。
有一些配置是包含运算逻辑的,所以单纯的用数据格式保存配置是不行的,如果“工程化”一些,这些数据最好是服务端保存,客户端来取,但是这就牺牲效率了。
如果有一门前后端都通用的语言,就可以让客户端和服务端共用一部分代码和逻辑,就可以保证最高的效率和最低的维护成本,不是挺好的吗?
另外一个角度看,现在做项目大多数时候都是招人难,培养人难。项目里用的编程语言越多,结构越复杂,可维护性就越差,人员培养成本和招人成本就越高,项目风险就越大。相反,项目里用的语言越少,项目的可维护性就越高,人员培养成本就越低,相应的项目风险就越小。
如果有一门前后端都通用的语言,项目里的前后端开发人员可以随时调配工作力量,不是挺好的吗?
至于现在或将来是否可能存在前后端通用的语言,我觉得不可能存在广义上的前后端通用语言,但存在适用于特定项目的前后端通用语言。因为编程语言选择是取决于项目需求和参与者等诸多因素的。
比如有的web项目规模不大,就可以考虑用nodejs做服务端。但是规模大了,nodejs的异步编程模型恐怕就不是很好的编程方式了。
前段时间看到有人把AS3搬到服务端,如果效率可以的话,我觉得这对web游戏开发也是挺有价值的。但是否牺牲执行效率,换更低的人员成本和更高的开发效率,不可能有一个绝对的答案。