文档章节

为什么选择 JavaScript做智能硬件开发

Andy-RTT
 Andy-RTT
发布于 2016/04/11 11:25
字数 921
阅读 90
收藏 1

总有那么一些学过但是却几乎用不着的东西,比如,大学里的某些必修课。很多计算机系学生学过的 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();
  });
});

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

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

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


Ruff:现代 JavaScript 智能硬件开发平台



本文转载自:https://ruff.io/blog/2015/12/02/the-choice-of-javascript/

Andy-RTT
粉丝 6
博文 3
码字总数 540
作品 0
深圳
项目经理
私信 提问
YodaOS: 一个属于 Node.js 社区的操作系统

大家好,很开心在这里宣布 YodaOS开源了。他将承载 Rokid 4年以来对于人工智能和语音交互领域的沉淀,并选择 Node.js 作为操作系统的一等开发公民,全部开放给社区。 YodaOS(YODAOS)的架构跟...

程六金
01/29
5.3K
8
Fundebug上线小程序错误监控啦

作为专业的JavaSript错误实时监测平台,Fundebug的微信小程序实时错误监测服务上线啦,我们能够帮助开发者及时,高效地发现并且解决小程序错误,从而提升用户体验。 小程序大时代 后移动互联...

kiwenlau
2017/01/21
0
0
全栈 JavaScript 程序员的崛起

原文地址:http://thefullstack.xyz/full-stack-javascript-developer/ JavaScript 无处不在 在以前,JavaScript程序员就是前端开发者的同义词,永远与浏览器绑在一起。 但那已是昨日往事。N...

oschina
2016/06/08
8K
43
The story behind _references.js 简译一下

references.js背后的故事 references.js是在VS的WEB项目中,提供智能提示的关键技术。 在VS2010发布之后,作者还是ASP.NET小组成员时,小组想把js编辑器的功能迁移到一个新的“客户端平台小组...

noonoo
2015/08/04
505
0
以 JavaScript 判定 Web App 太慢是否合理?

此文由Adobe Web Platform团队的工程师Vincent Hardy发表于Adobe博客上。Adobe Web Platform 团队在为 Web 标准 (CSS、FX Task force、SVG)、开源项目 (WebKit、 Chromium Embedded Framewor...

oschina
2013/08/09
3.4K
10

没有更多内容

加载失败,请刷新页面

加载更多

插入排序算法

《算法总纲目录》 1、定义     元素被分为有序区和无序区两部分。最初有序区只有一个元素。每次从无序区中选择一个元素,插入到有序区的位置,直到无序区变空。 2、代码 public class...

木九天
25分钟前
3
0
ApacheCN 翻译/校对/笔记整理活动进度公告 2019.10.18

注意 请贡献者查看参与方式,然后直接在 ISSUE 中认领。 翻译/校对三个文档就可以申请当负责人,我们会把你拉进合伙人群。翻译/校对五个文档的贡献者,可以申请实习证明。 请私聊片刻(52981...

ApacheCN_飞龙
28分钟前
4
0
Hands-on! 如何给 TiDB 添加新系统表

作者:黄东旭 “TiDB,你已经是一个成熟的数据库了,该学会用自己的 SQL 查自己的状态了。” 对于一个成熟的数据库来说,通过 SQL 来查询系统本身的状态再正常不过,对于 MySQL 来说 INFOMA...

TiDB
33分钟前
4
0
SpringBoot admin+Eureka+钉钉通知

SpringBoot admin+Eureka+钉钉通知 一、效果 登录账号+密码 监控服务 查看实时日志 钉钉通知 二、什么是Spring Boot Admin ? Spring Boot Admin是一个开源社区项目,用于管理和监控SpringB...

小白的成长
36分钟前
18
0
docker-rabbitmq

docker pull rabbitmqmkdir -p /rabbitmqdocker run -d \--name rabbitmq \--hostname rabbitmq \-v /rabbitmq:/var/lib/rabbitmq \-e RABBITMQ_DEFAULT_USER=root \-e RA......

李琼涛
38分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部