Forum: PC-Programmierung JS für IoT, statt C


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Hercules (hercules)


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

von Lebensberatung (Gast)


Lesenswert?

Bist du sicher dass du Ingenieur bist?

von JS Everywhere (Gast)


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.

von Hercules (hercules)


Lesenswert?

Lebensberatung schrieb:
> Bist du sicher dass du Ingenieur bist?

*herangehender sollte es heißen. Sorry..

von Tilo R. (joey5337) Benutzerseite


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.

von Hercules (hercules)


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.

von DerEinzigeBernd (Gast)


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.

von Euro (Gast)


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.

von DerEinzigeBernd (Gast)


Lesenswert?

Euro schrieb:
> Wenn man z.B. einem ESP einen Webserver (nur als Config) mitgibt, kann
> man schon einige Dinge clientseitig über JS erledigen lassen.

Das ist was anderes als wenn man versuchen würde, JS auf dem ESP laufen 
zu lassen.

von Tilo R. (joey5337) Benutzerseite


Lesenswert?

Wenn du Scriptable benutzen willst lern' halt ein bischen Java Script.
Für das was du brauchst.
Du musst ja nicht in dem stinkigen Ökosystem baden...
(Ich bin da zugegeben etwas voreingenommen)

von Le X. (lex_91)


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).

von Euro (Gast)


Lesenswert?

DerEinzigeBernd schrieb:
> Das ist was anderes als wenn man versuchen würde, JS auf dem ESP laufen
> zu lassen.
Offensichtlich beinhaltet der Begriff "IoT" mehr als nur das Device. 
Entsprechend würde ich JS dort gar nicht suchen - zumindest nicht 
vorrangig.

von Rolf M. (rmagnus)


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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.