本篇文章4279字,读完约11分钟

嘉宾介绍:叶正,ruffcto,oracleduke choice奖获奖作品《moco》的作者,目前从事物联网领域,致力于简化物联网应用的开发模式。他在各种媒体上发表了许多文章,并在各种技术会议上发表了演讲。他对敏捷软件开发、软件设计、特定领域语言等有着深刻的理解。他愿意分享他对软件开发的理解,吸收新的知识,并与人们谈论软件和硬件开发。

JavaScript 也可以搞定嵌入式开发? | 硬创公开课

[叶正首席技术官拉夫]

物联网被认为是未来。但令人尴尬的是,这些代表未来的酷产品似乎只存在于业内人士的ppt中。大多数真正走进普通人生活的人只是“带wi-fi的普通硬件”。与生态推广过程中遇到的大多数问题一样,物联网缺乏一个关键的系统——应用。由于缺乏应用,自然很难创建用户生态。然而,这并不完全是开发商的责任。在大多数情况下,开发人员都处于一种他们做不到的状态,因为涉及硬件的“嵌入式开发”需要大量的底层硬件代码基础,这使得庞大的软件程气馁。

JavaScript 也可以搞定嵌入式开发? | 硬创公开课

“拉夫”的目标是解决这个问题。简而言之,ruff允许开发人员使用流行的javascript语言进行嵌入式开发。他们是怎么做到的?慢慢听拉夫·叶正的。

拉夫是什么?Ruff是一个硬件应用开发平台。简而言之,使用ruff,开发人员可以使用javascript开发硬件应用程序。

从行业发展趋势来看,物联网被认为是未来。众所周知,中国目前的制造标准也是世界级的。然而,从趋势到现实,缺少了什么?我们看到的是:应用。

我们都在谈论智能硬件。事实上,所谓的智能硬件是一种“硬件应用”,它结合了硬件和应用场景。应用程序的成功本质上是一个概率问题。我们没有看到许多成功的硬件应用程序的主要原因是应用程序的总数太少了。很多人可以看到这是一片蓝色的海洋,但问题是不是每个人都有能力进入这个领域,因为硬件应用的门槛太高了。

JavaScript 也可以搞定嵌入式开发? | 硬创公开课

这类似于诺基亚手机时代。很多人想写手机应用程序,但只有少数程序员有能力写手机应用程序。我曾经想买诺基亚手机来开发,但最终因为开发太麻烦而放弃了。后来,随着ios和android的出现,开发门槛突然下降,大量程序员涌入。直到那时,我们才看到移动互联网的崛起,也看到了微信和滴滴等爆炸性的应用。

因此,ruff是为了解决硬件应用开发领域同样的问题,降低硬件应用开发的门槛,让更多有应用开发能力的人进入这个领域。

一位得到ruff的前端开发人员很快编写了一个小应用程序:用打火机点亮网页上的灯。因为ruff,从未写过硬件的开发人员有机会开始写硬件应用程序。拉夫通过降低门槛就是这么做的。总之,ruff旨在降低硬件应用程序开发的门槛,以便开发人员能够创建更具创造性的硬件应用程序。

硬件应用程序开发的门槛有多高?从目前的情况来看,硬件和应用完全是两个词汇。例如,那些做硬件的人关心gpio、i2c、时序、驱动器等。,而应用程序开发人员关心需求、用户体验、高可用性、系统架构等。我问应用程序开发人员什么是gpio,他们的表情就像看见了鬼;我还要求硬件开发人员谈谈什么是可靠的设计原则,但很少有人能解释清楚。

JavaScript 也可以搞定嵌入式开发? | 硬创公开课

这是硬件和软件之间的差距。对一个人来说,同时具备硬件和应用技能是很高的要求。事实上,即使在硬件开发领域,除了应用之外,对于系统和硬件也有不同的论述体系。有人关注过程,有人关注晶体振荡器;一些人关注嵌入式系统,而另一些人关注印刷电路板。

让人掌握一切,难度系数就会直线上升。即使有这样的人,价格也会很高,能找到的人也是有限的。此外,在五金领域,反复制造车轮的现象非常严重。即使开发人员熟悉很多东西,他们也可能不得不在一个新的环境中再做一次。例如,需要移植通用网络协议,编写通用驱动程序。我所有的印象都来自一位在硬件开发方面有20年经验的老法师,他称之为血泪史。

JavaScript 也可以搞定嵌入式开发? | 硬创公开课

在与应用程序的对接中,硬件开发的过程基本上是一个瀑布式的开发过程,或者说是一个自上而下的过程,也就是说,先确定需求,然后进入一个开发过程,这个过程通常会持续很长时间。从软件工程的实践来看,这是一种低效的方式,因为最重要的是快速反馈,而且一年前的市场需求不同于当前的市场需求。

因此,在软件领域采用敏捷和精益的方法,改进这个过程最重要的是迭代的思想,并不断改进产品。目前,市场上许多有思想的人来自互联网领域,他们习惯于与软件应用程序开发人员一起工作。因此,他们更习惯于使用迭代思想,但是相同的工作逻辑在硬件领域很难工作。

例如,

产品经理希望迭代地看到产品的进展,因为他的想法需要反复验证,而硬件开发人员希望在开发之前确定需求,因为在他的逻辑中,硬件一旦制造出来就很难改变。

这种现象更根本的原因是硬件制造商正在编写应用程序。硬件制造商根本不擅长应用程序开发。当我们把硬件和应用的概念分开时,我们会发现相同的硬件在不同的情况下会有不同的应用。

例如,

同样的饮水机,如果你把它买回家,它的应用是统计你家里的饮水情况,提醒你多喝水;

如果你把饮水机租回家,它会提醒你按时付款,以确保正常使用。

硬件是一样的,但应用是不同的。解决这个问题的最好方法是分工,这样应用程序开发人员只关注应用程序,而硬件制造商只关注硬件。将两者联系起来,这就是拉夫想要做的。

为什么是javascript?

对于程序员来说,语言的选择总是一场宗教战争。我们将ruff定位为一个应用程序开发平台,因此在选择技术选择时,我们应该尽可能多地考虑应用程序开发人员熟悉的内容,所以ruff选择了javascript。

首先,我们排除了硬件开发人员最熟悉的c/c++,因为在大多数程序员眼里,c/c++是一种系统语言。一旦c/c++被使用,程序员将会回到系统开发的想法。

第三,我们排除了java,目前最流行的语言。从观众的角度来看,最重要的是要考虑java,这是安卓的方式,但是java对资源有限的硬件来说太重了。

Javascript是一种合适的语言,原因如下:

首先,它是一种真正的平台范围语言,可以在所有系统上运行,包括浏览器、手机、服务器和客户端。

其次,随着node.js的流行,javascript社区变得越来越活跃,许多新的想法也在这个社区中出现。

第三,javascript有许多很好的运行时实现,这方便了我们的工作。套用软件开发界的一句话:阿特伍德定律,所有可以用javascript编写的应用程序最终都会用javascript编写。

然而,根本原因是观众,所以没有必要从零开始教育市场。因此,拉夫选择了javascript。事实上,许多大公司也从事这个领域,大多数人选择javascript。

javascript优于C语言吗?就我个人而言,我更喜欢比较抽象的层次,而不是简单的语法。从技术的发展趋势来看,我们已经清楚地看到应用开发的抽象层次越来越高。

例如,在开始的时候,每个人都使用机器代码,因为它不便于记忆并且有汇编,并且因为汇编对于不同的模型是不同的,所以它产生了像c这样的编程语言。后来,c++提供了面向对象的编程和良好的程序组织。抽象程度越高,编写相同数量的内容所需的代码就越少。

我曾经比较过一个大工厂生产的c/c++硬件应用开发框架,点亮了一个板载灯,上面写了大约50行代码。用ruff,我写了3行代码,2行是帧代码。

美元。就绪(功能(){

$( #led-r)。turnon();

});

通过这段代码,您可以感受到不同之处。真正的核心代码只有一行,那就是抽象的价值。

仅使用javascript我们能开发多深?javascript语言社区已经提供了许多很好的抽象,比如基于事件的模型。

拉夫也建立了自己的抽象概念。例如,驱动程序开发人员和应用程序开发人员是分开的。只有驱动程序开发人员需要关注硬件细节,而应用程序开发人员只需要关注应用程序逻辑。

刚才显示的代码是一个应用程序代码,您根本看不到硬件参数。这就是分层架构的力量和抽象的力量。此外,ruff在设计之初就考虑了应用测试。用ruff开发的代码可以在开发机器上很好地测试逻辑,然后将其部署到特定的硬件板上。这可以防止由于一些低级错误而导致的重复烧板造成的时间浪费。

Ruff还配备了命令行工具来简化应用程序开发和板部署,并且还拥有一个软件仓库,允许驱动程序开发人员上传他们自己的驱动程序并与社区共享。

至于实现javascript的硬件编程,原因很简单:运行一个javascript引擎,并在其上运行javascript程序。

就具体实施而言,

第一步:选择一个嵌入式javascript引擎;

第二部分,在操作系统上运行,并在此基础上构建ruff,这也是目前对外发布的版本。

简单地说,这是从创建最小可行产品(mvp)的想法开始的。Ruff正在开发一个基于mcu的版本,即直接在硬件上运行javascript引擎。这可以更好地解决功耗和实时性的问题。

ruff的未来现在,开发人员可以看到一些开发板,如草莓馅饼,ardunio和inteledison。Ruff提供了一个开发框架。此外,ruff本身也提供了一套开发工具包,这样做的原因是让人们尽快开始使用ruff。

关键区别在于这些开发板只能用作小型应用程序或原型。当然,这也是ruff开发套件的现状。不同的是,制作ruff的目的并不仅限于此。我们希望将来能投入生产。也就是说,硬件应用程序在一个更真实的设备上使用软件代码,比如微控制器,根本不需要修改它。对我们来说很明显,ruff的目的地不是开发板,这与其他开发板的目标有很大不同。

JavaScript 也可以搞定嵌入式开发? | 硬创公开课

坦率地说,应用程序开发人员很难意识到他们可以编写硬件应用程序。许多软件程序员根本不敢考虑硬件。就像安卓和ios出现之前一样,应用程序开发人员认为他们无法编写移动应用程序。意识上有差距,大多数应用程序开发人员不认为硬件开发与他们有任何关系。正是因为他们觉得硬件应用程序开发太难了,他们才会避免它。

JavaScript 也可以搞定嵌入式开发? | 硬创公开课

对拉夫来说,这是一个教育市场化的过程。事实上,硬件应用的开发实际上非常简单:很容易控制你的电视,而且在你家里开灯也不那么困难。跨越意识的鸿沟,理解硬件并不困难。当我们的正式版本发布的时候,我们会投入大量的精力到开发者社区,让开发者意识到他们实际上可以做更多的事情。

关于拉夫的最新消息

今年1月,ruff推出了少量的公共测试套件,并分发给一些感兴趣的用户,软件sdk随公共测试一起发布。大约一个月后会有新版本。叶正表示,官方版本的内部备货已经基本完成,五一之后将正式开始销售,让更多的开发商可以尝试新的开发体验。

拉夫开发套件购买邮票这个

官方网站:ruff.io

标题:JavaScript 也可以搞定嵌入式开发? | 硬创公开课

地址:http://www.j4f2.com/ydbxw/11493.html