Auf zum groen... ^1 ^1 ^1 ^1 ^1 ^1 ^3 ^3 Heute: Warum ist Basic eine langsame Einsteigersprache? ^3 ^4Im MiCo gab's frher eine hnliche Rubrik. Doch diese gibt's leider nimmer... ^4Deshalb hat sich The Real Adok entschlossen, diese Rubi im Hugendubelexpress ^4fortzusetzen! Macht mit! Es knnte ganz schn lustig und interessant werden! >> The Real Adok: Leute, fr die erste Ausgabe der Prospenstreit-Rubrik gebe ich mal das Thema vor. Also, es geht jetzt darum, da von vielen Codern Basic als eine langsame Einsteigersprache abqualifiziert wird. Dabei haben diese selbsternannten "Gurus" meistens keine Ahnung von Basic! Ein extremes Beispiel ist das, was dieser El Schwalmo im PCH 2/96 als Antwort auf einen Text von Wstenfuchs geschrieben hat. Ich zitiere: ^1 (Zitat On) 9 "Meine eigenen Programmiererfahrungen in Basic liegen zwar schon zwlf 9 Jahre zurck, ich glaube aber, einigermaen die Mglichkeiten und Grenzen 9 dieser Sprache zu kennen. Ich bin mir ziemlich sicher, da du dich noch nie 9 vernnftig mit strukturierter Programmierung (die selbstverstndlich auch 9 in Basic mglich ist - aber man kann auch Ngel mit der Zange einschlagen) 9 beschftigt hast." ^1 (Zitat Interrupted) Gut, einmal bis hierher. OK, ich kann verstehen, da El Schwalmo ein bichen wtend war, als er diesen Text schrieb. Wstenfuchs hatte nmlich behauptet, da Spaghetticode viel besser als strukturierte Programmierung wre. Auch ich war nicht mit Wstenfuchs' Text einverstanden. Doch El Schwalmo scho mit seiner Antwort weit ber das Ziel hinaus! Es ging doch um strukturierte Programmierung, nicht um Basic oder Pascal! El Schwalmo meint, seine Basic-Erfahrungen liegen zwlf Jahre zurck, aber trotzdem kenne er die Grenzen dieser Sprache. Zwlf Jahre - da liegt doch eine ganze Generation dazwischen! Gerade in den vergangenen zwlf Jahren hat Basic einen gewaltigen Fortschritt gemacht. Zeilennummern und GOTOs wurden abgeschafft (obwohl man sie immer noch machen kann - macht aber fast niemand mehr) und durch Prozeduren, Funktionen und leistungsfhige Blcke wie DO/LOOP ersetzt. Die strukturierte Programmierung lebt! Die neuen Basic-Dialekte sind wirklich voll strukturiert, aber trotzdem ist man nicht so ein Sklave wie in Pascal. Eher ist es so wie in C: Man mu sich an einige Vorschriften halten, aber innerhalb dieser Vorschriften hat man vollkommene Bewegungsfreiheit. Und nun weiter mit dem Zitat... ^1 (Zitat Continues) 9 "Wenn du beispielsweise ein professionelles Pascal-Programm schreibst, 9 teilst du die Aufgaben in sinnvolle Einheiten (Module) auf, die ber sauber 9 definierte Schnittstellen mit dem Rest des Programms kommunizieren. Diese 9 Module knnen bei Bedarf als Units ausgelagert werden. Selbstverstndlich 9 kann deren Programmierung auch von verschiedenen Codern bernommen werden. 9 Die Projektverwaltung der IDE von Borland Pascal ist so 'intelligent', da 9 sie bei Bedarf diese Module automatisch in ein Fenster ldt, falls dort ein 9 Fehler aufgetreten ist." ^1 (Zitat Interrupted) Und die Projektverwaltung der IDE von Quick Basic ist so intelligent, da sie gleich zu Beginn jede Prozedur und Funktion jedes Moduls in ein Fenster legt! Sorry, El Schwalmo, aber du bist programmiertechnisch gesehen wirklich stark zurckgeblieben. Alles, was du ber Pascal gesagt hast, knnen die neuen Basic-Dialekte auch! ^1 (Zitat Continues) 9 "Der Compiler bindet die Module dann zum fertigen Programm zusammen. Das 9 eigentliche Hauptprogramm besteht im Extremfall nur noch aus einer Zeile. 9 Wenn nach der Fertigstellung nderungen notwendig sind, mu selbstver- 9 stndlich nur das betroffene Modul berarbeitet oder neu geschrieben 9 werden. Nach einem Compiler-Lauf ist das Programm wieder bereit fr den 9 Kunden." ^1 (Zitat Off) Der Text geht noch ein bichen weiter, aber den Rest erspare ich mir, weil er nichts mehr mit dem Thema "Basic vs. Pascal" zu tun hat. Also, El Schwalmo's Text ist wieder ein schnes Beispiel dafr, da die Basic-Hasser meistens null Ahnung von Basic haben! Meistens sind es Leute, die Pascal erlernt haben und jetzt noch immer auf Pascal "sitzen". Sie merkten gar nicht, da sich die Welt um sie rasend vorwrts bewegt hat! Mittlerweile wird selbst Pascal nimmer weiterentwickelt und ist dem Untergang geweiht. C++ beherrscht die Welt! Nun aber wieder zum eigentlichen Thema: Also, was sind wirklich die Grnde fr die Vorurteile, Basic sei langsam und eine Einsteigersprache? Man kann doch gar nicht sagen, eine Sprache sei langsam oder schnell, denn das kommt nur auf die Implementation an! QBasic ist z.B. um ein Vielfaches langsamer als Power Basic. Im Grunde genommen wre es also auch mglich, einen Basic- Compiler zu schreiben, der schneller ist als C++. Kommt doch wirklich nur auf die Implementation an! Das zweite ist: Einsteigersprache. Was bedeutet denn dieses seltsame Wort, "Einsteigersprache"? Ist Basic eine Einsteigersprache, nur weil es leicht zu erlernen ist? Oder weil ein Basic-Dialekt dem DOS gratis beiliegt? Oder weil Basic eine automatische Syntaxberprfung hat? Nun, diese ganzen Punkte sind doch alle nicht schlecht! Aber wie wr's mit Systemnhe? Da hat Basic einige Probs! Denn Power Basic ist der einzige Basic-Dialekt mit einem Inline-Assembler. Aber wie dem auch sei: Pascal ist auch "nur" eine Einsteigersprache, also haben die Pascalisten kein Recht, Basic als Einsteigersprache herunterzumachen! Und die Codegre: Diese ist ja auch ein vielzitiertes Manko von Basic. Basic-Programme sollen gro, speicherfressend usw. sein... welch ein Bld- sinn! Auch hier kommt es auf den Compiler an. So erzeugen z.B. manche C(!)- Compiler grere EXE-Dateien als Quick Basic! Und wenn die sogenannte "Krnung" feiner wre, wren die EXE's noch kleiner. Kommt immer auf den Compiler an! Vielleicht gibt's einen, der eine feine Krnung hat! (Fr alle, die beim Wort "Krnung" nur Bahnhof verstehen: Die Krnung gibt an, ob ein Compiler immer die gleiche Standardbibliothek in eine EXE-Datei ein- bindet oder nur die Befehle, die in dem Programm verwendet werden. Je feiner die Krnung, desto mehr wird auf die Befehle geachtet.) OK, um nun auf den Punkt zu kommen: Die meisten Basic-Kritiker sind Pascalisten, die keine Ahnung von Basic haben und denken, Basic sei noch immer so wie das Ur-Basic! Leider gibt es einen einfachen Grund, warum dieser Mistand existiert: In vielen Schulen wird noch das veraltete, unstrukturierte und langsame GW-Basic unterrichtet! Also, da sollten sich die Info-Lehrer endlich zusammenreien und ihren Schlern ein modernes Basic beibringen! Und noch etwas: PiaCia hat in demselben PCH (Ausgabe 2/96) eine hnliche Aussage wie El Schwalmo gemacht. Sie schreibt u.a., da man in Basic Spaghetti-Code programmieren kann, den man sich dann nur sehr schwer abge- whnen knne. Nun, meine Antwort darauf lautet schlicht und einfach: In Pascal lt sich auch Spaghetti-Code programmieren! Habt ihr schon mal aus- probiert, in Pascal das Wrtchen 'goto' zu tippen? Tatschlich: Auch in Pascal gibt's diesen berhmt-berchtigten Befehl! Also sollen die Pascal- isten endlich aufhren zu sagen, ihre Sprache sei vollkommen strukturiert! So, jetzt hre ich mal mit meiner Predigt auf und warte ab, was die anderen dazu sagen! Euer The Real Adok. PS: Ich bin berhaupt nicht wtend, falls mein Geschreibsel sich so anhrt! Und noch ein Smiley... :-)) ^1Hier nun die Reaktionen auf The Real Adok's Meinung: >> Baphomet: K' die Hand, real ADOK! Mit Erstaunen habe ich Deinen Artikel ber den Prospenstreit gelesen. Ich mu (zu meiner Schande?) gestehen, da ich derselben Meinung wie El Schwalmo war. Einfach aus dem Grund, weil ich auch keinen modernen BASIC- Dialekt kannte (und eigentlich immer noch nicht kenne). Ich hatte zwar schon mehrmals von POWERBASIC gehrt, kannte jedoch keine Einzelheiten dieser Sprache. Die drei einzigen Basic-Dialekte, die ich kannte (und noch kenne), waren KC85-Basic, Amiga-Basic und eben jenes berhmt-berchtigte GW-BASIC. Ich programmiere ja nun nicht allzu viel, aber wenn ich code, dann in so ziemlich jeder Sprache (auer BASIC - SOOORRRYYYY!). Ich kann eben ein bichen C, ein bichen Pascal und ein bichen Assembler - jedoch beherrsche ich keine dieser Sprachen perfekt! Ich finde die ganzen Diskussionen um die beste und schnellste Sprache sowieso beschissen, denn jeder mu fr sich entscheiden, mit welcher Sprache er am besten zurechtkommt, welche Sprache die beste fr den jeweiligen Zweck ist. So kann man z.B. so was wie AMIPRO sicher auch voll- kommen in ASM coden, aber das stelle ich mir sauschwer vor. Ciao (Cesku) ^4 BAPHOMET >> Mad Monkey: Zum Thema Programmieren kann ich leider nicht viel sagen, da ich auf diesem Gebiet kein Profi bin, doch habe ich schon mit QBasic, Power Basic, dem guten alten C64-Basic und Turbo Pascal gearbeitet, so da ich einige Aussagen von The Real Adok besttigen kann. Ein Beispiel ist das Einbinden von Objektdateien unter Basic. Seit kurzer Zeit programmiere ich regelmig unter Power Basic und um hier bestehen zu knnen, mu man praktisch das strukturierte Programmieren erlernen. Wenn man am C64 angefangen hat unter Basic zu coden, fllt einem das am Anfang doch ein bichen schwer. Freundet man sich aber damit an, kann man jedes Hauptprogramm unter 10 Zeilen schreiben. Ich mache zwar keinen Hehl daraus, da ich Pascal nicht besonders mag, aber ich schtze es kommt von meinen alten C64-Tagen, in denen ich meine ersten Basic-Erfahrungen machte. Jetzt habe ich keine Lust mehr eine neue Sprache, sprich Pascal zu lernen, und deshalb fhle ich mich unter Power Basic auch recht wohl. Vielleicht spter, wenn ich Power-Basic perfekt beherrsche, werde ich versuchen, Pascal oder C zu erlernen. ^4 Mad Monkey >> TOXO: Also, was El Schwalmo da sagt, zeugt von absolutem Hintergrundwissen = Null. Da er nicht mehr ganz up to date ist, kann er auch gar nix sagen:). Abgesehen davon, da ich die Diskussionen wie "Welche Prospe is besser" oder auch "Welches BS ist das Beste" sowieso schwachsinnig finde, mu ich sagen, da es mir eigentlich ganz egal sein kann, in welcher Sprache ein Prog oder ein Game gecodet wurde. Es kommt auf die Qualitt bzw. den Spiel- spa an. Z.B. hatte ich beim Spielen von "Die Reise zum Mond" (von The Real Adok) sehr viel Spa - genau wie beim Spielen von Monkey Island. Obwohl die Unterschiede seeehr gro sind: DRZM ist in Basic geschrieben und die Grafik ist (sorry, The Real Adok), mild ausgedrckt: schlecht ;-). Monkey Island wurde in irgendeiner anderen Sprache geschrieben (C ??), aber bestimmt nicht in Basic. Die Grafik war (fr damalige Verhltnisse) sehr gut! Aber ist das nicht egal ? Was ntzt die beste Grafik, wenn der Spiel- spa auf der Strecke bleibt ? Trotz der groen Unterschiede haben mir beide Games sehr viel Spa gemacht. Aber wenn man was wirklich Gutes gecodet hat, kann man auch darauf stolz sein, egal in welcher Sprache das Prog geschrieben wurde, ob Bas oder Pas ! Sicher hat El Schwalmo recht, wenn er sagt, manche Basic-Dialekte sind nicht mit Pascal zu vergleichen, aber man darf nicht nur einen Basic- Compiler (bzw. Editor) bercksichtigen, sondern alle ! Ich bin der Meinung, mit Basic kann man richtige Spitzenprogs schreiben, die manche Hoch- sprachenprogz in den Schatten stellen. (Anmerkung von The Real Adok: Basic zhlt auch zu den Hochsprachen, im Gegensatz zu maschinenorientierten Sprachen wie Assembler.) Wenn man wie Mad Monkey manche Prospen nicht mag, kann man es ruhig sagen, man mu diese dann aber nicht schlecht machen. Das machen nur Ignoranten, die sich selbst etwas vormachen ! Man sollte viel mehr irgendwelche Aus- sagen von irgendwelchen Typen diskutieren, da so Vorurteile und irgend- welche Gerchte aus dem Weg gerumt werden knnen. Denn sonst htten vielleicht viele gesagt: "BASIC ist langsam, ich hab's im PC Heimwerker ge- lesen, und die mssen's ja wissen...". Das war jetzt kein persnlicher Angriff auf jemanden. Wer sich durch meinem Text beleidigt fhlt, ist selbst schuld - der hat dann nmlich berhaupt nix begriffen. ^4 - TOXO ! >> Dark Crusher: Noch was zum Text von THE REAL ADOK: Es ist auch in Basic mglich, ein strukturiertes Proggy zu schreiben wie in C und PAS (mit SELECT CASE, IF-THEN-ELSE-Blcken! und DO-LOOP/WHILE-WEND-Schleifen). Es liegt nicht an der Sprache, ob die Programme strukturiert sind, sondern am Programmierer! Wie halt eben schon merfach oben von den anderen erwhnt, gibt es keine ULTIMATIVE Programmiersprache. Jeder soll sehen, was er KANN und was er BRAUCHT und was er WILL. Es gibt Unterschiede. Hier ist die eine Programmiersprache besser, da die andere. Jeder von uns benutzt doch ein Wertesystem, nachdem er alles bewertet, und je nach dem, was man halt eben fr wichtiger findet, benutzt man halt eben eine Sprache, die dem Werte- system am besten entspricht. Wie oben auch schon erwhnt, sollte man - von Zeit zu Zeit - sich dann auch mal an anderen Programmiersprachen (neueren Versionen) probieren, um zu sehen, ob man vieleich doch besser mit einer anderen Proggylanguage zurechtkommt! ^4 DC >> The Real Adok: Ok. Und wo bleiben die Pascalisten? Wartet's ab... ^1The Real Adok hat auch im PCH einen hnlichen Artikel geschrieben. Darauf ^1bekam er eine Antwort. Ratet mal, von wem - richtig, von El Schwalmo! Damit ^1ihr sie besser versteht, folgt hier schnell der Artikel, der im PCH erschienen ^1ist: An alle Coder und solche, die es werden wollen! Ich mchte hier eine Diskussion in den Gang setzen. Es geht um die Frage von Koala, welche Pro- grammiersprache fr einen Anfnger am besten geeignet sei. Eine Menge Leute antworteten ihm auf diese Frage. Es schienen sich zwei Gruppen herauszubilden. Die eine (unter anderem auch ich) pldierte fr Basic, die andere fr Pascal. Whrend die Basic-Fans besonders die positiven Aspekte "ihrer" Sprache nannten, gaben die Pascalisten tausend Grnde an, warum Basic schlecht sei. Die Spitze des Eisbergs kam dann im PCH 2/96, wo El Schwalmo seine Antwort auf Wstenfuchs' Meinung zur strukturierten Programmierung gab. Ich zitiere: 9 "Meine eigenen Programmiererfahrungen in Basic liegen zwar schon zwlf 9 Jahre zurck, ich glaube aber, einigermaen die Mglichkeiten und Grenzen 9 dieser Sprache zu kennen. Ich bin mir ziemlich sicher, da du dich noch nie 9 vernnftig mit strukturierter Programmierung (die selbstverstndlich auch 9 in Basic mglich ist - aber man kann auch Ngel mit der Zange einschlagen) 9 beschftigt hast." 9 "Wenn du beispielsweise ein professionelles Pascal-Programm schreibst, 9 teilst du die Aufgaben in sinnvolle Einheiten (Module) auf, die ber sauber 9 definierte Schnittstellen mit dem Rest des Programms kommunizieren. Diese 9 Module knnen bei Bedarf als Units ausgelagert werden. Selbstverstndlich 9 kann deren Programmierung auch von verschiedenen Codern bernommen werden. 9 Die Projektverwaltung der IDE von Borland Pascal ist so 'intelligent', da 9 sie bei Bedarf diese Module automatisch in ein Fenster ldt, falls dort ein 9 Fehler aufgetreten ist." 9 "Der Compiler bindet die Module dann zum fertigen Programm zusammen. Das 9 eigentliche Hauptprogramm besteht im Extremfall nur noch aus einer Zeile. 9 Wenn nach der Fertigstellung nderungen notwendig sind, mu selbstver- 9 stndlich nur das betroffene Modul berarbeitet oder neu geschrieben 9 werden. Nach einem Compiler-Lauf ist das Programm wieder bereit fr den 9 Kunden." Und ich sage: Alles, aber auch wirklich alles, was El Schwalmo gesagt hat, ist auch in Basic mglich! Beginnen wir einmal von Anfang an: El Schwalmo, wenn deine Programmiererfahrungen schon zwlf Jahre zurckliegen, kannst du dich berhaupt nicht auf das heutige Basic beziehen! Die Zeiten, in denen Zeilen- nummern ntig waren, sind schon lngst vorbei. Vor allem in den letzten sieben Jahren (also seit dem Zeitpunkt, als Version 4.5 von Quick Basic erschien) er- fuhr Basic einen gewaltigen Quantensprung. Du wrdest Basic nicht mehr erkennen! Liest du denn nie die Basic-Rubrik? Wenn du die Listings betrach- test, sehen sie ganz anders aus, als Basic-Proggys zu deiner Zeit! Alle nderungen aufzuzhlen, die Basic seit Quick Basic 4.5 erfahren hat, wrde den Rahmen dieses Berichts sprengen! Hier seien nur die wichtigsten aufgezhlt: 1. Blcke und Schleifen: Zeilennummern, wie sie noch bei GW-Basic notwendig waren, gibt es nicht mehr. (Das bedeutet aber nicht, da man sie nicht mehr verwenden kann!) Wenn man unbedingt GOTOs und GOSUBs verwenden will, dann nur mit Labels. Aber die Verwendung dieser sehr umstrittenen Befehle ist heutzu- tage nicht mehr notwendig. Es gibt jetzt sehr leistungsfhige Blcke, zum Bei- spiel die DO/LOOP-Schleife. Ein Gegenstck zur DO/LOOP-Schleife in anderen Sprachen kenne ich NICHT! Ein kleines Beispielprogramm: ^0DIM Buchstabe AS STRING * 1 'Stringvariable aus einem Zeichen ^0CLS 'Bildschirm lschen ^0DO 'Beginn der Schleife ^0 PRINT "Gib einen Buchstaben ein!" 'Textausgabe ^0 Buchstabe = INPUT$(1) 'ein Buchstabe wird eingegeben und in ^0 'der Variablen Buchstabe gespeichert ^0LOOP 'Ende der Schleife Ihr knnt dieses Programm, so wie es ist, unter QBasic (liegt DOS gratis bei), Quick Basic oder Power Basic abtippen. Dieses Programm ist praktisch eine End- losschleife, weil die Befehle zwischen DO und LOOP unendlich oft ausgefhrt werden. Wir wollen nun eine Abbruchsbedingung einbauen. Wenn der Anwender ent- weder ein kleines "e" oder ein groes "E" eingibt, so soll das Programm beendet werden. Dazu schreibt man einfach: ^0DIM Buchstabe AS STRING * 1 ^0CLS ^0DO ^0 PRINT "Gib einen Buchstaben ein!" ^0 Buchstabe$ = INPUT$(1) ^0LOOP UNTIL UCASE$(Buchstabe) = "E" El Schwalmo: Wie du siehst, ist dieses Beispiel schn strukturiert und ber- sichtlich, also ganz anders, als du deine Basic-Proggys in Erinnerung hast! Bis auf PRINT verwende ich auerdem Befehle, die es erst seit Quick Basic 4.5 gibt. (DIM wirst du wahrscheinlich schon aus der Arrayverwaltung kennen, aber hier hat es einen anderen Zweck.) Damit du das Programm verstehst, hier das- selbe in Pascal: ^0USES Crt; ^0VAR Buchstabe : CHAR; ^0BEGIN ^0 ClrScr; ^0 REPEAT ^0 WriteLn ('Gib einen Buchstaben ein!'); ^0 Buchstabe := ReadKey ^0 UNTIL UpCase(Buchstabe) = 'E'; ^0END. Wie du siehst, ist das Basic-Listing wesentlich krzer, aber trotzdem schn strukturiert und absolut gleichwertig! Und jetzt etwas, was man in Pascal nur schwer realisieren kann, in Basic aber ein Kinderspiel ist: Statt UNTIL kann man auch WHILE sagen, und BEIDE (sowohl WHILE und UNTIL) lassen sich sowohl nach DO als auch nach LOOP schreiben! In Pascal gibt es dagegen nur zwei Schleifen: WHILE/WEND und REPEAT/UNTIL. WHILE/WEND entspricht DO WHILE/LOOP und REPEAT/UNTIL entspricht DO/LOOP UNTIL. Aber in Pascal, dieser starren Sprache, gibt es weder ein DO UNTIL/LOOP noch ein DO/LOOP WHILE!!!! berhaupt gibt es in Basic viele Befehle, die mehrere Anwendungen haben. Beispielsweise gibt es in Basic den Grafikbefehl LINE. Mit ihm kann man Linien zeichnen, Rechtecke zeichnen und Rechtecke ausmalen. In Pascal gibt es fr jede dieser Anwendungen einen eigenen Befehl! Ist doch absolute Verschwendung, denn dafr gibt es weniger freie Variablennamen. Auerdem haben die Blcke und Schleifen von Basic eine Spezialitt, die es in Pascal nicht gibt: den EXIT-Befehl. Frher mute man, wenn man aus einer Schleife herausspringen wollte, GOTO ver- wenden. Nun benutzt man EXIT. Damit kann man in die Zeile nach dem Ende der Schleife springen. Als Parameter mu der Schleifen-/Blockname angegeben werden, also z.B. EXIT FOR, um in die Zeile nach NEXT zu springen. 2. Prozeduren und Funktionen: Sie wurden aus Pascal bernommen, heien aber SUBs und FUNCTIONs. Sie sind im Grunde genommen nichts anderes als normale Blcke, knnen also mit EXIT beendet werden. Jede SUB und jede FUNCTION wird in QBasic und Quick Basic in einem eigenen Fenster dargestellt, was die ber- sichtlichkeit stark erhht. 3. Module, Includes: Module unterscheiden sich von Includes, da sie SUBs und FUNCTIONs beinhalten knnen, whrend letztere meistens nur aus Variablen- definitionen bestehen. Im Gegensatz zu Pascal mssen Module NICHT zu Units compiliert werden, obwohl dies bei Power Basic auch mglich ist. (Und da Module nicht compiliert werden mssen, kann es im Gegensatz zu Pascal auch nie passieren, da ein Modul nicht luft, nur weil die falsche Version der Pro- grammiersprache verwendet wird!) Lieber El Schwalmo, da die IDE von Power Basic zu 90% der Borland-IDE entspricht (Power Basic bzw. dessen Vorgnger Turbo Basic war frher eine Borland-Produktion), ist auch diese intelligent genug, bei Fehlern in die Module zu springen. Noch intelligenter ist aber die Quick-Basic-IDE, in der jede einzelne SUB jedes einzelnen Moduls in einem eigenen Fenster dargestellt wird. So kann man leicht zwischen ihnen hin- und herschalten. 4. Variablendefinitionen: Viele Pascalisten geben damit an, da Basic so un- bersichtlich sei, weil keine Variablen definiert werden mten. Da wrde ich eher behaupten, da Pascal ein Mist sei, weil alle Variablen (und seien sie noch so unwichtig) definiert werden mssen! Wenn man in einem Basic-Programm beispielsweise viele Integervariablen verwendet, braucht man am Anfang nur ^0DEFINT A-Z schreiben! Auerdem werden ohnehin auch in Basic schon die meisten Variablen definiert. Dies geschieht mit dem DIM-Befehl. Nach einer Variablendefinition knnen die Krzel entfallen! Im Beispielprogramm verwendete ich z.B. einen String mit der Lnge 1 (speicherplatzsparend, wenn nur Zeichen eingegeben werden mssen!) Das berhmte Dollarzeichen kann dann entfallen. Wenn wir schon dabei sind: In Pascal gibt es nur Strings mit einer festen Anzahl von Zeichen, wogegen es in Basic auch Strings mit variabler Lnge gibt. Die maximale Lnge eines Strings in Pascal ist auf 255 Zeichen begrenzt, whrend in Basic ein String bis zu 32768 (!) Zeichen lang sein kann! Trotzdem verbraucht ein String mit variabler Lnge dank Basic's intelligenter String- verwaltung nicht gleich 32 KByte Arbeitsspeicherplatz. Sollte jetzt jemand wegen den Datentypen herziehen: Da im normalen Basic der kleinste Datentyp 16 Bit gro ist, ist natrlich schon eine Verschwendung. Ebenfalls ist es mies, das es im normalen Basic keine "unsigned"-Datentypen (natrliche Zahlen) gibt. Aber das alles trifft auf Power Basic nicht zu! Dort gibt es neben den "normalen" Datentypen unzhlige "besondere" Datentypen, u.a. BYTE, WORD, DWORD, BCD, FAR STRING,... Noch eine kleine Anmerkung zu den BOOLEAN-Variablen aus Pascal: Die sind doch nichts anderes als eine Speicher- verschwendung! Eine BOOLEAN-Variable belegt 8 Bit, obwohl 1 Bit reichen wrde! Am besten wre es meiner Meinung nach, wenn man die einzelnen Bits einer Variablen direkt ansprechen knnte. Doch so etwas gibt es in keiner Pro- grammiersprache (auer mit einer kleinen mathematischen Formel, die ich berechnet habe!) 5. Systemnahe Programmierung: Frher gab's bis auf PEEK und POKE keine anderen Mglichkeiten, systemnah zu programmieren. Doch seit Quick Basic kann man auch Registerwerte ndern und Interrupts aufrufen. Power Basic setzt sogar noch einen oben drauf - mit einem Inline-Assembler. So lieen sich auch Demos unter Basic realisieren. (Die meisten Demos werden immer noch in Pascal gecodet, aber die Pascal-Demos verwenden ja auch fast nur ASM-Routinen. Pascal wird meistens nur als "Plattform" verwendet, in der die einzelnen ASM-Routinen auf- gerufen werden. Das kann man genauso in Basic machen!) 6. Neue Befehle: Natrlich hat Basic im Vergleich zu dem Basic vor zwlf Jahren jede Menge neuer Befehle, die vor allem die Fhigkeiten des PCs nutzen. Da gibt's z.B. LINE (Linien, Rechtecke, ausgefllte Rechtecke), CIRCLE (Kreise, Ellipsen, Kreisbgen, Kreissektoren), PAINT (Objekte mit Farbe aus- fllen), DRAW (DER Grafikbefehl schlechthin), PLAY (DER Musikbefehl schlecht- hin), SOUND (der PC als Synthesizer), SCREEN (Bildschirmmodus wechseln), DO/LOOP, IF/THEN/ELSE/ENDIF, SUBs, FUNCTIONs, SELECT/CASE, LTRIM$ (Leerzeichen links entfernen), RTRIM$ (Leerzeichen rechts entfernen), INSTR (wo in der Zeichenkette ist welcher Buchstabe?), REG, CALL INTERRUPT und viele, viele mehr. 7. Compiler: Die Zeiten sind vorbei, als Basic eine langsame Interpreter- sprache war. Bis auf QBasic (das aber dafr DOS gratis beiliegt) sind alle wichtigen Basic-Dialekte Compiler. Power Basic ist besonders schnell und er- zeugt sowohl im Umfang des Codes als auch in der Geschwindigkeit hochopti- mierte Programme. Es kann locker mit (Turbo) Pascal mithalten! 8. Editor: Bei Power Basic ist eine Borland-hnliche IDE enthalten, die bis auf Windowing und andere Spielereien alle Vorteile (und Nachteile) besitzt. Die Q- und Quick-Basic-IDE ist sogar noch besser. Jede SUB, FUNCTION und jedes Modul bekommen ein eigenes Fenster, automatische Syntaxberprfung (fr Anfn- ger super, fr Profis aber eher strend) etc. So, El Schwalmo, jetzt mtest du eingesehen haben, da du mit deinen zwlf Jahre alten Kenntnissen (Mann! Da wurde ich gerade erst geboren!) nicht mehr ganz "up to date" bist. Wenn dich Basic interessiert, so schaue dir doch meinen QBasic-Kurs an! berhaupt mchte ich sagen, da die meisten Leute Basic nur als Einsteiger- sprache betrachten, die nur dazu da ist, um sich mit dem Grundprinzip vertraut zu machen. Wenn sie einen poppeligen Grundkurs durchgearbeitet haben, glauben sie, Basic schon perfekt zu knnen und wenden sich einer anderen Pro- grammiersprache zu. Wenn sie wten, was man mit Basic, vor allem mit Power Basic, alles anfangen kann! Beispielsweise wurden das Magsystem des neuen Diskmags "Hugendubelexpress" (dieses da ;-) ) und eine ltere Version von Activater's PCH-Anzeigeneditor in Basic gecodet. ^1Uff, eine ganze Menge! Wenn ihr euch da durchgekmpft habt (nicht dadurch ^1gekmpft ;-) ), werdet ihr dafr reichlich belohnt. Hier ist El Schwalmo's ^1Antwort! >> El Schwalmo: Hi du, The Real Adok, du hast mich (El Schwalmo) im PC-Heimwerker in deinem Artikel Basic versus Pascal ziemlich direkt angesprochen. Ich habe mir lange berlegt, ob es sich lohnt, dir zu schreiben. Dann habe ich mir aber gedacht, wenn du wirklich erst 12 Jahre alt bist (oder meinst du die Angabe im vorletzten Absatz ironisch?), besteht vielleicht noch die Chance, da du was lernst. Meiner Meinung nach mut du an deinem Stil und an deinem Wissen noch eine Menge verbessern. Du schreibst beispielsweise "Damit du das Programm verstehst, hier dasselbe in Pascal" oder "schn strukturiert..., als du deine (sic!) Basic-Programme in Erinnerung hast!". Willst du mich eigentlich beleidigen? Ich habe ein abgeschlossenes Informatik-Studium hinter mir, meinst du, ich htte irgendwelche Probleme, dein Programmstckchen hinter der Komplexitt des 'Hello world'-Programms zu verstehen? Und wenn ich gesagt habe, da meine letzten Programmier- Erfahrungen in Basic 12 Jahre zurckliegen, brauchst du nicht daraus zu schlieen, da ich in der Zeit vorher Spaghetti-Code produziert htte. Auch damals konnte man schon strukturiert programmieren! Ein Aufruf mit GoSub ist genauso brauchbar wie ein Prozedur- oder Funktionsauf- ruf. Und auch wenn es dich berraschen sollte, Labels gab's schon damals (zumindest in Comal, was ja nicht so weit von Basic entfernt ist). Wenn du mehr Ahnung httest als ich, wrde ich deinen Ton sogar noch akzeptieren. Ich teile gerne aus, kann aber natrlich auch einstecken. Aber da sieht es doch ziemlich mau aus bei dir. Beispiele gefllig? 1. Blcke und Schleifen: Irgendwie scheinst du nicht zu wissen, was 'strukturiertes Programmieren' ist ("wesentlich krzer, aber trotzdem schn strukturiert"). Wenn du der Meinung bist, damit sei gemeint, da man den Schleifenkrper zwei Leerschritte einrckt, dann solltest du mal in ein Informatik-Buch schauen. Deine Hymne auf die Schleifen in Basic geht doch voll an der Sache vorbei. Schau mal, es gibt pre- und post-getestete Schleifen. Beides sind doch nur Komfort-Funktionen, denn von der Sache her tut's doch auch eine Endlos- Schleife mit einem Exit-Befehl (den es brigens auch in Pascal gibt, zugegebenermaen etwas anders als in Basic) und einer zweiseitigen Auswahl. Warum du DO LOOP UNTIL einem REPEAT UNTIL vorziehst, wird wohl ewig dein Geheimnis bleiben. Und wenn ich eine Endlosschleife brauche, setze ich einfach eine unerfllbare Bedingung ein, z.B. WHILE 1 = 2 DO oder REPEAT UNTIL TRUE = FALSE. Und die Basic-Befehle, die du ber den grnen Klee lobst, sind doch wohl auch in Pascal einfach realisierbar. Jede Prozedur oder Funktion, die du schreibst, ist ein neuer Programmier-Befehl. Was hindert dich, ein abstraktes Objekt 'Figur' zu deklarieren, davon eine Objekthierarchie, beispielsweise ecken, rund, unbestimmt abzuleiten, in denen du dann die Figuren so deklarierst, wie du diese haben willst? Der Speicherplatzbedarf ist minimal, weil alle geerbten Eigenschaften und Methoden weiter gelten, viel Platz in der VMT brauchst du auch nicht, und wenn du dann figur.ecken. blaues_quadrat.init (10, 20, 100) eintippst, erhltst du beispielsweise ein blaues Quadrat. Warum sollte Basic da besser sein? Und wenn du zu faul zum Coden bist, kannst du einige zig MB Quellcode aus Mailboxen saugen oder auch kuflich erwerben. Aufgrund der Objektorientier- ung kannst du sogar die gekauften Objekte selber verbessern, wenn der Pro- grammierer das nicht explizit verboten oder nicht dokumentiert hat. Und warum siehst du ein Problem bei den Variablen-Namen? Bei der mglichen Lnge des Bezeichners (63 signifikante Zeichen in Borland-Pascal) sehe ich keinerlei diesbezgliche Schwierigkeiten. 3. Module und Includes: Weit du, wenn du ein Problem darin siehst, da du eine in einer lteren Version compilierte Unit nicht mehr einbinden kannst, kann ich dir auch nicht helfen. Entweder hast du den Quelltext, dann compilierst du den halt einfach noch mal mit der neuen Version, wenn nicht, mut du dir halt berlegen, ob das Teil wirklich so wichtig fr dich ist. Wenn das Ding was taugt, gibt es das auch fr die neuere Version zu kaufen, ansonsten wrde ich es eh vergessen. Wenn du es aber primitiv haben willst, dann verzichte halt auf Units und binde die Routinen als Include-Dateien ein. Dann werden diese beim nchsten Compiler-Lauf einfach mitcompiliert. Dann wrde ich aber sagen, da du keine Ahnung von der Mchtigkeit des Unit-Konzepts hast und freiwillig auf dessen Leistungsfhigkeit verzichtest. Als Chef wrde ich dann schon mal deine Papiere heraussuchen... 4. Variablendefinitionen: Hast du schon mal was von null-terminierten Strings gehrt? Kauf dir gegebenenfalls mal ein Pascal-Handbuch, dann kannst du mal nachlesen, da Strings auch 64 KB gro sein knnen, und das nicht, weil es nicht lnger geht, sondern weil DOS auf 16 Bit begrenzt ist. Der Speicherplatzverbrauch ist dabei genau die Lnge des Strings plus das terminale Zeichen, kein Byte mehr. Und dein Beispiel mit den Boolean-Variablen geht doch voll an der Sache vorbei. Kauf dir mal ein Buch ber maschinennahe Programmierung, dann siehst du sofort, warum es keinen Sinn macht, fr TRUE oder FALSE ein einzelnes Bit abzufragen. Und falls du doch mal das Problem haben solltest, einzelne Bits einer Variablen auslesen zu wollen, vergi deine kleine mathematische Formel. Wenn es das in keiner Programmiersprache geben sollte (wieviele kennst du eigentlich?), wird es dafr wohl einen Grund geben. Schreib einfach eine Maske und schau mal nach, was ein AND oder OR macht. So, das war nur eine kleine Auswahl, ich will nicht tiefer bohren. Damit wir nicht aneinander vorbeireden: Selbstverstndlich kann man mit Basic eine Menge machen. Aber nenn mir doch bitte mal eine echte Standard- Software (aber bitte kein PD-Spielchen oder Kiki-Diskmag, sondern ein Proggy vom Kaliber einer Textverarbeitung oder Tabellen-Kalkulation), das in Basic gecodet ist. Ich kann dir aber auch kein aktuelles mehr nennen, das in Pascal geschrieben wurde (klar, Xtree und Star Writer, aber die sind schon mega-out). Komm bitte nicht mit Visual Basic, sonst mu ich dir sagen, da du dir Delphi mal nher anschauen solltest. Mir ging nur auf den Senkel, da du ohne fundierte Ahnung auf Pascal eindrischt. Ich habe ganz groe Achtung vor dir, denn falls du erst 12 sein solltest, httest du dafr eine ganze Menge auf dem Kasten (du hast ja noch ein paar andere Sachen im PC-Heimwerker geschrieben, die ganz vernnftig aussehen). Wenn du mich von Basic berzeugen willst, dann schick mir doch einfach eine Lsung fr folgendes Problem: Du willst Namen in den Computer eingeben und diese alphabetisch sortiert wieder ausgeben. Der Haken: Es knnen nur 5, aber genausogut auch 100000 sein, das merkst du aber erst daran, da der User 'Ende' eingibt. Ich sage dir mal, wie das in Pascal (analog auch in C oder so) geht. Arrays scheiden aus, denn man wei ja nicht, wie gro der sein soll. Du verwendest selbstverstndlich eine dynamische Datenstruktur, beispielsweise einen Binr-Baum, in dem du einen neuen Namen als Blatt immer links einhngst, falls er im Alphabet vorher kommt, als der vorige (gleiche Namen brauchst du nur einmal zu speichern), sonst rechts. Natrlich fngst du an der Wurzel an und hangelst dich solange durch die Knoten, bis du ein freies Blatt findest. Die ganze Struktur legst du auf den Heap, falls du Probleme mit dem Speicher haben solltest, verwende halt einen DPMI-Treiber und gehst in den Protected Mode, dann hast du je nach Rechner ein paar MB davon. Im Variablenspeicher brauchst du dann nur einen typisierten Zeiger, der ist auch nur 2 Byte gro, und ein paar Zusatzinfos. Wenn du den Baum dann Links-Rechts-Postordner linearisierst, hast du die Namen alphabetisch geordnet. Streng dich mal an! ^1Ok El Schwalmo! Und nun die Antwort auf die Antwort. Die Kugel rollt weiter... >> The Real Adok: Hi El Schwalmo! Gleich zu Beginn mchte ich sagen, da mein Artikel "Basic vs. Pascal" keineswegs einen Angriff auf Deine Person darstellen sollte. Wenn du den PCH aufmerksam gelesen hast, wirst du sicherlich die Diskussion gesehen haben, welche Anfngersprache die beste sei. Wie gesagt, gab es zwei Gruppen, die eine pldierte fr Basic, die andere fr Pascal. Das alleine wre ja nicht schlimm. Doch man konnte erkennen, da unter den Pascalisten immer noch die uralten Vorurteile gegenber Basic herrschen. Basic sei nach den Pascalisten noch immer eine langsame, unstrukturierte und unbersichtliche Sprache, die kaum Mglich- keiten zur systemnahen Programmierung biete. Na, und so werden die Anfnger verwirrt und falsche Tatsachen verbreitet! Das war der Grund, warum ich den Artikel "Basic vs. Pascal" schrieb: um endlich mit den Vorurteilen Schlu zu machen und Licht in die Sache zu bringen. Sorry, wenn's so klang, als ob ich dich beleidigen wollte. Doch ich nahm deinen Text nur als Beispiel, weil er meiner Meinung nach das Fa zum ber- laufen gebracht hat. Genausogut htte ich auch einen anderen Text nehmen knnen! Nur war dein Text eben der "Beste". Alles wieder ok? Gut, kommen wir endlich zu deiner eigentlichen Antwort :-). Ja, die Angabe war nicht ironisch gemeint, ich bin wirklich erst seit zwlf Jahren und ein paar Monaten auf dieser Welt. Und ich bin jederzeit bereit, etwas zu lernen und mich zu verbessern, also immer nur her damit! Zum "Hello World"-Programm: Nun, woher sollte ich denn wissen, da du ein Info-Studium hinter dir hast? Auerdem ist der Artikel "Basic vs. Pascal", wie gesagt, nicht nur an dich gerichtet, sonst htte ich dir ja gleich einen Brief schreiben knnen (Briefmarken habe ich genug, brigens danke fr die eine, die du mir geschickt hast). Es mu ja nicht unbedingt der Fall sein, da alle PCH-Leser das Programm verstehen. Sicher konnte man schon frher strukturiert programmieren, keine Frage. Allerdings wrde ich GOSUB trotzdem nicht mit einem Prozeduraufruf gleich- setzen! Prozeduren haben immerhin doch einige Vor-/Nachteile: - Die Variablen sind, wenn nicht anders angegeben, lokal. Wenn die Prozedur auf die Variablen des Hauptproggys zugreifen soll, mu man sie global de- klarieren oder als Parameter bergeben. Schn und gut, das macht alles bersichtlicher. Aber da nicht nur die Rcksprungadresse, sondern auch die Parameter und lokalen Variablen auf dem Stack gespeichert werden, be- ntigen Prozeduraufrufe etwas mehr Arbeitsspeicher und sind langsamer, denn das PUSHen auf den Stack kostet immerhin auch Zeit. - Der Vorteil von Prozeduren ist aber, da man sie bei Bedarf in eigene Codesegmente auslagern kann. Bei GOSUBs geht das nicht, denn das sind keine richtigen Unterprogramme, sondern nur Unterroutinen im Hauptpro- gramm. Somit lassen sich mit Compilern, die keine Prozeduren unter- sttzen, hchstens 64 KByte lange Programme erzeugen. Naja, das geht wieder etwas am Thema vorbei. Gut, dann schauen wir mal, was bei mir so mau ist: 1. Blcke und Schleifen: Na, dieser Meinung bin ich sowieso nicht! Fr mich gehrt zur strukturierten Programmierung nicht nur die bersicht, sondern auch die Eleganz (Blcke, Schleifen und Kontrollstrukturen statt GOTO- Gewuzzle) und Modularitt (Prozeduren und Funktionen -> machen das Programm portabel). Das habe ich sowieso schon mal im PCH geschrieben, schau' mal in Ausgabe 2/96 unter Artikel 02-3100-8 nach. Sicher, mit den Schleifen hast du vollkommen recht! Statt DO LOOP WHILE kann man ja auch DO LOOP UNTIL NOT schreiben, dann lt es sich auch mit REPEAT UNTIL machen. Nur glaube ich nicht, da das jedem klar ist. Basic und Pascal sind ja auch Anfngersprachen. Die neuen Basic-Befehle lobe ich nicht ber den grnen Klee! Ich meinte blo, da in dieser Entwicklung natrlich auch neue Befehle gekommen sind, nicht mehr und auch nicht weniger. Klar, mit einem externen oder einem Inline-Assembler kann man sich alles auch selbst programmieren, doch wozu die ganze Mhe machen, wenn der Befehl schon vorhanden ist? Irgendwie geht mir das nicht ganz in den Kopf: Du lobst einerseits solche Baukasten- sprachen wie Delphi, in dem die wichtigsten Befehle schon vordefiniert sind, und andererseits meinst du, man soll sich seine Befehle selbst coden! Wie pat das zusammen? Ich selber gehre eher zu den Leuten, die ihre Befehle selbst erstellen, doch zum Lernen einer Sprache ist es sicherlich einfacher, wenn die Befehle schon "da" sind. berhaupt, wenn wir schon bei dem Thema "Anfngersprache" sind: Einer der grten Vorteile von Basic ist, da ein Basic-Interpreter (QBasic) MS-DOS gratis beiliegt. Du darfst nicht vergessen, da die meisten, die das Programmieren erlernen, keine Profis wie du sind, sondern blo Jugendliche, die ein bichen mit der Programmiersprache herumspielen und Gefallen daran finden. Auch das Geld spielt eine Rolle, denn welcher Jugendliche kann sich schon einen sndhaft teuren Pascal-Compiler leisten, wenn er sich noch nicht sicher ist, ob ihm das Programmieren wirklich zusagt? Genauso ist doch die Computerszene entstanden! Ein paar junge Leute setzten sich hin, probierten herum, und das, was herauskam, gaben sie untereinander als Freeware weiter. Schau' dir an, wie gro die Szene jetzt ist und wie mchtig ihr Know-How ist! Das ist doch echt ein Wahnsinn, wenn du bedenkst, wie viel Wissen und mhselige Arbeit in einem jeden Szenedemo steckt. Deshalb wrde ich auch nicht die Diskmags als "Kiki" bezeichnen (was soll das berhaupt heien?) - sie reprsentieren die besten Krfte in der Szene. Und auerdem kennst du den Hugendubelexpress nicht, wie kannst du ihn dann als "Kiki"-Diskmag bezeichnen? Das Problem bei den Variablennamen ist: Wenn du z.B. in einem Programm eine Variable namens RecTangle hast und dann nachtrglich eine Unit einbindest, in dem dieser Bezeichner auch vorkommt (aber anders verwendet wird), gibt es groe Probleme! Klar, man mu einfach den Variablennamen ndern. In manchen Fllen knnen jedoch endlose Debugging-Sitzungen vergehen, bis man draufkommt, welcher Variablenname der beltter ist... Aber dieses Problem hat nicht nur (Turbo) Pascal, sondern auch jede andere Sprache, die Units untersttzt (also auch die neuen Basic-Dialekte). 3. Module und Includes: Soll ich dir mal was sagen? Erstens: Nicht jede Unit ist kuflich erhltlich! Da gibt es zum Beispiel eine gute MOD-Player- Unit fr Turbo Pascal 6.0, die Public Domain ist. Diese Unit gibt es einfach nicht fr TP 7.0! Auerdem ist es meistens umgekehrt, weil doch viele Hobby-Coder noch immer TP 6.0 benutzen. Das liegt einfach darin, da TP6 gar nicht einmal so weit von TP7 entfernt ist und trotzdem viel weniger kostet. Du siehst: schon wieder der Preis! Bei den "Professionellen" sieht das natrlich wieder anders aus, denn diese bekommen von der Firma auto- matisch die neueste Version zur Verfgung gestellt. Warum wrdest du meine Papiere heraussuchen, wenn ich auf Units verzichte? Der einzige Vorteil ist doch, da sie nicht immer neu compiliert werden mu. Bei kleineren Routinen ist der Zeitunterschied zu Includes minimal, ganz zu schweigen von den schnellen PCs von heute. Sonst haben Units doch nur Nachteile: Der Code wird verheimlicht, wenn man nicht den Source der Unit hat (-> Geheimniskrmerei). Compilierte Units kann man nur verwenden, aber nichts von ihnen lernen! Wenn man dagegen den Source hat, lt sich die Units an die eigenen Bedrfnisse anpassen und optimieren - und man kann sich heraussuchen, was man bentigt und was nicht. Das spart Speicherplatz, weil dann nicht die ganze Unit mitcompiliert werden mu. Genauso verhlt es sich ja mit der Krnung der Run-Time-Bibliotheken. 4. Variablendefinitionen: Als C-Coder kenne ich natrlich die Strings, die mit dem ASCII-Code 0 enden. Wofr hltst du mich denn? (Wofr halte ich dich denn... Mega :-)) ) Wenn auch Pascal mit diesen Strings arbeitet, dann verstehe ich nicht, warum der Datentyp STRING hchstens 255 Zeichen lang sein darf. Oder mu man diese null-terminierten-Strings erst hndisch mit einem BYTE-Array machen und darf die String-Operationen neu coden? In C sind diese Operationen ja vordefiniert. Die Mglichkeit, mit AND ein Bit zu lschen (z.B. fr Bit 1 11111101) und mit OR zu setzen (in diesem Fall 00000010) habe ich sowieso schon gekannt, die mathematische Formel ist aber viel einfacher. Mittlerweile habe ich festgestellt, da es doch 'ne Prospe gibt, mit der man auch so einzelne Bits setzen kann: C. Dort lt sich bei einer struct-Anweisung angeben, wie gro jedes Element in Bits sein soll. Warum soll es nichts bringen, fr TRUE oder FALSE ein einzelnes Bit abzu- fragen? Das bringt sehr wohl was, denn damit lassen sich acht TRUE/FALSE- Werte in einer Byte-Variablen speichern. Stell' dir mal ein Proggy oder Spiel vor, in dem viele Optionen eingestellt werden mssen, die nur zwei verschiedene Werte annehmen knnen! Da liegt es nahe, fr jede Option ein einzelnes Auswahlbit zu verwenden. Nun, sag' mir, was ist daran der Nach- teil? Wenn ich z.B. Bit 4 der Variablen Test abfragen will, dann schreibe ich ^0 (Pseudocode an) ^0 Hilfe := Test ^0 AND Hilfe, 11101111b ^0 Vergleiche Hilfe mit Test ^0 Wenn gleich dann ist Bit 4 nicht gesetzt ^0 Wenn ungleich dann ist Bit 4 gesetzt ^0 (Pseudocode aus) Ich brauche zwar ein Zusatz-Byte als Hilfsvariable, aber wenn ich viele Boolean-Werte habe, lohnt sich das allemal! Statt 8 Byte bentige ich dann beispielsweise nur mehr 2 Byte. Standard-Soft in Basic? Die Antwort lautet: gibt es nicht! Die Profi-Coder benutzen alle C++, obwohl eine Textverarbeitung in Basic auch kein Problem wre. Mal zu Visual Basic: Ich wrde sagen... hm... da du wohl meinen Standpunkt diesbezglich wohl nicht kennst, obwohl ich ihn schon so oft gesagt (geschrieben!) habe. Auf alle Flle hat Visual Basic viel weniger mit Basic zu tun als Delphi mit Pascal, denn whrend Delphi ein Baukasten- Aufsatz fr Pascal ist, ist Visual Basic ein reiner Baukasten, bei dem die Basic-Befehle nur dazu eingesetzt werden, um das Verhalten der Baukltze zu definieren. Fazit: Visual Basic hat den Namen "Basic" nicht verdient, und ich hasse es! Soll ich dir mal was zu Deiner Aufgabe sagen? Du wirst sie in reinem Pascal nicht schaffen, weil der Pascal-Standard selbst weder Zeiger noch sonstige Mglichkeiten zur dynamischen Speicherverwaltung bietet. Das geht nur mit Borland Pascal und anderen Dialekten, die mit den Zusatzfunktionen von C bestckt wurden. In Basic sieht die Lsung so aus: Entweder verwendet man einen dynamischen Array, der ja nichts anderes ist, als ein Zeiger auf sein erstes Element. Nachteil: Der Array ist auf ein Segment beschrnkt. Nun, die andere Mglichkeit ist: Machen wir's genauso wie du es fr Pascal beschrieben hast! Genauso wie reines Pascal nicht fr die Lsung reicht, wird aber auch nicht reines Basic reichen: der P-Mode mu mit Inline-ASM ausgewhlt werden, und am besten ist es, man berlt den Rest einer externen Assembler-Prozedur. Naaa? Ist nicht reines Basic, aber es mte klappen! Auerdem kommt es doch auch wieder nur auf den Compiler an: Man kann ja genausogut einen Compiler schreiben, der auf den Basic-Grundlagen basiert und Zusatzfunktionen wie C hat. Das kommt alles nur auf den Compiler an. ^1Und wieder eine Antwort auf die Antwort auf die Antwort... (von El Schwalmo) 9> El Schwalmo: Klaro, ich war dir nie bse, ich fand nur, da du fr dein Alter den Mund etwas weit aufgerissen hast. Darber kann ich nicht bse sein, ich mchte dir aber klarmachen, da du dich vielleicht eher schlau machen solltest, bevor du dich vor aller Welt (okay, 3000 Lesern) blamierst. 9> El Schwalmo: Klaro, das mit dem Stack und dem PUSHen sehe ich ein, aber auf was fr einer Maschine codest du denn? Wenn wir ber meinen ersten Rechner, einen ZX 81 reden wrden (1 KB Hauptspeicher, 1 MHz Taktfrequenz) wrde ich dir Recht geben. Aber weit du, unter meinem Schreibtisch tickert ein Pentium mit mehr Hauptspeicher, als meine erste Festplatte hatte, und die ist schneller als der Hauptspeicher meiner ersten Kiste, meinst du, da es da irgendwelche Probleme mit Zeiten gibt, die durch PUSHen auf einen Stack entstehen? Du solltest dir mal ein Buch ber Software-Engineering kaufen und dich informieren, wie man heute Software schreibt. Das geht nur im Team, das allerwichtigste dabei ist, da, falls einer ausfllt, sofort ein anderer an der richtigen Stelle weiterarbeiten kann. Das geht nur, wenn man sich vorher ganz genau abspricht und ganz klar und bersichtlich programmiert. Und wenn dann irgendwo ein Zeitfenster existieren sollte, dann hngen sich Menschen 'rein, die ein paar Routinen in Assembler coden. Ich glaube nicht, da sich irgendjemand da Gedanken darber macht, da ein Sprung schneller ist als ein Prozeduraufruf. BTW, blicherweise verwendet man berhaupt keine globalen Variablen. Du kannst einen darauf lassen, da in jedem Team irgendein Schmuddelschwein- chen irgendwie diese Variablen verndert, ohne da der Rest der Menschheit das mitkriegt. Und dann ist Chaos angesagt. 9> El Schwalmo: Du darfst zwei Ebenen nicht vermischen. Unter graphischen Oberflchen ist es sehr schwierig, Fenster etc. vernnftig von Hand zu pro- grammieren. Aus diesem Grund verwendet man fr diesen Zweck Bibliotheken (warum glaubst du, da alle Windows-Programme irgendwie gleich aussehen?). Wer hier Zeit 'reinsteckt, ist entweder chronisch unterbeschftigt oder will das Rad neu erfinden. Mein Spezialgebiet sind Datenbanken. Je nach Einsatzgebiet brauchst du dort Routinen, die keiner fr dich schreiben kann, denn wie sollte der wissen, auf welchen Tabellen du aufsetzt? Und da macht es sehr viel Sinn, sich Prozeduren zu schreiben, die man immer wieder verwenden kann. 9> El Schwalmo: Das sehe ich ein. Mein Borland Pascal 7.0, das beste, was damals auf dem Markt war, hat mich 360 DM gekostet. Turbo Pascal 6.0 (?) kriegst du auf einer CD-ROM fr 50 DM, auf der noch etwa 50 andere Programmiersprachen drauf sind. Und fr dein Quick Basic oder was auch immer mit Compiler daher kommt, zahlst du mindestens 69 DM, zumindest habe ich ein Power Basic fr diesem Preis bei Pearl gesehen. 9> El Schwalmo: Weit du, ich bin kein Profi, ich geniee zur Zeit meinen Erziehungsurlaub (unsere Tochter ist gerade 2 geworden) und habe vorher 12 Jahre lang als Lehrer an verschiedenen Gymnasien gearbeitet und kenne daher eine ganze Menge junger Menschen, die mir ganz stolz ihre Programme gezeigt haben (schlielich unterrichtete ich ja auch Informatik). Und diese Dinger waren meist Musterbeispiele dafr, wie man es nicht machen sollte. Es gibt Hacker und Programmierer. Ein Hacker ist besessen davon, die Maschine zu beherrschen. Er kennt jedes Bit beim Namen, er setzt sich an die Maschine, programmiert. Dann findet er was, das er verbessern kann. Dazu flickt er ein paar weitere Routinen 'rein. Irgendwas klemmt wieder, dann wird wieder was geflickt und so weiter. Am Ende entsteht dann ein Programm, das auer dem Programmierer (und auch dem nach einem halben Jahr mit Sicherheit) niemand versteht. Mit viel Glck funktioniert es sogar, meist aber nicht, weil diese Menschen davon ausgehen, da jeder die richtigen Eingaben macht, die er erwartet. Meist versagen diese Programme schon, wenn man mal mit dem Unterarm auf die Tastatur drckt. Wenn jemand so ein Programm kaufen wrde, wre er verloren. Sptestens bei der ersten nderung ist Feierabend. Diese Menschen whlen sich dann zwar mit hochrotem Kopf in die Kiste, meist aber knnten sie genauso gut den Reset-Schalter drcken. Ich habe in meiner Laufbahn einige solche Menschen erlebt, die zwar irgendwo genial waren, aber nie irgendwas geregelt bekamen. Ein Programmierer erstellt sich zunchst ein Struktogramm auf dem Papier. Dann geht er an den Computer, tippt den Code ein und testet. Falls etwas nicht funktioniert, schaltet er die Kiste aus, schaut sein Struktogramm durch, bis er den Fehler gefunden hat. Dann geht er wieder an die Kiste. Und wenn er Feierabend hat, geht er nach Hause. BTW, es klappt ganz hervorragend, mit Pascal Hacker-Programme zu schreiben, mit BASIC kann ich dagegen problemlos strukturiert programmieren. 9> El Schwalmo: Nein, berhaupt nicht! Angenommen, du hast den Befehl Rectangle in der Unit kurve und in der Unit gerade. Dann schreibst du einfach kurve.rectangle oder gerade.rectangle, der Compiler wei dann, welchen Code er verwenden soll. Und bei Objekten ist das sogar noch einfacher, da gibt es berladen und Polymorphie. 9> El Schwalmo: Auch hier fehlt dir anscheinend das Hintergrundwissen. Der Compiler von Borland ist 'intelligent', er bindet nur den Code ein, der in _deinem_ Programm auch verwendet wird. Angenommen, du bindest eine Unit mit 60000 Bytes ein, von der du nur eine Prozedur verwendest, dann werden vielleicht 50 Byte in dein EXE-File eingelinkt. 9> El Schwalmo: Genau hier siehst du den Vorteil von Units. Standard-Pascal kennt natrlich nur den blichen String-Typ. Weit du, ein String ist eigentlich ein Array OF Char, und dein Zhler ist ein Byte gro. Deshalb hast du nur die 255 Zeichen, plus das Byte 0, in dem die Lnge des Strings steht. Die Menschen htten nun halt ein word oder ein longword als Datentyp fr den Zhler nehmen knnen, aber es ist bei solchen Riesen-Dingern einfacher, den von dir geschilderten Weg (null-terminierte Strings) zu verwenden. Durch Einbinden der Unit Strings hast du die Dinger auch in Pascal. So einfach ist das. Weit du, Pascal ist ein Baukasten. Du erhltst eine Minimal-Version, die du aber beliebig ausbauen kannst. Schau doch mal in C. Was glaubst du, bedeuten die ganzen Zeilen mit den eckigen Klammern? Das ist nur das System von Pascal, auf die Spitze getrieben. 9> El Schwalmo: Gut, das sehe ich auch, aber wie gesagt, Speicherplatz ist heute selten das Problem (DPMI-Treiber und lineare Adressierung). Ich dachte da eher an die Art, wie der Prozessor Bytes verarbeitet. Und da er eh ein Byte (mindestens) lesen mu, macht es wenig Sinn, noch kleinere Ein- heiten zu verwenden. Denn dann mut du wieder eine Maske in ein Register laden und dann erst den Vergleich machen. Und das ist dann mit Sicherheit langsamer, als zu testen, ob das Zero-Flag gesetzt ist. Wenn du schon mit zeitkritischen Routinen argumentierst, dann solltest du deinen Pseudo-Code einmal in Assembler bersetzen und in einer Tabelle nachschauen, wieviel Taktzyklen du bentigst. Vielleicht siehst du dann, worauf ich hinaus will. 9> El Schwalmo: Weit du, es mu doch einen Grund dafr geben. Oder sollte das nur daran liegen, da die Software-Branche den PC-Heimwerker nicht liest? Du kannst doch C. Weit du, der grte Nachteil von Basic liegt darin, da diese Sprache den Datentyp Pointer nicht kennt und daher keine dynamischen Datentypen (wie Baum, Keller, Liste und so weiter) untersttzt (korrigier mich bitte, falls mir da was entgangen ist, aber das steht zumindest im neuesten Informatik-Duden). 9> El Schwalmo: Du hast wirklich keine Ahnung von Pascal. Zeiger gibt es im primitivsten Pascal, das es berhaupt gibt, namlich in der Original-Version von Niklas Wirth. 9> El Schwalmo: Gut, das geht, aber das war nicht mein Punkt. 9> El Schwalmo: Da erwischst du einen wunden Punkt bei mir. Ich meine mich dunkel zu erinnern, da Compiler nicht gleich Compiler ist. Ich meine, da es nicht so ganz egal ist, ob man eine Interpreter- oder eine Compiler- Sprache durch einen Compiler schickt. Hinten kommt zwar in beiden Fallen Maschinensprache raus, aber die Effizienz dieses Codes ist doch etwas unterschiedlich. Ich habe mal ein Compiler-Praktikum mitgemacht, aber das meiste wieder vergessen, weil ich noch nie auf die Idee gekommen bin, mir eine Programmiersprache selber zu entwickeln. Weit du, damit wir nicht aneinander vorbeireden. Basic ist eine ganz hervorragend geeignete Sprache, um Menschen, die einfach mal so ein paar Zeilen Code in die Maschine hmmern wollen, einen ersten Einblick in das Programmieren zu bieten. Pascal ist da zu komplex, weil es den Menschen schwer deutlich zu machen ist, warum sie BEGIN und END setzen sollen, erst zu berlegen, welche Variablen man braucht, als sie einfach in den Quell- text zu schreiben und so weiter. Wenn man aber professionell programmiert, ist das das A und O. Wenn du ein Struktogramm mal anschaust, dann siehst du, wie eine Dokumentation eines professionellen Programms aussieht. Da ist jede Variable beschrieben, jede Prozedur ist mit Struktogramm abgeheftet. Diesen Aufwand habe ich (leider!) frher nicht betrieben. Alle meine alten Programme mute ich komplett weg- schmeien, weil ich sie selber nicht mehr verstanden habe. Aber seit ich etwas intensiver programmiere (ich schreibe zur Zeit wieder an meinem Pro- gramm zur Verwaltung einer Schlerbcherei), habe ich mir genau diesen Weg angewohnt. Wenn ich einen alten Quelltext nach einem Jahr wieder aus dem Ordner nehme, kann ich nach einer Stunde wieder nderungen an genau der Stelle vornehmen, an der was klemmt, ohne irgendwelche Befrchtungen haben zu mussen, da dadurch an einer anderen Stelle des Programms etwas passiert. Klaro, das konnte ich auch im Basic. Aber fr ein Datenbank- Problem sind Pascal und Basic viel zu schwach auf der Brust. Gut, in Pascal gibt es zum Beispiel Units, mit denen man beispielsweise einen B-Baum zur Verfgung hat, aber es ist doch letzendlich einfacher, gleich eine Daten- bank zu verwenden. Ich benutze TDB, das ist ein Kiki-Programm, kostet unter 200 DM, aber ich kenne unter DOS nichts, was auch nur entfernt daran heran- kommt (auch nicht dBase oder Paradox, die ich auch getestet habe). ^4>> The Real Adok: Uff, das war sicherlich einer der lngsten Artikel aller ^4 Zeiten! Nun, da sich das Ganze zu einem unsinnigen Streit entwickelt hat, ^4 will ich noch einmal zurck zum Anfang gehen: Es ging einfach darum, da El ^4 Schwalmo und viele andere Leute behauptet haben, da verschiedene Sachen ^4 in Basic nicht mglich seien, obwohl sie es doch sind! Jedoch ist Basic ^4 nicht das Non-Plus-Ultra, sonst htte ich wohl nie C und ASM gelernt. Und ^4 das ist alles, was ich sagen wollte. Mehr nicht. Deshalb finde ich es ^4 unfair von El Schwalmo, da er meine Worte im Mund verdreht. ^4 Und noch eine Reaction auf meinen PCH-Artikel... :) >> Rudolf Hold: Sehr geehrter Herr The Real Adok. Sie sind Experte und Sie treten fr Basicfreunde ein; es ist wichtig, da eine solche Sprachen- Kontroverse einmal aufgegriffen wird, um Prioritten, Wertung und die Meinungsvielfalt ber Basic-Prferenzen zu beschreiben. Als Grundkonsens hat sich bei all den Wortmeldungen gezeigt, da Basic wichtig und erhaltenswert bleibt. Schlielich hat jeder einmal mit Basic begonnen, viele verfgen bereits ber Vergleichserfahrungen mit weiteren, anderen Programmiersprachen. Ich betreibe einen PC Pentium mit Windows 95, Corel 5, AutoCAD hobbymig. In QBasic verbleibt mir noch die einzig reale Programmiermglichkeit. Was den Fortbestand von QBasic betrifft - es gibt kaum Bcher, Programme mit Relevanz zu Basic - es sieht so aus, als ob diese hervorragende Pro- grammieroption schlichtweg vergessen wird. Aus Kompetenzmangel kann ich mich nicht uern: vom technologischen Wandel bin ich bermig beein- druckt, dazu kommt noch die nostalgische Rckbindung zur ehemaligen Arbeitswelt; so ist man immer geneigt, das Gestrige gegen das Neue zu sortieren. Fr mich bleibt es ein Faszinosum, wie dieser Intel-PC als Hobbygert und im professionellen bereich gleichermaen Verbreitung findet; wie eine Verquickung sozusagen von Beruf und Hobby mglich, sinnvoll und sogar wnschenswert ist. Immerhin handelt es sich um eine denkintensive Art der Freizeitgestaltung, ein Hobby mit Meriten zur Nachahmung empfohlen: ein Lebenstip fr Oldies und fr jene, die sich noch etablieren mssen. Im Freizeitmodus betrieben bedeutet das Programmieren eine Proposition. Alternativ besteht die Mglichkeit, den PC mit gekaufter Software zum Spielen, als Tonmaschine, zur Bilderbearbeitung, als Schreibmaschine zu verwenden. Fr den Anfang gengen DOS-Kenntnisse - Basic, das leicht zu lernen ist und keinen Schaden hinterlt, falls sich am Bildschirm nichts mehr bewegt. Verstndlicherweise gilt diese Einschrnkung nicht auf Dauer; es wirkt der Drang nach komplizierteren Sprachen und komplexen Aufgaben. Ebenso zwangslufig beginnt das bliche Kapillarstreben nach aktueller PC-Ausstattung, Speichervermehrung und hherer Datengeschwindigkeit. Im schulischen Vorlauf wird bereits mit Pascal - nicht Basic - die Nutzung von Datenbanken, Arbeiten im Verbund simuliert und praxisnahes (siehe Derive... Mathematica) und berdies objektorientiertes Programmieren gebt. Die Beschftigung mit Entwicklersprachen - C, Delphi,... - ist eine Perfektion der Programmierkunst und gestattet Einsicht in die Betriebsroutinen des gertes. Nur der Grad an Besessenheit, mit der man einem Steckenpferd nachgeht, vermittelt die erforderliche Geduld, um in endlosen Notationen, Zeichensymbolen der jeweiligen Entwicklersprache nach eigenen Programmier- fehlern zu fahnden. Kommerziell wird diese Aufgabe ja problemlos mit entsprechenden Programmen erledigt. Ein Vorteil im beruflichen Fortkommen ist durch Kenntnis von diffizilen Entwicklersprachen nicht zu erwarten: Die Industrie hlt auf ihre spezifischen Vorlagen, ist auf Microsoft fixiert bzw. auf Systeme, die dazu kompatibel sind. Die groe elektronische Evolution in der Industrie wurde lngst vollzogen; man hat die Arbeitspltze reduziert, aus der Asche sind einige attraktive Berufsbeschreibungen entstanden, die Praxis voraus- setzen und deshalb nur betriebsintern besetzt werden. Gesucht werden Kenntnisse und Erfahrung: ^0 E-Mechaniker: Router, Switsch, Multiplexer, Bridge ^0 Sekrterin: MS-Word, MS-Office, Excel, PowerPoint ^0 Informatiker: SAP APAP/4, alle SAP-Sorten ^0 Techniker: Es wird das bliche Berufsrepetoir verlangt und die ^0 spezifische Berufsfertigkeit zustzlich erhoben. ^0 Fortan, die vielen CAD-Sortimente, Programme fr ^0 Werkzeugmaschinen Die Wirklichkeit hat die technologischen Zukunftsvisionen eingeholt; von den Jngeren wird eben erwartet, da sie multimediale Erfahrung erlebt und Verstndnis fr die knftige mediale Darstellung mitbringen. Programmier- standards sind vorausgesetzt. Desgleichen nimmt man vorweg, da in jedem Haushalt etwa ein PC 486 oder besser steht, grtenteils mit Internet- anschlu-Modems. Die Annahme stimmt auch, im Grunde hat doch bald jedermann sein Handy, jeder Schler seinen Notebook. In Industrie, Handel ist der PC und MS-Software ubiquitr und berprsent; EDV-Kenntnisse sind bereits ebenso selbstverstndlich wie etwa Radfahren oder Englischkenntnisse. Die neue Publikationsmethode wird selbst fr tiviale Zwecke eingesetzt - ich erhalte meine Firmenzeitung elektronisch aufgemacht; neuerdings wird sie als CD-ROM geschickt; der Text zunchst, die fehlenden Speicherbits werden mit Grafiken - einer Maschinenanlage z.B. - ergnzt; so wird eine realistische Animation von Schlmpfen mit Arbeitshelm mit Firmenlogo, mit Tonregister geboten. Dabei handelt es sich um einen konservativen Welt- konzern, der fr den verspielten Schnickschnack nichts brig hat, aber zukunftsorientiert handelt. Frher hatte ich mit Fortran-Programmen zu tun und mit Plottern, die damals noch mit modifizierten Basic-Befehlen gefttert wurden; die Verfgungs- disziplin ber die Programme war noch locker, man konnte schon noch nderungen anbringen; die Gerte waren noch nicht die Speichergiganten von heute. Wenn man selbstndig programmieren will ohne formale Einschrnkung, dann halte ich Basic mit seinem mchtigem Befehlsvorrat fr die beste Sprache. Als Vorteil sehe ich die einmalige Stringfhigkeit, mit der man eine komplette Grafikfolge in eine einzige Variable packen kann. Hervorzu- heben ist die besondere Eignung fr Mathematikoperationen. In welcher Sprache kann man Matrizen mit 38 und mehr Stellen berechnen? Der bersicht- liche Programmaufbau erleichert die Fehlersuche. Die Problemzonen von Basic sind auch bekannt: Langsamkeit und Grafik. Langsamkeit ist aber von Vorteil bei Rechenoperationen, um den vielen Interrupts gengend Unterbrechungszeit zu geben. Bei Mathematikoperationen mit x-facher Iteration und vielen Abbruchsbedingungen mit vielen IF- Entscheidungen, vielchen Sprungadressen im Gefolge sind sogar Zeilennummern unverzichtbar. Zugegeben, diese Basic-Programme sind nicht schn, auerdem werden Variablen meist redudant zur Fehlervermeidung angelegt; grtes Problem bei Aufgaben der numerischen Mathematik sind Rundungsfehler und die richtige Dimensionierung von Unendlich und Null. Ein groes Negativum von QBasic speziell ist die miese Grafikqualitt. ^4 Mit freundlichen Gren, Rudolf Hold.