JS für IoT, statt C

OP #7309677
Lesenswert?

Hallo zusammen, ich weiß das in der Regel C, Java oder Python sich gut eigenen, für IoT Anwendungen/ Geräte. Ich bevorzuge C. Das passt ganz gut, da ich mich als Ingenieur im Bereich eingebettete System bewege. Ich kann die Sprache für beide Zwecke nutzen.

Ich bin auf den Gedanken gestoßen, dass JS sich eventuell ebenfalls für IoT Programmierung eignet. JS wird hauptsächlich für Webanwendungen genutzt. Würde es sich daher nicht ebenfalls für IoT Anwendungen eignen? Klärt mich bitte auf. Teilt euer wissen mit mir!

LG

Gast #7309687
Lesenswert?

Du kannst es ja mal andersherum angehen, und versuchen ein IoT-System(*) zu finden, was ohne Javascript auskommt. Da wirst du dich schon sehr schwer tun.

*) also das komplette Ökosystem, nicht nur einen minimalen Teilbereich.

Persönliche Seite #7309758
Lesenswert?

Ich frag jetzt mal andersrum: Was sind den so die Stärken und Schwächen von JS? Oder den anderen Sprachen?

C ist streng typisiert und hat immerhin den Performance-Vorteil. Nachteil die manuelle Speicherverwaltung, damit verbunden das Risiko schlimmster Sicherheitsprobleme.

Java und Python sind interpretiert bzw. laufen in einer Ausführungsumgebung, mit Speicherschutz/Garbage Collection. Es gibt viele Bibliotheken, Python hat da Pluspunkte im AI-Bereich, auch als System Glue Language.

JS hat eine furchtbare, fehleranfällige Syntax. Nicht umsonst wurde TypeScript erfunden. Es läuft ebenfalls in einer VM, dank der Webbrowser gibt es inzwischen sehr effiziente VMs mit JIT, davon profitieren Frontend-Webanwendungen und im Backend Anwendungen wie NodeJS oder darauf basierende Anwendungen wie NodeRed.

Die Frage ist: wofür willst du die Sprache verwenden? Für eine Benutzerschnittstelle? Im Webbrowser-Frontend ist JS/TS ok. Ein Web-Backend in C ist imho quatsch. Eine Steuerung von irgendwas, da kann C dagegen ganz gut passen.

Es gibt nicht die eine Sprache. Wenn du C schon einigermaßen kannst stellt sich eher die Frage, was du als nächstes lernen möchtest.

OP #7309781
Lesenswert?

Die Frage ist: wofür willst du die Sprache verwenden? Für eine Benutzerschnittstelle? Im Webbrowser-Frontend ist JS/TS ok. Ein Web-Backend in C ist imho quatsch. Eine Steuerung von irgendwas, da kann C dagegen ganz gut passen.

Nun ich habe heute Scriptable entdeckt, womit man Widgets erstellen kann für das iPhone. Ziemlich Praktisch. Programmiert wird dort mit JS. Dafür würde ich ich es gerne lernen und mich mit auseinander setzen. Aber eine Sprache lernen, nur um es in diesem begrenzten Bereich zu nutzen erscheint mir nicht "lohnenswert". Wenn ich sie schon lerne, warum denn nicht direkt prüfen in welcher Hinsicht es mir noch nützlich sein kann, außer halt innerhalb der oben genannten App. Ich finde Hardware nahe Programmierung toll, IoT, Steuerung, Sicherheitssysteme etc.. doch in wie fern kann ich JS weiterhin für diesen Bereich nutzen. Mit Webentwicklung hab ich vorerst nichts am Hut. Das ist so bisschen mein Hintergedanke gewesen.

Gast #7309804
Lesenswert?

Hercules schrieb:

Ich bin auf den Gedanken gestoßen, dass JS sich eventuell ebenfalls für IoT Programmierung eignet.

C kann man auf einem Microcontroller mit sehr beschränkten Ressourcen verwenden. Das geht (sofern man ohne Netzwerk via tcp/ip arbeitet) schon mit ein paar hundert Byte RAM und ein paar kByte (Flash-)ROM. Wenn man einen IP-Stack dazu packt, kommt man aber mit 32 kByte RAM und etwas mehr Flash-ROM auch schon zurecht.

Um JS auf einem Microcontroller laufen lassen zu können, bedarf es /mehrere Größenordnungen/ fettere Ressourcen. /Eine/ Größenordnung ist Faktor zehn.

Gast #7309860
Lesenswert?

Wenn man z.B. einem ESP einen Webserver (nur als Config) mitgibt, kann man schon einige Dinge clientseitig über JS erledigen lassen. Ob man dazu wirklich JS zu lernen sucht oder sich eine Idee aus den vielseitig aufgestellten Web-Examples anpasst (sieht im Grunde genommen fast wie C aus) - also ich kann kein JS, aber einen Canvas über ein paar JSON-Nachrichten zum Leben zu erwecken ist als C-Programmierer auch mit JS nicht wirklich eine Herausforderung.

#7310187
Lesenswert?

Hercules schrieb:

Dafür würde ich ich es gerne lernen und mich mit auseinander setzen. Aber eine Sprache lernen, nur um es in diesem begrenzten Bereich zu nutzen erscheint mir nicht "lohnenswert".

Beim Programmiersprachenlernen ist es wie beim Liebemachen. Weh tuts nur beim ersten, evtl. noch beim zweiten Mal.

Wenn du mal 2 Sprachen sicher beherrscht wird es dir leicht fallen dich auf eine für dich neue Sprache zu adaptieren. Denn mal ehrlich, solange die Sprache nicht grundlegend andere Paradigmen implementiert ist über der Haube wenig Unterschied. Zwar wirst du, wenn du in Python so programmierst wie in C, evtl. nicht den elegantesten Code schreiben, aber ans Ziel kommst du trotzdem. Und mit der Zeit wirst du dann auch die Besonderheiten der neuen Sprache verinnerlichen und beachten.

Lange Rede kurzer Sinn: weniger nachdenken, mehr machen. Fang an was umzusetzen, egal in welcher Sprache. Dein erarbeitetes Wissen wird nicht umsonst sein.

Als natürlicher Partner von C/C++ erachte ich mittlerweile Python. JS geht aber genauso, auch für lokale Standalone-Anwedungen (siehe Node).

#7311298
Lesenswert?

Le X. schrieb:

Wenn du mal 2 Sprachen sicher beherrscht wird es dir leicht fallen dich auf eine für dich neue Sprache zu adaptieren. Denn mal ehrlich, solange die Sprache nicht grundlegend andere Paradigmen implementiert ist über der Haube wenig Unterschied.

Gehört das auch noch zu deiner Analogie? ;-)

Zwar wirst du, wenn du in Python so programmierst wie in C, evtl. nicht den elegantesten Code schreiben, aber ans Ziel kommst du trotzdem. Und mit der Zeit wirst du dann auch die Besonderheiten der neuen Sprache verinnerlichen und beachten.

Programmiersprachen sind meiner Erfahrung nach doch so unterschiedlich, dass der letzte Punkt durchaus sehr wichtig ist. Man kann recht schnell anfangen zu programmieren, aber brauchbare Programme kommen erst raus, wenn man die Eigenheiten der Programmiersprache kennt.

Lange Rede kurzer Sinn: weniger nachdenken, mehr machen.

Ja. Etwas nicht zu lernen aus Angst, man könnte es nachher vielleicht nicht mehr brauchen, ist nicht sinnvoll.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren