Node.js: Laufzeitumgebung für JavaScript #87 - podcast episode cover

Node.js: Laufzeitumgebung für JavaScript #87

Jul 01, 20251 hr 6 minEp. 87
--:--
--:--
Download Metacast podcast app
Listen to this episode in Metacast mobile app
Don't just listen to podcasts. Learn from them with transcripts, summaries, and chapters for every episode. Skim, search, and bookmark insights. Learn more

Episode description

Node.js ist keine Programmiersprache, sondern eine JavaScript-Laufzeitumgebung – entwickelt 2009 von Ryan Dahl, um JavaScript auch auf dem Server nutzbar zu machen. Heute läuft Node.js weltweit: bei Netflix, PayPal, LinkedIn und unzähligen APIs.

Der Eventloop, Non-Blocking I/O und das riesige npm-Ökosystem machen Node.js besonders effizient für Echtzeitanwendungen und Microservices. Gleichzeitig wächst der Druck durch Alternativen wie Deno und Bun.

Neben den Besonderheiten von Node.js schauen wir uns auch typische Datentypen, zentrale Syntax-Elemente und ein paar nützliche Kniffe an. Kein Tutorial – aber eine gute Grundlage, um mitsprechen zu können.

------

Einfach Komplex ist ein Podcast von Heisenware.

Alle Infos und Kontakte findest du

im Linktree ⁠⁠https://linktr.ee/heisenware

oder unter heisenware.com.

------

Burkhard und Gerrit sprechen heute über:

(00:00:00) Geschichte und Entstehung

(00:13:30) Eventloop und v8 JavaScript Engine

(00:18:30) Single Thread, Callbacks, Async/Await

(00:26:00) Anwendungsfälle von Node.js

(00:30:30) Die Rolle von C++

(00:35:30) Unterschied zwischen JavaScript und Node.js

(00:36:30) Module, npm-Pakete und Abhängigkeiten

(00:47:30) Datentypen und Syntax

(00:57:00) Node.js lernen

(01:00:30) JSON.stringify

Transcript

Geschichte und Entstehung

Moin Leute zu einfach komplex folge 87 ich hab dir das schon mal gehört, dass ich das anfange.

Nee, heute geht es um nen Thema was große Leidenschaft von mir ist, nämlich um Javascript und no JS ja die Programmiersprache die ich am meisten benutze im Moment und da tatsächlich auch am meisten Schätze und ich würde einfach mal euch heute nen Rundumschlag geben von bis ja bisschen Historie, bisschen Environment drumherum, bisschen wie sieht es aus von innen, was kann man cool damit machen, darum geht es heute.

Hey Leute, bevor die Folge richtig losgeht, kommt hier schon mal ne Korrektur. Wir haben die ganze Folge über behauptet, No CHS sei eine Programmiersprache, aber eigentlich ist NO CHS eine Laufzeitumgebung, mit der man Java Script außerhalb des Browsers ausführen kann.

Tut uns leid, dass uns hier dieser Fauxpas unterlaufen ist, aber jetzt wisst ihr Bescheid, no chs ist an sich keine Programmiersprache, sondern diese Laufzeitumgebung, die Funktionen und Module mitbringt, die eben benutzt werden, um Java Script außerhalb des Browsers laufen zu lassen, das. Jetzt aber viel Spaß mit der Folge und Sorry nochmal. Und wie immer habe ich auch meinen Experten dabei, den Gerrit. Hallo Gerrit.

Hi Burkhard und Hallo liebe zuhören, ich glaube damit ist schon mal klar, welcher der Folge den Redeanteil haben wird. Ich gucke mal, dass ich auf meine 5% komme oder so weiß ich noch nicht bei dem Thema No Jazz, aber ich habe ein paar Fakten ergoogelt, mal gucken ob du die dann weißt. Ja genau, da kannst du mich mal n paar Sachen fragen. Ich weiß bestimmt nicht alles, das ist also ein Riesenthema.

Ich hab hier auch links neben mir hab ich n Buch liegen, das ist jetzt auch schon ziemlich alt geworden, das hab ich mir damals gekauft als ich mit Note JS angefangen hab mach ich auch noch nicht immer Note JS programmieren warte mal. Das Buch ist von 2000 und lass mich gucken lädt da noch eine Seite 2016 ja also späten Star hab ich angefangen aber ich glaub schon n bisschen früher. Uralt?

Ja, für. Programmiersprache ist das ja gar nicht so furchtbar alt, ja, oder wenn man manchmal so hört, kam Modbus aus. Neulich hatten, was er gefühlt irgendwie aus den Aus der Steinzeit noch kam. Dafür ist ja no JS dann ziemlich modern 2016 oder 2009 wo es glaub ich irgendwie eingeführt wurde. Ja, genau, ja. Eingeführt wurde es glaub ich noch n bisschen früher mit mit 2009 genau ja, entstanden ist es wohl 1995. Also die Uhr der Uhrschleim

davon. Aber es ist also auf jeden Fall ne moderne Programmiersprache, da sagst du was. Ja, das ist so, ja und die macht richtig viel Spaß, also sie hat sich extrem krass weiterentwickelt, das muss man mal sagen, ja, also man muss als Entwickler musste mal n bisschen was mitmachen, also die ganzen neuen Features die so reinkamen, davon hab ich auch viele erlebt, also die Versionen quasi der

Programmiersprache selbst. Das ist ja auch so wenn man das nicht weiß, ne Programmiersprache ist ja nicht in Stein gemeißelt sondern entwickelt sich selbst weiter ne so wie und wie auch. Die deutsche oder französische englische Sprache dann auch neue Wörter kriegt und Begriffe, ist aber eine Programmiersprache noch eine ganze Runde krasser. Also da entsteht auch mal eine neue Grammatik.

Ja, sowas wie der Adhusativ oder Irgendsowas ja als Neuer, also vielleicht ein ganz neuer Fall oder Irgendsowas, also nicht nur einfach Wörter, sondern auch irgendwie, ja das passiert dann bei bei Nocias auch zu zu vielen teilen, aber immer in eine gute Richtung wie ich finde. Ja sollen wir mal ein bisschen einsteigen, wollen wir ein bisschen was anfangen zur Geschichte oder was kommt es her, wer hat es gemacht? Ja, bitte. Gut, da bin ich immer nur.

Also da hab ich auch nur das Wissen nicht aus dem Alltag, sondern aus den Büchern und so weiter das könnt ihr auch selber noch mal, das kann. Man ja auch nachlesen, ne. Ja, ganz genau. Aber ja, das ist richtig.

Die Idee war halt, also, es kommt noch aus der Zeit und das ist vielleicht wichtig zu sagen, es kommt aus der Zeit und aus dem Problem, dass ich HTML als statisch zu statisch empfunden habe oder viele anderen um um um n bisschen mehr Flexibilität, bisschen mehr Dynamik in diese Webseiten zu bringen, das war so im Jahr 1995. Und das ist wichtig, weil jetzt von vornherein war jemand auf der Suche nach einem neuen Konzept, nach einer neuen Sprache, die das ein bisschen

ablöst. Und das hat sie halt schon immer im Internet zu tun und schon immer irgendwie mit dem Web. Ja, das ist die Idee, also diese, diese Sprache ist damit verwoben, ja, und deswegen ist sie wahrscheinlich heute noch so erfolgreich, ja, und das war Brandon Nike, der hat 1995 hat der Mokka gemacht, das hat mir glaub ich auch schon mal

irgendwo gesagt. Das war das allererste von von diesen Dingern und das und der hat bei Brandon Hike hat bei Netscape gearbeitet, damals Netscape, weil die es nicht wissen war n browserhersteller Firma die n Browser gemacht hat selbigen Namen sehr erfolgreich damals und es geht das Gerücht um, dass er diesen diesen Prototypen quasi der Initialen Java Scriptsprache in 10 Tagen Gecodet hat ist immer krass.

Also es gibt ja auch dieses Gerücht von Linus Torvalds, also das ist glaub ich nicht kein Gerücht, das ist auch so, ja dass er auch git. In sehr schneller Zeit gemacht hat. Das ist glaub ich manchmal so. Ja so so ne so ne man dann so n Geistesblitz hat und dann wahrscheinlich hält man dann die Jalousien unter und schließt sich ein und dann ist man nach 10 Tagen aber völlig fertig wieder raus und hat aber irgendwas geschaffen sag ich

mal. Die Frage ist ja, ob man also ob in diesen 10 Tagen, die das, also die Zeit dabei ist, in der man sich das ausgedacht hat, auch ne, oder ob das vielleicht über Monate gereift ist, über Ideen und und Gedanken und Brainstormings. Und dann? Ist es im Kopf zu 80% fertig oder so? Und dann wird es runtergerattert ja, in 10 Tagen vielleicht keine Ahnung. Könnte ich mir vorstellen.

So funktioniert es bei mir meistens ja, ich brauch immer so n bisschen, ich geh immer schwanger mit irgendwelchen Sachen und dann wenn es dann fertig ist im Gehirn, dann versucht man es runter zu schreiben, da kommt meistens noch mal so n ah verdammt hab ich vergessen muss ich noch mal kurz nachdenken aber ja das geht anscheinend so so angeblich ist es entstanden und dann wurde es noch n paar Mal umgetauft glaub innerhalb des Jahres 1995 bis ins Final Java Scriptis.

Dazu hab ich versucht rauszubekommen.

Warum haben die das Java Script genannt und was ich gelesen hab ist, dass damals halt Java ziemlich bekannt war und man dachte so Java setzt sich vielleicht durch als Kleinsprache im Browser und so weiter und als Marketingaktion hab ich es dann halt so genannt, dass da Java im Wort mit drin ist, um dem ganzen Bedeutung zu verleihen hat hat es halt Java Script genannt, das ist bis heute für die Leute die das irgendwie noch nie gehört haben n bisschen n Fettnäpfchen

schnell mal weil Java Script tatsächlich mit Java nichts zu tun hat. Ja das war ganz unterschiedliche Sprachen. Marketing Er hat den Namen da des Java Reingespielt, ja. Ja, ist mir auch schon häufiger passiert. Inzwischen weiß ich es. Java ist schon auch im Web vorgekommen, ne wo dann diese Kaffeetasse war mit diesem Logo, mit dieser Kaffeetasse, diese

Dampf glaub ich oder? Ja, genau, genau das, das Java, ja die die da, die sind ja auch im Web aktiv und so weiter aber halt verschiedene komplett verschiedene Programmiersprachen so und dann will ich gar nicht lange rumreden, aber dann ist halt noch die Frage, warum setzt sich also wie kriegt man jetzt sowas was ein Mann. Geschaffen hat. Wieso setzt sich das dann irgendwie durch?

Das das liegt dann immer an vielen Sachen, es war halt auch so, dass damals die Browser so aufkamen und dann gab es halt quasi den den sogenannten Browserkrieg man, man nennt das so, also es hat sich Microsoft gebettelt mit Netscape gebettelt mit ich weiß nicht wer da noch alles aktiv war, da gab es der Markt war noch nicht verteilt, die die Browserhersteller waren alle dabei und die haben halt händeringend gesucht nach Lösungen die Halt diese webauftritte dynamischer

aussehen lassen und dann kam dieses Javascript und das war halt cool und dann gab es noch von Microsoft das Jay Script.

Was aber javascript kompatibel war und dann ging es los und dann musste man halt bei javascript, da kommen wir nachher noch zu ist ne interpretierte Sprache und das heißt der Browser muss, der Browserhersteller muss was machen damit javascript richtig ausgeführt wird und gut läuft und dann haben sich halt quasi unternehmen alle darum gebettelt wer jetzt hier noch schneller javascript ausführen kann weil das für die Nutzer am Ende für die UX war das natürlich total

kritisch. Ja wer am schnellsten Javascript ausführen konnte hatte das liquideste Erlebnis auf dem auf dem Browser ja. Und so haben die sich glaub ich gegenseitig da hochgeschaukelt und das Gleiche ist dann später noch mal passiert und jetzt kommen wir nämlich rüber zu zu no JS. Also das javascript ist quasi ne sehr erfolgreiche Sprache im Hauser geworden und jetzt gab es den den den Ryan Dahl so ich mich belesen habe, der war ein

Promovent der Mathematik, also auch wahrscheinlich ein ein theoretisch denkender Mensch ist glaub ich immer schon mal ne gute Voraussetzung für ne neue Sprache und was ich gelesen hab ist ne kleine Anekdote, der wollte eigentlich.

Der wollte eigentlich so mit seinen, also der der, der fand irgendwie Computing und so weiter auch cool und war von diesen Webtechnologien ja angefixt und der wollte so was einfaches Programmieren wie ne progress bar für n Pfeil upload, so dass man sieht was so los ist. Ja und hat er relativ lange für gebraucht weil er war mit nichts zufrieden weil irgendwie war alles nur so ne Art Workaround und nicht optimal. Ja und das hat der Mellart

damals nicht hergegeben, weil. Ach, mit den Long Pauls und das weiß ich nicht alles so und jedenfalls ist der Rumgereist also auch also tatsächlich selber gereist. Aber auch in den Programmiersprachen hat Huscal ausprobiert und c was ausprobiert und so weiter und hat am Ende am Ende Java Script entdeckt und gesagt, OK, das brauchen wir, aber das brauchen wir quasi als eigene Programmiersprache für den Server und damit ist quasi der Grundstein von Noja S gelegt worden.

Und da hat der Mann, der gar nicht so reich war und auch n ziemlicher Einzelkämpfer, der hat dann losgelegt und dann ja auf Maler Kante, sag ich mal Note JS gebaut und man hat noch n Mitstreiter gefunden, der Isaac Schlüter, den muss man auch noch mal nennen, also den Ryan Dahl als Note JS ja Erfinder und der Isaac Schlüter, der hat quasi das den Note Package Manager, das NPM, das kennt man wenn man wenn man da

mal so drinne war. Ja, mit vorangetrieben und dann, das sag ich jetzt gleich was, das ist nämlich auch, also es ist eigentlich immer so ne Programmiersprache, die ja die definiert quasi die Grammatik und wie es funktioniert und so weiter also wie funktioniert die Sprache und aber jede Sprache ist eigentlich nur so mächtig wie es ja Abhängigkeiten, dependency Pakete, externe Tools gibt, die die Sprache quasi verstärken, ja weil wenn ich jetzt alles noch mal von vorne

machen muss, hab es auch ne tolle Sprache, muss aber

irgendwie PDF rendering und. Ach, was weiß ich, es gibt ja alles Mögliche, was schon mal gelöst wurde, ja irgendwie mathematische Formeln rennen dann late ich was weiß ich alles, dieses ganze Grabens, ja alles was was man so braucht, ja sockets und so ich das alles noch mal selber machen muss dann nein da gewinne ich keinen keinen keinen Blumenstrauß ja und aber dieser Isaak jüt hat sich von vornherein überlegt, wie machen wir das gut, ja, also wie machen wir dieses Dependency

Management gut und das hat er auch gut gemacht, ich finde das super cool das dazu sage ich nachher auch noch mal ein bisschen was, aber das entstand quasi auch 2009 mit gleich mit No GS. Das war, glaube ich auch gesund, weil da nichts dran geflanscht war. Das war von vornherein irgendwie ne ne ne Union, ja und die haben beiden haben erkannt das das braucht, das braucht es beides ja ist ne Dichte. Ne dichte Verzahnung.

Ne dichte Verzahnung. Danke also ne dichte Verzahnung von Raketmanagement und Programmiersprache benötigt das, das haben die beiden sehr früh erkannt, das ist nicht bei anderen Sprachen ist das nicht so und dann nervt das ziemlich stark, ja. Das wollte ich dich gerade

fragen. Ja, also klingt jetzt logisch so im Nachhinein ne. Ich muss gerade denken an irgendwie das iphone, was auch so stark wurde oder so stark Verbreitung gefunden hat wegen des Appstores wo Leute Software quasi bereitstellen können für das Gerät an sich ist nicht genau das gleiche, aber ist ja n ähnliches Prinzip im Grunde genommen was auch um die Zeit passiert ist.

Ja mit neuen. Ja, es ist so, wenn das halt alles aus einer Hand ist, ne, wenn du bei bei iphone kannst du sagen, dass Hardware und Software aus einer Hand und dann der App Store und die Apps passt halt gut zusammen und weil hier ist es bei der bei der Java Script Sprache so, dass halt package Manager und Sprache halt sehr stark aus einer Hand kommen, das merkst du bei anderen Programmiersprachen, das ist halt nicht so und da gibt es vielleicht auch mehrere Pakete

Manager und so weiter und dann dann gibt es die eine Community entwickelt dagegen die andere dagegen und so und da fängt es schon an, ja dann ist es halt immer schon ja geht alles ne aber hier ist es halt besonders schön ne. Ja, vielleicht hat man sich da inspirieren lassen. Hab ich gerade so gedacht. Ja, vielleicht so und dann. Und dann der letzte, der letzte, die letzte, was ich noch erzähle ist, warum dann no JS so richtig ins Leben gekommen ist.

Ich hab ja gesagt, dass der eine Mann ist und der hat dann tatsächlich sein letztes Geld zusammengenommen und alles auf eine Karte gesetzt, dann hätte das No JS Projekt nicht weiter treiben können, wenn er nicht dann irgendwann mal finanziert worden wäre, dann ist er tatsächlich der Isa, dann ist er auf die JS conf.eu, also die JS conf Messe gegangen, Messe

Entwicklerkonferenz gegangen. Und da haben ihn Kollegen von Joint gesehen, und die haben dann das finanziert, das Projekt. Dann wurde da auch eingestellt und dann ging es los und der Isaak Schlüter auch bei Joint und dann konnten die quasi dieses Nord GS Projekt vorantreiben. Ne ja so ist es manchmal. Ja das war so ne One Man Show gut gefunden Übergenommen und los ja. Der Dahl ist auf die Konferenz gegangen, ne. Der Dahl sagt der Dahl ja nicht.

Ich sag Schlüter ja, der war vielleicht auch da, aber der Dahl hat das da vorgetragen, genau. Genau. Und heute ist er auch wieder auf der Konferenz unterwegs und macht Deno.

Ja, das ist auch ganz krass der der gleiche, der gleiche Autor, der damals No GS gemacht hat, hat gesagt er hat n Vortrag gehalten, was sind die 10 Fauxpas die ich mir geleistet hatte, No GS und jetzt gibt es übrigens deno, was quasi noch mal No GS ist in ja in besserer Version ja leicht unterschiedlich, aber ja deno halt andere Sprache hab ich selber noch nicht programmiert. Ja, hat der Autor von No JS hat hat noch mal hingelangt, ja. Aber auch auf javascript

basierend quasi. Nee, das also, das ist quasi n anderes javascript ne, also Dino gleich javascript basiert. Es basiert auf gleichen Grundlagen, auf ähnlichen Grundlagen, zum Beispiel auf der V 8 Engine. Dazu sag ich auch gleich noch was, aber es ist doch noch mal anders gemacht. Ja ich denke es ist schon sehr ähnlich, aber vielleicht sind 10 Aspekten oder sowas mindestens immer mal stark verbessert, jedenfalls was der Autor so sagt. Ja ich glaube no JS ist sehr

nutzbar. Das ist wahrscheinlich n High Level Veränderung. Ja mal mal gucken was in Zukunft bringst. Du entstehen ja immer wieder neue Programmiersprachen. Ja, so viel zur Geschichte, ich glaub das reicht, da bin ich ja auch nicht so sattelfest.

Genau so, dann steigen wir mal kurz n bisschen hatte ich jetzt mal gedacht von der Struktur her wenn wir jetzt die Geschichte hatten jetzt steigen wir mal so n bisschen ein, das ist jetzt natürlich sehr tief so quasi mal so gucken in die Wurzeln, wie funktioniert überhaupt so ne Programmiersprache und was ist besonders an No GS? Da gibt es nämlich tatsächlich

Eventloop und v8 JavaScript Engine

so n paar Sachen. Und, und wenn wir das verstanden haben, dann gehen wir n bisschen höher und gucken uns an, wie sieht No GS überhaupt aus und wie schreibe ich das hin. Und das sind da coole Funktionen und so weiter und dann gehen wir noch n Stück höher und so weiter ne aber einmal würde ich was dazu sagen, weil das nämlich ich glaube das ist das musste ich auch erstmal verstehen, da ist No GS sehr speziell in in der

Art wie es intern aufgebaut ist. Und zwar ist es ja so, dass wenn wir jetzt mal bei javascript noch mal gucken, javascript läuft ja im Browser, wenn man jetzt über den Browser nachdenkt, dann habe ich n komplett anderes Konzept. Wie Softwarearchitektur typischerweise arbeitet.

Also wenn ich jetzt irgendwie gucke, wie ein Skript läuft, was ich irgendwie im Backend habe, was irgendwie eine Tabelle ausliest oder wie umformatiert oder irgend sowas, der Unterschied im Browser sind die Events im Prinzip. Wenn ich eine Webseite habe und die Rendere, dann ist die da und da passiert erstmal nichts, also irgendwas wartet darauf, dass was als nächstes was passiert. Also ich bin schon mal nicht mehr prozedural in meiner in meinem Ablauf.

Ich fang irgendwo an, ich hab irgendwo n Einstieg und dann warte ich eigentlich darauf, dass ich von außen irgendwie geschüttelt werde, ja. Aber es könnte auch sein, dass irgendwas n Timer versehen ist oder so und anfängt nach 6 Sekunden oder so oder? Genau das stimmt aber sogar n Timer Gerrit ist ja auch was dann?

Dann? Dann stellst du ne Uhr und dann passiert n Event ja ich weck dich jetzt oder sowas ne also es ist immer wieder n Event irgendwie es ist nicht so vorgeplant ja und das regelt halt also das javascript macht das im Prinzip als Sprache nicht selbst sondern.

Diese Events, die werden quasi vom Browser zur Verfügung gestellt und weitergeleitet, aber javascript verarbeitet diese Events ja und das ist der erste Knackpunkt und und das finde ich so toll an Note JS dieser dieses dieser Event loop, also die die Maschine die die Events verarbeitet ist ganz eng in diese Sprache integriert. Ja also ich kann Note JS anfangen hinzuschreiben und dann dann dann dann wird der Code über Events getriggert und ausgeführt.

Ja und das ist auch wenn man. Und das erste Mal javascript schreibt und so weiter und das noch nicht so gemacht hat, ist das völlig verwirrend, weil weil der Code gar nicht von oben nach unten irgendwie ausführt im Notfall, sondern irgendwo ist n imit und irgendwo hatte ich vorher in einem ganz anderen Pfeil an ganz anderen Stelle hat irgendjemand gesagt, wenn hier so n Event kommt, dann reagiere ich darauf ja vielleicht gleichzeitig in 23 anderen stellen im Code sind noch 2, die

darauf reagieren und so weiter also es ist von vornherein, wenn man no GS programmiert, das kann man natürlich auch prozedural prozedural programmieren, aber von vornherein ist das dafür. Gemacht und aufgebaut, mit Events klarzukommen, ne. Und jetzt ist es so, wenn es jetzt quasi wenn javascript javascript ist ja keine kompilierte Sprache, das noch

mal zu sagen. Also wir haben jetzt zum Beispiel C plus plus das Standardbeispiel für mich als kompilierte Programmiersprache, da schreibe ich ja hin und dann kommt es, gibt es einen eigenen Prozess noch zur Bauzeit, wie man so sagt, ja das das der Anwendung, dann gibt es einen Tool, nämlich den Compiler den GCC oder Irgendsowas und der setzt quasi das geschriebene C plus Plus in Maschinencode um

und der wird dann ausgeführt. Und in bei No JS ist das die V 8 Engine. Die kann man sich gut merken. V 8 das klingt ist auch ein toller Name, finde ich, also wenn man so ein v 8 Motor gesehen hat, ist ja auch nett, die V 8 Engine ist quasi der just in Time Javascript Interpreter hier auch im Chromium Projekt verbaut ist und halt im Chrome Browser zum Beispiel auch zum Einsatz kommt, also die gleiche Engine die quasi im im Chrome Browser auch

das javascript umsetzt. Läuft tatsächlich auch im Backend, also am Server mit und und setzt quasi das No TS um, was syntaktisch auch ganz ähnlich wie ja was gibt es? Immer zu dem Zeitpunkt dann jeweils, wenn es ausgeführt wird oder aufgerufen wird, durch n Event zum Beispiel oder so ja.

Nee, tatsächlich geht das auch. Ja, das ist glaub ich relativ komplex, wie das genau funktioniert, also das, das geht schon auch von oben nach unten, frühstückt das ab, aber es ist nen man nennt es just in Time Compilation, da passiert auch Optimierung und Caching und so weiter. Und das ist hab ich ja vorher gesagt, haben sich ja vorher schon die, die im Browserkrieg die Hersteller irgendwie

gebettelt. Wer das am besten kann, ich glaube, das ist ja, das ist schwere, große Kunst, die diese diese javascript interpreter zu machen, aber Open Source Code von Google zur Verfügung gestellt kann man lesen, ja da steckt sehr viel Know How drin, ne also da steigt auch gerade mein Horizont aber es ist ne Mischung aus Kompilieren just in Time und so weiter ja es wird aber jedenfalls nicht vorher komplett in Maschinencode umgesetzt, sondern zu Laufzeit ja OK. Genau.

Und das das arbeitet zusammen und braucht nen sogenannten Event Loop und das muss man auch noch mal dazu sagen. Also die v 8 Engine macht im im Prinzip die Übersetzung vom javascript in in das was wir CPU und so weiter dass sie das können und dann brauchen wir noch den Event Loop, der tatsächlich quasi die Events weiterleitet.

Das sind jetzt nicht nur Events so so Hallo hier bin ich und dann ja hab ich dich gehört, sondern wenn ich jetzt event loop sage mach ich jetzt auch noch mal was ganz Wichtiges in No GS und das ist n. Ja, hier haben Sie was gelöst von vornherein, was ganz viele andere Programmiersprachen von vornherein im Design nicht haben, wo man dann ganz anders programmieren und denken muss, das ist was mit den Schwads zu

tun. Ja, also immer wenn wir im Web sind, dann haben wir im Notfall ja Gleichzeitigkeit am Start sind diese Events, von denen ich spreche, wenn wir jetzt mal darüber nachdenken, dass die Events zum Beispiel ausgelöst werden von 1000 Usern, die gleichzeitig n Knopf drücken,

Single Thread, Callbacks, Async/Await

dann kommen ja sehr viele Events im Notfall ziemlich gleichzeitig an, ja. So und Gleichzeitigkeit zu verhandeln im im, im, in der Programmiersprache, das braucht halt das, das ist nicht so einfach.

Ja und früher hat man das immer über Chats gemacht und man kann tatsächlich gleichzeitig Sachen laufen lassen in einem Code und dann muss ich aber Hölle aufpassen, dass ich nicht gleichzeitig zum Beispiel file IO mache, also wenn ich zum Beispiel jetzt Beispiel ganz larifari irgendwie kriegt, 1000 1000 knöpfklicks, aber die, die sollen quasi ein ein und dasselbe File updaten oder in der gleichen Datenbank irgendwas updaten. Und ich mach das tatsächlich

gleichzeitig. Dann hab ich n Riesenproblem, dann hab ich korrupte Daten und so weiter und ich muss dann als Entwickler, wenn ich dann das so mache mit Threads und so weiter muss ich unglaublich aufpassen mit Locking und so und hab da riesige Probleme, das ist in Note erst von vornherein aussortiert, in der Sprache schon auf dem niedrigsten Level weil und und das ist das, das ist da gibt es viele Artikel, viele Leute haben das immer noch nicht verstanden wie es genau

funktioniert, ist eigentlich gar nicht so schwer alles. Alles, was möglicherweise Zeit dauert, weswegen man quasi parallel arbeiten wollte, nämlich zum Beispiel File schreiben, file lesen, Netzwerkaktivität. Ja, es gibt so blocking IO operations, sag ich mal.

Ja, die werden quasi alle Nebenläufig gemacht, aber das macht schon den No TS selber in dem Event loop ja ich trigger das nur an, ich sag quasi nur in no TS ich möchte jetzt ein File schreiben, leg los, ja und jetzt wartet aber nicht die Programmiersprache bis das file fertig ist und dann kann ich überhaupt das nächste Verarbeiten. Sondern ich sag leg los und dann sag ich, ruf mich quasi zurück, gib mir callback. Das Wort Callback ist ganz wichtig, ist Callback implementiert.

Wenn du damit fertig bist, ja und dann geh ich an dieser Stelle weiter und übernehme den Programmfluss ja, während aber das file geschrieben wird, kann ich wirklich alles mögliche andere machen. Ja dann kann ich nämlich zum Beispiel den nächsten, übernächsten und den dritten Request schon entgegennehmen. Ja dann bleibt bleibt meine Anwendung nicht stehen, die bleibt responsiv ja also das Node GS arbeitet. Und aber gleichzeitig führt das alles im Single Thread auf. Aus ja, aber du?

Kannst es nicht machen. Wenn jetzt dein deine erste. Also wenn jetzt deine zweite Operation abhängig wäre von einer ersten, dann musst du es halt einfach so programmieren, dass es erst nach dem Callback Weiterginge. Zum Beispiel ganz genau. Ja, da würdest du genau so macht man das und dann würde man quasi ne Event chain, eine callback

Chain aufbauen. Es war auch am Anfang n Problem, dann würdest du sagen wenn jetzt n zweites Event ist das warten muss bis das erste fertig ist, dann würdest du quasi sagen wenn du das zurückkommt. Ne, das baut man tatsächlich so auf mit so einem Zen ja oder einem Callback on und so weiter dann schreibst du quasi den nächsten Block in einen Händler rein, ne ganz am Anfang sah es auch mal furchtbar aus, weil dann kriegst du so ganz viele verschachtelte Klammern.

Ja du sagst halt, mach mal das und wenn das fertig ist mach mal das und wenn das fertig ist mach mal das. Also wenn du dann so 4567 aufeinander aufbauende aber asynchrone Events hast, dann hast du so nen so ne man nennt das auch callback hell ja das ist ja die die callback Hölle ja. Weil das ist auch sehr schwer zu lesen. Das macht es auch, das Macht es auch nicht gerade einfach beim Programmieren und dann kannst du auch schnell dir mal n paar Fehler ein einheimsen, ne?

OK, ja, die gibt es so nicht mehr. Die Callback hell, weil das jetzt so n bisschen anders dargestellt wird gustas. Richtig, wir nehmen, wir nehmen das Mal vorweg an der Stelle, weil jetzt sind wir da gerade

tief drin. Das Schwierige ist das, das muss man jetzt auch noch mal sagen, ganz grundsätzlich, das Schwierige ist ja wenn ich jetzt nen wenn ich jetzt sage pass mal auf schreib mal das file, lass mich jetzt in Ruhe, ich mach jetzt was anderes, springe irgendwo andersrum im Code, mache andere Sachen. Und dann irgendwann kommt dieses, kommt diese Nachricht zurück, so hab das file fertig geschrieben. Was willst denn jetzt?

Ja dann, dann hatten wir das früher halt in so einem Callback gemacht und das Problem mit dem Callback ist du musst dann, du musst ja quasi deine Variablen und so weiter wenn du programmierst, dann hast du ja auch was um dich rum.

Ja du bist ja in einem Kontext, ja du musst den Kontext switchen quasi ja eben Grad warst du noch und hast irgendwie nen hast du Server irgendwie nen Aufruf vom Client entgegengenommen und jetzt sagt dir auf einmal dein Programm Ah übrigens das File ist fertig geschrieben so jetzt springst du in ne ganz andere Welt. Jetzt musst du da aber die ganzen Variablen und so weiter wieder haben, die du damals brauchtest als du weggesprungen bist.

Ne bist du. Du kannst dir fast vorstellen wie Räume irgendwie ne du bist in dem einen Raum sagst so Pass auf, ich Feuer an so jetzt laufe ich irgendwie rüber, mach ganz was anderes und dann drüben pfeift der Kessel ja Tee ist fertig, jetzt musst du in den Raum zurück musst du überlegen, was wolltest du eigentlich machen ja ah den Tee irgendwie in in ins Glas schütten und so weiter dann brauchst du jetzt wieder dein Glas und alles um dich rum das sind die das sind

die Variablen die du brauchst, ja. Das war halt früher sehr aufwendig mit diesen Callbacks

zu machen. Und jetzt gibt es das Async Away, was heißt jetzt, das gibt es auch schon ne ganze Weile, ich hab es mir glaub ich auf meinen Spicker geschrieben, ich muss gucken mit ES 6 ist es gekommen jetzt müsst ich fragen wann ist ES 6 rausgekommen weiß ich nicht hab ich grad nicht auf den Zettel, können wir vielleicht noch mal googeln aber jetzt kannst du zum Beispiel sagen also du sagst zum Beispiel Async an die Funktion dran, das heißt so viel wie.

Kann sein, dass ich hier mal wegspringe ja und komme wieder das das das das passiert jetzt mal hier da da da weiß auch schon jeder der das liest. OK hier sind hier sind Sachen, hier sind irgendwelche asynchronen Sachen am Start.

Ja und jetzt sagst du nur noch away Right file und musst aber nicht mehr irgendwie irgendwelche Klammern aufmachen wenn dann und so weiter du schreibst einfach dann untereinander und das Away das sieht so einfach du sagst einfach nur away alles was halt irgendwie wartet da schreibst du halt away vor. Und wenn das fertig ist, also wenn da, wenn eigentlich das System sagt, ja hab ich geschrieben das file dann springt.

Das ist echt krass, dann springt quasi der Code von alleine an diese Stelle an dieses Away und macht in der nächsten Zeile weiter, musst aber nicht irgendwelche komischen Punkt on und irgendwelche Klammern machen und dir da selber dort es es ist. Du bist einfach dann da, das heißt wenn du während du programmierst bleibst du beim Teekochen in dem Raum, du schreibst alles hin away macht das, Away macht das. Und du hast alles um dich rum und musst dich um nichts kümmern.

Note CS löst es für dich, dass alle Variablen und alles wieder richtig da ist, obwohl in echt was passiert ist? Du warst zwischendurch gar nicht in dem Code, es sieht so aus, als würdest du das der Reihenfolge nachmachen, so

schreibst du es hin. Sieht so aus als würdest du die ich Koch den Tee schüttchen ein und so weiter Aktion alles in einem durchziehen tust du aber gar nicht, zwischendurch warst du irgendwo weg ja aber es braucht dich nicht mehr interessieren als Entwickler, das ist absolute Magic. Du meinst denn zur Laufzeit warst du irgendwo weg? Quasi ne ja genau ne OK, ja. Und und gleichzeitig ist es aber auch so, dass die Sachen schon alle nacheinander passieren.

Das ist auch noch so querky ja, also wir haben eine Single Thread, wenn wir ausführen, das ist wichtig, also es gibt nur eine, es passiert tatsächlich nicht echt was gleichzeitig, sondern es wird nur so hart ineinander geschachtelt, dass es sich wie gleichzeitig anfühlt, das ist halt. Das muss man einmal verstehen bei dieser Programmiersprache, das ist, das habe ich vorher so auch noch nie gesehen.

Also Python hat das auch, war mit einer extra Bibliothek, da muss ich das mal kurz vorstellen, dann kann ich nämlich alles, was ein bisschen länger dauert, entkoppel ich schmeiß ich weg mit einem Wait und alles was schnell ist, das da springe ich einfach andauernd durch den Code hin und her, wie ich es gerade brauche, das heißt ich kann den einen CPU den ich hab der da auch drauf brennt voll auslasten wird ultraschnell ja obwohl ich nur einen Thread hab in meinem Prozess ja.

Das ist richtig cool. Ja, das das habe ich so noch in keiner anderen Sprache gesehen und deswegen sagt man auch, ist noji er ist so super geeignet für so High Availability und und für so massive Webapplikationen, weil ich halt, weil ich halt den Code, den ich schreibe, einfach weil ich es so Hinschreibe ist, der optimiert sich von alleine und macht dann alles mögliche fast gleichzeitig schon hintereinander, aber so gut verschachtelt, dass ich alles voll auslasten kann wollen.

Anwendungsfälle von Node.js

Wir jetzt mehrere CPUS hätte. Braucht es denn einfach gar nicht oder macht es nicht besser? Macht es nicht besser, wenn du jetzt n eigenen wenn du nen Note JS Prozess hast. Ja der läuft auf dem Singles Fett, aber jetzt sag ich noch was neues und was Spannendes.

Das ist ja halt nen Liebespärchen, sind ja Microservices Note GS ja hier kommt hier trifft sich hier treffen sich 2 Konzepte die wie gemacht sind füreinander dann ich also ganz viele meiner Docker Container sehen so aus, ich starte da halt nen Note Index Punkt JS meistens das Index JS ist quasi das Haupteintrittspfeil. Und dann läuft und man und die Best Practice vom vom Docker heißt Mach einen Prozess in einem Container.

Nicht viele, also ein Prozess, ein Noteprozess läuft im Dockercontainer so, und wenn ich jetzt viele brauche, nehm ich halt ganz viele Microservices hin, ne und das skaliert das alles ganz wunderbar und ich hab endlich als Programmierer hab ganz viel Scheiß von mir abgestriffen weil ich nicht mehr mich mit diesem ganzen Threading und so weiter bemühen muss, dadurch krieg ich ja nen nen nen unglaublich responsive

unglaublich schnelle App hin. Ohne ohne dass ich extrem krass mit mit mit Logs und so, weil ich kenne beide Welten.

Ja, ich hab mal t plus plus programmiert, da gab es No GS noch nicht und da haben wir auch Web und nicht, also nicht Web, aber netzwerktechnologie mit mit vielen gleichzeitigen Sachen, da muss man Threads nehmen und dann schreibst du quasi alles in einem Ding das das hat dann was davon wenn du 8 CPUS hast weil die laufen dann tatsächlich gleichzeitig, aber dann musst du in deinem Code. Dann passiert das auch, dass das springt, aber das kann tatsächlich gleichzeitig

gleichzeitig laufen, wirklich gleichzeitig ne das das springt nicht hin und kommt wieder zurück, sondern die da donnern 2 Züge übers Gleis gleichzeitig ja und wenn du da nicht aufpassen machst die Weichen nicht an die richtige Stelle dann und das kriegst du vor allen Dingen nie raus, weil weil gleichzeitigkeiten und so weiter auch gerade wenn wir über Fans sprechen, Gerrit, du weißt ja nicht wann die klicken, ne. Und du, und es passiert ja immer nur dann dann wirklich, was

gleichzeitig passiert. Das kannst du also ganz schlecht nachstellen. Reproduzierbarkeit ist das Problem, ja, das sind so Bugs das das Schlimmste ist ja wenn du im Entwickler sagst ja da ist kaputt, es geht nicht, stürzt manchmal ab, manchmal geht es n bisschen länger und manchmal stürzt es ab, ja dann sitzt du da und du kannst ja überhaupt erst mal was nur versuchen zu heilen wenn du es einmal selber gesehen hast. Ja versuch mal sowas dann zu

sehen, ne? Das ist ganz furchtbar und da sind große Systeme dran gescheitert, weil weil am Ende dieses Matti Threading nicht mehr in den Griff bekommen wurde. Das hat No JS mit der Entstehung, mit der mit der Philosophie gleich mal weggebügelt, aber das Problem gibt es nicht. Das war wahrscheinlich auch n Hintergedanke davon nämlich.

Ganz genau. Das war nämlich die Phase, wo wo genau, wo ich gesagt Hab, am Anfang ist der Ryan Dahl rumgelaufen, dann alles Mögliche explodiert n huskill und so weiter genau diese Sachen hat er sich angeguckt und ich glaube das war sein. Ja, die Spitze von dem, was er sich so als Mathematiker ausgedacht hat, was es früher braucht, hat er nicht ganz schlecht gemacht, würde ich sagen. Ich hab noch gesehen, weil du, weil du es gerade gesagt hast, Anwendungsfälle, Microservices.

Also es wäre besonders gut für Themen wie ja echtzeitanwendungen auch gedacht oder sowas wie websockets oder so Apis damit zu programmieren und weniger gut für rechenintensive Prozesse. Sowas wie Machine Learning oder sowas, gerade wegen Ding Single Thread. Ja, genau so. Ja, das kann man so sagen, das ist so, ja, also es genau je nach.

Also wenn du jetzt zum Beispiel, ich sag mal was KI ja, und das sind ja so matrixoperationen, die kann, da kann ich quasi so ne durchrechnung, kann ich halt stark parallelisieren, da hab ich ne riesige Matrizen, die teile ich auf in in in in Teile und dann können die gleichzeitig rechnen und kommen zum Ergebnis und dann hab ich ganz viel davon wenn ich das halt 25 mit 25 Kern gleich deswegen mach ich das auf Grafikkarten, das wird meistens.

Mit 16017 1000 Threads gleichzeitig durchgezogen und dann sind die fertig. Dann kommen die zum Ergebnis.

Ja das ist wäre genau der, das wäre genau die kontra Eigenschaft von No GS macht das Macht no GS nicht, also es gibt mittlerweile wenn du weißt was du tust, da kannst du auch Threads aufmachen in No GS und dann Multi Thread arbeiten, das heißt mittlerweile ist es sogar so, dass No GS genauso wie Python auch für für Number Counching genommen werden kann würde ich sagen, das ist aber aus der ich sag mal so aus der aus der Denkweise der Sprache ist es eher optimiert für.

Für das, was du gesagt hast, Gerrit, also für für Echtzeitanwendung, für reaktive Sachen und so weiter für fast IO und so und nicht so stark wie Python. Aber auch das würde ich sagen, die Sprache ist mächtig genug,

sogar um das alles abzufräsen. Gut und jetzt noch mal noch was kurz unter den Deckel geguckt, das will ich auch noch mal sagen, die den Note JS ist zwar eine Programmiersprache, aber eigentlich basiert die auf C plus plus C Plus ist auch eine Programmiersprache die eine der Ältesten.

Die Rolle von C++

Und im Prinzip ist, wenn man jetzt ganz krass ist, könnte man sagen, Noja ist ein cooles Framework auf C plus plus, weil sowohl die V 8 Engine ist in C plus plus geschrieben, und zwar so richtig pures, krasses C plus Plus und deswegen läuft auch die V 8 Engine auf Browsern auf allen Betriebssystemen im Android und im und im Linux und dem Windows und so weiter und auch der Event Loop der Lib UV ist auch in C plus plus geschrieben und Noja selber die, die die ganzen Sachen sind auch

in C plus plus geschrieben, das heißt?

Also man hat, man kann, man kann viel einfacher was bedienen, aber drunter ist es sehr schnelles C plus Plus und damit wird es auch und weil C plus plus an sich die Eigenschaft hat, dass es plattformunabhängig ist, weil Hardware nah läuft halt Node js auf Windows auf Mac OS auf Linux und so weiter was ist halt auch was glaube ich auch zu der Popularität beiträgt, denn das ist auch nicht Standard, dass eine Programmiersprache auf allen Betriebssystemen da ist.

Ja also wir haben jaunsere.net Kollegen von Windows. C. Sharp und so weiter das geht zwar langsam auch, aber das da brauchst du nicht so groß anfangen mit Linux, ja. Aber ist das nicht sowieso hinfällig, wenn du es im Microservice benutzt oder ist das da auch noch relevant? Also im Docker jetzt oder so?

Na ja, im Ja. Der Docker, der, der ist ja keine virtuelle Maschine, der kann dir kein Windows simulieren, ne, das ist also hilft es dir, hilft dir nicht, du kannst jetzt nicht einfach CC Sharp in den Docker packen und dann den Linux ausführen, das geht schon nicht, ja. Ah OK, ist es OK. Du brauchst also schon. Bei C Sharp bräuchtest du n Windows unterm Docker, um es im Docker auszuführen, während es beim No JS eigentlich egal ist, was dann quasi wo der Docker was drauf läuft, dann ja.

Also C Sharp will halt, er will halt Windows um sich rum sehen, sag ich mal und und kennt die Windows registrieren solche Eigenschaften die es gar nicht gibt, den anderen. Aber da muss man auch aufpassen das.net Core und so weiter die entwickeln sich auch weg davon das das das dürfen wir gar nicht ist nicht richtig wenn wir jetzt sagen das funktioniert nicht unter Linux mittlerweile. Sind die haben, die sind ja auch angekommen und du kannst es in großen Teilen unter Linux

verwenden. Ja, aber das war erstmal nicht die erste Priorität sag ich mal. Windows hat halt das.net Framework gemacht für Windows und Microsoft Hemisphäre.

Ja und das jetzt wird der Druck so groß, dass man das halt sich sich hinbewegt sag ich mal während Note GS von vornherein drauf angelegt war halt überall cool zu laufen ne ja das ist alles nicht so riesig, ja das ist diese lib UV ich hab also ich hab sowohl die v 8 Engine in teilen gelesen in den Source Code und auch auch die Lib UV das ist gar nicht.

Das ist gar nicht so viel. Krass ist also, das ist gar nicht so viel Code, ja, ist einfach nur sehr gut geschrieben, ne. Das heißt, alle, die jetzt noch no JS vorantreiben und entwickeln und und Main Tain und so weiter sind einfach auch sehr gute C plus plus Entwickler. Ja, die, die die Sprache weiterbringen, die müssen C plus

plus können. Ja genau ja jeden Fall, das würd ich schon sagen, jedenfalls wenn du, wenn du wenn du tief unten noch was machen willst, ja und in so browserentwickler und so Google, da gibt es Leute, die wissen ganz genau was man C plus machen muss. Ja, das ist. Sonst kriegt man den Speed nicht hin. Also es ist immer noch so heutzutage, das ist auch wahr

für alles andere und auch ist. In Python ist das so, ja in Python die Komponenten die schnell sein müssen, das ist in C oder C plus plus geschrieben, es ist einfach so, dass heutzutage die schnellsten, also wenn ich wenn ich richtig hochperformante Algorithmen machen will, dann schreib ich es halt in C oder C plus plus hin, was anderes gibt es eigentlich nicht, ja und dann da drüber werden halt Sprachen entwickelt, die es halt den Entwicklern zugänglicher machen, weil in C

und C plus Plus zu schreiben ist halt NN harter Tobak, ja. Aber das coole ist auch, und das hab ich mal länglich gemacht, ich mich mal bestimmt n Jahr damit beschäftigt und da Note JS im Prinzip in C plus plus geschrieben ist, kannst du auch wunderbar Note JS und C plus Plus zusammenbringen.

Ja, also existierenden C plus plus Code über Note JS aufzurufen da einzubinden und so weiter wenn man da mal tief reingeguckt hat ist gar nicht so kompliziert, ja dann muss man kurz mit diesen Threads und dem Event Loop einmal kurz klarkommen im Kopf wie man das Zusammenkabelt und dann geht das ja das mal für alle gesagt die. Die und wir hatten neulich mal n Podcast, da hatten wir Legacy C plus plus Anwendung und so.

Wenn ich meinen ganz alten Kram der Millionenzahlen C plus Plus hat, irgendwie porten will, da kann man mal drüber nachdenken, da no GS dran zu flanschen und dann einfach den Kram zugänglich machen über ne neue Sprache. Ja und den ganzen alten Kram dazulassen, das ist gar nicht so kompliziert, ja das geht schon. Ja, das kommt mir auch bekannt vor, als hätten wir da schon mal drüber. Gesprochen haben wir glaub ich schon mal. OK, das sind also.

Die Besonderheiten Single Thread und geschrieben in C plus plus ja, unter der Haube hast du gesagt.

Ja, Single Thread ist die Besonderheit und das Eventing mit von vornherein eingedacht ja die V 8 Engine, die ist interpretiert just in Time, die die gleiche Engine ist wie im Browser, was es auch cool macht, wenn ich nicht hier Webanwendung aus einer Hand machen will, dann weiß ich schon genau das funktioniert alles gut zusammen, als Entwickler ist das super cool wenn ich full Stack bin, also wenn ich frontend also im Browsercode schreibe und im Backend.

Fühlt sich ja alles gleich an. Ja, super cool. Jetzt sag noch mal ganz kurz, vielleicht hab ich es verpasst. Aber was ist denn jetzt eigentlich der große Unterschied zwischen Java Script und No JS? Also außer das eine ist für n Browser, das andere für n Server oder für für das Back End versteh ich schon, aber inwiefern sich das denn jetzt

Unterschied zwischen JavaScript und Node.js

anders aus also gibt es ne andere Funktion, neue Funktion, weitere weniger oder es ist ne ganz andere Sprache. Nee, überhaupt nicht. Es ist die gleiche Sprache, also es ist im Prinzip, also wenn du Java Script kannst, dann kannst du no JS programmieren. Das heißt eigentlich nur no JS, weil du, weil du javascript pur funktioniert einfach nicht.

Du brauchst irgendwas was das ausführt, die Ausführungsumgebung ja, also der Unterschied zwischen javascript ist, dass die Ausführungsumgebung der Browser ist und im Prinzip ist No JS auch javascript mit ausführungsumgebung, lokale V 8 Engine und Lip UV Loop, der sowas so ne Art Browser simuliert, wenn du so möchtest. Ja wir brauchen den ganzen Browser nicht weil wir nichts rendern wollen, wir wollen ja nur rechnen auf dem Backend so

ja und im Prinzip ist aber die. Wie soll ich sagen, die also wenn du jetzt sagst Englisch, französisch oder oder Deutsch oder irgend so was, dann ist halt und wir sagen jetzt von javascript ist Englisch, dann sprichst du Englisch im Browser und du sprichst auch Englisch im Backend.

Du hast halt nur du hast halt nur jemand anders um dich rum sag ich mal der dich aufnimmt ja da gibt es nur da gibt es nur feine Unterschiede, das gibt ein paar kleine Unterschiede auch in der Sprache, aber die sind minimal, dass du sofort klar.

Module, npm-Pakete und Abhängigkeiten

Größter Unterschied ist, da können wir auch weitermachen. Ist ist wie die Module, also wie die Abhängigkeiten geladen werden, und das ist auch gerade n großes Ärgernis, muss ich sagen. Also für mich jedenfalls, denn wenn du im im im, wenn du also entweder eigene Module die du schreibst, ne du kannst, du schreibst ja nicht den Code in einem riesigen File runter, das machen wir ja nicht mehr, wir schreiben wir, wir separieren ja unsere Codes Stücke in Files.

Und auch andere, wenn die irgendwie was geschrieben haben, was du dann reinlädst, das holst du dann über so ein Pakete Manager rein, aber das sind auch ein Files und dann sagst du halt quasi ganz am Anfang von deinem File, wenn du Code schreibst, dann sagst du und das sagst du im Browser Import irgendwas ja import this from that zum Beispiel ja also importier mir mal die klasse irgendwas von und dann sagst du welches file das ist ja so und das ist das Moduloading wenn man so schön

sagt ja also das einladen von existierenden anderen Modulen die irgendwo rumkleben ja. Es funktioniert über dieses Import from und kann asynchron auch sein.

Hatte ich ganz am Anfang hatte ich gesagt, schon wir können ja asynchron File lesen und schreiben und im Java Script das standardisiert ist über dieses Ecma, über diesen ecma Standard im Browser ist es so, dass halt auch das Laden sogar innerhalb der Sprache, also das weiter Reinladen von weiteren Source Code für den Java Script Code selbst ist halt auch asynchron, ja kannst du auch awaten so. Das hat halt jetzt im Detail viele Vorteile und aber leider jetzt muss man gucken, war no JS

das damals nicht so angelegt und das nennt man CJS Common Java Script CJS und da hat man hingeschrieben von der Syntax her constant this ist gleich require that ganz oben und das ist n kleiner feiner Unterschied. Ja, aber das am Ende tut es am am Ende das gleiche, ich will halt einfach dieses blöde Pfeil da haben und dann arbeiten mit dem Krams der da drinne ist. Ja in meinem Modul.

Aber entweder schreibe ich halt this la gleich require that oder ich schreibe halt import la from irgendwas.

Ja, das Require ist leider synchron und das Import ist leider asynchron, das Import ist irgendwie egma Standard und das Require kam irgendwie von LTS Altlast und das ist aber ein Riesenproblem, weil die mögen sich beide nicht, du kannst es nicht mischen in einem Projekt und jetzt gibt es so eine Umbruchphase, dass immer mehr Abhängigkeiten dependencies, die du mit dem npm Pakete Manager runterladen kannst.

Das funktionierte, bis soll ich mal sagen, vor 2 Jahren musst du das alles mit Require laden im Node js safe und cool und alles das gleiche und jetzt gibt es die ersten Pakete die modernen jetzt hier auch gerade hier KI und so da geht es einfach nicht mehr, da musst du mit dem Import umhühnern aber wenn du jetzt meinst du könntest eine Node Anwendung schreiben wo du das einfach Bild durch die Gegend mischst, da kannst du dir in die

Haare schmieren funktioniert nicht ja also das ist natürlich ein großes Problem ne? Und es wird vom jeweiligen Paket vorgegeben, wie es zu importieren ist.

Oder? Ja, und die ganzen, also cool die coolen Pakete, da kannst du, da kannst du, da geht dann beides, ist beides unterstützt, aber dann gibt es halt so Leute die sagen, OK, hab ich keine Lust drauf, ich unterstütze halt nur noch das modernere und das ist das Eckma Script Style, also das ESM mit dem Import, das ist aber für No JR schon mal ziemlich modern. Ja und es gibt natürlich, Oh, es gibt halt einfach so viel Abhängigkeiten, Gerrit, Du hast

ja gerne mal irgendwie. Nicht immer so 600 800 Dinger da drinne, ist ja keine Wenigkeit, gerade wenn du im Web bist.

Ja und die sind halt nicht alle schon alle ob das ist halt, das ist halt so am langsam am Rüberschwimmen ja ist auch noch gar nicht in der Community so klar, ob das wirklich sich dahin durchsetzt oder nicht, also das ist so ne ganz furchtbare Zwischenphase, die wir da gerade erleiden, ne und das macht es ja wenn wenn du n sehr großes Softwareprojekt hast, so wie wir das jetzt haben, ist das unglaublich schwierig, ja da damit klarzukommen, ja da muss man muss man sagen, ja die

können wir dann nicht oder wir nehmen nur die oder irgendsowas ja. Ich wollt Grad sagen, ist ja n Ausschlusskriterium für manche erstmal.

Ja, oder es gibt dann wieder doch coole Sachen, das sag ich jetzt mal hier auf der Tonspur, damit arbeiten wir auch, das muss man, da muss ja jeder mal experimentieren, es gibt die Firma Worstel oder werstel, ich weiß immer nicht, wie es ausgesprochen wird, ich wollt es mir vorher noch mal angucken, aber VERCEL die find ich sowieso cool, was die irgendwie mal.

Also ich, ich kenn ja die Firma also von innen nicht, aber ich ich seh nur mal was da für Produkte rauskommen als Open Source kram und so das ist der Wahnsinn, davon gibt es das Tool NCC und PKG. Und der NCC, das ist ne Art nimm hin den ganzen Javascript frei den ich hab und der baut dir das in ein großes File, also das das Ganze brauchen wenn du irgendwie weiter das weiterverarbeiten willst.

Ja und was du damit machen kannst Krasserweise ist das machen wir auch, da kannst du quasi beliebig große javascript Dinger die tatsächlich aber auch diese CJSISM Sachen mischen, das räumt das quasi alles ab, baut dir ein riesiges. Funktionierendes, standardisiertes Java Script file was du dann mit PKG kompilieren kannst. Krasserweise in der Punkt exe oder in der Linux Executable alle Abhängigkeiten reingebandelt da drin.

Du brauchst also nicht gar keine No GS Sprache mehr auf installieren, es funktioniert einfach in sich selbst.

Das ist eine in sich selbst lauffähige Executable dann und du hast Zugriff auf Java Script und auf die ganzen Pakete im mpm Manager, da kannst du, da kannst du ganz mächtige Sachen machen und der Footprint ist 50 bis 60 Megabyte wird zunächst secutable groß, ja weil weil du weil da alles reingepackt ist, Lip UVVA und so weiter das ist alles Thin Capculated da das sind jetzt so entwicklertools, würde man wahrscheinlich sagen ne das sind

keine Abhängigkeiten so Pakete die reingehen sondern die dir helfen. Tatsächlich kommt das auch als Paket rein, du würdest auch sagen NPM in Stall versell, NNCC und so weiter genau, aber dann dann baut das natürlich mit deinem Code noch mal andere Sachen ne es genau es hat n bisschen andere Qualität, aber es wird auch so geladen ja genau OK. Hast du viele Pakete? Es gibt im Mpm nee. Aber bestimmt ziemlich.

Viele. Ich hab zweieinhalb Millionen gefunden und jeden Monat 50 Milliarden Downloads. Ja, 50 Milliarden Downloads lass mal reinziehen. Ja, es gibt ja auch einzelne Pakete, die haben jede Woche, es gibt ja meistens wird das wöchentlich angezeigt, wie sind deine Download Dinger, das ist unglaublich, ja dazu muss man aber auch sagen das das wird ja nicht behandelt also klar wenn du jetzt anfängst zu programmieren und sagst du halt.

Erstmal machst du dann dein Ding fertig und sagst NPM install was weiß ich irgendein Paket ja react ja so, das machst du

natürlich einmal. Aber jetzt ist jetzt so muss man auch mal, muss man auch mal wissen, dass wenn du jetzt so ne CICD hast, das ist ne Pipeline, du hast ja in deinem Repository wo du den Code aufhebst, da hebst du ja nicht die Dependencies von den anderen mit auf, sonst würden wir ja die Daten kopieren wie für die Wahnsinnigen, also dieses Ganze, die ganzen Pakete werden quasi nur.

Tatsächlich mit dem NPM Install ja werden die quasi dann erstmal reingeladen und dann wird das Ganze ausgeführt, dann klappt das auch. Ja, aber das was du aufheben musst ist eigentlich nur dein ist nur dein Quellcode und das heißt die ganzen CICD Pipelines, die holen sich dann dann die neue Version deines Quellcodes ab und machen dann das NPM install ja und möglicherweise auf ganz vielen Servern gleichzeitig und andauernd ja und bei jedem Commit und so

deswegen. Also da sind das sind nicht nur human Beatings, die da runterladen, sondern auch ganz viele Bots und so weiter. Das ist schon klar, sonst kannst du ja gar nicht auf 50 Milliarden kommen im Monat. So, das ist ja schon krass. Ja, genau deswegen kommen da auch so krasse Zahlen, aber man sieht ziemlich gut an den auch an der Downloadfrequenz bestimmter Pakete wie, na ja, wie stark die Halt eingesetzt werden.

Ja, manchmal gibt es so ganz kleine Dinger, die überall drinne sind, ja als als als Dependency, ja das ist ja auch ganz Spaß. Ist transparent dann an der Stelle, ja. Ja. Dazu auch mal was gesagt, da kann ich ja mal ne Angst vor

wegnehmen. Das sind ganz viele, also wenn man so ich kam ja auch mal aus C plus plus, da ist das nicht typisch, dass man mit so vielen Abhängigkeiten arbeitet, da hast du mal 1234 ausgewählte Dinger, die hast du genau angeguckt, so in wenn du C oder C plus plus bist oder vielleicht auch Java, da machst du noch viel mehr, selbst die Philosophie noja ist ne ganz andere, du machst möglichst fast nichts mehr selbst, sondern du also das erste wenn du n Problem hast,

dann guckst du. Hat das jemand schon gemacht? Ja NBM. So und wenn, dann wenn da ordentliche Downloadzahlen sind und dann kannst du ja in den Code reingucken, wenn du meinst, das ist cool, da sagst halt NBM in Store das Dingel daher und fertig, ja dann dann nutzt du das einfach mit, weil das hab ich ja ganz am Anfang gesagt von

der Folge das passt. Das funktioniert auch, du musst nicht lange überlegen, ja das ist dokumentiert, das funktioniert immer gleich, das ist cool und dann, und das muss ich auch sagen, es funktioniert hervorragend in dem ganzen Ökosystem und haben natürlich die Leute, die für dich ne Abhängigkeit entwickelt haben, die machen natürlich auch weiter an ihrem Code. Jetzt kriegst du ja dieses ganze Problem mit Version Management. Jetzt hast du 2000

Abhängigkeiten wo im Schnitt jeden Tag irgendwo gibt es irgendwo n Update und wenn du jetzt aber selber n stabiles Produkt rausbringen willst und wenn ich dir jetzt sage wenn ich hab ich ja gerade gesagt, wenn das beim Bauen irgendwie holt er quasi dann immer zu dem Zeitpunkt die Pakete ab und die sind dann dauernd in einer anderen Version, da kannst du ja nie verlässlich irgendwie mal sagen, das hat funktioniert ja weil im Notfall, die können ja auch mal n Fehler machen ja in

ihrer Abhängigkeit und dann geht dein Ding auf flöten ja. Und auch da hat No js sich ganz viel überlegt, wie man das alles Manager, das kann ich hier nur anhauchen.

Aber alle alle diese Pakete sind semantisch versioniert, das heißt ich habe sowas wie ein Major Miner und Patch release, ich kann ein pro Paket pro Abhängigkeit, ich hab gar nicht fest pin was ich will und der der Standard ist normalerweise so ein so ein carrot Symbol das ist wieso ein kleines Dach wenn ich so ein Dach voll die Version mache dann heißt es No js der Paketmanager der darf mir und ich neu quasi aufbaue.

Den Quellcode, dann darf er mir auch neue Pakete ziehen, aber nur mit meiner Upgrades und meiner ist unter den semantischen Versionierungen festgelegt. Meiner Upgrades sind quasi keine, die die API verletzen, die machen nur Bugfixes, aber die sind, sie brechen nichts. Ja und alles das kann ich da sehr gut festlegen und dann gibt es auch noch so n Package Lock Pfeil, da kann ich dann sogar auch einloggen wenn ich das tatsächlich exakt gleich haben will. Also ich hab das zum Beispiel

sehr stark getestet. Dann gibt es dieses Package Log file, dann kann ich auch zwingen, dass exakt genau diese Pakete zu dieser Version, die werden ja quasi auch alle gehalten und nbm kann ich auch mit Absicht ältere Version eines Paketes runterladen, dann ziehe ich mir exakt diese Pakete und dann habe ich tatsächlich von Byte von den Bytes her exakt das gleiche Krams wieder da in Production, wie ich es jetzt zum Beispiel unter Development hatte.

Alles das ist vorbereitet, mitgedacht, man muss also nicht so viel Angst haben vor den vor diesen ganzen Abhängigkeiten, das geht schon, das kriegt man gut gemanagt. Wie ist es mit den Lizenzen, die dort im Einsatz sind? Ist es ne Standardlizenz für alle Packages oder verschieden? Nö, Jedes Paket hat seine eigene Lizenz.

Da muss man halt drauf achten, was man, was man so nimmt, aber die mal tatsächlich ist, ich will, ich weiß es nicht, keine Statistik, aber die meisten Pakete haben wir ne Open Source Lizenz die du die sehr frei ist die meisten MIT wenn du die MIT die Lizenz siehst, dann kannst du es nehmen, kannst es verkaufen, kannst mal was du willst da also ist eigentlich es ist ne es es gibt sehr sehr viel. Sehr hochqualitativen Open Source Code in NBM, den du

mitnutzen kannst. Ne ganz so starke tolle Webauftritte machen ne, das ist richtig cool, ja. OK, gut. Jetzt waren wir immer noch gar nicht bei der Syntax. Wir haben schon ordentlich was auf dem auf auf der Uhr ja Zeit, was kommt da noch, was kommt noch nach der Syntax ist das letzte oder noch was?

Nee nach der Syntax kommt eigentlich nicht mehr so viel, weil wir tatsächlich hab ich so n paar Sachen vorgezogen die ich später auf dem Zettel hatte, deswegen lass uns einfach noch mal n bisschen Syntax angucken, ja gerne dann können wir es. Dabei belassen würde ich sagen, so, wenn man sich jetzt ne

Datentypen und Syntax

Programmiersprache von innen anguckt, ja gut die das noch nie gemacht hat, dann dann, dann ist man sowieso jetzt verloren, aber ich versuch es mal so ganz bisschen auf der Tonspur zu machen. Also wir haben was wichtig ist, man muss einmal die Datentypen sehen die so ne Programmiersprache hat und dann muss man einmal kurz gucken was mit Klassen und Funktionen so los.

Ja und ich würd einmal kurz zu den Datentypen was sagen, ist auch ganz cool weil Javascript und das json ja javas und das hat mir auch mal ne Folge über json. Jason hat ja mal so ne Idee von Datentypen und die hat javascript halt auch als Grundlagendatentypen und das sind gar nicht so viele und das Macht das schön.

Ja, es gibt halt den Wahrheitswert, es gibt ne Nummer, es gibt n String, es gibt n Array n Objekt, das sind die wichtigsten ja und zum Array muss ich auch noch mal was sagen, ganz wichtiger Datentyp in javascript ist halt einfach ne Abfolge von Daten, bin eher hintereinander ja. Die können aber verschieden sein. Ich kann ne Nummer haben und dann in Bulin und so weiter und sofort ja was bei Mary wichtig ist.

Ich hab sage das hat einen Anfang und das hat ne Länge und die Sachen kommen hintereinander. Kannst du mit dem Index zählen 01234567 da steht halt irgendwas drin ja so und zum Objekt sag ich auch noch was, das Objekt ist halt quasi ein Key Value Container, da hab ich also nicht nur irgendwas hintereinander mit dem Index sondern ich hab halt einen Key der hat einen Namen ja Name Sir Name oder ABCD diesen Strings und dann hat der Key halt einen Value ja.

Du kannst halt könntest sagen Objekt ist a 1, B 2, C 3 und so weiter oder du machst es kompliziert, dann kannst du die

Sachen ineinander schachteln. Ja der Wert der Wert unter dem Key kann halt auch wieder ein Array sein oder noch mal ein Objekt und so weiter und sofort und damit hast du ein Nesting damit erschlägst du Daten also mit alleine diesen Dingern erschlägst du alle Datenstrukturen die du brauchst für irgendwas, damit kannst du alles abbilden, das kann nicht mal einfach so sein, es ist so, keiner braucht mehr, es reicht so. Und dann gibt es auch so

spezielle Datentypen. Date für ein Datum, das ist auch ganz cool gemacht, es gibt in in in No JS direkt ziemlich gute Datumsverarbeitung und alles was man so braucht zum ISO string

und und und. Timestims la Lada gibt es natürlich auch mal wieder extra Paket, die es noch cooler machen, aber von sich aus kommt da auch schon was ganz cool mit, dann gibt es noch einen Datentyp den ich mal nenne, das Set das Set ist, das muss man eigentlich auch sowieso kennen, das haben fast alle Programmiersprachen, das Set ist quasi ein ein Array in dem es keine Duplikate geben darf.

Sieht die Datenstruktur so vor, während ich in einem Array sauber hinschreiben kann, a komma a komma, a komma 1 Komma c. Ähnlich im Set.

Ja, da kannst du halt nur sagen a Komma 1 Komma c ist jetzt gerade richtig gespeichert, also keine Duplikate und das ist halt super cool, da kann man, man kann auch mal mit Datenstrukturen dann n kleinen Algorithmus machen, hab ich ganz oft zum Beispiel, da hab ich irgendwie n Array und weiß, Oh da sind vielleicht Sachen doppelt, die darf ich aber nicht haben, dann kannst du das Array in den Set klatschen.

Das Set macht dann halt flupp mit allen Duplikaten und dann machst du das Set wieder ins Array und dann hast du dann n Array ohne Duplikate. Ja, also man kann im No JS auch ganz easy eine Datenstruktur in die andere verwandeln und wieder zurück, ja und dann nimmt halt die Daten werden halt quasi so manipuliert, dass sie halt den Datenstrukturen genügen und damit kann ich halt auch schon coole Sachen machen, ne? Also das Set würde jetzt die Duplikate eliminieren,

automatisch. Genau ja, kannst nämlich sagen, du könntest sagen ich mach n news Set und dann sag ich und dann klatsch ich das Array da rein und dann dann hat das Set halt einfach die Duplikate rausgeschmissen, ist n guter cooler Weg um Duplikate zu killen ne sonst müsste ich halt dann wieder durchs Array etablieren und mir ist nämlich kein einfaches Problem Duplikate zu killen, die können ja irgendwo vorkommen. Ja ganz am Ende oder und so

weiter ja ist gar nicht so easy. Ja und mit mit so Datenstruktur wenn man die kennt geht es cool, ja. Da gibt es noch die Datenstruktur Buffer, die will ich noch mal sagen. Also das ist auch cool in Note TS, die haben sich tatsächlich, obwohl es so ne webnahe Sprache ist gibt es n sehr cooles System für für n Buffer Buffer ist einfach Bytes ja, also in dem Buffer kann ich alles speichern,

was zum Beispiel so Medien sind. Ja da kann ich n ganzes J Peg rein donnern und NPLG oder Irgendsowas und dann kann ich kann ich von außen sagen Buffer mach das mal irgendwie so, dass ich das transportieren kann in Basics defour und so, ja da kann ich das zwischen zwischen Browser und Server hin und Herschicken, ohne dass das passiert, ja. Das alles, das alles schon Teil von der Sprache ist, unglaublich mächtig also. Und das Schöne ist, es ist aber

auch nicht so viel. Ja in C plus Plus und in C oder in anderen Sprachen gibt es halt noch viel mehr Datentypen so und das Schlimme ist ja, wenn du zu viele Optionen hast irgendwas zu machen, dann ist als Entwickler auch schon wieder schwierig, ja und dann hast du auch schon wieder Kompatibilitätsprobleme, weil du halt einfach mehr posibilities hast. Ja ich glaube es ist halt nicht zu viel und nicht zu wenig und deswegen ist der Code gut austauschbar. Und harmoniert auch gut miteinander.

Bei t plus Plus musst du überlegen, der eine macht irgendwie n Array aus 8 bit integer und der nächste hat irgendwie 16 bit integer und wenn du die 16 bits jetzt in die 8 Bits knallen willst, dann dann werden die irgendwie abgeschnitten und so und dann ist das irgendwie nicht mehr ganz die Auflösung und das ist alles Wahnsinn.

Ja da willst du aber nicht drüber nachdenken müssen, also gibt es dann Java Script einfach nur ne Number Schluss aus Ende ja ob das jetzt ne 1 ist oder 1 mit den 12 stellen hinten dran ist Wurst, das funktioniert halt einfach ja das was man haben will ja. Genau. Und jetzt gibt es das und jetzt das Wichtige ist, und dann macht

es doppelt mächtig. Jetzt habe ich ja gesagt, es gibt dieses Array und das Objekt und so weiter und das sind jetzt einfach nicht nur Container, sondern die haben halt Funktionen an sich dran und das ist der Killer ja bei javascript, weil du hast total mächtige Funktionen dran, du kannst dir zum Beispiel einfach ein Array aufbauen, das kannst du sogar so einfach hinschreiben tatsächlich, du kannst ne eckige Klammer aufmachen und schreibst da 123 rein. Und dann macht die eckige Klammer zu.

Das ist dann quasi schon RE implizit definiert und jetzt kannst du schon dransetzen, Punkt und jetzt kannst du Funktionen drauf aufrufen, ja die agieren dann quasi auf diesem Arreetyp. Ja und davon gibt es zum Beispiel was man kennen muss und ich fang auch mit Arre an, weil die anderen sind so ähnlich, Filter zum Beispiel, da kann ich, da kann ich also und und da jetzt, das ist auch schick und das ist auch was, was man am Anfang nicht so versteht, also

wenn ich jetzt was filtere. Dann setze ich da aber quasi eine Funktion rein. Ich kann quasi mit einer Funktion beschreiben, was für jedes, wie jedes einzelne Item,

in dem RE gefiltert wird. Ja, also ich sage Punkt Filter und dann schreibe ich eine ganze Routine hin, das macht man meistens mit so einer Lambda Funktion, nennt man das so eine anonyme kleine Funktion, dann sage ich zum Beispiel X, dann mache ich so einen Pfeil gleich größer, quasi jetzt kann ich sagen was soll, was muss denn x, was muss mit x sein? Ja da könnte ich zum Beispiel hinschreiben x größer 2. Als als Buddy von dieser kleinen Funktion.

Ja, und jetzt wird quasi diese kleine Funktion, die ich geschrieben hab ausgeführt für jedes Element ja von dem Array, ja, und damit kann ich super geile Sachen machen.

Ja und so funktionieren die alle ja und dann hab ich also n Filter, filtert mir Sachen raus, kommt wieder n Array raus was potenziell kleiner ist oder gleich groß, je nachdem ob ich gefiltert hab oder nicht dann hab ich zum Beispiel n find damit finde ich finde ich einen bestimmten Item in meinem Array nach einer bestimmten Bedingung find dann hab ich einfach for each da kann ich dann einfach. Da kriege ich einfach nur den Wert hin, das x quasi das Item an der Stelle und kann dann

irgendwas machen. Dann habe ich eine Funktion, zum Beispiel include, da kann ich einfach fragen array included du den Namen so oder so? Ja das gibt es dann einfach nur wahr oder falsch zurück dann eine ganz wichtige Funktion was man kennt auf dem Array ich hab die Funktion Map, das ist auch ganz cool, die Funktion Map sagt quasi zurück kommt wieder ein Array der gleichen Länge aber an jeder Stelle kann anderer Inhalt

sein, ich mappe quasi. Den Inhalt an jeder Stelle in Arre der gleichen Länge mit einem neuen Inhalt.

Ja, wenn ich aber hinschreibe zum Beispiel, ich habe irgendein Arre und sage Punkt Map X und dann dieses File und dann wieder x, dann habe ich quasi das einfach nur dupliziert, das Arre ja, da würde nichts passieren ne aber ich könnte zum Beispiel ich weiß im Arre sind nur sind zahlen und ich will die irgendwie potenzieren oder irgendsowas dann kann ich sagen x und dann file x hoch 2 dann kommt ein Arre raus wo ich

überall die Quadrate drin habe. Und das sind jetzt alles Funktionen, die insbesondere auf Arrays beziehungsweise die kannst du einfach an Array dranhängen. N beliebiges Array mit Punkt und dann die silberne Funktion.

Ja ja. Ganz genau, ganz genau, ja, und die bleiben, die geben dann an dieser Stelle wieder n Array zurück, aber das Schöne ist, ich kann halt diese Punkte, ich kann die Funktion auch chainen wie man sagt ja also ich könnte zum Beispiel sagen, es passiert ganz oft wenn man programmiert, ich hab irgendwie n großes Array, das können ja zum Beispiel meine Daten dann aus einer Datenbank oder Irgendsowas, dann Filter ich die und das was da rauskommt map ich noch mal ja.

Ich, ich kann also das Punkt, Filter, Punkt, Map und so weiter beliebig aneinander hängen und dann noch n for each dran

machen. Und selbst wenn ich die Datentypen Wechsel zwischendurch, dann hab ich auf anderen Objekten, zum Beispiel auf dem String hab ich sehr ähnliche Funktionen ne auch n paar andere so dann da hab ich sowas wie wie Start Swiss und n Swiss und so aber da nen String im Prinzip ne Abfolge von Charakteren ist weil zum Beispiel Saba Hello könnte ich sagen ja gut Hello sind halt ist auch NRA und da steht halt HELL und o drin.

Und so sieht das javascript. Deswegen funktionieren die ganzen Array Funktionen halt auch auf den Strings. Ja sowas wie zum Beispiel Splice auch sowas Splice sagt zum Beispiel schneidet raus irgendwo an einer Stelle in einem Array an einem Index, schneidet das Element raus und ersetzt das mit was anderem oder mit nichts und so weiter das sind alles so Funktionen die als Webentwickler braucht man die ständig, weil man ständig irgendwo was splicen, slicen und so weiter

ich muss. Das ist ja überhaupt, warum wir programmieren. Ich hab halt Daten und ich muss die manipulieren, ne und da ist halt noch der ist unglaublich mächtig. Ja die Manipulation von Daten ne genau oder das ist eigentlich so, das ist so was man so sagen kann und dann gibt es halt total viele über diese ganzen Entwicklung der Programmiersprache gibt es immer mehr so Features die es halt einem total angenehm machen damit zu programmieren ne ich kann so Objekte.

Ich kann so Objekte quasi Spread. Es gibt n Spread Operator, die haben so schöne Namen Spread wie die wie die Butter ne Schmier aus so ja du kannst also quasi die ganzen Key values, zum Beispiel Spread in n anderes Objekt, dann schmierst du die quasi hin und legst die flach wieder zusammen und so weiter hast als Snicer also es also es gibt schon viel Luxus an der den ganzen Programmiererei da jetzt.

Node.js lernen

Wie geht man das jetzt an? Also wenn man jetzt diese ganzen Funktionen alle gar nicht so kennt, die die gibt die Idee einem da Hinweise oder gibt man in ne Dokumentation rein und liest oder? Chattet man nur noch mit chachi.pt und Germany und so oder wo wo findet man das eigentlich alles raus? Ja oder lernt man das in einem

dicken Buch wie du jetzt? Also ich bin ja Old School, wenn ich ne neue Programmiersprache mir angucke, dann weiß ich nicht, ob ich mir jetzt noch n dickes Buch holen würde, aber das mach ich tatsächlich manchmal, weil ich das ganz gemütlich finde, das auch irgendwie nicht vom Bildschirm

zu machen, sondern. Ja, ist irgendwie noch ne andere Atmosphäre. Ich finde ich finde immer wichtig, man muss einmal von so einer Programmiersprache die Grundlagen verstehen, wo kommt es her, bisschen was also das was wir jetzt heute versucht haben, ja das muss ich schon verstehen, ja und aber ich mach es heute noch und dann natürlich hilft dir die Idee, die sagt ja schon auch was da los ist.

Kann man machen finde ich manchmal aber auch ein bisschen hm, ich gucke tatsächlich immer, ich tippe immer MDN ein ja das ist Mozilla Development Network ist ne super top organisierte Java Script Dokumentation wenn du wenn du eintippst in den Chrome MDN Array. Da kommst du sofort auf eine Seite, wo wo das Array definiert ist. Alle Methoden kannst du klicken und siehst sofort Beispiele noch und nöcher und so das das hast du sofort gerafft.

Also wer zum Beispiel einfach mal alles können will was ein Java Script Array ist, der tippt Halt MDN Array ein und liest einmal von oben bis unten die Funktion durch. Ja da wird man mal da wird man, das muss man auch mal machen, weil wenn du mich kaino redest die sagt dir das ja auch nicht alles ja man muss sich wirklich mal die Mühe machen die alle zu lesen. Weil mit Umständen kannst du immer auch was erreichen, was noch nicht da ist.

Ja, die sind ja auch, die sind ja nicht alle orthogonal, sag ich mal. Ja, aber manchmal denkt man so scheiße, was hab ich das, ach was gibt es da noch für ne Funktion ja every oder reduce was hab ich denn da mal? Das hab ich, du kannst das immer per Hand programmieren mit dem for each Loop oder irgendsowas dann fehlt das so per Hand und so was kannst du schon machen ja kannst aber auch lassen weil es alles schon fertig ist. Ja das ist alles unglaublich wird n unglaublich langer Code ja.

Du kannst halt mit no JS, wenn du das gut kannst. Wenn du das voll auf dem Zettel hast, schreibst du unglaublich consize Code da da. Da sind wenige Zeilen und da passiert ne ganze Menge drin, weil halt diese Sprache aufgepeppt ist mit mit diesen ganzen coolen Funktionen.

Ne also das empfehle ich, dass man das wenn man jetzt ich empfehle erstens no JS kann ich auch mal so sagen, wenn man mal programmieren will finde ich no JS ist ne coole Sprache, kann man ruhig nehmen, vielleicht guckt ihr euch den nur an weiß ich nicht. Und dann auf jeden Fall einmal. Dadurch muss man gehen, ja einmal diese Funktion alle mal angucken und das richtig lernen. Ja und nicht nur, nicht nur online wie. Wird man to Date mit neuen Funktionen sagst du raus kommt was dazu.

Also immer mal wieder reingucken ja ja. Aber das kommt ja jetzt. Es ist ja nicht jede Woche der neue, also ich meine, klar kommt ja, kommt die Version der Programmiersprache, aber das ist ja, ich weiß gar nicht den Cycle halbes Jahr oder Irgendsowas und dann liest man, wie man das so macht, dann liest man die Release Notes und dann sagt man

jetzt gibt es irgendwie den. Nullish coalesting Operator dann denken sich, ach du scheiße, was ist denn nullish coalesting Operator, dann zeigt man sich mal n Beispiel und denkt man Scheiße, den hätt ich schon immer gebrauchen können ne so und dann und dann bleibt das auch eigentlich schon hängen. Ja so so mach ich das und und beim RE die Funktion die sind stabil seit seitdem es no GS gibt oder ja da kommt mal eine dazu oder sowas aber dann das ist nicht so, dass man das

ständig neu lernen muss. Ja das wär ja furchtbar, es geht schon. Gibt es noch was ist Syntax, was wir wissen müssen oder beziehungsweise die Hörer und Hörerinnen? Na ja, klar, da gibt es, da kannst du ja natürlich Bücher von lesen und schreiben.

So Java ist natürlich nicht javascript Entschuldigung, ist ja nicht gestricktely Getyped, das heißt das ist n bisschen Schwierigkeit, du weißt immer nicht ganz genau, was hab ich jetzt eigentlich für n Typen da unter mir, da musst du n bisschen aufpassen, da gibt es ja das type Script noch, wenn man das halt möchte, das kann man ja auf das javascript mit Aufsetzen, bei Deno ist es gleich integriert, type Script

JSON.stringify

Compiler, dann kann man noch mal wissen, dass wenn man das nicht weiß, wenn man mit das ist. Da steht vielleicht nicht gleich irgendwo mal so als Tipp von mir das Jason Stringify und Jason Pass also das Jason Objekt ist ja quasi in einem First Citizen sag ich mal in der OJS Sprache. Du kannst sogar n Jason Objekt wenn du 1 hast direkt reinladen in den Source Code und das verwandelt sich in n javascript Objekt so wie ich es gerade

besprochen hab. Das wird alles aber man manchmal muss man manchmal will man das Rausschreiben und dann kann man das quasi das das Objekt mit diesem Key values was ja so n verschachteltes etwas ist ja. Da kann man einfach sagen json und da muss man aber das J, das S und das U und das n alle groß schreiben. Sieht aber n bisschen komisch aus, die Stellen sich das sofort im Code wo du es machst.

Json, weil sonst wird da eigentlich alles gecamble casted, aber json ist so das einzige Ding wo alle 4 Letter All Caps sind, Punkt stringify und dann wird dann auch riesen Objekt wird einfach in String verwandelt den du dann einfach n Pfeil schreiben kannst. Zum Beispiel easy Ja und das Gegenteil von Stringify ist Parse, dann kannst du es parsen. Und hier jetzt ne mein letzter Trick den das mach ich.

Manchmal hat man das Problem, dass man was austauschen muss in einem sehr verschachtelten Jason Objekt mit so 34567 Etagen wo da irgendwas ist. Ja und ich muss irgendwie irgendwelche Sachen austauschen, dann kann es manchmal einfacher sein zu sagen Jason Stringefy das ganze Ding, dann hab ich das quasi als Stringen jetzt hab ich mächtiges stringen regax perfections sag einfach im Stringen Tausch aus das und das und das und dem Stringen ist völlig egal auf welchem Level

das ist. Wo ich damit aus nicht ausgetauscht hab, sag ich wieder Jason Pass und dann hab ich mein Objekt wieder zurück, sonst müsste ich nämlich als Coda irgendwie der Reihe nach durchgehen durch jedes Level. Ja for each da und den Key und noch mal gucken und so weiter wenn man n bisschen wenn man n bisschen um die Ecke denkt, da kann man mit diesen Konversionen von einem Typ in den anderen kann man auch sehr schnell mal irgendwie n Algorithmus

abfrühstücken. Ja OK, also n String ist unter Umständen einfacher zu überarbeiten als eben das eigentliche Objekt. Ja, auf jeden Fall. Wenn das vor allen Dingen, wenn das tief genästet ist, Gerrit, dann kommst du da nicht so einfach dran.

Ne, du musst dann, du musst das adressieren, dann müsstest du sagen a Punkt b Punkt C Punkt e ne wenn das jetzt wenn immer wieder Objekte in Objekten liegen, dann musst du erstmal durch die durch die ganzen Keys durch die musst du erstmal vernästen und dann will ich den Value da austauschen das ist dann muss man mal mit Rekursionen programmieren irgendsowas das wird wirklich das kriegst du richtig Kopfschmerzen. Und manchmal musst du einfach

bei javasript denkst du so OK, also NC plus Plus geht sowas auch nicht. Ja, du kannst nicht einfach aus dem C plus Objekt n String machen, aber n javasript schon ja sagst du Jason Stringy frei bumm machst n String, dann machst du regeler Expression auf n String und danach packst du es Faust du es wieder als als Objekt zurück ja dann wird es

noch mal. Also wenn du so aus der harten Schule kommst du sagen ist das völlig irre, kannst du nicht machen ich würde sagen kannst du auf jeden Fall machen ist richtig cool ja spart Programmierzeit und ist auch alles performant ja das sind alles schon schnelle Funktionen ne? Cool. Also ich merk du bist richtig begeistert, kannst wahrscheinlich noch ne halbe Stunde oder Stunde drüber.

Sprechen ich jetzt also wir haben ja schon die, aber ich glaub ne Stunde haben wir schon hier auf dem Zettel das das reicht für dich in. Ja ich bin begeistert tatsächlich ich find die Sprache sehr schön also ich ja also ich hab auch schon paar gesehen in meinem Leben, ich bin immer noch dabei also ich ja das kann man schon machen ne würd ich sagen kannst auch also kannst du safe große Projekte mitmachen würd

ich sagen. Ja, es gibt auch viele große, sehr, sehr, sehr große Projekte, die einfach mit no JS umgesetzt sind, ne? Ja, also alle Netflix und Co. Ja in der Größe gut. Dann würd ich sagen machen wir Deckel drauf. Ja, sorry, hast du deine 5% geschafft? Gerrit Ja, vielleicht ja vielleicht. Einstellig ist es bestimmt, aber aber dürfte hoch einstellig sein.

Ja, Papa ist alles gut, Mama ist ja n bisschen was technischeres heute aber ist ja auch mal schön, ne, wir haben ja auch n Technik Podcast nein ist doch, ist ja n Tech Podcast so ne also das tut dir ja war nicht war nicht negativ gemeint, ich kann mich ja dann auch n bisschen zurücklehnen beziehungsweise aufmerksam zuhören, ich versuch es wär natürlich noch cooler wenn ich es auch anwenden würde, aber das dauert noch n bisschen bis ich das lieber dich so entwickeln mal schauen OK gut.

Dann wollen wir nicht ins Labern geraten. Leute, wenn ihr uns noch nicht folgt, dann folgt mir dir, diesem Podcast aus Spotify AP Podcast Das hilft uns am meisten, dann kriegen wir große Reichweite, da können wir coole Gäste auch mit Einändern und dann freuen wir uns. Also Dankeschön für die, die dran geblieben sind und alle, die zugehört haben und wir hören uns in 2 Wochen war einfach komplex tschau tschau. Bis dahin. Tschüss aus Hamburg.

Transcript source: Provided by creator in RSS feed: download file
For the best experience, listen in Metacast app for iOS or Android