Wie ist BASIC definiert?

OP #3469486
Lesenswert?

Bei manchen Diskussionen hier habe ich schon öfter gelesen, dass bei 
LunaAVR extra darauf hingewiesen wird, es sei kein BASIC sondern ähnelt 
eher Pascal.

Ich hatte hier auch schon mal einen interessanten PN-Austausch mit einem 
Informatiker und da habe ich den Eindruck gewonnen, dass BASIC nur so 
etwas wie vom ollen C64 ist und man sich gar nicht vorstellen kann, dass 
BASIC auch z.B. Kapselung von Variablen haben kann.

Ist "richtiges" BASIC wirklich so primitiv definiert oder entspricht das 
nur der Vorstellung bei manchen Leuten?
OP #3469642
Lesenswert?

Oh, da habe ich doch wohl tatsächlich ;o) Wikipedia übersehen:
"Mittlerweile gibt es eine Vielzahl verschiedener BASIC-Dialekte, von 
denen einige der jüngeren alle Elemente höherer Programmiersprachen 
aufweisen, so etwa Objektorientierung."

Warum traut man BASIC dann nichts zu? Ich persönlich nutze am PC gerne 
Purebasic oder für meinen Einstieg in die Mikrocontroller eben LunaAVR 
(auch wenn es ja kein BASIC ist :o) und bin sehr zufrieden damit.

Mir ist schon klar, der einfachste Weg wäre mal im Thread direkt 
nachzufragen. Allerdings scheue ich mich bis jetzt davor, bei diesen 
sensiblen Themchen noch eine OT-Diskussion zusätzlich loszutreten.
(Firma: Nisch-Aufzüge) Persönliche Seite #3469743
Lesenswert?

Naja, auch hier kannst du davon ausgehen das du mit dieser Frage einen 
Popkornabend gewinnst.

aber um deine Frage zu beantworten, Basic, Interpretersprache wirkt nur 
schwachstruktuierend auf den Programmaufbau als ganzes. Somit verführt 
es den Anfänger zu sogenanntem Spaghetticode. Was neben der 
resultierenden Unübersichtlichkeit  auch zu schwerwiegenden bugs führen 
kann.

Ein Fünfzeiler ist kein Problem. Aber ein 10.000 Realzeilenprogramm 
erfordert da mehr Disziplin welche aber nicht wirklich unterstützt wird, 
oder gar erfordert.

;)
OP #3469780
Lesenswert?

Winfried J. schrieb:
> Naja, auch hier kannst du davon ausgehen das du mit dieser Frage einen
> Popkornabend gewinnst.
Ich mach mir da doch keine Illusionen und habe auch genügend Popcorn zur 
Hand. Meine Frage ist allerdings ernstgemeint.


> aber um deine Frage zu beantworten, Basic, Interpretersprache wirkt nur
> schwachstruktuierend auf den Programmaufbau als ganzes. Somit verführt
> es den Anfänger zu sogenanntem Spaghetticode. Was neben der
> resultierenden Unübersichtlichkeit  auch zu schwerwiegenden bugs führen
> kann.

Warum soll BASIC unbedingt eine Interpretersprache sein? Warum soll bei 
einem modernen BASIC-Dialekt immer Spaghetticode rauskommen? Man muss 
schon lange nicht mehr Zeilen numerierien und Goto-Befehle verwenden.

Das ist genau der Punkt, der mich interessiert. Vielleicht kenne ich 
wirklich nur die neuen BASIC-Versionen, aber warum denkst z.B. Du das 
mit BASIC heutzutage nur primitive Möglichkeiten verbunden sind?
Gast #3469838
Lesenswert?

Klaus I. schrieb:
> aber warum denkst z.B. Du das
> mit BASIC heutzutage nur primitive Möglichkeiten verbunden sind

Weil er keine Ahnung von modernen Basic-Compilern hat?

Ich hab schon 10.000 Zeilen Purebasic geschrieben. Ohne eine einzige 
Goto-Anweisung. Basic kann genauso prozedural arbeiten wie Pascal, es 
könnte auch objektorientiert arbeiten, was für meine bisherigen Projekte 
keinen Sinn ergab.

Dafür komme ich mit PB schnell zu einem sauberen, lauffähigen Programm, 
das auch noch erfreulich klein kompiliert wird, wogegen vergleichbare 
C-Programme - warum auch immer - schon mal die 10fache Größe haben.
#3469933
Lesenswert?

Timm Thaler schrieb:
> h hab schon 10.000 Zeilen Purebasic geschrieben. Ohne eine einzige
> Goto-Anweisung. Basic kann genauso prozedural arbeiten wie Pascal, es
> könnte auch objektorientiert arbeiten,

mein Beileid. Warum denn nicht gleich Pascal, C oder C++ nehmen. 
Sprachen die so entworfen wurden und dafür gedacht sind?

Basic ist und war schon immer was für Anfänger, die sich (erstmal) nicht 
tiefer mit der Materie beschäftigen woll(t)en.
(Firma: Nisch-Aufzüge) Persönliche Seite #3469938
Lesenswert?

Ich weis aber Basic ist wesentlich Älter als der 8086 und auch meinem 
ersten 386 habe ich schon vor 15 Jahren Quickbasicprogramme compiliert. 
Das ging sogar schon mit Turbobasic_XL auf meinem erstem 8_bit_ATARI.
Noch zehn Jahre früher. Nichts desto trotz ist es als Interpretesprache 
konzipiert mit allen daraus resultierenden Vor- und Nachteilen.

;)
Moderator Persönliche Seite #3469943
Lesenswert?

Klaus I. schrieb:
> Warum traut man BASIC dann nichts zu?

Das Hauptproblem dabei ist halt, dass es eben nicht das BASIC gibt.
Wenn du C gelernt hast, dann kannst du jeden C-Compiler nehmen und
kannst damit programmieren.  Klar, wenn du weitere Bibliotheken als
die Standardbibliothek benutzen willst, musst du dir das auch dort
anlesen.

BASIC hat letztlich nur einen sehr minimalistischen historischen
Sprachumfang.  Auf dem aufbauend hat dann jeder sein Süppchen gekocht.
Du lernst das also jedesmal neu.

Wenn das für dich als Einzelnen OK ist, damit zu arbeiten, ist das ja
kein Problem.  Wenn man aber heute PCs programmiert, morgen AVRs und
übermorgen ARMs, dann wäre man mit dem BASIC-Mischmasch recht schnell
am Ende der Fahnenstange angekommen.
Moderator #3470407
Lesenswert?

Timm Thaler schrieb:
> Claus M. schrieb:
>> Basic ist und war schon immer was für Anfänger, die sich (erstmal) nicht
>> tiefer mit der Materie beschäftigen woll(t)en.
>
> Ja, schon klar. Und der Mond ist aus Käse...

So unrecht hat Claus nicht:

Dass ursprünglich BASIC speziell für Anfänger entwickelt wurde und sich
der Name "Beginner's All-purpose Symbolic Instruction Code" davon
ableitet, wurde schon geschrieben.

Aktuelle BASIC-Dialekte haben kaum noch etwas mit dem Ur-BASIC von 1964
gemein. Bestes Beispiel dafür ist das aktuelle Visual Basic von MS: Kein
einziges der Programmbeispiele aus dem BASIC-Manual vom Dartmoth College
ist unter VB.Net lauffähig, auch nicht, wenn man die Zeilennummern
weglässt. Von den 15 verschiedenen Anweisungstypen des Ur-BASIC sind
gerade mal 7 (also weniger als die Hälfte) direkt in VB.Net umsetzbar.
Vonm Rest haben 3 eine geänderte Syntax, und 5 gibt es überhaupt nicht
mehr. Dafür sind hundertfach neue Anweisungstypen, Datentypen und
Funktionen hinzugekommen, und es wurde das prozedurale und das
objektorientierte Programmierparadigma eingeführt.

Bei so vielen tiefgreifenden Änderungen bekommt eine Programmiersprache
üblicherweise einen neuen Namen. Ein gut in diesen Thread passendes
Beispiel ist Luna, das zwar von der Kernsprache her große Ähnlichkeit
mit Visual Basic hat, vom Ur-BASIC und dem ISO-BASIC aber genauso weit
entfernt ist wie dieses. Daher hat es (IMHO zurecht) einen neuen Namen
bekommen.

Warum aber tragen andere neue Sprachen wie bspw. Visual Basic oder
Bascom, die von BASIC allenfalls inspiriert worden sind, trotzdem noch
BASIC im Namen? Weil damit speziell Anfänger angesprochen werden sollen,
die mit BASIC nach wie vor eine Sprache verbinden, die leicht zu
erlernen ist und wo man mit vergleichsweise wenig RTFM sofort loslegen
kann¹.

BASIC war und ist also tatsächlich eine Sprache für Anfänger und wird
es, solange es diesen Namen trägt, auch immer bleiben. Und da es nach
wie vor recht viele Leute gibt, die BASIC als erste und oft auch einzige
Programmiersprache wählen und sich damit wohl fühlen, ist das ja auch
völlig in Ordnung so. Es sollte eben nur niemand glauben, dass ihm
dadurch, dass er BASIC gelernt hat, sämtliche Türen in der industriellen
Softwareentwicklung offenstehen². Ich kenne auch keinen Programmierer
mit langjähriger Erfahrung, der auf BASIC umgestiegen ist.

——————————
¹) Genau aus diesem Grund bin ich mir fast sicher, dass auch Luna als
   "LunaBasic", "rgfBasic" oder dergleichen eine weitere Verbreitung
   erlangen würde.

²) BASIC kann aber durchaus eine Tür zu den Mainstream-Sprachen C, C++
   und Java sein, mit denen sich auch Geld verdienen lässt.
(Firma: Q3) #3470438
Lesenswert?

Neben VB gibts noch ein anderes modernes, objektorientiertes "Basic", 
RealBasic von RealSoftware. Womöglich, um den Basic-"Stallgeruch" 
loszuwerden, wurde das Prdukt kürzlich in "Xojo" umbenannt.

Das Besondere am RealBasic-Compiler ist, dass aus der IDE heraus auf 
jeder unterstützten Plattform (Mac, Win und Linux) für jede Plattform 
eigenständig lauffähige Apps (keine vorinstallierte Laufzeit-Lib 
notwendig) compiliert werden können. Welches Produkt bietet das noch?

http://www.xojo.com/

Ein komplettes Buch gibts hier: 
http://41160df63757fc043cfd-66287f38a83954e31a54d1dbe33e0650.r4.cf2.rackcdn.com/Documentation/Introduction%20to%20Programming%20with%20Xojo.pdf

Übrigens ist LunaAV in RB geschrieben.
#3470468
Lesenswert?

Dass es keinen Standard gibt, kann man so nicht sagen.
Hier ist der für ECMA BASIC-1, BASIC-2 und das GraphicsModul (Achtung, 
sind knappe 70MB): 
http://www.ecma-international.org/publications/files/ECMA-ST-WITHDRAWN/ECMA-116,%201st%20edition,%20June%201986.pdf

Hier ein Link zum ISO Full-BASIC Standard, den Standard muss man 
allerdings kaufen: 
http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=18321
Gast #3470487
Lesenswert?

Jörg Wunsch schrieb:
> Wenn du C gelernt hast, dann kannst du jeden C-Compiler nehmen und
> kannst damit programmieren.

Und was wäre Windows ohne die Sicherheitslöcher, die fähige 
C-Programmierer durch großzügige Pufferüberläufe und lustiges 
Variablenmischen in ihren Programmen hinterlassen. Festgestellt hat das 
mein Info-Prof vor 16 Jahren schon, geändert hat sich daran bis heute 
nichts.

Tja, gelernt ist gelernt...
Moderator Persönliche Seite #3470571
Lesenswert?

Timm Thaler schrieb:
> Und was wäre Windows ohne die Sicherheitslöcher, die fähige
> C-Programmierer durch großzügige Pufferüberläufe und lustiges
> Variablenmischen in ihren Programmen hinterlassen.

Meinst du, Windows wäre sicherer, wenn man es in BASIC programmiert
hätte? ;-)  Oder in Assembler, wie alle Betriebssysteme vor UNIX?

Sinus Tangentus schrieb:
> Dass es keinen Standard gibt, kann man so nicht sagen.

Dass es einen gibt, wurde bereits im Link auf den Wikipedia-Artikel
dargelegt.  Dass sich praktisch keiner dran hält, steht zwar nicht
im IEC-Standard, aber ebenfalls im Wikipedia-Artikel. ;-)  (Und das
ist eben der Unterschied wieder zu C: dort hält nur Microsoft sich
nicht an den [aktuellen] Standard, alle anderen schon.)
Gast #3470584
Lesenswert?

Jörg Wunsch schrieb:
> Sofern Frank nicht darlegen kann, dass die Veröffentlichung des
> Standards vom Urheber gestattet ist, habe ich das lieber mal gelöscht.

Da aber anscheinend die Verlinkung gestattet ist (sonst hättest Du den 
Verweis ja auch gelöscht), erlaube ich mir, die von der unsäglichen 
Google-Verkrüppelung bereinigte URL in Franks Sinne nachzureichen: 
http://bib.tiera.ru/b/116896

LG, N0R
#3470587
Lesenswert?

ISO ist Spitze: von den 20 Seiten sind 2 Vorwort und 4 "intentionally 
left blank". Und im Test steht, dass es vom Standard "ANSI X3.113-l987" 
und "ECMA-116" abgeleitet ist.
ECMA haben wir ja schon, ANSI noch nicht.
Ein BASIC, welchen sich weitgehend an den Standard hält, ist z.B. 
"Decimal Basic": http://hp.vector.co.jp/authors/VA008683/english/. Dort 
gibts auch jede Menge Links (meine sind auch daher).
Gast #3470614
Lesenswert?

Jörg Wunsch schrieb:
> Meinst du, Windows wäre sicherer, wenn man es in BASIC programmiert
> hätte?

Da ich mit AmigaBasic begonnen habe, hab ich lange nicht verstanden, wie 
man Pufferüberläufe mit Strings oder Arrays hinbekommt, Basic fängt 
sowas recht zuverlässig ab. Pufferüberläufe in c sind nunmal seit 
Jahrzehnten ein beliebter Angriffspunkt, um fremden Code einzuschleusen.

Oder kurz gesagt: Ja.
#3470739
Lesenswert?

Ach ja. Das leidige Thema: "Was ist die bessere Programmiersprache?"
Und schon geben alle ihre Meinung ab, warum die Programmiersprache mit 
der sie arbeiten total super ist. Jeder der programmieren gelernt hat, 
ist prinzipiell erst einmal stolz auf das was er kann. Niemand will sich 
von jemand anderem sagen lassen: "Du hast da umsonst Zeit investiert 
Programmiersprache x zu lernen. Besser wäre y gewesen."
Dabei wird immer wieder von einem falschen Denkansatz ausgegangen. 
Programmiersprachen, egal ob Basic, C, Java oder sonst was lassen sich 
nicht pauschal vergleichen.
Das ist im Prinzip wie in der heimischen Küche. Zum kochen langt ein 
einziges Messer. Mit manchen Sachen wird man sich etwas schwer tun, 
andere Dinge gehen vielleicht besser von der Hand. Wer schlau ist, hat 
in seiner Schublade vielleicht nicht nur ein Messer, sondern mehrere und 
entscheidet dann, je nach Bedarf, welches er für was einsetzt.
Und ja, BASIC hat sich weiterentwickelt, und bietet tatsächlich Vorteile 
gegen andere Sprachen wie z.B. C. Deswegen ist es weder besser noch 
schlechter. Und es gibt auch tatsächlich Betriebssysteme die in BASIC 
programmiert werden. Das man sich manch einen Komfortgewinn durch 
Performanceverlust einkauft muss einem halt klar sein.
Wer einen BASIC-Dialekt beherrscht, und damit alles hinkriegt was er 
möchte, der soll dabei bleiben. Wer dann über den Tellerrand rausschauen 
möchte und sich mit anderen Sprachen beschäftigt kann eine Menge lernen, 
und das sind dann meist die Leute die beruflich auch bessere Chancen 
haben.
#3470848
Lesenswert?

Timm Thaler schrieb:
> Jörg Wunsch schrieb:
>> Meinst du, Windows wäre sicherer, wenn man es in BASIC programmiert
>> hätte?
>
> Da ich mit AmigaBasic begonnen habe, hab ich lange nicht verstanden, wie
> man Pufferüberläufe mit Strings oder Arrays hinbekommt, Basic fängt
> sowas recht zuverlässig ab. Pufferüberläufe in c sind nunmal seit
> Jahrzehnten ein beliebter Angriffspunkt, um fremden Code einzuschleusen.
>
> Oder kurz gesagt: Ja.

Sicherheitslücken auf die Programmiersprache abzuwälzen ist einfach, 
aber noch lange keine Wahrheit. Ich würde da eher auf einen Nebeneffekt 
von "time to market" tippen. Also wenn du eine Sprache kennst, die mich 
bei voller Fehlerfreiheit auch noch schneller macht beim Entwickeln, 
lass uns doch alle daran teilhaben und nenne sie hier. ;)
Moderator Persönliche Seite #3470921
Lesenswert?

Norbert M. schrieb:
> Da aber anscheinend die Verlinkung gestattet ist

Ja, dann ist es das Problem anderer Leute, sich ggf. um die Einhaltung
der Weitergabebedingungen zu kümmern.

Timm Thaler schrieb:
>> Meinst du, Windows wäre sicherer, wenn man es in BASIC programmiert
>> hätte?
>
> Da ich mit AmigaBasic begonnen habe, hab ich lange nicht verstanden, wie
> man Pufferüberläufe mit Strings oder Arrays hinbekommt, Basic fängt
> sowas recht zuverlässig ab.

Klar.  Trotzdem musst du mir mal jemanden zeigen, der es schafft, mit
einer Sprache wie BASIC ein ganzes Betriebssystem aufzusetzen.  Ist
mir nichtmal mit Pascal bekannt.  Pascal-Nachfolger Modula hat's wohl
zu Oberon geschafft, wenn ich mich recht entsinne.

Wenn du wiederum mit Dingen wie PEEK und POKE anfängst, dann greifen
auch die Sicherheitsnetze deines BASIC nicht mehr.
#3470981
Lesenswert?

Ich kenne keine höhere Programmiersprache
im PC - Bereich, mit der man ohne Assemblerhilfe
im "Stub" ein Betriebssystem schreiben könnte.

Aber ...


Du solltest dir wirklich mal Purebasic anschauen:
"Hallo Welt" ist um die 3 Kbyte in der EXE lang,
da könnte man schon was machen.

Buratino
Moderator #3471043
Lesenswert?

Jörg Wunsch schrieb:
> Klar.  Trotzdem musst du mir mal jemanden zeigen, der es schafft, mit
> einer Sprache wie BASIC ein ganzes Betriebssystem aufzusetzen.  Ist
> mir nichtmal mit Pascal bekannt.  Pascal-Nachfolger Modula hat's wohl
> zu Oberon geschafft, wenn ich mich recht entsinne.

Große Teile des OS von Apples Lisa sind wohl in Pascal geschrieben
worden. Inwieweit dies auch auf den Kernel zutrifft, ist allerdings
nicht ganz klar. Und für den Nachfolger (Macintosh) ist das meiste davon
aber auf Grund von Speicherplatzbeschränkungen wieder klassisch in
Assembler nachprogrammiert worden:

  http://en.wikipedia.org/wiki/Pascal_%28programming_language%29#History
  http://www.folklore.org/StoryView.py?project=Macintosh&story=Hungarian.txt&topic=Software%20Design&sortOrder=Sort%20by%20Date&detail=medium

Aus der Free-Pascal-Ecke gibt es auch noch ein paar Dinge:

  http://wiki.freepascal.org/Operating_Systems_written_in_FPC

Die Idee, ein OS zu großen Teilen¹ in einer "sicheren" (zumindest
Buffer-Overflow-vermeidenden und halbwegs typsicheren) Sprache zu
schreiben, ist ja nicht neu, und beim Googeln trifft man tatsächlich auf
einige entsprechende Projekte.

Neben Pascal gibt es auch Implementationen in Lisp, Java, Modula-3,
Sing#, OCaml, SML, Haskell usw. Natürlich sind das keine Mainstream-OSs
wie Windows, Linux, Unix oder MacOS, und viele davon sind auch schon
wieder gestorben. Sie liefern aber zumindest einen Proof-of-Concept
dafür, dass OS-Programmierung nicht unbedingt auf C und Assembler
beschränkt sein muss².

Zu einem in BASIC geschriebenen OS habe ich allerdings überhaupt nichts
gefunden, nicht einmal eine Projektankündigung oder Absichtserklärung.
So arg viel schwerer als in Haskell sollte das ja nicht sein, da BASIC
im Vergleich dazu sehr low-level, ja fast schon Assembler-ähnlich ist.

Liegt es daran, dass ich nicht lange genug gesucht habe?

Oder sind diejenigen, die so etwas umzusetzen in der Lage wären, einfach
keine Fans von BASIC?

Ich vermute letzteres :)

———————————
¹) Für ein paar kleinere Teile wird man wohl um Assembler nicht herum
   kommen. Falls diese Teile aber von überschaubarer Größe sind, stellen
   sie kein großes Sicherheitsrisiko dar.

²) Ob eine GC-basierte Sprache allerdings die richtige Wahl für einen
   OS-Kernel ist, sei einmal dahingestellt.
Gast #3471648
Lesenswert?

BASIC war Anfang 1993 auf meinem ersten Rechner 486DX2 als 
Interpreterversion QBASIC mit MSDOS 5.0 drauf. Auf diesem Rechner war es 
als Interpreter auch ganz schön flott, und stand einer später 
installierten Compilerversion Quick Basic kaum spürbar nach. Jeder 
Mensch mit einem PC und MSDOS hatte also Basic zur Verfügung, die 
meisten wußten es sicher noch gar nicht mal. Zwei umfangreiche 
Beispielprogramme waren auch mit dabei, in Quellcode natürlich. Dort 
konnte man sich schon allerhand abschauen.

Im Fach Informationstechnik an der Sekundarstufe an einer VHS wurde 
Basic gelehrt, und so konnte man es gleich zu Hause üben. An einen 
C-Compiler kam man auch nicht so leicht dran, zumindest als Schüler 
bezahlbar.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren