Gruselige FOR-Schleifen

Es gibt 165 Antworten in diesem Thema, welches 17.723 mal aufgerufen wurde. Der letzte Beitrag (11. Juni 2022 um 02:54) ist von oobdoo.

  • Hä?

    Na gut, solche Konstruktionen waren damals ja schon ein Indiz für einen nicht-sauberen Programmierstiel. Sparsam eingesetzt ist GOTO aber durchaus ein sinnvoller Befehl.

    Früher waren 64k unglaublich viel, heute reicht es nicht mal mehr für "Hello, world!".

  • Sauberes oder unsauberes Programmieren ist eh so, als würden wir hier diskutieren, wer der beste Liebhaber ist. Ich habe an meiner Arbeitsstelle den Leitsatz "Code von anderen ist immer scheiße" eingeführt. Seitdem sind alle viel entspannter, weil klar ist, dass das ohnehin alles Murks ist...;)

    Bitte melde dich an, um diesen Link zu sehen.

    Bitte melde dich an, um diesen Link zu sehen.

    Bitte melde dich an, um diesen Link zu sehen.

  • Einen guten Weg (für ein 8-Bit-BASIC) für den Umgang mit GOTO und GOSUB hat meiner Ansicht nach übrigens das BASIC des Enterprise 64/128 gewählt. Da braucht man diese Befehle für nichts, sie sind aber noch drin. Das Handbuch erwähnt sie aber nur im Abschnitt über 'Minimal-Basic', dessen einziger Existenzgrund die leichtere Portierbarkeit von Programmen aus anderen, einfacheren Dialekten ist. Von der generellen Verwendung wird abgeraten...aber verhindert wird es natürlich nicht.

    Bitte melde dich an, um diesen Link zu sehen.

    Bitte melde dich an, um diesen Link zu sehen.

    Bitte melde dich an, um diesen Link zu sehen.

  • Wie es auch damals (1981) eleganter ging, hat z.B. das Bitte melde dich an, um diesen Link zu sehen. gezeigt. Das hatte neben anderen Vorteilen auch Prozeduren, lokale Variablen und Konstrukte wie REPEAT ... UNTIL. Der C64 hatte auch schon für die damaligen Zeit ein "grottiges" BASIC. Der hat Generationen von Programmierer verhunzt! :D

    Der BBC Micro hatte 32 KByte ROM, oder nicht? Dass man in mehr Speicher auch mehr Befehle unterbringen kann, ist jetzt nicht wirklich etwas, was man "zeigen" muss.

    Für seine schlappen 9 KByte Platzverbrauch war das Basic V2 ein kleines Meisterwerk.

    Bitte melde dich an, um diesen Link zu sehen. - Ratespiel • Bitte melde dich an, um diesen Link zu sehen. - BASIC-Erweiterung • Bitte melde dich an, um diesen Link zu sehen. - Sprite-Editor • Bitte melde dich an, um diesen Link zu sehen. - Zeichensatz-Editor Bitte melde dich an, um diesen Link zu sehen. - 2048 Blöcke

  • Du weißt, wie ich es meine. Außerdem gibt's noch reichlich andere Programmiersprachen, die GOTO nicht haben und nie hatten. BASIC ist aus meiner Sicht eine Programmiersprache, die man normalerweise komplett umschiffen sollte, falls möglich.

    Also jetzt mal ganz langsam mit Euren Goto-Hass-Tiraden.

    Wie will man BasicV2 bitte ohne Goto und Gosub programmieren? Das geht wohl nur für kleine Testprogramme.

    Und: ich gehöre zu den Goto-Beführwortern. Beruflich programmiere ich in VB.Net und da ist mir manchmal eine Goto ziemlich recht, um eine Sub sauber(!!!) zu verlassen. Immer noch besser als abenteuerliche Konstrukte, bei denen der Tabulator der ersten Spalte dann irgendwann auf 130 steht und man im Source nichts mehr sieht, weil der Text zu weit rechts anfängt...

    Das hab ich nicht gesagt. Natürlich geht das in BASIC v2 nicht. Ich hasse GOTO ja auch nicht. Ich hasse auch BASIC nicht. (Wäre ich schön blöd, warum sollte ich denn solche Energien investieren; das ist nur eine Programmiersprache.) Ich weiß gar nicht, wo Du das rausgelesen haben willst. Ich versteh gar nicht, wie man das so interpretieren konnte. Meine Güte ... tut mir leid, dass ich überhaupt was dazu gesagt hab.

    Was Du da beschreibst, klingt eher nach Dingen, die man in Assembler macht. Entschuldige, wenn ich das so sag. Es muss ja auch keiner glauben, dass man GOTO nicht braucht, wenn die Sprachdefinition sauber ist. Dazu haben sich ganz andere Leute den Kopf zerbrochen und Bücher geschrieben. Das ist doch alles nicht meine Erfindung. Ich hab nicht von Konstrukten gesprochen, bei denen „der Tabulator in der ersten Spalte“ irgendwo steht. Das ist sowieso Quatsch. Da geb ich Dir recht. So funktionieren Sprachen ohne GOTO aber auch nicht. Übrigens kann man Sourcecode schon schön sortieren und einrücken, damit alles lesbar bleibt. Und nebenbei bemerkt: es ist mir noch nie passiert, dass ich eine Subroutine nicht sauber verlassen konnte, obwohl ich kein GOTO zur Verfügung hatte (eher im Gegenteil). Das Argument kann ich mir nicht vorstellen. Tut mir leid. Allerdings habe ich nach dem Commodore nie wieder in BASIC programmiert. Beruflich war das bei mir SAP ABAP, das hat dafür andere üble Fehler in der Sprachdefinition, da hab ich vielleicht darüber geflucht. Privat finde ich Python besser (und bitte: keine Grundsatzdiskussion. Es gibt bestimmt genug Leute, die Python aus beliebigen Gründen nicht mögen. Es gibt an Python durchaus Dinge, die ich auch nicht mag.)

    Schon mal Pascal, C, C++, Python, Java ... angeschaut? Und ich sag nicht, dass irgendeine davon „die beste Programmiersprache“ ist. In manchen kann man sowas wie GOTO verwenden (Pascal beispielsweise), aber man kommt in diesen Sprachen komplett ohne aus und es ist definitiv besser lesbar, was langfristig definitiv wichtig ist. Das Beispiel von oben zeigt das doch: Programmcode sollte so gut lesbar sein, dass auch ein Außenstehender noch versteht, was man damit erreichen sollte.

    In solchen Sprachen, die kein GOTO haben, könnte sowas wie in dem Beispiel oben gar nicht passieren. Vielleicht ein lustiger anderer Fehler, das ist klar, aber dieser Code wie im Beispiel oben kann nur entstehen, wenn man GOTO hat. Man kann anzweifeln, dass der Code sicherer wird, wenn man kein GOTO hat, das ist Euer aller gutes Recht, aber es entspricht nicht den Tatsachen. Und der Programmcode von oben ist ein gutes Beispiel dafür. Es ist sauberer, wenn man nicht einfach so irgendwo anders hinspringen kann. Wenn man es macht, muss man es gut dokumentieren und beherrschen. BASIC v2 funktioniert nicht anders, das stimmt. Da muss man damit leben, das ist klar. Mein persönlicher Eindruck ist: es ist anstrengender, als modernere Programmiersprachen. So, mehr ist es nicht.

    GOTO ist ein Konstrukt, das funktioniert und mit dem man Software schreiben kann. Auch kommerzielle Software. Das ist doch nicht die Frage. Nur: es macht den Programmcode definitiv schwerer zu verstehen. Wenn Du gut damit klar kommst: super, vielleicht bist Du schlauer als ich.

    Es gibt Programmiersprachen, die GOTO nicht kennen und dennoch super funktionieren. Programme ohne GOTO sehr viel sauberer und besser determiniert. Muss man nicht glauben. Ist auch nicht (nur) meine Meinung. Ich „hasse“ grundsätzlich nicht. Du und jeder ander (auch ich) können gerne GOTO weiterhin verwenden. Kein Problem. Auch dass BASIC v2 nunmal nicht ohne kann. Geschenkt. Das liegt aber an der Sprachdefinition. Es ist nicht in Stein gemeißelt, dass BASIC so aussehen hätte müssen. Micro-Soft hätte das auch anders machen können und es wäre mindestens ein so großer Hit geworden. Klar, dass viele Homecomputer mit BASIC ausgerüstet wurden: es war und ist leicht zu lernen und man kam schnell zu Ergebnissen. Kein Thema, das streitet doch niemand ab.

    Du sprichst von einem anderen BASIC Dialekt ... schön. Irgendwie sprechen hier alle nur von BASIC, als ob das die einzige Programmiersprache der Welt wäre. Selbst am C64 gäbe es noch andere. Wird übrigens hier in einem anderen Thread diskutiert.

    So ... das ist einfach meine Meinung dazu. Ihr könnt mich dafür von mir aus nicht mögen, nur hab ich halt auch meine Erfahrung als Entwickler. Jeder macht seine Erfahrungen. Wenn Du GOTO toll findest: super, mach das. Ich finde es halt weniger toll und das nicht einfach, weil ich vielleicht irgendwie zu blöd dafür bin, falls man mir das unterstellen will.

    Weiter sag ich da nichts mehr dazu ... tut mir wirklich leid, das losgetreten zu haben. Ich mag es nicht, mich rechtfertigen zu müssen. Warum muss ich mit GOTO programmieren, wenn es in Python gar nicht geht? Das verstehe ich nicht. Aber ich muss auch nicht alles verstehen.

    Schönen Nachmittag noch.

    “64k should be enough for everybody.” (nicht Bill Gates)

    “Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.” (Medieval Aphorism)

    “It's never the PLA!” (Dr. House?)

  • Und: ich gehöre zu den Goto-Beführwortern. Beruflich programmiere ich in VB.Net und da ist mir manchmal eine Goto ziemlich recht, um eine Sub sauber(!!!) zu verlassen.

    Was für Software ist das denn?

    Bitte melde dich an, um diesen Anhang zu sehen. :verehr: .: Mit Bitte melde dich an, um dieses Bild zu sehen.wäre das nicht passiert! :. :prof:  Bitte melde dich an, um diesen Anhang zu sehen.

    :syshack: .: Meine 3D-Drucker Teile auf :. Bitte melde dich an, um diesen Link zu sehen. :strom:

  • Sauberes oder unsauberes Programmieren ist eh so, als würden wir hier diskutieren, wer der beste Liebhaber ist. Ich habe an meiner Arbeitsstelle den Leitsatz "Code von anderen ist immer scheiße" eingeführt. Seitdem sind alle viel entspannter, weil klar ist, dass das ohnehin alles Murks ist...;)

    Das ist aber zynisch, findest Du nicht? Damit kapituliert man doch vor den Problemen. Ich versuche da schon positiv dran zu gehen und die Frage zu stellen, wie man so programmiert, dass ein anderer das versteht.

    Dazu wäre natürlich eine Dokumentation hilfreich. Am besten eine, in der nicht der nachfolgende Programmcode in Prosa drin steht, sondern vielleicht eher die Erklärung „warum“ der Programmcode so ist und nicht anders. Das würde ich durchaus für hilfreich halten, den Code von jemand anderen lesen zu können.

    Wenn alles ohnehin Murks ist ... ja, ich kann's nachvollziehen, geht mir auch oft so. Aber dann wäre es besser, das Handtuch zu werfen, die Reißleine zu ziehen, Land zu gewinnen, alles hin zu schmeißen ... und was anderes zu machen.

    “64k should be enough for everybody.” (nicht Bill Gates)

    “Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.” (Medieval Aphorism)

    “It's never the PLA!” (Dr. House?)

  • Ich weiß nicht, wo jetzt eigentlich das Problem ist. Wenn ich fremden Programmcode sehe, dann lösche ich diesen erstmal und ersetze ihn durch meinen eigenen. Das ist wie bei Hunden, die ihr Revier markieren. :D

  • Was für Software ist das denn?

    Das ist eine Datenbankanwendung, die ziemlich lokal auf meinem Brötchengeber zugeschnitten ist.

    Früher waren 64k unglaublich viel, heute reicht es nicht mal mehr für "Hello, world!".

  • Was Du da beschreibst, klingt eher nach Dingen, die man in Assembler macht.

    Das hatte ich ja in einem vorherigen Post geschrieben, dass ich ja eigetlich vom 6502-Assembler zu VB.Net gekommen bin :wink:

    Übrigens kann man Sourcecode schon schön sortieren und einrücken, damit alles lesbar bleibt.

    Schwierig bei Visual Studio. Wenn man da was in den Einstellungen ändert, schauts wieder komplett anders aus und man erkennt seinen eigenen Source nicht mehr.

    So ... das ist einfach meine Meinung dazu. Ihr könnt mich dafür von mir aus nicht mögen, nur hab ich halt auch meine Erfahrung als Entwickler.

    Meine Erfahrung ist, dass wir älteren Entwickler gerne mal etwas vereinfachen, da gehört ein Goto zum Ausstieg aus einer Sub dazu (ich räume gerne am Ende der Sub auf, im Wesentlichen sind das übrigens die einzigen Gotos, die ich einsetze unter VB.Net! Ich springe nicht im Code umeinander, dafür hat es viel schönere Kontrollstrukturen.)

    Wenn Du GOTO toll findest: super, mach das. Ich finde es halt weniger toll und das nicht einfach, weil ich vielleicht irgendwie zu blöd dafür bin, falls man mir das unterstellen will.

    Ich glaube, meine Verwendung vom Goto ist gerade klar geworden. Wobei ich immer dazu sagen muss, da reden wir von Visual Basic. BasicV2 ohne Goto ist unmöglich.

    Früher waren 64k unglaublich viel, heute reicht es nicht mal mehr für "Hello, world!".

  • Das ist aber zynisch, findest Du nicht? Damit kapituliert man doch vor den Problemen. Ich versuche da schon positiv dran zu gehen und die Frage zu stellen, wie man so programmiert, dass ein anderer das versteht.

    Du darfst dieses Motto nicht zu ernst nehmen. Natürlich sollte man etwas so bauen und dokumentieren, dass andere das möglichst verstehen. Aber auch da gehen die Ansichten weit auseinander.

    Für den einen ist es verständlich, wenn es möglichst objektorientiert ist. Der andere will es funktionial haben, wieder jemand anders einen monolithischen Codeblock. Das Motto soll diese Diskussion abkürzen und das funktioniert auch ganz gut.

    Bitte melde dich an, um diesen Link zu sehen.

    Bitte melde dich an, um diesen Link zu sehen.

    Bitte melde dich an, um diesen Link zu sehen.

  • Schwierig bei Visual Studio. Wenn man da was in den Einstellungen ändert, schauts wieder komplett anders aus und man erkennt seinen eigenen Source nicht mehr.

    Ja, dazu muss ich dann aber sagen, das spricht nicht für Visual Studio als Entwicklungsumgebung. Da bin ich durchaus anderes gewöhnt. Aber von berufswegen ist man oft dazu gezwungen das zu verwenden, was der Arbeitgeber oder das Projekt vorgeben.

    Meine Erfahrung ist, dass wir älteren Entwickler gerne mal etwas vereinfachen, da gehört ein Goto zum Ausstieg aus einer Sub dazu (ich räume gerne am Ende der Sub auf, im Wesentlichen sind das übrigens die einzigen Gotos, die ich einsetze unter VB.Net! Ich springe nicht im Code umeinander, dafür hat es viel schönere Kontrollstrukturen.)

    Okay, akzeptiere ich, halbwegs. Vielleicht bin ich dann ein „jüngerer“ Entwickler. Wenn man durch GOTO vorzeitig aus einer Schleife oder einer Subroutine springt, ist das schwer lesbar und kann Seiteneffekte haben. Dafür gibt es Beispiele. Daher ist es wichtig, aufzuräumen. Man kann (und darüber diskutiere ich nicht) eine Subroutine vollkommen sauber verlassen, ohne GOTO zu verwenden. Ich behaupte, dass das auch in VB.net möglich sein muss. Hoffe ich jedenfalls ... hoffe ich wirklich, allein ich bin von Microsoft immer wieder erneut enttäuscht.

    Ich glaube, meine Verwendung vom Goto ist gerade klar geworden. Wobei ich immer dazu sagen muss, da reden wir von Visual Basic. BasicV2 ohne Goto ist unmöglich.

    Habe ich was anderes behauptet? Ich weiß, dass BASIC v2 nur mit GOTO funktioniert. Ich sage nur: man hätte BASIC v2 besser implementieren können, aber das wäre Aufwand gewesen. Man hätte dazu natürlich nicht erst bei BASIC v2 ansetzen müssen, sondern bei der Ur-Implementierung von BASIC. Es gab auch damals schon andere Ansätze. Hätte das in der Größe eines Homecomputers funktioniert? Vielleicht, vielleicht auch nicht.

    Ich habe nie behauptet, dass BASIC v2 ohne GOTO funktionieren kann. Bitte genau lesen. Ich habe nur berechtigt angemerkt, dass GOTO kein Naturgesetz ist und dass man jede Applikation auch ohne die Verwendung von GOTO zustande bringt ... nur eben nicht in BASIC v2, das bestreite ich ja auch nicht.

    “64k should be enough for everybody.” (nicht Bill Gates)

    “Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.” (Medieval Aphorism)

    “It's never the PLA!” (Dr. House?)

  • Du darfst dieses Motto nicht zu ernst nehmen. Natürlich sollte man etwas so bauen und dokumentieren, dass andere das möglichst verstehen. Aber auch da gehen die Ansichten weit auseinander.

    Für den einen ist es verständlich, wenn es möglichst objektorientiert ist. Der andere will es funktionial haben, wieder jemand anders einen monolithischen Codeblock. Das Motto soll diese Diskussion abkürzen und das funktioniert auch ganz gut.

    Naja, sicher, das ist klar. Weißt Du, ich finde es auch unnötig, die Grundsatzdiskussion zwischen OO und Funktional zu führen. Monolithisch klingt nach Spaghetticode. Ist das so? Das ist nämlich abzulehnen, gerade weil es sehr schwer verständlich ist.

    Ich behaupte, ein Programm kann für andere verständlich sein, egal ob es OO, prozedural oder funktional ist. (Meinentwegen sogar mit GOTO.) Man kann aber immer so programmieren, dass es niemand versteht, aber dann besteht die Gefahr, dass sogar der originale Entwickler ein halbes Jahr später keine Ahnung mehr hat, was da programmiert wurde und das ist ehrlich gesagt eine Katastrophe, die noch dazu unnötig ist.

    Ich weiß auch, dass die Ansichten darüber auseinander gehen, ob eine Dokumentation notwendig ist. Frei nach dem Grundsatz: „Echte Programmierer dokumentieren nicht; wenn es schwer zu schreiben war, soll es auch schwer zu verstehen sein.“ Das ist aber einfach nicht akzeptabel und ich persönlich dokumentiere immer, aber ich dokumentiere niemals „was“ der Programmcode macht (denn das steht schon da), ich dokumentiere auch nicht „wie“ der Programmcode es macht (denn das steht auch da), sondern ich dokumentiere immer „warum“ der Programmcode das macht, denn das ist das einzige, was noch nicht da steht. Und „warum“ ist das wichtig? Weil irgendwann genau das gefragt wird: „Warum tut das Programm es genau so und nicht anders? Wer hat Dir gesagt, dass das fachlich korrekt ist?“ Dann muss ich Antworten darauf haben.

    “64k should be enough for everybody.” (nicht Bill Gates)

    “Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.” (Medieval Aphorism)

    “It's never the PLA!” (Dr. House?)

  • 64k_or_64bit Ich zitiere mal nicht, denn wir sehen das schon ähnlich. Ich bin halt ein funktionaler Programmierer, das bringt die Erfahrung mit 6502 mit sich. Und manche Annehmlichkeiten versuche ich halt, auch in einer höheren Sprache mit einzubringen :wink:

    Früher waren 64k unglaublich viel, heute reicht es nicht mal mehr für "Hello, world!".

  • 64k_or_64bit Ich zitiere mal nicht, denn wir sehen das schon ähnlich. Ich bin halt ein funktionaler Programmierer, das bringt die Erfahrung mit 6502 mit sich. Und manche Annehmlichkeiten versuche ich halt, auch in einer höheren Sprache mit einzubringen :wink:

    Ich glaube, wenn man am Tisch gegenüber sitzt und darüber spricht, ist es einfacher als hier im Forum. Ich nehme an, wir sehen das ähnlich, alles klar.

    An sich mag ich solche Grundsatzdiskussionen nicht. Ich weiß, was ich im Studium gelernt habe und ich weiß, was meine Erfahrungen sind. Ich möchte mich einfach nicht dafür verteidigen müssen, dass ich GOTO als Konstrukt (unabhängig von BASIC v2, in dem es natürlich notwendig ist) für überflüssig halte. Das ist nicht auf meinem Mist gewachsen. ;) Jetzt aber genug davon. Schönen Abend allerseits. Ich mach jetzt ein GOTO Abendessen

    “64k should be enough for everybody.” (nicht Bill Gates)

    “Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.” (Medieval Aphorism)

    “It's never the PLA!” (Dr. House?)

  • Hallo Leute

    Ich bin Hobby Coder, habe mit Basic V2 angefangen und später dann auch noch Assembler. Mir hat damals keiner gesagt das Goto oder Gosub schlechter Programmierstil sei.

    Ich benutze diese Befehle weil es gerade gut zu meinen Programm passt. Ich verstehe diese ganze Diskusion nicht wirklich.

    Es ist so als würde man sagen, benutze niemals das Wort "gehe" aus deinen Vokabular. Denn das ist schlechter Sprachstil. Meine persönliche Meinung.

    Aber jetzt mal ernst, hat einer von euch damals in den Anfängen vom Basic gewußt das das mit den Goto´s und Gosub´s schlechter Programmierstil ist.

    Das kam doch erst mit der Erfahrung vom der Basicprogrammierung oder Irre ich mich da.

    Deswegen gibt es doch die ganzen Hochsprachen. Ich habe am PC viele mit Q-Basic programmiert. Mir wäre es auch lieber das das Basic V2 viele Befehle von Q-Basic hätte.

    Aber ich bewundere Leute, die mit dem Basic V2 das Beste aus dem C64´er herrausholen.

  • Drachen Ich zitiere mal nicht. Entschuldige. Ich glaub, da hast Du was falsch verstanden. Ich zumindest halte GOTO nicht für schlechten Programmierstil, wenn die Programmiersprache es nicht anders ermöglicht. BASIC v2 benötigt GOTO, weil keine anderen Sprachkonstrukte da sind, die eine Programmierung ohne GOTO ermöglichen. GOTO führt aber (egal wo) dazu, dass das Programm weniger übersichtlich ist. Das ist auch überhaupt nicht ursprünglich meine Meinung. Damit muss man umgehen können.

    Naja, und um das zu entschärfen: Man kann natürlich GOTOs auch in anderen Programmiersprachen nutzen, wenn vorhanden, um Abkürzungen zu programmieren. Das muss also kein schlechter Programmierstil sein. Abkürzungen führen aber nicht dazu, dass Programmcode besser lesbar wird. Im professionellen Umfeld kommt's schon darauf an, Programmcode lesen zu können, auch wenn der Code von jemand anderes stammt. Daher (und weil man es sich leisten kann) programmiert man kaum noch in Assembler, außer wenn man unbedingt muss. Man ist nicht mehr darauf angewiesen, den Programmcode kompakt zu halten. Lesbarkeit und kompakter Code sind nicht unbedingt identisch.

    Meine Aussage war nur: Es ist seitens der Sprachdefinition einer Programmiersprache möglich, sie so zu erstellen, dass man kein GOTO braucht. Dafür gibt's genug Beispiele von Programmiersprachen, die kein GOTO haben, und man dennoch so gut wie alles programmieren kann, was man will. (Ich muss irgendwie Spitzfindigkeiten vermeiden. Natürlich kann man in Python keine Gerätetreiber programmieren, so meine ich das jetzt auch nicht.)

    Und natürlich ist selbst BASIC schon eine Hochsprache. Die werden nämlich deshalb „Hoch“sprachen genannt, weil sie mindestens eine Schicht über Assembler rangieren. Siehe dazu auch David Wheeler: „Jedes Problem in der Informatik lässt sich mit einer weiteren Indirektionsstufe lösen.

    “64k should be enough for everybody.” (nicht Bill Gates)

    “Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.” (Medieval Aphorism)

    “It's never the PLA!” (Dr. House?)

    2 Mal editiert, zuletzt von 64k_or_64bit (6. Juni 2022 um 21:06)