1
00:00:00,560 --> 00:00:03,840
Moin Leute zu einfach komplex 
folge 87 ich hab dir das schon 

2
00:00:03,840 --> 00:00:04,880
mal gehört, dass ich das 
anfange. 

3
00:00:04,880 --> 00:00:08,560
Nee, heute geht es um nen Thema 
was große Leidenschaft von mir 

4
00:00:08,560 --> 00:00:12,480
ist, nämlich um Javascript und 
no JS ja die Programmiersprache 

5
00:00:13,120 --> 00:00:15,560
die ich am meisten benutze im 
Moment und da tatsächlich auch 

6
00:00:15,560 --> 00:00:18,880
am meisten Schätze und ich würde
einfach mal euch heute nen 

7
00:00:18,880 --> 00:00:22,960
Rundumschlag geben von bis ja 
bisschen Historie, bisschen 

8
00:00:22,960 --> 00:00:26,000
Environment drumherum, bisschen 
wie sieht es aus von innen, was 

9
00:00:26,000 --> 00:00:28,480
kann man cool damit machen, 
darum geht es heute. 

10
00:00:28,880 --> 00:00:31,600
Hey Leute, bevor die Folge 
richtig losgeht, kommt hier 

11
00:00:31,600 --> 00:00:33,960
schon mal ne Korrektur. 
Wir haben die ganze Folge über 

12
00:00:33,960 --> 00:00:37,360
behauptet, No CHS sei eine 
Programmiersprache, aber 

13
00:00:37,360 --> 00:00:41,280
eigentlich ist NO CHS eine 
Laufzeitumgebung, mit der man 

14
00:00:41,280 --> 00:00:43,920
Java Script außerhalb des 
Browsers ausführen kann. 

15
00:00:44,400 --> 00:00:47,000
Tut uns leid, dass uns hier 
dieser Fauxpas unterlaufen ist, 

16
00:00:47,000 --> 00:00:49,520
aber jetzt wisst ihr Bescheid, 
no chs ist an sich keine 

17
00:00:49,520 --> 00:00:52,720
Programmiersprache, sondern 
diese Laufzeitumgebung, die 

18
00:00:52,720 --> 00:00:56,320
Funktionen und Module mitbringt,
die eben benutzt werden, um Java

19
00:00:56,320 --> 00:00:58,760
Script außerhalb des Browsers 
laufen zu lassen, das. 

20
00:00:59,040 --> 00:01:01,520
Jetzt aber viel Spaß mit der 
Folge und Sorry nochmal. 

21
00:01:02,080 --> 00:01:04,599
Und wie immer habe ich auch 
meinen Experten dabei, den 

22
00:01:04,599 --> 00:01:06,640
Gerrit. 
Hallo Gerrit. 

23
00:01:07,280 --> 00:01:10,200
Hi Burkhard und Hallo liebe 
zuhören, ich glaube damit ist 

24
00:01:10,200 --> 00:01:13,200
schon mal klar, welcher der 
Folge den Redeanteil haben wird.

25
00:01:13,920 --> 00:01:17,280
Ich gucke mal, dass ich auf 
meine 5% komme oder so weiß ich 

26
00:01:17,280 --> 00:01:19,920
noch nicht bei dem Thema No 
Jazz, aber ich habe ein paar 

27
00:01:19,920 --> 00:01:22,640
Fakten ergoogelt, mal gucken ob 
du die dann weißt. 

28
00:01:23,000 --> 00:01:24,480
Ja genau, da kannst du mich mal 
n paar Sachen fragen. 

29
00:01:24,480 --> 00:01:26,720
Ich weiß bestimmt nicht alles, 
das ist also ein Riesenthema. 

30
00:01:26,720 --> 00:01:29,080
Ich hab hier auch links neben 
mir hab ich n Buch liegen, das 

31
00:01:29,080 --> 00:01:30,760
ist jetzt auch schon ziemlich 
alt geworden, das hab ich mir 

32
00:01:30,760 --> 00:01:33,680
damals gekauft als ich mit Note 
JS angefangen hab mach ich auch 

33
00:01:33,680 --> 00:01:36,200
noch nicht immer Note JS 
programmieren warte mal. 

34
00:01:36,200 --> 00:01:42,480
Das Buch ist von 2000 und lass 
mich gucken lädt da noch eine 

35
00:01:42,480 --> 00:01:46,600
Seite 2016 ja also späten Star 
hab ich angefangen aber ich 

36
00:01:46,600 --> 00:01:48,560
glaub schon n bisschen früher. 
Uralt? 

37
00:01:48,560 --> 00:01:50,120
Ja, für. 
Programmiersprache ist das ja 

38
00:01:50,120 --> 00:01:52,640
gar nicht so furchtbar alt, ja, 
oder wenn man manchmal so hört, 

39
00:01:52,800 --> 00:01:54,480
kam Modbus aus. 
Neulich hatten, was er gefühlt 

40
00:01:54,480 --> 00:01:57,120
irgendwie aus den Aus der 
Steinzeit noch kam. 

41
00:01:57,600 --> 00:02:01,240
Dafür ist ja no JS dann ziemlich
modern 2016 oder 2009 wo es 

42
00:02:01,240 --> 00:02:02,480
glaub ich irgendwie eingeführt 
wurde. 

43
00:02:03,360 --> 00:02:05,400
Ja, genau, ja. 
Eingeführt wurde es glaub ich 

44
00:02:05,440 --> 00:02:08,280
noch n bisschen früher mit mit 
2009 genau ja, entstanden ist es

45
00:02:08,280 --> 00:02:11,920
wohl 1995. 
Also die Uhr der Uhrschleim 

46
00:02:11,920 --> 00:02:13,680
davon. 
Aber es ist also auf jeden Fall 

47
00:02:13,680 --> 00:02:15,360
ne moderne Programmiersprache, 
da sagst du was. 

48
00:02:15,360 --> 00:02:17,920
Ja, das ist so, ja und die macht
richtig viel Spaß, also sie hat 

49
00:02:17,920 --> 00:02:20,520
sich extrem krass 
weiterentwickelt, das muss man 

50
00:02:20,520 --> 00:02:22,680
mal sagen, ja, also man muss als
Entwickler musste mal n bisschen

51
00:02:22,680 --> 00:02:26,680
was mitmachen, also die ganzen 
neuen Features die so reinkamen,

52
00:02:26,680 --> 00:02:29,760
davon hab ich auch viele erlebt,
also die Versionen quasi der 

53
00:02:29,760 --> 00:02:31,840
Programmiersprache selbst. 
Das ist ja auch so wenn man das 

54
00:02:31,840 --> 00:02:33,200
nicht weiß, ne 
Programmiersprache ist ja nicht 

55
00:02:33,200 --> 00:02:36,400
in Stein gemeißelt sondern 
entwickelt sich selbst weiter ne

56
00:02:36,400 --> 00:02:38,960
so wie und wie auch. 
Die deutsche oder französische 

57
00:02:38,960 --> 00:02:42,160
englische Sprache dann auch neue
Wörter kriegt und Begriffe, ist 

58
00:02:42,160 --> 00:02:43,960
aber eine Programmiersprache 
noch eine ganze Runde krasser. 

59
00:02:43,960 --> 00:02:46,000
Also da entsteht auch mal eine 
neue Grammatik. 

60
00:02:46,000 --> 00:02:51,600
Ja, sowas wie der Adhusativ oder
Irgendsowas ja als Neuer, also 

61
00:02:51,600 --> 00:02:53,680
vielleicht ein ganz neuer Fall 
oder Irgendsowas, also nicht nur

62
00:02:53,680 --> 00:02:56,800
einfach Wörter, sondern auch 
irgendwie, ja das passiert dann 

63
00:02:56,800 --> 00:03:00,400
bei bei Nocias auch zu zu vielen
teilen, aber immer in eine gute 

64
00:03:00,400 --> 00:03:03,360
Richtung wie ich finde. 
Ja sollen wir mal ein bisschen 

65
00:03:03,360 --> 00:03:04,840
einsteigen, wollen wir ein 
bisschen was anfangen zur 

66
00:03:04,840 --> 00:03:07,280
Geschichte oder was kommt es 
her, wer hat es gemacht? 

67
00:03:07,840 --> 00:03:10,400
Ja, bitte. 
Gut, da bin ich immer nur. 

68
00:03:10,400 --> 00:03:12,760
Also da hab ich auch nur das 
Wissen nicht aus dem Alltag, 

69
00:03:12,760 --> 00:03:14,760
sondern aus den Büchern und so 
weiter das könnt ihr auch selber

70
00:03:14,760 --> 00:03:16,880
noch mal, das kann. 
Man ja auch nachlesen, ne. 

71
00:03:17,040 --> 00:03:19,360
Ja, ganz genau. 
Aber ja, das ist richtig. 

72
00:03:19,360 --> 00:03:21,560
Die Idee war halt, also, es 
kommt noch aus der Zeit und das 

73
00:03:21,560 --> 00:03:23,680
ist vielleicht wichtig zu sagen,
es kommt aus der Zeit und aus 

74
00:03:23,680 --> 00:03:27,360
dem Problem, dass ich HTML als 
statisch zu statisch empfunden 

75
00:03:27,360 --> 00:03:30,800
habe oder viele anderen um um um
n bisschen mehr Flexibilität, 

76
00:03:30,800 --> 00:03:33,480
bisschen mehr Dynamik in diese 
Webseiten zu bringen, das war so

77
00:03:33,480 --> 00:03:36,400
im Jahr 1995. 
Und das ist wichtig, weil jetzt 

78
00:03:36,400 --> 00:03:41,280
von vornherein war jemand auf 
der Suche nach einem neuen 

79
00:03:41,280 --> 00:03:43,920
Konzept, nach einer neuen 
Sprache, die das ein bisschen 

80
00:03:43,920 --> 00:03:45,440
ablöst. 
Und das hat sie halt schon immer

81
00:03:45,440 --> 00:03:47,440
im Internet zu tun und schon 
immer irgendwie mit dem Web. 

82
00:03:47,440 --> 00:03:50,400
Ja, das ist die Idee, also 
diese, diese Sprache ist damit 

83
00:03:50,400 --> 00:03:52,640
verwoben, ja, und deswegen ist 
sie wahrscheinlich heute noch so

84
00:03:52,640 --> 00:03:56,920
erfolgreich, ja, und das war 
Brandon Nike, der hat 1995 hat 

85
00:03:56,920 --> 00:03:58,520
der Mokka gemacht, das hat mir 
glaub ich auch schon mal 

86
00:03:58,520 --> 00:04:01,280
irgendwo gesagt. 
Das war das allererste von von 

87
00:04:01,280 --> 00:04:03,480
diesen Dingern und das und der 
hat bei Brandon Hike hat bei 

88
00:04:03,480 --> 00:04:05,960
Netscape gearbeitet, damals 
Netscape, weil die es nicht 

89
00:04:05,960 --> 00:04:09,920
wissen war n browserhersteller 
Firma die n Browser gemacht hat 

90
00:04:09,920 --> 00:04:13,280
selbigen Namen sehr erfolgreich 
damals und es geht das Gerücht 

91
00:04:13,280 --> 00:04:17,040
um, dass er diesen diesen 
Prototypen quasi der Initialen 

92
00:04:17,519 --> 00:04:21,600
Java Scriptsprache in 10 Tagen 
Gecodet hat ist immer krass. 

93
00:04:21,600 --> 00:04:24,320
Also es gibt ja auch dieses 
Gerücht von Linus Torvalds, also

94
00:04:24,320 --> 00:04:26,000
das ist glaub ich nicht kein 
Gerücht, das ist auch so, ja 

95
00:04:26,000 --> 00:04:28,560
dass er auch git. 
In sehr schneller Zeit gemacht 

96
00:04:28,560 --> 00:04:29,920
hat. 
Das ist glaub ich manchmal so. 

97
00:04:29,920 --> 00:04:33,080
Ja so so ne so ne man dann so n 
Geistesblitz hat und dann 

98
00:04:33,080 --> 00:04:35,000
wahrscheinlich hält man dann die
Jalousien unter und schließt 

99
00:04:35,000 --> 00:04:37,360
sich ein und dann ist man nach 
10 Tagen aber völlig fertig 

100
00:04:37,360 --> 00:04:39,680
wieder raus und hat aber 
irgendwas geschaffen sag ich 

101
00:04:39,680 --> 00:04:42,600
mal. 
Die Frage ist ja, ob man also ob

102
00:04:42,600 --> 00:04:45,960
in diesen 10 Tagen, die das, 
also die Zeit dabei ist, in der 

103
00:04:45,960 --> 00:04:48,000
man sich das ausgedacht hat, 
auch ne, oder ob das vielleicht 

104
00:04:48,000 --> 00:04:52,040
über Monate gereift ist, über 
Ideen und und Gedanken und 

105
00:04:52,040 --> 00:04:53,200
Brainstormings. 
Und dann? 

106
00:04:53,600 --> 00:04:55,840
Ist es im Kopf zu 80% fertig 
oder so? 

107
00:04:55,840 --> 00:04:58,520
Und dann wird es runtergerattert
ja, in 10 Tagen vielleicht keine

108
00:04:58,520 --> 00:05:00,000
Ahnung. 
Könnte ich mir vorstellen. 

109
00:05:00,000 --> 00:05:02,520
So funktioniert es bei mir 
meistens ja, ich brauch immer so

110
00:05:02,520 --> 00:05:04,560
n bisschen, ich geh immer 
schwanger mit irgendwelchen 

111
00:05:04,560 --> 00:05:07,120
Sachen und dann wenn es dann 
fertig ist im Gehirn, dann 

112
00:05:07,120 --> 00:05:08,960
versucht man es runter zu 
schreiben, da kommt meistens 

113
00:05:08,960 --> 00:05:11,600
noch mal so n ah verdammt hab 
ich vergessen muss ich noch mal 

114
00:05:11,600 --> 00:05:15,520
kurz nachdenken aber ja das geht
anscheinend so so angeblich ist 

115
00:05:15,520 --> 00:05:17,960
es entstanden und dann wurde es 
noch n paar Mal umgetauft glaub 

116
00:05:17,960 --> 00:05:21,680
innerhalb des Jahres 1995 bis 
ins Final Java Scriptis. 

117
00:05:21,920 --> 00:05:23,480
Dazu hab ich versucht 
rauszubekommen. 

118
00:05:23,480 --> 00:05:26,520
Warum haben die das Java Script 
genannt und was ich gelesen hab 

119
00:05:26,520 --> 00:05:30,040
ist, dass damals halt Java 
ziemlich bekannt war und man 

120
00:05:30,040 --> 00:05:32,000
dachte so Java setzt sich 
vielleicht durch als 

121
00:05:32,000 --> 00:05:35,640
Kleinsprache im Browser und so 
weiter und als Marketingaktion 

122
00:05:35,640 --> 00:05:37,920
hab ich es dann halt so genannt,
dass da Java im Wort mit drin 

123
00:05:37,920 --> 00:05:40,920
ist, um dem ganzen Bedeutung zu 
verleihen hat hat es halt Java 

124
00:05:40,920 --> 00:05:43,360
Script genannt, das ist bis 
heute für die Leute die das 

125
00:05:43,360 --> 00:05:45,920
irgendwie noch nie gehört haben 
n bisschen n Fettnäpfchen 

126
00:05:45,920 --> 00:05:48,520
schnell mal weil Java Script 
tatsächlich mit Java nichts zu 

127
00:05:48,520 --> 00:05:50,480
tun hat. 
Ja das war ganz unterschiedliche

128
00:05:50,880 --> 00:05:53,920
Sprachen. 
Marketing Er hat den Namen da 

129
00:05:53,920 --> 00:05:57,920
des Java Reingespielt, ja. 
Ja, ist mir auch schon häufiger 

130
00:05:58,000 --> 00:05:59,280
passiert. 
Inzwischen weiß ich es. 

131
00:05:59,920 --> 00:06:02,800
Java ist schon auch im Web 
vorgekommen, ne wo dann diese 

132
00:06:02,800 --> 00:06:05,000
Kaffeetasse war mit diesem Logo,
mit dieser Kaffeetasse, diese 

133
00:06:05,000 --> 00:06:08,200
Dampf glaub ich oder? 
Ja, genau, genau das, das Java, 

134
00:06:08,200 --> 00:06:10,760
ja die die da, die sind ja auch 
im Web aktiv und so weiter aber 

135
00:06:10,760 --> 00:06:13,040
halt verschiedene komplett 
verschiedene Programmiersprachen

136
00:06:13,440 --> 00:06:15,360
so und dann will ich gar nicht 
lange rumreden, aber dann ist 

137
00:06:15,360 --> 00:06:17,560
halt noch die Frage, warum setzt
sich also wie kriegt man jetzt 

138
00:06:17,560 --> 00:06:19,920
sowas was ein Mann. 
Geschaffen hat. 

139
00:06:19,920 --> 00:06:21,920
Wieso setzt sich das dann 
irgendwie durch? 

140
00:06:22,160 --> 00:06:24,560
Das das liegt dann immer an 
vielen Sachen, es war halt auch 

141
00:06:24,560 --> 00:06:26,880
so, dass damals die Browser so 
aufkamen und dann gab es halt 

142
00:06:26,880 --> 00:06:30,240
quasi den den sogenannten 
Browserkrieg man, man nennt das 

143
00:06:30,240 --> 00:06:33,520
so, also es hat sich Microsoft 
gebettelt mit Netscape gebettelt

144
00:06:33,520 --> 00:06:36,240
mit ich weiß nicht wer da noch 
alles aktiv war, da gab es der 

145
00:06:36,240 --> 00:06:38,560
Markt war noch nicht verteilt, 
die die Browserhersteller waren 

146
00:06:38,560 --> 00:06:41,120
alle dabei und die haben halt 
händeringend gesucht nach 

147
00:06:41,120 --> 00:06:43,400
Lösungen die Halt diese 
webauftritte dynamischer 

148
00:06:43,400 --> 00:06:45,680
aussehen lassen und dann kam 
dieses Javascript und das war 

149
00:06:45,680 --> 00:06:48,800
halt cool und dann gab es noch 
von Microsoft das Jay Script. 

150
00:06:49,040 --> 00:06:52,160
Was aber javascript kompatibel 
war und dann ging es los und 

151
00:06:52,160 --> 00:06:53,960
dann musste man halt bei 
javascript, da kommen wir 

152
00:06:53,960 --> 00:06:57,160
nachher noch zu ist ne 
interpretierte Sprache und das 

153
00:06:57,160 --> 00:06:59,800
heißt der Browser muss, der 
Browserhersteller muss was 

154
00:06:59,800 --> 00:07:02,560
machen damit javascript richtig 
ausgeführt wird und gut läuft 

155
00:07:02,560 --> 00:07:05,360
und dann haben sich halt quasi 
unternehmen alle darum gebettelt

156
00:07:05,360 --> 00:07:07,800
wer jetzt hier noch schneller 
javascript ausführen kann weil 

157
00:07:07,800 --> 00:07:11,560
das für die Nutzer am Ende für 
die UX war das natürlich total 

158
00:07:11,560 --> 00:07:13,320
kritisch. 
Ja wer am schnellsten Javascript

159
00:07:13,320 --> 00:07:15,880
ausführen konnte hatte das 
liquideste Erlebnis auf dem auf 

160
00:07:15,880 --> 00:07:18,320
dem Browser ja. 
Und so haben die sich glaub ich 

161
00:07:18,320 --> 00:07:21,160
gegenseitig da hochgeschaukelt 
und das Gleiche ist dann später 

162
00:07:21,160 --> 00:07:23,600
noch mal passiert und jetzt 
kommen wir nämlich rüber zu zu 

163
00:07:23,600 --> 00:07:25,920
no JS. 
Also das javascript ist quasi ne

164
00:07:25,920 --> 00:07:29,760
sehr erfolgreiche Sprache im 
Hauser geworden und jetzt gab es

165
00:07:29,760 --> 00:07:35,680
den den den Ryan Dahl so ich 
mich belesen habe, der war ein 

166
00:07:36,320 --> 00:07:40,200
Promovent der Mathematik, also 
auch wahrscheinlich ein ein 

167
00:07:40,200 --> 00:07:42,000
theoretisch denkender Mensch ist
glaub ich immer schon mal ne 

168
00:07:42,000 --> 00:07:44,960
gute Voraussetzung für ne neue 
Sprache und was ich gelesen hab 

169
00:07:44,960 --> 00:07:46,320
ist ne kleine Anekdote, der 
wollte eigentlich. 

170
00:07:46,640 --> 00:07:48,360
Der wollte eigentlich so mit 
seinen, also der der, der fand 

171
00:07:48,360 --> 00:07:50,720
irgendwie Computing und so 
weiter auch cool und war von 

172
00:07:50,720 --> 00:07:54,080
diesen Webtechnologien ja 
angefixt und der wollte so was 

173
00:07:54,080 --> 00:07:58,080
einfaches Programmieren wie ne 
progress bar für n Pfeil upload,

174
00:07:58,080 --> 00:07:59,520
so dass man sieht was so los 
ist. 

175
00:07:59,520 --> 00:08:03,720
Ja und hat er relativ lange für 
gebraucht weil er war mit nichts

176
00:08:03,720 --> 00:08:06,480
zufrieden weil irgendwie war 
alles nur so ne Art Workaround 

177
00:08:06,480 --> 00:08:09,080
und nicht optimal. 
Ja und das hat der Mellart 

178
00:08:09,080 --> 00:08:12,760
damals nicht hergegeben, weil. 
Ach, mit den Long Pauls und das 

179
00:08:12,760 --> 00:08:16,000
weiß ich nicht alles so und 
jedenfalls ist der Rumgereist 

180
00:08:16,000 --> 00:08:18,240
also auch also tatsächlich 
selber gereist. 

181
00:08:18,240 --> 00:08:20,800
Aber auch in den 
Programmiersprachen hat Huscal 

182
00:08:20,800 --> 00:08:25,280
ausprobiert und c was 
ausprobiert und so weiter und 

183
00:08:25,280 --> 00:08:28,480
hat am Ende am Ende Java Script 
entdeckt und gesagt, OK, das 

184
00:08:28,480 --> 00:08:30,600
brauchen wir, aber das brauchen 
wir quasi als eigene 

185
00:08:30,600 --> 00:08:34,080
Programmiersprache für den 
Server und damit ist quasi der 

186
00:08:34,080 --> 00:08:36,080
Grundstein von Noja S gelegt 
worden. 

187
00:08:36,520 --> 00:08:38,320
Und da hat der Mann, der gar 
nicht so reich war und auch n 

188
00:08:38,320 --> 00:08:42,159
ziemlicher Einzelkämpfer, der 
hat dann losgelegt und dann ja 

189
00:08:42,159 --> 00:08:47,200
auf Maler Kante, sag ich mal 
Note JS gebaut und man hat noch 

190
00:08:47,200 --> 00:08:50,080
n Mitstreiter gefunden, der 
Isaac Schlüter, den muss man 

191
00:08:50,080 --> 00:08:52,720
auch noch mal nennen, also den 
Ryan Dahl als Note JS ja 

192
00:08:52,720 --> 00:08:56,720
Erfinder und der Isaac Schlüter,
der hat quasi das den Note 

193
00:08:56,720 --> 00:09:00,240
Package Manager, das NPM, das 
kennt man wenn man wenn man da 

194
00:09:00,240 --> 00:09:03,080
mal so drinne war. 
Ja, mit vorangetrieben und dann,

195
00:09:03,080 --> 00:09:05,880
das sag ich jetzt gleich was, 
das ist nämlich auch, also es 

196
00:09:05,880 --> 00:09:08,920
ist eigentlich immer so ne 
Programmiersprache, die ja die 

197
00:09:08,920 --> 00:09:11,920
definiert quasi die Grammatik 
und wie es funktioniert und so 

198
00:09:11,920 --> 00:09:15,440
weiter also wie funktioniert die
Sprache und aber jede Sprache 

199
00:09:15,440 --> 00:09:18,640
ist eigentlich nur so mächtig 
wie es ja Abhängigkeiten, 

200
00:09:18,640 --> 00:09:22,440
dependency Pakete, externe Tools
gibt, die die Sprache quasi 

201
00:09:22,440 --> 00:09:25,040
verstärken, ja weil wenn ich 
jetzt alles noch mal von vorne 

202
00:09:25,040 --> 00:09:26,840
machen muss, hab es auch ne 
tolle Sprache, muss aber 

203
00:09:26,840 --> 00:09:30,040
irgendwie PDF rendering und. 
Ach, was weiß ich, es gibt ja 

204
00:09:30,040 --> 00:09:32,400
alles Mögliche, was schon mal 
gelöst wurde, ja irgendwie 

205
00:09:32,400 --> 00:09:34,680
mathematische Formeln rennen 
dann late ich was weiß ich 

206
00:09:34,680 --> 00:09:37,200
alles, dieses ganze Grabens, ja 
alles was was man so braucht, ja

207
00:09:37,200 --> 00:09:40,480
sockets und so ich das alles 
noch mal selber machen muss dann

208
00:09:40,960 --> 00:09:43,600
nein da gewinne ich keinen 
keinen keinen Blumenstrauß ja 

209
00:09:43,680 --> 00:09:46,240
und aber dieser Isaak jüt hat 
sich von vornherein überlegt, 

210
00:09:46,240 --> 00:09:48,640
wie machen wir das gut, ja, also
wie machen wir dieses Dependency

211
00:09:48,640 --> 00:09:52,560
Management gut und das hat er 
auch gut gemacht, ich finde das 

212
00:09:52,560 --> 00:09:54,280
super cool das dazu sage ich 
nachher auch noch mal ein 

213
00:09:54,280 --> 00:09:57,320
bisschen was, aber das entstand 
quasi auch 2009 mit gleich mit 

214
00:09:57,320 --> 00:09:59,520
No GS. 
Das war, glaube ich auch gesund,

215
00:09:59,520 --> 00:10:01,360
weil da nichts dran geflanscht 
war. 

216
00:10:01,360 --> 00:10:04,480
Das war von vornherein irgendwie
ne ne ne Union, ja und die haben

217
00:10:04,720 --> 00:10:07,200
beiden haben erkannt das das 
braucht, das braucht es beides 

218
00:10:07,200 --> 00:10:10,280
ja ist ne Dichte. 
Ne dichte Verzahnung. 

219
00:10:10,280 --> 00:10:13,440
Ne dichte Verzahnung. 
Danke also ne dichte Verzahnung 

220
00:10:13,440 --> 00:10:16,360
von Raketmanagement und 
Programmiersprache benötigt das,

221
00:10:16,360 --> 00:10:18,120
das haben die beiden sehr früh 
erkannt, das ist nicht bei 

222
00:10:18,120 --> 00:10:20,600
anderen Sprachen ist das nicht 
so und dann nervt das ziemlich 

223
00:10:20,600 --> 00:10:22,760
stark, ja. 
Das wollte ich dich gerade 

224
00:10:22,760 --> 00:10:25,360
fragen. 
Ja, also klingt jetzt logisch so

225
00:10:25,760 --> 00:10:28,560
im Nachhinein ne. 
Ich muss gerade denken an 

226
00:10:28,560 --> 00:10:32,560
irgendwie das iphone, was auch 
so stark wurde oder so stark 

227
00:10:32,560 --> 00:10:37,440
Verbreitung gefunden hat wegen 
des Appstores wo Leute Software 

228
00:10:37,760 --> 00:10:40,360
quasi bereitstellen können für 
das Gerät an sich ist nicht 

229
00:10:40,360 --> 00:10:42,880
genau das gleiche, aber ist ja n
ähnliches Prinzip im Grunde 

230
00:10:42,880 --> 00:10:45,640
genommen was auch um die Zeit 
passiert ist. 

231
00:10:45,640 --> 00:10:48,400
Ja mit neuen. 
Ja, es ist so, wenn das halt 

232
00:10:48,400 --> 00:10:50,520
alles aus einer Hand ist, ne, 
wenn du bei bei iphone kannst du

233
00:10:50,520 --> 00:10:52,400
sagen, dass Hardware und 
Software aus einer Hand und dann

234
00:10:52,400 --> 00:10:55,640
der App Store und die Apps passt
halt gut zusammen und weil hier 

235
00:10:55,640 --> 00:10:58,000
ist es bei der bei der Java 
Script Sprache so, dass halt 

236
00:10:58,000 --> 00:11:01,000
package Manager und Sprache halt
sehr stark aus einer Hand 

237
00:11:01,000 --> 00:11:03,160
kommen, das merkst du bei 
anderen Programmiersprachen, das

238
00:11:03,160 --> 00:11:05,280
ist halt nicht so und da gibt es
vielleicht auch mehrere Pakete 

239
00:11:05,280 --> 00:11:08,520
Manager und so weiter und dann 
dann gibt es die eine Community 

240
00:11:08,520 --> 00:11:10,880
entwickelt dagegen die andere 
dagegen und so und da fängt es 

241
00:11:10,880 --> 00:11:14,640
schon an, ja dann ist es halt 
immer schon ja geht alles ne 

242
00:11:14,640 --> 00:11:16,240
aber hier ist es halt besonders 
schön ne. 

243
00:11:16,520 --> 00:11:18,000
Ja, vielleicht hat man sich da 
inspirieren lassen. 

244
00:11:18,000 --> 00:11:21,280
Hab ich gerade so gedacht. 
Ja, vielleicht so und dann. 

245
00:11:21,400 --> 00:11:23,840
Und dann der letzte, der letzte,
die letzte, was ich noch erzähle

246
00:11:23,840 --> 00:11:25,960
ist, warum dann no JS so richtig
ins Leben gekommen ist. 

247
00:11:25,960 --> 00:11:27,800
Ich hab ja gesagt, dass der eine
Mann ist und der hat dann 

248
00:11:27,800 --> 00:11:29,680
tatsächlich sein letztes Geld 
zusammengenommen und alles auf 

249
00:11:29,680 --> 00:11:32,600
eine Karte gesetzt, dann hätte 
das No JS Projekt nicht weiter 

250
00:11:32,600 --> 00:11:34,880
treiben können, wenn er nicht 
dann irgendwann mal finanziert 

251
00:11:34,880 --> 00:11:37,680
worden wäre, dann ist er 
tatsächlich der Isa, dann ist er

252
00:11:37,680 --> 00:11:42,400
auf die JS conf.eu, also die JS 
conf Messe gegangen, Messe 

253
00:11:42,520 --> 00:11:46,240
Entwicklerkonferenz gegangen. 
Und da haben ihn Kollegen von 

254
00:11:46,240 --> 00:11:49,920
Joint gesehen, und die haben 
dann das finanziert, das 

255
00:11:49,920 --> 00:11:51,360
Projekt. 
Dann wurde da auch eingestellt 

256
00:11:51,360 --> 00:11:53,520
und dann ging es los und der 
Isaak Schlüter auch bei Joint 

257
00:11:53,520 --> 00:11:55,360
und dann konnten die quasi 
dieses Nord GS Projekt 

258
00:11:55,360 --> 00:11:57,600
vorantreiben. 
Ne ja so ist es manchmal. 

259
00:11:57,600 --> 00:12:02,160
Ja das war so ne One Man Show 
gut gefunden Übergenommen und 

260
00:12:02,160 --> 00:12:04,400
los ja. 
Der Dahl ist auf die Konferenz 

261
00:12:04,400 --> 00:12:06,440
gegangen, ne. 
Der Dahl sagt der Dahl ja nicht.

262
00:12:06,440 --> 00:12:08,520
Ich sag Schlüter ja, der war 
vielleicht auch da, aber der 

263
00:12:08,520 --> 00:12:10,640
Dahl hat das da vorgetragen, 
genau. 

264
00:12:11,640 --> 00:12:12,880
Genau. 
Und heute ist er auch wieder auf

265
00:12:12,880 --> 00:12:14,960
der Konferenz unterwegs und 
macht Deno. 

266
00:12:15,120 --> 00:12:18,640
Ja, das ist auch ganz krass der 
der gleiche, der gleiche Autor, 

267
00:12:18,640 --> 00:12:21,120
der damals No GS gemacht hat, 
hat gesagt er hat n Vortrag 

268
00:12:21,120 --> 00:12:24,080
gehalten, was sind die 10 
Fauxpas die ich mir geleistet 

269
00:12:24,080 --> 00:12:27,200
hatte, No GS und jetzt gibt es 
übrigens deno, was quasi noch 

270
00:12:27,200 --> 00:12:30,800
mal No GS ist in ja in besserer 
Version ja leicht 

271
00:12:30,800 --> 00:12:34,680
unterschiedlich, aber ja deno 
halt andere Sprache hab ich 

272
00:12:34,680 --> 00:12:38,080
selber noch nicht programmiert. 
Ja, hat der Autor von No JS hat 

273
00:12:38,080 --> 00:12:41,000
hat noch mal hingelangt, ja. 
Aber auch auf javascript 

274
00:12:41,000 --> 00:12:44,080
basierend quasi. 
Nee, das also, das ist quasi n 

275
00:12:44,080 --> 00:12:46,800
anderes javascript ne, also Dino
gleich javascript basiert. 

276
00:12:46,800 --> 00:12:49,680
Es basiert auf gleichen 
Grundlagen, auf ähnlichen 

277
00:12:49,680 --> 00:12:51,760
Grundlagen, zum Beispiel auf der
V 8 Engine. 

278
00:12:51,760 --> 00:12:53,760
Dazu sag ich auch gleich noch 
was, aber es ist doch noch mal 

279
00:12:53,760 --> 00:12:56,640
anders gemacht. 
Ja ich denke es ist schon sehr 

280
00:12:56,640 --> 00:13:00,360
ähnlich, aber vielleicht sind 10
Aspekten oder sowas mindestens 

281
00:13:00,360 --> 00:13:03,120
immer mal stark verbessert, 
jedenfalls was der Autor so 

282
00:13:03,120 --> 00:13:05,040
sagt. 
Ja ich glaube no JS ist sehr 

283
00:13:05,040 --> 00:13:07,680
nutzbar. 
Das ist wahrscheinlich n High 

284
00:13:07,680 --> 00:13:09,800
Level Veränderung. 
Ja mal mal gucken was in Zukunft

285
00:13:09,800 --> 00:13:10,800
bringst. 
Du entstehen ja immer wieder 

286
00:13:10,800 --> 00:13:13,720
neue Programmiersprachen. 
Ja, so viel zur Geschichte, ich 

287
00:13:13,720 --> 00:13:16,000
glaub das reicht, da bin ich ja 
auch nicht so sattelfest. 

288
00:13:16,240 --> 00:13:19,200
Genau so, dann steigen wir mal 
kurz n bisschen hatte ich jetzt 

289
00:13:19,200 --> 00:13:20,960
mal gedacht von der Struktur her
wenn wir jetzt die Geschichte 

290
00:13:20,960 --> 00:13:23,200
hatten jetzt steigen wir mal so 
n bisschen ein, das ist jetzt 

291
00:13:23,200 --> 00:13:25,920
natürlich sehr tief so quasi mal
so gucken in die Wurzeln, wie 

292
00:13:25,920 --> 00:13:28,480
funktioniert überhaupt so ne 
Programmiersprache und was ist 

293
00:13:28,480 --> 00:13:31,120
besonders an No GS? 
Da gibt es nämlich tatsächlich 

294
00:13:31,120 --> 00:13:33,760
so n paar Sachen. 
Und, und wenn wir das verstanden

295
00:13:33,760 --> 00:13:35,840
haben, dann gehen wir n bisschen
höher und gucken uns an, wie 

296
00:13:35,840 --> 00:13:37,920
sieht No GS überhaupt aus und 
wie schreibe ich das hin. 

297
00:13:37,920 --> 00:13:40,360
Und das sind da coole Funktionen
und so weiter und dann gehen wir

298
00:13:40,360 --> 00:13:42,880
noch n Stück höher und so weiter
ne aber einmal würde ich was 

299
00:13:42,880 --> 00:13:45,240
dazu sagen, weil das nämlich ich
glaube das ist das musste ich 

300
00:13:45,240 --> 00:13:48,160
auch erstmal verstehen, da ist 
No GS sehr speziell in in der 

301
00:13:48,160 --> 00:13:51,680
Art wie es intern aufgebaut ist.
Und zwar ist es ja so, dass wenn

302
00:13:51,680 --> 00:13:54,480
wir jetzt mal bei javascript 
noch mal gucken, javascript 

303
00:13:54,480 --> 00:13:57,200
läuft ja im Browser, wenn man 
jetzt über den Browser 

304
00:13:57,200 --> 00:13:59,760
nachdenkt, dann habe ich n 
komplett anderes Konzept. 

305
00:14:00,240 --> 00:14:03,440
Wie Softwarearchitektur 
typischerweise arbeitet. 

306
00:14:03,920 --> 00:14:06,160
Also wenn ich jetzt irgendwie 
gucke, wie ein Skript läuft, was

307
00:14:06,160 --> 00:14:08,000
ich irgendwie im Backend habe, 
was irgendwie eine Tabelle 

308
00:14:08,000 --> 00:14:10,920
ausliest oder wie umformatiert 
oder irgend sowas, der 

309
00:14:10,920 --> 00:14:13,760
Unterschied im Browser sind die 
Events im Prinzip. 

310
00:14:13,760 --> 00:14:18,040
Wenn ich eine Webseite habe und 
die Rendere, dann ist die da und

311
00:14:18,040 --> 00:14:23,440
da passiert erstmal nichts, also
irgendwas wartet darauf, dass 

312
00:14:23,440 --> 00:14:25,880
was als nächstes was passiert. 
Also ich bin schon mal nicht 

313
00:14:25,880 --> 00:14:28,320
mehr prozedural in meiner in 
meinem Ablauf. 

314
00:14:29,040 --> 00:14:31,320
Ich fang irgendwo an, ich hab 
irgendwo n Einstieg und dann 

315
00:14:31,320 --> 00:14:33,280
warte ich eigentlich darauf, 
dass ich von außen irgendwie 

316
00:14:33,280 --> 00:14:35,560
geschüttelt werde, ja. 
Aber es könnte auch sein, dass 

317
00:14:35,560 --> 00:14:38,640
irgendwas n Timer versehen ist 
oder so und anfängt nach 6 

318
00:14:38,640 --> 00:14:41,840
Sekunden oder so oder? 
Genau das stimmt aber sogar n 

319
00:14:41,840 --> 00:14:44,040
Timer Gerrit ist ja auch was 
dann? 

320
00:14:44,040 --> 00:14:45,720
Dann? 
Dann stellst du ne Uhr und dann 

321
00:14:45,720 --> 00:14:48,640
passiert n Event ja ich weck 
dich jetzt oder sowas ne also es

322
00:14:48,640 --> 00:14:51,040
ist immer wieder n Event 
irgendwie es ist nicht so 

323
00:14:51,040 --> 00:14:54,960
vorgeplant ja und das regelt 
halt also das javascript macht 

324
00:14:54,960 --> 00:14:56,960
das im Prinzip als Sprache nicht
selbst sondern. 

325
00:14:57,280 --> 00:14:59,640
Diese Events, die werden quasi 
vom Browser zur Verfügung 

326
00:14:59,640 --> 00:15:01,960
gestellt und weitergeleitet, 
aber javascript verarbeitet 

327
00:15:01,960 --> 00:15:05,640
diese Events ja und das ist der 
erste Knackpunkt und und das 

328
00:15:05,640 --> 00:15:09,040
finde ich so toll an Note JS 
dieser dieses dieser Event loop,

329
00:15:09,040 --> 00:15:13,400
also die die Maschine die die 
Events verarbeitet ist ganz eng 

330
00:15:13,400 --> 00:15:17,040
in diese Sprache integriert. 
Ja also ich kann Note JS 

331
00:15:17,040 --> 00:15:20,480
anfangen hinzuschreiben und dann
dann dann dann wird der Code 

332
00:15:20,480 --> 00:15:22,480
über Events getriggert und 
ausgeführt. 

333
00:15:22,480 --> 00:15:25,240
Ja und das ist auch wenn man. 
Und das erste Mal javascript 

334
00:15:25,240 --> 00:15:27,240
schreibt und so weiter und das 
noch nicht so gemacht hat, ist 

335
00:15:27,240 --> 00:15:30,720
das völlig verwirrend, weil weil
der Code gar nicht von oben nach

336
00:15:30,720 --> 00:15:33,080
unten irgendwie ausführt im 
Notfall, sondern irgendwo ist n 

337
00:15:33,080 --> 00:15:35,640
imit und irgendwo hatte ich 
vorher in einem ganz anderen 

338
00:15:35,640 --> 00:15:37,920
Pfeil an ganz anderen Stelle hat
irgendjemand gesagt, wenn hier 

339
00:15:37,920 --> 00:15:41,080
so n Event kommt, dann reagiere 
ich darauf ja vielleicht 

340
00:15:41,080 --> 00:15:43,960
gleichzeitig in 23 anderen 
stellen im Code sind noch 2, die

341
00:15:43,960 --> 00:15:48,280
darauf reagieren und so weiter 
also es ist von vornherein, wenn

342
00:15:48,280 --> 00:15:50,480
man no GS programmiert, das kann
man natürlich auch prozedural 

343
00:15:50,480 --> 00:15:52,960
prozedural programmieren, aber 
von vornherein ist das dafür. 

344
00:15:53,360 --> 00:15:56,400
Gemacht und aufgebaut, mit 
Events klarzukommen, ne. 

345
00:15:57,040 --> 00:15:59,760
Und jetzt ist es so, wenn es 
jetzt quasi wenn javascript 

346
00:15:59,880 --> 00:16:03,720
javascript ist ja keine 
kompilierte Sprache, das noch 

347
00:16:03,720 --> 00:16:05,160
mal zu sagen. 
Also wir haben jetzt zum 

348
00:16:05,160 --> 00:16:06,920
Beispiel C plus plus das 
Standardbeispiel für mich als 

349
00:16:06,920 --> 00:16:08,920
kompilierte Programmiersprache, 
da schreibe ich ja hin und dann 

350
00:16:08,920 --> 00:16:11,800
kommt es, gibt es einen eigenen 
Prozess noch zur Bauzeit, wie 

351
00:16:11,800 --> 00:16:15,120
man so sagt, ja das das der 
Anwendung, dann gibt es einen 

352
00:16:15,120 --> 00:16:18,240
Tool, nämlich den Compiler den 
GCC oder Irgendsowas und der 

353
00:16:18,240 --> 00:16:21,440
setzt quasi das geschriebene C 
plus Plus in Maschinencode um 

354
00:16:21,440 --> 00:16:25,880
und der wird dann ausgeführt. 
Und in bei No JS ist das die V 8

355
00:16:25,880 --> 00:16:27,040
Engine. 
Die kann man sich gut merken. 

356
00:16:27,040 --> 00:16:29,040
V 8 das klingt ist auch ein 
toller Name, finde ich, also 

357
00:16:29,040 --> 00:16:31,680
wenn man so ein v 8 Motor 
gesehen hat, ist ja auch nett, 

358
00:16:31,840 --> 00:16:35,520
die V 8 Engine ist quasi der 
just in Time Javascript 

359
00:16:35,520 --> 00:16:39,440
Interpreter hier auch im 
Chromium Projekt verbaut ist und

360
00:16:39,440 --> 00:16:42,720
halt im Chrome Browser zum 
Beispiel auch zum Einsatz kommt,

361
00:16:42,880 --> 00:16:46,400
also die gleiche Engine die 
quasi im im Chrome Browser auch 

362
00:16:46,400 --> 00:16:49,840
das javascript umsetzt. 
Läuft tatsächlich auch im 

363
00:16:49,840 --> 00:16:52,960
Backend, also am Server mit und 
und setzt quasi das No TS um, 

364
00:16:53,040 --> 00:16:55,520
was syntaktisch auch ganz 
ähnlich wie ja was gibt es? 

365
00:16:56,000 --> 00:16:59,240
Immer zu dem Zeitpunkt dann 
jeweils, wenn es ausgeführt wird

366
00:16:59,240 --> 00:17:01,840
oder aufgerufen wird, durch n 
Event zum Beispiel oder so ja. 

367
00:17:02,160 --> 00:17:05,640
Nee, tatsächlich geht das auch. 
Ja, das ist glaub ich relativ 

368
00:17:05,640 --> 00:17:08,040
komplex, wie das genau 
funktioniert, also das, das geht

369
00:17:08,040 --> 00:17:10,680
schon auch von oben nach unten, 
frühstückt das ab, aber es ist 

370
00:17:10,680 --> 00:17:13,599
nen man nennt es just in Time 
Compilation, da passiert auch 

371
00:17:13,599 --> 00:17:15,599
Optimierung und Caching und so 
weiter. 

372
00:17:16,079 --> 00:17:17,960
Und das ist hab ich ja vorher 
gesagt, haben sich ja vorher 

373
00:17:17,960 --> 00:17:20,440
schon die, die im Browserkrieg 
die Hersteller irgendwie 

374
00:17:20,440 --> 00:17:22,200
gebettelt. 
Wer das am besten kann, ich 

375
00:17:22,200 --> 00:17:26,400
glaube, das ist ja, das ist 
schwere, große Kunst, die diese 

376
00:17:26,480 --> 00:17:29,080
diese javascript interpreter zu 
machen, aber Open Source Code 

377
00:17:29,080 --> 00:17:31,200
von Google zur Verfügung 
gestellt kann man lesen, ja da 

378
00:17:31,200 --> 00:17:34,000
steckt sehr viel Know How drin, 
ne also da steigt auch gerade 

379
00:17:34,000 --> 00:17:38,160
mein Horizont aber es ist ne 
Mischung aus Kompilieren just in

380
00:17:38,160 --> 00:17:40,360
Time und so weiter ja es wird 
aber jedenfalls nicht vorher 

381
00:17:40,360 --> 00:17:43,240
komplett in Maschinencode 
umgesetzt, sondern zu Laufzeit 

382
00:17:43,240 --> 00:17:45,040
ja OK. 
Genau. 

383
00:17:45,040 --> 00:17:47,760
Und das das arbeitet zusammen 
und braucht nen sogenannten 

384
00:17:47,760 --> 00:17:49,880
Event Loop und das muss man auch
noch mal dazu sagen. 

385
00:17:49,880 --> 00:17:52,480
Also die v 8 Engine macht im im 
Prinzip die Übersetzung vom 

386
00:17:52,480 --> 00:17:55,760
javascript in in das was wir CPU
und so weiter dass sie das 

387
00:17:55,760 --> 00:17:57,920
können und dann brauchen wir 
noch den Event Loop, der 

388
00:17:57,920 --> 00:18:01,160
tatsächlich quasi die Events 
weiterleitet. 

389
00:18:01,160 --> 00:18:04,160
Das sind jetzt nicht nur Events 
so so Hallo hier bin ich und 

390
00:18:04,160 --> 00:18:06,480
dann ja hab ich dich gehört, 
sondern wenn ich jetzt event 

391
00:18:06,480 --> 00:18:09,240
loop sage mach ich jetzt auch 
noch mal was ganz Wichtiges in 

392
00:18:09,240 --> 00:18:13,120
No GS und das ist n. 
Ja, hier haben Sie was gelöst 

393
00:18:13,120 --> 00:18:15,640
von vornherein, was ganz viele 
andere Programmiersprachen von 

394
00:18:15,640 --> 00:18:17,640
vornherein im Design nicht 
haben, wo man dann ganz anders 

395
00:18:17,640 --> 00:18:20,360
programmieren und denken muss, 
das ist was mit den Schwads zu 

396
00:18:20,360 --> 00:18:21,920
tun. 
Ja, also immer wenn wir im Web 

397
00:18:21,920 --> 00:18:24,560
sind, dann haben wir im Notfall 
ja Gleichzeitigkeit am Start 

398
00:18:24,560 --> 00:18:27,080
sind diese Events, von denen ich
spreche, wenn wir jetzt mal 

399
00:18:27,080 --> 00:18:29,000
darüber nachdenken, dass die 
Events zum Beispiel ausgelöst 

400
00:18:29,000 --> 00:18:32,240
werden von 1000 Usern, die 
gleichzeitig n Knopf drücken, 

401
00:18:32,960 --> 00:18:35,680
dann kommen ja sehr viele Events
im Notfall ziemlich gleichzeitig

402
00:18:35,680 --> 00:18:38,240
an, ja. 
So und Gleichzeitigkeit zu 

403
00:18:38,240 --> 00:18:41,680
verhandeln im im, im, in der 
Programmiersprache, das braucht 

404
00:18:41,680 --> 00:18:44,240
halt das, das ist nicht so 
einfach. 

405
00:18:44,240 --> 00:18:46,880
Ja und früher hat man das immer 
über Chats gemacht und man kann 

406
00:18:46,880 --> 00:18:50,360
tatsächlich gleichzeitig Sachen 
laufen lassen in einem Code und 

407
00:18:50,360 --> 00:18:52,360
dann muss ich aber Hölle 
aufpassen, dass ich nicht 

408
00:18:52,360 --> 00:18:55,600
gleichzeitig zum Beispiel file 
IO mache, also wenn ich zum 

409
00:18:55,600 --> 00:18:58,760
Beispiel jetzt Beispiel ganz 
larifari irgendwie kriegt, 1000 

410
00:18:58,760 --> 00:19:01,560
1000 knöpfklicks, aber die, die 
sollen quasi ein ein und 

411
00:19:01,560 --> 00:19:04,080
dasselbe File updaten oder in 
der gleichen Datenbank irgendwas

412
00:19:04,080 --> 00:19:06,400
updaten. 
Und ich mach das tatsächlich 

413
00:19:06,400 --> 00:19:08,040
gleichzeitig. 
Dann hab ich n Riesenproblem, 

414
00:19:08,040 --> 00:19:10,520
dann hab ich korrupte Daten und 
so weiter und ich muss dann als 

415
00:19:10,520 --> 00:19:12,720
Entwickler, wenn ich dann das so
mache mit Threads und so weiter 

416
00:19:12,720 --> 00:19:15,760
muss ich unglaublich aufpassen 
mit Locking und so und hab da 

417
00:19:15,760 --> 00:19:18,560
riesige Probleme, das ist in 
Note erst von vornherein 

418
00:19:18,560 --> 00:19:21,120
aussortiert, in der Sprache 
schon auf dem niedrigsten Level 

419
00:19:21,600 --> 00:19:25,400
weil und und das ist das, das 
ist da gibt es viele Artikel, 

420
00:19:25,400 --> 00:19:27,160
viele Leute haben das immer noch
nicht verstanden wie es genau 

421
00:19:27,160 --> 00:19:30,400
funktioniert, ist eigentlich gar
nicht so schwer alles. 

422
00:19:30,640 --> 00:19:34,040
Alles, was möglicherweise Zeit 
dauert, weswegen man quasi 

423
00:19:34,040 --> 00:19:36,480
parallel arbeiten wollte, 
nämlich zum Beispiel File 

424
00:19:36,480 --> 00:19:39,600
schreiben, file lesen, 
Netzwerkaktivität. 

425
00:19:39,600 --> 00:19:42,840
Ja, es gibt so blocking IO 
operations, sag ich mal. 

426
00:19:42,880 --> 00:19:46,480
Ja, die werden quasi alle 
Nebenläufig gemacht, aber das 

427
00:19:46,480 --> 00:19:49,840
macht schon den No TS selber in 
dem Event loop ja ich trigger 

428
00:19:49,840 --> 00:19:52,720
das nur an, ich sag quasi nur in
no TS ich möchte jetzt ein File 

429
00:19:52,720 --> 00:19:56,480
schreiben, leg los, ja und jetzt
wartet aber nicht die 

430
00:19:56,480 --> 00:19:58,840
Programmiersprache bis das file 
fertig ist und dann kann ich 

431
00:19:58,840 --> 00:20:00,320
überhaupt das nächste 
Verarbeiten. 

432
00:20:00,640 --> 00:20:04,720
Sondern ich sag leg los und dann
sag ich, ruf mich quasi zurück, 

433
00:20:04,960 --> 00:20:07,200
gib mir callback. 
Das Wort Callback ist ganz 

434
00:20:07,200 --> 00:20:08,880
wichtig, ist Callback 
implementiert. 

435
00:20:09,200 --> 00:20:11,960
Wenn du damit fertig bist, ja 
und dann geh ich an dieser 

436
00:20:11,960 --> 00:20:15,600
Stelle weiter und übernehme den 
Programmfluss ja, während aber 

437
00:20:15,600 --> 00:20:17,560
das file geschrieben wird, kann 
ich wirklich alles mögliche 

438
00:20:17,560 --> 00:20:18,840
andere machen. 
Ja dann kann ich nämlich zum 

439
00:20:18,840 --> 00:20:20,400
Beispiel den nächsten, 
übernächsten und den dritten 

440
00:20:20,400 --> 00:20:23,040
Request schon entgegennehmen. 
Ja dann bleibt bleibt meine 

441
00:20:23,040 --> 00:20:25,200
Anwendung nicht stehen, die 
bleibt responsiv ja also das 

442
00:20:25,200 --> 00:20:29,120
Node GS arbeitet. 
Und aber gleichzeitig führt das 

443
00:20:29,120 --> 00:20:31,200
alles im Single Thread auf. 
Aus ja, aber du? 

444
00:20:31,800 --> 00:20:34,800
Kannst es nicht machen. 
Wenn jetzt dein deine erste. 

445
00:20:34,880 --> 00:20:37,440
Also wenn jetzt deine zweite 
Operation abhängig wäre von 

446
00:20:37,440 --> 00:20:39,360
einer ersten, dann musst du es 
halt einfach so programmieren, 

447
00:20:39,680 --> 00:20:41,680
dass es erst nach dem Callback 
Weiterginge. 

448
00:20:41,680 --> 00:20:44,640
Zum Beispiel ganz genau. 
Ja, da würdest du genau so macht

449
00:20:44,640 --> 00:20:47,360
man das und dann würde man quasi
ne Event chain, eine callback 

450
00:20:47,360 --> 00:20:50,800
Chain aufbauen. 
Es war auch am Anfang n Problem,

451
00:20:50,800 --> 00:20:53,480
dann würdest du sagen wenn jetzt
n zweites Event ist das warten 

452
00:20:53,480 --> 00:20:56,160
muss bis das erste fertig ist, 
dann würdest du quasi sagen wenn

453
00:20:56,160 --> 00:20:59,040
du das zurückkommt. 
Ne, das baut man tatsächlich so 

454
00:20:59,040 --> 00:21:02,160
auf mit so einem Zen ja oder 
einem Callback on und so weiter 

455
00:21:02,160 --> 00:21:05,040
dann schreibst du quasi den 
nächsten Block in einen Händler 

456
00:21:05,040 --> 00:21:07,560
rein, ne ganz am Anfang sah es 
auch mal furchtbar aus, weil 

457
00:21:07,560 --> 00:21:09,520
dann kriegst du so ganz viele 
verschachtelte Klammern. 

458
00:21:09,520 --> 00:21:12,160
Ja du sagst halt, mach mal das 
und wenn das fertig ist mach mal

459
00:21:12,160 --> 00:21:13,840
das und wenn das fertig ist mach
mal das. 

460
00:21:13,840 --> 00:21:18,160
Also wenn du dann so 4567 
aufeinander aufbauende aber 

461
00:21:18,160 --> 00:21:21,800
asynchrone Events hast, dann 
hast du so nen so ne man nennt 

462
00:21:21,800 --> 00:21:24,640
das auch callback hell ja das 
ist ja die die callback Hölle 

463
00:21:24,640 --> 00:21:27,000
ja. 
Weil das ist auch sehr schwer zu

464
00:21:27,000 --> 00:21:28,120
lesen. 
Das macht es auch, das Macht es 

465
00:21:28,120 --> 00:21:29,920
auch nicht gerade einfach beim 
Programmieren und dann kannst du

466
00:21:29,920 --> 00:21:32,160
auch schnell dir mal n paar 
Fehler ein einheimsen, ne? 

467
00:21:32,680 --> 00:21:33,760
OK, ja, die gibt es so nicht 
mehr. 

468
00:21:33,760 --> 00:21:36,000
Die Callback hell, weil das 
jetzt so n bisschen anders 

469
00:21:36,400 --> 00:21:38,920
dargestellt wird gustas. 
Richtig, wir nehmen, wir nehmen 

470
00:21:38,920 --> 00:21:41,240
das Mal vorweg an der Stelle, 
weil jetzt sind wir da gerade 

471
00:21:41,240 --> 00:21:43,720
tief drin. 
Das Schwierige ist das, das muss

472
00:21:43,720 --> 00:21:45,480
man jetzt auch noch mal sagen, 
ganz grundsätzlich, das 

473
00:21:45,480 --> 00:21:48,880
Schwierige ist ja wenn ich jetzt
nen wenn ich jetzt sage pass mal

474
00:21:48,880 --> 00:21:51,320
auf schreib mal das file, lass 
mich jetzt in Ruhe, ich mach 

475
00:21:51,320 --> 00:21:53,600
jetzt was anderes, springe 
irgendwo andersrum im Code, 

476
00:21:53,600 --> 00:21:55,840
mache andere Sachen. 
Und dann irgendwann kommt 

477
00:21:55,840 --> 00:21:58,120
dieses, kommt diese Nachricht 
zurück, so hab das file fertig 

478
00:21:58,120 --> 00:21:59,200
geschrieben. 
Was willst denn jetzt? 

479
00:21:59,200 --> 00:22:02,080
Ja dann, dann hatten wir das 
früher halt in so einem Callback

480
00:22:02,080 --> 00:22:04,800
gemacht und das Problem mit dem 
Callback ist du musst dann, du 

481
00:22:04,800 --> 00:22:07,360
musst ja quasi deine Variablen 
und so weiter wenn du 

482
00:22:07,360 --> 00:22:09,040
programmierst, dann hast du ja 
auch was um dich rum. 

483
00:22:09,040 --> 00:22:12,240
Ja du bist ja in einem Kontext, 
ja du musst den Kontext switchen

484
00:22:12,240 --> 00:22:15,520
quasi ja eben Grad warst du noch
und hast irgendwie nen hast du 

485
00:22:15,520 --> 00:22:18,000
Server irgendwie nen Aufruf vom 
Client entgegengenommen und 

486
00:22:18,000 --> 00:22:20,880
jetzt sagt dir auf einmal dein 
Programm Ah übrigens das File 

487
00:22:20,880 --> 00:22:23,400
ist fertig geschrieben so jetzt 
springst du in ne ganz andere 

488
00:22:23,400 --> 00:22:25,080
Welt. 
Jetzt musst du da aber die 

489
00:22:25,080 --> 00:22:27,760
ganzen Variablen und so weiter 
wieder haben, die du damals 

490
00:22:27,760 --> 00:22:29,360
brauchtest als du weggesprungen 
bist. 

491
00:22:30,160 --> 00:22:32,000
Ne bist du. 
Du kannst dir fast vorstellen 

492
00:22:32,000 --> 00:22:34,600
wie Räume irgendwie ne du bist 
in dem einen Raum sagst so Pass 

493
00:22:34,600 --> 00:22:37,600
auf, ich Feuer an so jetzt laufe
ich irgendwie rüber, mach ganz 

494
00:22:37,600 --> 00:22:40,760
was anderes und dann drüben 
pfeift der Kessel ja Tee ist 

495
00:22:40,760 --> 00:22:43,320
fertig, jetzt musst du in den 
Raum zurück musst du überlegen, 

496
00:22:43,320 --> 00:22:46,000
was wolltest du eigentlich 
machen ja ah den Tee irgendwie 

497
00:22:46,000 --> 00:22:48,120
in in ins Glas schütten und so 
weiter dann brauchst du jetzt 

498
00:22:48,120 --> 00:22:50,640
wieder dein Glas und alles um 
dich rum das sind die das sind 

499
00:22:50,640 --> 00:22:52,080
die Variablen die du brauchst, 
ja. 

500
00:22:52,800 --> 00:22:55,120
Das war halt früher sehr 
aufwendig mit diesen Callbacks 

501
00:22:55,120 --> 00:22:57,440
zu machen. 
Und jetzt gibt es das Async 

502
00:22:57,440 --> 00:23:00,000
Away, was heißt jetzt, das gibt 
es auch schon ne ganze Weile, 

503
00:23:00,000 --> 00:23:02,320
ich hab es mir glaub ich auf 
meinen Spicker geschrieben, ich 

504
00:23:02,960 --> 00:23:06,160
muss gucken mit ES 6 ist es 
gekommen jetzt müsst ich fragen 

505
00:23:06,160 --> 00:23:09,000
wann ist ES 6 rausgekommen weiß 
ich nicht hab ich grad nicht auf

506
00:23:09,000 --> 00:23:11,840
den Zettel, können wir 
vielleicht noch mal googeln aber

507
00:23:11,840 --> 00:23:15,120
jetzt kannst du zum Beispiel 
sagen also du sagst zum Beispiel

508
00:23:15,120 --> 00:23:17,360
Async an die Funktion dran, das 
heißt so viel wie. 

509
00:23:17,840 --> 00:23:20,560
Kann sein, dass ich hier mal 
wegspringe ja und komme wieder 

510
00:23:20,560 --> 00:23:23,840
das das das das passiert jetzt 
mal hier da da da weiß auch 

511
00:23:23,840 --> 00:23:26,120
schon jeder der das liest. 
OK hier sind hier sind Sachen, 

512
00:23:26,120 --> 00:23:28,000
hier sind irgendwelche 
asynchronen Sachen am Start. 

513
00:23:28,000 --> 00:23:32,880
Ja und jetzt sagst du nur noch 
away Right file und musst aber 

514
00:23:32,880 --> 00:23:34,960
nicht mehr irgendwie 
irgendwelche Klammern aufmachen 

515
00:23:34,960 --> 00:23:36,880
wenn dann und so weiter du 
schreibst einfach dann 

516
00:23:36,880 --> 00:23:40,080
untereinander und das Away das 
sieht so einfach du sagst 

517
00:23:40,080 --> 00:23:43,160
einfach nur away alles was halt 
irgendwie wartet da schreibst du

518
00:23:43,160 --> 00:23:46,560
halt away vor. 
Und wenn das fertig ist, also 

519
00:23:46,560 --> 00:23:48,400
wenn da, wenn eigentlich das 
System sagt, ja hab ich 

520
00:23:48,400 --> 00:23:51,600
geschrieben das file dann 
springt. 

521
00:23:52,080 --> 00:23:55,440
Das ist echt krass, dann springt
quasi der Code von alleine an 

522
00:23:55,440 --> 00:23:58,160
diese Stelle an dieses Away und 
macht in der nächsten Zeile 

523
00:23:58,160 --> 00:24:00,960
weiter, musst aber nicht 
irgendwelche komischen Punkt on 

524
00:24:00,960 --> 00:24:03,760
und irgendwelche Klammern machen
und dir da selber dort es es 

525
00:24:03,760 --> 00:24:05,560
ist. 
Du bist einfach dann da, das 

526
00:24:05,560 --> 00:24:08,320
heißt wenn du während du 
programmierst bleibst du beim 

527
00:24:08,320 --> 00:24:11,320
Teekochen in dem Raum, du 
schreibst alles hin away macht 

528
00:24:11,320 --> 00:24:14,240
das, Away macht das. 
Und du hast alles um dich rum 

529
00:24:14,240 --> 00:24:15,400
und musst dich um nichts 
kümmern. 

530
00:24:15,400 --> 00:24:19,520
Note CS löst es für dich, dass 
alle Variablen und alles wieder 

531
00:24:19,520 --> 00:24:22,360
richtig da ist, obwohl in echt 
was passiert ist? 

532
00:24:22,360 --> 00:24:24,360
Du warst zwischendurch gar nicht
in dem Code, es sieht so aus, 

533
00:24:24,360 --> 00:24:26,040
als würdest du das der 
Reihenfolge nachmachen, so 

534
00:24:26,040 --> 00:24:28,440
schreibst du es hin. 
Sieht so aus als würdest du die 

535
00:24:28,440 --> 00:24:31,200
ich Koch den Tee schüttchen ein 
und so weiter Aktion alles in 

536
00:24:31,200 --> 00:24:34,920
einem durchziehen tust du aber 
gar nicht, zwischendurch warst 

537
00:24:34,920 --> 00:24:37,240
du irgendwo weg ja aber es 
braucht dich nicht mehr 

538
00:24:37,240 --> 00:24:39,840
interessieren als Entwickler, 
das ist absolute Magic. 

539
00:24:40,360 --> 00:24:42,120
Du meinst denn zur Laufzeit 
warst du irgendwo weg? 

540
00:24:42,120 --> 00:24:46,640
Quasi ne ja genau ne OK, ja. 
Und und gleichzeitig ist es aber

541
00:24:46,640 --> 00:24:49,760
auch so, dass die Sachen schon 
alle nacheinander passieren. 

542
00:24:49,760 --> 00:24:52,160
Das ist auch noch so querky ja, 
also wir haben eine Single 

543
00:24:52,160 --> 00:24:55,440
Thread, wenn wir ausführen, das 
ist wichtig, also es gibt nur 

544
00:24:55,440 --> 00:24:58,880
eine, es passiert tatsächlich 
nicht echt was gleichzeitig, 

545
00:24:58,960 --> 00:25:02,640
sondern es wird nur so hart 
ineinander geschachtelt, dass es

546
00:25:02,960 --> 00:25:05,760
sich wie gleichzeitig anfühlt, 
das ist halt. 

547
00:25:06,160 --> 00:25:08,400
Das muss man einmal verstehen 
bei dieser Programmiersprache, 

548
00:25:08,400 --> 00:25:10,400
das ist, das habe ich vorher so 
auch noch nie gesehen. 

549
00:25:10,400 --> 00:25:13,320
Also Python hat das auch, war 
mit einer extra Bibliothek, da 

550
00:25:13,320 --> 00:25:15,120
muss ich das mal kurz 
vorstellen, dann kann ich 

551
00:25:15,120 --> 00:25:18,880
nämlich alles, was ein bisschen 
länger dauert, entkoppel ich 

552
00:25:18,880 --> 00:25:22,560
schmeiß ich weg mit einem Wait 
und alles was schnell ist, das 

553
00:25:22,640 --> 00:25:25,000
da springe ich einfach andauernd
durch den Code hin und her, wie 

554
00:25:25,000 --> 00:25:28,360
ich es gerade brauche, das heißt
ich kann den einen CPU den ich 

555
00:25:28,360 --> 00:25:32,680
hab der da auch drauf brennt 
voll auslasten wird ultraschnell

556
00:25:32,680 --> 00:25:35,360
ja obwohl ich nur einen Thread 
hab in meinem Prozess ja. 

557
00:25:36,000 --> 00:25:38,160
Das ist richtig cool. 
Ja, das das habe ich so noch in 

558
00:25:38,160 --> 00:25:40,280
keiner anderen Sprache gesehen 
und deswegen sagt man auch, ist 

559
00:25:40,280 --> 00:25:44,560
noji er ist so super geeignet 
für so High Availability und und

560
00:25:44,560 --> 00:25:48,480
für so massive Webapplikationen,
weil ich halt, weil ich halt den

561
00:25:48,480 --> 00:25:51,600
Code, den ich schreibe, einfach 
weil ich es so Hinschreibe ist, 

562
00:25:51,600 --> 00:25:53,920
der optimiert sich von alleine 
und macht dann alles mögliche 

563
00:25:53,920 --> 00:25:56,400
fast gleichzeitig schon 
hintereinander, aber so gut 

564
00:25:56,400 --> 00:25:59,080
verschachtelt, dass ich alles 
voll auslasten kann wollen. 

565
00:26:00,480 --> 00:26:04,640
Wir jetzt mehrere CPUS hätte. 
Braucht es denn einfach gar 

566
00:26:04,640 --> 00:26:06,000
nicht oder macht es nicht 
besser? 

567
00:26:06,080 --> 00:26:08,640
Macht es nicht besser, wenn du 
jetzt n eigenen wenn du nen Note

568
00:26:08,640 --> 00:26:10,560
JS Prozess hast. 
Ja der läuft auf dem Singles 

569
00:26:10,560 --> 00:26:12,720
Fett, aber jetzt sag ich noch 
was neues und was Spannendes. 

570
00:26:12,800 --> 00:26:15,400
Das ist ja halt nen 
Liebespärchen, sind ja 

571
00:26:15,400 --> 00:26:18,680
Microservices Note GS ja hier 
kommt hier trifft sich hier 

572
00:26:18,680 --> 00:26:21,040
treffen sich 2 Konzepte die wie 
gemacht sind füreinander dann 

573
00:26:21,040 --> 00:26:24,160
ich also ganz viele meiner 
Docker Container sehen so aus, 

574
00:26:24,160 --> 00:26:28,080
ich starte da halt nen Note 
Index Punkt JS meistens das 

575
00:26:28,080 --> 00:26:30,160
Index JS ist quasi das 
Haupteintrittspfeil. 

576
00:26:30,880 --> 00:26:33,680
Und dann läuft und man und die 
Best Practice vom vom Docker 

577
00:26:33,680 --> 00:26:36,640
heißt Mach einen Prozess in 
einem Container. 

578
00:26:36,800 --> 00:26:39,960
Nicht viele, also ein Prozess, 
ein Noteprozess läuft im 

579
00:26:39,960 --> 00:26:42,600
Dockercontainer so, und wenn ich
jetzt viele brauche, nehm ich 

580
00:26:42,600 --> 00:26:45,280
halt ganz viele Microservices 
hin, ne und das skaliert das 

581
00:26:45,280 --> 00:26:48,560
alles ganz wunderbar und ich hab
endlich als Programmierer hab 

582
00:26:48,560 --> 00:26:52,640
ganz viel Scheiß von mir 
abgestriffen weil ich nicht mehr

583
00:26:52,640 --> 00:26:55,160
mich mit diesem ganzen Threading
und so weiter bemühen muss, 

584
00:26:55,160 --> 00:26:58,640
dadurch krieg ich ja nen nen nen
unglaublich responsive 

585
00:26:58,640 --> 00:27:03,760
unglaublich schnelle App hin. 
Ohne ohne dass ich extrem krass 

586
00:27:03,760 --> 00:27:05,880
mit mit mit Logs und so, weil 
ich kenne beide Welten. 

587
00:27:05,880 --> 00:27:07,960
Ja, ich hab mal t plus plus 
programmiert, da gab es No GS 

588
00:27:07,960 --> 00:27:10,880
noch nicht und da haben wir auch
Web und nicht, also nicht Web, 

589
00:27:10,880 --> 00:27:13,440
aber netzwerktechnologie mit mit
vielen gleichzeitigen Sachen, da

590
00:27:13,440 --> 00:27:16,400
muss man Threads nehmen und dann
schreibst du quasi alles in 

591
00:27:16,400 --> 00:27:20,000
einem Ding das das hat dann was 
davon wenn du 8 CPUS hast weil 

592
00:27:20,000 --> 00:27:23,120
die laufen dann tatsächlich 
gleichzeitig, aber dann musst du

593
00:27:23,120 --> 00:27:25,360
in deinem Code. 
Dann passiert das auch, dass das

594
00:27:25,360 --> 00:27:27,360
springt, aber das kann 
tatsächlich gleichzeitig 

595
00:27:27,360 --> 00:27:30,120
gleichzeitig laufen, wirklich 
gleichzeitig ne das das springt 

596
00:27:30,120 --> 00:27:33,280
nicht hin und kommt wieder 
zurück, sondern die da donnern 2

597
00:27:33,280 --> 00:27:35,960
Züge übers Gleis gleichzeitig ja
und wenn du da nicht aufpassen 

598
00:27:35,960 --> 00:27:38,280
machst die Weichen nicht an die 
richtige Stelle dann und das 

599
00:27:38,280 --> 00:27:40,880
kriegst du vor allen Dingen nie 
raus, weil weil 

600
00:27:41,200 --> 00:27:43,960
gleichzeitigkeiten und so weiter
auch gerade wenn wir über Fans 

601
00:27:43,960 --> 00:27:46,880
sprechen, Gerrit, du weißt ja 
nicht wann die klicken, ne. 

602
00:27:47,360 --> 00:27:49,560
Und du, und es passiert ja immer
nur dann dann wirklich, was 

603
00:27:49,560 --> 00:27:51,920
gleichzeitig passiert. 
Das kannst du also ganz schlecht

604
00:27:51,920 --> 00:27:53,640
nachstellen. 
Reproduzierbarkeit ist das 

605
00:27:53,640 --> 00:27:56,360
Problem, ja, das sind so Bugs 
das das Schlimmste ist ja wenn 

606
00:27:56,360 --> 00:27:58,760
du im Entwickler sagst ja da ist
kaputt, es geht nicht, stürzt 

607
00:27:58,760 --> 00:28:02,200
manchmal ab, manchmal geht es n 
bisschen länger und manchmal 

608
00:28:02,200 --> 00:28:04,800
stürzt es ab, ja dann sitzt du 
da und du kannst ja überhaupt 

609
00:28:04,800 --> 00:28:07,920
erst mal was nur versuchen zu 
heilen wenn du es einmal selber 

610
00:28:07,920 --> 00:28:10,080
gesehen hast. 
Ja versuch mal sowas dann zu 

611
00:28:10,080 --> 00:28:12,560
sehen, ne? 
Das ist ganz furchtbar und da 

612
00:28:12,560 --> 00:28:14,960
sind große Systeme dran 
gescheitert, weil weil am Ende 

613
00:28:14,960 --> 00:28:17,440
dieses Matti Threading nicht 
mehr in den Griff bekommen 

614
00:28:17,520 --> 00:28:20,480
wurde. 
Das hat No JS mit der 

615
00:28:20,480 --> 00:28:23,240
Entstehung, mit der mit der 
Philosophie gleich mal 

616
00:28:23,240 --> 00:28:25,040
weggebügelt, aber das Problem 
gibt es nicht. 

617
00:28:25,520 --> 00:28:28,440
Das war wahrscheinlich auch n 
Hintergedanke davon nämlich. 

618
00:28:28,480 --> 00:28:30,800
Ganz genau. 
Das war nämlich die Phase, wo wo

619
00:28:30,800 --> 00:28:32,880
genau, wo ich gesagt Hab, am 
Anfang ist der Ryan Dahl 

620
00:28:32,880 --> 00:28:35,160
rumgelaufen, dann alles Mögliche
explodiert n huskill und so 

621
00:28:35,160 --> 00:28:38,240
weiter genau diese Sachen hat er
sich angeguckt und ich glaube 

622
00:28:38,240 --> 00:28:41,520
das war sein. 
Ja, die Spitze von dem, was er 

623
00:28:41,520 --> 00:28:43,520
sich so als Mathematiker 
ausgedacht hat, was es früher 

624
00:28:43,520 --> 00:28:45,800
braucht, hat er nicht ganz 
schlecht gemacht, würde ich 

625
00:28:45,800 --> 00:28:48,120
sagen. 
Ich hab noch gesehen, weil du, 

626
00:28:48,120 --> 00:28:51,080
weil du es gerade gesagt hast, 
Anwendungsfälle, Microservices. 

627
00:28:51,080 --> 00:28:55,920
Also es wäre besonders gut für 
Themen wie ja 

628
00:28:55,920 --> 00:28:59,440
echtzeitanwendungen auch gedacht
oder sowas wie websockets oder 

629
00:28:59,440 --> 00:29:03,280
so Apis damit zu programmieren 
und weniger gut für 

630
00:29:03,280 --> 00:29:07,200
rechenintensive Prozesse. 
Sowas wie Machine Learning oder 

631
00:29:07,200 --> 00:29:09,440
sowas, gerade wegen Ding Single 
Thread. 

632
00:29:09,680 --> 00:29:12,320
Ja, genau so. 
Ja, das kann man so sagen, das 

633
00:29:12,320 --> 00:29:14,320
ist so, ja, also es genau je 
nach. 

634
00:29:14,560 --> 00:29:17,440
Also wenn du jetzt zum Beispiel,
ich sag mal was KI ja, und das 

635
00:29:17,440 --> 00:29:20,320
sind ja so matrixoperationen, 
die kann, da kann ich quasi so 

636
00:29:20,320 --> 00:29:22,840
ne durchrechnung, kann ich halt 
stark parallelisieren, da hab 

637
00:29:22,840 --> 00:29:25,560
ich ne riesige Matrizen, die 
teile ich auf in in in in Teile 

638
00:29:25,560 --> 00:29:27,760
und dann können die gleichzeitig
rechnen und kommen zum Ergebnis 

639
00:29:28,240 --> 00:29:32,040
und dann hab ich ganz viel davon
wenn ich das halt 25 mit 25 Kern

640
00:29:32,040 --> 00:29:34,560
gleich deswegen mach ich das auf
Grafikkarten, das wird meistens.

641
00:29:35,040 --> 00:29:38,200
Mit 16017 1000 Threads 
gleichzeitig durchgezogen und 

642
00:29:38,560 --> 00:29:40,240
dann sind die fertig. 
Dann kommen die zum Ergebnis. 

643
00:29:40,240 --> 00:29:43,280
Ja das ist wäre genau der, das 
wäre genau die kontra 

644
00:29:43,280 --> 00:29:46,120
Eigenschaft von No GS macht das 
Macht no GS nicht, also es gibt 

645
00:29:46,120 --> 00:29:49,360
mittlerweile wenn du weißt was 
du tust, da kannst du auch 

646
00:29:49,360 --> 00:29:52,760
Threads aufmachen in No GS und 
dann Multi Thread arbeiten, das 

647
00:29:52,760 --> 00:29:54,960
heißt mittlerweile ist es sogar 
so, dass No GS genauso wie 

648
00:29:54,960 --> 00:29:57,960
Python auch für für Number 
Counching genommen werden kann 

649
00:29:57,960 --> 00:30:01,280
würde ich sagen, das ist aber 
aus der ich sag mal so aus der 

650
00:30:01,280 --> 00:30:03,920
aus der Denkweise der Sprache 
ist es eher optimiert für. 

651
00:30:04,200 --> 00:30:06,920
Für das, was du gesagt hast, 
Gerrit, also für für 

652
00:30:06,920 --> 00:30:10,120
Echtzeitanwendung, für reaktive 
Sachen und so weiter für fast IO

653
00:30:10,120 --> 00:30:12,400
und so und nicht so stark wie 
Python. 

654
00:30:12,400 --> 00:30:14,720
Aber auch das würde ich sagen, 
die Sprache ist mächtig genug, 

655
00:30:14,720 --> 00:30:19,120
sogar um das alles abzufräsen. 
Gut und jetzt noch mal noch was 

656
00:30:19,280 --> 00:30:21,000
kurz unter den Deckel geguckt, 
das will ich auch noch mal 

657
00:30:21,000 --> 00:30:24,960
sagen, die den Note JS ist zwar 
eine Programmiersprache, aber 

658
00:30:24,960 --> 00:30:27,560
eigentlich basiert die auf C 
plus plus C Plus ist auch eine 

659
00:30:27,560 --> 00:30:29,920
Programmiersprache die eine der 
Ältesten. 

660
00:30:30,400 --> 00:30:33,280
Und im Prinzip ist, wenn man 
jetzt ganz krass ist, könnte man

661
00:30:33,280 --> 00:30:36,160
sagen, Noja ist ein cooles 
Framework auf C plus plus, weil 

662
00:30:36,640 --> 00:30:39,920
sowohl die V 8 Engine ist in C 
plus plus geschrieben, und zwar 

663
00:30:39,920 --> 00:30:43,320
so richtig pures, krasses C plus
Plus und deswegen läuft auch die

664
00:30:43,320 --> 00:30:46,400
V 8 Engine auf Browsern auf 
allen Betriebssystemen im 

665
00:30:46,440 --> 00:30:50,600
Android und im und im Linux und 
dem Windows und so weiter und 

666
00:30:50,600 --> 00:30:53,120
auch der Event Loop der Lib UV 
ist auch in C plus plus 

667
00:30:53,120 --> 00:30:56,640
geschrieben und Noja selber die,
die die ganzen Sachen sind auch 

668
00:30:56,640 --> 00:30:58,240
in C plus plus geschrieben, das 
heißt? 

669
00:30:58,600 --> 00:31:01,440
Also man hat, man kann, man kann
viel einfacher was bedienen, 

670
00:31:01,440 --> 00:31:05,600
aber drunter ist es sehr 
schnelles C plus Plus und damit 

671
00:31:05,600 --> 00:31:08,080
wird es auch und weil C plus 
plus an sich die Eigenschaft 

672
00:31:08,080 --> 00:31:11,480
hat, dass es plattformunabhängig
ist, weil Hardware nah läuft 

673
00:31:11,480 --> 00:31:15,280
halt Node js auf Windows auf Mac
OS auf Linux und so weiter was 

674
00:31:15,280 --> 00:31:18,640
ist halt auch was glaube ich 
auch zu der Popularität 

675
00:31:18,640 --> 00:31:20,840
beiträgt, denn das ist auch 
nicht Standard, dass eine 

676
00:31:20,840 --> 00:31:24,120
Programmiersprache auf allen 
Betriebssystemen da ist. 

677
00:31:24,120 --> 00:31:26,480
Ja also wir haben jaunsere.net 
Kollegen von Windows. 

678
00:31:26,960 --> 00:31:28,360
C. 
Sharp und so weiter das geht 

679
00:31:28,360 --> 00:31:30,480
zwar langsam auch, aber das da 
brauchst du nicht so groß 

680
00:31:30,560 --> 00:31:33,360
anfangen mit Linux, ja. 
Aber ist das nicht sowieso 

681
00:31:33,360 --> 00:31:37,360
hinfällig, wenn du es im 
Microservice benutzt oder ist 

682
00:31:37,360 --> 00:31:39,600
das da auch noch relevant? 
Also im Docker jetzt oder so? 

683
00:31:39,920 --> 00:31:42,760
Na ja, im Ja. 
Der Docker, der, der ist ja 

684
00:31:42,760 --> 00:31:44,960
keine virtuelle Maschine, der 
kann dir kein Windows 

685
00:31:44,960 --> 00:31:47,920
simulieren, ne, das ist also 
hilft es dir, hilft dir nicht, 

686
00:31:48,560 --> 00:31:51,360
du kannst jetzt nicht einfach CC
Sharp in den Docker packen und 

687
00:31:51,360 --> 00:31:53,840
dann den Linux ausführen, das 
geht schon nicht, ja. 

688
00:31:54,320 --> 00:31:56,720
Ah OK, ist es OK. 
Du brauchst also schon. 

689
00:31:57,040 --> 00:32:01,280
Bei C Sharp bräuchtest du n 
Windows unterm Docker, um es im 

690
00:32:01,280 --> 00:32:06,040
Docker auszuführen, während es 
beim No JS eigentlich egal ist, 

691
00:32:06,040 --> 00:32:09,560
was dann quasi wo der Docker was
drauf läuft, dann ja. 

692
00:32:09,560 --> 00:32:12,800
Also C Sharp will halt, er will 
halt Windows um sich rum sehen, 

693
00:32:12,800 --> 00:32:15,280
sag ich mal und und kennt die 
Windows registrieren solche 

694
00:32:15,280 --> 00:32:17,000
Eigenschaften die es gar nicht 
gibt, den anderen. 

695
00:32:17,040 --> 00:32:19,320
Aber da muss man auch aufpassen 
das.net Core und so weiter die 

696
00:32:19,320 --> 00:32:21,880
entwickeln sich auch weg davon 
das das das dürfen wir gar nicht

697
00:32:21,880 --> 00:32:23,680
ist nicht richtig wenn wir jetzt
sagen das funktioniert nicht 

698
00:32:23,680 --> 00:32:26,720
unter Linux mittlerweile. 
Sind die haben, die sind ja auch

699
00:32:26,720 --> 00:32:29,120
angekommen und du kannst es in 
großen Teilen unter Linux 

700
00:32:29,120 --> 00:32:31,560
verwenden. 
Ja, aber das war erstmal nicht 

701
00:32:31,560 --> 00:32:34,080
die erste Priorität sag ich mal.
Windows hat halt das.net 

702
00:32:34,080 --> 00:32:36,760
Framework gemacht für Windows 
und Microsoft Hemisphäre. 

703
00:32:36,800 --> 00:32:40,000
Ja und das jetzt wird der Druck 
so groß, dass man das halt sich 

704
00:32:40,000 --> 00:32:43,280
sich hinbewegt sag ich mal 
während Note GS von vornherein 

705
00:32:43,280 --> 00:32:46,320
drauf angelegt war halt überall 
cool zu laufen ne ja das ist 

706
00:32:46,320 --> 00:32:49,240
alles nicht so riesig, ja das 
ist diese lib UV ich hab also 

707
00:32:49,240 --> 00:32:52,520
ich hab sowohl die v 8 Engine in
teilen gelesen in den Source 

708
00:32:52,520 --> 00:32:55,160
Code und auch auch die Lib UV 
das ist gar nicht. 

709
00:32:55,520 --> 00:32:57,360
Das ist gar nicht so viel. 
Krass ist also, das ist gar 

710
00:32:57,360 --> 00:32:59,160
nicht so viel Code, ja, ist 
einfach nur sehr gut 

711
00:32:59,160 --> 00:33:02,080
geschrieben, ne. 
Das heißt, alle, die jetzt noch 

712
00:33:02,160 --> 00:33:05,520
no JS vorantreiben und 
entwickeln und und Main Tain und

713
00:33:05,520 --> 00:33:08,640
so weiter sind einfach auch sehr
gute C plus plus Entwickler. 

714
00:33:08,640 --> 00:33:11,080
Ja, die, die die Sprache 
weiterbringen, die müssen C plus

715
00:33:11,080 --> 00:33:14,800
plus können. 
Ja genau ja jeden Fall, das würd

716
00:33:14,800 --> 00:33:16,920
ich schon sagen, jedenfalls wenn
du, wenn du wenn du tief unten 

717
00:33:16,920 --> 00:33:19,760
noch was machen willst, ja und 
in so browserentwickler und so 

718
00:33:19,760 --> 00:33:22,240
Google, da gibt es Leute, die 
wissen ganz genau was man C plus

719
00:33:22,240 --> 00:33:23,360
machen muss. 
Ja, das ist. 

720
00:33:23,560 --> 00:33:24,800
Sonst kriegt man den Speed nicht
hin. 

721
00:33:24,800 --> 00:33:27,040
Also es ist immer noch so 
heutzutage, das ist auch wahr 

722
00:33:27,040 --> 00:33:29,360
für alles andere und auch ist. 
In Python ist das so, ja in 

723
00:33:29,600 --> 00:33:31,680
Python die Komponenten die 
schnell sein müssen, das ist in 

724
00:33:31,680 --> 00:33:34,360
C oder C plus plus geschrieben, 
es ist einfach so, dass 

725
00:33:34,360 --> 00:33:37,640
heutzutage die schnellsten, also
wenn ich wenn ich richtig 

726
00:33:37,640 --> 00:33:39,680
hochperformante Algorithmen 
machen will, dann schreib ich es

727
00:33:39,680 --> 00:33:42,240
halt in C oder C plus plus hin, 
was anderes gibt es eigentlich 

728
00:33:42,240 --> 00:33:45,040
nicht, ja und dann da drüber 
werden halt Sprachen entwickelt,

729
00:33:45,040 --> 00:33:47,160
die es halt den Entwicklern 
zugänglicher machen, weil in C 

730
00:33:47,160 --> 00:33:50,000
und C plus Plus zu schreiben ist
halt NN harter Tobak, ja. 

731
00:33:50,480 --> 00:33:53,440
Aber das coole ist auch, und das
hab ich mal länglich gemacht, 

732
00:33:53,440 --> 00:33:56,800
ich mich mal bestimmt n Jahr 
damit beschäftigt und da Note JS

733
00:33:56,800 --> 00:33:59,600
im Prinzip in C plus plus 
geschrieben ist, kannst du auch 

734
00:33:59,600 --> 00:34:02,720
wunderbar Note JS und C plus 
Plus zusammenbringen. 

735
00:34:02,720 --> 00:34:05,400
Ja, also existierenden C plus 
plus Code über Note JS 

736
00:34:05,400 --> 00:34:08,000
aufzurufen da einzubinden und so
weiter wenn man da mal tief 

737
00:34:08,000 --> 00:34:11,520
reingeguckt hat ist gar nicht so
kompliziert, ja dann muss man 

738
00:34:11,520 --> 00:34:13,920
kurz mit diesen Threads und dem 
Event Loop einmal kurz 

739
00:34:13,920 --> 00:34:17,040
klarkommen im Kopf wie man das 
Zusammenkabelt und dann geht das

740
00:34:17,040 --> 00:34:20,760
ja das mal für alle gesagt die. 
Die und wir hatten neulich mal n

741
00:34:20,760 --> 00:34:23,600
Podcast, da hatten wir Legacy C 
plus plus Anwendung und so. 

742
00:34:24,080 --> 00:34:26,440
Wenn ich meinen ganz alten Kram 
der Millionenzahlen C plus Plus 

743
00:34:26,440 --> 00:34:29,080
hat, irgendwie porten will, da 
kann man mal drüber nachdenken, 

744
00:34:29,080 --> 00:34:32,560
da no GS dran zu flanschen und 
dann einfach den Kram zugänglich

745
00:34:32,560 --> 00:34:35,199
machen über ne neue Sprache. 
Ja und den ganzen alten Kram 

746
00:34:35,199 --> 00:34:38,320
dazulassen, das ist gar nicht so
kompliziert, ja das geht schon. 

747
00:34:39,120 --> 00:34:40,880
Ja, das kommt mir auch bekannt 
vor, als hätten wir da schon mal

748
00:34:40,880 --> 00:34:42,760
drüber. 
Gesprochen haben wir glaub ich 

749
00:34:42,760 --> 00:34:45,199
schon mal. 
OK, das sind also. 

750
00:34:45,760 --> 00:34:49,040
Die Besonderheiten Single Thread
und geschrieben in C plus plus 

751
00:34:49,199 --> 00:34:51,360
ja, unter der Haube hast du 
gesagt. 

752
00:34:51,679 --> 00:34:54,239
Ja, Single Thread ist die 
Besonderheit und das Eventing 

753
00:34:54,400 --> 00:34:57,640
mit von vornherein eingedacht ja
die V 8 Engine, die ist 

754
00:34:57,640 --> 00:35:01,080
interpretiert just in Time, die 
die gleiche Engine ist wie im 

755
00:35:01,080 --> 00:35:04,520
Browser, was es auch cool macht,
wenn ich nicht hier Webanwendung

756
00:35:04,520 --> 00:35:06,480
aus einer Hand machen will, dann
weiß ich schon genau das 

757
00:35:06,480 --> 00:35:08,720
funktioniert alles gut zusammen,
als Entwickler ist das super 

758
00:35:08,720 --> 00:35:11,960
cool wenn ich full Stack bin, 
also wenn ich frontend also im 

759
00:35:11,960 --> 00:35:13,760
Browsercode schreibe und im 
Backend. 

760
00:35:14,040 --> 00:35:16,320
Fühlt sich ja alles gleich an. 
Ja, super cool. 

761
00:35:16,800 --> 00:35:19,240
Jetzt sag noch mal ganz kurz, 
vielleicht hab ich es verpasst. 

762
00:35:19,240 --> 00:35:21,280
Aber was ist denn jetzt 
eigentlich der große Unterschied

763
00:35:21,280 --> 00:35:25,200
zwischen Java Script und No JS? 
Also außer das eine ist für n 

764
00:35:25,200 --> 00:35:27,520
Browser, das andere für n Server
oder für für das Back End 

765
00:35:27,520 --> 00:35:29,640
versteh ich schon, aber 
inwiefern sich das denn jetzt 

766
00:35:30,080 --> 00:35:34,000
anders aus also gibt es ne 
andere Funktion, neue Funktion, 

767
00:35:34,000 --> 00:35:36,160
weitere weniger oder es ist ne 
ganz andere Sprache. 

768
00:35:36,400 --> 00:35:38,320
Nee, überhaupt nicht. 
Es ist die gleiche Sprache, also

769
00:35:38,320 --> 00:35:40,960
es ist im Prinzip, also wenn du 
Java Script kannst, dann kannst 

770
00:35:40,960 --> 00:35:44,080
du no JS programmieren. 
Das heißt eigentlich nur no JS, 

771
00:35:44,080 --> 00:35:47,000
weil du, weil du javascript pur 
funktioniert einfach nicht. 

772
00:35:47,000 --> 00:35:48,720
Du brauchst irgendwas was das 
ausführt, die 

773
00:35:48,720 --> 00:35:51,360
Ausführungsumgebung ja, also der
Unterschied zwischen javascript 

774
00:35:51,360 --> 00:35:53,440
ist, dass die 
Ausführungsumgebung der Browser 

775
00:35:53,440 --> 00:35:56,880
ist und im Prinzip ist No JS 
auch javascript mit 

776
00:35:56,880 --> 00:36:01,040
ausführungsumgebung, lokale V 8 
Engine und Lip UV Loop, der 

777
00:36:01,040 --> 00:36:03,880
sowas so ne Art Browser 
simuliert, wenn du so möchtest. 

778
00:36:03,880 --> 00:36:05,560
Ja wir brauchen den ganzen 
Browser nicht weil wir nichts 

779
00:36:05,560 --> 00:36:07,600
rendern wollen, wir wollen ja 
nur rechnen auf dem Backend so 

780
00:36:07,600 --> 00:36:10,840
ja und im Prinzip ist aber die. 
Wie soll ich sagen, die also 

781
00:36:10,880 --> 00:36:13,320
wenn du jetzt sagst Englisch, 
französisch oder oder Deutsch 

782
00:36:13,320 --> 00:36:15,680
oder irgend so was, dann ist 
halt und wir sagen jetzt von 

783
00:36:15,680 --> 00:36:17,840
javascript ist Englisch, dann 
sprichst du Englisch im Browser 

784
00:36:17,840 --> 00:36:19,440
und du sprichst auch Englisch im
Backend. 

785
00:36:19,440 --> 00:36:22,160
Du hast halt nur du hast halt 
nur jemand anders um dich rum 

786
00:36:22,160 --> 00:36:25,040
sag ich mal der dich aufnimmt ja
da gibt es nur da gibt es nur 

787
00:36:25,040 --> 00:36:28,000
feine Unterschiede, das gibt ein
paar kleine Unterschiede auch in

788
00:36:28,000 --> 00:36:31,600
der Sprache, aber die sind 
minimal, dass du sofort klar. 

789
00:36:32,200 --> 00:36:34,160
Größter Unterschied ist, da 
können wir auch weitermachen. 

790
00:36:34,160 --> 00:36:36,880
Ist ist wie die Module, also wie
die Abhängigkeiten geladen 

791
00:36:36,880 --> 00:36:39,440
werden, und das ist auch gerade 
n großes Ärgernis, muss ich 

792
00:36:39,440 --> 00:36:42,000
sagen. 
Also für mich jedenfalls, denn 

793
00:36:42,000 --> 00:36:46,200
wenn du im im im, wenn du also 
entweder eigene Module die du 

794
00:36:46,200 --> 00:36:48,240
schreibst, ne du kannst, du 
schreibst ja nicht den Code in 

795
00:36:48,240 --> 00:36:50,240
einem riesigen File runter, das 
machen wir ja nicht mehr, wir 

796
00:36:50,240 --> 00:36:53,320
schreiben wir, wir separieren ja
unsere Codes Stücke in Files. 

797
00:36:53,920 --> 00:36:55,880
Und auch andere, wenn die 
irgendwie was geschrieben haben,

798
00:36:55,880 --> 00:36:57,760
was du dann reinlädst, das holst
du dann über so ein Pakete 

799
00:36:57,760 --> 00:37:00,240
Manager rein, aber das sind auch
ein Files und dann sagst du halt

800
00:37:00,240 --> 00:37:02,840
quasi ganz am Anfang von deinem 
File, wenn du Code schreibst, 

801
00:37:02,840 --> 00:37:06,800
dann sagst du und das sagst du 
im Browser Import irgendwas ja 

802
00:37:06,800 --> 00:37:10,160
import this from that zum 
Beispiel ja also importier mir 

803
00:37:10,160 --> 00:37:14,320
mal die klasse irgendwas von und
dann sagst du welches file das 

804
00:37:14,320 --> 00:37:17,760
ist ja so und das ist das 
Moduloading wenn man so schön 

805
00:37:17,760 --> 00:37:21,400
sagt ja also das einladen von 
existierenden anderen Modulen 

806
00:37:21,400 --> 00:37:24,320
die irgendwo rumkleben ja. 
Es funktioniert über dieses 

807
00:37:24,320 --> 00:37:28,000
Import from und kann asynchron 
auch sein. 

808
00:37:28,000 --> 00:37:31,000
Hatte ich ganz am Anfang hatte 
ich gesagt, schon wir können ja 

809
00:37:31,000 --> 00:37:35,680
asynchron File lesen und 
schreiben und im Java Script das

810
00:37:35,680 --> 00:37:38,800
standardisiert ist über dieses 
Ecma, über diesen ecma Standard 

811
00:37:38,800 --> 00:37:42,800
im Browser ist es so, dass halt 
auch das Laden sogar innerhalb 

812
00:37:42,800 --> 00:37:45,600
der Sprache, also das weiter 
Reinladen von weiteren Source 

813
00:37:45,600 --> 00:37:49,040
Code für den Java Script Code 
selbst ist halt auch asynchron, 

814
00:37:49,040 --> 00:37:53,760
ja kannst du auch awaten so. 
Das hat halt jetzt im Detail 

815
00:37:53,760 --> 00:37:59,120
viele Vorteile und aber leider 
jetzt muss man gucken, war no JS

816
00:37:59,120 --> 00:38:02,640
das damals nicht so angelegt und
das nennt man CJS Common Java 

817
00:38:02,640 --> 00:38:06,880
Script CJS und da hat man 
hingeschrieben von der Syntax 

818
00:38:06,880 --> 00:38:11,600
her constant this ist gleich 
require that ganz oben und das 

819
00:38:11,600 --> 00:38:12,880
ist n kleiner feiner 
Unterschied. 

820
00:38:12,880 --> 00:38:16,360
Ja, aber das am Ende tut es am 
am Ende das gleiche, ich will 

821
00:38:16,360 --> 00:38:18,840
halt einfach dieses blöde Pfeil 
da haben und dann arbeiten mit 

822
00:38:18,840 --> 00:38:21,280
dem Krams der da drinne ist. 
Ja in meinem Modul. 

823
00:38:21,840 --> 00:38:26,840
Aber entweder schreibe ich halt 
this la gleich require that oder

824
00:38:26,840 --> 00:38:29,600
ich schreibe halt import la from
irgendwas. 

825
00:38:29,600 --> 00:38:32,480
Ja, das Require ist leider 
synchron und das Import ist 

826
00:38:32,480 --> 00:38:35,680
leider asynchron, das Import ist
irgendwie egma Standard und das 

827
00:38:35,680 --> 00:38:39,680
Require kam irgendwie von LTS 
Altlast und das ist aber ein 

828
00:38:39,680 --> 00:38:41,600
Riesenproblem, weil die mögen 
sich beide nicht, du kannst es 

829
00:38:41,600 --> 00:38:44,560
nicht mischen in einem Projekt 
und jetzt gibt es so eine 

830
00:38:44,560 --> 00:38:48,240
Umbruchphase, dass immer mehr 
Abhängigkeiten dependencies, die

831
00:38:48,240 --> 00:38:50,960
du mit dem npm Pakete Manager 
runterladen kannst. 

832
00:38:51,440 --> 00:38:55,280
Das funktionierte, bis soll ich 
mal sagen, vor 2 Jahren musst du

833
00:38:55,280 --> 00:38:59,600
das alles mit Require laden im 
Node js safe und cool und alles 

834
00:38:59,600 --> 00:39:02,960
das gleiche und jetzt gibt es 
die ersten Pakete die modernen 

835
00:39:02,960 --> 00:39:06,160
jetzt hier auch gerade hier KI 
und so da geht es einfach nicht 

836
00:39:06,160 --> 00:39:09,040
mehr, da musst du mit dem Import
umhühnern aber wenn du jetzt 

837
00:39:09,040 --> 00:39:12,000
meinst du könntest eine Node 
Anwendung schreiben wo du das 

838
00:39:12,000 --> 00:39:14,240
einfach Bild durch die Gegend 
mischst, da kannst du dir in die

839
00:39:14,240 --> 00:39:16,520
Haare schmieren funktioniert 
nicht ja also das ist natürlich 

840
00:39:16,520 --> 00:39:19,440
ein großes Problem ne? 
Und es wird vom jeweiligen Paket

841
00:39:19,440 --> 00:39:21,240
vorgegeben, wie es zu 
importieren ist. 

842
00:39:21,280 --> 00:39:23,040
Oder? 
Ja, und die ganzen, also cool 

843
00:39:23,040 --> 00:39:25,040
die coolen Pakete, da kannst du,
da kannst du, da geht dann 

844
00:39:25,040 --> 00:39:27,600
beides, ist beides unterstützt, 
aber dann gibt es halt so Leute 

845
00:39:27,600 --> 00:39:29,680
die sagen, OK, hab ich keine 
Lust drauf, ich unterstütze halt

846
00:39:29,680 --> 00:39:33,600
nur noch das modernere und das 
ist das Eckma Script Style, also

847
00:39:33,600 --> 00:39:36,720
das ESM mit dem Import, das ist 
aber für No JR schon mal 

848
00:39:36,720 --> 00:39:39,360
ziemlich modern. 
Ja und es gibt natürlich, Oh, es

849
00:39:39,360 --> 00:39:41,520
gibt halt einfach so viel 
Abhängigkeiten, Gerrit, Du hast 

850
00:39:41,520 --> 00:39:44,760
ja gerne mal irgendwie. 
Nicht immer so 600 800 Dinger da

851
00:39:44,760 --> 00:39:47,040
drinne, ist ja keine Wenigkeit, 
gerade wenn du im Web bist. 

852
00:39:47,040 --> 00:39:50,960
Ja und die sind halt nicht alle 
schon alle ob das ist halt, das 

853
00:39:50,960 --> 00:39:53,280
ist halt so am langsam am 
Rüberschwimmen ja ist auch noch 

854
00:39:53,280 --> 00:39:56,000
gar nicht in der Community so 
klar, ob das wirklich sich dahin

855
00:39:56,000 --> 00:39:58,400
durchsetzt oder nicht, also das 
ist so ne ganz furchtbare 

856
00:39:58,400 --> 00:40:01,200
Zwischenphase, die wir da gerade
erleiden, ne und das macht es ja

857
00:40:01,320 --> 00:40:03,920
wenn wenn du n sehr großes 
Softwareprojekt hast, so wie wir

858
00:40:03,920 --> 00:40:06,880
das jetzt haben, ist das 
unglaublich schwierig, ja da 

859
00:40:07,600 --> 00:40:10,080
damit klarzukommen, ja da muss 
man muss man sagen, ja die 

860
00:40:10,080 --> 00:40:12,160
können wir dann nicht oder wir 
nehmen nur die oder irgendsowas 

861
00:40:12,280 --> 00:40:13,720
ja. 
Ich wollt Grad sagen, ist ja n 

862
00:40:13,720 --> 00:40:15,960
Ausschlusskriterium für manche 
erstmal. 

863
00:40:16,240 --> 00:40:18,520
Ja, oder es gibt dann wieder 
doch coole Sachen, das sag ich 

864
00:40:18,520 --> 00:40:20,800
jetzt mal hier auf der Tonspur, 
damit arbeiten wir auch, das 

865
00:40:20,800 --> 00:40:22,800
muss man, da muss ja jeder mal 
experimentieren, es gibt die 

866
00:40:22,800 --> 00:40:25,080
Firma Worstel oder werstel, ich 
weiß immer nicht, wie es 

867
00:40:25,080 --> 00:40:27,120
ausgesprochen wird, ich wollt es
mir vorher noch mal angucken, 

868
00:40:27,120 --> 00:40:30,520
aber VERCEL die find ich sowieso
cool, was die irgendwie mal. 

869
00:40:30,520 --> 00:40:32,400
Also ich, ich kenn ja die Firma 
also von innen nicht, aber ich 

870
00:40:32,400 --> 00:40:35,360
ich seh nur mal was da für 
Produkte rauskommen als Open 

871
00:40:35,360 --> 00:40:38,880
Source kram und so das ist der 
Wahnsinn, davon gibt es das Tool

872
00:40:38,880 --> 00:40:44,240
NCC und PKG. 
Und der NCC, das ist ne Art nimm

873
00:40:44,240 --> 00:40:46,720
hin den ganzen Javascript frei 
den ich hab und der baut dir das

874
00:40:46,720 --> 00:40:49,400
in ein großes File, also das das
Ganze brauchen wenn du irgendwie

875
00:40:49,400 --> 00:40:50,880
weiter das weiterverarbeiten 
willst. 

876
00:40:50,880 --> 00:40:53,680
Ja und was du damit machen 
kannst Krasserweise ist das 

877
00:40:53,680 --> 00:40:57,240
machen wir auch, da kannst du 
quasi beliebig große javascript 

878
00:40:57,240 --> 00:41:03,240
Dinger die tatsächlich aber auch
diese CJSISM Sachen mischen, das

879
00:41:03,240 --> 00:41:05,840
räumt das quasi alles ab, baut 
dir ein riesiges. 

880
00:41:06,400 --> 00:41:09,040
Funktionierendes, 
standardisiertes Java Script 

881
00:41:09,040 --> 00:41:11,720
file was du dann mit PKG 
kompilieren kannst. 

882
00:41:11,720 --> 00:41:15,520
Krasserweise in der Punkt exe 
oder in der Linux Executable 

883
00:41:15,760 --> 00:41:18,000
alle Abhängigkeiten 
reingebandelt da drin. 

884
00:41:18,160 --> 00:41:20,560
Du brauchst also nicht gar keine
No GS Sprache mehr auf 

885
00:41:20,560 --> 00:41:22,480
installieren, es funktioniert 
einfach in sich selbst. 

886
00:41:22,480 --> 00:41:25,960
Das ist eine in sich selbst 
lauffähige Executable dann und 

887
00:41:25,960 --> 00:41:29,240
du hast Zugriff auf Java Script 
und auf die ganzen Pakete im mpm

888
00:41:29,240 --> 00:41:32,080
Manager, da kannst du, da kannst
du ganz mächtige Sachen machen 

889
00:41:32,080 --> 00:41:36,200
und der Footprint ist 50 bis 60 
Megabyte wird zunächst secutable

890
00:41:36,200 --> 00:41:38,960
groß, ja weil weil du weil da 
alles reingepackt ist, Lip UVVA 

891
00:41:38,960 --> 00:41:42,280
und so weiter das ist alles Thin
Capculated da das sind jetzt so 

892
00:41:42,280 --> 00:41:44,520
entwicklertools, würde man 
wahrscheinlich sagen ne das sind

893
00:41:44,520 --> 00:41:47,280
keine Abhängigkeiten so Pakete 
die reingehen sondern die dir 

894
00:41:47,280 --> 00:41:49,800
helfen. 
Tatsächlich kommt das auch als 

895
00:41:49,800 --> 00:41:52,320
Paket rein, du würdest auch 
sagen NPM in Stall versell, NNCC

896
00:41:52,320 --> 00:41:55,040
und so weiter genau, aber dann 
dann baut das natürlich mit 

897
00:41:55,040 --> 00:41:57,720
deinem Code noch mal andere 
Sachen ne es genau es hat n 

898
00:41:57,720 --> 00:42:00,840
bisschen andere Qualität, aber 
es wird auch so geladen ja genau

899
00:42:00,840 --> 00:42:04,760
OK. 
Hast du viele Pakete? 

900
00:42:04,760 --> 00:42:07,120
Es gibt im Mpm nee. 
Aber bestimmt ziemlich. 

901
00:42:07,120 --> 00:42:10,440
Viele. 
Ich hab zweieinhalb Millionen 

902
00:42:10,440 --> 00:42:14,960
gefunden und jeden Monat 50 
Milliarden Downloads. 

903
00:42:15,680 --> 00:42:17,800
Ja, 50 Milliarden Downloads lass
mal reinziehen. 

904
00:42:17,800 --> 00:42:20,160
Ja, es gibt ja auch einzelne 
Pakete, die haben jede Woche, es

905
00:42:20,160 --> 00:42:22,040
gibt ja meistens wird das 
wöchentlich angezeigt, wie sind 

906
00:42:22,040 --> 00:42:25,960
deine Download Dinger, das ist 
unglaublich, ja dazu muss man 

907
00:42:25,960 --> 00:42:29,560
aber auch sagen das das wird ja 
nicht behandelt also klar wenn 

908
00:42:29,560 --> 00:42:31,280
du jetzt anfängst zu 
programmieren und sagst du halt.

909
00:42:31,960 --> 00:42:35,360
Erstmal machst du dann dein Ding
fertig und sagst NPM install was

910
00:42:35,360 --> 00:42:38,480
weiß ich irgendein Paket ja 
react ja so, das machst du 

911
00:42:38,480 --> 00:42:40,520
natürlich einmal. 
Aber jetzt ist jetzt so muss man

912
00:42:40,520 --> 00:42:42,400
auch mal, muss man auch mal 
wissen, dass wenn du jetzt so ne

913
00:42:42,400 --> 00:42:46,520
CICD hast, das ist ne Pipeline, 
du hast ja in deinem Repository 

914
00:42:46,520 --> 00:42:48,160
wo du den Code aufhebst, da 
hebst du ja nicht die 

915
00:42:48,160 --> 00:42:50,080
Dependencies von den anderen mit
auf, sonst würden wir ja die 

916
00:42:50,080 --> 00:42:53,120
Daten kopieren wie für die 
Wahnsinnigen, also dieses Ganze,

917
00:42:53,120 --> 00:42:54,960
die ganzen Pakete werden quasi 
nur. 

918
00:42:55,560 --> 00:42:58,560
Tatsächlich mit dem NPM Install 
ja werden die quasi dann erstmal

919
00:42:58,560 --> 00:43:00,960
reingeladen und dann wird das 
Ganze ausgeführt, dann klappt 

920
00:43:00,960 --> 00:43:02,600
das auch. 
Ja, aber das was du aufheben 

921
00:43:02,600 --> 00:43:06,640
musst ist eigentlich nur dein 
ist nur dein Quellcode und das 

922
00:43:06,640 --> 00:43:09,560
heißt die ganzen CICD Pipelines,
die holen sich dann dann die 

923
00:43:09,560 --> 00:43:12,600
neue Version deines Quellcodes 
ab und machen dann das NPM 

924
00:43:12,600 --> 00:43:14,960
install ja und möglicherweise 
auf ganz vielen Servern 

925
00:43:14,960 --> 00:43:17,280
gleichzeitig und andauernd ja 
und bei jedem Commit und so 

926
00:43:17,280 --> 00:43:19,920
deswegen. 
Also da sind das sind nicht nur 

927
00:43:19,920 --> 00:43:21,920
human Beatings, die da 
runterladen, sondern auch ganz 

928
00:43:21,920 --> 00:43:23,800
viele Bots und so weiter. 
Das ist schon klar, sonst kannst

929
00:43:23,800 --> 00:43:25,920
du ja gar nicht auf 50 
Milliarden kommen im Monat. 

930
00:43:25,920 --> 00:43:28,360
So, das ist ja schon krass. 
Ja, genau deswegen kommen da 

931
00:43:28,360 --> 00:43:30,680
auch so krasse Zahlen, aber man 
sieht ziemlich gut an den auch 

932
00:43:30,680 --> 00:43:33,760
an der Downloadfrequenz 
bestimmter Pakete wie, na ja, 

933
00:43:33,760 --> 00:43:35,040
wie stark die Halt eingesetzt 
werden. 

934
00:43:35,040 --> 00:43:37,920
Ja, manchmal gibt es so ganz 
kleine Dinger, die überall 

935
00:43:37,920 --> 00:43:40,880
drinne sind, ja als als als 
Dependency, ja das ist ja auch 

936
00:43:40,880 --> 00:43:42,480
ganz Spaß. 
Ist transparent dann an der 

937
00:43:42,480 --> 00:43:43,440
Stelle, ja. 
Ja. 

938
00:43:43,920 --> 00:43:45,680
Dazu auch mal was gesagt, da 
kann ich ja mal ne Angst vor 

939
00:43:45,680 --> 00:43:47,040
wegnehmen. 
Das sind ganz viele, also wenn 

940
00:43:47,040 --> 00:43:48,920
man so ich kam ja auch mal aus C
plus plus, da ist das nicht 

941
00:43:48,920 --> 00:43:51,200
typisch, dass man mit so vielen 
Abhängigkeiten arbeitet, da hast

942
00:43:51,200 --> 00:43:54,400
du mal 1234 ausgewählte Dinger, 
die hast du genau angeguckt, so 

943
00:43:54,400 --> 00:43:57,760
in wenn du C oder C plus plus 
bist oder vielleicht auch Java, 

944
00:43:57,760 --> 00:44:01,600
da machst du noch viel mehr, 
selbst die Philosophie noja ist 

945
00:44:01,600 --> 00:44:04,800
ne ganz andere, du machst 
möglichst fast nichts mehr 

946
00:44:04,800 --> 00:44:07,040
selbst, sondern du also das 
erste wenn du n Problem hast, 

947
00:44:07,080 --> 00:44:09,080
dann guckst du. 
Hat das jemand schon gemacht? 

948
00:44:09,080 --> 00:44:12,200
Ja NBM. 
So und wenn, dann wenn da 

949
00:44:12,200 --> 00:44:14,280
ordentliche Downloadzahlen sind 
und dann kannst du ja in den 

950
00:44:14,280 --> 00:44:16,640
Code reingucken, wenn du meinst,
das ist cool, da sagst halt NBM 

951
00:44:16,640 --> 00:44:19,800
in Store das Dingel daher und 
fertig, ja dann dann nutzt du 

952
00:44:19,800 --> 00:44:22,440
das einfach mit, weil das hab 
ich ja ganz am Anfang gesagt von

953
00:44:22,440 --> 00:44:24,320
der Folge das passt. 
Das funktioniert auch, du musst 

954
00:44:24,320 --> 00:44:26,160
nicht lange überlegen, ja das 
ist dokumentiert, das 

955
00:44:26,160 --> 00:44:28,920
funktioniert immer gleich, das 
ist cool und dann, und das muss 

956
00:44:28,920 --> 00:44:30,800
ich auch sagen, es funktioniert 
hervorragend in dem ganzen 

957
00:44:30,800 --> 00:44:33,400
Ökosystem und haben natürlich 
die Leute, die für dich ne 

958
00:44:33,400 --> 00:44:36,360
Abhängigkeit entwickelt haben, 
die machen natürlich auch weiter

959
00:44:36,360 --> 00:44:38,640
an ihrem Code. 
Jetzt kriegst du ja dieses ganze

960
00:44:38,640 --> 00:44:40,400
Problem mit Version Management. 
Jetzt hast du 2000 

961
00:44:40,400 --> 00:44:43,520
Abhängigkeiten wo im Schnitt 
jeden Tag irgendwo gibt es 

962
00:44:43,520 --> 00:44:46,400
irgendwo n Update und wenn du 
jetzt aber selber n stabiles 

963
00:44:46,400 --> 00:44:49,360
Produkt rausbringen willst und 
wenn ich dir jetzt sage wenn ich

964
00:44:49,360 --> 00:44:52,240
hab ich ja gerade gesagt, wenn 
das beim Bauen irgendwie holt er

965
00:44:52,240 --> 00:44:54,680
quasi dann immer zu dem 
Zeitpunkt die Pakete ab und die 

966
00:44:54,680 --> 00:44:57,080
sind dann dauernd in einer 
anderen Version, da kannst du ja

967
00:44:57,080 --> 00:44:59,040
nie verlässlich irgendwie mal 
sagen, das hat funktioniert ja 

968
00:44:59,040 --> 00:45:01,840
weil im Notfall, die können ja 
auch mal n Fehler machen ja in 

969
00:45:01,840 --> 00:45:04,240
ihrer Abhängigkeit und dann geht
dein Ding auf flöten ja. 

970
00:45:04,800 --> 00:45:08,440
Und auch da hat No js sich ganz 
viel überlegt, wie man das alles

971
00:45:08,440 --> 00:45:10,320
Manager, das kann ich hier nur 
anhauchen. 

972
00:45:10,320 --> 00:45:13,800
Aber alle alle diese Pakete sind
semantisch versioniert, das 

973
00:45:13,800 --> 00:45:17,120
heißt ich habe sowas wie ein 
Major Miner und Patch release, 

974
00:45:17,600 --> 00:45:20,120
ich kann ein pro Paket pro 
Abhängigkeit, ich hab gar nicht 

975
00:45:20,120 --> 00:45:23,440
fest pin was ich will und der 
der Standard ist normalerweise 

976
00:45:23,440 --> 00:45:26,560
so ein so ein carrot Symbol das 
ist wieso ein kleines Dach wenn 

977
00:45:26,560 --> 00:45:29,760
ich so ein Dach voll die Version
mache dann heißt es No js der 

978
00:45:29,760 --> 00:45:32,960
Paketmanager der darf mir und 
ich neu quasi aufbaue. 

979
00:45:33,560 --> 00:45:36,560
Den Quellcode, dann darf er mir 
auch neue Pakete ziehen, aber 

980
00:45:36,560 --> 00:45:40,160
nur mit meiner Upgrades und 
meiner ist unter den 

981
00:45:40,160 --> 00:45:42,240
semantischen Versionierungen 
festgelegt. 

982
00:45:42,240 --> 00:45:45,120
Meiner Upgrades sind quasi 
keine, die die API verletzen, 

983
00:45:45,120 --> 00:45:48,720
die machen nur Bugfixes, aber 
die sind, sie brechen nichts. 

984
00:45:48,760 --> 00:45:51,720
Ja und alles das kann ich da 
sehr gut festlegen und dann gibt

985
00:45:51,720 --> 00:45:55,280
es auch noch so n Package Lock 
Pfeil, da kann ich dann sogar 

986
00:45:55,280 --> 00:45:58,480
auch einloggen wenn ich das 
tatsächlich exakt gleich haben 

987
00:45:58,480 --> 00:46:00,080
will. 
Also ich hab das zum Beispiel 

988
00:46:00,080 --> 00:46:02,720
sehr stark getestet. 
Dann gibt es dieses Package Log 

989
00:46:02,720 --> 00:46:05,440
file, dann kann ich auch 
zwingen, dass exakt genau diese 

990
00:46:05,440 --> 00:46:08,160
Pakete zu dieser Version, die 
werden ja quasi auch alle 

991
00:46:08,160 --> 00:46:11,840
gehalten und nbm kann ich auch 
mit Absicht ältere Version eines

992
00:46:11,840 --> 00:46:15,280
Paketes runterladen, dann ziehe 
ich mir exakt diese Pakete und 

993
00:46:15,280 --> 00:46:18,720
dann habe ich tatsächlich von 
Byte von den Bytes her exakt das

994
00:46:18,720 --> 00:46:21,400
gleiche Krams wieder da in 
Production, wie ich es jetzt zum

995
00:46:21,400 --> 00:46:22,480
Beispiel unter Development 
hatte. 

996
00:46:22,480 --> 00:46:25,480
Alles das ist vorbereitet, 
mitgedacht, man muss also nicht 

997
00:46:25,480 --> 00:46:28,080
so viel Angst haben vor den vor 
diesen ganzen Abhängigkeiten, 

998
00:46:28,080 --> 00:46:30,320
das geht schon, das kriegt man 
gut gemanagt. 

999
00:46:30,960 --> 00:46:33,600
Wie ist es mit den Lizenzen, die
dort im Einsatz sind? 

1000
00:46:33,680 --> 00:46:37,520
Ist es ne Standardlizenz für 
alle Packages oder verschieden? 

1001
00:46:37,920 --> 00:46:39,720
Nö, Jedes Paket hat seine eigene
Lizenz. 

1002
00:46:39,720 --> 00:46:42,080
Da muss man halt drauf achten, 
was man, was man so nimmt, aber 

1003
00:46:42,080 --> 00:46:44,160
die mal tatsächlich ist, ich 
will, ich weiß es nicht, keine 

1004
00:46:44,160 --> 00:46:46,520
Statistik, aber die meisten 
Pakete haben wir ne Open Source 

1005
00:46:46,520 --> 00:46:50,440
Lizenz die du die sehr frei ist 
die meisten MIT wenn du die MIT 

1006
00:46:50,440 --> 00:46:52,280
die Lizenz siehst, dann kannst 
du es nehmen, kannst es 

1007
00:46:52,280 --> 00:46:55,280
verkaufen, kannst mal was du 
willst da also ist eigentlich es

1008
00:46:55,280 --> 00:46:57,760
ist ne es es gibt sehr sehr 
viel. 

1009
00:46:58,320 --> 00:47:01,280
Sehr hochqualitativen Open 
Source Code in NBM, den du 

1010
00:47:01,280 --> 00:47:03,120
mitnutzen kannst. 
Ne ganz so starke tolle 

1011
00:47:03,760 --> 00:47:06,240
Webauftritte machen ne, das ist 
richtig cool, ja. 

1012
00:47:06,480 --> 00:47:08,960
OK, gut. 
Jetzt waren wir immer noch gar 

1013
00:47:08,960 --> 00:47:10,680
nicht bei der Syntax. 
Wir haben schon ordentlich was 

1014
00:47:10,680 --> 00:47:14,640
auf dem auf auf der Uhr ja Zeit,
was kommt da noch, was kommt 

1015
00:47:14,640 --> 00:47:16,800
noch nach der Syntax ist das 
letzte oder noch was? 

1016
00:47:17,280 --> 00:47:19,240
Nee nach der Syntax kommt 
eigentlich nicht mehr so viel, 

1017
00:47:19,240 --> 00:47:22,520
weil wir tatsächlich hab ich so 
n paar Sachen vorgezogen die ich

1018
00:47:22,520 --> 00:47:24,640
später auf dem Zettel hatte, 
deswegen lass uns einfach noch 

1019
00:47:24,640 --> 00:47:27,720
mal n bisschen Syntax angucken, 
ja gerne dann können wir es. 

1020
00:47:28,000 --> 00:47:30,840
Dabei belassen würde ich sagen, 
so, wenn man sich jetzt ne 

1021
00:47:30,840 --> 00:47:32,920
Programmiersprache von innen 
anguckt, ja gut die das noch nie

1022
00:47:32,920 --> 00:47:35,120
gemacht hat, dann dann, dann ist
man sowieso jetzt verloren, aber

1023
00:47:35,120 --> 00:47:37,080
ich versuch es mal so ganz 
bisschen auf der Tonspur zu 

1024
00:47:37,080 --> 00:47:38,960
machen. 
Also wir haben was wichtig ist, 

1025
00:47:38,960 --> 00:47:41,360
man muss einmal die Datentypen 
sehen die so ne 

1026
00:47:41,360 --> 00:47:44,520
Programmiersprache hat und dann 
muss man einmal kurz gucken was 

1027
00:47:44,520 --> 00:47:46,200
mit Klassen und Funktionen so 
los. 

1028
00:47:46,200 --> 00:47:49,200
Ja und ich würd einmal kurz zu 
den Datentypen was sagen, ist 

1029
00:47:49,200 --> 00:47:53,720
auch ganz cool weil Javascript 
und das json ja javas und das 

1030
00:47:53,720 --> 00:47:55,200
hat mir auch mal ne Folge über 
json. 

1031
00:47:55,760 --> 00:47:58,760
Jason hat ja mal so ne Idee von 
Datentypen und die hat 

1032
00:47:58,760 --> 00:48:01,080
javascript halt auch als 
Grundlagendatentypen und das 

1033
00:48:01,080 --> 00:48:02,880
sind gar nicht so viele und das 
Macht das schön. 

1034
00:48:02,880 --> 00:48:04,480
Ja, es gibt halt den 
Wahrheitswert, es gibt ne 

1035
00:48:04,480 --> 00:48:07,840
Nummer, es gibt n String, es 
gibt n Array n Objekt, das sind 

1036
00:48:07,840 --> 00:48:10,200
die wichtigsten ja und zum Array
muss ich auch noch mal was 

1037
00:48:10,200 --> 00:48:12,960
sagen, ganz wichtiger Datentyp 
in javascript ist halt einfach 

1038
00:48:12,960 --> 00:48:18,000
ne Abfolge von Daten, bin eher 
hintereinander ja. 

1039
00:48:18,240 --> 00:48:19,520
Die können aber verschieden 
sein. 

1040
00:48:19,520 --> 00:48:21,800
Ich kann ne Nummer haben und 
dann in Bulin und so weiter und 

1041
00:48:21,800 --> 00:48:23,720
sofort ja was bei Mary wichtig 
ist. 

1042
00:48:23,720 --> 00:48:25,840
Ich hab sage das hat einen 
Anfang und das hat ne Länge und 

1043
00:48:25,840 --> 00:48:27,440
die Sachen kommen 
hintereinander. 

1044
00:48:27,440 --> 00:48:31,360
Kannst du mit dem Index zählen 
01234567 da steht halt irgendwas

1045
00:48:31,360 --> 00:48:33,880
drin ja so und zum Objekt sag 
ich auch noch was, das Objekt 

1046
00:48:33,880 --> 00:48:36,560
ist halt quasi ein Key Value 
Container, da hab ich also nicht

1047
00:48:36,560 --> 00:48:38,880
nur irgendwas hintereinander mit
dem Index sondern ich hab halt 

1048
00:48:38,880 --> 00:48:44,200
einen Key der hat einen Namen ja
Name Sir Name oder ABCD diesen 

1049
00:48:44,200 --> 00:48:47,200
Strings und dann hat der Key 
halt einen Value ja. 

1050
00:48:47,680 --> 00:48:52,400
Du kannst halt könntest sagen 
Objekt ist a 1, B 2, C 3 und so 

1051
00:48:52,400 --> 00:48:54,680
weiter oder du machst es 
kompliziert, dann kannst du die 

1052
00:48:54,680 --> 00:48:57,840
Sachen ineinander schachteln. 
Ja der Wert der Wert unter dem 

1053
00:48:57,840 --> 00:48:59,560
Key kann halt auch wieder ein 
Array sein oder noch mal ein 

1054
00:48:59,560 --> 00:49:01,600
Objekt und so weiter und sofort 
und damit hast du ein Nesting 

1055
00:49:01,600 --> 00:49:04,800
damit erschlägst du Daten also 
mit alleine diesen Dingern 

1056
00:49:04,800 --> 00:49:07,440
erschlägst du alle 
Datenstrukturen die du brauchst 

1057
00:49:07,440 --> 00:49:11,680
für irgendwas, damit kannst du 
alles abbilden, das kann nicht 

1058
00:49:11,680 --> 00:49:14,240
mal einfach so sein, es ist so, 
keiner braucht mehr, es reicht 

1059
00:49:14,240 --> 00:49:16,680
so. 
Und dann gibt es auch so 

1060
00:49:16,680 --> 00:49:20,400
spezielle Datentypen. 
Date für ein Datum, das ist auch

1061
00:49:20,400 --> 00:49:23,360
ganz cool gemacht, es gibt in in
in No JS direkt ziemlich gute 

1062
00:49:23,360 --> 00:49:26,000
Datumsverarbeitung und alles was
man so braucht zum ISO string 

1063
00:49:26,000 --> 00:49:28,320
und und und. 
Timestims la Lada gibt es 

1064
00:49:28,320 --> 00:49:30,280
natürlich auch mal wieder extra 
Paket, die es noch cooler 

1065
00:49:30,280 --> 00:49:33,120
machen, aber von sich aus kommt 
da auch schon was ganz cool mit,

1066
00:49:33,760 --> 00:49:37,320
dann gibt es noch einen Datentyp
den ich mal nenne, das Set das 

1067
00:49:37,320 --> 00:49:39,560
Set ist, das muss man eigentlich
auch sowieso kennen, das haben 

1068
00:49:39,560 --> 00:49:42,400
fast alle Programmiersprachen, 
das Set ist quasi ein ein Array 

1069
00:49:42,400 --> 00:49:44,320
in dem es keine Duplikate geben 
darf. 

1070
00:49:44,880 --> 00:49:47,760
Sieht die Datenstruktur so vor, 
während ich in einem Array 

1071
00:49:48,000 --> 00:49:51,840
sauber hinschreiben kann, a 
komma a komma, a komma 1 Komma 

1072
00:49:51,840 --> 00:49:53,600
c. 
Ähnlich im Set. 

1073
00:49:53,600 --> 00:49:57,960
Ja, da kannst du halt nur sagen 
a Komma 1 Komma c ist jetzt 

1074
00:49:57,960 --> 00:50:01,880
gerade richtig gespeichert, also
keine Duplikate und das ist halt

1075
00:50:01,880 --> 00:50:03,920
super cool, da kann man, man 
kann auch mal mit 

1076
00:50:03,920 --> 00:50:06,400
Datenstrukturen dann n kleinen 
Algorithmus machen, hab ich ganz

1077
00:50:06,400 --> 00:50:08,720
oft zum Beispiel, da hab ich 
irgendwie n Array und weiß, Oh 

1078
00:50:08,720 --> 00:50:10,680
da sind vielleicht Sachen 
doppelt, die darf ich aber nicht

1079
00:50:10,680 --> 00:50:13,440
haben, dann kannst du das Array 
in den Set klatschen. 

1080
00:50:13,920 --> 00:50:16,400
Das Set macht dann halt flupp 
mit allen Duplikaten und dann 

1081
00:50:16,400 --> 00:50:19,040
machst du das Set wieder ins 
Array und dann hast du dann n 

1082
00:50:19,040 --> 00:50:21,960
Array ohne Duplikate. 
Ja, also man kann im No JS auch 

1083
00:50:21,960 --> 00:50:24,560
ganz easy eine Datenstruktur in 
die andere verwandeln und wieder

1084
00:50:24,560 --> 00:50:27,520
zurück, ja und dann nimmt halt 
die Daten werden halt quasi so 

1085
00:50:27,520 --> 00:50:29,720
manipuliert, dass sie halt den 
Datenstrukturen genügen und 

1086
00:50:29,720 --> 00:50:31,440
damit kann ich halt auch schon 
coole Sachen machen, ne? 

1087
00:50:32,000 --> 00:50:34,480
Also das Set würde jetzt die 
Duplikate eliminieren, 

1088
00:50:34,480 --> 00:50:36,920
automatisch. 
Genau ja, kannst nämlich sagen, 

1089
00:50:36,920 --> 00:50:39,920
du könntest sagen ich mach n 
news Set und dann sag ich und 

1090
00:50:39,920 --> 00:50:42,520
dann klatsch ich das Array da 
rein und dann dann hat das Set 

1091
00:50:42,520 --> 00:50:44,560
halt einfach die Duplikate 
rausgeschmissen, ist n guter 

1092
00:50:44,760 --> 00:50:47,880
cooler Weg um Duplikate zu 
killen ne sonst müsste ich halt 

1093
00:50:47,880 --> 00:50:50,360
dann wieder durchs Array 
etablieren und mir ist nämlich 

1094
00:50:50,360 --> 00:50:52,480
kein einfaches Problem Duplikate
zu killen, die können ja 

1095
00:50:52,480 --> 00:50:54,480
irgendwo vorkommen. 
Ja ganz am Ende oder und so 

1096
00:50:54,480 --> 00:50:57,160
weiter ja ist gar nicht so easy.
Ja und mit mit so Datenstruktur 

1097
00:50:57,160 --> 00:50:58,560
wenn man die kennt geht es cool,
ja. 

1098
00:50:59,160 --> 00:51:00,880
Da gibt es noch die 
Datenstruktur Buffer, die will 

1099
00:51:00,880 --> 00:51:02,640
ich noch mal sagen. 
Also das ist auch cool in Note 

1100
00:51:02,640 --> 00:51:05,040
TS, die haben sich tatsächlich, 
obwohl es so ne webnahe Sprache 

1101
00:51:05,040 --> 00:51:09,040
ist gibt es n sehr cooles System
für für n Buffer Buffer ist 

1102
00:51:09,040 --> 00:51:11,880
einfach Bytes ja, also in dem 
Buffer kann ich alles speichern,

1103
00:51:11,880 --> 00:51:14,080
was zum Beispiel so Medien sind.
Ja da kann ich n ganzes J Peg 

1104
00:51:14,080 --> 00:51:16,320
rein donnern und NPLG oder 
Irgendsowas und dann kann ich 

1105
00:51:16,680 --> 00:51:18,840
kann ich von außen sagen Buffer 
mach das mal irgendwie so, dass 

1106
00:51:18,840 --> 00:51:21,880
ich das transportieren kann in 
Basics defour und so, ja da kann

1107
00:51:21,880 --> 00:51:24,160
ich das zwischen zwischen 
Browser und Server hin und 

1108
00:51:24,160 --> 00:51:25,760
Herschicken, ohne dass das 
passiert, ja. 

1109
00:51:26,240 --> 00:51:29,160
Das alles, das alles schon Teil 
von der Sprache ist, unglaublich

1110
00:51:29,160 --> 00:51:32,080
mächtig also. 
Und das Schöne ist, es ist aber 

1111
00:51:32,080 --> 00:51:34,200
auch nicht so viel. 
Ja in C plus Plus und in C oder 

1112
00:51:34,200 --> 00:51:37,320
in anderen Sprachen gibt es halt
noch viel mehr Datentypen so und

1113
00:51:37,320 --> 00:51:40,000
das Schlimme ist ja, wenn du zu 
viele Optionen hast irgendwas zu

1114
00:51:40,000 --> 00:51:42,480
machen, dann ist als Entwickler 
auch schon wieder schwierig, ja 

1115
00:51:42,480 --> 00:51:44,880
und dann hast du auch schon 
wieder Kompatibilitätsprobleme, 

1116
00:51:44,880 --> 00:51:47,440
weil du halt einfach mehr 
posibilities hast. 

1117
00:51:47,440 --> 00:51:50,320
Ja ich glaube es ist halt nicht 
zu viel und nicht zu wenig und 

1118
00:51:50,320 --> 00:51:52,160
deswegen ist der Code gut 
austauschbar. 

1119
00:51:52,640 --> 00:51:54,480
Und harmoniert auch gut 
miteinander. 

1120
00:51:54,480 --> 00:51:56,240
Bei t plus Plus musst du 
überlegen, der eine macht 

1121
00:51:56,240 --> 00:51:59,200
irgendwie n Array aus 8 bit 
integer und der nächste hat 

1122
00:51:59,200 --> 00:52:01,600
irgendwie 16 bit integer und 
wenn du die 16 bits jetzt in die

1123
00:52:01,600 --> 00:52:03,480
8 Bits knallen willst, dann dann
werden die irgendwie 

1124
00:52:03,480 --> 00:52:05,600
abgeschnitten und so und dann 
ist das irgendwie nicht mehr 

1125
00:52:05,600 --> 00:52:07,440
ganz die Auflösung und das ist 
alles Wahnsinn. 

1126
00:52:07,440 --> 00:52:09,680
Ja da willst du aber nicht 
drüber nachdenken müssen, also 

1127
00:52:09,680 --> 00:52:12,400
gibt es dann Java Script einfach
nur ne Number Schluss aus Ende 

1128
00:52:12,400 --> 00:52:15,440
ja ob das jetzt ne 1 ist oder 1 
mit den 12 stellen hinten dran 

1129
00:52:15,440 --> 00:52:18,680
ist Wurst, das funktioniert halt
einfach ja das was man haben 

1130
00:52:18,680 --> 00:52:19,840
will ja. 
Genau. 

1131
00:52:19,840 --> 00:52:22,360
Und jetzt gibt es das und jetzt 
das Wichtige ist, und dann macht

1132
00:52:22,360 --> 00:52:24,200
es doppelt mächtig. 
Jetzt habe ich ja gesagt, es 

1133
00:52:24,200 --> 00:52:27,280
gibt dieses Array und das Objekt
und so weiter und das sind jetzt

1134
00:52:27,280 --> 00:52:29,240
einfach nicht nur Container, 
sondern die haben halt 

1135
00:52:29,240 --> 00:52:32,680
Funktionen an sich dran und das 
ist der Killer ja bei 

1136
00:52:32,680 --> 00:52:35,920
javascript, weil du hast total 
mächtige Funktionen dran, du 

1137
00:52:35,920 --> 00:52:37,680
kannst dir zum Beispiel einfach 
ein Array aufbauen, das kannst 

1138
00:52:37,680 --> 00:52:39,760
du sogar so einfach hinschreiben
tatsächlich, du kannst ne eckige

1139
00:52:39,760 --> 00:52:41,000
Klammer aufmachen und schreibst 
da 123 rein. 

1140
00:52:42,200 --> 00:52:43,200
Und dann macht die eckige 
Klammer zu. 

1141
00:52:43,200 --> 00:52:45,480
Das ist dann quasi schon RE 
implizit definiert und jetzt 

1142
00:52:45,480 --> 00:52:47,360
kannst du schon dransetzen, 
Punkt und jetzt kannst du 

1143
00:52:47,360 --> 00:52:49,680
Funktionen drauf aufrufen, ja 
die agieren dann quasi auf 

1144
00:52:49,680 --> 00:52:51,200
diesem Arreetyp. 
Ja und davon gibt es zum 

1145
00:52:51,200 --> 00:52:53,920
Beispiel was man kennen muss und
ich fang auch mit Arre an, weil 

1146
00:52:53,920 --> 00:52:57,360
die anderen sind so ähnlich, 
Filter zum Beispiel, da kann 

1147
00:52:57,360 --> 00:53:00,800
ich, da kann ich also und und da
jetzt, das ist auch schick und 

1148
00:53:00,800 --> 00:53:04,400
das ist auch was, was man am 
Anfang nicht so versteht, also 

1149
00:53:04,400 --> 00:53:07,160
wenn ich jetzt was filtere. 
Dann setze ich da aber quasi 

1150
00:53:07,160 --> 00:53:09,160
eine Funktion rein. 
Ich kann quasi mit einer 

1151
00:53:09,160 --> 00:53:12,760
Funktion beschreiben, was für 
jedes, wie jedes einzelne Item, 

1152
00:53:12,760 --> 00:53:16,560
in dem RE gefiltert wird. 
Ja, also ich sage Punkt Filter 

1153
00:53:16,560 --> 00:53:18,920
und dann schreibe ich eine ganze
Routine hin, das macht man 

1154
00:53:18,920 --> 00:53:20,920
meistens mit so einer Lambda 
Funktion, nennt man das so eine 

1155
00:53:20,920 --> 00:53:24,800
anonyme kleine Funktion, dann 
sage ich zum Beispiel X, dann 

1156
00:53:24,800 --> 00:53:28,320
mache ich so einen Pfeil gleich 
größer, quasi jetzt kann ich 

1157
00:53:28,320 --> 00:53:31,440
sagen was soll, was muss denn x,
was muss mit x sein? 

1158
00:53:31,440 --> 00:53:33,840
Ja da könnte ich zum Beispiel 
hinschreiben x größer 2. 

1159
00:53:34,400 --> 00:53:36,560
Als als Buddy von dieser kleinen
Funktion. 

1160
00:53:36,560 --> 00:53:39,080
Ja, und jetzt wird quasi diese 
kleine Funktion, die ich 

1161
00:53:39,080 --> 00:53:43,200
geschrieben hab ausgeführt für 
jedes Element ja von dem Array, 

1162
00:53:43,200 --> 00:53:46,000
ja, und damit kann ich super 
geile Sachen machen. 

1163
00:53:46,000 --> 00:53:47,760
Ja und so funktionieren die alle
ja und dann hab ich also n 

1164
00:53:47,760 --> 00:53:50,640
Filter, filtert mir Sachen raus,
kommt wieder n Array raus was 

1165
00:53:50,720 --> 00:53:53,320
potenziell kleiner ist oder 
gleich groß, je nachdem ob ich 

1166
00:53:53,320 --> 00:53:56,080
gefiltert hab oder nicht dann 
hab ich zum Beispiel n find 

1167
00:53:56,160 --> 00:54:00,080
damit finde ich finde ich einen 
bestimmten Item in meinem Array 

1168
00:54:00,080 --> 00:54:03,120
nach einer bestimmten Bedingung 
find dann hab ich einfach for 

1169
00:54:03,120 --> 00:54:05,160
each da kann ich dann einfach. 
Da kriege ich einfach nur den 

1170
00:54:05,160 --> 00:54:07,720
Wert hin, das x quasi das Item 
an der Stelle und kann dann 

1171
00:54:07,720 --> 00:54:10,320
irgendwas machen. 
Dann habe ich eine Funktion, zum

1172
00:54:10,320 --> 00:54:13,720
Beispiel include, da kann ich 
einfach fragen array included du

1173
00:54:13,720 --> 00:54:16,000
den Namen so oder so? 
Ja das gibt es dann einfach nur 

1174
00:54:16,000 --> 00:54:18,760
wahr oder falsch zurück dann 
eine ganz wichtige Funktion was 

1175
00:54:18,760 --> 00:54:22,000
man kennt auf dem Array ich hab 
die Funktion Map, das ist auch 

1176
00:54:22,000 --> 00:54:25,360
ganz cool, die Funktion Map sagt
quasi zurück kommt wieder ein 

1177
00:54:25,400 --> 00:54:29,200
Array der gleichen Länge aber an
jeder Stelle kann anderer Inhalt

1178
00:54:29,200 --> 00:54:33,040
sein, ich mappe quasi. 
Den Inhalt an jeder Stelle in 

1179
00:54:33,080 --> 00:54:34,880
Arre der gleichen Länge mit 
einem neuen Inhalt. 

1180
00:54:34,880 --> 00:54:37,680
Ja, wenn ich aber hinschreibe 
zum Beispiel, ich habe irgendein

1181
00:54:37,680 --> 00:54:41,600
Arre und sage Punkt Map X und 
dann dieses File und dann wieder

1182
00:54:41,600 --> 00:54:45,160
x, dann habe ich quasi das 
einfach nur dupliziert, das Arre

1183
00:54:45,160 --> 00:54:47,600
ja, da würde nichts passieren ne
aber ich könnte zum Beispiel ich

1184
00:54:47,600 --> 00:54:50,080
weiß im Arre sind nur sind 
zahlen und ich will die 

1185
00:54:50,080 --> 00:54:52,640
irgendwie potenzieren oder 
irgendsowas dann kann ich sagen 

1186
00:54:52,960 --> 00:54:57,120
x und dann file x hoch 2 dann 
kommt ein Arre raus wo ich 

1187
00:54:57,120 --> 00:55:00,120
überall die Quadrate drin habe. 
Und das sind jetzt alles 

1188
00:55:00,120 --> 00:55:02,840
Funktionen, die insbesondere auf
Arrays beziehungsweise die 

1189
00:55:02,840 --> 00:55:04,280
kannst du einfach an Array 
dranhängen. 

1190
00:55:04,280 --> 00:55:06,640
N beliebiges Array mit Punkt und
dann die silberne Funktion. 

1191
00:55:06,640 --> 00:55:08,400
Ja ja. 
Ganz genau, ganz genau, ja, und 

1192
00:55:08,960 --> 00:55:10,960
die bleiben, die geben dann an 
dieser Stelle wieder n Array 

1193
00:55:10,960 --> 00:55:14,000
zurück, aber das Schöne ist, ich
kann halt diese Punkte, ich kann

1194
00:55:14,000 --> 00:55:17,200
die Funktion auch chainen wie 
man sagt ja also ich könnte zum 

1195
00:55:17,200 --> 00:55:19,320
Beispiel sagen, es passiert ganz
oft wenn man programmiert, ich 

1196
00:55:19,320 --> 00:55:21,400
hab irgendwie n großes Array, 
das können ja zum Beispiel meine

1197
00:55:21,400 --> 00:55:23,360
Daten dann aus einer Datenbank 
oder Irgendsowas, dann Filter 

1198
00:55:23,360 --> 00:55:25,760
ich die und das was da rauskommt
map ich noch mal ja. 

1199
00:55:26,320 --> 00:55:28,480
Ich, ich kann also das Punkt, 
Filter, Punkt, Map und so weiter

1200
00:55:28,480 --> 00:55:30,560
beliebig aneinander hängen und 
dann noch n for each dran 

1201
00:55:30,560 --> 00:55:32,120
machen. 
Und selbst wenn ich die 

1202
00:55:32,120 --> 00:55:34,720
Datentypen Wechsel 
zwischendurch, dann hab ich auf 

1203
00:55:34,720 --> 00:55:36,800
anderen Objekten, zum Beispiel 
auf dem String hab ich sehr 

1204
00:55:36,800 --> 00:55:40,160
ähnliche Funktionen ne auch n 
paar andere so dann da hab ich 

1205
00:55:40,160 --> 00:55:44,160
sowas wie wie Start Swiss und n 
Swiss und so aber da nen String 

1206
00:55:44,160 --> 00:55:47,760
im Prinzip ne Abfolge von 
Charakteren ist weil zum 

1207
00:55:47,760 --> 00:55:51,280
Beispiel Saba Hello könnte ich 
sagen ja gut Hello sind halt ist

1208
00:55:51,280 --> 00:55:54,160
auch NRA und da steht halt HELL 
und o drin. 

1209
00:55:55,120 --> 00:55:57,040
Und so sieht das javascript. 
Deswegen funktionieren die 

1210
00:55:57,040 --> 00:55:58,800
ganzen Array Funktionen halt 
auch auf den Strings. 

1211
00:55:58,800 --> 00:56:02,840
Ja sowas wie zum Beispiel Splice
auch sowas Splice sagt zum 

1212
00:56:02,840 --> 00:56:06,080
Beispiel schneidet raus irgendwo
an einer Stelle in einem Array 

1213
00:56:06,800 --> 00:56:09,440
an einem Index, schneidet das 
Element raus und ersetzt das mit

1214
00:56:09,440 --> 00:56:13,040
was anderem oder mit nichts und 
so weiter das sind alles so 

1215
00:56:13,040 --> 00:56:15,440
Funktionen die als Webentwickler
braucht man die ständig, weil 

1216
00:56:15,440 --> 00:56:17,720
man ständig irgendwo was 
splicen, slicen und so weiter 

1217
00:56:17,720 --> 00:56:19,760
ich muss. 
Das ist ja überhaupt, warum wir 

1218
00:56:19,760 --> 00:56:21,520
programmieren. 
Ich hab halt Daten und ich muss 

1219
00:56:21,520 --> 00:56:24,720
die manipulieren, ne und da ist 
halt noch der ist unglaublich 

1220
00:56:24,720 --> 00:56:27,840
mächtig. 
Ja die Manipulation von Daten ne

1221
00:56:29,120 --> 00:56:32,960
genau oder das ist eigentlich 
so, das ist so was man so sagen 

1222
00:56:32,960 --> 00:56:35,040
kann und dann gibt es halt total
viele über diese ganzen 

1223
00:56:35,040 --> 00:56:36,720
Entwicklung der 
Programmiersprache gibt es immer

1224
00:56:36,720 --> 00:56:39,520
mehr so Features die es halt 
einem total angenehm machen 

1225
00:56:39,520 --> 00:56:41,600
damit zu programmieren ne ich 
kann so Objekte. 

1226
00:56:42,120 --> 00:56:43,400
Ich kann so Objekte quasi 
Spread. 

1227
00:56:43,400 --> 00:56:45,840
Es gibt n Spread Operator, die 
haben so schöne Namen Spread wie

1228
00:56:45,840 --> 00:56:48,320
die wie die Butter ne Schmier 
aus so ja du kannst also quasi 

1229
00:56:48,320 --> 00:56:51,680
die ganzen Key values, zum 
Beispiel Spread in n anderes 

1230
00:56:51,680 --> 00:56:53,960
Objekt, dann schmierst du die 
quasi hin und legst die flach 

1231
00:56:53,960 --> 00:56:57,840
wieder zusammen und so weiter 
hast als Snicer also es also es 

1232
00:56:57,840 --> 00:57:00,720
gibt schon viel Luxus an der den
ganzen Programmiererei da jetzt.

1233
00:57:01,200 --> 00:57:03,120
Wie geht man das jetzt an? 
Also wenn man jetzt diese ganzen

1234
00:57:03,120 --> 00:57:06,240
Funktionen alle gar nicht so 
kennt, die die gibt die Idee 

1235
00:57:06,240 --> 00:57:09,000
einem da Hinweise oder gibt man 
in ne Dokumentation rein und 

1236
00:57:09,000 --> 00:57:11,440
liest oder? 
Chattet man nur noch mit 

1237
00:57:11,640 --> 00:57:15,760
chachi.pt und Germany und so 
oder wo wo findet man das 

1238
00:57:15,760 --> 00:57:18,440
eigentlich alles raus? 
Ja oder lernt man das in einem 

1239
00:57:18,440 --> 00:57:21,280
dicken Buch wie du jetzt? 
Also ich bin ja Old School, wenn

1240
00:57:21,280 --> 00:57:23,320
ich ne neue Programmiersprache 
mir angucke, dann weiß ich 

1241
00:57:23,320 --> 00:57:25,000
nicht, ob ich mir jetzt noch n 
dickes Buch holen würde, aber 

1242
00:57:25,000 --> 00:57:27,760
das mach ich tatsächlich 
manchmal, weil ich das ganz 

1243
00:57:27,760 --> 00:57:29,800
gemütlich finde, das auch 
irgendwie nicht vom Bildschirm 

1244
00:57:29,800 --> 00:57:32,520
zu machen, sondern. 
Ja, ist irgendwie noch ne andere

1245
00:57:32,520 --> 00:57:33,720
Atmosphäre. 
Ich finde ich finde immer 

1246
00:57:33,720 --> 00:57:35,600
wichtig, man muss einmal von so 
einer Programmiersprache die 

1247
00:57:35,600 --> 00:57:38,240
Grundlagen verstehen, wo kommt 
es her, bisschen was also das 

1248
00:57:38,240 --> 00:57:40,320
was wir jetzt heute versucht 
haben, ja das muss ich schon 

1249
00:57:40,320 --> 00:57:43,520
verstehen, ja und aber ich mach 
es heute noch und dann natürlich

1250
00:57:43,520 --> 00:57:45,760
hilft dir die Idee, die sagt ja 
schon auch was da los ist. 

1251
00:57:46,080 --> 00:57:48,240
Kann man machen finde ich 
manchmal aber auch ein bisschen 

1252
00:57:48,800 --> 00:57:51,480
hm, ich gucke tatsächlich immer,
ich tippe immer MDN ein ja das 

1253
00:57:51,480 --> 00:57:56,800
ist Mozilla Development Network 
ist ne super top organisierte 

1254
00:57:56,800 --> 00:57:59,440
Java Script Dokumentation wenn 
du wenn du eintippst in den 

1255
00:57:59,440 --> 00:58:01,880
Chrome MDN Array. 
Da kommst du sofort auf eine 

1256
00:58:01,880 --> 00:58:03,920
Seite, wo wo das Array definiert
ist. 

1257
00:58:03,920 --> 00:58:06,480
Alle Methoden kannst du klicken 
und siehst sofort Beispiele noch

1258
00:58:06,480 --> 00:58:08,720
und nöcher und so das das hast 
du sofort gerafft. 

1259
00:58:09,040 --> 00:58:11,280
Also wer zum Beispiel einfach 
mal alles können will was ein 

1260
00:58:11,280 --> 00:58:14,160
Java Script Array ist, der tippt
Halt MDN Array ein und liest 

1261
00:58:14,160 --> 00:58:16,080
einmal von oben bis unten die 
Funktion durch. 

1262
00:58:16,080 --> 00:58:19,240
Ja da wird man mal da wird man, 
das muss man auch mal machen, 

1263
00:58:19,240 --> 00:58:21,440
weil wenn du mich kaino redest 
die sagt dir das ja auch nicht 

1264
00:58:21,440 --> 00:58:24,720
alles ja man muss sich wirklich 
mal die Mühe machen die alle zu 

1265
00:58:24,720 --> 00:58:27,520
lesen. 
Weil mit Umständen kannst du 

1266
00:58:27,520 --> 00:58:29,640
immer auch was erreichen, was 
noch nicht da ist. 

1267
00:58:29,640 --> 00:58:32,120
Ja, die sind ja auch, die sind 
ja nicht alle orthogonal, sag 

1268
00:58:32,120 --> 00:58:34,560
ich mal. 
Ja, aber manchmal denkt man so 

1269
00:58:34,560 --> 00:58:37,120
scheiße, was hab ich das, ach 
was gibt es da noch für ne 

1270
00:58:37,120 --> 00:58:40,400
Funktion ja every oder reduce 
was hab ich denn da mal? 

1271
00:58:40,400 --> 00:58:42,400
Das hab ich, du kannst das immer
per Hand programmieren mit dem 

1272
00:58:42,400 --> 00:58:44,440
for each Loop oder irgendsowas 
dann fehlt das so per Hand und 

1273
00:58:44,440 --> 00:58:47,080
so was kannst du schon machen ja
kannst aber auch lassen weil es 

1274
00:58:47,080 --> 00:58:49,400
alles schon fertig ist. 
Ja das ist alles unglaublich 

1275
00:58:49,400 --> 00:58:51,120
wird n unglaublich langer Code 
ja. 

1276
00:58:51,840 --> 00:58:53,840
Du kannst halt mit no JS, wenn 
du das gut kannst. 

1277
00:58:53,840 --> 00:58:57,440
Wenn du das voll auf dem Zettel 
hast, schreibst du unglaublich 

1278
00:58:57,440 --> 00:59:00,040
consize Code da da. 
Da sind wenige Zeilen und da 

1279
00:59:00,040 --> 00:59:03,520
passiert ne ganze Menge drin, 
weil halt diese Sprache 

1280
00:59:03,520 --> 00:59:05,920
aufgepeppt ist mit mit diesen 
ganzen coolen Funktionen. 

1281
00:59:05,920 --> 00:59:08,600
Ne also das empfehle ich, dass 
man das wenn man jetzt ich 

1282
00:59:08,600 --> 00:59:10,880
empfehle erstens no JS kann ich 
auch mal so sagen, wenn man mal 

1283
00:59:10,880 --> 00:59:13,040
programmieren will finde ich no 
JS ist ne coole Sprache, kann 

1284
00:59:13,040 --> 00:59:15,160
man ruhig nehmen, vielleicht 
guckt ihr euch den nur an weiß 

1285
00:59:15,160 --> 00:59:17,600
ich nicht. 
Und dann auf jeden Fall einmal. 

1286
00:59:17,600 --> 00:59:20,040
Dadurch muss man gehen, ja 
einmal diese Funktion alle mal 

1287
00:59:20,040 --> 00:59:23,760
angucken und das richtig lernen.
Ja und nicht nur, nicht nur 

1288
00:59:23,760 --> 00:59:26,120
online wie. 
Wird man to Date mit neuen 

1289
00:59:26,120 --> 00:59:27,600
Funktionen sagst du raus kommt 
was dazu. 

1290
00:59:27,600 --> 00:59:29,160
Also immer mal wieder reingucken
ja ja. 

1291
00:59:29,160 --> 00:59:31,080
Aber das kommt ja jetzt. 
Es ist ja nicht jede Woche der 

1292
00:59:31,080 --> 00:59:33,760
neue, also ich meine, klar kommt
ja, kommt die Version der 

1293
00:59:33,760 --> 00:59:36,240
Programmiersprache, aber das ist
ja, ich weiß gar nicht den Cycle

1294
00:59:36,240 --> 00:59:39,040
halbes Jahr oder Irgendsowas und
dann liest man, wie man das so 

1295
00:59:39,040 --> 00:59:41,000
macht, dann liest man die 
Release Notes und dann sagt man 

1296
00:59:41,000 --> 00:59:43,960
jetzt gibt es irgendwie den. 
Nullish coalesting Operator dann

1297
00:59:43,960 --> 00:59:45,920
denken sich, ach du scheiße, was
ist denn nullish coalesting 

1298
00:59:45,920 --> 00:59:47,920
Operator, dann zeigt man sich 
mal n Beispiel und denkt man 

1299
00:59:47,920 --> 00:59:50,000
Scheiße, den hätt ich schon 
immer gebrauchen können ne so 

1300
00:59:51,600 --> 00:59:53,800
und dann und dann bleibt das 
auch eigentlich schon hängen. 

1301
00:59:53,800 --> 00:59:56,840
Ja so so mach ich das und und 
beim RE die Funktion die sind 

1302
00:59:56,840 --> 00:59:59,680
stabil seit seitdem es no GS 
gibt oder ja da kommt mal eine 

1303
00:59:59,680 --> 01:00:02,640
dazu oder sowas aber dann das 
ist nicht so, dass man das 

1304
01:00:02,800 --> 01:00:05,840
ständig neu lernen muss. 
Ja das wär ja furchtbar, es geht

1305
01:00:05,840 --> 01:00:08,320
schon. 
Gibt es noch was ist Syntax, was

1306
01:00:08,320 --> 01:00:10,640
wir wissen müssen oder 
beziehungsweise die Hörer und 

1307
01:00:10,640 --> 01:00:12,640
Hörerinnen? 
Na ja, klar, da gibt es, da 

1308
01:00:12,640 --> 01:00:14,480
kannst du ja natürlich Bücher 
von lesen und schreiben. 

1309
01:00:14,480 --> 01:00:16,800
So Java ist natürlich nicht 
javascript Entschuldigung, ist 

1310
01:00:16,800 --> 01:00:19,320
ja nicht gestricktely Getyped, 
das heißt das ist n bisschen 

1311
01:00:19,320 --> 01:00:21,040
Schwierigkeit, du weißt immer 
nicht ganz genau, was hab ich 

1312
01:00:21,040 --> 01:00:23,360
jetzt eigentlich für n Typen da 
unter mir, da musst du n 

1313
01:00:23,360 --> 01:00:25,480
bisschen aufpassen, da gibt es 
ja das type Script noch, wenn 

1314
01:00:25,920 --> 01:00:28,080
man das halt möchte, das kann 
man ja auf das javascript mit 

1315
01:00:28,080 --> 01:00:31,120
Aufsetzen, bei Deno ist es 
gleich integriert, type Script 

1316
01:00:31,120 --> 01:00:33,920
Compiler, dann kann man noch mal
wissen, dass wenn man das nicht 

1317
01:00:33,920 --> 01:00:36,640
weiß, wenn man mit das ist. 
Da steht vielleicht nicht gleich

1318
01:00:36,640 --> 01:00:39,920
irgendwo mal so als Tipp von mir
das Jason Stringify und Jason 

1319
01:00:39,920 --> 01:00:43,760
Pass also das Jason Objekt ist 
ja quasi in einem First Citizen 

1320
01:00:43,760 --> 01:00:45,520
sag ich mal in der OJS Sprache. 
Du kannst sogar n Jason Objekt 

1321
01:00:45,520 --> 01:00:49,120
wenn du 1 hast direkt reinladen 
in den Source Code und das 

1322
01:00:49,120 --> 01:00:52,480
verwandelt sich in n javascript 
Objekt so wie ich es gerade 

1323
01:00:52,480 --> 01:00:55,200
besprochen hab. 
Das wird alles aber man manchmal

1324
01:00:55,200 --> 01:00:58,680
muss man manchmal will man das 
Rausschreiben und dann kann man 

1325
01:00:58,680 --> 01:01:01,840
das quasi das das Objekt mit 
diesem Key values was ja so n 

1326
01:01:01,840 --> 01:01:05,520
verschachteltes etwas ist ja. 
Da kann man einfach sagen json 

1327
01:01:05,520 --> 01:01:08,480
und da muss man aber das J, das 
S und das U und das n alle groß 

1328
01:01:08,480 --> 01:01:10,320
schreiben. 
Sieht aber n bisschen komisch 

1329
01:01:10,320 --> 01:01:12,080
aus, die Stellen sich das sofort
im Code wo du es machst. 

1330
01:01:12,080 --> 01:01:14,480
Json, weil sonst wird da 
eigentlich alles gecamble 

1331
01:01:14,480 --> 01:01:18,200
casted, aber json ist so das 
einzige Ding wo alle 4 Letter 

1332
01:01:18,200 --> 01:01:21,440
All Caps sind, Punkt stringify 
und dann wird dann auch riesen 

1333
01:01:21,440 --> 01:01:24,080
Objekt wird einfach in String 
verwandelt den du dann einfach n

1334
01:01:24,080 --> 01:01:26,640
Pfeil schreiben kannst. 
Zum Beispiel easy Ja und das 

1335
01:01:26,640 --> 01:01:30,240
Gegenteil von Stringify ist 
Parse, dann kannst du es parsen.

1336
01:01:30,480 --> 01:01:33,120
Und hier jetzt ne mein letzter 
Trick den das mach ich. 

1337
01:01:33,360 --> 01:01:36,120
Manchmal hat man das Problem, 
dass man was austauschen muss in

1338
01:01:36,120 --> 01:01:40,840
einem sehr verschachtelten Jason
Objekt mit so 34567 Etagen wo da

1339
01:01:40,840 --> 01:01:42,360
irgendwas ist. 
Ja und ich muss irgendwie 

1340
01:01:42,360 --> 01:01:45,440
irgendwelche Sachen austauschen,
dann kann es manchmal einfacher 

1341
01:01:45,440 --> 01:01:48,160
sein zu sagen Jason Stringefy 
das ganze Ding, dann hab ich das

1342
01:01:48,160 --> 01:01:50,720
quasi als Stringen jetzt hab ich
mächtiges stringen regax 

1343
01:01:50,800 --> 01:01:53,960
perfections sag einfach im 
Stringen Tausch aus das und das 

1344
01:01:53,960 --> 01:01:56,120
und das und dem Stringen ist 
völlig egal auf welchem Level 

1345
01:01:56,120 --> 01:01:57,920
das ist. 
Wo ich damit aus nicht 

1346
01:01:57,920 --> 01:02:01,280
ausgetauscht hab, sag ich wieder
Jason Pass und dann hab ich mein

1347
01:02:01,280 --> 01:02:04,200
Objekt wieder zurück, sonst 
müsste ich nämlich als Coda 

1348
01:02:04,200 --> 01:02:06,400
irgendwie der Reihe nach 
durchgehen durch jedes Level. 

1349
01:02:06,400 --> 01:02:09,120
Ja for each da und den Key und 
noch mal gucken und so weiter 

1350
01:02:09,120 --> 01:02:11,640
wenn man n bisschen wenn man n 
bisschen um die Ecke denkt, da 

1351
01:02:11,640 --> 01:02:15,040
kann man mit diesen Konversionen
von einem Typ in den anderen 

1352
01:02:15,040 --> 01:02:17,440
kann man auch sehr schnell mal 
irgendwie n Algorithmus 

1353
01:02:17,440 --> 01:02:20,600
abfrühstücken. 
Ja OK, also n String ist unter 

1354
01:02:20,600 --> 01:02:24,400
Umständen einfacher zu 
überarbeiten als eben das 

1355
01:02:24,400 --> 01:02:26,200
eigentliche Objekt. 
Ja, auf jeden Fall. 

1356
01:02:26,200 --> 01:02:28,160
Wenn das vor allen Dingen, wenn 
das tief genästet ist, Gerrit, 

1357
01:02:28,160 --> 01:02:29,320
dann kommst du da nicht so 
einfach dran. 

1358
01:02:29,320 --> 01:02:31,760
Ne, du musst dann, du musst das 
adressieren, dann müsstest du 

1359
01:02:31,760 --> 01:02:36,720
sagen a Punkt b Punkt C Punkt e 
ne wenn das jetzt wenn immer 

1360
01:02:36,720 --> 01:02:38,800
wieder Objekte in Objekten 
liegen, dann musst du erstmal 

1361
01:02:38,800 --> 01:02:41,160
durch die durch die ganzen Keys 
durch die musst du erstmal 

1362
01:02:41,160 --> 01:02:44,080
vernästen und dann will ich den 
Value da austauschen das ist 

1363
01:02:44,520 --> 01:02:46,200
dann muss man mal mit 
Rekursionen programmieren 

1364
01:02:46,200 --> 01:02:47,960
irgendsowas das wird wirklich 
das kriegst du richtig 

1365
01:02:47,960 --> 01:02:49,800
Kopfschmerzen. 
Und manchmal musst du einfach 

1366
01:02:49,800 --> 01:02:52,400
bei javasript denkst du so OK, 
also NC plus Plus geht sowas 

1367
01:02:52,400 --> 01:02:53,680
auch nicht. 
Ja, du kannst nicht einfach aus 

1368
01:02:53,680 --> 01:02:55,840
dem C plus Objekt n String 
machen, aber n javasript schon 

1369
01:02:55,840 --> 01:02:58,760
ja sagst du Jason Stringy frei 
bumm machst n String, dann 

1370
01:02:58,760 --> 01:03:01,640
machst du regeler Expression auf
n String und danach packst du es

1371
01:03:01,640 --> 01:03:03,920
Faust du es wieder als als 
Objekt zurück ja dann wird es 

1372
01:03:03,920 --> 01:03:05,200
noch mal. 
Also wenn du so aus der harten 

1373
01:03:05,200 --> 01:03:07,680
Schule kommst du sagen ist das 
völlig irre, kannst du nicht 

1374
01:03:07,680 --> 01:03:10,160
machen ich würde sagen kannst du
auf jeden Fall machen ist 

1375
01:03:10,160 --> 01:03:12,800
richtig cool ja spart 
Programmierzeit und ist auch 

1376
01:03:12,800 --> 01:03:15,040
alles performant ja das sind 
alles schon schnelle Funktionen 

1377
01:03:15,040 --> 01:03:15,920
ne? 
Cool. 

1378
01:03:15,920 --> 01:03:17,520
Also ich merk du bist richtig 
begeistert, kannst 

1379
01:03:17,520 --> 01:03:20,160
wahrscheinlich noch ne halbe 
Stunde oder Stunde drüber. 

1380
01:03:20,360 --> 01:03:22,040
Sprechen ich jetzt also wir 
haben ja schon die, aber ich 

1381
01:03:22,040 --> 01:03:24,080
glaub ne Stunde haben wir schon 
hier auf dem Zettel das das 

1382
01:03:24,080 --> 01:03:25,480
reicht für dich in. 
Ja ich bin begeistert 

1383
01:03:25,480 --> 01:03:28,440
tatsächlich ich find die Sprache
sehr schön also ich ja also ich 

1384
01:03:28,440 --> 01:03:30,640
hab auch schon paar gesehen in 
meinem Leben, ich bin immer noch

1385
01:03:30,640 --> 01:03:34,480
dabei also ich ja das kann man 
schon machen ne würd ich sagen 

1386
01:03:34,480 --> 01:03:36,880
kannst auch also kannst du safe 
große Projekte mitmachen würd 

1387
01:03:36,880 --> 01:03:39,520
ich sagen. 
Ja, es gibt auch viele große, 

1388
01:03:39,520 --> 01:03:45,080
sehr, sehr, sehr große Projekte,
die einfach mit no JS umgesetzt 

1389
01:03:45,080 --> 01:03:47,920
sind, ne? 
Ja, also alle Netflix und Co. 

1390
01:03:47,920 --> 01:03:51,600
Ja in der Größe gut. 
Dann würd ich sagen machen wir 

1391
01:03:51,600 --> 01:03:54,600
Deckel drauf. 
Ja, sorry, hast du deine 5% 

1392
01:03:54,600 --> 01:03:57,560
geschafft? 
Gerrit Ja, vielleicht ja 

1393
01:03:57,760 --> 01:03:59,760
vielleicht. 
Einstellig ist es bestimmt, aber

1394
01:03:59,760 --> 01:04:01,920
aber dürfte hoch einstellig 
sein. 

1395
01:04:03,040 --> 01:04:06,120
Ja, Papa ist alles gut, Mama ist
ja n bisschen was technischeres 

1396
01:04:06,120 --> 01:04:08,000
heute aber ist ja auch mal 
schön, ne, wir haben ja auch n 

1397
01:04:08,000 --> 01:04:11,120
Technik Podcast nein ist doch, 
ist ja n Tech Podcast so ne also

1398
01:04:11,120 --> 01:04:13,720
das tut dir ja war nicht war 
nicht negativ gemeint, ich kann 

1399
01:04:13,720 --> 01:04:15,520
mich ja dann auch n bisschen 
zurücklehnen beziehungsweise 

1400
01:04:15,520 --> 01:04:17,920
aufmerksam zuhören, ich versuch 
es wär natürlich noch cooler 

1401
01:04:17,920 --> 01:04:20,720
wenn ich es auch anwenden würde,
aber das dauert noch n bisschen 

1402
01:04:21,200 --> 01:04:26,160
bis ich das lieber dich so 
entwickeln mal schauen OK gut. 

1403
01:04:26,520 --> 01:04:27,680
Dann wollen wir nicht ins Labern
geraten. 

1404
01:04:27,680 --> 01:04:29,760
Leute, wenn ihr uns noch nicht 
folgt, dann folgt mir dir, 

1405
01:04:29,760 --> 01:04:32,360
diesem Podcast aus Spotify AP 
Podcast Das hilft uns am 

1406
01:04:32,360 --> 01:04:34,520
meisten, dann kriegen wir große 
Reichweite, da können wir coole 

1407
01:04:34,520 --> 01:04:37,440
Gäste auch mit Einändern und 
dann freuen wir uns. 

1408
01:04:37,680 --> 01:04:40,520
Also Dankeschön für die, die 
dran geblieben sind und alle, 

1409
01:04:40,520 --> 01:04:42,560
die zugehört haben und wir hören
uns in 2 Wochen war einfach 

1410
01:04:42,560 --> 01:04:44,240
komplex tschau tschau. 
Bis dahin. 

1411
01:04:44,240 --> 01:04:45,040
Tschüss aus Hamburg.
