Roy Notes

技术 创业 思考

乱弹编程语言的选择

经常会遇到这样的问题:“我希望开发一个网站,我该选择Java,Php,dotnet还是其他呢?”

我经常的回答是,一个网站或产品在开始阶段是与具体的编程语言无关的。它只与企业内部的技术沉淀与发展有关,它影响着企业的一些选择,如人员招聘、架构设计、开发框架、开发环境、部署流程、还有开发效率等等。

最近Fenng也写了一篇Blog《编程语言的选择并非无关紧要》,文中有部分观点我也表达认同,当一个网站达到一定的规模后,在架构上必定会发生一些变化,比如文中所指的淘宝从PHP向J2EE迁移,但我相信那个有趣的理由不是最终的决定因素,容我大胆的假设更多的原因应该是架构上的需要,以及由众多资深j2ee领域专家推动的,而且是循序渐进的,初期只是从核心业务层切换做系统异构,后来完全转向java full-stack.

在某些特定行业,如大型MMORPG的开发,我相信没有人选择PHP,Rails,甚至JAVA来开发,C/C++将是第一选择,这更多是历史原因和技术沉淀决定的。使用C来开发游戏已经成为行业的标准,它有成熟的技术和框架支持,行业内的第一批游戏开发工程师都来自于C的技术领域,那时候java的性能还跑得好糟糕……太多太多的数据让我们去选择C而不是其他。但我依然相信使用Java一样能够开发出一个好的游戏,但我们可能不能说服老板相信JVM的装机率是90%以上的,这个数字真的连我们都不相信是真实的;但Java没有成功的案例又影响着我们的决定;同时JAVA没有一个成熟的开发框架;JAVA没有一个有效可行的游戏引擎方案……但如果有这样一个契机:游戏的服务端将需要跨平台?有一套成熟的游戏开发引擎?有大量的游戏开发开源项目支持我们前进?游戏模式变化了,不再是一服一世界,那是游戏云端?要求高性能的大型群体?windows已经不是玩家的统一操作系统?有游戏开发的IDE……或许未来有太多太多的理由让我们选择JAVA去开发游戏而不是C,但这仅仅是多了一个选择而已,就像我们开发网站一样,我们有太多太多的选择:rails,php,python,java,dotnet,scala,grails……

无论有没有在一开始就选择了“正确的”编程语言,我们都会经历软件架构升级的阵痛。这种阵痛会伴随着我们的网站的快速成长而一直增长。选择了“正确 的”语言并不预示着我们将来的成功,偏偏网站的成功又决定着架构的发展的演变,有时这种演变会决定编程语言。因此在架构升级中,总有一些最激烈的大胆假设:我们或许应该变更编程语言!

说到底,一个企业有怎么样的技术沉淀,有怎么样的技术团队就决定着使用怎么样的技术架构与编程语言。选择合适的技术团队,不是选择合适的开发语言。不要相信你的网站永不升级,不要相信你的架构完美无缺,使用技术团队最熟悉的技术去实施,将是风险最低的最好决定。管它使用什么语言呢,无论如何选择,我们都需要面对架构变迁的阵痛,那意味着用户激增,钱花啦花啦的来啊~~~

Comments