Snake , in BBC Basic - als Video zum Zuschauen

  • Hier mal echter Freakkram ... ein Video wo man jemandem beim Snake Programmieren Zuschauen kann.


    https://www.youtube.com/watch?v=KtIMuG_3YmQ

    Coding a simple "Snake" game (6:46)



    ( ich wollte es ja erst in den Snake/Ringbuffer Thread reinstellen, aber das trifft es nicht ganz )


    Wer sich dabei erwischt, das ganz anzuschauen ...

    -- 1982 gab es keinen Raspberry Pi , aber Pi und Raspberries

  • Ich kannte das Video bereits... :D


    In den Youtube Videos sieht das alles immer so einfach aus.. In echt steckt hinter dem Source bestimmt ne wochenlange Arbeit ?! Wobei ich mich mit Hochsprachen nicht so auskenne..



    Gruß Jan

  • Ich denk, der hat das eher so runtergecodet. Aber natürlich nicht so schnell, das Video ist einfach Stück schneller als "in real".



    Eigentlich hatte ich ja nur nach guten Beispielvideos für BBC BASIC gesucht, und nicht nach der Meditationslösung für den Jungprogrammierer. Jetzt muß man mal doch noch nachschauen, was man mit der Konstruktion


    DIM snake{ ( max-snakelength-1) x%, y% }


    eigentlich genau anlegt.

    Sieht ja bißchen aus wie ein "struct" in C.


    Von dem Videoersteller gibt es auch ein paar andere sehr krasse Basic Videobeispiele. Nematodes z.B. aus dem RPi2 Film.

    -- 1982 gab es keinen Raspberry Pi , aber Pi und Raspberries

  • Ich denk, der hat das eher so runtergecodet. Aber natürlich nicht so schnell, das Video ist einfach Stück schneller als "in real".

    Von oben nach unten? Und bis auf 2 Tippfehler fehlerfrei? Dazu müsste man das komplett Programm vorher im Kopf haben. Das ist sehr unrealisitisch, dass das jemand schafft. Außerdem dreht man immer noch mal ein paar Runden bei der Optimierung.

    Entweder hat er das Programm schon 10x eingetippt oder er hat von einer Vorlage abgetippt.


    Man sieht das sehr schön beim Eintippen des Main Loop-Kommentars. Da weiß er vorher schon, wie breit der Kasten für den Kommentar sein muss. So programmiert das keiner. Man schreibt erst den Text und dann die Linie drüber und drunter. Aber vielleicht kann er auch in Sekundenschnelle im kopf die Anzahl der Zeichen in einem Satz ermitteln - wer weiß. ;)

    • i-Telex 7822222 dege d

    • technikum29 in Kelkheim bei Frankfurt

    • Marburger Stammtisch

    Douglas Adams: "Everything, that is invented and exists at the time of your birth, is natural. Everything that is invented until you´re 35 is interesting, exciting and you can possibly make a career in it. Everything that is invented after you´re 35 is against the law of nature. Apply this list to movies, rock music, word processors and mobile phones to work out how old you are."

    Einmal editiert, zuletzt von detlef ()

  • Wenn der source auf einer anderen Maschine schon liegt, könnte er zeichenweise mit leicht unterschiedlichen Pausen zwischen den Zeichen und eingestreuten Tippfehlern übertragen. Schöne Aufgabe — ich glaube ich mach mal so was. ;)

    Ja, teilweise sieht das sogar so aus. Allerdings sind da auch einige Copy&Paste-Sequenzen drin. Weswegen ich diese Therorie wieder fallen gelassen habe.


    Außerdem glaube ich, dass die Tippfehler echte Tippfehler sind (könnte man natürlich auch simulieren). Aber so ein Programm mit nur zwei Fehlern abzutippen, ist auch schon eine Leistung. Das würde wieder für eine Simulation sprechen. Ich hätte da mindestens 10 Fehler drin, wenn ich das abtippen würde.

    • i-Telex 7822222 dege d

    • technikum29 in Kelkheim bei Frankfurt

    • Marburger Stammtisch

    Douglas Adams: "Everything, that is invented and exists at the time of your birth, is natural. Everything that is invented until you´re 35 is interesting, exciting and you can possibly make a career in it. Everything that is invented after you´re 35 is against the law of nature. Apply this list to movies, rock music, word processors and mobile phones to work out how old you are."

  • Ja, der hat das einfach von einem Blatt abgeschrieben. Wenn man ein Programm schreibt, macht man sich zuerst eine Skizze mit dem Ablauf. Dann schreibt man das Programm. Wenn es sich um etwas umfangreicheres handelt, läuft es meist nicht beim ersten Versuch. Dann folgt die Fehlersuche. Nachdem man sich dann 10 mal den Source durchgelesen hat, stellt man zB fest, dass man anstatt "MOV A,C" da "MOV C,A" hingeschrieben hat, dann batscht man sich an die Stirn, ändert es ab und es läuft. Ich denke, Debugging ist ein fester Bestandteil der Programmierung. Und ich wage zu behaupten, dass es nicht nur mir so geht ?!


    Gruß Jan

  • Ja, der hat das einfach von einem Blatt abgeschrieben. Wenn man ein Programm schreibt, macht man sich zuerst eine Skizze mit dem Ablauf.

    Mit Skizze meinst du sowas wie ein Flussdiagramm? Das habe ich wiederum nie gemacht.

    Diese Skizze habe ich dann schon im Kopf, wenn ich mit der Programmierung beginne.

    • i-Telex 7822222 dege d

    • technikum29 in Kelkheim bei Frankfurt

    • Marburger Stammtisch

    Douglas Adams: "Everything, that is invented and exists at the time of your birth, is natural. Everything that is invented until you´re 35 is interesting, exciting and you can possibly make a career in it. Everything that is invented after you´re 35 is against the law of nature. Apply this list to movies, rock music, word processors and mobile phones to work out how old you are."

  • Das mit dem Flußdiagramm halte ich ja auch für übertrieben, aber so ein paar Stichpunkte und eine kleine "Skizze" über das, was man an Funktionen etc. unebdingt bauen will und wie man Sachen im RAM anlegt, macht schon wirklich viel (!) Sinn. Auch für kleinere Projekte.


    Zum Beispiel, wenn der Holger seine Routine zur Autokorrektur wirklich bauen will, müßte man sich schon überlegen, welche Art von Fehlern läßt man zu, wie zufällig treten die auf (oder werden sie fix "vorgefertigt"), sind nur bestimmte Buchstabenkombinationen für Vertipper erlaubt ( z.B. f -> g aber nicht f->q oder f->i (weil das eigentlich niemand zufällig so vertippt) ), was ist mit solchen CopyPaste Aktionen wie bei der MainLoop Box im Film, können die evtl. sogar generisch nachgebildet werden, wenn ja wie - usf. usf.


    (Die einfache Variante aus Scrollerzeiten reicht da nicht; da stand nur der Text falsch und dann ein Commandcode und eine Zahl, um wieviele Zeichen zurück gelöscht werden soll, dann ging es mit dem korrekten Text weiter. Das ist trivial. Sieht aber z.B. mit Sound (Click und BackspaceClick) trotzdem auch schon gut aus.)



    Ich finde es ja extrem hilfreich auf einem kleinen A5 oder gefalteten A4 Blatt aufzuschreiben, was in sowas drin sein soll und wie die Daten sein sollen - oder auch nur die grobe Idee vom Ganzen. Dann hat man immer noch die Rückseite zum Ergänzen und man übertreibt es nicht. Außerdem taugt das Ganze auch für später zum Nachsehen - gewissermaßen als Erinnerungsanschieber. Als Dokumentation für andere ist es meist trotzdem wenig hilfreich.


    Variablen schreib ich dann schon direkt im Programmkopf und überlege mir da auch lange, was man genau haben will. Außerdem gibt es so ein paar Standardvariablen, die generell verfügbar sein müssen, etwa i,j,k als Schleifencounter. Oder a,b,c als int und fa,fb,fc als floatingpoint. Außerdem sind sinustabellen etc. selbdefiniert da.

    Für echte Programme taugt sowas aber bestimmt auch nicht.


    Bei den kleinen Firmen, die ich so in der Beziehung gesehen habe, scheint das auch nicht so sonderlich anders zu laufen. Da wird aber VORHER vom Designteam etc. das Ganze oft auf Einzelfunktionen soweit heruntergebrochen, daß das automatisch passiert. Der Programmierer macht dann "irgendwas" und nach 2 Tagen wird es gezeigt und geschaut, ob es der Vorstellung entspricht (Prototyp gebaut). Wenn nicht dann nochmal.

    Regelmäßig bereitet das Probleme, sobald das Datenbankmodell sich ändern muß oder die Webzugriffe nicht instantan da sind (z.B. Urugay im Busch oder Hinterhermsdorf in Sachsen) oder plötzlich doch BIlder statt Menutext verwendet werden sollen. Oder mal der einzige Programmierer woanders ingeht und keine echte Dokumentation da ist, weil er einfach "wußte" was er macht.


    Interessant in der Beziehung ist auch, sich mal Skizzen und Vorbereitungen von Demogroups/Spieleprogrammern anzuschauen. Da gibt es manchmal welche, die erhalten sind - inkl. Levelskizzen oder Blockgrafik-Zeichungen auf kariertem Papier. Ist sehr nett. Oft gibt es da auch Hinweise, was sie als Texte benutzt haben, um zu lernen, wie sie das bauen (gibt so ein paar sehr interessante Anleitungen (meist ASCII Texte) zu Sachen wie 3D Grafik, Sinusscroller, Rasterinterrupts etc. , meist über Diskettenzeitungen oder Mailboxen, man muß heut' also echt suchen).

    -- 1982 gab es keinen Raspberry Pi , aber Pi und Raspberries

  • Das mit dem Flußdiagramm halte ich ja auch für übertrieben, aber so ein paar Stichpunkte und eine kleine "Skizze" über das, was man an Funktionen etc. unebdingt bauen will und wie man Sachen im RAM anlegt, macht schon wirklich viel (!) Sinn. Auch für kleinere Projekte.

    So eine Art Mini-Lasten- und -Pflichtenheft. Das mache ich auch manchmal. ;)

    • i-Telex 7822222 dege d

    • technikum29 in Kelkheim bei Frankfurt

    • Marburger Stammtisch

    Douglas Adams: "Everything, that is invented and exists at the time of your birth, is natural. Everything that is invented until you´re 35 is interesting, exciting and you can possibly make a career in it. Everything that is invented after you´re 35 is against the law of nature. Apply this list to movies, rock music, word processors and mobile phones to work out how old you are."

  • Ja, der hat das einfach von einem Blatt abgeschrieben. Wenn man ein Programm schreibt, macht man sich zuerst eine Skizze mit dem Ablauf.

    Mit Skizze meinst du sowas wie ein Flussdiagramm? Das habe ich wiederum nie gemacht.

    Diese Skizze habe ich dann schon im Kopf, wenn ich mit der Programmierung beginne.

    Nein, kein Flussdiagramm, ich schrieb ja Skizze. Ich nehme dann ein Blatt Papier und kritzele Variablen drauf und Schleifen und so ein Zeugs und mache mir ein paar Notizen. Unter einem Flussdiagramm verstehe ich da eher etwas ordentlich gezeichnetes mit verschiedenen geometrischen Formen bzw. Symbolen für Start, Prozess, Entscheidung, Daten usw.

    Das ist mir dann doch zu viel Arbeit... :D


    Hier liegen überall Schreibblöcke mit irgendwelchen Skizzen und Notizen rum... :)


    Gruß Jan

  • Ne, meine Programme entstehen im Rechner. Papier ist mir da zu unflexibel und schwer editierbar. ;)


    Papier nutze ich manchmal, um mir z. B. eine Pufferverwaltung oder ähnliches aufzuzeichnen, mit Zeigern und so. Also eigentlich nur, wenn es kniffelig wird.

    • i-Telex 7822222 dege d

    • technikum29 in Kelkheim bei Frankfurt

    • Marburger Stammtisch

    Douglas Adams: "Everything, that is invented and exists at the time of your birth, is natural. Everything that is invented until you´re 35 is interesting, exciting and you can possibly make a career in it. Everything that is invented after you´re 35 is against the law of nature. Apply this list to movies, rock music, word processors and mobile phones to work out how old you are."

  • Es schult aber ungemein. Konzentration, Korrektheit und solche Sachen.

    Ich arbeite eher iterativ. Ich habe lieber schnell erste Ergebnisse, als nach gründlicher Vorbereitung am Ende festzustellen, dass ich daneben lag.

    Ich denke, jeder hat da so seine eigene Arbeitsweise. ;)


    Das hat sich auch in der Softwareentwicklung in Form von agilen Methoden durchgesetzt. Ich arbeite beruflich in einem Scrum-Team. Da wird nicht mehr dokumentiert und auch keine (umfangreichen) Konzepte mehr vorab erarbeitet. Alles wird sofort in Code gegossen. Was nicht gepasst hat, wird geändert.

    • i-Telex 7822222 dege d

    • technikum29 in Kelkheim bei Frankfurt

    • Marburger Stammtisch

    Douglas Adams: "Everything, that is invented and exists at the time of your birth, is natural. Everything that is invented until you´re 35 is interesting, exciting and you can possibly make a career in it. Everything that is invented after you´re 35 is against the law of nature. Apply this list to movies, rock music, word processors and mobile phones to work out how old you are."

  • Ja, sowas in der Art meinte ich oben, als ich geschrieben hatte, daß das in kleineren Firmen (oder evtl. auch größeren) heute wohl auch üblicher ist.


    Ich halte ja von dem Scrum gar nicht so viel - allerdings: es hat einen unglaublichen Vortrieb und pusht solche Sachen ungeheuer vorwärts. Und es vermeidet anscheinend einfach schon strukturell, daß die Beiteiligten völlig aneinandervorbereden/-arbeiten. Einfach weil sie sich mindestens jede Woche einmal (bzw. nach jedem Run) einmal darüber verständigen müssen, was nun genau daran paßt und was nicht. Das ist vielleicht sein Hauptvorteil, daß es das "miteinander" Reden/Bewerrten/Absprechen in eine feste Form gießt.


    Aber, was Dokumentation etc. angeht, ist es dafür ziemlich mies. Gerade auch, weil natürlich niemand Lust hat Sachen zu dokumentieren, die er evtl. in 2 Wochen einfach wegwerfen muß, weil sich ein paar Parameter ändern (etwa, daß der Auftraggeber der Firma 'seine' App, die für Bäcker vorgesehen war, jetzt auch für Fleischer anbieten will).



    Was ich in Sachen Qualität viel interessanter finde, ist diese Geschichte mit dem Doppel-Team. Also zwei Leute für eine Aufgabe, die vor einem Rechner sitzen und sich gegenseitig auf strukturelle und getippte Problem aufmerksam machen und auch den Programmansatz miteinander ausmachen.

    Hat zumindest am Homecomputer immer schön funktioniert, und war i.a. auch sehr lehrreich für beide.

    Das macht halt 'in echt' vermutlich niemand (außer vielleicht in Darmstadt für die Raumfluggeschichten), aber das in Kombination mit einem Scrum und einem Puffer von vielleicht 1h täglich fürs Dokumentieren müßte eigentlich Potential haben ausgesprochen gute Software zu bauen.



    Vielleicht ein (klein) bißchen zum Thema passend und evtl. für das "jüngere" Publikum - sofern hier vorhanden - geeignet, mal der Hörtipp hier https://gamedevpodcast.de/19/

    da klingt manches davon an, was überhaupt nötig ist (da im Hinblick auf Game Entwickler), und es ist auch ganz unterhaltsam.

    -- 1982 gab es keinen Raspberry Pi , aber Pi und Raspberries