.NET mit Dennis Oehme und Martin Deiss
- // Podcast
- // Deep Dive 172
Shownotes
Den Namen .NET haben sicherlich viele von euch schon einmal gehört. Viele Windows-Updates bringen regelmäßig Neuerungen zur wichtigen Runtime der Plattform. Aber was genau verbirgt sich dahinter und warum ist diese Technologie auch außerhalb des Windows-Ökosystems relevant? Aber zuallererst klären wir auf, was sich hinter dem Begriff .NET alles verbirgt – denn das ist eine ganze Menge.
Gemeinsam mit Dennis Oehme und Martin Deiss von Garden of Concepts sprechen wir über die Entwicklung, die .NET und C# in den letzten Jahrzehnten durchlaufen haben. Die beiden berichten Jan im Podcast-Studio, wie sie modernes .NET Core nutzen, um ihre Projekte und Web-Services nicht nur auf Webservern, sondern auch auf Embedded Devices zu bringen.
Außerdem besprechen die drei die Nähe und Gemeinsamkeiten von .NET, C#, TypeScript und anderen Sprachen und Frameworks. Immerhin stammen beide aus der Feder von Anders Hejlsberg, einem der maßgeblich verantwortlichen Entwickler für Turbo Pascal und Delphi bei Microsoft.
Und natürlich interessiert uns nicht nur das Framework und die Syntax der Sprache, sondern auch die Community und wie neue Entwickler:innen am besten den Einstieg in die sehr vielfältig nutzbare Welt von .NET und C# schaffen.
- Jan
- Hallo und herzlich willkommen zu einer neuen Folge der Programmierer, heute wieder mit einem Deep Dive und mit einem Thema, was wahrscheinlich jeder und jede da draußen schon mal Kontakt zu hatte, aber noch nie so richtig verstanden hat oder gar nicht wusste, dass er oder sie es benutzt. Wir wollen heute nämlich über dot net reden und darüber, was es ist und wieso man das braucht und für wen das hilfreich und nützlich sein kann und weil ich wie immer von so Themen überhaupt gar keine Ahnung hab, habe ich mir Verstärkung ins Studio eingeladen. Wir haben einmal hier den Dennis, der schon mal bei uns im Podcast war, über Docker und Bildkit zu sprechen. Hallo Dennis. Hi, hallo. Und der Dennis hat Verstärkung mitgebracht heute, den Martin. Hallo Martin.
- Dennis
- Hallo, schön, dass wir da sein dürfen.
- Jan
- Schön, dass ihr da seid. Dennis, wir haben das letzte Mal vollkommen unter den Tisch fallen lassen, was Du eigentlich machst und wieso Du überhaupt qualifiziert bist, hier in 'nem Podcast zu sitzen.
- Martin
- Auch das frag ich mich manchmal.
- Jan
- Ja. Durchaus. Ich frag mich das bis heute auch noch, aber bisher hat mich niemand rausgeschmissen und so lang bleib ich noch hier sitzen.
- Dennis
- Das ist gut.
- Martin
- Genau, so machen wir das auch. Ja, genau. Ja, Martin und ich sind von der Gern of Concepts GmbH. Wir entwickeln Software für und mit Kunden inzwischen seit einigen Jahren, also seit zweitausendelf. Und unser Schwerpunkt sind eigentlich unterschiedliche Technologien durch völlig unterschiedliche Projekte, kamen wir bisher mit sehr unterschiedlichen Sprachen und grundsätzlich mit Technologien in Berührung und das finden wir immer ganz spannend. Und es ist immer ganz toll, wenn man einfach unterschiedliche Sprachen kennenlernt, dann kann man halt viel besser auf eine andere Sprache eingehen und lernt, die Besonderheiten entweder lieben oder halt auch manchmal genau das Gegenteil davon. Und ja, unter anderem kamen wir so Richtung dot net.
- Jan
- Martin, hat er Dennis irgendwas Wichtiges vergessen?
- Dennis
- Nein, das hat perfekt Zusammenfassungen gegeben, was wir denn tun und wie wir denn da hingekommen sind. Also beziehungsweise vielleicht, wie wir da hingekommen sind, da können wir ja noch mal 'n bisschen dann drauf eingehen, Ja. Wie wir zu Dot Net gekommen sind. Aber genau, also ich glaube, das ist vielleicht auch ganz gut zum Einstieg, dass wir eben nicht aus dem Dot Net Umfeld eigentlich kommen, sondern Nicht
- Martin
- aus dem Microsoft Umfeld, ne?
- ???
- Vor allem
- Dennis
- nicht aus dem Microsoft Umfeld, sondern hauptsächlich eigentlich mit viel Webtechnologien zu tun hatten bisher und deshalb vielleicht auch ein bisschen einen anderen Blick auf dot net haben als jetzt vielleicht ein reiner dot net Entwickler.
- Jan
- Das ist sicherlich 'n valider Punkt. Dennis hat ja grad schon so gesagt, das Microsoft Umfeld, das ist also das offensichtlich, worum's hier geht oder wo dot net herkommt. Ich muss sagen, ich hab Dot net noch nie gelesen, außer wenn irgend 'n komischer Installer unter Microsoft gesagt hat, er braucht irgend eine, die fehlt und die muss jetzt gefälligst hier nachinstalliert werden, sonst geht irgendwie gar nix mehr. So. Ist das dieses ominöse Dot net?
- Martin
- Es war's mal, würd ich sagen.
- Dennis
- Ja, Das Also genau diese Rundimes, das ist oft auch Natürlich ist da irgendwie, das sind ja oft diese c plus plus Rundimes und so weiter. Das ist ja alles in diesem Dot net irgendwie mit inkludiert, aber wir sprechen ja jetzt hauptsächlich über Dot net und C Sharp und auch da bringt manchmal Windows irgendwelche Run Time Updates, die irgendwie benötigt werden. Das stimmt, aber das ist
- Martin
- Ich glaub, man muss ja erst mal differenzieren zwischen, es gibt ja Dot Net schon sehr lange, also irgendwie seit Anfang der Zweitausender Und da kommt auch dieses ganze dot net Framework Thema her. Und man könnte sagen, das Ganze war bis so zweitausendsechzehn durchaus 'n Thema. Und seit zweitausendsechzehn, spätestens seit zweitausendneunzehn gibt's dann, nennen wir's mal vorsichtig, das neue dot net. Microsoft hat sich da den schönen Namen dot net Core einfallen lassen, das eine neue Ära eingeschlagen hat. Und man muss schon sagen, das Original dot net und eben dot net Core und jetzt heißt inzwischen leider nur noch dot net, übernaming können wir noch mal sprechen. Das ist einfach was ganz anderes und nicht mehr so ganz vergleichbar. Das heißt, wenn man auf das ursprüngliche dot net irgendwie zurückführt, das war halt eben klar, irgendwie so GUI Anwendungen mit gebaut oder auch Webanwendungen durchaus, aber das war halt so der Schwerpunkt. Und irgendwann hat sich halt Aber wenn, soll
- ???
- ich mich
- Jan
- da ganz kurz unterbrechen, nur zum Verständnis. Was war denn dann dieses dot net früher? War das ein eine Library? War das ein Framework? War das eine GUI Abstraktion? Ah, okay. Das muss ich mir vorstellen.
- Martin
- Es ist 'n Öko, eigentlich ist es 'n gesamtes Ökosystem. Das besteht aus mehreren Sprachen letztlich, also aus eben zum einen der Sprache irgendwie. Also grundsätzlich c-sharp oder auch Visual basic dot net gab's und irgendwann kam man auch f-sharp dazu. Das heißt erst mal die Sprache an sich, dann gibt's natürlich diese ganze Compiler Toolchain plus
- ???
- standard,
- Martin
- zum Beispiel, dass man am Ende in c sharp zum Beispiel klassische Windows Native Anwendungen bauen konnte. Also es ist eigentlich 'n komplettes Ökosystem.
- Dennis
- Mhm. Das Ökosystem dot net, genau. Und wenn wir dann von Sprachen sprechen, dann sprechen wir eigentlich von c-Sharp als Sprache, die dort genutzt wird, als Hauptsprache oder auch Visual Basic oder f-Sharp. Genau, die genutzt werden in diesem Ökosystem dot net. Okay.
- Martin
- Genau. Und ja, das, wie gesagt, war alles sehr Microsoft exklusiv, damit natürlich auch sehr Windows exklusiv. Und dann hat man irgendwann festgestellt, dass das vielleicht, also dann hat man zwischendurch noch mal Xamarin gekauft und mit dem in Verbindung mit dem Monoprojekt hat man dann irgendwie geschafft, auch dort net aufm Handy zu bekommen als als mobile Plattform, aber das war wieder son bisschen losgelöst. Und dann hatte Microsoft irgendwie, ich glaub zweitausendsechzehn im Prinzip dot net Core eins null vorgestellt und das ist zum ersten Mal, also es ist eigentlich von from Scratch neu entwickelt. Das heißt, erst mal grundsätzlich mit dem als Open Source Sprache, also die gesamte das gesamte Framework, Compiler, Toolchain et cetera, alles Open Source, alles auf GitHub mit Community Prozessen, Standard, Issu Tracking, ja, Community Beiträge, Pull Request, all das ist eben möglich. Und das hat dann gar nicht mehr so viel mit dem Original dot net zu tun. Das heißt, also wurden 'n paar alte Zöpfe abgeschnitten. Manche Sachen waren damals eben noch nicht da. Und das ist aber auch der Punkt, an dem wir eigentlich erst mit eingestiegen sind, weil zumindest auch als selbst als Linux User war auf einmal Dot Net interessant, weil man auf einmal Dot Net Anwendungen unter Linux entwickeln konnte und auch vor allen Dingen ausführen konnte.
- Jan
- War das vielleicht 'n interessanter Punkt, weil Du sagst, als Linux User war auf einmal dot net interessant. Nur weil die Sprache oder das Framework auf der Plattform da ist, heißt ja noch lange nicht, dass es interessant ist. Also was war denn da drin, dass es für Linux User wirklich interessant und
- ???
- attraktiv gemacht hat, sich auch damit zu beschäftigen? Weil ich glaub nicht, dass alle Linux User der
- Jan
- Welt auf heißen Kohlen gesessen haben, endlich zu Weil ich glaub nicht, dass alle Linux User der Welt auf heißen Kohlen gesessen haben, endlich Anwendungen für Microsoft bauen zu können.
- Dennis
- Ich glaube, das ist auch weiterhin so. Ja, das stimmt. Ja, das könnte man, glaube ich, mal so sagen, aber ich glaube einfach natürlich, weil's 'n anderen Drive bekommen hat auf einmal. Also sozusagen, wenn Du natürlich auf einmal sone Sprache nimmst und die jetzt auf einmal quelloffen stellst und die Community daran beteiligst, dann ist bist Du natürlich auf einmal in 'nem ganz anderen Prozess drin und dann sind natürlich die Leute daran beteiligt. Und dann ist natürlich die vielleicht auch in Linux Community da natürlich, die das ja natürlich alles kennt und so weiter, natürlich da schon auch vielleicht wieder mehr dran beteiligt.
- Jan
- Kann man das ketzerisch so formulieren, dass durch die Offenheit der Sprache auf einmal auch einfach eine Art von Leute dazugekommen sind, die sich vorher pauschal gar nicht dafür interessiert haben, aber jetzt wahrscheinlich schon und die einfach vielleicht noch ganz andere Ansätze und Anforderungen mitgebracht haben.
- Martin
- Ja, ich glaub schon. Und son
- Jan
- bisschen dieses Microsoft Umfeld aufgewirbelt haben?
- Martin
- Ja, ich glaub schon. Also ich mein, wenn man erst mal von 'ner klassischen, also wenn man klassisch von dot net Desktopanwendungen ausgeht und man konnte auch früher schon mit ASP dot net Webanwendungen bauen, dann waren die allerdings alle irgendwie auf Microsoft Systemlaufweg, also irgendwie IRS als als Server Und in dem Moment, wo das Ganze natürlich unter Linux läuft, dann kommt kann man zum Beispiel Docker Container benutzen. Man kann einfach Webanwendungen bauen und sie irgendwo hinschmeißen und eben es muss nicht nur Azure sein, sondern es darf auch dann gerne irgendwie sonstiges Tubernitis Cluster oder Docker Container sein. Das heißt, erst mal grundsätzlich ist eine Webanwendung lauffähig wie mit den meist anderen Technologien auch. Ich glaube, das macht sehr, sehr viel aus in Verbindung mit grade mit mit mit Webanwendungen.
- Jan
- War das die Hauptmotivation dahinter, dass Microsoft quasi gesagt hat, na ja, wir können dieses ganze Ökosystem attraktiver machen, wenn die Leute das nicht zwangsläufig auf Azure deploynen müssen, sondern auch zu Google Cloud, ABS, wo auch immer hingehen können?
- Martin
- Ich würde ja ganz ketzerich behaupten, Microsoft verdient so viel Geld mit Azure und Linux Anwendungen, dass das durchaus interessant ist, wenn sie's schaffen, dass mehr Dinge auch auf Linux laufen. Das wird aber sicherlich auch die Azure Kundschaft gerne haben wollen oder mehr Azure Kunden schaffen. Ja, und ich glaub, nichtsdestotrotz ist eine Sprache, die ausschließlich aus kommerzieller Sicht oder aus aus Sicht eines Unternehmens entwickelt wird. Vielleicht gibst Du auch durchaus 'n Konkurrenzdruck, weil die meisten anderen Sprachen, die man so in dem Umfeld hat, da ist ja durchaus Community Beteiligung vorhanden und die hatte bis dahin halt gefehlt.
- Jan
- Okay? Was waren denn so Ideen, Impulse, Ansätze, die die Community mit zu dot net gebracht hat, was vorher gefehlt hat oder undenkbar war?
- Martin
- Ich würd ja fast sagen, so dieser ganze Open Source Gedanke, der damit einhergeht, also es war ja ungefähr auch in der Zeit, in der Microsoft GitHub gekauft hat. Ich bin mir nicht ganz sicher, ob das so zeitlich in dieselbe Schiene läuft, aber im Prinzip, dass man halt auch durchaus alleine auf GitHub unfassbar viele inzwischen sehr, sehr große Open Source Projekte hat. Die gab's auch schon vorher und es gibt auch heute wie vorher im Prinzip viel kommerzielle Projekte auch in 'nem Dot Net Umfeld. Aber ich denke, dass grundsätzlich fürn Open Source Ökosystem auch mehr Open Source entwickelt wird und das davon lebt letztendlich natürlich jedes Ökosystem durch Beteiligung.
- Dennis
- Glaub, da hat sich über die Zeit auch einfach was beim Microsoft irgendwie hat's da mal 'n Schalter gegeben, der umgelegt wurde und dann haben sie mal festgestellt, wie eigentlich heutzutage irgendwie diese Ökosysteme irgendwie funktionieren und dass mir so in diesem vorherigen Microsoft geschlossenen System da einfach nicht, glaub ich, nicht weiterkommt. Und ich glaube, von Impulse von draußen sind immer wichtig für, sone Sprache zu entwickeln oder 'n Framework oder Tools zu haben, die irgendwie auf allen Plattformen laufen. Und ich mein, es gibt nun mal viele Plattformen und Windows ist eine Plattform, ja, die ist groß, aber ich mein, große Plattformen sind auch mobile Plattformen inzwischen. Und natürlich will man irgendwie auch sein seine Sprachen auch irgendwie natürlich auf mobilen Geräten anbieten können. Und da ist natürlich mit Android und und iOS natürlich auch einfach viel Potenzial da, dass man natürlich irgendwie durchaus auch mobile Anwendungen damit bauen kann. Und ich glaub, da gab's einfach keine, die die Sprache sozusagen nicht irgendwie zu verlieren, dann irgendwie das dazu für die Leute einfach von weggehen, ist es einfach die einzige Möglichkeit, glaub ich, die Community darin zu beteiligen.
- Martin
- Na ja und man hat, genau, man hat einfach mehr Plattformen erschlossen. Also man könnte jetzt erst mal grundsätzlich sagen, eigentlich ist Dot Net inzwischen überall präsent, egal ob Linux, Windows, Mac. Man kann weiterhin natürlich native Windows Anwendungen bauen. Man kann aber auch inzwischen native Mac Anwendungen mit c-sharp bauen. Theoretisch auch Linux Anwendungen, aber da braucht man noch 'n bisschen mehr dazu. Man hat eben das mobile, also iOS und Android mit dazugenommen. Man hat IoT Devices mit ins Portfolio aufgenommen. Man hat die klassische Serveranwendung, aber auch eben Serverless ist durchaus 'n Thema geworden und mit entsprechenden Optimierungen können wir später noch mal drüber sprechen und nicht zuletzt auch der der Webbrowser als solches. Das heißt, es gibt auch Dot Net, was ausschließlich im Browser in 'nem wasm, also in 'nem Web Assembly läuft. Auch das hat man inzwischen ermöglicht. Also daher könnte man sagen, es ist jetzt einfach überall vorhanden, verfügbar, möglich.
- Jan
- Jetzt ist ja, hat die programmier.bar ja immer eine eine gewisse Nähe zu Flatter auch, einfach bedingt durch das, was hier so unser Tagesgeschäft ist und was sonst unser Content ist. Wie Cross Plattformen und crossfunktional muss ich mir denn dort net an der Stelle vorstellen, weil jetzt zum Beispiel Flatter oder React Native, wenn man sich das dann vielleicht anschaut, bringt ja im Prinzip alles mit so. Du schreibst in in einer Sprache, okay, es kompiliert für all diese ganzen Plattformen, aber es bringt ja auch einen einheitlichen UI Layer mit. So. Wie ist das bei dot net? Wenn ich jetzt hier an meinem Mac sitze und meine dot net Anwendung baue, wie sieht die dann aus? Wie verhält die sich dann auf 'nem Windows PC? Ja, ich oder oder gibt's das gar nicht, sondern ich muss das UI tatsächlich separat davon noch irgendwie neu bauen.
- Martin
- Ich glaube, jetzt kommen die ersten interessanten Themen auf, weil natürlich ist es gar nicht so leicht, ja? Ich hab das jetzt ganz, ja, ich hab gesagt, das läuft jetzt einfach überall. So ist es tatsächlich ja nicht, weil jetzt müssen wir erst mal drüber sprechen, für welche Art von Anwendungen sprechen wir. Weil es gibt natürlich so dieses ganze das ganz klassische WPF, ich glaub Windows Präsentation Foundation Ja. War das früher. Wenn man eine Anwendung mit WPF baut, dann läuft sie nach wie vor weiterhin ausschließlich unter Windows. Das heißt, wenn man da das Binding drin hat, klappt das so nicht. Wir können dann über das Projekt MaUI sprechen. Das ist nämlich genau das, was im Prinzip dann diese Plattformkompatibilität auf verschiedenen Ebenen eben bereitstellt. Und ja, da gibt es entsprechend spezifische Bindings für in dem Falle ausschließlich Mac und eben für andere, also für für die mobilen Plattformen Linux ausgenommen. Und es gibt Bindings, aber man ist durchaus, also es gibt da gibt's sone repräsentative ja Format, XAML, indem man im Prinzip diese Oberflächen definiert. Und da ist kommt man ganz schnell in eine Situation, dass die durch entsprechende Anweisungen doch sehr plattformspezifisch sind. Nichtsdestotrotz hat man halt die Chance, den, ich nenn's mal den Code durchaus wiederzuverwenden. Mhm. Ja, wobei ich zugeben muss, dass das auch also jetzt speziell Mavi, nicht ganz unser Schwerpunkt ist. Also wir nutzen ja fairerweise dotnetz sehr stark als eben als als für Webanwendung, für Backenddienste. Und da kommt man zum Glück damit, also mit diesen verschiedenen Varianten gar nicht so schnell in Berührung. Und auch da hat's so diverse, ja, Microsofts Frontend Strategien sind nicht immer sehr eindeutig. Das hat sich
- Dennis
- ja schon Oder kohärent.
- ???
- Ja, das hat sich in der Vergangenheit
- Martin
- schon gezeigt und es fühlt sich auch so aktuell ein bisschen fort. Okay, jetzt hast Du gesagt,
- Jan
- ihr nutzt es hauptsächlich für für Backenddienste. Da muss man ja sagen, Gott sei Dank gibt es dort nett, weil ansonsten hätten wir ja gar kein anderes Tool, Backend Dienste zu schreiben. Ja. So. Also es gibt ja gar gar keine andere Sprache da draußen Oh, nein. Die es uns ermöglicht, Serveranwendungen zu schreiben, die dann auch noch auf mehreren Betriebssystemen laufen sollen so, ja. Also worauf ich eigentlich hinaus will, dass auch aus dieser Prämisse kommt, ja, selbst für diese Nische, die Du grade beschrieben hast, wieso ist denn da Dot net interessant, wenn ich nicht auch ein ein Python, ein Java, ein irgendwas anderes, was es schon länger gibt oder was vielleicht auch weiter verbreiteter ist, ja? Warum soll ich dann Dot Net nutzen?
- Dennis
- Gute Frage. Ich glaube, das kommt ja immer, es wie immer kommt's drauf an. Also wie immer ist es ja so, dass man ja eigentlich die Sprache oder dass man natürlich für ein ein spezifisches Problem, wenn man denn die Möglichkeit hat, vielleicht die richtige Sprache wählen sollte. Erst mal das oder das richtige Umfeld, das richtige Framework. Und klar, Python bedient vielleicht andere Problematiken eher, die Du vielleicht damit erschlagen willst, wie ich jetzt irgendwie, wenn Du etwas in Java baust oder so. Und das ist eben bei dot net auch so. Ich würde jetzt fast mal behaupten, dass man jetzt irgendwie Ich glaube, der Unterschied zum Beispiel, ob ich jetzt über etwas in Java bau oder in dot net, ich glaub, da sind die Unterschiede sehr gering. Also das ist eher sone sone Entscheidungssache dann, die man vielleicht einfach treffen muss, weil man dann vielleicht einfach sich eine einer Sprache sozusagen sich vielleicht angucken will. Also natürlich könnte man sagen, c-sharp zum Beispiel ist sehr stark, wenn man das jetzt als typescript Entwickler sich anguckt, versteht man diese Sprache, weil diese Sprache ist sehr ähnlich. Interessanterweise nehme ich auch Dennis helf mir, wie heißt der Mann?
- ???
- Anders
- Martin
- Helsberg, der Genau. Erfindet offensichtlich gerne Sprachen.
- Dennis
- Ja. Der hat Der hat type Skript und war auch bei der C-Sharestwicklung sozusagen
- Jan
- beteiligt.
- Dennis
- Also das heißt, diese diese zwei Sprachen, die sind sehr ähnlich von ihrem von ihrem. Das heißt, wenn man sozusagen jetzt sowieso schon
- ???
- Aber das ist
- Jan
- jetzt nicht gerade 'n geiler Pitch, weil jetzt könnte ich ja auch sagen, okay, wenn ich dann schon type Skript kenn, warum soll ich mir denn dann C Sharp angucken, wenn sie so ähnlich sind und son ähnlichen Use Case bedienen?
- Martin
- Verneff. Im Zweifelsfall sind, also natürlich, ich glaube am Ende muss man erst mal unterscheiden, ist es eine Skriptsprache oder ist es im Prinzip eine eine statisch templierte Sprache.
- Jan
- Mhm.
- Martin
- Und das ist effektiv C-Sharp oder eben das, was rausfällt. Auch da muss man son bisschen differenzieren, weil man's eben sowohl direkt in Maschinencode übersetzen kann oder es eben noch eine eine benötigt. Es gibt beide Varianten davon. Eine der Sprachfeatures ist natürlich dann ganz stark die Asynchronität und Parallelität, die das Ganze ermöglicht. Man kann sehr low Level entwickeln, das heißt, wenn einem es sehr wichtig ist, das ist auch der Grund, wie wir dahin kamen, weil wir irgendwie auf seriellen Schnittstellen interagieren müssen. Das heißt, wir müssen sehr, sehr weit runter, dann ist es durchaus eine eine Möglichkeit, die es gibt, da sehr effizient darauf zu sprechen oder mit, ja, mit Schnittstellen zu interagieren. Man kann aber auch eben sehr high level unterwegs sein und das macht eben das Szenario oder ist abhängig vom Szenario letztlich. Man kann da sehr viel, man kann sehr, sehr optimierten Code schreiben. Das ist dann unter Umständen auch vielleicht für Serverless Thematiken sehr, sehr wichtig. Aber man kann es auch einfach wegignorieren und schreibt dann halt einfach Codes oder Motto, die gar nicht Collection gerichtet das Problem schon.
- Jan
- Und ist das dann am Ende die Stärke von dot net, dass sie Microsoft typisch und ich mein das gar nicht so böse, wie's dann vielleicht klingt, aber Microsoft typisch einfach versuchen, so sehr viele Use Cases gleichzeitig zu bedienen oder zu ermöglichen, ja, so so wie er auch Windows irgendwie superviel abdecken muss, was ja sowohl stärker als auch schwächer irgendwie sein kann, ja. Und das dann vielleicht der der Faktor sein soll, der die Sprache, das Ökosystem, das Framework so attraktiv machen soll im Sinne von, komm hierher und und lern das einmal und schon kannst Du, wie Du gerade gesagt hast, ne, Du kannst Serveranwendungen schreiben, Du kannst auf deinen seriellen Schnittstellen rumturnen, Du kannst grafische Anwendungen bauen, Du wirst halt auf einmal sehr, sehr enabled. Ob Du überall immer das das Beste und Geilste damit bauen kannst, ne, sei mal vielleicht dahingestellt, weil's halt, wie das immer so ist, wenn Du wenn Du viele Sachen kannst, kannst Du vielleicht nichts davon richtig geil, aber es ermöglicht halt superviel einfach erst mal.
- Martin
- Ich würd sogar noch weiter, also ich würde sogar weitergehen und sagen, absolut hast damit recht. Und wenn man jetzt nämlich noch eine Komponente dazu nimmt, nämlich die IDI, da haben wir jetzt ja noch nicht drüber gesprochen, es gibt die, ich würde sagen, die IDI am Markt ist halt aktuell Visual Studio, also auch von Microsoft. Und natürlich ist genau diese Verzahnung dort recht hoch. Das heißt, man hat im Prinzip alle Möglichkeiten. Die IDI nimmt einem im Prinzip alles ab. Man muss sich letztendlich nichts kümmern, außer eben den bisschen Code, den man schreibt. Da gab's ja gibt's auch grafische Komponenten zumindest für Desktopanwendungen. Und wir haben durchaus auch auf Konferenzen festgestellt, dass Leute im Prinzip ausschließlich in dieser ID unterwegs sind und eben dort die entsprechenden Knöpfe drücken und man muss nichts, man muss die Details nicht kennen. Und das das heißt, diese Einstiegshürde, also ist natürlich entsprechend E-Compiler, Debugger et cetera alles integriert. Es funktioniert sehr, sehr gut. Und das heißt, die erste Einstiegshürde, also ich würde mal behaupten, jeder, der irgendwie anfängt 'n typeskript Projekt aufzusetzen, da ist die Einstiegshürde etwas größer, wenn man irgendwie sagt, okay, was was verwende ich denn jetzt eigentlich? Ist es denn jetzt irgendwie react, react mit type Skript, ist es eine engula Anwendung? Das heißt, da ist viel, viel mehr, was man setupen muss, dass das Ganze läuft als jetzt mit 'nem klassischen dot net, insbesondere eben noch mit 'ner maßgeschneiderten IDE im weitesten Sinne.
- Jan
- Und nur das klarzustellen, wenn Du sagst, die IDE ist Visual Studio, dann meinst Du nicht Visual Studio Code?
- Martin
- Nein, ich mein tatsächlich die Doch.
- Jan
- Ja. Das kennen ja auch viele da draußen so, ne?
- Martin
- Genau, ich mein tatsächlich Visual Studio, das gab's auch da, das gab's bis vor Kurzem sogar auch noch für 'n Mac, wurde aber eingestellt. Fairerweise supportet auch Microsoft inzwischen ganz offiziell VS Code. Das läuft aber fairerweise unter derselben, also da gibt's DSCShop Dev Extensions. Das läuft aber unter derselben Subscription oder Lizenz wie Visual Studio selbst. Also ich glaube, ohne mich jetzt aufs Fenster zu lehnen, es ist quasi Free für Personal Usage und irgendwie bis zu 'nem gewissen Revenue kann man die auch umsonst verwenden. Und zu guter Letzt möchte ich natürlich auch noch erwähnen, weil das auch die IDI unserer Wahl ist, das Chat Braines hattet ihr auch, glaub ich, mal Ja. Jemand von Chat Braines hier in der programmier.bar. Ja, Niklas freut sich grade, wenn wir jetzt
- Jan
- wieder Chatbrands Produkte supporten hier.
- Martin
- Ja, muss ich auch zugeben. Also wir wir nutzen in unserem Alltag ganz bewusst eben Chatbrands Rider, das ist einfach deren
- Dennis
- Und alle anderen Chatbrands Produkte.
- ???
- Und auch
- Martin
- die aber jetzt im Ja, das stimmt. Aber in dem Falle, genau, ist es eben Ryder, auch das ist Free for Personal Usage seit Kurzem. Genau und das ist eine tolle IDI und man kann eben
- Dennis
- Ja, die läuft die läuft natürlich auch auf jeden allen Plattformen.
- Martin
- Genau, die läuft auf allen Plattformen.
- Jan
- Ich frag mal ganz doof trotzdem noch mal, warum, weil Du hast ja grade gesagt, Visual Studio von Microsoft als die IDI, die hochgradig integriert ist und dir irgendwie viel Arbeit abnimmt und so weiter. Wieso benutzt Du dann was anderes?
- Martin
- Na ja, im Zweifelsfall, wenn weil ich unter Linux oder Windows unter oder auf Mac unterwegs bin, ja? Also das ist Grund genug dann. Genau. Und Vor
- Dennis
- allem die natürlich auch alle, weil wir die natürlich die Chat Brain Produkte einfach kennen und da sind wir natürlich, da fühlt man sich natürlich schnell zu Hause. Das ist natürlich auch so. Und sie haben auch einfach etwas andere, sage ich mal, vielleicht Convenience Sachen, die vielleicht 'n 'n 'n Visual Studio auch hat oder aber auch tatsächlich nicht. Also das ist zwar die große IDE, die man irgendwie nutzt, Die ist aber auch oft relativ schwerfällig. Also wir haben's schon gehabt, dass wir natürlich, wenn man größere Projekte in Visual Studio lädt, das ist alles etwas behäbig. Und mit mit Rider, da da flutscht das einfach. Also das ist einfach eine sehr angenehme Erfahrung.
- Jan
- Muss man aus Rider Neugier fragen, weil als ich angefangen hab zu programmieren, warst ja schon, weiß ich nicht, fünfzehn, ah, jährchle her
- Martin
- ist her
- Jan
- ist oder länger noch, da war Visual Studio immer so son sehr teures dekadentes Produkt. Also da hast Du Hunderte und Tausende Euro bezahlt, das irgendwie nutzen zu können und so. Ich hab eben schon leicht gehört, es es gibt jetzt irgendwie auch Firmen, sonst aber was ist da das aktuelle Pricing Model, wenn man sich das mal anschauen möchte?
- Martin
- Ich wie gesagt, ich glaube, es gibt eben für für kleine Unternehmen beziehungsweise für Privatpersonen kommt man da beziehungsweise für Privatpersonen kommt man da an eine Lizenz, also kommt man da umsonst quasi an eine Lizenz dran und diese ganzen teuren Lizenzversionen sind halt erst mit 'ner gewissen Größe.
- Jan
- Also jeder, der da draußen das einfach mal ausprobieren will und wie Du sagst, einfach mal so diese Experience haben wir mit, ich starte das, ich mache mein Projekt auf und und go, ja, wie man das vielleicht von von x Code am Mac mit mit Swift und sowas kennt, ja, oder Android Studio mit mit Codlin und so. Das kann man schon noch machen, ohne sich jetzt irgendwie gleich die Seele verkaufen zu müssen. Ja.
- Martin
- Also es gibt einfach genau Community Edition heißt es ganz offiziell, die kann man halt nutzen. Einfach direkt.
- Dennis
- Oder natürlich auch VS Code mit dem entsprechenden Plug in. Das geht natürlich auch.
- Martin
- Genau. Okay.
- Dennis
- Wenn man die IDI schon kennt und so weiter, kann man natürlich auch damit arbeiten das machen. Durch das ja auch viele Leute.
- ???
- Ja. Okay.
- Martin
- Genau. Und ist auch sehr interessant zu beobachten, also grade über die letzten Jahre, wenn man auf verschiedenen
- ???
- Konferenzen rumturnt, dann war das natürlich klar am Anfang
- Martin
- waren's auch schon rumturnt, dann war das natürlich klar am Anfang waren's ausschließlich Visual Studio. Also wenn's irgendwie Coodingsessions gab, dann war's halt immer Visual Studio. Und inzwischen findet man dann doch echt häufiger VHS Code oder auch eben Ryder auf verschiedenen Plattformen. Das heißt, diese Diversität ist da auf jeden Fall auch inzwischen sichtbar geworden, würd ich sagen.
- Dennis
- Ja. Weil dann natürlich auch inzwischen viele Tools irgendwie integriert sind. Also das jetzt irgendwie, wenn man mal die Garbage Collection sich angucken will, was die so treibt, ob irgendwelche, was im Memory so passiert, was also einfach solche Performancetools und so weiter. Das haben beide Tools, aber natürlich dann immer, mit was man halt am besten klarkommt.
- Martin
- Ja. Genau. Mhm.
- Jan
- Okay. Jetzt hast Du ja schon gesagt, ihr kommt eigentlich mehr aus diesem Webanwendungsbereich dahin.
- Martin
- Vielleicht könnt
- Jan
- ihr einmal ganz kurz abreißen, ohne da in in zu viele proprietäre Details zu gehen, was ihr damit eigentlich macht. Dann können wir vielleicht mal über den den Workflow, wie man so damit arbeitet, sprechen.
- Martin
- Ja, gerne. Also wir kamen eben gar nicht direkt über den Webpart, also wir nutzen, also wir stellen eine Web UI im Prinzip zur Verfügung, lassen das Ganze aber gar nicht jetzt auf 'nem klassischen Server laufen, sondern als quasi als 'n IoT Device unter Linux und stellen dort eben, ja, sprechen Maschinen an und steuern im Prinzip verschiedene Gerätschaften, Peripheriegeräte von dem ja, von Maschinen. Und deswegen war das auch für uns am Anfang so interessant, als wir auf der auf dem Research Level noch unterwegs waren, zu schauen, okay, welche Möglichkeiten haben wir da und Dot Net war eben eine der Varianten, die uns dann in dem Falle zur Verfügung stand. Ja, das war eben noch ganz
- Dennis
- Damals noch mit Dot Net drei null Ja. Sind wir eingestiegen, ganz frisch als das Dot Net Core sozusagen neu war.
- Martin
- Betaversion und so, ja. Genau. Genau, also letztendlich ist kann man sich's aber einfach vorstellen wie, es ist ist eine Serveranwendung, nur dass sie halt eben in dem Falle aufn Embedded Device läuft und eben nicht auf 'nem klassischen Serversystem. Ja, letztendlich stellt das ganze System Schnittstellen für 'n Embedded System zur oder auf ein Embedded System zur Verfügung und da nutzen wir halt im weitesten Sinne Webtechnologien und ja, das funktioniert sehr gut, weil wir uns einfach entschieden hatten, dass wir das im Prinzip nicht versuchen wollen, mit einer Hochsprache zu machen. Im im klassische Embedded Umfeld ist man ganz schnell irgendwie bei c plus plus oder so was und das hat das, es hat einfach die Umgebung das Environment nicht hergegeben, dass wir das hätten machen können. Und da war dann durchaus dot net 'n charmanter Vorteil, dass man auf 'ner High Level Sprache unterwegs ist. Es gab bereits 'n Team mit dot net Entwicklern. Die Sprache ist durchaus eingehen. Ich glaub, da sollten wir auch noch mal grundsätzlich über die Sprache und auch das Framework hintendran sprechen, aber nichtsdestotrotz haben wir inzwischen auch klassische Webanwendungen gebaut, unter anderem auch eben mit Blazer. Ich glaub, das hatten wir jetzt noch nicht namentlich erwähnt, also auch die Möglichkeit UI für oder im Browser zu rendern. Da können wir noch mal gerne später drüber sprechen, das ist auch noch 'n ganz interessantes Thema, auch 'n interessanter Technologieansatz, eben auch dort halt mit Dotnet im im Browser unterwegs zu sein und sich eben kein JavaScript oder Ähnliches ans Bein zu binden, was natürlich gelogen ist, aber im weitesten Sinne kommt man da mit einer Technologie sehr weit.
- Dennis
- Man muss vielleicht noch dazu sagen, dass wir natürlich auf dem, ne, weil wir gerade gesagt haben, dass wir entwickeln ja sozusagen eine Software für ein IoT Gerät und auch da müssen wir natürlich und das ist natürlich für dot net, das hat sich jetzt über die Jahre mit den Updates immer weiter verbessert. Also so, weil dieses Gerät natürlich eine gewisse Limitierung an Speicher hat, ne, also an an Memory. CPU. CPU und so weiter, dass wir da einigermaßen effizient halt irgendwie arbeiten müssen, dass wir das auch, dass wir nämlich einmal irgendwie 'n ganzen Webserver bereitstellen. Der stellt am Ende eine eine Angular App bereit. Und gleichzeitig aber auch, dass wir über verschiedene Schnittstellen da sich auch bis runter für seriell eben kommunizieren können. Und das muss halt eben so alles so schnell wie's geht halt eben funktionieren, dass wir irgendwie da keine keine Aussätze haben, grade über die serielle Schnittstelle zu kommunizieren, ist immer son bisschen 'n Problem. Und das klappt aber erstaunlich gut und ist auch tatsächlich mit jedem Update von dot net machen die da wirklich immer sehr viele Performance improvements, dass man tatsächlich dann nur das durch das reine Update auf eine neue dot net Version schon wieder irgendwie schneller laufende Anwendung irgendwie bekommt, was bei uns sich durchaus dann immer wieder bemerkbar macht, weil wir eben mit limitierten Ressourcen da arbeiten müssen.
- Jan
- Und ist das eine eine bewusste Entscheidung im Dot Net Ökosystem, solche Umgebungen wie Embedded jetzt auch besser zu unterstützen oder sind diese Performancegewinne, die Du gerade rausgestellt hast, im Prinzip ein angenehmes Buy Produkt davon, dass die die Sprache halt performanter machen wollen, weil sie natürlich auch aufm Server davon profitieren.
- Dennis
- Absolut, ich glaube eher daher kommt das definitiv. Also da auch diese ganze Entwicklung in Richtung AOT und so weiter, es geht immer darum, dass wir natürlich auf 'nem Server so schnell wie möglich entweder bei 'nem Serverless Anwendung irgendwie so schnell wie möglich eine kleine Anwendung hochfahren können und so wenig Speicher und Memory verbrauchen, wie's geht. Oder natürlich auch aufm aufm Server, wenn ich halt irgendwie Tausende, Millionen von von Anfragen habe, dass ich dort natürlich auch nicht auf einmal in irgendwelche Memory Probleme komme und dann irgendwie meine meine Amazon Kiste immer größer und größer machen muss, was natürlich mit Kosten auch daherkommt. Also ich glaube, wir profitieren einfach da daher davon jetzt in unserem speziellen Fall einfach, dass die Sprache und das ganze Umfeld sozusagen performanter werden, einfach weil's, ich glaub, das ist hier für einen Server optimieren. Klar, und für irgendwie viele Requests und solche Sachen sozusagen. Aber kommt uns ja dann trotzdem zugute. Also man kann sozusagen mit relativ wenig Speicheraufwand
- Martin
- Memory Upgrade mit Software Update, ist doch super.
- Dennis
- Genau. Okay.
- Jan
- Jetzt hast Du eben schon gesagt, Dennis, dass da schon ein Team bei dem Projekt vorhanden war, was quasi auch dot net schon kannte.
- ???
- Mhm.
- Jan
- Aber eines der Argumente, das man ja häufig hört, grade so aus dem react nativ Bereich, ja, ist ja so, na ja, dann kannst Du deine Anwendung entwickeln mit den Leuten, die Du schon hast aus deinem Web Development Team oder Du kannst da draußen im gesamten JavaScript Typescript Pool im Prinzip fischen, wenn Du Leute brauchst, dein Team auszubauen. Wie sieht es denn aber bei dot net aus?
- Martin
- Na ja, also dot net ist tatsächlich durchaus verbreitet. Es ist gar nicht so, dass also ich natürlich kann man sagen, wahrscheinlich gibt's mehr Webentwickler als Dot Net Entwickler oder mehr Javaskripte Entwickler als Dot Net Entwickler. Aber nichtsdestotrotz steigt, glaub ich, also ich glaub aufm TUB Index, ja, Platz fünf. Also sogar so nur vor JavaScript, wenn man's mal ganz genau Also es ist durchaus für weiterverbreitet, auch Stack Over floart ja regelmäßig Umfragen und auch da steigen durchaus die Beliebtheitswerte. Das heißt, es gibt 'n Markt, da ist es tatsächlich so, dass man natürlich schauen muss, also es ist durchaus so, dass man dort net Entwickler findet, die das halt eben seit den Beginn der Zweitausender machen. Das heißt, es ist auch also da
- Jan
- Will man die oder will man die grade nicht?
- ???
- Das ist
- Martin
- ja eine sehr ketzerische Frage. Das kommt drauf an. Also es hat natürlich, also die Sprache hat 'n großen Wandel mit sich gebracht, vielleicht die Sprache gar nicht mal so sehr, aber das ganze Framework in 'n Ökosystem. Natürlich, wenn man halt bis zuletzt, es gibt ja immer noch genügend Anwendungen, die zum Beispiel auf dem ganz klassischen DotNet Framework festhängen. Das heißt, diese Entwickler kamen gar nicht in den Genuss von DotNet Core und den Erweiterungen und euren Sprachfeatures. Dann ist es auf der einen Seite natürlich schade, aber nichtsdestotrotz haben wir auch in den Projekten beobachtet, dass es, ich mein, das es hilft auf jeden Fall diese Sprach zu beherrschen, das Ökosystem schon 'n Stück weit zu kennen. Am Ende kommt dann halt nur noch mehr dazu. Also das ich mein man kennt diese Sprache. Ich meine am ist eher entscheidend, ich glaube entscheidender ist dann der Unterschied, wenn jemand klassisch dot net Framework für Desktop gebaut hat, dann ist glaube ich der der der Umstieg auf ja die spezifischen Sachen für Web zum Beispiel irgendwie viel relevanter. Also dass man zum Beispiel GAPC einsetzt oder was sind denn die ganzen Umstände rund HSP zwei drei et cetera? Ich glaube, das sind die relevanteren Themen.
- Dennis
- Das hättest Du mit jeder anderen Sprache
- Martin
- die zu geben. Genau, das ist einfach das sind einfach 'n Plattform Switch in dem Falle und dazu muss man ja Aber damit hat man immerhin das die Situation schon geschaffen, die Sprach Also man kriegt den Plattform Switch glaub ich besser hin, weil man muss ja nicht eine neue Sprache dafür lernen, sondern kann weiterhin in der Sprache in dem Ökosystem gewissermaßen bleiben.
- Dennis
- Und trotzdem, wie ich vorhin schon gesagt hab, also ich mein, ich hab ja zum Beispiel davor auch sehr viel type gemacht und dieses der der Switch sozusagen jetzt, dass ich zu c Sharp, war deshalb einfach relativ einfach, weil das ist einfach, es fühlt sich eigentlich exakt genauso an. Ja, also man hat sehr viele Sprachfeatures, die einfach genauso funktionieren und wenn man sich da einfach so Code anguckt, ja, das das das kennt man einfach.
- Jan
- Bei mir gibt's immer zwei Merkmale, die entscheiden, ob eine Sprache syntaktisch sympathisch ist oder nicht. Die erste Frage ist, sind Einrückungen wichtig?
- Martin
- Nein. Gibt's ja so Sprachen? Ja, ich weiß
- Dennis
- heißen und
- Martin
- so, ja,
- Jan
- ja, ja. Auf komische komisch, egal. So, okay. Also Einrückungen nicht entscheiden. Die zweite Frage ist, werden Keywords ausgeschrieben? Also schreibt man funk Ja. Oder schreibt man funk? Oder schreibt man
- Martin
- Ja, okay, ich weiß Ja, man schreibt sie aus. Also es gibt wenig Abkürzung, aber das vorwegzusagen, es C Sharp hat leider sehr sehr viele Keywords und die das ist sicherlich was den Einstieg nicht unbedingt leichter macht. Also wenn man am Anfang irgendwie mal Code Reviews gemacht hat, dann denkt man sich hui, da kommen aber das ist ja interessanter Code Und was wollte man damit ausdrücken? Ich glaube, das ist 'n bisschen Fluch und Segen von gewissen gewissen Sprachen, ist ja mit Rust oder so, ist es ähnlich. Man hat halt sehr viele Sprachmerkmale oder Sprachfeatures, die man erst mal verstehen muss, rauszufinden, was wollte der Entwickler damit ausdrücken. Dafür hat man halt die Chance sehr sehr spezifisch und sehr effizient Dinge auszudrücken. Das braucht man auf der einen Seite eben, vielleicht erst mal grundsätzlich 'n bisschen weniger Code zu schreiben und auf der anderen Seite eben, auch die besagten Performance Vorteile, wenn man sie denn haben möchte, auch nutzen zu können. Also manchmal hilft ist es halt notwendig auch durchaus dem Compiler zu helfen, was man da vorhat und dazu Was sind
- Jan
- denn son paar wichtige Konstrukte, die man vielleicht kennen sollte, aber vielleicht jetzt nicht unbedingt von anderen Sprachen schon mal gesehen oder mitbekommen hat?
- Martin
- Na ja, also am, ich glaub erst mal ganz relevant ist, es gibt halt eben das Konzept von Asyn't wayite, eben für, das kennt man ja inzwischen auch aus anderen Sprachen, weil ich ehrlich gesagt weiß ich gerade nicht, aus welcher Sprache es im Ursprung erfunden hat. Das ist auch glaube ich unwichtig. Ich glaube, das Konzept ist natürlich relevant. Das heißt, man hat sehr viele asynchrone Operationen, die man dort ausführt. Das heißt, das zieht sich durch, ja, im Prinzip durch diese ganze Anwendung durch. Dann hat man natürlich verschiedene Möglichkeiten. Eben man hat eben nicht nur Klassen, sondern man kann eben auch Structs oder Records im Prinzip definieren, eben dafür zu sorgen, ob eben Daten kopiert oder eben per per Referenz übertragen werden. Dann hat man Möglichkeiten, per Referenz natürlich auch wieder rauszugeben ganz explizit.
- Dennis
- Gibt was man aber natürlich alles erst mal nicht machen muss.
- ???
- Das ist richtig.
- Dennis
- Das ist natürlich nur, das ist ja immer bei bei der Sprache, man man man kann einfach mal loslegen, man muss das eigentlich machen. Wir zum Beispiel müssen dann vielleicht schon manchmal drüber nachdenken, wenn man natürlich jetzt wieder irgendwie dem Compiler irgendwie mehr helfen will und natürlich irgendwie die die Memory efficiency irgendwie hochhalten will, dann muss ich die vielleicht diese Sprachfeatures benutzen. Und dann kann ich auf einmal auch irgendwie der Garbage Collection genaueste Anweisungen geben, was sie denn jetzt mit irgendetwas sehr Speziellem tun soll und wie sie damit umgehen soll. Aber das muss ich alles nicht tun. Also ich mein, das das kümmert sich auch wunderbar selbst diesen Kram.
- ???
- Aber ich
- Jan
- glaube, es ist 'n gutes Beispiel, weil viele Leute, also mir ging es damals so, wenn man von objektorientierter Entwicklung kommt und dann das erste Mal in der Sprache ist, die zum Beispiel zwischen, wie gesagt hast, ne, zwischen und Klassen unterscheidet, steht man natürlich erst mal da wie der Prophet vom Berg und denkt, also warum warum brauch ich denn sonen? Ich hab ja Klassen, die können ja alles und viel mehr. Warum soll ich denn überhaupt son Struct anfassen, wenn ich ein viel hochwertigeres Werkzeug quasi da daneben dran hab.
- Martin
- Ja und so ist es halt auch, wenn man Klassen schreibt, dann hat man die Wahl, kann man jetzt kann man natürlich ganz klassisch Methoden schreiben, aber es gibt auch eben das Konzept von Properties, auf die man dann mit mit Setter- oder Ghatter Attributen drauf zugreifen kann. Dann kann man die im Prinzip auch noch irgendwie rappen, dann darauf Operationen auszuführen. Also es ist die Sprache selbst bietet einem sehr, sehr viele sehr unterschiedliche Möglichkeiten, unter Umständen auch das Gleiche auszudrücken, aber eben eine verschiedene Impact in in Sachen Readability auf der einen Seite und auf der anderen Seite natürlich auch aus aus Performance Sicht natürlich hat das auch entsprechend Unterschiede. Und ja und da muss man halt auch sagen, da kommen natürlich mit der Zeit auch immer mehr Konstrukte hinzu. Also natürlich gibt's sowas wie eben im im im wie Lambda Functions, halt eben Expressions sehr effizient auszudrücken. Man kann, es gibt so son Matching
- ???
- Pattern
- Dennis
- Pattern pattern Matching, ja.
- Martin
- Pattern Matching, auch dort wieder Sachen auszudrücken. Dann gibt's glaube ich eine ganz besondere Eigenheit, ob wir über Link sprechen wollen, ja, das ist sone im Prinzip auch 'n Zusatzfeature aus dem Dot net Framework, im Prinzip sehr effizient mit Datenstrukturen zu arbeiten. Da kann man, überspitzt ausgedrückt, in 'ner sehr SQL artigen Sprache auf Daten agieren. Im Hintergrund werden natürlich dann wird halt anderer Code fabriziert, der das Ganze dann macht. Es lässt sich teilweise entweder sehr gut lesen und es kann auch sehr effizient sein, kann aber je nach Use Case auch natürlich wieder das Gegenteil verursachen.
- Jan
- Wie ist das denn mit so Skalierungsthemen, Multithreading und so was alles?
- Martin
- Ja, also es nutzt all das, was dir zur Verfügung steht. Und Du hast auch, also Du kannst dich auch manuell natürlich drum kümmern. Will man in der Regel nicht, aber man hat durchaus, also das eine nette Anwendung läuft definitiv auf mehreren deiner Kerne.
- Jan
- Musst Du da erst mal irgendwas für tun?
- Martin
- Nö. Nein. Nö. Genau.
- Dennis
- Es gibt da auch wieder, man kann sehr nah sozusagen daran arbeiten, indem man direkt irgendwie diesen Thread sagt, was sie zu tun haben oder man geht wieder 'n paar Level nach oben sozusagen und arbeitet mit Asinkaage, dann passiert irgendetwas im Hintergrund oder man macht sogenannte Tasks auf. Das ist son son Zwischen Zwischending irgendwie, was sozusagen dann wieder von der wieder gehandelt wird, aber Du weißt nicht so genau, passiert am Ende wird da jetzt 'n Thread geöffnet oder wird kein Thread geöffnet, aber es ist irgendwie Multitasking, das passt schon. Wenn's dir aber sehr genau drauf wieder drauf ankommt, dann machst Du halt direkt 'n Thread und kümmerst dich wirklich händisch diesen Thread, was man meistens wahrscheinlich nicht will. Aber man kann das alles machen, ja. Genau. Aber das ist das ist auch, glaube ich, jetzt son son Also ich Man muss schon sagen bei bei sich sharben und dem ganzen dot net, es gibt halt unglaublich viele Sprachfeatures. Und es wird immer noch mehr an Features und Sprachfunktionen halt oben drauf gepackt Und es werden eigentlich nie so selten irgendwelche Sachen mal irgendwie deplicated, die wirklich irgendwie, die wo man sozusagen vielleicht weiß, die sollte man eigentlich nicht mehr benutzen, weil sie noch irgendwie aus dem Dot Net Framework von sonst wann kamen und man sie einfach nicht mehr benutzt. Sie sind aber da und man könnte sie noch benutzen, aber das ist son common knowledge, dass man sie einfach nicht benutzen sollte. Aber sie sind halt immer noch da und das ist manchmal 'n bisschen schwierig natürlich, gerade wenn man halt eben Entwickler hat, die vielleicht schon lange dabei sind. Die benutzen diese Sprachfeatures dann vielleicht auch noch, weil sie's schon immer gemacht haben, aber eigentlich benutzt man sie nicht mehr so. Und das finde ich manchmal bisschen natürlich auch schade, dass man nicht irgendwie mal den Mut hat, auch mal irgendwen mal was abzuschneiden. Andererseits ist das vielleicht jetzt auch wieder son Microsoft typisches Ding, dass man natürlich Ja,
- ???
- das ist
- Dennis
- alles bis in die Unendlichkeit unterstützt und bloß nicht irgendwie jemanden auf die Füße tritt, dass man irgendwann mal irgendwo sagt, okay, jetzt ist hier mal Schluss und hier geht mal was nicht mehr.
- Jan
- Also ich glaub, wir lachen immer und ich hatte auch schon diesen Microsoft Gedanken grade im Kopf und ich glaub alle da draußen auch. Aber wenn man mal ehrlich ist, ist es ja eigentlich kein Microsoft Ding, sondern ist mehr son Corporate Ding. Und das ist halt das, was Microsoft bedient. Ja, definitiv. Aber wenn da halt große Firmen sitzen mit 'ner Code Base, die seit zehn Jahren nicht angefasst ist, dann ist das für die natürlich einfach 'n Plus, dass das Ding halt einfach immer weiterläuft.
- Dennis
- Ja. Eben. Also wir hatten das ja so auf Konferenzen, wenn dann so gefragt wird, mit was die Leute so arbeiten und und wie lange sie denn schon an ihrem einen Projekt dran sind. Und dann sitzen da wirklich Leute, die seit fünfzehn Jahren an der ein und derselben Software arbeiten und das natürlich auch immer noch funktioniert. Also das ja das ist sozusagen ohne größere Probleme, weil alle Sprachfeatures von damals immer noch da sind und sozusagen dieser der der der der das ist einfach immer auf die nächste Version irgendwie zu updaten. Gut, jetzt wurde mal tatsächlich mal 'n Cut gemacht, ne, mit Dot Net Core dann am schlussendlich, aber trotzdem, also,
- Jan
- ja. Und man muss ja auch unterscheiden, ne, sind das sind das veraltete, auch wenn nicht offiziell depricated ist, aber sind das veraltete Features, weil es einfach mittlerweile einen viel cooleren, einfacheren, moderneren, performanteren Weg gibt, das zu tun? Oder sind das Features mit der schlechten Reputation, weil sie eigentlich wirklich der aktiven Weiterentwicklung der Sprache im Weg stehen man sich denkt, boah, ne, wenn wir diesen Rattenschwanz hier nicht mehr unterstützen müssten, dann könnten wir so viel cooleres Zeug mit der Sprache, mit dem Framework und was auch immer machen, ja. Und solange es nur son Fehler der ersten Art ist, ist es ja auch für niemanden 'n Problem. Ja. Wird ja erst dann 'n Problem, wenn es wirklich dir irgendwo auf den auf die Füße fällt oder Du halt sagst, okay, wir wir müssten hier wirklich mal was abschneiden, weil wir sonst aber nicht vorwärtskommen, ne. Und es klang ja vorher schon auch so, als ob noch genug Vorwärtsmomentum irgendwie im Ökosystem drin ist, wo das jetzt nicht irgendwie groß zurückgehalten wird. Aber vielleicht sprechen wir auch einmal über das das Ökosystem. Ihr habt ja eingangs gesagt, ihr habt euch schon mit verschiedenen Sprachen, verschiedenen Projekten und mit verschiedenen Frameworks und so beschäftigt. Wie würdet ihr denn grundsätzlich das Ökosystem von dot net und die Community so beschreiben?
- Martin
- Ich glaube, es ist zunächst natürlich, also man hat natürlich die ganz klassischen Ansätze. Man hat Testing wird großgeschrieben, man hat entsprechend mehrere Testing Frameworks, die man nutzen kann. Es gibt für, ich würd sagen, für jeglichen Bereich, in dem man irgendwie in Berührung kommt, sehr, sehr gute Bibliotheken, also sei es irgendwie zur Verarbeitung von von von asynchronen, also Anbindung irgendwie an an an Quing Systemen, asynchrone Daten et cetera, gibt's sehr, sehr große Frameworks, die sich da zu platziert haben, ob man jetzt irgendwie PDFs oder sonst irgendwas bearbeiten will. Es gibt eigentlich für alles irgendwie Bibliotheken, die auch in 'nem, find ich, sehr guten Level sind, also oftmals eben mit Dokumentation. Manche davon gibt's auch schon sehr lange, das heißt, sie also Fluch oder Segen zugleich, aber ich mein, auch die sind dann halt historisch gut gewachsen oder durchaus stabil. Also ich glaube, man man wird nicht unbedingt Dinge finden, die nicht machbar sind in diesem Ökosystem. Und ja, ich glaub, so kann man das ganz gut zusammenfassen. Also es ist
- Dennis
- Ist aber auch schon auch so, dass viele von den von den Zusatzpackches, die's irgendwie gibt für alle möglichen Funktionen, Stück für Stück doch auch immer von Microsoft ab irgendeinem Punkt dann bedient werden. Mhm. Was natürlich in der Community offen vielleicht manchmal nicht so gut ankommt, weil natürlich dann auf einmal son son Paket dann tot ist vielleicht, weil dann natürlich, ne, wenn dann der Entwickler von der Sprache daherkommt und dieselbe Funktion anbietet, dann ist das vielleicht dann damit dann, na ja, hat sich dann vielleicht erledigt. Aber andererseits hat das natürlich auch 'n Vorteil, weil das natürlich dann einfach 'n Sprachfeature ist oder irgendwie 'n Feature, was da davon Framework Framework Feature, was natürlich dann auf einmal tatsächlich auch richtig supportet wird und dann auf einmal dann halt irgendwie mehr Power vielleicht da auch dahintersteht.
- Jan
- Also weiß das 'n Ansatz, der langfristig funktionieren kann? Also wenn ich mir jetzt vorstelle, der die die würde irgendwie durch NPM gehen und versuchen, jedes Package so nachzu implementieren, was einigermaßen erfolgreich ist, ja? Das ist ja das ist ja endlich. Also weil auf der einen Seite ist ja nur eine gewisse zur Verfügung, die das dann auch irgendwann kann, was da alles so an an Sprachfeatures geschaffen wird und und auf der anderen Seite ist ja die Community, die immer wieder neue Ideen hat, so also
- Martin
- Aber die Community kann ja auch zu diesen neuen Projekten beitragen. Ich mein, son zum Beispiel 'n schönes Beispiel ist, es gab lange Zeit, es gibt eine JSON Implementierung, die gab's von Newton Soft war die. Das war die JSON Implementierung.
- Jan
- Also Multiple Leiser meinst Du?
- Martin
- Genau und und auch noch viel mehr rund Schema, Validierung et cetera. Das heißt, das war einfach die Bibliothek, die man benutzt hat, wenn man JSON nutzen wollte. Und das ist halt einfach Teil der Standardbibliothek geworden und klar, jetzt können wir
- Jan
- Aber das ist Teil geworden der Standardbibliothek im Sinne von, das ist da aufgegangen, die haben das übernommen Nee. Haben das nachimplementieren.
- Martin
- Doch, das ist eine andere Implementierung und die ist stellenweise sehr kompatibel und gut, das liegt vielleicht auch in der Natur der Sache, dass manche Dinge ähnlich sein müssen. Aber nichtsdestotrotz ist es erst mal eine eigene Implementierung und ich mein, das das Ganze geht weiter. Es gibt zum Beispiel auch, wenn man's so will, das OEM System eben das Entity Framework, was eben auch bereitstellt. Natürlich gibt es auch andere OAM Systeme, keine Frage. Aber eben Entity Framework ist halt sehr, sehr umfangreich und erfüllt wahrscheinlich mehr als das, was die meisten brauchen, dann ist es eher die Sache, nehme ich vielleicht bewusst 'n anderes System, weil es zwar weniger kann, aber dafür einfacher zu händeln ist. Das Gleiche ist natürlich hat bringt Dot net eine Dependency Injection mit ab. Es gibt natürlich auch andere, die Eye Container, die man nutzen kann und so zieht sich das durch im Prinzip alle Bestandteile. Aber es gibt auch positive Beispiele. Es gab zum Beispiel lange Zeit eine MQTT Implementierung und die ist einfach in die Dot Net Foundation im Prinzip übergegangen. Also die haben einfach das Projekt quasi mit übernommen und es ist immer noch Community tribfer, aber im Rahmen eben der Foundation, die da hinten dran steckt, also auch diese Varianten gibt's. Und nichtsdestotrotz muss man sagen, ein ein großer Vorteil rund eben das Dotnet Framework, wenn man also immer 'n bisschen ne, auf der einen Seite hat man die Sprache und auf der anderen Seite hat man eben dieses Framework mit all den Funktionalitäten. Das liefert schon für sehr, sehr viele oder für die wahrscheinlich für die meisten Use Cases Möglichkeiten, also sei es irgendwie von irgendwie Health Checks über Anbindung an an irgendwie eine Art von von User Management et cetera. Das heißt, man hat dann auch halt auch eine gewisse Standardisierung in der also in den Anwendungen. Und das ist, glaub ich, 'n ganz, ganz großer Benefit, denn damit hat man, wenn man in diesem ganzen Ökosystem unterwegs ist, durchaus die Chance, Systeme auf eine gewisse Art und Weise zu kennen, weil man eben nicht, ich nehm jetzt mal Paradebeispiel im Frontend JavaScript Umfeld, da hat man halt natürlich zig Bibliotheken zur Auswahl und dann ist ja die Frage, welche davon setzt sich durch oder hat sich überhaupt jemals eine durchgesetzt? Und das ist in sonem Umfeld, so wie wir es empfinden, sehr, also es gibt gewisse Bibliotheken, die sind oder vielleicht auch manchmal zwei oder drei und das sind einfach die Großen und die werden auch gut supporte, die werden unterstützt, die werden wieder von anderen Bibliotheken unterstützt. Da kann man sich drauf verlassen, dass da auch eine Entwicklung weitergeht.
- Dennis
- Trotzdem, klar. Natürlich führt das manchmal zu Unmut. Also wenn da Ja, ja, klar.
- ???
- Sozusagen, ne,
- Dennis
- ist ganz klar, wenn da auf einmal irgendwie dann das aufkommt, dass da Microsoft jetzt irgendwie anfängt, irgendwie in ein eine eine gewisse Funktionalität jetzt selbst bereitzustellen, das führt definitiv immer zu Unmut erst mal. Das ja, das hoffen wir mal, dass das nicht sozusagen zu so lange zu Unmut führt, dass dann Kai, der mehr Lust hat, dem Ganzen dann irgendwie noch 'n Beitrag da zu leisten, aber ja.
- Jan
- Wer sind denn in dieser Community die großen Player? Also wenn ich mir so was wie React angucke, na ja, das kommt von Facebook, aber es gibt auch andere große, die das nutzen. Shopify zum Beispiel, die auch viel an React Native mit drumwerkeln. Jetzt haben wir schon gesehen, natürlich kommt Dot Net von Microsoft, aber wer wer hat da noch so seine Finger mit drin, den man vielleicht kennt da draußen?
- Martin
- Unter anderem Chatbrains, weil wir vorhin schon erwähnt haben, die glaub ich auch Teil der sind. Und dann gibt's da verschiedene Anbieter wie unter anderem Taleric, glaub ich, ist einer der, also die machen oder Pro Progress, die unter anderem so UI Komponenten bereitstellen. Ja, das also aber man muss schon fairerweise sagen, es ist natürlich primär von der also von Microsoft getrieben, eben trotzdem, dass es halt eben ja das Dritte im Prinzip dazu beitragen können.
- Jan
- Mhm.
- Martin
- Aber Microsoft ist die führende Kraft dahinter und die bestimmt auch am Ende die Strategie, wo das Ganze, wo die Reise da letztendlich hingeht. Und ich glaube, da gibt es keine anderen ja, Foundation Members, die da irgendwie maßgeblich in eine andere Richtung steuern könnten.
- Jan
- Nee, also es ging mir auch tatsächlich gar nicht eher die strategische Ausrichtung, sondern eher, man will ja nie im Ökosystem der größte oder zweitgrößte User selber sein. Mhm. Weißt Du? Sondern Du willst eigentlich immer, dass da noch andere sind, die in deine Probleme reinrennen, bevor sie für dich zum Problem werden und das würde ich son bisschen mit lösen. Und je mehr und je diverser große Player da drin sind, desto größer ist natürlich die Chance, dass auch wenn dein Projekt irgendwann mal mal groß wird, dass die Probleme, die Du dann triffst, schon mal jemand anderes vor dir gehabt hat so, ne?
- Martin
- Mhm. Ohne es jetzt zu wissen, aber ich weiß zum Beispiel, dass Amazon mit AWS, die haben da schon sehr, sehr früh angefangen, Dot Netsupport mit bereitzustellen. Also ich könnt mir vor, also ich weiß es grade tatsächlich nicht, ob die da jetzt Teil der Foundation sind oder Ähnliches, aber ich weiß, dass zumindest da 'n sehr großes Bestreben ist, auch Dot Net sozusagen als Plattform voranzubringen. Wahrscheinlich natürlich nicht aus uneigenen Interessen selbstverständlich. Wenn jetzt jemand da draußen diese Folge gehört hat
- Jan
- und sich denkt, boah, dieses Dot Net, das klingt megageil, das will ich auch irgendwie mal probieren. Wie schafft man denn am einfachsten mal den Einstieg? Was ist son kleines dot net Projekt, was man auch mal
- Martin
- an 'nem Abend oder an 'nem Wochenende umgesetzt bekommt? Ich würd dir sagen, es ist jedes Projekt, was in egal welcher Sprache einfach umzusetzen ist, auch mit dot net in ähnlicher Zeit umsetzbar. Ich würde definitiv nicht sagen, dass es da Einstiegshürden oder mehr Barrieren gäbe als in 'nem vergleichbaren Python Projekt, Go Projekt, Java Projekt oder Ähnlichem. Also ich glaube, es ist ganz genau das Gleiche. Man hat man hat ja so diese klassischen To do Apps, die man da irgendwie bauen kann. Ist natürlich machbar, kann man machen. Man muss sagen, die Microsoft Dokumentation rund Dot Net ist unfassbar gigantisch, aber auch sehr, sehr gut. Also man findet da drin alles. Das heißt, dass mehr oder weniger als alleiniges Werk würde schon gut funktionieren, eben einerseits die Sprache kennenzulernen und auch eben die Besonderheiten der oder was heißt die Besonderheiten oder eben die Möglichkeiten des Frameworks, weil wie gesagt, es gibt für alles gefühlt schon Lösungen und die sind auch in der Dokumentation gut erklärt. Was vielleicht 'n bisschen nicht unbedingt aus der Dokumentation hervorgeht, war das, was Martin gesagt hat, ist benutzt man das heute noch oder lässt man's lieber oder es gibt vielleicht einen besseren Ansatz auch innerhalb des eigenen Frameworks. Das geht manchmal 'n bisschen unter, weil natürlich jegliche Beispiele auf das, also quasi so runterreduziert sind, soweit es geht, halt eben das nützliche Informationen zu transportieren. Aber zumindest die Microsoft Doku ist da sehr, sehr, sehr, sehr hilfreich, würd ich sagen.
- ???
- Mhm.
- Jan
- Jetzt hattest Du ja eben auch schon mal Blazer angesprochen. Und tatsächlich gab's doch schon mal eine programmier.barefolge zu Blazer. Ist doch schon paar Jahre her. Ja. Aber wer sich die Folge zweiundneunzig noch mal anhören möchte, kann da noch mal reinhören mit dem Christian Weiher, der auch schon Wiederholungstäter hier in der programmier.bar war. Jetzt kommen wir wahrscheinlich vom Naming her in in son kleines Problem, weil Blazer ist ja auch ein Framework, was Du in diesem Dot Net Framework benutzt,
- Martin
- also Ökosystem.
- Jan
- Ökosystem, so, ja. Aber was sind dann vielleicht noch so ein, zwei andere Namen, die man vielleicht kennen sollte oder sich mal anschauen sollte? Was sind so die Standard, ne? Also Blazer offensichtlich für Websachen. Was sind noch so ein, zwei Themen, die man sich vielleicht mal anschauen sollte, wenn man neu reinkommt?
- Martin
- Genau, also Blazer eben in den zwei Varianten, eben einmal es gibt, ist zwar jetzt auch wieder combein worden, aber es gibt quasi Server Side Blazer und und quasi Client Side Blazer eben über Websampion. Jetzt gibt's den hybriden Ansatz und jetzt Blazer United heißt das jetzt alles zusammengefasst, aber im Prinzip Blazer für UI Darstellung im Browser zu ermöglichen. Dann gibt es eben das das Mavi Projekt, was grundsätzlich dafür da ist, UI Anwendungen auf allen möglichen Plattformen zu bauen und auch da gibt es eben die verschiedenen Ausprägungen. Viel hat kann da Richtung Web Webview zwei zum Beispiel gehen. Also dies generell dieses ganze Maui Projekt ist durchaus interessant, es lässt sich auch Maui mit Blazer kombinieren. Also es lassen sich im Prinzip alle Varianten ja durchaus kombinieren. Ansonsten ist Entity Framework haben wir ja schon mal angesprochen, das ist eben so, dass die Datenabstraktionsschicht, wenn man's so will. Ja, und ansonsten geht da eigentlich das meiste erst mal grundsätzlich in diesem Dot net Framework oder in ja, in dem ist in der Standardbibliothek vorhanden.
- Dennis
- Gibt natürlich noch andere UI Frameworks natürlich von anderen großen, so was wie hier Avalonia oder so was. Gibt's da Stimmt
- Martin
- für Desktop Anwendungen, Bezug.
- Dennis
- Desktop Anwendungen, ja auch Cross Plattformen, genau, ist auch einen großen Open Source Framework, mit dem man wirklich auch schöne UIs bauen kann und das, glaub ich, wahrscheinlich auch 'n guter Einstieg ist. Genau. Oder natürlich auch kann man auch einfach nur sein, natürlich eine eine Konsoleanwendung bauen, die irgendwie oder ne, die einem dann irgendwie das das einfach nur das Backend bereitstellt, irgendwie eine Angular, eine React App irgendwie rauszugeben. Auch das ist natürlich möglich. Oder natürlich, als Einstieg heutzutage, wenn man natürlich irgendwie jetzt Sprache und was anderes miteinander kombinieren will, kann man sich natürlich auch überlegen, welche welche KI App man jetzt irgendwie oder was man irgendwie vielleicht an KI Anwendungen irgendwie sich mal ausprobieren will und sich dafür vielleicht dort nett und sich sharb schnappt, da dort halt irgendwie mal was auszuprobieren. Auch da gibt's viele Integrationen natürlich, grade natürlich mit Azure. Da sind die natürlich sehr, ist klar auch da hier. Aber auch mit anderen ja, sogar ganze
- Martin
- Ja, auch das ist eigentlich 'n schönes Beispiel, weil es gibt zum Beispiel inzwischen von Microsoft eben dieses Semantik Kernel Genau. Projekt, was im Prinzip schlichtweg Integration von Sprachmodellen bereitstellt, also klar angefangen mit mit den eigenen GPT Modellen, die man da ansprechen kann, aber inzwischen gibt's auch eine Antropic Integration und auch das ist es ist zwar fairerweise vielleicht, das hat man vielleicht nicht ganz eindeutig gesagt, aber das sind natürlich einzelne Pakete, man auch als Lipendence im Prinzip installieren kann, aber es ist alles eben Teil von diesem ganzen Dot net Framework innerhalb dieser ganzen Microsoft Welt. Also man könnte sagen, es ist einfach 'n Teil wie jedes andere auch und das ist auch das, was wir ja eingangs gesagt haben. Dieses ganze Dot net Framework liefert inzwischen für alles mögliche für alle möglichen Technologien und und und Schnittstellen im Prinzip Lösungen. Das heißt, in diesem Standard in dieser Standardbibliothek findet man einfach für alles etwas. Das heißt, man braucht gar nicht direkt noch weitere Abhängigkeiten, Dritter, sondern ja.
- Dennis
- Es gibt jetzt Neues jetzt grade, was man gesagt sehr stark draufsetzt, ist das ist das nennt sich das. Das ist sozusagen, lokal, im Moment zumindest alles relativ lokal, sozusagen zu simulieren, wie das aufm Server laufen würde. Das heißt, da werden dann die einzelnen Bestandteile irgendwie automatisch in irgendein Docker, in irgendeiner Art von Container gepackt. Man kriegt auch man kriegt eine bereitgestellt, wo man sozusagen sieht, was wo läuft, welche Ports sind da offen. Man kann das irgendwie konfigurieren, man kann irgendwie auch von Microsoft dann natürlich gibt's dann spezielle Container bereit geschaltet, weil man einfach dann über dieses UI, was einem da mitgegeben wird, dann irgendwie einen einen Radys hochfahren oder sonst irgendwie was und da relativ schnell son ganzes Cluster schaffen und man kann sozusagen die miteinander reden. Und das ist einfach alles nur so über Konfigurationsdateien miteinander eben relativ schnell zusammengesteckt. Und dann baut man da irgendwie halt sein sein Kot drum rum und dann hat man auf einmal 'n relativ komplexes System geschaffen und hat aber gleichzeitig lokal immer noch die Möglichkeit, diese ganzen Sachen halt eben einfach zu verwalten, ohne jetzt sich da irgendwie
- Martin
- muss halt nicht selbst anfangen, irgendwie sein Cubanetes Cluster lokal zu haben, da in seine Docker Container hochzufahren.
- ???
- Genau, also
- Martin
- Die Orchestrierung übernimmt dann einfach Aspier und es geht einfach. Ja. Und auch dann wieder, dass es 'n Tool von Microsoft entwickelt, aber nichtsdestotrotz findet es, klar, selbstverständlich ist es dann in Visual Studio integriert oder inzwischen auch in Rider vorhanden. Das heißt, auch da kann man auf Knopfdruck sagen, so setzen wir jetzt, also grade wenn man halt in diesem Microservice Set-up irgendwie drin ist, wo man halt irgendwie verschiedene Container braucht, ist es dann einfach da. Mit der Idee, dass es ja genauso mehr oder weniger vielleicht irgendwann auf Knopfdruck in Azure oder Co landen soll. Mhm.
- Jan
- Dann vielleicht noch so zum Ende hin, die eine vielleicht alles entscheidende Frage. Was sind denn potenzielle Use Cases oder Szenarien, wo Dot net vielleicht nicht so geeignet ist oder seine Stärken ausspielen kann?
- Martin
- Ich hätte ursprünglich mal gesagt, wenn man so Rapid Prototyping machen wollen würde, ist einfach schon c-sharp relativ verbaus. Dadurch, dass es eben statisch typisiert ist, muss man halt genau wissen, was man in der steckt. Da sind natürlich, also es ist halt schön ist einfacher, wenn wenn keine Ahnung mal schnell irgendwie 'n Modell Game Modell ansprechen will, dann kriegt man das halt mit drei Zeilen Python hin. Mit C-Sharp braucht man da 'n paar Zeilen mehr, aber auch da gab es jetzt zumindest zuletzt Initiativen, also auch ursprünglich war das so, natürlich muss auch in C-Sharp alles in der Klasse sein. Man kann dieses Ganzen diesen ganzen Klassenoverhead auch inzwischen weglassen kann im Prinzip einfach drauf drauflosschreiben. Auch das geht. Das hat man da 'n bisschen einfacher gemacht. Ansonsten gäbe es jetzt, glaub ich, vielleicht Ja,
- Dennis
- es ist halt immer so die Frage. Also ich mein, ich glaube, jetzt grade so auf Mobilentwicklung, das kann man schon alles machen, aber ich hab immer noch das Gefühl, ich glaube, da ist vielleicht eine Entscheidung für irgendetwas anderes manchmal vielleicht auch noch besser einfach
- Jan
- Mobile Apps, die in dot net gebaut sind?
- Martin
- Tatsächlich keine aus Anhieb.
- Dennis
- Ich hab grade gestern in der Sorge gelesen, dass jetzt der mein mein mein Passwort Manager Bitwarden, dem ich in dot net geschrieben war.
- Jan
- Ach war. War. Jetzt nicht mehr.
- Dennis
- Genau, jetzt gab's 'n Update, Sie haben das jetzt nativ umgesetzt.
- Jan
- Okay. Macht mit dieser Information was wir wollen.
- Dennis
- Weil Sie geschrieben haben, dann die Integration einfach vom Betriebssystem einfach besser ist und sie das dann irgendwie wohl offensichtlich da besser hingekriegt haben. Das auch einfach so, ne, wenn man klickt irgendwie 'n Inputfeld an und dann kommt dann da auch das und so weiter. Also Ja,
- Jan
- aber auf Mobile, ich mein, wir sehen das ja auch, ne, in in anderen Sprachen oder Frameworks auf Mobile, wo sich a die Betriebssysteme noch viel schneller entwickeln als vielleicht aufm Desktop oder aufm Server das ist und auch die dazugehörenden und und OS Features einfach sich wechseln von Generation zu Generation, ist vielleicht auch noch mal 'n stärkerer Case dann für da direkt mitzuarbeiten. Ja.
- Martin
- Ich glaub hybride Apps sind einfach schwierig.
- Dennis
- Und schwierig. Ja. Ja. Genau.
- Martin
- Und je mehr Integration sie bedarf oder benötigen, desto schwieriger wird's letztlich, ja.
- Jan
- Da würden wahrscheinlich auch hier im Haus einige widersprechen, aber es kommt wahrscheinlich einfach drauf an, Ja. Was man auch damit machen will am Ende des Tages. Bestimmt. Ja. So. Meine letzte Frage, welche Frage hab ich euch nicht gestellt? Wo sagt er, oh mein Gott, wieso hat der Jan das nicht gefragt? Das wär doch offensichtlich gewesen, was darüber zu reden. Ich glaub, man
- Martin
- kann nur sagen, es ist 'n gigantisches Ökosystem. Wir haben jetzt ja nur 'n Bruchteil davon erörtert und fairerweise auch wir sind nur in einem Bruchteil von diesem ganzen Ökosystem unterwegs. Ich mein, man kann ja auch dot net im mit Spieleentwicklungs würde würde auch einhergehen, alles irgendwie rund Unit wird ja in dot net oder zumindest in Sí Sharp geschrieben. Da sind wir natürlich auch fairerweise raus und ich glaube, das ist am Ende Fluch und Segen zugleich, Es ist 'n Riesenökosystem mit Riesenchancen in allen Bereichen. Man muss halt die Chancen haben, sich mit diesen ganzen Themen auch beschäftigen zu können oder zu wollen. Und
- ???
- Mhm.
- Martin
- Ich glaube, nichtsdestotrotz ist es eine sehr gute allgemeingültige Sprache. Es gibt wenig Gründe dagegen.
- Dennis
- Ich glaube, viele für viele ist das einfach nicht so im Fokus, einfach da da das zu nehmen. Also ich glaube, also ich könnte mir vorstellen, dass es oft sozusagen, wenn's darum geht, was setzen wir für eine Sprache ein, setzen wir für 'n Framework ein, wahrscheinlich Dot Net, wie ich hab, diese zwei Worte nicht fallen. Einfach weil man, glaube ich, immer noch, haben wir zumindest das Gefühl, dass man natürlich immer noch dran denkt, ne, so wie Du ganz am Anfang erwähnt hast, meine einzige Berührungspunkt ist, ich hab mit Windows mal wieder irgendwie dreißig Updates bekommen und siebzehn davon waren irgendwelche dot net Ja. Dinge. Was soll das? Das nervt mich nur. Lass mich damit in Ruhe. Und ich glaube, so haben viele davon irgendwie noch den Eindruck oder es ist halt irgendwie dieses uralte dot net Framework, keine Ahnung. Damit hat man Windforms gemacht und man kennt ja auf Windows manchmal solche Anwendungen, die auch noch so aussehen wie von damals. Und die gibt's immer noch und die sind damit auch gebaut worden. Und ich glaub, da hängen halt viele fest und ich Dass aber sozusagen durch das ganze System, das ganze Ökosystem so sehr weiterentwickelt hat und dass man jetzt so viel viele sehr andere Sachen damit machen kann und dass man das auch durchaus total super aufm Server einsetzen kann, irgendwie schnell mal irgendwie sone Server des Function zu schreiben, lalalalan
- Martin
- Anwendung. Also vielleicht, das haben wir nicht unbedingt erwähnt, aber man braucht halt heute inzwischen keine Run time mehr, ums auszuführen, sondern man kann das genau so bauen, dass es halt im Prinzip all das mitbringt, was es benötigt. Das baut man dann fairerweise spezifisch für eine Plattform an der Stelle, aber es ist quasi self contained executable wahlweise eben auch mit AOT, dann ist es wirklich für diesen für diesen Plattform gebaut. Also all das, was es halt früher gab mit Run Times und Co fällt auf eine gewisse Art und Weise weg, wenn man das denn möchte.
- Dennis
- Genau. Ich glaube die
- Martin
- Freiheit, also die Wahlfreiheit ist immer gegeben.
- Dennis
- Ja, also ich glaub einfach daran scheitert's oft einfach, dass man immer noch dieses alte Denken dadrüber hat, wie's halt mal war und dass das aber heutzutage Und ich meine, klar, wenn man sich nicht das genauer mal anguckt, warum sollte man das auch wissen, dass man das sozusagen, das ganze System, das ganze Ökosystem sich einfach grade weiterentwickelt und auch wirklich schnell sich weiterentwickelt und auch schnell da irgendwie Dinge passieren relativ zügig. Was manche alten Dot Net Entwickler nicht gut finden. Aber so, wenn man ausm Webumfeld kommt, dann kennt man das ja. Genau. Also ich glaub, man sollte dem einfach mal eine Chance geben.
- Jan
- Wunderbar. Dann haben wir vielleicht heute einen Beitrag geleistet, dass in Zukunft mehr Leute an Dot Net und C-Sharp denken, wenn sie das nächste Mal eine Cross Plattform Anwendung oder was aufm Server oder was auf oder eigentlich überall Eigentlich überall, genau. Bauen müssten, wunderbar. Dann bleibt uns ja gar nicht mehr so viel, außer dass wir noch ein paar vorstellen wollten. Und weil ich vorhin Dennis zuerst gefragt hab, ob er seine Hausaufgaben gemacht hab, darf Dennis anfangen.
- Martin
- Ich darf anfangen, das ist ja schön. Ja, mein Pick of the day ist eben gar nicht Microsoft typisch oder Windows typisch, stell ich ein Terminal vor. Das Ganze heißt Ghoste oder Ghost t ty, das kann man so oder so aussprechen. Das Ganze Ding, es ist 'n Open Source Terminal Emulator, den gibt's seit, glaub ich, Dezember unter 'ner MIT Lizenz. Der ist von dem Mitchell Hashimoto, von im Hintergrund oder der ursprüngliche Founder von von Hashicorb rund Terraform und und Pecker hat er ja gebaut und der hat sich gedacht, er kann einen besseren Terminal Emulator bauen und das Schöne an dem er ist schlank, klein, schnell läuft auf allen Plattformen
- Jan
- Und nativ hab ich gelesen
- Martin
- Und nativ. Überall. Genau auf allen Plattformen nativ. Er ist in Sik gebaut, also wenn wir schon über verschiedene Sprachen sprechen, ist es mal wieder eine andere Sprache. Ja, er ist es ist wirklich schnell. Er kann Terminal darstellen und das rasend schnell, wenig Memoryusage, super. Kann man nutzen, ist über die gängigen Paketmanager und Ähnliches erreichbar.
- Jan
- Ist das was, was ihr oft wechselt? Euer Terminal?
- Martin
- Ich sag mal so, dadurch, also lange Zeit war ich ja eher unter Linux unterwegs, da hab ich die ganze Zeit gefühlt dasselbe Terminal verwendet. Aktuell unterm Mac hab ich jetzt paar Mal lustigerweise mein Terminal gewechselt auf der Suche nach dem besten Terminal. Aber ja, am Ende fühlt man sich doch irgendwie in jedem Terminal zu Hause, aber es ist nett. Also ich mein, es erscheinen
- Jan
- auch zum Glück nicht täglich neue Terminals. Ja, zumindest bekommt man's nicht mit. Wahrscheinlich erscheinen viel mehr Terminals, als man denkt.
- Martin
- Das stimmt. Das ist
- Jan
- richtig. Wunderbar, dann ghosty für alle, die 'n neues oder anderes oder schnelleres Terminal suchen. Martin, was hast Du im Gepäck?
- Dennis
- Ja, ich bin mal absolut jetzt bei mir hier und Dot net und die Sharp hier als Thema haben, natürlich da jetzt mal geblieben.
- Jan
- Endlich einer, der die Flagge hochrätllt.
- Dennis
- Endlich mal, genau. Und habe mal Sharplab dot I o mitgebracht. Das ist ein Dot net Code Playground. Das hört sich erst mal relativ simpel an. Das Interessante daran aber ist sozusagen, dass man auf 'ner linken Seite schreibt man seinen C Sharp Code und auf der rechten Seite sieht man sozusagen dann, wie der Compiler diesen Code sieht. Das kann sehr hilfreich sein, einfach die Dot net oder sie sharp einfach mal besser zu verstehen. Weil das haben wir jetzt eigentlich gar nicht hier so angesprochen, wie wie wie Dot wie Dot net und sie sharp eigentlich sozusagen da so funktionieren am Ende, dass ja dieser dass der sehr dieser die Sharp Code, den man schreibt, erst mal in sone Art Intermediate language übersetzt wird und oder sozusagen der der Code wird geloard heißt das sozusagen. Das heißt, ich schreibe irgendeinen benutze irgendein Sprachfeature, aber am Ende wird das erst mal sozusagen auf einen sehr simples Sprachfeature runtergesetzt. Und das ist das, was am Ende sozusagen eigentlich der Compiler sieht. Das heißt, wenn ich jetzt, es gibt zum Beispiel son Using Statement oder so was in in in C-Shar, wenn ich das benutze und das jetzt in diesem Sharp Label, wenn man mal irgendwie in Bayern schreiben würde, ich mache irgendwie Using, bla bla, dass am Ende da eigentlich son Drive Finaly Block sozusagen draus gebaut wird und dieses Using gar nicht der Compiler niemals sehen wird, weil das nur eigentlich 'n Sprachfeature auf dem High Level aber sozusagen das überhaupt nicht in dem Compiler überhaupt ankommt. Das ist auch bei bei C Sharp sowieso so, dass viele dieser neuen Sprachfeatures, die jetzt da sind, sind eigentlich nur oben drauf gesetzt. In dem Compiler kommen die nie an, weil die erst mal durch diese Intermediate language sozusagen durchgehen und alles erst mal runtergebrochen wird auf ganz und sonst irgendwie. Und sozusagen mir diese Sprachfeatures nur dafür da sind, dass ich als Entwickler sozusagen ich das Einfache hab und dass der Code schöner ist und dass ich da sozusagen schneller voran komme und eben nicht wie früher halt irgendwie meine Vorschleife da schreiben muss. Sondern ich hab einfach andere Schleifen, die einfach schneller gehen. Ich hab irgendwie bestimmte Sachen, so. Und das eben zu sehen, was der halt eben sieht, gibt's ist dieses Scharplip sehr interessant, weil man einfach eben einfach da mal sieht, was eigentlich passiert, wenn ich bestimmte Sprachfeatures benutze. Und die werden ja dann auch sozusagen so gelauert, dass sie die bestmögliche Performance am Ende bieten. Und das ist natürlich auch interessant als Entwickler, das sozusagen, wie könnt ihr eigentlich etwas schreiben, dass es die bestmögliche Performance hat? Ist c sharp self hosted,
- Jan
- also ist c sharp in c sharp gebaut?
- ???
- Mhm.
- Jan
- Und auch diese höheren Sprachfeatures nicht, die Martin grade angesprochen hat?
- Martin
- Ich glaub davon 'n Teil, aber Ja, ich glaub auch. Ansonsten existiert schon noch spannende Frage.
- Jan
- Okay. Das ist alles.
- Dennis
- Aber genau, also das ist Sharplab dot I o, kann ich mal empfehlen. Da kann man mal sehen, was eigentlich was eigentlich der Compiler am Ende wirklich fürn Code bekommt. Und zusätzlich noch, man kann dort auch verschiedene Tranches auswählen von dot net, was immer ganz interessant ist, weil sozusagen man sieht, es gibt jetzt irgendwie auf GitHub gibt's 'n neues, es soll 'n neues Feature kommen in dot net. Und dann gibt's eben irgendwie 'n Branch und so und in diesem Sharplab kann man das dann sozusagen mal ausprobieren. Mhm. Kann dann diesen speziellen Branch wählen und kann sozusagen mal dieses neue Feature ausprobieren. Ob das am Ende dann wirklich reinkommt oder nicht, das weiß man dann bis zu vielleicht zu dem Zeitpunkt noch nicht, aber zumindest sieht man mal, was was da passiert.
- Martin
- Ja. Cool. Und ich würde noch nachreichen, dass wenn man mal in das Roslin Projekt reinschaut, das ist eben der Dot Net Compiler, der besteht zu siebzig Prozent aus S-HP. Siebenundzwanzig Prozent Visual Basic dot net.
- Jan
- Also das ist vielleicht Altlast. Ja. Also kann man zumindest vielleicht unterstellen, dass das in C-Sharp weitergebaut wird. Vielleicht jetzt nicht der Vollständigkeit halber, aber vermutlich wird ja alles Neue dann. Ja. Ich kann mich vorstellen, dass heute noch jemand viel neuen Visual Basic Code schreibt.
- Martin
- Ja, am Ende, wie gesagt, man kann Visual Basic dot net schreiben oder c-Sharp oder f-Sharp und am Ende ist durch diese Intermeted language landet am Ende alles im selben oder wird durch denselben Compiler kompiliert und am Ende kommt das Artefakt raus. Also von daher würd ich aber die Frage beantworten. Ich glaube doch, dass der größte Teil vom Compilern doch auch in sich abgebaut ist.
- Jan
- Ich hab heute was ganz anderes dabei. Ich hab eine ein City, ein ein Album dabei. Und zwar haben wir neulich zu Hause einen Film geguckt mit meiner Tochter und es kam an eine Musik im Hintergrund. Es war ein sehr klassisches Stück und ich hab son bisschen mit gezoomt. Und sie meinten dann so, wieso wieso kennst Du das? Wir gucken auf den Film grade zum ersten Mal. Und da hab ich versucht, dir zu erklären, dass es halt gewisse Musikstücke gibt, die a schon son bisschen älter sind, noch viel älter als ich so, ja? Und die man ja vielleicht schon mal so kennen kann. Und da hat sie mich gefragt, wo das herkommt und und so weiter. Und ich so, okay, jetzt muss ihr das aber auch mal irgendwie näherbringen und irgendwie zeigen. Und dann sagt ihr, das wär voll die Folter, wenn Du jetzt dein Kind so durch eine ganze Oper irgendwie durchquälzt, nur immer so ein Stück zu zeigen oder so. Weißt Du, willst dir was ausm Nussknacker zeigen oder so, jetzt musst Du erst mal eine Stunde da sitzen
- Dennis
- und Checkows gehören oder so. Mhm. Das, ja. Ja, da mögen ja alle Kinder.
- ???
- Ist auch
- Jan
- Erwachsene manchmal schwierig. Ja. Genau. Und da hab ich ein ein ein Album gefunden und da gibt's tatsächlich schon mehrere Teile mittlerweile. Ich hab jetzt nur den ersten Tag gehört und der heißt, das Album heißt, ich mag keine Klassik, aber das gefällt mir. Und da gibt's fünf Teile bisher oder so. Und das ist halt wirklich nur aus vielen Opern oder Kompositionen halt so die bekannten Stücke so raus, ne. Es gibt da irgendwie, da ist der Ritter bei Kirnen dabei, da ist irgendwie Offeruna dabei, da ist also Sprach, Zara, trustra, bla. Du hörst halt so immer nur so ein, zwei, drei Minuten son Stück, was eigentlich jeder kennt. Du weißt jetzt, okay, von wem ist das, von wann und bla, kannst son bisschen durchhören und gehst halt einmal so durch die Musikgeschichte durch. Und das sind halt auch alles irgendwie Teile, die auch Spaß machen zu hören, so, ja. Und das fand ich irgendwie ganz cool. Also wenn ihr euch auch mal wieder Klassik anhören wollt, ohne euch zu viel Klassik anzuhören, dann kann ich empfehlen, ich mag keine Klassik, aber das gefällt mir. Das fand ich wirklich. Auch vom vom Naming und vom Branding her ist super
- Dennis
- schön gemacht. Ja, ja. Sehr schön. Mhm.
- ???
- Und wie
- Martin
- lang geht denn son Album?
- Jan
- Erschreck, also es sind erschreckend viele Titel drauf. Mhm. Ich glaub, das erste Album sind so zwei CDs oder so, die ja, weil das alles nur zwei Minuten Tracks sind.
- ???
- Mhm. So und
- Jan
- das sind halt dann schon so einiges reingeknallt. Aber ja, ich hab dann, als ich das gefunden hab, hab ich danach auf der Zugquartier ins Büro das Album einmal durchgehört und das hat offensichtlich gereicht, anderthalb Stunden zu überbrücken.
- Dennis
- Findet man auf Spotify?
- ???
- Findet man auf Spotify weiß, ich hab's auf
- Jan
- einfach Musik gefunden. Ich nehm mal auch anders das auf Spotify, ist aber wir werden das verlinken. So und damit sind wir auch schon wieder am Ende von der Programmierfolge. Tausend Dank Martin, dass Du da warst. Tausend Dank Dennis, dass Du wieder da warst. Ja. Falls ihr da draußen noch Fragen, Anregungen, Kritik, Wünsche oder Sonstiges habt, dann immer gerne eine E-Mail an Podcast at Programmier Punkt bar oder eine Kommentar bei Shopify, Gott, Spotify, Youtube, Instagram, Blues Guy, LinkedIn, Twitter sind wir nicht mehr. Guckt zumindest keiner mehr nach, den Account gibt's noch, aber den haben wir jetzt erst mal stillgelegt. Ansonsten freuen wir uns immer von euch zu hören und hören uns dann
- Dennis
- bald wieder.
- Jan
- Bis dann. Tschau, tschau. Tschüs.
- ???
- Tschau.