Allez vs Javascript. Comment écrire des projets IoT

Quel langage de programmation convient le mieux à votre projet IoT? La réponse à cette question est ambiguë et subjective. Il y a plusieurs aspects que vous devez considérer lors de l'examen de cette question: les objectifs, les buts et les besoins de votre projet. Un rôle important est également joué par vos préférences personnelles, la disponibilité et les capacités des développeurs qualifiés.



On pense que le langage Golang développé par Google pourrait éventuellement pousser JavaScript (ou, mieux, Node.js) hors de la portée des applications IoT. Un gopher peut-il vraiment gagner cette bataille? Examinons de plus près à la fois Golang et JS, leurs avantages et leurs inconvénients pour les solutions IoT.

Javascript




Les langages de programmation vont et viennent, mais il semble que JavaScript restera longtemps. À l'origine détesté par les développeurs, ce langage de programmation haut de gamme est aujourd'hui largement utilisé sur l'Internet des objets en raison de sa grande efficacité des ressources. Étant donné que le sujet de l'utilisation de JavaScript dans les applications IoT est assez étendu et peut inclure le frontend, le backend et d'autres étapes de développement, limitons-le à Node.js. Comme vous le savez, JavaScript est un langage et Node.js est une plate-forme logicielle. Il vous permet de configurer une interaction flexible avec les périphériques d'entrée / sortie via votre API, ainsi que de connecter les bibliothèques nécessaires à la résolution des tâches.

Node.js est idéal pour gérer des réseaux de capteurs, radars, balises, microsystèmes et autres appareils connectés. De plus, il fait un excellent travail de gestion de plusieurs tâches pour maintenir l'interaction entre tous ces appareils IoT. Les développeurs conviennent que les avantages de Node.js pour le logiciel IoT sont la facilité d'utilisation et les besoins en mémoire raisonnables.

Les principales sociétés IoT telles que Telefonica, Rightech et Salesforce IoT Cloud continuent d'implémenter Node.js dans leurs projets, de sorte que la demande de développeurs JavaScript ne semble pas baisser dans un proche avenir.

Golang




Go est un langage de programmation open source. Il n'est pas aussi répandu que JavaScript, mais il a déjà réussi à saisir son morceau de tarte IoT. Comme la plupart des plates-formes et des langages de programmation, il est né de l'insatisfaction des développeurs à l'égard des solutions existantes. Go a été créé pour accélérer l'introduction de nouveaux développeurs dans le flux de travail.L'une de ses principales caractéristiques est donc la facilité de développement, d'utilisation et de lecture, c'est-à-dire un seuil d'entrée bas pour quiconque souhaite démarrer le développement dans un langage inconnu. Ce langage a un ensemble de fonctions relativement étroit, bien qu'il bénéficie de la concurrence et des performances.

Ses fonctionnalités incluent également:

  • Typage strict, les types de données sont définis au stade de la compilation, par conséquent, leur incompatibilité peut être suivie avant le lancement;
  • Comme la langue est plus stricte, elle a des constructions moins volumineuses et, par conséquent, elle est plus facile à lire;
  • Ce langage est activement utilisé dans le développement de logiciels d'infrastructure tels que Docker, Kubernetes, etc. La connaissance de Go, si nécessaire, permettra une étude plus approfondie de ces outils;
  • Étant donné que l'écosystème linguistique est relativement jeune, il est possible de recourir au support technique pour les développeurs de langues afin de résoudre les problèmes problématiques;

Les programmeurs choisissent généralement Golang pour créer la couche de communication dans le système IoT, car la simultanéité et la possibilité d'exécuter simultanément l'entrée / la sortie des données sont quelques-uns des principaux avantages de Go. En outre, cette langue est idéale pour écrire des services de journalisation et d'analyse.

Les autres avantages pas si évidents de Go incluent:

  • outils: documentation - GoDoc et analyse de code - Race Detector;
  • outil de test intégré (si vous avez déjà essayé de choisir un cadre pour tester un projet en JavaScript, vous en comprenez les avantages);
  • Une approche sérieuse de la programmation simultanée avec le Data Race Detector
  • un guide de style unique à suivre par tous, contrairement à de nombreux outils et paradigmes JavaScript (ils sont connus pour paralyser une équipe lorsqu'il est temps de décider d'une structure, de conventions, de bibliothèques de test, etc.)

Comparer par critères individuels:




JavaScript et Go semblent être bien adaptés aux projets IoT. Comparons donc les fonctionnalités de Node.js et Go pour déterminer le gagnant.

Maturité. Étant relativement jeune, le go est une langue assez mature, et en plus, il était initialement positionné comme stable et rétrocompatible. Quant à Node.js, il a une version LTS (Long Time Support), ainsi que la dernière version, qui a une API changeante, et une communauté étendue prenant en charge la plate-forme.

Performance. . Dans des conditions réelles d'interaction réseau et d'interaction avec la base de données Go et Node.js, ils affichent des résultats égaux.

Accès simultané Ici, Go gagne définitivement: il utilise des flux légers - des goroutines, et Node.js hérite d'un mécanisme de boucle d'événements JavaScript, qui a ses inconvénients.

Courbe d'apprentissage. Grâce à JavaScript, selon une récente enquête, Node.js est devenu l'un des langages de développement à la croissance la plus rapide. La raison en est facile à apprendre, une documentation complète et une grande communauté ouverte. Go est également assez facile à apprendre. L'enquête PW Engine a montré que la plupart des développeurs la considèrent très intuitive, ce qui est un gros plus si l'entreprise doit introduire de nouveaux employés dans le flux de travail le plus rapidement possible. Alors, voici aussi un tirage au sort.

Gestion des erreurs. Les opinions diffèrent ici. Go utilise une vérification d'erreur explicite, contrairement à try \ catch implicite. Pour cette raison, les vérifications d'erreur deviennent plus importantes, mais elles sont plus compréhensibles, car elles sont plus proches du lieu de leur occurrence et visent à déterminer le problème à un endroit spécifique, dans la deuxième version de Go, elles promettent d'ajouter check \ handle. Node.js utilise le principe try \ catch, commun à de nombreuses langues, et avec certaines limitations.

Frontend et backend. Go vise à développer des services parallèles, donc c'est génial pour le côté serveur. Bien que Go ait des cadres d'applications Web comme Beego et gopherjs, il est beaucoup plus pratique de créer une interface utilisateur moderne avec JavaScript. De plus, étant donné que JS domine le frontal, il est plus facile de prendre en charge le backend et le frontend dans le même langage - JavaScript
Le choix des développeurs. Cela ne fait aucun doute: JavaScript reste au sommet car il a longtemps été intégré dans les workflows des développeurs du monde entier. Bien sûr, Go est entré dans le top 20 des technologies les plus populaires, mais malheureusement, il est encore loin de JavaScript en termes de popularité.

Sync / Async IO (E / S synchrones / asynchrones). Node.js est célèbre pour son modèle d'E / S non bloquant, ce qui le rend léger et économe en ressources. Mais il a également des défauts, tels que des rappels sans fin dans le code et d'étranges traces de pile. D'autre part, Go, à l'aide de son ordonnanceur, recommande aux développeurs d'utiliser des opérations synchrones, en s'appuyant sur divers outils fournis par le système d'exploitation, pour augmenter l'efficacité et réduire le blocage des ressources.

Travaillez sur des appareils. Avec le gestionnaire de packages NPM, Node.js peut être utilisé efficacement comme un environnement de programmation à carte unique, tel que Raspberry Pi, Iskra Js ou BeagleBone Black . NPM contient environ 80 packages open source pour les contrôleurs Arduino, Intel IoT Edison , Raspberry Pi et plus de 30 packages pour divers appareils et capteurs Bluetooth. Quant à Go, il s'adapte bien aux cartes Raspberry Pi, car il exécute la version complète de Linux. Cependant, les appareils IoT à faible consommation tels que Arduino ne peuvent pas fonctionner avec Go binaire. C'est pourquoi le framework Gobot a été créé. Il prend en charge plusieurs plates-formes, les appareils Bluetooth LE et même l'interface NeuroSky.

Bibliothèques En termes de nombre de bibliothèques, JavaScript, bien sûr, contourne son adversaire, mais dans certains domaines, par exemple en mathématiques, Go a écrit des outils plus puissants pour travailler avec des mathématiques complexes et l'analyse de données.

Conclusion


Golang est un langage de programmation multithread compilé qui vous permet de créer des systèmes entiers de contrôleurs connectés et de travailler efficacement avec des bases de données. JavaScript est idéal pour les opérations asynchrones qui nécessitent de faibles temps de réponse. Or ces deux langues sont loin d'être interchangeables. JavaScript reste le langage le plus populaire au monde, notamment sur Internet des objets. Il tient fermement sa position et ne perdra probablement pas contre Golang dans un avenir proche. Cependant, grâce à son approche innovante et fiable, Go a de très belles perspectives de leader des meilleures technologies IoT.

Source: https://habr.com/ru/post/fr426211/


All Articles