2008-10-28 12 views
6

Ich begann die Programmierung in Basic auf ZX81, dann BASICA, GW-BASIC und QBasic. Ich ging weiter zu C (Ah, Turbo C 3.1, ich kannte sie kaum ...)Mit Lua und Python Embeddable, gibt es einen Platz für Basic?

Als ich mit Mikrocontrollern angefangen habe, habe ich mich mit der BASIC Stamp von Parallax zurückentwickelt. Wie auch immer, BASIC ist/war super, weil es so einfach zu verstehen und so schwer war, einen Fehler zu machen. Ich ging zur Montage und C schließlich, weil ich die zusätzliche Macht (Geschwindigkeit, Kapazität, Ressourcen, etc.) brauchte, aber ich weiß, dass, wenn die Bar viel höher wäre, viele Leute niemals in die Programmierung von Mikrocontrollern kommen würden.

Ich habe immer noch Lust, meinen eigenen On-Chip-BASIC-Interpreter zu entwickeln, aber ich frage mich, ob es jetzt für BASIC notwendig ist, dass Lua und Python leicht einzubetten und ebenso anpassungsfähig wie BASIC sind.

  • Was, wenn überhaupt, sind die Vorteile, die BASIC gegenüber anderen Sprachen hat?
  • Warum ist es immer noch da?
  • Wenn ich beschließe, eine universelle Mikrocontroller-Platine mit einem Interpreter zu machen, gibt es irgendeinen Grund, eine Version von BASIC zu machen?

Viele andere Sprachen sind tot, aber BASIC bleibt einfach hängen.

Antwort

6

Als Architektur, der Hauptanspruch Der Ruhm von BASIC ist, dass Sie BASIC-Interpreter sehr klein machen können - nur ein paar KB. In den Tagen einer DG Nova war dies ein Gewinn, da Sie Systeme wie Business BASIC verwenden können, um eine Mehrbenutzeranwendung auf einer Maschine mit 64 KB RAM (oder sogar weniger) zu erstellen.

BASIC (insbesondere VB) ist ein Altsystem und verfügt über eine große bestehende Codebasis. VB ist eigentlich eine Sprache (manche würden sagen, ein dünner Wrapper über COM), der eine BASIC-ähnliche Syntax hat. Heutzutage sehe ich keinen Grund mehr, die Sprache von der Vertrautheit der Leute mit der Sprache abzugrenzen und die bestehende Codebasis beizubehalten. Ich würde sicherlich nicht Neuentwicklung befürworten darin (beachten Sie, dass VB.Net nicht wirklich einfach, aber hat nur eine VB-ähnliche Syntax. Der Typ-System ist nicht in der Weise gebrochen, dass VB war.)

Was ist fehlt aus der Computerwelt ist eine relevante Sprache, die leicht zu erlernen und basteln ist und hat Anteil an Mainstream-Anwendungsentwicklung. Ich bin in den Tagen der 8-Bit-Maschinen aufgewachsen und die Eintrittsbarriere für die Programmierung dieser Systeme war sehr gering. Die Architektur der Maschinen war sehr einfach, und Sie konnten lernen, mehr oder weniger relevante Anwendungen auf diesen Maschinen sehr einfach zu programmieren und zu schreiben.

Moderne Architekturen sind viel komplexer und haben einen größeren Buckel zum Lernen. Sie können Leute sehen, die darüber predigen, wie Kinder nicht so einfach programmieren können, wie sie es in den Tagen von BASIC- und 8-Bit-Computern konnten, und ich denke, dieses Argument hat einige Vorteile. Es gibt so etwas wie ein Loch, das die Programmierung etwas schwieriger macht. Spielzeug-Sprachen sind hier nicht besonders nützlich - um attraktiv zu sein, muss es möglich sein, etwas anzustreben, das relevant für die Sprache ist, die Sie lernen.

Dies führt zu dem Problem einer Sprache, die für Kinder leicht zu lernen ist, aber ihnen erlaubt, relevante Programme (oder sogar Spiele) zu schreiben, die sie tatsächlich wollen. Es muss auch weitgehend als relevant wahrgenommen werden.

Das nächste, woran ich denken kann, ist Python. Es ist nicht das einzige Beispiel für eine Sprache dieses Typs, aber es ist diejenige mit dem meisten Mind-Sharing - und (IMO) ist eine Wahrnehmung von Relevanz notwendig, um in dieser Nische zu spielen. Es ist auch eine der einfachsten Sprachen zu lernen, die ich erlebt habe (von den 30 oder so, die ich im Laufe der Jahre verwendet habe).

0

Ich programmierte in BASIC in den QBasic Tagen. QBASIC hatte Subroutinen, Funktionen, Strukturen (früher wurden sie Typen genannt), und ich denke, das war's. Jetzt scheint das im Vergleich zu all den Features, die Python hat - OO, Lambdas, Metaklassen, Generatoren, Listen-Comprehensions - begrenzt zu sein, um nur einige von meinem Kopf zu nennen. Aber diese Einfachheit, denke ich, ist eine Stärke von BASIC. Wenn Sie sich eine einfache einbettbare Sprache anschauen, wette ich, dass QBasic schneller und einfacher zu verstehen sein wird. Und eine prozedurale Sprache ist wahrscheinlich mehr als ausreichend für die meisten Einbettungs-/Scripting-Anwendungen.

Ich würde sagen, der wichtigste Grund, warum BASIC immer noch da ist, ist Visual Basic. Lange Zeit in den 90er Jahren war VB die einzige Möglichkeit, GUIs, COM und DB-Code für Windows zu schreiben, ohne in eines der C++ Turing-Tarpits zu fallen. [Vielleicht war Delphi auch eine gute Option, aber leider wurde es nie so populär wie VB]. Ich denke, es ist wegen all des VB- und VBA-Codes, der immer noch benutzt und gepflegt wird, dass BASIC immer noch nicht tot ist.

Das sagte, ich würde sagen, es gibt ziemlich gute Gründe, BASIC-Interpreter (vielleicht sogar Compiler mit LLVM oder etwas ähnliches) für BASIC heute zu schreiben. Sie erhalten eine saubere, einfach zu bedienende und schnelle Sprache, wenn Sie etwas implementieren, das QBasic ähnelt. Sie müssen keine Probleme beim Sprachdesign lösen, und das Beste daran ist, dass die Leute Ihre Sprache bereits kennen.

1

Gute Frage ...

Grundsätzlich (sic!), Habe ich keine Antwort. Ich würde nur sagen, dass Lua sehr leicht zu lernen ist, wahrscheinlich so einfach wie Basic (das war auch eine meiner ersten Sprachen, ich benutzte Dialekte auf vielen 8-Bit-Computern ...), ist aber mächtiger (erlaubt OO oder funktionale Stile und sogar mischen sie) und irgendwie strenger (no goto ...).

Ich weiß nicht gut Python, aber nach dem, was ich gelesen habe, ist es so einfach, mächtig und streng wie Lua.

Außerdem sind beide de facto "standardisiert", dh. Es gibt keine Dialekte (neben den verschiedenen Versionen), im Gegensatz zu Basic, das viele Varianten hat.

Auch beide haben sorgfältig gestaltete VM, effizient, (meist) Bugless. Wenn Sie einen eigenen Interpreter erstellen, sollten Sie entweder eine vorhandene VM verwenden und daraus einen Bytecode für die Basisquelle generieren oder eigene erstellen. Sicher Spaß Zeug, aber zeitaufwendig und anfällig für Fehler ...

Also, ich würde nur lassen einfach einen schönen Ruhestand ... :-P

PS .: Warum es hängt an? Vielleicht ist Microsoft das nicht fremd ... (VB, VBA, VBScript ...)
Es gibt auch viele Dialekte (RealBasic, DarkBasic, etc.), mit einigen Publikum.

1

Mit dem Risiko, wie zwei Oldtimer auf Schaukelstühlen zu klingen, lassen Sie mich mürrisch sagen, dass "Kinder heute BASIC nicht zu schätzen wissen" und dann paradox sagen: "Sie wissen nicht, wie gut sie es haben. "

BASICs größte Stärke war immer seine Verständlichkeit. Es war etwas, das Leute bekommen konnten. Das wurde lange Zeit von Akademikern und Sprachentwicklern ignoriert.

Wenn Sie davon sprechen, BASIC zu implementieren, nehme ich an, dass Sie nicht von BASIC mit Zeilennummer sprechen, sondern von einer strukturierten Form. Das Problem damit ist, dass, sobald Sie anfangen, in strukturierte Programmierung - Funktionen, warum kann nicht ich nur GOTO dieser Stelle ?, usw. - es wird wirklich unklar, welche Vorteile, wenn überhaupt, BASIC würde über, sagen wir, Python.

Ein Grund, warum BASIC "so leicht zu bekommen" war, war, dass Bibliotheken damals nicht annähernd so wichtig waren wie heute. Bibliotheken implizieren eine strukturierte, wenn nicht objektorientierte Programmierung, so dass Sie sich wieder in einer Situation befinden, in der eine modernere dynamische Skriptsprache zur Realität dessen passt, was Menschen heute besser machen.

Wenn die eigentliche Frage "Nun, ich möchte einen Interpreter implementieren und so kommt es auf Return on Investment zurück", dann wird es ein Problem einer Grammatik, die eigentlich einfach zu implementieren ist. Ich würde vorschlagen, dass BASIC nicht wirklich viele Vorteile in dieser Hinsicht hat (es sei denn, Sie wirklich tun Rückkehr zu Zeilennummern und eine sehr begrenzte Grammatik).

Kurz gesagt, ich nicht denke, Sie sollten Ihre Bemühungen in einem BASIC-Interpreter investieren.

+0

Ich würde vorschlagen, dass Parsing ist nicht wirklich ein großes Problem beim Schreiben eines Compilers/interpretieren in diesen Tagen. Die schwierigen Teile sind alle die komplexe Semantik. Python würde Schließungen, Generatoren, Affepatching brauchen - alles sehr cool, aber ein königlicher Schmerz, um auf einen uController zu kommen. – Pramod

+0

Fair genug: Wenn die Frage wirklich ist "Ist Python einfach zu implementieren?" dann lautet die Antwort eindeutig "Nein, nicht so sehr." Ich nahm die Frage an: "Ist eine BASIC-ähnliche Sprache einer Python-ähnlichen Sprache für Anfänger vorzuziehen?" –

10

[Das klingt vielleicht negativer, als es wirklich ist. Ich sage nicht, Basic ist die Wurzel allen Übels, others have said that. Ich sage, es ist ein Vermächtnis, das wir uns leisten können, zurückzulassen.]

"weil es so einfach zu verstehen und so schwer war, einen Fehler zu machen" Das ist sicherlich umstritten. Ich habe einige schlechte Erfahrungen mit völlig undurchsichtigem Grundwissen gemacht. Professionelles Zeug - kommerzielle Produkte - absolut schrecklicher Code. Musste aufgeben und die Arbeit ablehnen.

"Was, wenn überhaupt, sind die Vorteile, die Basic gegenüber anderen Sprachen hat?" Keine, wirklich.

"Warum ist es immer noch da?" Zwei Gründe: (1) Microsoft, (2) alle IT-Abteilungen, die mit VB angefangen haben und jetzt Millionen von Zeilen mit VB-Legacy-Code haben.

"Viele andere Sprachen gelten als tot ..." Yep. Basic ist da neben COBOL, PL/I und RPG als Vermächtnisse, die manchmal mehr Kosten als Wert haben. Aber wegen der" wenn es nicht kaputt ist, reparieren Sie es nicht "Politik der großen IT, da sie sitzen, saugen Ressourcen auf, die sie leicht durch etwas kleineres, einfacheres und billigeres ersetzen könnten.Außer es hat nicht "gescheitert" - es ist nur unverhältnismäßig teuer.

30-jährige COBOL ist eine schreckliche Situation, um nachzuarbeiten Ab 2016 schauen wir uns den 30 Jahre alten MS Basic an, den wir einfach nicht verstehen, ohne ihn nicht leben wollen und nicht entscheiden können, wie er ersetzt wird. "

" aber einfach hält einfach an " Es scheint, dass einige Leute Basic lieben. Andere sehen es noch anot ihre schlecht gestaltete Sprache; Die Vorteile liegen darin, dass sie zu einem frühen Zeitpunkt auf den Markt kommen und von großen Anbietern unterstützt werden (zunächst von IBM). Schlechtes Design, zu früh auf den Markt gebracht, hinterlässt uns nur ein Vermächtnis, mit dem wir Jahrzehnte lang zu kämpfen haben werden.

Ich habe immer noch meine 1965-Ausgabe Dartmouth Basic Handbuch. Ich sehne mich nicht nach den guten alten Tagen.

+0

Bravo - nette Antwort. Angesichts der Geschwindigkeit der IT ist solch ein hartnäckiger Konservatismus innerhalb des Feldes störend ... – new123456

1

Nun, scheinen diese Menschen nur zu denken, dass nicht Grund noch einen Platz im mobilen Bereich hat, sondern auch, dass sie Geld aus machen:

http://www.nsbasic.com/symbian/

2

BASIC weiterhin besteht, vor allem in der STAMP Implementierung, weil sie niedriger ist Niveau als die meisten anderen sehr einfach zu erlernenden Programmiersprachen. Bei den meisten eingebetteten BASIC-Implementierungen werden die BASIC-Anweisungen mit sehr geringem Aufwand direkt auf einzelne oder Gruppen von Maschinenanweisungen abgebildet. Die gleichen Programme, die in "höheren" Sprachen wie Lua oder Python geschrieben sind, würden auf diesen Mikrocontrollern viel langsamer laufen.

PS: BASIC-Varianten wie PBASIC haben, trotz der Namensähnlichkeit, kaum etwas mit Visual Basic zu tun. Sie haben sich sehr unterschiedlich entwickelt.

1

Ich begann auch auf einem ZX81. Aber wie Tony Hoare sagte, ist die Programmierung in BASIC wie der Versuch, lange Division mit römischen Ziffern zu tun.

Viele andere Sprachen sind tot betrachtet, aber einfach hält nur hängen.

Leider ja. Ich beschuldige Bill Gates dafür ... BASIC war auf einer Bahre mit einem Priester, der die letzten Riten dafür gab, und dann brachte MS es wie Pocken zurück.