Going Native?

赖勇浩写了一篇文章,叫做”2012 不宜进入的三个技术点“,其中最后一个就是C++。而陈皓的”Why C++?王者归来“则表达的不同的意见,文中引述了C++界的大牛Herb Sutter的观点,认为随着计算能力再次集中在大公司构建的数据中心里面,而这些公司为了能够节约电力和机器的开销,它们有意愿,也有能力聘请高水平的工程师,使用C/C++这样的本地代码来编写它们服务端的软件堆栈。另外因为移动设备的迅猛发展,考虑电力和性能的因素,本地代码编写的应用在移动设备上仍然是最佳的选择。

 

总的来说,我个人认为这两种观点有正确和错误的地方。下面是自己了解到的一些现实世界正在发生的真实的例子,最后再总结出自己的观点。

 

  1. NodeJS使用Google公司的V8 JS引擎(使用C++编写),构建了一个可以使用JavaScript编写服务端应用的运行时环境;
  2. 浏览器引擎如WebKit(使用C++编写)的发展,使得使用HTML/CSS/JavaScript编写能够与Native App相媲美的Web App/Game越来越成为可能;
  3. Android虽然使用了大量第三方和自家的C/C++库,平台本身的系统服务层也完全使用C++编写,但是为普通应用的编写提供了一个完整的基于Davik虚拟机,使用Java语言的应用程序框架;
  4. Windows Phone7只允许使用C#编写应用,而更换了内核的Windows Phone8虽然有可能允许使用C/C++语言,但是使用HTML+JavaScript在WinRT上编写Metro风格的应用仍然是官方主推的方式;
  5. Lua是iOS上面最热门的脚本语言,很多游戏都使用它来编写脚本,基于C++编写的游戏引擎;
  6. Qt下一代GUI框架QML,支持使用QML脚本语言构建用户界面,混合JavaScript编写的事件处理逻辑,C++编写的对象可以很容易导入JS虚拟机运行环境中。

从上面的例子我们可以看到,毋庸置疑,C++在新的10年里面(2010+)仍然会扮演及其重要的作用,它会被用来编写各种游戏引擎,浏览器引擎,虚拟机,运行时环境,系统服务层等等,本地代码所占用的计算时间在总的计算时间中的比重有可能还会增加。

 

但是,对于普通应用的开发者而言,无论是服务器后端,前端,还是编写本地应用,他们都将会离C/C++越来越远,需要使用的几率也越来越低,而更有可能使用各种动态语言和脚本语言。之前的一篇文章为什么学习JavaScript也阐述了自己关于JavaScript未来在各种应用开发中会越来越重要的观点。

Advertisements