{"id":1231,"date":"2023-12-21T08:25:19","date_gmt":"2023-12-21T08:25:19","guid":{"rendered":"https:\/\/research.swissdigitization.ch\/?p=1231"},"modified":"2024-04-22T07:37:16","modified_gmt":"2024-04-22T07:37:16","slug":"basic-ueberlegungen-und-wieder-erste-erfahrungen","status":"publish","type":"post","link":"https:\/\/research.swissdigitization.ch\/?p=1231","title":{"rendered":"(Zeilenbasiertes )BASIC &#8211; \u00dcberlegungen und wieder erste Erfahrungen"},"content":{"rendered":"\n<p>Basic war in den 70er(?) aber sp\u00e4testens in den 80er Jahren das Ding in Sachen Programmierung f\u00fcr die Massen. Dies wie <a href=\"https:\/\/research.swissdigitization.ch\/?p=1091\">hier schon aufgezeigt wurde<\/a>, weil BASIC bei den meisten 8Bit-Homecomputer die quasi &#8222;Betriebsystemoberfl\u00e4che&#8220; war  und damit auch immer schon eingebaut war. <\/p>\n\n\n\n<p><strong>Verwendungszweck Computer &gt; Programmierung zu Nutzung<\/strong><\/p>\n\n\n\n<p>Anders gesagt: Programmierung war die erste Anwendung. Der Rechner (mit Variablen) wie beim technischen Konzept und im Manual des ZX81 bis heute zu lesen ist . Der Prompt in der 8bit-Welt war ein Basic Prompt.<\/p>\n\n\n\n<p>Einfach anschalten. Man* konnte Basic benutzen auch ohne Erweiterungen wie einem Disklaufwerk oder einem Printer. Mit der Einf\u00fchrung des GUIs endete auch die Kopplung von Betriebssystem und Programmiersprache. Der Computer wird als Instrument eher zu einem Programm-Consumer-Produkt als einer Programmiermaschine. Programmiersprachen werden noch mitgeliedert, wie das eher f\u00fcr gr\u00f6ssere Computersystem \u00fcblich war (vgl. UNIX, Apple II, MS-DOS, CP\/M).<br><br>Heute liefert niemand mehr eine Programmiersprache per default mit und sie ist schon gar keine Erstanwendung mehr. Die Programmierung ist in den Hintergrund getreten und Spezialanwendung. Interessanterweise kommt neu wiederum die &#8222;Nat\u00fcrlichsprachliche Programmierung&#8220; per AI dazu und schliesst damit (wie auch schon erw\u00e4hnt) den Bogen der 80er Jahre.<\/p>\n\n\n\n<p><strong>BASIC Hintergrund<\/strong><\/p>\n\n\n\n<p>Basic wurde bekanntlich schon in den 60er Jahren entwickelt, als einfach M\u00f6glichkeit Programmieren zu lernen und zu Coden. Die Programmiersprache lehnt sich am Alltag an, hat wenige Keyw\u00f6rter und vereinfacht die Programmierung gegen\u00fcber Platzhirschen wie ALGO oder FORTRAN. Es ist quasi ein Zwischending zwischen der Nicht-Programmierung und Hochschulrechnen. Die Hochsprachen wie ALGO oder FORTRAN sind nicht verwunderlich &#8211; auf 8Bit Rechnern eher selten aufgetaucht. Zur Konkurrenz von Basic entwickelte sich eher dann PASCAL von Wirth (ETH) und die Compiler Basic Varianten auf den 16\/32 Bittern.<br><br>\/\/ ToDo: Gibt es Algo f\u00fcr c64? Fortran?)<\/p>\n\n\n\n<p><strong>BASIC Coding Praxis<\/strong><\/p>\n\n\n\n<p>Die Basics jener Zeit waren alle Zeilennummern basiert. Was sie bis heute abhebt von den Platos Tutor etc. die mit Labeln arbeiten. <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>Zeilennummern\n<\/strong>\n10 PRINT \"HALLO\"\n20 GOTO 10\nRUN<\/code><\/pre>\n\n\n\n<!--more-->\n\n\n\n<p>Die Zeilenbasierung macht es einfach zu unterscheiden zwischen Direkteingaben und Programmierung. Beginnt etwas mit einer Nummer, dann ist es Teil des Programms und kann da auch so verarbeitet werden. Dies ist wichtig, weil die meisten Oberfl\u00e4chen einfach mit dem Bildschirmtextspeicher arbeiten und ein Return bestimmt, was mit dieser Zeile passiert. <\/p>\n\n\n\n<p>NR &gt;  updaten Source Code<br>Keine NR &gt; direkt ausf\u00fchren<\/p>\n\n\n\n<p>Durch die Zeilennummerierung muss auch nicht unterschieden werden zwischen Editor und Ausf\u00fchrung. Es ist alles-eines. So wundert es nicht, dass die meisten 8Bitter im Homecomputerbereich damit arbeiten und damit quasi die Grundbedienung des Computers hierhin verlagern (&#8222;Load &#8218;xyha.prg&#8216;,8,1).<br><br>Anschungsmaterial dazu auch C64-Basic oder MS-Dos-Basic.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"219\" src=\"https:\/\/research.swissdigitization.ch\/wp-content\/uploads\/2023\/12\/Bildschirmfoto-2023-12-17-um-18.20.29-1024x219.png\" alt=\"\" class=\"wp-image-1233\" srcset=\"https:\/\/research.swissdigitization.ch\/wp-content\/uploads\/2023\/12\/Bildschirmfoto-2023-12-17-um-18.20.29-1024x219.png 1024w, https:\/\/research.swissdigitization.ch\/wp-content\/uploads\/2023\/12\/Bildschirmfoto-2023-12-17-um-18.20.29-300x64.png 300w, https:\/\/research.swissdigitization.ch\/wp-content\/uploads\/2023\/12\/Bildschirmfoto-2023-12-17-um-18.20.29-768x164.png 768w, https:\/\/research.swissdigitization.ch\/wp-content\/uploads\/2023\/12\/Bildschirmfoto-2023-12-17-um-18.20.29-624x133.png 624w, https:\/\/research.swissdigitization.ch\/wp-content\/uploads\/2023\/12\/Bildschirmfoto-2023-12-17-um-18.20.29.png 1264w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><strong>Eine Zeile &#8211; ein Command<\/strong><\/p>\n\n\n\n<p>Pro Zeile ist eigentlich (vs C64 etc) eine Command erlaubt. Das bedeutet, dass jeweils eine Zeilennummer gefunden werden muss und dazu der Befehl eingegeben werden kann. <br><br>Dabei ist auch IF ein Befehl, so dass komplexere IFs in der Ausf\u00fchrung immer zu Gotos f\u00fchren m\u00fcssen. Denn letztlich folgt einem If kein Statement-Block. Und Basic kennt &#8211; mit Ausnahme der Konstruktionen FOR etc keine Statementblocks. <\/p>\n\n\n\n<p>All dies f\u00fchrt zu sehr seltsamen und un\u00fcbersichtlichem Code.<\/p>\n\n\n\n<p><strong>Schnell drauf los programmieren<\/strong><\/p>\n\n\n\n<p>Und so f\u00e4ngt man dann an etwas zu programmieren und lernt schnell: Einfach so drauf los coden ist nicht. Oder anders gesagt: Schnell drauf los coden f\u00fcr etwas kleines, etwas Demonstratives funktioniert.<br><\/p>\n\n\n\n<p><strong>Erste Schritte<\/strong><br><br>Aber dann? Bei einem gr\u00f6sseren Projekt? Da wird es sehr schnell nicht mehr so produktiv. Als erstes fehlen immer wieder Zeilen, die man dann einf\u00fcgen muss. Daf\u00fcr gibt es noch behelfsm\u00e4ssig den Befehl &#8222;RENUMBER&#8220;.  <br><br>Aber irgendwann merkt man dann: Ok, so einfach geht das nicht. Ich kann da nicht einfach Code rumschieben, wie das mit sp\u00e4teren Nicht-Zeilen-Orientierten-Programmiersprachen \u00fcblich ist.<\/p>\n\n\n\n<p><strong>Zweite Schritte<\/strong><\/p>\n\n\n\n<p>So versucht man es im zweiten Schritt mit ein bisschen Planung und f\u00e4ngt von vorne an (Denn die \u00dcbernahme von Codezeilen ist wieder auch nicht so einfach &#8211; hilfe Renumber?). Man verlagert Code in Subroutinen und diese Subroutinen (GOSUB RETURN) in h\u00f6here Zeilen (Wie weit gehen die Zeilennummern wohl?). <br><br>Aber auch hier wird zunehmend zum Problem, dass man beim Gosub halt an irgend eine Zeile springt und dies dann auch nicht sprechend ist, etwa GOSUB 6000. <br><br>Bei der Strukturierung hilft als Erstes REM (Remarks). Aber auch das nur begrenzt, denn der Code ist wegen den Einwordcommands-pro-Linie immer lang.<br><br><strong>Dritter Schritt  <\/strong><\/p>\n\n\n\n<p>In einem dritten Schritt f\u00e4ngt man dann an, eine eigene externe Doku auf Papier zu machen f\u00fcr sich selbst. <\/p>\n\n\n\n<p><strong>Vierter Schritt<\/strong><\/p>\n\n\n\n<p>Das Eingest\u00e4ndnis: Die heute viel genutzte Technik: Anfangen und Ausbauen ist bei Basic nicht so einfach.<br>Darum: Planung im Vorfeld und dann eine erste Einteilung etc<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Fazit<\/h2>\n\n\n\n<p>Die Art und Weise wie man Basic-Programmierung in Erinnerung hatte, funktioniert eher nur f\u00fcr kleine Programme und nicht f\u00fcr Grosse. Und es sollte nachgefragt werden, wie der Entwicklungsprozess von Basic-Programmen war und heute noch ist (NeoBasic-Entwickler).<\/p>\n\n\n\n<p>Es zeigt aber auch, warum gerade auf 16\/32Bit sich dann so schnell die Zeilenlosen bzw. Label-orientieren Basics sich durchgesetzt haben und vielleicht dann auch verschwunden sind (mit Ausnahme von VisualBasic vielleicht). <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Basic war in den 70er(?) aber sp\u00e4testens in den 80er Jahren das Ding in Sachen Programmierung f\u00fcr die Massen. Dies wie hier schon aufgezeigt wurde, weil BASIC bei den meisten 8Bit-Homecomputer die quasi &#8222;Betriebsystemoberfl\u00e4che&#8220; war und damit auch immer schon eingebaut war. Verwendungszweck Computer &gt; Programmierung zu Nutzung Anders gesagt: Programmierung war die erste Anwendung. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[66,1],"tags":[],"class_list":["post-1231","post","type-post","status-publish","format-standard","hentry","category-basic","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/research.swissdigitization.ch\/index.php?rest_route=\/wp\/v2\/posts\/1231","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/research.swissdigitization.ch\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/research.swissdigitization.ch\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/research.swissdigitization.ch\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/research.swissdigitization.ch\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1231"}],"version-history":[{"count":4,"href":"https:\/\/research.swissdigitization.ch\/index.php?rest_route=\/wp\/v2\/posts\/1231\/revisions"}],"predecessor-version":[{"id":1236,"href":"https:\/\/research.swissdigitization.ch\/index.php?rest_route=\/wp\/v2\/posts\/1231\/revisions\/1236"}],"wp:attachment":[{"href":"https:\/\/research.swissdigitization.ch\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1231"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/research.swissdigitization.ch\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1231"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/research.swissdigitization.ch\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1231"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}