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:
- einfacher Programmiereinstieg, da fast immer Interpreter-Funktionalität vorhanden ist. (siehe dazu SkriptSprachen)
- In MS-Office-Programmen gratis Bestandteil der Produkte, guter Zugriff auf die internen Funktionen, gute "visuelle" IDE (Formulareditoren, Debugger, etc).
- Meist native Code Compiler vorhanden (im allgemeinen gute Geschwindigkeit)
Nachteile:
- Plattform gebunden. Programme können nur mit umfangreichen Änderungen portiert werden.
- keine Standardisierung, keine Konsistenz
- Die CLR ist standardisiert. Bezieht sich "keine Konsistenz" auf die Möglichkeit, mehrere Sprachen für ein Projekt zu verwenden?
- Nur mittelmäßige Funktionalität in vielen Bereichen (Dateizugriff, Mathematik, Grafik, ...)
Typische Einsatzgebiete:
- Programmiereinstieg (obwohl nur bedingt empfehlenswert)
- "quick & dirty" kommerzielle Programmierung
- MS Office Programmierung (WORD: Erweiterungen, EXCEL: einfache Applikationen, ACCESS: kleine Multiuser-Datenbankanwendungen)
- Single-Chip-Prozessorsysteme mit BASIC (einfache Steuerungsaufgaben)
- ...
Fazit:
- Heute stehen leistungsfähigere Alternativen zur Verfügung.
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.
- Wahrscheinlich wurden mit VB 6.0 zu 90% Desktop-Anwendungen programmiert, wen interessieren da die Web-Features?
- Jahrelang wurde uns eingetrichtet, COM-Komponenten zu erstellen - jetzt gibt es unzählige COM-Komponenten und man sagt uns "Vergesst COM". Statt COM über den Haufen zu werfen, hätte man es so modifizieren müssen, dass die Probleme mit der sog. 'DLL-HÖlle' gelöst werden.
- Jetzt ist die Interoperabilität zwischen den .Net-Sprachen das Mode-Feature (wegen dem vorgeblich, einige hervorragende Sprachmerkmale von VB 6.0 auf dem Mühl gelandet sind). Aber bitte: Welcher VB-Programmierer braucht die Interoperabilität. Und wenn, Interoperabilität zum Preis von Millarden Zeilen VB 6.0-Code, der nur noch Mühl ist, ist es nicht Wert.
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.
- Wieso beschwert sich niemand?
- Wie kann ein Software-Hersteller sich die Unverfrorenheit herausnehmen, so mit seinen Kunden umzugehen?
- Wieso verklagt niemand den Software-Hersteller?
- 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))