黄峰达:大学的时候,我主要学的是电子信息工程。在学校会和朋友一起做一些网站来赚买书钱。平时,便通过 Web 技术来结合硬件做一些内容。在现在,看来它们便是一些物联网应用。 CSDN:在庞大的物联网体系下,前端工程师从何入手物联网开发呢?可否结合您的个人经验具体谈谈? 黄峰达:今天的物联网应用,本质上还和 Web 应用的区别不是特别大——使用数据库存储数据、使用传输协议来传输数据、使用客户端作为 UI 界面等等,主要做的工作也是数据传输。 在一些资源丰富的设备设计上,我们仍然可以使用 HTTP API,仍然可以使用脚本语言编程,如 Python、Java。因此,建议前端工程师可以将 Web 视为物联网的基础,先在资源丰富的设备上,如 Raspberry Pi、Tessel、Ruff 学习物联网开发。 在这之上,再去考虑资源受限的设备,如 Arduino 便是一个很好的入口。这个时候,就需要学习更多的硬件知识,如底层编程、不同协议的数据传输等等。而事实上,有相当多的物联网应用并不需要在底层硬件上进行编程。 如今天流行的共享单车,便是最典型的物联网应用。除在单车本身,大部分的模型还是和 Web 相差无几,除了使用 HTTP 作为数据传输协议,还有可能使用 MQTT 来传输数据。而在单车上,它使用了 GPS、蓝牙低功耗来进行数据传输。 由于各种物联网云服务已经成熟了,因此在学习的过程中,推荐前端工程师可以直接采用各种云服务,如 AWS IoT、Azure IoT、IBM Watson IoT;又或者采用一些开源的物联网云软件。最后,再去编写相应的客户端软件。 CSDN:物联网开发涉及面庞杂,atv,开发周期长,所以我们必须寻找一种覆盖面广的编程语言和方法。Java 支持 HTTP 和 JSON 、支持函数式编程、可提供交互式环境等特点堪称适用于物联网全栈开发;Python 作为一种胶水语言,可在物联网及嵌入式系统中承担大量任务,并部分替代以上语言。由此就 Java 和 Python 两种脚本语言来看,您认为哪一种在物联网全栈开发中更为适合?具体理由是什么? 黄峰达:我偏向于使用 Java, 更适合全栈物联网。但是如果是在真实场景下,我偏向于结合两个语言。Java 可以用于开发各种原型软件、及大部分的客户端软件: Node.js 可以实现高并发的物联网应用 使用 Electron 开发桌面客户端,来帮助传统 使用 React Native、Ionic 开发手机 APP 使用 Ruff、Tessel 开发硬件端的应用 编写微信小程序直接访问蓝牙设备,进行交互与数据传输 在嵌入式系统 Linux 上,又可以制作 UI 界面来加速开发 而我们知道 Python 在科学、大数据与人工智能领域有更广泛的应用,而在这些领域 Java 只是能做,但是做不了最好。因此,我们可以将 Python 作为物联网智能的核心,剩下的内容都交给 Java。 CSDN:从开发者的角度来看,物联网开发主要面临什么样的技术挑战?开发者在面临这些挑战是会有什么样的误区? 黄峰达:个人认为,物联网开发的主要挑战是:如何快速开发出稳定、安全的系统。这里的『快速』指的是,比以往更快的速度。硬件开发,有一个开发周期长的问题,从设计制造出开发板、硬件原型,到最近的产品,是一个漫长的过程。它不能像 Web 应用一样,快速推出一个 MVP 产品,从市场中接受反馈。因此不仅仅对流程的要求高,还依赖于大量的经验丰富的程序员。 对于走迭代流程的 Web 应用来说,当线上出线 Bug 的时候,我们可以快速发布一个新的版本,或者回滚到上一个版本。可对于硬件应用来说,如果没有在一开始设计好更新策略,那么就只能召回这个产品。如果只是软件上有问题,那么还能通过软件更新来解决这个问题。如果是像三星 Galaxy Note 7一样的硬件问题,那么不仅仅会影响公司的发展,还会危险用户的生命安全。 (责任编辑:本港台直播) |