Gruselige FOR-Schleifen

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

  • Ich mach jetzt ein GOTO Abendessen

    Guten Appetit. Was gibt's denn? Doch nicht etwa

    Bitte melde dich an, um diesen Anhang zu sehen. ? :D

    Ich hab die Spaghetti jeweils einzeln als Objekte instantiiert und einem Objekt Suppenteller hinzugefügt. Dann wird die Methode addTomatensauce ausgeführt. Falls keine Tomatensauce mehr da sein sollte, wird die Exception NoSauceException ausgelöst, die dazu führt, dass aus dem Schrank noch mehr Sauce geholt wird ... Am Schluss muss man noch nach Geschmack addCheese ausführen, dann umrühren und essen.

    :thumbsup: (Streng genommen hab ich jetzt die Schritte Topf.addNudel und Topf.kochen ausgelassen. Entschuldigung, man braucht halt viel Boilerplate-Code, um Nudeln zu kochen.)

    Aber eigentlich gab's heute Salat. Das ist aber eine andere Klasse und muss völlig anders instantiiert werden. Ist auch nicht mit der Klasse Suppenteller kombinierbar.

    Alles ohne GOTO. ;)

    “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

    In meine Fall nicht grundsätzlich. Ich bin da eher wie Parasit, niste mich in den Kernteilen ein, verbessere oder ersetze sie durch meinen Code und lasse die äußere Hülle. Nur in seltenen Fällen wird alles komplett von innen aufgefressen (da wäre es in der strategischen Abschätzung ohnehin besser gewesen von Grund auf neu zu beginnen). ;)

  • Ich habe selbst ein Informatikstudium hinter mir und gehe trotzdem immer noch anders an Projekte ran als jemand, der z.B. mit Java angefangen hat. Die allererste Methode, die jemand angewandt hat, um einen Computer zu programmieren, bleibt unweigerlich im Gedächtnis. Es heißt ja nicht, dass das alles schlechte Programmierer sind oder moderne Methoden nicht kapieren. Sie "denken" in der Hinsicht einfach anders und das schlägt eben in der Arbeit nieder und zwar so, dass man das auch erkennen kann. Ja, und auch hier bestätigen eben einzelne Ausnahmen die Regel. :)

    Ich warte immer noch auf konkrete Beispiele, was man von der BASIC-Programmierung an Herangehensweisen in moderne Softwarekonzepte rüberretten könnte. Wie gesagt, ich halte das für unbelegten Quatsch.

    Nichts, aber auch gar nichts von dem, was man sich bei der Basic-Programmierung angewöhnt hat, findet sich in modernen Programmiersprachen und Frameworks wieder.

  • Ich dachte, GOTO-Diskussionen seien Ende der 60er beendet worden?

  • Ich habe selbst ein Informatikstudium hinter mir und gehe trotzdem immer noch anders an Projekte ran als jemand, der z.B. mit Java angefangen hat. Die allererste Methode, die jemand angewandt hat, um einen Computer zu programmieren, bleibt unweigerlich im Gedächtnis. Es heißt ja nicht, dass das alles schlechte Programmierer sind oder moderne Methoden nicht kapieren. Sie "denken" in der Hinsicht einfach anders und das schlägt eben in der Arbeit nieder und zwar so, dass man das auch erkennen kann. Ja, und auch hier bestätigen eben einzelne Ausnahmen die Regel. :)

    Ich warte immer noch auf konkrete Beispiele, was man von der BASIC-Programmierung an Herangehensweisen in moderne Softwarekonzepte rüberretten könnte. Wie gesagt, ich halte das für unbelegten Quatsch.

    Nichts, aber auch gar nichts von dem, was man sich bei der Basic-Programmierung angewöhnt hat, findet sich in modernen Programmiersprachen und Frameworks wieder.

    Code
    int main(int argc, char *argv[]) {
    l10:
        printf(„hello world!\n“);
    l20:
        goto l10;
        return 0;
    }

    ────────────────────────────────────────────────────────────
    Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen.
    ────────────────────────────────────────────────────────────

  • Nichts, aber auch gar nichts von dem, was man sich bei der Basic-Programmierung angewöhnt hat, findet sich in modernen Programmiersprachen und Frameworks wieder.

    Ein paar Sachen sind ja noch geblieben. Spontan fallen mir da ein: IF...THEN, FOR...NEXT, RND, LEFT, RIGHT, MID, DIM, STR, ASC, CHR.

    Das hat zwar die Herangehensweise nicht wirklich bis heute beeinflusst. Aber da fühlt man sich doch gleich wie zuhause. :rolleyes:

  • Die "zeilenbasierte" Denkweise ist aber schon wesentlich bei BASIC V2 (also das ewige "ich muss meinen THEN-Code kurz halten, sodass er in 80 Zeichen passt"), und die ist zum Glück ausgestorben.

    Bisschen schade, dass es da keine brauchbare "sanfte" minimale Erweiterung für V2 gibt. Tatsächlich hat mir da noch Waterloo Basic bisher mit am besten gefallen: nur ein paar Befehle (If/THEN/ELSE/ENDIF, Loops) und sehr kleines ROM. Leider seltsame platzverschwendende drei-Byte-Token, blockiert $8000 und bietet kein Continue. :/

    Paradoxon Basic mit diesen Erweiterungen plus Continue und schnellerem PRINT und einer der besseren GC-Implementierungen und fertig wäre das perfekte Mini-BASIC für Textanwendungen/-Spiele. :)

    Gibt es eigentlich eine BASIC-Implementierung ohne Zeilennummern für den C64?

    Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen.

  • Ich denke das muss man alles immer im Kontext betrachten.

    Ich finde in mancherlei Hinsicht BASIC einfach GEIL. Auf der anderen Seite finde ich es auch grauenvoll.

    Das geile an BASIC ist fuer mich gerade dieses Zeilenbasierte, inkl. Zeilennummern und GOTO. Das fand ich damals als Kind extrem intuitiv. Und dass man das einfach so reinhacken kann in den Interpreter und dann mit RUN starten kann, das ist schon echt genial. Auch dass es auf dem Heimcomputer schon direkt "vorinstalliert" ist. Es gibt einem direkt die Moeglichkeit, sich mit dem Computer und mit Programmierung zu beschaeftigen, das kennt man so nicht von anderen Systemen. Und ich finde es macht heute noch Spass, in BASIC irgendwas zu coden, und alles in die Zeile zu quetschen und so weiter.

    Aber auch ich habe mich weiterentwickelt und studiert und bin Software-Entwickler von Beruf, und auch ich weiss, dass es viele Dinge gibt, die in anderen Sprachen 10x besser geloest sind und bin froh, dass ich BASIC nicht mehr nutzen MUSS. Ich arbeite gerade an einem etwas umfangreicheren BASIC-Projekt auf dem MEGA65 (und sooo umfangreich ist das absolut gesehen nicht - nur eben fuer BASIC-Verhaeltnisse), und da merkt man dann schon, wo die Grenzen sind. Das faengt bei 2-buchstabigen Variablen an und hoert bei RENUMBER noch nicht auf. Und ich weiss auch, dass ich damals beim Erlernen von anderen Konzepten teilweise schon etwas zu sehr BASIC-"verseucht" war, und dann erstmal Schwierigkeiten hatte, ueberhaupt zu Begreifen, wie man ohne GOTO, ohne globale Variablen, oder mit Objektorientierung usw. leben kann/muss.

    BASIC war zu damaliger Zeit echt geil. Es war damals schon nicht die beste Sprache, aber sie war im Computer eingebaut, und man konnte direkt was damit machen, und es ist auch beachtlich dass der gesamte Interpreter in 8K Platz findet. So gesehen eine echt coole Sache, dass das damals in den Heimcomputern standardmaessig mit drin war. Ich glaube ich haette die Heimcomputer-Zeit nicht anders erleben wollen. Dennoch bin ich froh, dass ich heute BASIC zwar zum Spass verwenden kann, aber nicht dauerhaft nutzen muss.

    - neue Spiele für den C64 -
    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.Bitte melde dich an, um diesen Link zu sehen.

  • Das mit Abstand Beste an BASIC V2 ist PRINT (bzw. die Kombi PRINT+PETSCII+Steuerzeichen). So simpel wie in BASIC programmiert sich ein Spiel mit ein paar PETSCII-Grafiken sonst nirgends, jedenfalls nicht ohne weiteren dedizierten Textgrafik-Editor, der dann wieder Denkeinschränkungen mit sich bringt.

    Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen.

  • Ich finde das größte Problem bei V2 ist, dass man nicht direkt weiß, wieviel Code wohin kommt und am Ende hat man keinen Platz mehr "zwischen" den Zeilennummern.

    Gibt es eigentlich ein Tool, mit dem man die Zeilen neu nummerieren kann und automatisch alle GOTOs und GOSUBs angepasst werden?

  • Jepp, BASIC hat da auf jeden Fall seine Vorzuege. Es war halt limitiert zur damaligen Zeit, trotzdem bin ich froh mit BASIC aufgewachsen zu sein anstatt z.B. mit "Scratch" (dem kann ich so gar nichts abgewinnen).

    Zum Thema BASIC habe ich auch juengst 2 Videos gemacht, allerdings auf dem MEGA65. Da erwaehne ich ebenfalls, warum ich BASIC so cool finde. Wer sich das mal anschauen mag, kann hier ja mal reinschauen - ist zwar wie gesagt MEGA65, wo alles deutlich schneller laeuft (40 MHz), aber grundsaetzlich gehts hier eben auch um BASIC:

    Bitte melde dich an, um dieses Medienelement zu sehen.

    Bitte melde dich an, um dieses Medienelement zu sehen.

    - neue Spiele für den C64 -
    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.Bitte melde dich an, um diesen Link zu sehen.

  • FORTH ist eh besser als BASIC und haette Generationen von C/++ Codern geholfen Pointer und Referenzen zu verstehen :wink:

    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.

  • Wenn ich mir allerdings rueckwirkend etwas wuenschen koennte, wuerde ich mir heute vermutlich etwas wuenschen, was ein bisschen mehr in Richtung PICO-8 geht. Dort hat man Grafik- und Sound-Editor gleich mit an Bord, und innerhalb der Programmiersprache kann man diese Ressourcen auf einfachste Art und Weise nutzen. Auf dem C128 gab es ja mit SPRDEF und PLAY schon sowas im Ansatz. Bei PICO-8 ist natuerlich alles deutlich durchdachter. Eine Mischung aus dem BASIC wie wir es kennen und einem PICO-8 von heute waere aus meiner Sicht ein Traum gewesen damals auf dem C64.

    - neue Spiele für den C64 -
    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.Bitte melde dich an, um diesen Link zu sehen.

  • Gibt es eigentlich eine BASIC-Implementierung ohne Zeilennummern für den C64?

    In den 90'ern wurde in der 64'er ein spezieller Editor für BASIC-Programme veröffentlicht. Wimre war das keine BASIC-Erweiterung wie z.B. Simons' Basic oder Paradoxon Basic. Was genau damit alles möglich ist, weiß ich nicht mehr. Auch den Namen leider nicht. Mir ist jedoch in Erinnerung geblieben, dass dort keine Zeilennummern verwendet wurden, aber Labels.


    Gibt es eigentlich ein Tool mit dem man die Zeilen neu nummerieren kann und automatisch alle GOTOs und GOSUBs angepasst werden?

    Nicht nur eins, sowas gibt's definitiv. Sowohl in diversen Erweiterungen implementiert, als auch als stand-alone Tool. Nicht alle davon können auch die Zeilennummern von GOTO, GOSUB usw. anpassen. Leider habe ich auch hier keinen Namen parat.

  • Renumber: Bitte melde dich an, um diesen Link zu sehen.

    Die letzte dort erwähnte Implementierung (quicknum-a, Posting 250) ist sehr gut. Die meisten anderen Implementierungen (z.B. im Magic Formel oder FC3) sind langsam und/oder buggy.

    Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen.

  • Gibt es eigentlich ein Tool, mit dem man die Zeilen neu nummerieren kann und automatisch alle GOTOs und GOSUBs angepasst werden?

    In gefühlt jeder dritten 64'er gabs ein Listing zum Abtippen, mit dem man neu nummerieren kann.

    Der C128 hats schon von Haus aus.

  • Renumber: Bitte melde dich an, um diesen Link zu sehen.

    Die letzte dort erwähnte Implementierung (quicknum-a, Posting 250) ist sehr gut. Die meisten anderen Implementierungen (z.B. im Magic Formel oder FC3) sind langsam und/oder buggy.

    Cool. Ich habe das gerade mal getestet. Erst das BASIC-Programm geladen und dann das 2 Block große "quicknum-a".

    Mit SYS49152,10,10 ruft man das anscheinend auf. Wobei der erste Wert die Startzeile und der zweite Wert der Abstand ist.

    GOTOs werden definitiv angepasst.

    Da macht das BASIC-Programmieren gleich doppelt so viel Spaß.

    Aber besteht nicht das Risiko, dass man das BASIC Programm crashed wenn man das zusätzlich in den Speicher lädt?

    Sorry für die Noob-Fragen. Aber ich habe schon seit 100 Jahren nicht mehr auf dem C64 programmiert. Und sowas Geniales hatte ich damals nicht.

  • So simpel wie in BASIC programmiert sich ein Spiel mit ein paar PETSCII-Grafiken sonst nirgends

    Einspruch. :prof:

    Sowas geht natürlich auch auf dem CPC. Neue Zeichen definieren ist durch einen eigenen Befehl total einfach zu machen. Selbst das pixelgenaue Positionieren ist in BASIC ohne Tricks möglich.

    Was ich mir unter V2 BASIC schwer vorstelle ist das Programmieren ohne RENAME zum umdefinieren von Zeilennummern. Auch das ist beim CPC möglich.

    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: