vs Turbo Pascal


Power Basic und Turbo Pascal: zwei DOS-Programmiersprachen, beide etwa zur gleichen Zeit entstanden, beide haben etwa den gleichen Funktionsumfang. Obwohl Turbo Pascal-Code etwas schwieriger zu schreiben ist, ist es populärer als Power Basic. Leute, die auf Turbo Pascal schwören, sollten unbedingt auch einmal Power Basic ausprobieren. Nun, von außen sehen sich die beiden Kontrahenten sehr ähnlich:

Power Basic

Turbo Pascal

Syntax - Prinzip
Die beiden Programmiersprachen vertreten zwei verschieden Prinzipien.

Turbo Pascal orientiert sich beim Dialekt an der Mathematik. Alles geschieht kompromisslos mit Klammern und alles muss unbedingt mathematisch korrekt sein. Viele mögen dieses Prinzip deshalb, weil es Eindeutigkeit verspricht.

Power Basic versucht, sich an der menschlichen Sprache zu orientieren. Befehle heißen zum Großteil wie Worte, und Klammern und Semikola werden nur dort gesetzt, wo es nicht anders geht. Wenn ein Engländer sagt: "If The Apple is Green then Eat the Apple" dann heißt es in Basic: "If TheApple = Green then Eat TheApple" , wobei Theapple eine Variable und Green eine Art Konstante und Eat eine Funktion ist. Viele Leute lieben dieses Prinzip, weil es Einfachheit verspricht. Ich persönlich finde dieses Prinzip schöner, jedoch gibt es auch sehr viele Befürworter der mathematischen Syntax.

Schreibarbeit
Die Unterschiede liegen hier im Detail. Fangen wir an: Ein einfaches Programm, das eine Zahl mit 3 multipliziert und auf den Bildschirm schreibt, sieht in Power Basic so aus:

input Zahl         'Zahl eingeben
Ergebnis=Zahl*3    'ausrechnen
print Ergebnis     'Ergebnis auf den Bildschirm

In Turbo Pascal muss man folgende Zeilen schreiben, um den selben Effekt zu erzielen:

var Zahl,Ergebnis:real;    {definiert die Variablen}

begin
  readln(Zahl);            {Zahl eingeben}
  Ergebnis:=Zahl*3;        {ausrechnen}
  writeln(Ergebnis);       {Ergebnis auf den Bildschirm}
  readln;                  {warte, bis Taste gedrückt wird}
end.
Man beachte den Unterschied zwischen dem sprachähnlichen Dialekt Basic und dem mathematikangelehnten Dialekt Pascal, welches mit deutlich mehr Interpunktionszeichen bestückt werden muss.

Anwenderfreundlichkeit
Allerdings ist die Umsetzung der Programmiersprache Turbo Pascal nicht ganz so optimal gelungen wie die Umsetzung von Basic, dessen Schöpfer ein größeres Augenmerk auf die Benutzerfreundlichkeit und Flexibilität der Syntax gelegt haben.

  • In Turbo Pascal werden mehrerer Befehle durch ";" getrennt, in Power Basic durch ":". Jedoch muss man in Basic dieses Zeichen nur in dem Fall setzen, wenn mehrere Befehle hintereinander stehen. Das Enterzeichen am Ende der Zeile wird selbstverständlich auch als Befehlstrennzeichen interprätiert. In Turbo Pascal ist es eigentlich sogar unlogisch: auf der einen Seite wird das Enter als Trennzeichen gewertet: readln[Enter](Zahl) ist keine gültige Anweisung. Wenn es jedoch darauf ankommt, das Enterzeichen als Trennzeichen zu werten, z.B. bei readln(Zahl)[Enter]Ergebnis:=Zahl*3 wird das Enterzeichen auf einmal nicht als Trennzeichen gewertet, Turbo Pascal meint auch, es wäre keine gültige Anweisung. Da sollte man Einheit walten lassen: Entweder, das [Enter] total ignorieren, dann müsste Fall1 problemlos laufen und Fall2 nicht. Oder das [Enter] als Trennzeichen gelten lassen (wie PB), dann liefe Fall1 nicht, wohl aber Fall2.

  • Es ist unter Turbo Pascal Pflicht, alle Variablen im Voraus zu deklarieren. Die einen mögen es, die anderen hassen es. Wie auch immer, unter Power Basic hat man die Option, den Zwang zu aktivieren, oder den Zwang zu deaktivieren. So kann jeder seinen persönlich favorisierten Stil wählen.

  • Bei Turbo Pascal ist es Pflicht, um das Hauptprogramm "begin" und "end." zu schreiben. Dies mag ja als Option recht hübsch sein, als Pflicht ist es jedoch eher nervig.

  • Turbo Pascals Programme stürzen einfach ab, wenn der Benutzer bei "readln(Zahl)" ausversehen einen Buchstaben eintippt. Das dürfte nicht sein! Man kann doch nicht davon ausgehen, dass jeder Benutzer alles richtig eintippt! Bei Power Basic wird ein Buchstabe wie "0" gewertet, und das Programm kann, falls eine 0 bei der Eingabe nicht sinnvoll ist, den Benutzer auffordern, die Eingabe zu wiederholen.

  • Es ist bei vielen Befehlen Pflicht, Klammern zu setzen. Was bei Funktionen wie SIN(x*3) sehr sinnvoll ist, da es die Übersichtlichkeit erhöht, ist bei Anweisungen wie Writeln('Hallo') jedoch wirklich nicht nötig, wie Basic mit Print "Hallo" beweist. Wie auch immer, unter Power Basic gibt es die Option, Klammern zu setzen oder nicht, je nach dem, ob der Programmierer es wünscht oder nicht.

  • nicht A=b*c, sondern A:=b*c; bitte!
    Turbo Pascal ist von sich aus nicht in der Lage, einem Vergleich (if i=3) von einer Zuweisung (i=3) zu unterscheiden. Der Programmierer muss bei Zuweisungen extra einen ":" setzen. Im Quellcode ist dies jedoch auch ohne den Doppelpunkt immer eindeutig, denn Zuweisungen können nur als separate Befehle im Code stehen, innerhalb von Funktionen und anderen Befehlen wie case oder if handelt es sich selbstverständlich um einen Vergleich. Power Basic erkennt diesen Fakt automatisch, Turbo Pascal ist auf die Hilfe des Programmierers angewiesen. Nun ja.

  • Funktionen müssen in Turbo Pascal vor dem Hauptprogramm stehen. Falls dies nicht der Fall ist, gibt der Compiler eine Fehlermeldung aus. Hier ist der Compiler etwas 'faul'. Anstatt erst das ganze Programm nach Funktionen zu durchsuchen, und dann den Quellcode zu durchforsten, fängt Turbo Pascal's Compiler einfach konzeptlos von vorne an, und, logischerweise, kennt im Hauptprogramm nur die Funktionen, die es bereits gelesen hat. Viele Programmierer wollen aber ihr Hauptprogramm VOR allen Routinen haben. Wie auch immer, unter Power Basic kann man beides: Das Hauptprogramm vor oder nach den Routinen platzieren.

  • Einen Punkt muss ich Turbo Pascal aber geben: In seiner aktuellen Version beherrscht die IDE die farbliche Hervorhebung von Schlüsselwörtern, Strings und Kommentaren. Dies erhöht die Lesbarkeit des Programm sehr. Unter der aktuellen Version von Power Basic DOS gibt es diese Funktion leider nicht.

  • Sehr unflexibel ist die Einschränkung unter Turbo Pascal, dass Variablen nur 8 Buchstaben besitzen dürfen. Das reduziert die Lesbarkeit eines Programmes leider mehr, als die Farben sie verbessern. Ein Beispiel: In einem Pascal-Programm, das Sie vor 8 Jahren geschrieben haben, steht: "TB1WC:=20; TB1SC:=456". SUPER. In Ihrem 8 Jahre alten Power-Basic programm steht (wenn Sie ordentlich programmiert haben): "TextBox1WordCount=20 : TextBox1SignCount=456" AHA! Das ist Luxus, wenn man nach 8 Jahren etwas verstehen will! Im Übrigen: Jeder Compiler übersetzt alle Variablennamen in Speicheradressen. Somit wirken sich lange Variablennamen auf keinen Fall negativ auf die Geschwindigkeit des Programms aus.

    Ich möchte auf keinen Fall nur über Turbo Pascal herziehen; wenn also jemand einen Punkt kennt, in dem Turbo Pascal effektiv anwenderfreundlicher ist als Power Basic, werde ich dies hier hinzufügen.

    Funktionsumfang
  • Der Befehl "case" ist in Turbo Pascal sehr eingeschränkt. Er kann nur mit ganzen Zahlen (case 2) nicht aber mit reellen Zahlen (case 2.4) umgehen. Power Basic's "case" kann beides.

  • Turbo Pascal hat Probleme mit der automatischen Typenanpassung. Es ist nicht ohne weiters möglich, eine ganze Zahl mit einer reellen Zahl zu vergleichen, was aber eigentlich rein logisch kein Problem darstellen sollte. Des weiteren kann eine Funktion, die eine ganzzahlige Variable erwartet, nicht mit einer reellen Zahl aufgerufen werden. Dafür kann man noch Verständnis aufbringen, da es nicht immer ganz eindeutig ist, wie der Compiler runden soll. Was ich jedoch nicht verstehe, ist, dass eine Funktion, die eine reelle Zahl erwartet, keine ganzzahligen Variablen annimmt! Das kommt mir vor wie ein Abiturient, der mir zwar Sin(7.65) ausrechnet, bei Sin(7) allerdings fragend den Kopf schüttelt, und nicht mal auf die Idee kommt, dass die 7 ja eigentlich auch zu den reellen Zahlen gehört. Für Power Basic jedenfalls ist das eine Selbstverständlichkeit.

  • die for-next-Schleife (bzw. for-begin-end-Schleife) ist unter Power Basic extrem belastungsfähiger. Sie kann von 1.2 bis 2.6 in 0.2-er Schritten zählen. Sie kann auch mal von 1.000.000 auf 1 in Zehnerschritten runterzählen, eine Art Megacountdown. Turbo Pascal stellt sich da eher wie ein Zweitklässler an. Es beherrscht nur +1 und -1, tja, und dann auch nur bis maximal 32.000.

  • Sehr positiv: Turbo Pascal wird mit einer Fülle von UNITS geliefert. So gibt es Mausbefehle, die man mit einem einzigen 'uses' integrieren kann. Es gibt eine komplette Fensterverwaltung, die ähnlich wie Windows Dinge wie Listboxen und Fenster anzeigen und verwalten kann. Unter Power Basic kann man nur über Assembler ausweichen bzw die Routinen mühsam selber schreiben.
    Leistungsfähigkeit
    Unterziehen wir beide Programmiersprachen doch einfach mal einer Geschwindigkeitsüberprüfung. Es folgen zwei identische Programme, die 10000 mal alle Zahlen von 1 bis 10000 addieren und dann das Ergebnis ausgeben:
    Turbo PascalBasic
    uses crt;
    var z,z2:integer;
    var zahl,plus:longint;
    begin
      clrscr;
      for z:=1 to 10000 do
        begin
          plus:=0;zahl:=0;
          for z2:=1 to 10000 do
          begin
            plus:=plus+1;
            zahl:=zahl+plus;
          end;
        end;
      writeln(Zahl);
      repeat until keypressed;
    end.
    cls
    for z1%=1 to 10000
      plus&=0:Zahl&=0
      for z2%=1 to 10000
        plus&=plus&+1
        Zahl&=Zahl&+plus&
      next z2%
    next z1%
    print Zahl&
    
    Das Ergebnis sich sehen lassen: 8 Sekunden Turbo Pascal, 19 Sekunden Power Basic! Das ist enorm!!

  • Turbo Pascal ist auf Geschwindigkeit optimiert; vor allem Turbo Pascal's Schleifen laufen mehr als doppelt so schnell ab als Power-Basic-Schleifen.

  • Nicht nur schneller, auch kleiner: Das selbe Beispielprogramm braucht als .EXE in Power Basic 23 Kilobyte, in Pascal nur 6 Kilobyte.

  • Turbo Pascal belegt weniger Arbeitsspeicher => dadurch kann man kann größere Programme schreiben als in Basic. Unter DOS gilt nämlich die Einschränkung: Nur in den ersten 640KB unseres Arbeitsspeichers können Programme stehen. Die Programmiersprache inklusive. Die Disziplin Leistungsfähigkeit gewinnt Turbo Pascal mit einem deutlichen Vorsprung!

    Abschlusswort
    Es gibt vielleicht einige unter euch, die finden, dass dieser Vergleich zu einseitig für Power Basic tendiert. Nun das mag daran liegen, dass ich von je her mit Power Basic programmiere und damit seine gesamten Vorteile kenne. Ich habe mich allerdings auch schon mit Turbo Pascal auseinandergesetzt und ihm eine Chance gegeben, doch ich habe einfach nicht vieles finden können, das wirklich besser ist als Power Basic. Somit bin ich letztendlich bei Power Basic geblieben. Wie auch immer, falls jemandem Fakten einfallen, die dem Vergleich auf jeden Fall noch hinzugefügt werden sollten, kann er mir eine E-Mail schreiben ( webmaster@power-basic.de).

    ((letzte Überarbeitung: 12.5.2004))