Hallo ersma,
ich hab da mal eine Frage:
so eine Zeile:
a = X+Y*3
oder
a= (x+Y)*4
Geht das in Bascom nicht so wie in anderen BASIC-Dialekten?
Hallo ersma,
ich hab da mal eine Frage:
so eine Zeile:
a = X+Y*3
oder
a= (x+Y)*4
Geht das in Bascom nicht so wie in anderen BASIC-Dialekten?
Hi!
Bascom kann nur eine Rechenoperation pro Zeile. Das ist eine fiese Stolperfalle, die irgendwie nicht offensichtlich ist...
Viele Grüße, William
-> http://william.thielicke.org/
a=y*3
a=a+x
leider nur so rechenbar in bascom
Vor den Erfolg haben die Götter den Schweiß gesetzt
Dabei sollte man vielleicht im Auge behalten, dass Bascom speziell auf die Programmierung von Microcontrollern ausgelegt ist. Da hat das meiner Meinung nach auch Vorteile.Geht das in Bascom nicht so wie in anderen BASIC-Dialekten?
Wenn man statt "a= (x+Y)*4 "
a = x +y
a = a * 4
schreibt, hat man einen etwas besseren Überblick, was man seinem kleinen Controller da überhaupt alles zumutet.
Das ist bei obigem Beispiel zwar trivial, aber wenn es möglich ist mehrere Ausdrücke zu verketten, verketten viele Programmierer gleich massenweise Rechenoperationen in einer Zeile.
Bei den Einzelschritten sieht man auch wo die einfachen Operationen, z.B. Addition stehen und wo man aufwendigere Operationen, z.B. Divisionen eventuell ganz sparen oder durch Bitverschiebung oder ähnliches optimieren kann.
Besonders in kurzen Interrupt Routinen ist es ja schon interessant einen Eindruck zu behalten, wieviele Rechenschritte der Controller da machen muss.
Ein weiteres Problem dürfte das Casting (Datentypumwandlung) sein.
Da wäre es bei langen verketteteten Ausdrücken sicherlich auch schwieriger zu sehen, wo Daten durch Typzuweisung verloren gehen und die ganze Sache wäre wesentlich fehleranfälliger.
Bei Basic Dialekten für den PC interessieren diese Punkte meist nicht.
Da interessiert es meist niemanden, ob der Rechner ain paar Takte mehr oder weniger rödelt und ein paar MB mehr oder weniger Speicher belegt.
Bei einigen Basic Dialekten muss man Datentypen nichtmals deklarieren und bei der Umwandlung wird automatisch immer der grösste Datentyp in den alles "reinpasst" verwendet.
Das wäre für die Programmierung von Microcontrollern bei der man immer einen Blick auf die Resourcen haben sollte alles eher unschön.
Naja, trotz der eventuellen Vorteile ist es letztendlich doch eine nervige Einschränkung, die zumindest bei mir einen Anteil daran hatte, mich zu C zu bringen.Zitat von recycle
Klar, was ich da geschrieben habe ist ja auch nur meine persönliche Meinung.Naja, trotz der eventuellen Vorteile ist es letztendlich doch eine nervige Einschränkung, die zumindest bei mir einen Anteil daran hatte, mich zu C zu bringen.
Welche Programmiersprache man lieber mag ist sicherlich immer geschmacksache und welche am besten geeignet ist hängt auch vom Anwendungszweck ab.
Ich mag Bascom Basic, weil man da sehr wenig Lern- und Einarbeitungszeit braucht.
Für einfache Sachen, reichen da ja oft schon einfache Englischkenntnisse und die Liste der Befehle und Beispiele in der Online-Hilfe.
Wenn man wie ich mit so wenig Kenntnissen and die Programmierung ran geht, finde ich es halt hilfreich, wenn der Compiler einen vor Fehlern und Resourcenverschwendung schützt.
In C muss man sich da meiner Meinung nach schon wesentlich mehr einarbeiten, und wenn ein Programmierer weiss was er tut, ist es sicherlich ok, wenn er mehrere Schritte zusammenfassen und verknüpfen kann.
Vielleicht steckt da bei mir auch ein bischen Schadenfreude mit drin
Ich musste früher öfter mal in Quellcodes von PC Programmierern reinsehen und es hat mich oft genervt, wenn die zig Funktionen in einer Zeile zusammengefasst und verschachtelt haben, und kaum noch nachvollziehbar war, was da alles abgeht.
es ist auf alle fälle nervig, aber "so what"
hab gerade n projekt, bei dem mit funktionen 5ten grades
als single gerechnet wird, der code dazu ist recht
"abenteuerlich" und nicht gerade einfach zu lesen ... ist halt so
Vor den Erfolg haben die Götter den Schweiß gesetzt
Die Einschränkung auf nur eine Operation pro Zeile macht den Compiler einfach, macht aber den Quellcode unübersichtlicher und auch den erzeugten Code länger und langsamer. Ein einigermaßener Compiler ist in aller Regel besser dabei solche mathematischen Ausdrücke aufzuteilen und kann auch noch etwas optimieren indem nicht alle Zwischenergebnisse ins RAM kommen. Wenn man unbedingt will kann man sich ja auf ein operation pro Zeile beschränken, wenn man wirklich die volle Kontrolle haben will.
Einen Vorteil für den Benutzer kann ich da beim besten Willen nicht sehen. Für mich war das auch ein Hauptgrund mich nicht so viel mit Bascom zu beschäftigen.
... und vielleicht zum thema passend:
sollten double verwendet werden , die nachher mit integer (oder long) verrechnet werden sollen, scheint immer der schritt über eine temporäre single nötig zu sein.... sonst kommt nur müll raus
gruss klaus
Das glaube ich nicht. Der Compiler muß die Rechenoperationen sowieso in kleine Häppchen (Assembler!) zerlegen.Zitat von Besserwessi
Und ob ich das nun in einer oder 2 Zeilen machen, ist völlig irrelevant.
Zu meiner Schulzeit (vor gefühlten 150 Jahren) haben wir das ausprobiert, mit C.
Der auslöser war der "naive" Programmierstil eines Schulkamaraden.
Der Lehrer meinte damals das es egal sein und wir es ausprobieren sollen.
Nun, wir haben es getan.
Ergebnis: Complimiertes Programm genau gleich lang und gleich schnell.
Gruß Dnerb
Das Gegenteil von "gut" ist "gut gemeint"!
Lesezeichen