Sprache Basic
 
StartSeite | Neues | TestSeite | ForumSeite | Teilnehmer | Kategorien | Index | Hilfe | Einstellungen | Ändern

BASIC (standing for Beginner's All Purpose Symbolic Instruction Code) is a system developed at Dartmouth College in 1964 under the directory of J. Kemeny and T. Kurtz. It was implemented for the G.E.225. It was meant to be a very simple language to learn and also one that would be easy to translate. Furthermore, the designers wished it to be a stepping-stone for students to learn on of the more powerful languages such as FORTRAN or ALGOL.

From "Programming languages: History and fundamentals" by Jean E. Sammet.


Gibt es überhaupt eine SpracheBasic?

Im Grunde ist BASIC eine Familie von Programmiersprachen, die sich dadurch auszeichnet, dass es keinerlei Form von Standardisierung und keinerlei Konsistenz in der Syntax gibt. In der Urform mit Zeilennummern die ideale Brutstätte für SpaghettiCode, denn jede Programmzeile konnte Zielpunkt für einen GOTO-Befehl sein, unabhängig von der vorhandenen Programm- bzw. Unterprogrammstruktur.

Aus diesem Grund hatte der bedeutender Informatiker EdsgerDijkstra nur wenig Schönes über (das UR-)BASIC zu sagen:

It is practically impossible to teach good programming style to students that have had prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration.

Inzwischen hat sich aber auch bei BASIC viel getan. Hierzu vielleicht noch ein nettes Zitat von C. A. R. Hoare aus Anlass der Feier zum 60sten Geburtstag von NiklausWirth:

Recently, I took a look at the very popular programming language called VISUAL BASIC. Well, it's quite nice, but - forget about the BASIC. It's Pascal!

Die folgende Einteilung in Generationen ist subjektiv gewählt:


Basic der ersten Generation (Zeilennummern obligatorisch):

  100 PRINT "Hello World"
  110 FOR I%=1 TO 10
  120    PRINT "ZEILE ";I%
  130 NEXT
  140 END 

Beispiele: Commodore C64 Basic, Apple II Basic, IBM-PC ROM-Basic


Basic der zweiten Generation (Zeilennummern nur falls für ein GOTO oder GOSUB erforderlich):

     GOSUB 100
     END
  
 100 PRINT "Hello World"
     FOR I%=1 TO 10
        PRINT "ZEILE ";I%
     NEXT
     RETURN


Basic der dritten Generation (konventionelle Unterprogrammaufrufe):

   Gosub Demo("Hello World")
   End

   Procedure Demo(Text$)
     Cls
     Print Text$
     For I%=1 To 10
       Print "Zeile ";I%
     Next I%
   Return

Beispiele: GFA-Basic (Atari ST), Borland Turbo-Basic


Basic der vierten Generation (teilweise modular, Ansätze von Objektorientierung):

Function TableCreateRecRetRnr(tnam$, ParamArray pa() As Variant) As Long
   Dim db As Database
   Dim rs As Recordset
   Dim rnr_new As Long
   Dim i%
   
   Set db = CurrentDb()
   Set rs = db.OpenRecordset(tnam$, DB_OPEN_DYNASET)
   
   rs.AddNew
   
   For i% = 0 To UBound(pa) Step 2
      rs(pa(i%)).Value = pa(i% + 1)
   Next
   
   rnr_new = rs("Rnr")
   
   On Error GoTo do_err
   rs.Update
   On Error GoTo 0

do_end:
   rs.Close
   TableCreateRecRetRnr = rnr_new
   Exit Function
   
do_err:
   rnr_new = 0
   Resume do_end
End Function

Aufruf z.B.
   call TableCreateRecRetRnr("Kunden","Name","Maier","Saldo",-3500.00)

Beispiel: MS ACCESS Visual Basic (interne Sprache von MS-Office-Programmen)

Beachtenswert ist dem Beispiel die Übergabe von variablen Parameterlisten und ihre kontrollierte Verarbeitung (Anzahl ermittelbar).


Basic der fünften Generation (objektorientiert, Teil von .NET)

...


Vorteile:

Nachteile: Typische Einsatzgebiete: Fazit:
Diskussion

Für neue Projekte nicht empfehlenswert; heute stehen leistungsfähigere Alternativen zur Verfügung. // finden die VB Entwickler wohl eher sehr gewagt...

Und nicht nur diese. Für eine Anwendung der Art, für die VB gedacht ist, finde auch ich als nicht gerade eingefleischter Microsoft oder Basic-Anhänger die Entwicklungsumgebung und den Ansatz gelungen. Für eine typische In-house-Anwendung, bei der vorhandene Komponenten zu einer kleinen Anwendung für einen bestimmen Zweck mit geringem Aufwand zusammengesetzt werden sollen kenn ich keine geeignetere Lösung. -- KurtWatzka


Im allgemeinen mag Edsger W. Dijkstra ja recht haben, aber: ich habe auch mit C64-Basic angefangen und es schon nach kurzer Zeit sehr unübersichtlich gefunden (keine Funktionen...). Also habe ich angefangen handschriftlich darüber Buch zu führen, wo "Unterroutinen" liegen (GOSUB...) und war heilfroh, als ich später in der Oberstufe und an der Uni Pascal benutzen konnte und war begeistert über die Möglichkeit Prozeduren und Funktionen benutzten zu können (kannte ich ja vorher gar nicht). Ich fand eher, dass einen Basic zu einem übersichtlichen Stil und viel Dokumentieren gezwungen hat (wenn man Programme einer gewissen Komplexität damit geschrieben hat). Das mag aber vom Programmierer abhängen. Ich würde heute jedenfalls auch keinem mehr raten, mit diesem Ur-Basic anzufangen - brrr. --ChristianDühl

Ich hab Ende 1984 meinen ersten Computer gekauft. Das war ein Sinclair QL. Die Benutzerschnittstelle war ein Basic-Interpreter mit einem hochstrukturfähigen Dialekt namens SuperBasic. Ich war sehr froh, dass ich nicht mit Spaghetti ringen musste. Mein größtes Projekt damit (4000 LOC) war ein projektbezogenes Buchhaltungsprogramm mit integrierter Kostenkontrolle, geschrieben für meine Frau: Filmgeschäftsführerin. Das war im Einsatz bei "Die Bertinis", "Der Große Bellheim" (Etat weit über 10 Mio DM) und diversen deutschen und internationalen Film- und Fernsehproduktionen (bis etwa 1993). Auch heute brauche ich nicht mehr als zehn Minuten, um mich im Sourcecode zu orientieren. --GuntherWüsthoff

Nach meiner Erfahrung, ich habe mit BASIC auf dem Atari 800XL (ähnelt dem C64) angefangen, ist modernes BASIC Pascal relativ ähnlich. Ich programmiere öfter in Powerbasic 3.5 oder PB/CC ( http://www.powerbasic.com), beides Weiterentwicklung von Borlands Turbo-BASIC 1.0. Zur Übung habe ich einmal eine kleine Turbo-Pascal-Source in Powerbasic übersetzt - Turbo Pascal kannte ich auch; die Unterschiede waren frappierend gering, denn das meiste ließ sich buchstäblich übernehmen. Allerdings läßt Powerbasic dem Programmierer mehr Freiheiten, die er nutzen - oder eben streng wirth'sch damit programmieren kann.

Eine kleine Routine für den Powerbasic Console Compiler (aka PB/CC) kann beispielsweise so aussehen:

SUB PutScreenBuffer(BYVAL h AS LONG)

  LOCAL r AS SMALL_RECT

  r.xLeft = 0
  r.xTop  = 0
  r.xRight = SCREENX - 1
  r.xBottom = SCREENY - 1

  ' Restore the buffer to the screen
  WriteConsoleOutput GETSTDOUT, BYVAL h, BYVAL MAKLNG(SCREENX, SCREENY), BYVAL 0, r

END SUB

Und eine kleine Funktion aus einem Programm, welches ich in Powerbasic 3.5 schreibe, sieht so aufgeräumt aus:

  .
  .
  .
  DECLARE FUNCTION isHeadelBlockBegin?       (STRING)
  .
  .
  .
  FUNCTION isHeadelBlockBegin?( cfgInput$ ) PRIVATE

    LOCAL answer?, firstSign$, blockName$

     firstSign$ = Left$( cfgInput$, 1 )

     IF  (firstSign$="{")  THEN  'Beginn eines Blockes
         blockName$ = TRIM$( EXTRACT$( cfgInput$, ANY sTab+sLeer ), ANY "{}" )
         blockName$ = UCase$( Trim$( blockName$ ) )
         SELECT CASE blockName$
          CASE  "HEADEL"
              answer? = 1
          CASE ELSE
              answer? = 0
         END SELECT
     END IF

     isHeadelBlockBegin? = answer?

  END FUNCTION  'isHeadelBlockBegin?()

-- MAIL elek (AT) jpberlin.de


Zu VB.Net

Ich habe in letzter Zeit einmal damit begonnen, mich damit auseinander zu setzen, wie ich mein aktuelles VB 6.0 Projekt in VB.Net übernehmen kann. Dazu habe ich Quellen in Web recherchiert. Unter anderem habe ich auch die 60-Tage-Trail-Version zu VS.Net von MS heruntergeladen.

Das Ergebnis dieser Recherchen:

Grundlegende Funktionen wurden entfernt oder in einer Art und Weise geändert, dass die gesamte Programmlogik der VB 6.0 Applikation Komplett umgestellt werden müsste. Eine Umstellung käme quasi einer Neuprogrammierung gleich (der Update-Wizard erzeugt aus dem VB 6.0 ein völlig unbrauchbares VB.Net-Projekt mit Tausenden von 'TODOs').

Es gibt weltweit Millionen von VB-Entwicklern, die wahrscheinlich in zig-Millionen Mannjahren unzählige Millarden Zeilen Programmcode geschrieben haben. Dieser Programmcode wird über kurz oder lang nicht weiterentwickelt werden können - wird Mühl sein - weil VB 6.0 vom Hersteller nicht mehr unterstützt wird und eine Umstellung auf VB.Net mit vertretbarem Aufwand nicht zu bewerkstelligen ist. Was mir auffällt, ist die unglaubliche Nachsicht der VB-Entwickler-Gemeinde bzw. den betroffenen Unternehmen dieser Tatsache gegenüber.

Wie die sprichwörtlichen Lemminge an der Klippe scheinen die betroffenen das hinzunehmen. Niemand scheint sich zu beschweren (im Netz konnte ich jedenfalls nichts derartiges entdecken). Statt dessen wiederholt man allenthalben das Marketinggeschrei der Herstellers.

Um Missverständnissen vorzubeugen: Selbstverständlich war es an der Zeit für eine neue Version von VB (genau genommen war Sie längst überfällig). Das wichtigste fehlende Merkmal in VB 6.0 - die Vererbung - hätte man mit Sicherheit auch anders in die Sprache integrieren können.

Ich hätte erwartet, dass es einen Investitionschutz gibt. D.h., dass ich meine vorhandenen Projekte mit vertretbarem Aufwand auf die neue Version umstellen kann, ist ein MUSS.

Wenn deine ganzen Bibliotheken nach Funktionalen Prinzipien aufgebaut sind, dann kann dir leider nicht wirklich geholfen werden. -- AdrianHenke?


Frage: Gibt es eine GNU-Fassung eines BASIC-Compilers, der direkt in Maschinensprache übersetzt? Oder gibt es einen Compiler, der BASIC in C übersetzt?

Für GNU weiß ich das nicht aber BASIC->C gibt es (wahrscheinlich sogar öfters). Schaut Dir z.B. mal http://bcx.basicguru.com/ an (frido)

Von GNU gibt es definitiv nichts, aber ein moderner BASIC Compiler, der Freie Software ist, wäre FreeBasic? http://www.freebasic-portal.de/ -- AndreasKFoerster


Für die 68.000er Amiga und Atari ST gab es GFA-Basic (siehe http://www.beepcastle.de/gfa/index.htm). Zusätzlich zur damals beliebten Interpretierung der Sourcecodes konnten auch compilierte Programme erstellt werden, die eine höhere Ausführungsgeschwindigkeit hatten. Zum Entwickeln zeitkritischer Software, wie z.B. Spiele gab es Blitzbasic.
Eine sehr schöne Möglichkeit Basic-Programme für Linux KDE zu entwickeln, bietet Gambas. Siehe http://www.TheEasyGambasDoku.de http://gambas.sourceforge.net/ http://www.linux-user.de/ausgabe/2002/11/050-gambas/ http://www.binara.com/gambas-wiki/bin/view/Gambas/GambasHowtos


Geschichte von BASIC (Schwerpunkt VB): http://www.shadoware.de/reports/other/basic.html
Siehe auch VisualBasic SpracheFortran BasicResourcen Gambas
KategorieProgrammierSprache KategorieBasic
StartSeite | Neues | TestSeite | ForumSeite | Teilnehmer | Kategorien | Index | Hilfe | Einstellungen | Ändern
Text dieser Seite ändern (zuletzt geändert: 27. März 2009 18:35 (diff))
Suchbegriff: gesucht wird
im Titel
im Text