JavaScript und Multithreading



  • Hallo Leute,

    ich bin jetzt kein JS Spezialist und verwende es nur notgedrungen für Frontend Programmierung. Ich kann mir auch keine Meinung über JS bilden, allerdings wird es hier in meinen Unternehmen für diverse Applikationen (nicht nur frontend) sondern eben auch im backend Bereich gehyped .. (o.a. NodeRED etc.).
    Nun habe ich darüber gelesen, dass JS ja nicht Mulithreading fähig ist, durch diveres Pattern Async/await wird ja "nur" kooperative Multitasking verwenden, aber so wirklich auf verschieden thread, cores, task k.a. wird die Arbeit ja nicht verteilt. Nun meine Frage, wie skaliert denn eine "große" Applikation auf Basis von Js im Backend Bereich? Sprich load-balancing etc. kann nicht wirklich unter der Haube gehandelt werden oder? Ich verstehe eben das "gehype" nicht, und hätte gern ein paar Argumenten gegen js;)

    Grüße und schönes WE;)



    • man kann mehrere Prozesse starten
    • nodejs bietet AFAIK threads an


  • @manni66 sagte in JavaScript und Multithreading:

    man kann mehrere Prozesse starten
    nodejs bietet AFAIK threads an

    hmm... ok:

    man kann mehrere Prozesse starten
    nodejs bietet AFAIK threads an

    prozesse .. da hat man ja keinen gemeinsamen Speicher Bereich!?

    worker => ist das unter der Haube nicht kooperative Multitasking event queue und so?

    alles nur halbwissen und halblesen von mir;) kann falsch liegen



  • @SoIntMan sagte in JavaScript und Multithreading:

    prozesse .. da hat man ja keinen gemeinsamen Speicher Bereich!?

    1. ist das durchaus ein Vorteil
    2. gibt es schon seit eh und je Shared Memory

    worker => ist das unter der Haube nicht kooperative Multitasking event queue und so?

    AFAIK nein. Aber ich kenne mich damit auch nicht aus.



  • @SoIntMan sagte in JavaScript und Multithreading:

    sondern eben auch im backend Bereich gehyped

    Ich bin auch kein großer Fan von JS, Typescript oder Webtechnologien allgemein.
    Ich sehe das aber so... Was sind denn die Alternativen im Backend Bereich? Wenn wir über so etwas wie PHP oder Perl reden, dann halte ich nodejs mit Typescript doch für eine gute, moderne Lösung mit vielen Möglichkeiten.

    Wenn es darum geht Java, oder C# zu ersetzen dann eher weniger... Kommt aber auch auf die Projekte drauf an. Grad für kleinere "Serveranwendungen", die nicht viel machen, bietet sich das schon an, finde ich. Wenn man da gleich mit Java oder C# anfängt, lässt man sich vielleicht eher schnell zu Overengineering verleiten.

    Nein, man kann mit Workern schon mehr oder weniger richtiges Multi-Threading betreiben. Die müssen aber auch über Nachrichten miteinander kommunizieren, JS hat nun mal keine Sprachmittel für Synchronisierung usw. Hab aber selber auch noch nichts mit Workern gemacht.



  • Ich bin mir jetzt nicht sicher wieso php (in non-ancient, aktuellen versionen) bei dir per default hinter js/ts/whatever liegt.

    python hat mittlerweile auch mehr als genug moeglichkeiten einen potentiellen kandidaten darzustellen. da native JS ja quasi nicht (ohne signifikante dependencies) infrage kommt, gehts mit go + framework, ruby + rails, dotnet, etc genauso

    Der dependency overhead ist der gleiche, wenn nicht signifikant weniger... kA



  • Zum einen habe ich in den letzten 20 Jahren schon genug schlechte Erfahrungen mit PHP gemacht, freiwillig werde ich mir das nicht mehr antun.
    Zum anderen habe sogar ich (und andere sicherlich noch viel mehr) mit JS/TS wegen Frontends zu tun. Da liegt es schon nahe, bei der gleichen Technologie im Backend zu bleiben. Man kann nicht ein Experte in beliebig vielen Technologien sein. Deswegen ist node für mich hier schon eine sinvolle (und bevorzugte) Alternative.

    Und subjektiv habe ich schon das Gefühlt, dass sich im node Umfeld viele neue Ideen schnell entwickelt haben und die Wahrscheinlichkeit hoch ist, hier modernere und besser Lösungen zu finden. Seit wie vielen Jahrzehnten gibt es schon Ruby (und auch Rails)? Ja, mir hatte die Sprache seinerzeit gut gefallen. Aber node hat sich sehr viel schneller durchgesetzt und da steckt zur Zeit sehr viel mehr Potenzial dahinter. Von Ruby habe ich in den letzten Jahren hingegen gar nichts gehört, da muss man schon aktiv danach suchen.



  • Ich will nicht leugnen, dass php ueber die letzten 20 jahre improvements gebraucht hat. viele inkonsistenzen wurden mit ^7.* in-line gebracht und die sprache selbst hat die kurve bekommen. mit php8 kam jetzt nochmal nen heap von fixes + einige wunderbare features. es lohnt sich also mal drueber zu schauen und nicht mit dem gedankengang "war scheisse, ist scheisse" drauf zu schauen.

    In JS ist auch nicht alles rosig, wie dir sicher gut bekannt ist wenn du es regelmaessig benutzt.

    Das du bei rails oder ruby nicht alle 5 minuten ueber irgendwelche blogs stolperst, leuchtet mir auch durchaus ein, wenn du sonst nichts damit zutun hast. Aber das hat nichts damit zutun, das es nichts neues gibt.
    Du siehst es nur einfach nicht. Mir kommen jetzt auch nicht jeden morgen beim kaffee 5 neue ${WHATEVER} ueber node und sein giga tolles ecosystem (xd).



  • Ich selber habe auch nur durch frontend entwicklung mit Ts/js begonnen.. und verwende hier die polymer lit html webcomponents .. echt sehr interessant, muss mich mit html5 und css auch notgedrungen reinfuchsen... aber is schön. man lernt nie aus...

    zuvor war ich eben Jahrzehnte "nur" mit C++ und C# (nicht ASP, ) unterwegs... desktop seitig..

    Deswegen war es mir eben fremd, wieso die Leute JS für ihr backend verwenden:)



  • Ja, ist bei mir ähnlich. Ich programmiere auch noch zu ~95% C++ und habe auch nicht vor, das zu ändern. Habe aber auch etwas mit entsprechenden Frontends zu tun. Muss hier mitreden können, ab und zu auch selber was ändern (ist einfach einfacher).
    Mir war früher auch nicht klar, waurm man JS für Backend haben wollen würde, ich hab die Sprache nie gemocht. Aber nachdem ich mich damit sowieso etwas intensiver beschäftigen muss, und mit den anderen Kandidaten eben nicht, dann kommt es mir durchaus gelegen, dass ich einfach Typescript verwenden kann, wenn ich 2x im Jahr mal ein kleines Servertool basteln muss. Und mittlerweile ist JS schon besser geworden. Hat noch viele Altlasten, hat aber auch viele mächtige Features bekommen, deswegen ist es nicht mehr so unangenehm, damit ein bisschen was zu machen.


Anmelden zum Antworten