选择 JavaScript

总有那么一些学过但是却几乎用不着的东西,比如,大学里的某些必修课。很多计算机系学生学过的 VHDL 和汇编也是如此,尽管它们还是具有应用价值,但凡有选择,没人愿意拿他们去写应用。

自从当年 COBOL 号称以接近自然语言的方式降低编程门槛以来,程序设计语言经过了一系列的更新换代,从来没有最好的语言,只有根据不同的场景,基于执行效率、可读性、团队状况等方面综合考量最适合的语言。从 Dijkstra 喊出废除 Goto ,到后来逐渐摒弃指针,再到后来各种框架百花齐放,开发门槛越来越低,编程已经不再是当年高精尖的火箭科技了。

物联网喊了很多年,如同2003年喊出来的智能手机一样,最终是会被大量的、数以十万计甚至百万计的应用所成就,繁荣起来。这大量的应用背后都是开发者,是人。门槛低了,玩的人多了,临界点自然就会突破,吹了许久的大概念、大生态才能一一实现。在这个生态下,写应用的不再需要关心硬件、驱动、系统底层,只要写应用逻辑就可以了。平台的使命则是兼容尽可能多的外设,提供统一的编程接口, Windows 如此, Android 亦是如此。

在这种背景下,程序设计语言的选择是极其关键的。Ruff 启动之初,我们曾面临着诸多选择:

  • 用户基数最大的 Java ,却有着笨重的虚拟机,不适用于我们的目标嵌入式环境。
  • 天生适合嵌入式环境的 Lua ,却受众寥寥。
  • C ?至少我们没有人愿意回到摆弄指针的年代。
  • ……

JavaScript 最终成了我们的选择,拜 Node.js 所赐,它已不再当年的吴下阿蒙,摆脱了浏览器语言的尴尬境地。感谢这些年 JavaScript 的繁荣,起步之初,有许多适合嵌入式设备的 JavaScript 引擎可以当做我们的起步阶梯。

当然,如此重注也让我们惴惴不安。直到后来,诸多厂商、巨头开始拥抱 JavaScript ,我们才有了一种内心的窃喜。

JavaScript 强大的表现能力,配合我们的硬件抽象,可以写出非常漂亮的代码。下面这段代码可以实现人走进点灯,人离开关灯的效果,大家感受一下:

$.ready(function(error) {
$('IR').on('near', function() {
$('led').turnOn();
});

$('IR').on('away', function() {
$('led').turnOff();
});
});

怎么样?很酷吧?熟悉 JavaScript 程序员们,你们应该能嗅出一股熟悉的味道吧。 原本想在这里罗列一段C代码作为对比,为了不让更多的读者痛苦,还是算了吧。

语言之争永远是一个政治不正确的事情,容易引发圣战。 JavaScript远算不上最好的语言,甚至有许多让人崩溃的特性,比如,比较 false, 0, NaN, +0 等就是一个容易让人吐血的事情;undefined 可以是一个值,也可以是一个类型; JavaScript 函数竟然可以重名等等……

程序设计语言专家可以跟你摆事实讲道理扯八卦说段子,然而,对于开发者而言,只要能低成本地开发出想要的应用,它就是好语言。