Go vs Javascript。 如何编写物联网项目

哪种编程语言最适合您的物联网项目? 这个问题的答案是模棱两可和主观的。 考虑此问题时,需要考虑几个方面:项目的目标,目的和需求。 您的个人喜好,合格开发人员的可用性和能力也扮演着重要的角色。



人们认为,谷歌开发的Golang语言最终可能会将JavaScript(或者更好的Node.js)推到物联网应用范围之外。 地鼠真的能赢得这场战斗吗? 让我们仔细看看Golang和JS,以及它们在物联网解决方案中的优缺点。

Java脚本




编程语言来来往往,但看起来JavaScript会保留很长时间。 最初由开发人员讨厌,如今由于资源效率高,这种高端编程语言已广泛应用于物联网。 由于在IoT应用程序中使用JavaScript的主题非常广泛,并且可能包括前端,后端和其他开发阶段,因此我们将其范围缩小到Node.js。 如您所知,JavaScript是一种语言,而Node.js是一种软件平台。 它使您可以通过API与输入/输出设备建立灵活的交互,并连接解决任务所需的库。

Node.js是管理传感器,雷达,信标,微系统和其他连接的设备的网络的理想选择。 此外,它在处理多个任务以维持所有这些IoT设备之间的交互方面做得非常出色。 开发人员同意,用于物联网软件的Node.js的优点是易于使用和合理的内存需求。

Telefonica,Rightech和Salesforce IoT Cloud等领先的物联网公司继续在其项目中实施Node.js,因此对JavaScript开发人员的需求在不久的将来似乎不会下降。

高朗




Go是一种开源编程语言。 它不像JavaScript那样广泛,但是已经设法抢占了它的IoT蛋糕。 像大多数平台和编程语言一样,它是由于开发人员对现有解决方案的不满而产生的。 Go的创建旨在加速将新开发人员引入工作流程,因此它的主要功能之一就是易于开发,使用和阅读,这对于希望以不熟悉的语言开始开发的人来说,入门门槛低。 尽管该语言在并发性和性能方面有所帮助,但它的功能集相对狭窄。

其功能还包括:

  • 严格的类型,数据类型是在编译阶段设置的,因此,可以在启动之前跟踪它们的差异。
  • 由于语言较为严格,因此结构较少,因此更易于阅读;
  • 该语言在Docker,Kubernetes等基础设施软件的开发中得到了积极使用。 必要时,对Go的了解将使他们能够对这些工具进行更深入的研究;
  • 由于语言生态系统还比较年轻,因此有可能寻求语言开发人员的技术支持来解决问题。

程序员通常选择Golang在IoT系统中构建通信层,因为并发性和同时运行数据输入/输出的能力是Go的一些关键优势。 同样,该语言也非常适合编写日志记录和解析服务。

Go的其他不太明显的好处包括:

  • 工具:文档-GoDoc和代码分析-Race Detector;
  • 内置的测试工具(如果您曾经尝试选择一个框架来测试JavaScript项目,那么您将了解其好处);
  • 使用数据竞速检测器进行并行编程的一种严肃方法
  • 与许多JavaScript工具和范例不同的是,每个人都可以遵循的单一样式指南(众所周知,当需要决定结构,约定,测试库等时,它们会使团队瘫痪)

按个别标准比较:




JavaScript和Go似乎都非常适合IoT项目。 因此,让我们比较一下Node.js和Go的功能以确定赢家。

成熟度。 Go相对年轻,是一种相当成熟的语言,此外,它最初被定位为稳定且向后兼容。 对于Node.js,它具有LTS(长期支持)版本以及最新版本(具有不断变化的API)和广泛的社区来支持该平台。

性能。 。 在网络交互以及与Go和Node.js数据库交互的实际条件下,它们显示出相同的结果。

并发 Go绝对是赢家:它使用轻量级流-goroutines,而Node.js继承了JavaScript事件循环机制,这有其缺点。

学习曲线。 根据最近的一项调查,得益于JavaScript,Node.js已成为增长最快的开发语言之一。 这样做的原因是易于学习,大量文档和庞大的开放社区。 Go也很容易学习。 PW Engine调查显示,大多数开发人员认为它非常直观,如果公司需要尽快将新员工引入工作流程,则这是一大优势。 因此,这也是平局。

错误处理。 意见分歧在这里。 Go使用显式错误检查,与隐式try \ catch不同。 因此,错误检查变得更大,但是它们更易于理解,因为它们更靠近发生的地方,并且旨在识别特定位置的问题,在Go的第二个版本中,他们承诺添加检查\处理。 Node.js使用try \ catch原理,这是许多语言通用的,并且有某些限制。

前端和后端。 Go旨在开发并行服务,因此对于服务器端而言非常有用。 尽管Go具有Beego和gopherjs之类的Web应用程序框架,但是使用JavaScript创建现代用户界面要方便得多。 此外,基于JS主导前端的事实,更容易以相同的语言同时支持后端和前端-JavaScript
开发人员的选择。 毫无疑问:JavaScript一直位居榜首,因为它早已被集成到全球开发人员的工作流中。 当然,Go进入了最流行的20大技术,但是不幸的是,就流行度而言,它与JavaScript仍然相去甚远。

同步/异步IO(同步/异步I / O)。 Node.js以其非阻塞I / O模型而闻名,这使其轻巧且资源高效。 但是它也有缺陷,例如代码中无休止的回调和奇怪的堆栈跟踪。 另一方面,Go使用其调度程序,建议开发人员依靠操作系统提供的各种工具来使用同步操作,以提高效率并减少资源阻塞。

在设备上工作。 使用NPM软件包管理器,Node.js可以有效地用作单板编程环境,例如Raspberry Pi, Iskra JsBeagleBone Black 。 NPM包含大约80个用于Arduino, 英特尔IoT Edison ,Raspberry Pi控制器的开源软件包,以及30多个用于各种设备和蓝牙传感器的软件包。 至于Go,它运行完整的Linux版本,因此非常适合Raspberry Pi板。 但是,诸如Arduino之类的低功耗IoT设备无法与Go二进制文件一起使用。 这就是创建Gobot框架的原因。 它支持多个平台,蓝牙LE设备,甚至NeuroSky接口。

图书馆 就库的数量而言,JavaScript当然会绕过它的对手,但是在某些领域,例如在数学方面,Go编写了更强大的工具来处理复杂的数学和数据分析。

结论


Golang是一种编译的多线程编程语言,可让您创建连接的控制器的整个系统并有效地使用数据库。 JavaScript是要求低响应时间的异步操作的理想选择。 现在,这两种语言远非可以互换。 JavaScript仍然是世界上最受欢迎的语言,尤其是在物联网上。 他坚守自己的立场,在不久的将来不太可能输给Golang。 但是,得益于其创新和可靠的方法,Go拥有领导顶级物联网技术的广阔前景。

Source: https://habr.com/ru/post/zh-CN426211/


All Articles