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?
Klaus I. schrieb: > dass BASIC nur so etwas wie vom ollen C64 ist Nun, Basic ist deutlich älter als der C64. :-)
Klaus I. schrieb: > Ist "richtiges" BASIC wirklich so primitiv definiert oder entspricht das > nur der Vorstellung bei manchen Leuten? Es gibt tatsächlich formale Spezifikationen von BASIC. Ob die allerdings jemals jemand ausser den Komiteemitglieder gelesen hat? http://de.wikipedia.org/wiki/BASIC#Standards
:
Bearbeitet durch User
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.
Klaus I. schrieb: > Warum traut man BASIC dann nichts zu? Weil es Jahrzehnte nur Murks war und außerdem eine Anfängersprache (steckt ja im Namen, "Beginners")? Warum sollte man das heutzutage noch lernen und nicht gleich was moderneres? Da helfen auch keine angefrickelten Sprachmittel.
:
Bearbeitet durch User
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. ;)
Basic ist heutzutage teilweise weiterentwickelt, mit Proceduren und dergleichen. Fuer einen Hundert .. Zweihundertzeiler ist es sicher brauchbar.
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?
Aber es hat den Stallgeruch, auch wenn es zwischenzeitlich schon compiliert werden kann und freilich auch schon immer sauber programmierbar war. Es ändert halt nichts daran das es den Bug latent ausbrütet. ;)
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.
Ps. Ich habe nichts gegen Basic, nutze es selbst gern und Purebasic steht dabei ganz oben. Und gerade habe ich den zweiten TFTMaximite bestellt ;)
Winfried J. schrieb: > auch wenn es zwischenzeitlich schon > compiliert werden kann Zwischenzeitlich? Kompiliert werden konnte schon QuickBasic (nicht zu verwechseln mit QBasic) unter MSDOS vor 20 Jahren. Und ja, QuickBasic kannte auch schon Prozeduren...
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.
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. ;)
:
Bearbeitet durch User
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.
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...
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.
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.
:
Bearbeitet durch User
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
Sinus Tangentus schrieb: > Hier ein Link zum ISO Full-BASIC Standard, den Standard muss man > allerdings kaufen: Nicht unbedingt: http://www.google.de/url?sa=t&rct=j&q=&esrc=s&source=web&cd=5&ved=0CEkQFjAE&url=http%3A%2F%2Fbib.tiera.ru%2Fb%2F116896&ei=wVnHUo3xJMqdtQaW34CIAQ&usg=AFQjCNGtD1C_vD4U9hRAPkZgJqbGJqjXVA&bvm=bv.58187178,d.Yms&cad=rja
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...
Danke! Hoffentlich setzt Du Dich da aber nicht in die Nesseln (Urheberrecht). Lieber Gruss jedenfalls, N0R
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.)
Norbert M. schrieb: > Danke! Hoffentlich setzt Du Dich da aber nicht in die Nesseln > (Urheberrecht). Sofern Frank nicht darlegen kann, dass die Veröffentlichung des Standards vom Urheber gestattet ist, habe ich das lieber mal gelöscht. Zum Thema trägt es ja ohnehin nur bedingt bei (auch wenn die Frage im Subject so lautet).
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
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).
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.
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.
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. ;)
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.
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
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.
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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.