Forum: Offtopic Ernstzunehmende Programme in BASCOM


von (Gast) (Gast)


Lesenswert?

Nur aus reinem Interesse: Gibt es hier jemanden der ernstzunehmende 
Programme in BASCOM schreibt?


Beantwortet bitte nur die Frage, wenn jemand über „BASCOM vs. Irgendeine 
andere Programmiersprache“ diskutieren will: Jeder kann sich hier einen 
eigenen Thread dafür aufmachen.

: Verschoben durch Moderator
von Jan R. (Gast)


Lesenswert?

Ich bin jetzt Kein Basic Fan, aber man kann da auch ordentlich was 
machen von der Perfotmance ist es halt schlechter als c oder Assembler. 
Bei Basecom bist du halt nicht so nahe an der Hardware.

von Hihi (Gast)


Lesenswert?

(Gast) schrieb:
> Beantwortet bitte nur die Frage, wenn jemand über „BASCOM vs. Irgendeine
> andere Programmiersprache“ diskutieren will: Jeder kann sich hier einen
> eigenen Thread dafür aufmachen.

Oh schon wieder....

von nurmi (Gast)


Lesenswert?

(Gast) schrieb:
> Nur aus reinem Interesse: Gibt es hier jemanden der ernstzunehmende
> Programme in BASCOM schreibt?

Ja, denn ich schreibe Programme, die einen Zweck erfüllen und 
funktionieren; demnach ernstzunehmen sind.

@Jan R. Warum hast du geantwortet?

von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

Ob ein Programm "ernsthaft" ist oder nicht, macht sich nicht an der 
Programmiersprache fest. Nur weil eine bestimmte IDE es erlaubt, 
unübersichtlich und liederlich zu progrsammieren, muss man das ja nicht 
so machen.

Ein guter Programmierer hat sicher seine persönliche Lieblingssprache 
oder gewisse Zwänge (z.B. verfügbare Bibliotheken, Teamarbeit) bedingen 
eine konkrete Programmierumgebung - d.h. aber nicht, dass alles andere 
automatisch Mist ist.

: Bearbeitet durch User
von Bascomnutzer (Gast)


Lesenswert?

Hallo,

auch wenn gleich wieder viele über Bascom schimpfen werden hier unsere 
Erfahrung und Nutzung:

Wir nutzen es für alle Elektroniken und zwar ausschließlich.
C wird zwar ebenfalls beherrscht.
Die Software für die MCUs lässt sich mit Bascom wesentlich schneller
erstellen als mit C (ACHTUNG: Unsere Erfahrung, andere sehen das 
bestimmt etwas anders).

Man muss aber erstmal sehr viel Erfahrung mit Bascom gesammelt haben, um
Projekte damit Umzusetzen. Es gibt immer wieder mal Stellen an denen man
sonst hängen bleibt (Ohne ersichtlichen Grund).

Ist man damit vertraut, dann können sehr gute Programme in sehr kurzer 
Zeit
erstellt werden.

Für richtig Zeitkritische Anwendungen (RT) sehe ich Bascom eher als 
schwierig an.

von Kai M. (kai_mauer)


Lesenswert?

Normalerweise antworte ich nicht auf solche Fragen von einem (Gast),
weil es oft genug nach Stunksuche aussieht. Trotzdem: Hier ein Link
zur Codesammlung von MCS-Electronic (Hersteller von Bascom). Dort
kannst Du auch ziemlich umfangreiche und anspruchsvolle Aufgaben-
lösungen finden:

http://www.mcselec.com/index.php?option=com_content&task=category&sectionid=7&id=79&Itemid=57

von Pandur S. (jetztnicht)


Lesenswert?

Es gibt Leute, die haben ein Problem zu loesen, und verwenden nun 
Bascom. Moeglicherweise weils schneller geht.

von Kai M. (kai_mauer)


Lesenswert?

Bascomnutzer schrieb:
> Für richtig Zeitkritische Anwendungen (RT) sehe ich Bascom eher als
> schwierig an.

Daß Inline-Assembler möglich ist, ist Dir nicht bekannt?

von Bascomnutzer (Gast)


Lesenswert?

Kai Mauer schrieb:
> Daß Inline-Assembler möglich ist, ist Dir nicht bekannt?

Das ist bekannt. Es gibt immer eine Möglichkeit sowas zu lösen.
Die Frage ist immer wie RT die Anwendung sein muss. Die Reaktion auf 
einen Interrupt ist so leicht umzusetzen. Wenn die RT Anforderung sehr 
komplex ist, dann wird es schon aufwendiger.
Je nach Projekt.

von fragender (Gast)


Lesenswert?

Hallo,

jede Sprache hat ihre Vor und Nachteile.

Nutze selber auch Bascom, ab und zu auch in Verbindung mit Assembler.

Gruß
fragender

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

(Gast) schrieb:
> Gibt es hier jemanden der ernstzunehmende Programme in BASCOM schreibt?

Ist dir der Vektor-Antennen-Analyzer FA-VA3 von DL1SNG „ernsthaft“
genug?

von Simpel (Gast)


Lesenswert?

Ich programmiere das Meiste in Bascom... der Umfang an fertigen 
Funktionen ist enorm und eine Idee ist nullkommanix in Code umgesetzt. 
Ich habe anfangs auch schon Funktionen selbst gebaut, bevor ich bemerkt 
habe, dass diese in den unzähligen Bascom-Funktionen bereits vorhanden 
sind.

Das Einzige was mich wirklich nervt, ist die Tatsache, dass im Code als 
Operanden keine arithmetische Mehrfachoperationen oder Klammerausdrücke 
verwendet werden können, so dass man alles in Einzelschritten erledigen 
muss. Ich kann es nicht nachvollziehen, wieso man sich seitens der 
Entwickler durch diese Flapsigkeit den Sprung über die semiprofessionele 
Hürde hinaus vergeben hat.

Durch die Möglichkeit, an jeder Stelle auch Assemblerbefehle verwenden 
zu können, relativiert sich dieses Manko etwas, indem man manche Abläufe 
eben auf Registerebene erledigt. Ausserdem lassen sich selbstgestrickte 
Assemblerfunktionen als Bibliotheken einbinden. Ich programmiere eh 
gerne maschinennah und weiß dann, was der µC im Detail macht, ob und wo 
noch Optimierpotenzial ist.
Wenn ich mir den compilierten Bascom-Code im Disassembler anschaue, kann 
ich nicht feststellen, dass Bascom generell "langsamen" Code generiert. 
Manches  würde ich in Handarbeit vielleicht anders angehen. Es hängt wie 
immer von den eigenen Erfahrungen und nicht zuletzt von der Kenntnis der 
unzähligen Bascom-Funktionen ab, wie komplex und effektiv man damit 
coden kann.

Gruss

von kamillentee (Gast)


Lesenswert?

Man liest immer wieder "Bascom, weils schneller geht". Heutzutage ist 
schnell doch eigentlich das wichtigste! Bascom müßte demnach viel 
populärer sein.
Warum heißt es hier also immer C ist besser, bzw. wird gegen Bascom 
geflamt (ehrliche Frage)?

von Peter II (Gast)


Lesenswert?

kamillentee schrieb:
> Man liest immer wieder "Bascom, weils schneller geht". Heutzutage ist
> schnell doch eigentlich das wichtigste! Bascom müßte demnach viel
> populärer sein.

jeder der regelmäßig µC Programm hat auch in C seine eigenen libs, damit 
ist es auch nicht langsamer als mit Bascom.

von Pandur S. (jetztnicht)


Lesenswert?

Es gibt Leute (C), die schwatzen viel von Portierbarkeit. Andere wollen 
nur ein Problem geloest haben und nachher vergessen.
Ja, es gibt auch Loesungen, die man portieren moechte. Sofern das denn 
ueberhaupt geht.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Jetzt Nicht schrieb:
> Andere wollen nur ein Problem geloest haben und nachher vergessen.

Das ist kein Grund, denen, die in C programmieren, zu unterstellen,
dass sie etwas anderes möchten.  Auch die wollen ihr Problem gelöst
haben und es danach vergessen.  Wenn man die Sprache kennt und sich
über die Zeit seine eigenen Codeschnipselchen oder Bibliotheken
gezimmert hat und/oder auf solche aus dem Netz zurückgreifen kann,
ist das absolut kein Problem.

Aber es ist eben auch überhaupt keine Frage, dass man deshalb nun
mit einem Tool wie Bascom irgendwie schlechter arbeiten müsste als
jemand, der all seinen Kram in C macht.  Bascom hat neben der anderen
Programmiersprache einfach einen anderen Anspruch und verhilft damit
(vermutlich – ich kenne es nicht selbst) Einsteigern und
Gelegenheitsprogrammierern zu einem schnellen Start.

von Simpel (Gast)


Lesenswert?

@kamillentee

Jeder der "seine" Programmiersprache aus dem FF kennt, beherrscht und im 
Detail versteht was dabei auf der Hardware abläuft, kann damit schnell 
und effektiv coden. Jedem Tierchen sein Plaisierchen...

Dem Basic-Dialekt als solchem, hängt ja leider noch der urzeitliche 
Nimbus einer Interpreter-Ausführung an, die im Gegensatz zum 
Compiler-Basic oder sonstigen compilierten Hochsprachen doch deutlich 
langsamer war. Aus dieser Ecke, des leicht verständlichen, 
hardwarefernen Dialekts für Anfänger, der langsamen Code produziert, 
kann sich Basic eben nur schwer befreien. Dabei steht die 
Funktionsvielfalt, die hardwarenahe Einflussmöglichkeiten und die 
Geschwindigkeit des generierten Codes der modernen Basic-Varianten, den 
anderen Sprachen in nichts mehr nach.

Bei den Basic-Dialekten erscheint mir die Syntax ungeschlagen intuitiv 
und spontan einleuchtend, so dass jeder Neueinsteiger und jeder 
"Fremdsprachler" sowieso, den Quellcode ohne Klimmzüge verstehen kann. 
Bei den anderen Hochsprachen geht das ohne gründliche Einarbeitung in 
ihre syntaktischen und systemischen Eigenarten nicht so einfach. Auch 
was das Procedere der Weitergabe der Quellcodes und den diversen Dateien 
und Bibliotheken zur Compilierung betrifft.

von Axel S. (a-za-z0-9)


Lesenswert?

kamillentee schrieb:
> Man liest immer wieder "Bascom, weils schneller geht". Heutzutage ist
> schnell doch eigentlich das wichtigste! Bascom müßte demnach viel
> populärer sein.
> Warum heißt es hier also immer C ist besser, bzw. wird gegen Bascom
> geflamt (ehrliche Frage)?

Weil es (zu oft) nicht stimmt.

Bascom ist nur dann schneller, wenn man von den mitgelieferten fertigen 
Modulen profitiert. Wenn man etwas erledigen will wofür es kein fertiges 
Modul gibt, geht es entweder langsam oder schlimmstenfalls gar nicht.

Bascom ist vergleichbar mit Fertigteilhäusern. C ist ein Haufen Steine, 
Mörtel und eine Auswahl an Maurerkellen. Assembler ist eine Lehmgrube.

Und so wie es auf dieser Stufenleiter immer mehr einzelne Schritte zum 
fertigen Haus werden, je (scheinbar) einfacher das gewählte Werkzeug 
ist, so steigen andererseits auch die kreativen Möglichkeiten. Aus 
Steinen kann man ein Haus bauen, daß es als Fertighaus nicht gibt. Aus 
Lehm kann man sich sogar Ziegel in einer Form machen, die man sonst 
nicht fertig bekommt.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Axel Schwenke schrieb:
> Aus Lehm kann man sich sogar Ziegel in einer Form machen, die man sonst
> nicht fertig bekommt.

Aber es ist eben noch mehr Aufwand. ;-)

Andererseits kann man gewiss auch im Fertigteilhaus problemlos leben,
sofern man nicht gerade Extrawünsche hat, für die es keine Fertigteile
gibt und die sich auch nicht ohne Weiteres in das Fertigteilkonzept
integrieren lassen.

von Simpel (Gast)


Lesenswert?

Solange ich an jeder Stelle Assemblerbefehle im Quellcode platzieren 
kann, habe ich mit Bascom ein Fertighaus mit Lehmgrube... muss ja nicht 
immer ein Swimmingpool sein... ;-)

von Ratgeber (Gast)


Lesenswert?

Axel Schwenke schrieb:
> Bascom ist vergleichbar mit Fertigteilhäusern. C ist ein Haufen Steine,
> Mörtel und eine Auswahl an Maurerkellen. Assembler ist eine Lehmgrube.

Das erscheint mir nicht ganz richtig. Bascom würde ich eher mit einer
ganzen Reihe von Fertig_Bauteilen wie sie im Plattenbau üblich sind, 
vergleichen. Die kann man benutzen -muß man aber nicht. Es ist natürlich
auch möglich, sich "Großbauteile" aus einzelnen Steinen und Mörtel 
selbst
zu bauen, wenn es das "Ferigbauteil" nicht gibt oder nicht so gibt, 
wie
man es sich vorstellt.

von Alex W. (a20q90)


Lesenswert?

Axel Schwenke schrieb:

> Bascom ist vergleichbar mit Fertigteilhäusern. C ist ein Haufen Steine,
> Mörtel und eine Auswahl an Maurerkellen. Assembler ist eine Lehmgrube.
>
> Und so wie es auf dieser Stufenleiter immer mehr einzelne Schritte zum
> fertigen Haus werden, je (scheinbar) einfacher das gewählte Werkzeug
> ist, so steigen andererseits auch die kreativen Möglichkeiten. Aus
> Steinen kann man ein Haus bauen, daß es als Fertighaus nicht gibt. Aus
> Lehm kann man sich sogar Ziegel in einer Form machen, die man sonst
> nicht fertig bekommt.

Ach deshalb gibts mittlerweile so viele Fertighäuser :-P

Ich programmiere Mittlerweile auch in Bascom. Weils schneller geht!
Und Zeit ist Geld!

: Bearbeitet durch User
von Udo S. (urschmitt)


Lesenswert?

kamillentee schrieb:
> Warum heißt es hier also immer C ist besser, bzw. wird gegen Bascom
> geflamt (ehrliche Frage)?

Ich sehe hier eigentlich viel öfter das Bascom 'Anhänger' gegen alles 
was nicht Bascom ist 'flamen'
Warum eigentlich?

von Friedrich (Gast)


Lesenswert?

Bascom kann doch noch nichteinmal ordentliche mathematische Ausdrücke 
verarbeiten, geschweige denn iterative Programmierung, da stürzen die 
Programme gerne aus unersichtlichen Gründen ab. Unser Fazit war: je 
anspruchsvoller das Projekt um so schlimmer werden Fehlersuche, 
Übersichtlichkeit und Stabilität. Von der jahrzentealten, völlig 
überholten IDE fangen wir erst gar nicht an. Wer sich das heutzutage in 
anebetracht der zahlreichen, auch kostenlosen Alternativen antut, bitte. 
Nicht mehr als ein Spielzeug für Hobbyisten.

von Falk B. (falk)


Lesenswert?

@ Alex W. (a20q90)

>Ich programmiere Mittlerweile auch in Bascom. Weils schneller geht!

Weil du nie eine ordentliche Hochsprache gelernt hast?
Auch wenn C nicht der Weisheit letzter Schluß ist, es ist ein sehr weit 
verbreiteter Industriestandard. Auf den unterschiedlichsten Plattformen, 
vom winzigen uC bis zur fetten Workstation (auch wenn es diesen begriff 
heute so kaum noch gibt). Wenn man die Finger von den linken Tricks in C 
lässt und alles etwas konservativer angeht, kommt man mit C sehr gut und 
schnell zu soliden Ergebnissen.

BASCOM hat schon seine Berechtigung für Anfänger und 
Gegenheitsprogrammierer. Es soll auch Leute geben, die BASCOM in 
größerem Umfang im proifessionelem Umfeld einsetzen. Wenn sie damit gute 
Ergebnisse erreichen, OK. Das Gleiche gilt für Arduino & Co. Mir wären 
aber diverse Einschränkungen zu nervig, allen voran die verkrüppelten 
Formeln mit nur EINER Operation pro Zeile! Wenn es etwas flotter sein 
soll (Interrupts), ist der BASCOM-Compiler nicht so toll, der sicher mal 
pro forma ALLE Register.

: Bearbeitet durch Moderator
von Falk B. (falk)


Lesenswert?

@Udo Schmitt (urschmitt)

>Ich sehe hier eigentlich viel öfter das Bascom 'Anhänger' gegen alles
>was nicht Bascom ist 'flamen'
>Warum eigentlich?

Viele Menschen haben einen geistigen Horizont mit dem Radius Null. Das 
nennen sie dann ihren Standpunkt.

von nurmi (Gast)


Lesenswert?

Ich kann ja die C-Jünger verstehen, wenn sie ihre Programmiersprache 
verteidigen. Ist aber hier doch gar nicht gefragt.

von VB-Anfänger (Gast)


Lesenswert?

In BASCOM habe ich vor einiger Zeit ein Projekt unter der Adresse 
www.ups.bplaced.de gefunden.

Das Projekt ist so umfangreich, dass ich glaube, dass damit auch alles 
zu machen ist.

von Alex W. (a20q90)


Lesenswert?

Falk Brunner schrieb:
> Weil du nie eine ordentliche Hochsprache gelernt hast?

Das schließt Du woraus?

von Falk B. (falk)


Lesenswert?

@ Alex W. (a20q90)

>> Weil du nie eine ordentliche Hochsprache gelernt hast?

>Das schließt Du woraus?

Schrieb ich das nicht?

Beitrag "Re: Ernstzunehmende Programme in BASCOM"

von Franz (Gast)


Lesenswert?

Alex W. schrieb:
> Falk Brunner schrieb:
>> Weil du nie eine ordentliche Hochsprache gelernt hast?
>
> Das schließt Du woraus?
Fragen mit Gegenfragen zu 'beantworten' bringt einen nicht wirklich 
weiter. Wenn du sie einfach beantwortest hättest wäre uns das herumraten 
und Schlussfolgerungen ziehen erspart geblieben.

von Udo S. (urschmitt)


Lesenswert?

Wie wäre es wenn die BasCom 'Profis' statt sich hier zu zoffen sich mal 
um die Anfragen kümmern, die für bascom hier im Forum reinkommen.
z.B:
Beitrag "Benötige Unterstüzung bei Variablen"

: Bearbeitet durch User
von nurmi (Gast)


Lesenswert?

Wenn sich die C-'Profis' um alle C-Probleme kümmern würden, würden sie 
in diesem thread wenigstens nicht stören.

von Falk B. (falk)


Lesenswert?

@ Franz (Gast)

>Fragen mit Gegenfragen zu 'beantworten' bringt einen nicht wirklich
>weiter. Wenn du sie einfach beantwortest hättest wäre uns das herumraten
>und Schlussfolgerungen ziehen erspart geblieben.

Nun, für die nicht ganz so auffassungsschnellen.

>> Weil du nie eine ordentliche Hochsprache gelernt hast?

>Das schließt Du woraus?

Das schließe ich aus der Aussage von ihm, die da lautete.

"Ich programmiere Mittlerweile auch in Bascom. Weils schneller geht!"

C ist nicht wirklich langsamer in der Entwicklung, WENN man ein paar 
sinnvolle Codeschnipsel für LCD-Ansteuerung, UART, SD-Karte etc. hat.
Das ist der kleine Vorteil von BASCOM/Arduino etc., dass dort all diese 
Codeschnipsel drinstecken.

von Pandur S. (jetztnicht)


Lesenswert?

> Wie wäre es wenn die BasCom 'Profis' statt sich hier zu zoffen sich mal
um die Anfragen kümmern, die für bascom hier im Forum reinkommen.
z.B:
Beitrag "Benötige Unterstüzung bei Variablen"


Weshalb sollte man jeden Artikel lesen ? Wenn's um Bascom geht koennte 
das auch schon im Titel drin stecken. Das waer effizienter.

von Simpel (Gast)


Lesenswert?

Falk Brunner schrieb:
> Wenn es etwas flotter sein soll (Interrupts), ist der BASCOM-Compiler >nicht so 
toll, der sichert mal pro forma ALLE Register.

Das ist die Default-Einstellung. Es geht auch individuell.
Optionen:   ...ON interrupt label [NOSAVE|SAVE|SAVEALL]...

Gut, dass hier nur Leute schreiben, die mit der Materie vertraut sind... 
:-)

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Simpel schrieb:
> Es geht auch individuell.

Neugierig:

Warum eigentlich nicht automatisch?  Er sollte doch wissen, welche
Register er zerstört und daher sicher muss.

von Falk B. (falk)


Lesenswert?

@ Simpel (Gast)

>Das ist die Default-Einstellung. Es geht auch individuell.
>Optionen:   ...ON interrupt label [NOSAVE|SAVE|SAVEALL]...

Wozu soll ein SAVEALL gut sein?
NOSAVE ist bestenfalls für reine ASM-Funktionen/Interrupts gut.
Was macht SAVE? Intelligent sichern? Warum ist DAS nicht der 
Standardwert?

von Udo S. (urschmitt)


Lesenswert?

Jetzt Nicht schrieb:
> Weshalb sollte man jeden Artikel lesen ? Wenn's um Bascom geht koennte
> das auch schon im Titel drin stecken. Das waer effizienter.

Dumme Ausrede, jetzt kennst du den Thread ja, aber du solltest auch 
richtig zitieren lernen.
Ist einfacher als Bascom, einfach Markierenund den richtigen Butten im 
Beitrag unten rechts drücken.

von Erwin E. (erwinendres)


Lesenswert?

Als typischer Gelegenheitsprogrammierer habe ich meine ein, zwei 
Projekte pro Jahr früher in BASCOM Basic gemacht. Die haben (meistens) 
auch funktioniert und tun das heute noch.

Das auch in diesem Thread angesprochene Ärgernis, dass pro 
mathematischem Ausdruck eine eigene Zeile fällig ist und die 
vorsintflutliche IDE haben mich inzwischen zu LunaAVR geführt. Das ist 
doch schon wesentlich angenehmer! Ach, hätte es das doch schon vor 10 
Jahren gegeben.
Etwas ärgerlich bei Luna sind die Bugs der jeweils aktuellen Betas, da 
suche ich immer wieder Fehler in meinem Code, die in Wirklichkeit im 
Compiler stecken.
Es ist eben noch eine recht junge Sprache. Ich muss aber auch sagen, 
dass die gemeldeten Bugs innerhalb kürzester Zeit abgestellt werden.
Ein Plus bei Luna ist für mich die Nähe zu C (im Vergleich mit Bascom), 
so dass bewährter Code, z.B. die 'Standardlösungen' von Peter Dannegger 
für Tasterentprellung und Drehgeber oder Display Treiber recht einfach 
in Luna übertragen werden kann, wenn man Grundkenntnisse in C hat. Beim 
Bascom Basic fiel mir das noch viel schwerer.

Zusammenfassend kann ich aus meiner Sicht sagen, dass in jeder Sprache 
'ernstzunehmende' Programme geschrieben werden können. Nur muss man sich 
bei manchen Sprachen mehr plagen oder ärgern als bei anderen.
Soll also jeder das Werkzeug benutzen, das für ihn persönlich das 
geeignetste ist.
Allerdings sollte man die verschiedenen Sprachen zumindest oberflächlich 
kennen, wenn man urteilen will.

von Udo S. (urschmitt)


Lesenswert?

Erwin Endres schrieb:
> in Plus bei Luna ist für mich die Nähe zu C (im Vergleich mit Bascom),
> so dass bewährter Code, z.B. die 'Standardlösungen' von Peter Dannegger
> für Tasterentprellung und Drehgeber oder Display Treiber recht einfach
> in Luna übertragen werden kann, wenn man Grundkenntnisse in C hat.

Wenn du Peters Tastenentprellung fehlerfrei portierst, dann könntest du 
doch auch in C programmieren.
Warum hast du dann eine ich sag mal so viel exotischere 
Programmiersprache wie Luna gelernt, zumal du selbst schreibst das du 
dann oft Fehler suchst, die nicht in deinem Code sondern an Luna liegen.
In C ist es ziemlich schwer auf einen Bug zu stossen.

Erwin Endres schrieb:
> Soll also jeder das Werkzeug benutzen, das für ihn persönlich das
> geeignetste ist.

Seh ich genauso, allerdings muss eine sachliche Diskussion um Vor und 
Nachteile möglich sein, ohne dass glaich wieder der Kindergarten 
losgeht. Aber das funktioniert leider selten.

von Udo S. (urschmitt)


Lesenswert?

Vor einer Stunde habe ich hier auf den Thread verwiesen, in dem ein 
Bascom Anfänger Hilfe benötigt.

Resonanz bis jetzt: NULL!
Versucht zu helfen haben die, die eher wenig mit BasCom zu tun haben.

Traurig
Ihr Nurmis und JetztNichts und bascomnutzer, ...
könnt ihr nur in diesen Diskussionthreads diskutieren oder auch mal 
einem Gleichgesinnten helfen?

von Erwin E. (erwinendres)


Lesenswert?

Udo Schmitt schrieb:
> Wenn du Peters Tastenentprellung fehlerfrei portierst, dann könntest du
> doch auch in C programmieren.

Nach einem halben Jahr oder längerer Programmierpause fällt es mir 
jedesmal wieder von neuem schwer, mich an die C Syntax zu 
erinnern/gewöhnen. Da ist Luna oder auch Bascom für mich deutlich 
intuitiver.
Außerdem ist es schon zweierlei, ob man einen Algorithmus in eine andere 
Sprache überträgt oder ein komplettes Programm schreibt.

Btw: Die bewährten Peda Routinen sind inzwischen auch in Luna als 
Bibliotheken enthalten.


> Traurig
> Ihr Nurmis und JetztNichts und bascomnutzer, ...
Wie war das mit dem Kindergarten?
Und was sind Nurmis? Finnische Leichtathleten?

von Uwe S. (de0508)


Lesenswert?

Hallo Udo,

Udo Schmitt schrieb:
> Wenn du Peters Tastenentprellung fehlerfrei portierst, dann könntest du
> doch auch in C programmieren.
Die hat er nicht portiert, das war ein anderes Team, die jetzige Lib 
(Interface genannt) ist in Assembler codiert und entsprechend schnell.

PeDa's Drehimpulsgeber Algorithmus zur Auswertung eines Drehencoders 
habe ich gerade für 4 Drehimpulsgeber als Lib (interface) implementiert 
und Mehrfach Drehimpulsgeber (MultiRotaryEncoder) genannt.

> Warum hast du dann eine ich sag mal so viel exotischere
> Programmiersprache wie Luna gelernt, zumal du selbst schreibst das du
> dann oft Fehler suchst, die nicht in deinem Code sondern an Luna liegen.
> In C ist es ziemlich schwer auf einen Bug zu stossen.

Da hast Du bestimmt etwas falsch verstanden, die LunaAVR V2015 R1 Beta 
sind ja genau deshalb veröffentlicht um, Fehler die durch 
Codeoptimierungen entstanden sind, zu finden.
Sie dienen nicht der Programmgenerierung für produktive Projekte.

Die Stabel heißt *LunaAVR V2014 R2.4*
#  http://avr.myluna.de/doku.php?id=de:lunaavr_2014.r2

: Bearbeitet durch User
von Erwin E. (erwinendres)


Lesenswert?

Uwe S. schrieb:
> Die hat er nicht portiert, das war ein anderes Team, die jetzige Lib
> (Interface genannt) ist in Assembler codiert und entsprechend schnell.

Doch, hat er schon! ;)
Das war bevor die Routinen als Interface zur Verfügung standen...

von Dennis H. (t1w2i3s4t5e6r)


Lesenswert?

Mir fällt gerade der Name nicht mehr ein, aber der Typ, der den 
Tricopter gebaut hat, hat auch alles in Basecom geschrieben. Ist alles 
Open Source. Einen Kopter finde ich jetzt schon etwas anspruchsvoller, 
das macht kein Anfänger. Und zu langsam darf die Sprache dann auch nicht 
sein. Achso, der Typ hat auch was mit Biologie studiert und das 
hinbekommen, man muss also nicht immer Informatiker oder E-Techniker 
sein, um etwas "ernsthaftes" auf die Beine zu stellen :-)


Dennis

von Udo S. (urschmitt)


Lesenswert?

Erwin Endres schrieb:
> Und was sind Nurmis? Finnische Leichtathleten?

Das waren die Nutzernamen der Nutzer die hier sehr 'aktiv' 'pro BasCom' 
diskutiert haben.

Beispiel:
nurmi schrieb:
> Wenn sich die C-'Profis' um alle C-Probleme kümmern würden, würden sie
> in diesem thread wenigstens nicht stören.

Es fällt mir hier schon länger auf das vor allem bei Themen um BasCom 
schnell sehr hitzig diskutiert wird, wenn aber ein Anfänger mal eine 
Frage stellt, dann findet man praktisch nie diejenigen, die den "Flame" 
Threads den Mund am weitesten aufmachen.
Jetzt habe ich sie praktisch auf den BasCom Thread gestossen, aber 
keiner hat geholfen. Ich selbst kenne etwas Basic von ganz früher auf 
dem PC aber lein BasCom, deshalb kann ich dem genannten Thread nicht 
helfen.

: Bearbeitet durch User
von Oliver S. (oliverso)


Lesenswert?

Udo Schmitt schrieb:
> Jetzt habe ich sie praktisch auf den BasCom Thread gestossen, aber
> keiner hat geholfen.

???

Oliver

von Udo S. (urschmitt)


Lesenswert?


von W.S. (Gast)


Lesenswert?

Udo Schmitt schrieb:
> Es fällt mir hier schon länger auf das vor allem bei Themen um BasCom
> schnell sehr hitzig diskutiert wird,

Ach, das siehst du falsch. Hitziges Herumflamen gibt es hier zu 
eigentlich allen Themen.

Aber, wenn wir mal ein paar Jahre zurückdenken, dann war Visual Basic 
der damalige Renner, eben weil man damit recht schnell Programme mit 
einer ganz ordentlichen Windows-Oberfläche hingekriegt hat und weil man 
sich eben nicht durch kryptische Sprachsyntax durchbeißen mußte.

So ähnlich läuft's eben auch mit Bascom. Da kriegt man relativ 
hardwarefern seine eigentliche Anwendung eben hin - sofern selbige eher 
geradlinig ist. Das sit durchaus gut für Leute, die ihren Daseinssinn 
nicht im Programmieren sehen, sondern anderweitige Ingenieur-Ziele 
verfolgen.

Ein bissel ähnlich sieht das mit den Pascal-Implementierungen von mikroe 
aus. Die sind durchaus in ihrem Ansatz für ähnliche Leute gedacht wie 
das Klientel von Bascom - allerdings auf anderer Hardware.

Das Ganze hat natürlich auch seine Kehrseite: Bascom auf einer anderen 
Platform als AVR geht sicherlich, Mikropascal auf anderen ARM's als 
denen, die vom Hersteller bereits berücksichtigt wurden geht vielleicht 
auch, aber WER sollte das machen bzw. einpflegen?

W.S.

von Kai M. (kai_mauer)


Lesenswert?

W.S. schrieb:
> Bascom auf einer anderen
> Platform als AVR geht sicherlich

Ja, geht sicherlich auch 8051 -d.h. nicht nur sicherlich, sondern 
sicher

von nurmi (Gast)


Lesenswert?

Udo Schmitt schrieb:
> Traurig
> Ihr Nurmis und JetztNichts und bascomnutzer, ...
> könnt ihr nur in diesen Diskussionthreads diskutieren oder auch mal
> einem Gleichgesinnten helfen?

Dieser thread war überhaupt nicht als Diskussionsthread angelegt. Bis 
auf die Unklarheit, was mit "ernstzunehmend" genau gemeint sei, war die 
Frage des TO selten klar und er hatte auch noch vorbeugend geschrieben, 
das er eben nicht eine Diskussion "BASCOM vs. Irgendeine andere 
Programmiersprache" wünscht. Wer das nicht mehr weiß, kann das ja ganz 
oben nochmal nachlesen.

Wenn das Wort Bascom auftaucht, fühlen sich aber immer wieder 
irgendwelche User berufen den thread abseits des Themas zu zerreden. 
Obwohl nicht mein thread aber Danke dafür :(

Um da mitzuhalten werde ich wohl, anstatt den Gleichgesinnten zu helfen, 
den erkennbaren "C-Spezialisten" empfehlen müssen auf Bascom 
umzusteigen.

von Pandur S. (jetztnicht)


Lesenswert?

>Ihr Nurmis und JetztNichts und bascomnutzer, ... könnt ihr nur in diesen 
Diskussionthreads diskutieren oder auch mal einem Gleichgesinnten helfen?

Sorry, ich verwend kein Bascom, dafuer Pascal.

Einen Tiny2313 wuerd ich sein lassen. Hat zu wenig von allem. Allenfalls 
in ASM. Die Kostenersparnis gegen einen vernuenftigen Mega ist marginal.

von Cyblord -. (cyblord)


Lesenswert?

Jetzt Nicht schrieb:
> Einen Tiny2313 wuerd ich sein lassen. Hat zu wenig von allem. Allenfalls
> in ASM. Die Kostenersparnis gegen einen vernuenftigen Mega ist marginal.

Wenn dann tauscht man ihn gegen einen Tiny84 oder gleich 841. Der 
Vorteil der Tinys im Vergleich zu megas ist die Größe vs. Handlebarkeit.
SOIC ist für viele (auch für mich) ein optimales Gehäuse. Weil es 
relativ klein ist, sich aber sehr prozessicher löten lässt. Sowohl von 
Hand als auch per Hobby-Reflow. Megas bieten sowas nicht. Die sind 
entweder groß, oder haben gleich richtig winzige Gehäuse, welche dann 
oft Probleme beim löten machen.

von Thomas D. (thomasderbastler)


Lesenswert?

Ich als Bascomfan siehe ich die Sache so...

Wenn einer ein Quereinsteiger ist wie ich, habe Elektronik nicht 
gelernt, kam ich mit Bascom sehr schnell zum Erfolg.

Sowas wie RGB Steuerung, Uhr, Thermometer usw..was man halt am Anfang 
baut wenn man sich mit uC anfängt.

Wenn ich aber sehe, wieviel Threads existieren "LCD Anzeige nur schwarze 
Balken", oder ADC Werte..dann sehe es ist meistens C. Habe zwar auch mal 
versucht mit C was zu machen, aber mir persönlich ist ein C Code 
schlechter "lesbar"( haufen klammern ) usw aber ist meine persönliche 
Meinung.

Also für Hobby sehe Bascom wirklich super ausreichend.

Die andere Seite wie Industrie ( unsere Zulieferer schreiben 
ausschliesslich in C..) also scheint mir als Industriestandard zu sein.

Ist schon fast wie Microsoft und Linux.

ich komme sehr viel bei Großkunden herum..also keine 100 Man Buden..habe 
NIRGENDS..Linux bisher gesehen , (Windowsserver, Axapta..Office) oder 
sind diese "Free Programme" bisher nicht über den Weg gelaufen, trotz 
daß ich relativ viel in EDV Bereich bzw. Produktion unterwegs bin.

Dann ist die Frage wieder warum :

Industrie - C und Windows
Privat - Linux..naja wer was mag..und wöfür er Geld hat...Lol

von MWS (Gast)


Lesenswert?

Udo Schmitt schrieb:
> Jetzt habe ich sie praktisch auf den BasCom Thread gestossen, aber
> keiner hat geholfen.

Auch die hier Beteiligten vermögen im von Dir verlinkten Thread im 
Moment nichts auszurichten, weil wesentliche Informationen seitens des 
TE fehlen. Das hättest Du aber durchaus erkennen können.

Udo Schmitt schrieb:
> Vor einer Stunde habe ich hier auf den Thread verwiesen, in dem ein
> Bascom Anfänger Hilfe benötigt.

Der TE ist im Moment abgetaucht, wofür es mehrere Gründe gibt:

a) er muss arbeiten
b) er hat wild geändert und jetzt geht's, er weiß aber nicht mehr warum
c) der Fehler war so simpel, dass er sich geniert, sich wieder zu melden
d) es war was ganz was Anderes

von drama (Gast)


Lesenswert?

Jetzt Nicht schrieb:
> Einen Tiny2313 wuerd ich sein lassen. Hat zu wenig von allem. Allenfalls
> in ASM.

Hm, also ich hatte da ganz nette Sachen untergebracht:
USB-HID-Geräte mit V-USB, Software-PWM mit so vielen Kanälen wie Pins 
plus Animationen damit usw. Allerdings mit C und nicht BASCOM. :o

Das Problem an BASCOM ist ja nicht, dass es ein BASIC-Dialekt ist, 
sondern der dilletantisch schlecht implementierte Compiler. Genug 
Alternativen gibt es ja, wenn es BASIC sein muss.

von Kai M. (kai_mauer)


Lesenswert?

drama schrieb:
> Allerdings mit C und nicht BASCOM. :o

Dann ist das für diesen Thread ja völlig unwichtig.

von c-hater (Gast)


Lesenswert?

Cyblord ---- schrieb:

> Wenn dann tauscht man ihn gegen einen Tiny84 oder gleich 841.

Die haben allerdings beide nicht so viele Pins wie der 2313 und die Zahl 
der Pins ist ja auch oft wichtig, nicht nur die Menge des Speichers. Was 
übrigens diesen betrifft, steht ja auch für den 2313 bei 
gleichbleibender Pinzahl der Upgrade-Pfad auf 2313A (neue 
Hardwarefunktionen) oder 4313 offen (gleiche neue Hardware und 
zusätzlich auch noch mehr Speicher).

> Der
> Vorteil der Tinys im Vergleich zu megas ist die Größe vs. Handlebarkeit.
> SOIC ist für viele (auch für mich) ein optimales Gehäuse. Weil es
> relativ klein ist, sich aber sehr prozessicher löten lässt.

Nunja, 2313A und 4313 gibt's nach wie vor in DIP und SOIC. Also genau 
so, wie es sein sollte.

von m.n. (Gast)


Lesenswert?

Thomas der Bastler schrieb:
> aber mir persönlich ist ein C Code
> schlechter "lesbar"( haufen klammern ) usw aber ist meine persönliche
> Meinung.

Alle Bascom-Beispiele, die ich bislang gesehen habe, sind grauenvoll 
formatiert und minimalst kommentiert. Das erinnert mich an Zeiten, als 
jedes Leerzeichen noch Platz im Programmspeicher belegte.
Das schreckt zunächst jeden Interessierten ab, der gerne strukturiert 
programmieren möchte.

Aus Jux habe ich mir die Demo-Version geladen, um ein wenig zu spielen 
und zu sehen, wieweit man mit 4K Code-Limit kommt. Aber offensichtlich 
schaffe ich es nicht einen AVR ISP MKII Prommer anzusprechen. Die 
Treiber von AVR Studio reichen wohl nicht und die Nachinstallation von 
USBLIB-Treibern (oder so ähnlich) schaffen auch keine Verbindung. Ich 
weiß nicht wie andere Anfänger damit klarkommen.

Simpel schrieb:
> Das Einzige was mich wirklich nervt, ist die Tatsache, dass im Code als
> Operanden keine arithmetische Mehrfachoperationen oder Klammerausdrücke
> verwendet werden können, so dass man alles in Einzelschritten erledigen
> muss.

Das würde ich nicht sonderlich schlimm finden, weil man dann sehen kann, 
wie die Reihenfolge der Auswertung ist. Bei Assembler muß ich das ja 
auch machen ;-)

von Cyblord -. (cyblord)


Lesenswert?

c-hater schrieb:

> Nunja, 2313A und 4313 gibt's nach wie vor in DIP und SOIC. Also genau
> so, wie es sein sollte.

Sagmal hab ich die null gewählt oder warum meldet du dich dauernd von 
den billigen Plätzen? Langeweile?
Dein DIP Gesülze nervt langsam aber sicher. Wenn dir die Features der 
DIP Varianten reichen dann nimm sie. Niemand zwingt dich den 841 zu 
verwenden.
Und den 84 gibts auch in DIP. Dafür hat er 8kb Flash und auch nen 
HW-UART.

: Bearbeitet durch User
von Kai M. (kai_mauer)


Lesenswert?

m.n. schrieb:
> Aber offensichtlich
> schaffe ich es nicht einen AVR ISP MKII Prommer anzusprechen. Die
> Treiber von AVR Studio reichen wohl nicht und die Nachinstallation von
> USBLIB-Treibern (oder so ähnlich) schaffen auch keine Verbindung. Ich
> weiß nicht wie andere Anfänger damit klarkommen.

Die verwenden einfach die Hilfe, die MCS dafür bereitstellt:
http://avrhelp.mcselec.com/index.html?libusb.htm

Ich sage Dir: Das funktioniert tatsächlich...

von Thomas D. (thomasderbastler)


Lesenswert?

m.n. schrieb:
> Aber offensichtlich
> schaffe ich es nicht einen AVR ISP MKII Prommer anzusprechen.

In der Tat..5 Min Google..dann weißt Du ja wie es geht, aber wenn man an 
die Sache eh so rangeht.."ist sowieso nichts"..dann wirds an nicht 
gehen.

Ich habe Bascom und den besagten USB Programmer..null Problem.Win7 64Bit 
Ultimate.

von m.n. (Gast)


Lesenswert?

Thomas der Bastler schrieb:
> In der Tat..5 Min Google..dann weißt Du ja wie es geht, aber wenn man an
> die Sache eh so rangeht.."ist sowieso nichts"..dann wirds an nicht
> gehen.

Du meckerst ja so rum, als ob die Überschrift wäre:
"Darf man Bascom-Nutzer ernst nehmen?"
Soll ich darauf antworten?

Daß man bei einem AVR ISP MKII ein STK500 wählen muß, erschließt sich 
mir allerdings nicht :-(

von Franz (Gast)


Lesenswert?

Thomas der Bastler schrieb:
> aber mir persönlich ist ein C Code
> schlechter "lesbar"( haufen klammern ) usw aber ist meine persönliche
> Meinung.
Wenn man den C-Code vernünftig formatiert und einrückt, ist es IMHO kein 
Problem, wenn man hingen keine Wert auf Formatierung legt kann man in 
den meisten Programmiersprachen 'kryptische' Konstrukte erzeugen.

von Kai M. (kai_mauer)


Lesenswert?

m.n. schrieb:
> Daß man bei einem AVR ISP MKII ein STK500 wählen muß, erschließt sich
> mir allerdings nicht :-(

Nur mal aus Interesse: Was glaubst Du, warum ich den Link zu der
Hilfedatei angegeben habe? Damit Du (immer noch falsch) behauptest,
daß der MK2 als STK500 angesprochen werden soll?

LIES die Anleitung oder schau Dir die Bilder an, falls Du mit dem Text
nicht klarkommst!

m.n. schrieb:
> "Darf man Bascom-Nutzer ernst nehmen?"
> Soll ich darauf antworten?

Darf man Leute ernst nehmen, die nicht mal einen Programmer in Betrieb
nehmen können?

Soll ich darauf antworten?

: Bearbeitet durch User
von W.S. (Gast)


Lesenswert?

Kai Mauer schrieb:
> Darf man Leute ernst nehmen, die nicht mal einen Programmer in Betrieb
> nehmen können?

Nana.. nicht gleich weißglühen.

Also: Im Grunde habe auch ich etwas gegen alle µC, zu deren 
Programmierung man zwangsweise einen speziellen Programmer braucht. Egal 
ob es nun einer ist, der sich JTAG oder SWD oder was proprietäres nennt.

Natürlich geht so ein Equipment, und für jemanden, der das Geld für 
einen JLINK oder ULINK2 oder was Vergleichbares hat, ist das auch gar 
kein Thema. Ebenso nicht für diejenigen, die irgend ein Eval-Board mit 
darauf enthaltenem JTAG/SWD-Adapter haben.

Aber: Es gibt trotzdem Leute, bei denen die Situation anders aussieht - 
und genau deshalb sind mir µC sympathischer, die einen eingebauten 
Bootlader haben, so daß man auch mit sehr simplem Equipment 
(COM-Port+MAX232 oder USB-Serial Adapter vom Chinesen oder gar USB 
direkt) zu Potte kommt.

Ja, früher gab's auch mal nen Atmel-Programmer für den PP, aber das ist 
lang her. Heutzutage sind mir aus o.g. Gründen die ARM's und Cortexe von 
NXP und ST mit ihren fest eingebauten Bootladern lieber als all die 
bisherigen kleineren µC, wozu ich eben auch all die AVR's zähle.

So ein Cortex, der sich dank eingebautem USB-Lader schlichtweg ganz ohne 
irgendwelches Geschirre programmieren läßt, wenn man mal von einem 
Jumper und einem Taster absieht, erscheint mir derzeit als das ideale 
Einsteiger-Equipment. Eigentlich wäre aus Sicht der Bascom-Leute 
durchaus zu wünschen, für selbigen eben auch so eine Cortex-Plattform zu 
haben.

W.S.

von alt geworden (Gast)


Lesenswert?

Erwin Endres schrieb:
> Das auch in diesem Thread angesprochene Ärgernis, dass pro
> mathematischem Ausdruck eine eigene Zeile fällig ist und die
> vorsintflutliche IDE haben mich inzwischen zu LunaAVR geführt. Das ist
> doch schon wesentlich angenehmer!

Jetzt nicht mehr! Ein Forum das nicht mal mehr für Gäste öffentlich 
lesbar ist taugt nicht. Mein Interesse an LunaAVR ist damit auf null 
erloschen. Schade drum!

von MWS (Gast)


Lesenswert?

W.S. schrieb:
> So ein Cortex, der sich dank eingebautem USB-Lader schlichtweg ganz ohne
> irgendwelches Geschirre programmieren läßt, wenn man mal von einem
> Jumper und einem Taster absieht, erscheint mir derzeit als das ideale
> Einsteiger-Equipment.

Je komplexer der Controller, desto schwieriger wird's für den Benutzer, 
vor allem wenn er das Gros der Funktionalität nicht benötigt.

Andererseits gibt's das ja schon, es lässt sich als Programmer "Arduino" 
unter Bascom einstellen (57600 Baud).

Damit wird der Bootloader der Arduinos verwendet und die Arduino 
AVR-Plattform ist so direkt einsetzbar. Kaputt-fusen per Bootloader ist 
ausgeschlossen, Lock-Fuses können natürlich nur über ISP gesetzt werden, 
der Clock-Prescaler hingegen kann über den Code eingestellt werden.

Voila, eine überschaubare Plattform mit z.B. ATM328P mit genau den 
gewünschten Vorzügen und nicht ein aufgeblasener Cortex.

von drama (Gast)


Lesenswert?

W.S. schrieb:
> Aber: Es gibt trotzdem Leute, bei denen die Situation anders aussieht -
> und genau deshalb sind mir µC sympathischer, die einen eingebauten
> Bootlader haben, so daß man auch mit sehr simplem Equipment
> (COM-Port+MAX232 oder USB-Serial Adapter vom Chinesen oder gar USB
> direkt) zu Potte kommt.

Blöde Frage, aber bei welchen (Mainstream)-MCUs ist das nicht der Fall? 
MSP430, TI Stellaris, NXP LPC, STM32, Gecko. etc. haben allesamt 
mindestens einen Bootloader über UART.

von Erwin E. (erwinendres)


Lesenswert?

alt geworden schrieb:
> Jetzt nicht mehr! Ein Forum das nicht mal mehr für Gäste öffentlich
> lesbar ist taugt nicht. Mein Interesse an LunaAVR ist damit auf null
> erloschen. Schade drum!

Eigentlich ist das eher schade für dich.

Aber so ist das, der eine verliert das Interesse an einer Sprache, weil 
er den Programmer nicht zum Laufen bekommt, der andere weil er sich erst 
bei einem Forum anmelden müsste, bevor er dort Rat und Hilfe bekommt.

Häkeln soll ja auch ein schönes Hobby sein...
Obwohl, da muss man Maschen zählen und links und rechts unterscheiden 
können. Oder war das beim Stricken?

von m.n. (Gast)


Lesenswert?

Kai Mauer schrieb:
> Nur mal aus Interesse: Was glaubst Du, warum ich den Link zu der
> Hilfedatei angegeben habe?

Das weiß ich doch nicht. Ich merke nur, daß Bascom-Fans wohl recht 
empfindliche Gemüter haben. Vielleicht ist das auch eine Vorbedingung.

Kai Mauer schrieb:
> Damit Du (immer noch falsch) behauptest,
> daß der MK2 als STK500 angesprochen werden soll?

Wenn ich STK500 wähle, funktioniert die Programmierung. Warum, das ist 
mir mittlerweile egal ;-)

von Haro (Gast)


Lesenswert?

drama schrieb:
> Blöde Frage, aber bei welchen (Mainstream)-MCUs ist das nicht der Fall?

Bei so gut wie allen Automotive z.B.
Flug- und Medizintechnik wirds ähnlich sein.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

m.n. schrieb:
> Daß man bei einem AVR ISP MKII ein STK500 wählen muß, erschließt sich
> mir allerdings nicht :-(

Du kannst mit STK500.EXE prima einen AVRISP MkII ansprechen, unabhängig 
von der benutzten Programmierumgebung (allerdings braucht man MS 
Windows). Hier mal ein Drag&Drop Batchfile, welches einen AT89S52 
programmiert:
1
set prog="C:\xasm\AVR\STK500\Stk500.exe"
2
%prog% -cUSB -dAT89S52 -e -if%1 -pf -vf
3
pause
Da lässt du das Hexfile rauffallen, und der MC wird programmiert.

: Bearbeitet durch User
von Rainer U. (r-u)


Lesenswert?

Ich finde es gut, das Bascom inkl. Compiler und Simulator auch unter 
Linux (mit Wine) funktioniert. Zum Brennen muss man halt avrdude 
verwenden.

Geht das mit AVR Studio auch, oder ist man da imer noch an MS gebunden?

Inline Assembler nutze ich auch, wenn's sehr schnell gehen muss. UNd 
dank Simulator sieht man auf den Takt genau und für jede Programmzeile, 
wie das Programm nachher läuft, wo er die Variable im Ram hinschreibt, 
wie die Register belegt sind etc.

Ist mir "ernsthaft" genug. ;-)

: Bearbeitet durch User
von Cyblord -. (cyblord)


Lesenswert?

Rainer, lern erstmal den Unterschied zwischen IDE und Toolchain bevor du 
dich in Diskussionen um Bascom, C und Assembler stürzt.

Die avr-gcc Toolchain um AVRs in C zu programmieren gibts natürlich auch 
für Linux. Das brauchts kein Wine. Und Eclipse läuft da auch nativ. Das 
Atmel Studio hat damit wenig zu tun.

Aber die Tatsache dass Bascom nur auf Windows oder eben in Wine läuft, 
als pro-Argument für Bascom herzunehmen, weil es so toll unter Linux 
läuft, dazu gehört schon Chuzpe.

: Bearbeitet durch User
von M. N. (Gast)


Lesenswert?


von Uwe R. (aisnmann)


Lesenswert?

Falk Brunner schrieb:
> @ Simpel (Gast)
>
>>Das ist die Default-Einstellung. Es geht auch individuell.
>>Optionen:   ...ON interrupt label [NOSAVE|SAVE|SAVEALL]...
>
> Wozu soll ein SAVEALL gut sein?
> NOSAVE ist bestenfalls für reine ASM-Funktionen/Interrupts gut.
> Was macht SAVE? Intelligent sichern? Warum ist DAS nicht der
> Standardwert?

SAVE ist der Standardwert, das hatte Simpel flasch aufgeschrieben.
.
Quelle, Bascom hilfe:
Store: This is the default and is the same as when no parameter is 
provided. The most common used registers, SREG, and RAMPZ are saved and 
restored.
Saved : SREG , R31 to R16 and R11 to R0 with exception of R6,R8 and R9.
If RAMPZ exists, it will be saved as well.

Saveall: This will save all registers that SAVE will save, but it will 
also save R12-R15. You should use this option when using floating point 
math in the ISR.

Sogesehen wird fast alles gesichert, aber man kann das eben 
beeinflussen.

bye uwe

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Uwe R. schrieb:
> Sogesehen wird fast alles gesichert, aber man kann das eben
> beeinflussen.

Beantwortet aber noch nicht die Frage, warum nicht genau das
gesichert wird, was auch in der Funktion benutzt wird.

Ich mein', so macht das jeder andere Compiler auch …

von Timm T. (Gast)


Lesenswert?

Jörg Wunsch schrieb:
> Beantwortet aber noch nicht die Frage, warum nicht genau das
> gesichert wird, was auch in der Funktion benutzt wird.

Weil Bascom blöd ist?

Ich hab mir mal mit der Testversion die Umsetzung einiger Berechnungen 
angeschaut. Danach war die Option Bascom für mich gestorben.

von Uwe R. (aisnmann)


Lesenswert?

Jörg Wunsch schrieb:
> Uwe R. schrieb:
>> Sogesehen wird fast alles gesichert, aber man kann das eben
>> beeinflussen.
>
> Beantwortet aber noch nicht die Frage, warum nicht genau das
> gesichert wird, was auch in der Funktion benutzt wird.
>
> Ich mein', so macht das jeder andere Compiler auch …

Hmm, wäre keine schlechte sache, stimmt.

Halten wir erstmal fest: die Aussage das immer alle Register gesichert 
werden ist falsch. Stattdessen werden viele gesichert, man kann es aber 
auch ganz abschalten und nur die benötigten sichern. Die muss man dann 
aber genau kennen (sollte in kritischen Assemblerfunktionen gegeben 
sein).
Ein Automatismus wäre wünschenswert und würde Zeit/Fehlerquellen sparen.
Es geht aber ganz manuell (mit Lehmgrube sozusagen ;o)).

bye uwe

von Old P. (Gast)


Lesenswert?

Nu ich oooch noch...
Wer mich kennt, der weiß, programmieren ist meine Sache nicht. 
Andererseits kommt man manchmal nicht ohne aus, also habe ich mich 
manchmal doch hingehockt und was zusammengestoppelt. Zu Z80-Zeiten war 
das noch reiner Assembler, heute erfolgreich vergessen. Als es AVRs sein 
mussten, lief mir zunächst irgendein C über den Zeh. Grottig! Lauter 
Klammern und Gedöhns, zumindest für mich zunächst unverdaulich. In einer 
Zeitschrift gab es in älteren Ausgaben einen Kurs in Bascom, der war 
didaktisch gut gemacht, also das Steckbrett vorgekramt und los. Nach ein 
paar Minuten schon die ersten Erfolge, die Befehle und die IDE 
leuchteten auf Anhieb ein....
Fazit: Die wenigen Anwendungsfälle in denen ich was programmieren 
musste, habe ich erfolgreich mit Bascom erschlagen! Was will ich als 
Amateur also mehr? Ob nun Assembler oder C oder weis der Geier, das wird 
alles seine Berechtigung haben. Wichtig für mich ist: Als 
Gelegenheitsprogrammierer versteh ich was da abläuft und die IDE 
erschließt sich mir. Es wird ja keiner mit vorgehaltener Tastatur 
gezwungen damit zu arbeiten. Warum aber wollen mich die C-Jünger immer 
zu ihrem Glück zwingen? Argumente wie "sauberere Code" oder bessere 
IDE sind doch eh nur vorgeschoben. Am Ende zählt: Blinkte die Kiste, 
zählt der Zähler... Nur das ist wichtig!
Zur Überschrift: Jedes Programm, für das ich mir "ne Waffel mache" ist 
für mich ernsthaft!

Old-Papa

von Pandur S. (jetztnicht)


Lesenswert?

>Beantwortet aber noch nicht die Frage, warum nicht genau das
>gesichert wird, was auch in der Funktion benutzt wird.
>
>Ich mein', so macht das jeder andere Compiler auch …

Nein tut er nicht. Banale Ausrede der Compilerbauer: Es kann nicht 
vorhergesehen werden was Funktionsaufrufe alles mit sich ziehen.
Denn es gibt Leute, die spulen umfangreiche Switch/Case Konstrukte ab. 
Das muss dann nicht zwingend lange Ausfuehrungszeiten nach sich ziehen, 
ist aber nicht mehr mit einem Ein- oder Zweipasscompiler machbar. Da 
waer dann Backtracking angesagt.

Ich haett auch erwartet, bei einer kurzen ISR, in der vielleicht ein 
Zaehler incrementiert, ein Flag gesetzt, ein Register geladen wird, 
waere es moeglich nach Bedarf zu sichern.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Jetzt Nicht schrieb:
> Banale Ausrede der Compilerbauer: Es kann nicht vorhergesehen werden was
> Funktionsaufrufe alles mit sich ziehen.

Dass man bei Funktionsaufrufen alle Register sichern muss, die
per ABI als durch den Aufrufer zu sichernd festgelegt sind, ist
logisch.  Aber ob es überhaupt einen Funktionsaufruf gibt, kann
ein Compiler natürlich schon merken, und wenn es keinen gibt, dann
hat er einen guten Überblick, welche Register er selbst tatsächlich
zerstört.

> Denn es gibt Leute, die spulen umfangreiche Switch/Case Konstrukte ab.
> Das muss dann nicht zwingend lange Ausfuehrungszeiten nach sich ziehen,
> ist aber nicht mehr mit einem Ein- oder Zweipasscompiler machbar.

Das ist 'ne lahme Ausrede.  Ein GCC ist auch ein Einpasscompiler.
Beweis:
1
% avr-gcc -Os -x c -mmcu=atmega8 -o - -S -
2
#include <avr/io.h>
3
#include <avr/interrupt.h>
4
uint16_t adcval;
5
6
ISR(ADC_vect)
7
{
8
  adcval = ADC;
9
}
10
^D
11
        .file   ""
12
__SP_H__ = 0x3e
13
__SP_L__ = 0x3d
14
__SREG__ = 0x3f
15
__tmp_reg__ = 0
16
__zero_reg__ = 1
17
        .text
18
.global __vector_14
19
        .type   __vector_14, @function
20
__vector_14:
21
        push r1
22
        push r0
23
        in r0,__SREG__
24
        push r0
25
        clr __zero_reg__
26
        push r24
27
        push r25
28
/* prologue: Signal */
29
/* frame size = 0 */
30
/* stack size = 5 */
31
.L__stack_usage = 5
32
        in r24,0x4
33
        in r25,0x4+1
34
        sts adcval+1,r25
35
        sts adcval,r24
36
/* epilogue start */
37
        pop r25
38
        pop r24
39
        pop r0
40
        out __SREG__,r0
41
        pop r0
42
        pop r1
43
        reti
44
        .size   __vector_14, .-__vector_14
45
        .comm   adcval,2,1
46
        .ident  "GCC: (GNU) 4.7.2"
47
.global __do_clear_bss

(Mir geht es hier ausdrücklich nicht um die Sprache C, sondern
um das Verhalten des Compilers.  C als Eingabe dient nur als
einfach zu handhabendes Beispiel.)

Der Compiler liest direkt von der Standardeingabe, da kann er also
nicht zweimal darüber iterieren, denn nachdem er ein Zeichen gelesen
hat, ist es unwiederbringlich weg aus dem Eingabestrom.

Trotzdem kann er die benutzten Register optimieren.  (r0/r1 optimiert
er nicht, sondern das ist eine Art Standard-Prolog/Epilog, durch die
Sonderrolle dieser Register für den AVR-GCC bedingt.  Ja, das ist
verschenktes Optimierungspotenzial.)

Wenn GCC jetzt ein BASIC-Frontend hätte, könnte er auch in dieser
Sprache vergleichbares Optimierungspotenzial anbieten, denn die
Optimierung läuft ja viel weiter hinten ab.

Schicke Gerätebibliotheken kann man auch durchaus unabhängig von der
benutzten Programmiersprache anbieten; die Arduino-Umgebung ist der
beste Beweis dafür (und sicher auch ein Grund, warum diese Plattform
bei vielen beliebt ist).

von M. N. (Gast)


Lesenswert?

Nachdem ich ein wenig mit BASCOM gespielt habe, wird schon klar, daß die 
Möglichkeiten doch recht einschränkend sind.

Für den Einstieg ist es in Ordnung, da man schnell kleine Erfolge 
erzielt. Und wer dabei bleibt, weil er keine besonderen Anforderungen 
hat, soll es machen. Aber wer einmal auf den C-Zug aufgesprungen ist, 
holt sich an vielen Stellen blaue Flecke ;-)

Mich hatte interessiert, wie es mit der 64-Bit double-Unterstützung 
aussieht; das wäre für einige Berechnungen ein Vorteil gegenüber 
AVR-GCC. Soweit ich aber sehe, gibt es dafür kein PRINT und auch kein 
formatierendes PRINT USING.
Die Geschwindigkeit für mein Beispielprogramm ist gut; aber im Vergleich 
dazu ist das Kompilat vom AVR-GCC etwa Faktor 2,5 schneller.

Die BASIC-Interpreter vor 30-40 Jahren hatten den Nachteil, daß 
Syntaxfehler erst zur Laufzeit erkannt wurden, was sehr ärgerlich sein 
konnte. BASCOM als Compiler vermeidet dies, was wiederum für einen 
Anfänger hilfreich ist.

Wenn es um die Frage "BASIC oder nicht?" geht, würde mir eher ein 
Interpreter auf einem größeren µC gefallen, wie es hier diskutiert wird: 
Beitrag "PIC 32 schneller Basic Interpreter"
Dabei geht es dann nicht um schnellste Ausführungszeit, sondern um eine 
flexible Programmentwicklung im Zielsystem. Dies wird auch dadurch 
ermöglicht, daß die auszuführenden Programme im RAM liegen.

Mein Fazit: wer mit BASCOM spielen will, soll es tun. Und auch, wer 
größere Programme als 4K benötigt, kann den Entwicklern ruhig ein paar 
Euro zukommen lassen und ganz wichtig:
die Voreinstellungen für die Stacks kräftig erhöhen!
Wer aber an die Grenzen stößt, sollte sich nicht damit abplagen, diese 
zu umschiffen, sondern auf C umsteigen.

von Robert L. (lrlr)


Lesenswert?

> Ernstzunehmende Programme in BASCOM

ich hab nicht mal MINI code-beispiele von irgnedwelchen Programmen 
gefunden
(immer nur mini-turtorials die kaum über blink.bas hinausgehen..)

kann mir wer helfen, würde mir bascom gerne anschauen

die kombi, BASCOM und Arduino klingt theoretisch ja recht interessant, 
z.b. für Kinder zum Anfangen ?!

(für mich ist BASIC immer wesentlich kompliziert gewesen als alles 
andere, z.b. musste ich mal Windows Scripts (WSH oder auch Excel) in 
Basic schreiben/erweiter .. z.B. WANN man da genau Klammer setzten 
muss,bei funktionsaufrufen, und wann nicht, ist mir bis heute unklar...)

: Bearbeitet durch User
von Paul B. (paul_baumann)


Lesenswert?

Robert L. schrieb:
> kann mir wer helfen, würde mir bascom gerne anschauen

Ja, Du Dir selbst, indem Du dort hingehst:


Hier ein Link
zur Codesammlung von MCS-Electronic (Hersteller von Bascom). Dort
kannst Du auch ziemlich umfangreiche und anspruchsvolle Aufgaben-
lösungen finden:

http://www.mcselec.com/index.php?option=com_conten...

Edith sagt: Die Seite läßt keine tiefen Links zu, Du kannst über
Applikation-> Bascom AVR zu der Quelltexctsammlung gelangen.

: Bearbeitet durch User
von Bernd T. (bastelmensch)


Lesenswert?

Falk Brunner schrieb:
> Wenn es etwas flotter sein
> soll (Interrupts), ist der BASCOM-Compiler nicht so toll, der sicher mal
> pro forma ALLE Register.

Was man aber abschalten kann.

Ich frage mich wirklich warum dieses Null-Argument immer wieder 
auftaucht.
Aber daran kann man wenigstens leicht erkennen wer sich wirklich damit 
befasst hat.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Bernd T. schrieb:
> Aber daran kann man wenigstens leicht erkennen wer sich wirklich damit
> befasst hat.

An deinem Kommentar erkennt man dafür, dass du den Rest des Threads
nicht gelesen hast …  Nein, ein „Null-Argument“ ist das nun nicht
gerade.

von Robert L. (lrlr)


Lesenswert?

danke Paul Baumann
diese Seite hab ich zwar per google auch ein paar mal entdeckt, aber 
nicht ernst genommen/ignoriert (aufgrund der Optik)

auch mit deiner Anleitung viel es mir schwer dort, Beispiele zu finden 
(habs dann aber geschafft, auch wenn einige "russich" kommentiert sind, 
oder zumindest mein Text-Editor kuriose Zeichen anzeigt?!)


egal: mir (Programmieren, Pascal, C usw) scheint das ganze extrem 
"kompliziert" zu sein (in mehrerlei Hinsicht)
da Frage ich mich ernsthaft wie ein "Anfänger" da was zustande bringen 
soll..

die Zielgruppe scheint eher "Lötkolbenspezialisten" zu sein, die (noch) 
nicht Programmieren können...

Seit es Arduinos gibt, kannst das imho getrost vergessen..

von Paul B. (paul_baumann)


Lesenswert?

Robert L. schrieb:
> da Frage ich mich ernsthaft wie ein "Anfänger" da was zustande bringen
> soll..
>
> die Zielgruppe scheint eher "Lötkolbenspezialisten" zu sein, die (noch)
> nicht Programmieren können...

Du widersprichst Dir gleich im darauffolgenden Satz, merkst Du das 
nicht?

Robert L. schrieb:
> Seit es Arduinos gibt, kannst das imho getrost vergessen..

Das kannst Du vergessen, daß Du das vergessen kannst.
;-)

Die "Arduino-Sprache" ist auch ein C-artiges Ding. Wer das nicht will,
der benutzt weiter Bascom. Schon alleine die Bedienoberfläche ist viel
komfortabler und auch ziemlich umfangreich. Damit kann sich die Arduino-
Oberfläche nicht messen.

MfG Paul

von Falk B. (falk)


Lesenswert?

@ Paul Baumann (paul_baumann)

>Die "Arduino-Sprache" ist auch ein C-artiges Ding.

Es IST einfaches, im Sprachumfang reduziertes C++. Wobei niemand 
gehindert wird, mehr zu nutzen, der Compiler dahinter kann es (99,9% der 
Anwender allerdings nicht, ich auch nicht).

: Bearbeitet durch User
von Robert L. (lrlr)


Lesenswert?

> Damit kann sich die Arduino-
>Oberfläche nicht messen.

findest?

http://www.visualmicro.com/page/Arduino-for-Atmel-Studio.aspx

;-)


>Du widersprichst Dir gleich im darauffolgenden Satz, merkst Du das
>nicht?

ja aber auch nein:
ich implizierte, dass sich inzwischen auch der 
"Lötkolbenspezialist"/Programmieranfänger es nicht selber schwer machen 
wird und einen  "großen" µC verwenden und einen Haufen "Krempel" 
rundherum löten wird
wenn er einen auch nicht größeren Arduion Pro/micro/nano/mini nehmen 
kann und dort  (s)einen Haufen "Krempel" rundherum lötet...

von Old P. (Gast)


Lesenswert?

Hallo ich kann einigermaßen mit einem Fahrrad (Bascom) umgehen. Warum 
soll ich unbedingt auf ein Einrad (C..) umsteigen? Klar, das Einrad ist 
viel kompakter, man kann unwahrscheinliche Kunststücke machen, sogar auf 
der Stelle drehen und und und. Aber das Ganze muss man auch erst lernen. 
Und ist das alles notwending, wenn ich nur von der Kneipe nachhause 
möchte?
Beispiele hinken ja immer, verdeutlichen aber auch ;-)

Old-Papa

von Robert L. (lrlr)


Lesenswert?

BASCOM: rickshaw
C: fahrrad

noch fragen...


ernsthaft: ICH schreibe z.B: C Code auch einfach so (quasi "Pascal 
ähnlich), dass ICH ihn wieder leichter lesen kann, und lasse viele 
"Features" absichtlich aus ..
das was ich bisher in BASCOM gesehen hab, war mehr als kryptisch ..

anderen Code lesen, muss ein "Anfänger" eh nicht
und ob das bei den ASM libraries von Bascom einfacher ist??

: Bearbeitet durch User
von Paul B. (paul_baumann)


Lesenswert?

Robert L. schrieb:
> findest?

Ja, das finde ich.

Robert L. schrieb:
> ich implizierte, dass sich inzwischen auch der
> "Lötkolbenspezialist"/Programmieranfänger es nicht selber schwer machen
> wird und einen  "großen" µC verwenden und einen Haufen "Krempel"
> rundherum löten wird
> wenn er einen auch nicht größeren Arduion Pro/micro/nano/mini nehmen
> kann und dort  (s)einen Haufen "Krempel" rundherum lötet...

So, implizierst Du...

Es ist auch möglich jedweden Arduino aus Bascom heraus zu programmieren.

Aber gut: Ich merke, daß Du Recht haben willst und siehe da -Ich gebe
Dir Recht.

Ja, weil ich alt genug bin, um einzusehen, daß man Niemanden von seiner
einmal gefassten Ansicht abbringen kann.

MfG Paul

von Yalu X. (yalu) (Moderator)


Lesenswert?

Old Papa schrieb:
> Hallo ich kann einigermaßen mit einem Fahrrad (Bascom) umgehen. Warum
> soll ich unbedingt auf ein Einrad (C..) umsteigen?

Wenn Bascom ein Fahrrad ist, müsste dann C nicht eher ein Motorrad sein?

Denn:

- Ein Motorrad ist schneller als ein Fahrrad.

- Wenn man mit dem Motorrad halbwegs umgehen kann, ist es auch weniger
  anstrengend.

- Als Fahranfänger wird man das Motorrad ständig umschmeißen und darüber
  fluchen, dass es so schwer wieder aufzustellen ist.

- Wer noch nie Motorrad gefahren ist, sollte erst einen Blick ins
  Handbuch werfen, um danach Dinge wie Kupplung und Schaltung so
  bedienen zu können, dass sie nicht gleich kaputt gehen.

- Fahrfehler haben auf dem Motorrad meist schlimmere Folgen als auf dem
  Fahrrad.

von M. N. (Gast)


Lesenswert?

Das Programm 'reziproker Frequenzzähler mit BASCOM-AVR' habe ich in zwei 
Stufen optimiert (siehe Codesammlung). Zunächst wurden nur die Register 
reduziert, die beim Interrupt gerettet werden, was schon eine deutliche 
Geschwindigkeitssteigerung zeigte.

Im zweiten Schritt habe ich dann die Interruptroutinen komplett in 
Assembler geschrieben, was recht einfach umzusetzen war, da auf die 
globalen Variablen sehr einfach zugegriffen werden kann.
Die maximale Eingangsfrequenz erhöhte sich insgesamt von ursprünglich 
100 kHz auf nun > 600 kHz, was ich noch skeptisch prüfen werde, aber 
tatsächlich zu funktionieren scheint.

Damit sieht BASCOM ganz gut aus!

von Kai M. (kai-m)


Lesenswert?

ernstzunehmende Programme kann man in jeder Sprache schreiben.

Da ich von Python und anderen Sprachen verwöhnt war, hatte ich beim 
Beginn mit Mikrocontrollern keinen Bock auf das damals noch nötige 
Zusammensuchen von GCC+IDE+libs. Stattdessen habe ich mit Bascom 
angefangen und bin dabei hängen geblieben, siehe: 
http://www.photonenhuette.de -> Anlage -> Programm.

Bascom hat den Vorteil, das es viele Funktionen mitliefert, andererseits 
ist Basic nicht gerade förderlich um größere Projekte brauchbar zu 
modularisieren

von Ehrhardt B. (ehbal)


Lesenswert?

alt geworden schrieb:
> Jetzt nicht mehr! Ein Forum das nicht mal mehr für Gäste öffentlich
> lesbar ist taugt nicht. Mein Interesse an LunaAVR ist damit auf null
> erloschen. Schade drum!

ich begreife hier nicht wieso man sich dann nicht einfach einen 
Instant-Account bei gmail o.Ä. macht und sich anmeldet wenn es dir denn 
sooo wichtig ist. Diese ganze Argumentation ist absoluter Nonsense.

Ich betreibe auch ein Forum für unseren Verein und wenn nicht 
sicherzustellen ist das man jeden Tag auf irgendwelche juristisch 
problematische Beiträge prüfen kann, muss man das Ganze einfach zur 
eigenen Sicherheit nicht-öffentlich machen. So habe ich das dann auch 
gemacht. Die entsprechende Gesetzgebung und die Pflichten dazu hast du 
demnach noch nicht zu Gesicht bekommen wie mir scheint.

Das es genügend Bekloppte gibt (MWS wird z.B. komplett 
ignoriert/ausgeblendet, ich will gar nicht wissen was die Tütensuppe 
schreibt), sieht man ja an diesem Forum. Die Moderatoren haben hier 
reichlich zutun.

: Bearbeitet durch User
von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Ehrhardt Balstein schrieb:
> muss man das Ganze einfach zur eigenen Sicherheit nicht-öffentlich
> machen.

Das mag für eine kleine geschlossene Benutzergruppe wie deinen Verein
passen, aber für etwas wie LunaAVR, bei der du ohnehin nicht mehr
jeden persönlich kennst, ist das Augenauswischerei. Wenn ich mich
(deine Argumentation) mit einem Instant-Account da drumrum mogeln
kann, dann kann man den Quatsch auch sein lassen, und jeden das
Forum dort lesen lassen.

von Ehrhardt B. (ehbal)


Lesenswert?

> Wenn ich mich
> (deine Argumentation) mit einem Instant-Account da drumrum mogeln
> kann, dann kann man den Quatsch auch sein lassen, und jeden das
> Forum dort lesen lassen.

 Eine notwendige Anmeldung zum Lesen ist juristisch "nicht öffentlich". 
Nehmen wir an irgendein Fanatiker kommt auf die Idee hier in das Forum 
einen Beitrag zu schreiben der zu einem Anschlag aufruft. Wenn der 
Betreiber des Forums wie es in meinem Fall nur ich bin nicht 
schnellstens darauf reagieren kann, kann man sich recht schnell 
mitstrafbar machen. Hier macht es dann den entscheidenden Unterschied ob 
das Ganze öffentlich war oder nicht und das entscheidet dann auch im 
schlimmsten Fall ob man kriminalisiert wird oder nicht.

Nun ist dieses Beispiel natürlich überzeichnet und mag am Ende des 
Spektrums liegen, aber die Abstufung bis zu "harmlos" ist sehr breit. 
Nicht jeder Forenbetreiber hat die Zeit und Muße und einen Wald voller 
Moderatoren. Ich bin auch seit Jahren erstaunt das man z.B. hier 
immernoch als Gast posten darf. Irgendwann wird den Moderatoren 
vieleicht dann doch mal was durch die Lappen gehen, was sicher einen 
Lernprozess zur Folge hätte. Zu wünschen ist es dem Betreiber nicht.

Ich kann mir gut vorstellen, das es bei anderen Foren ähnlich gelagert 
ist wie bei meinem Vereinsforum.

von Cyblord -. (cyblord)


Lesenswert?

Frank Esselbach schrieb:
> Ob ein Programm "ernsthaft" ist oder nicht, macht sich nicht an der
> Programmiersprache fest. Nur weil eine bestimmte IDE es erlaubt,
> unübersichtlich und liederlich zu progrsammieren, muss man das ja nicht
> so machen.

Was hat jetzt genau die IDE damit zu tun? Es liegt wenn, dann schon an 
der Sprache selbst. Die IDE tut da nichts zu.

Es kommt darauf an, was man von der Sprache erwartet. Abgesehen vom 
abgedroschenen "es liegt alles nur am Programmierer", was so natürlich 
auch nicht stimmt, bieten verschiedene Sprachfamilien, verschiedene 
Features.

Dabei ist der eigentliche Syntax (vulgo "Syntaktischer Zucker") völlig 
egal. Die höheren Konstrukte wiederrum nicht.

BASIC Dialekte bietet vor allem eines, eine sprechende Syntax. D.h. viel 
tippen für wenig Substanz. Dafür sieht der Code vielleicht für Anfänger 
schöner aus, die Syntax lässt sich leichter merken. Es fehlen 
kompliziert anmutende Sonderzeichen wie geschweifte Klammern oder 
Semikolons. Das alles ändert Objektiv nichts, hat aber subjektiven 
Einfluss und wird als leichter empfunden.

Aber gerade BASCOM offenbart einige große Schwächen. Es sind (oder waren 
zumindest) nicht beliebig komplexe Ausdrücke möglich. Und das ist ein 
No-Go für eine ernstzunehmende Programmiersprache. Dazu kommen eigene 
(zusammengesetzte) Datentypen, die praktisch nicht existent sind. Das 
sind nur 2 Punkte einer ganzen Liste.
Ein erfahrener Programmierer erkennt hier, dass man so für viele 
Probleme keine elegante oder saubere Lösung realisieren kann, egal wie 
gut man ist.

Die vielgescholtene Pointerarithmetik von C, offenbart dem Programmierer 
auf elegante Weise viele Möglichkeiten ohne dafür viel Syntax aufwenden 
zu müssen. Es lassen sich viele Konzepte (auch OO) recht gut umsetzen 
ohne dass die Sprache selbst dafür Konstrukte enthalten muss. Bei allen 
Schwächen die nackte Pointer mitbringen (no seatbelts), die aber für 
eine hardwarenahe Entwicklung dennoch wünschenswert sind.

Fazit:
"Ernstzunehmend" ist sehr subjektiv und nicht zu definieren. Wem der 
BASIC Syntax gefällt, und nicht an die Grenzen der Sprache stößt (weil 
die Programme einfach bleiben oder er es nicht anders kennt), der ist 
mit BASCOM glücklich.
Wer besseres kennt, der erkennt zu schnell den Käfig den BASCOM um das 
eigene Programm errichtet.

von Timm T. (Gast)


Lesenswert?

Cyblord -. schrieb:
> Die vielgescholtene Pointerarithmetik von C, offenbart dem Programmierer
> auf elegante Weise viele Möglichkeiten ohne dafür viel Syntax aufwenden
> zu müssen.

Ja, wunderbar. Diesem tollen C haben wir so ziemlich sämtliche 
Einfallstore zu verdanken, die mit Buffer-Overflows, Pointern, zu langen 
Strings usw. in den letzten Jahren aufgetreten sind. Weil dieses tolle C 
sich zu fein ist, darauf zu prüfen. Bzw. weil die Programmierer glauben, 
daß sie sooo klever sind und keine Prüfung brauchen.

Ich greif mir immer an den Kopf, wenn ich von wieder mal neu entdeckten 
"Bugs" lese, die auf diese Weise einen Zugriff auf den Rechner erlauben. 
Was unter Basic oder Pascal überhaupt nicht möglich wäre, weil da 
einfach sauberer deklariert und geprüft wird, und solcher Dreck wie in C 
von vornherein ausgeschlossen ist.

Aber ist ja cool und 1337, den Code so unübersichtlich wie möglich zu 
machen. Und Bounds prüfen ist was für Weicheier.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Timm T. schrieb:

> Ja, wunderbar. Diesem tollen C haben wir so ziemlich sämtliche
> Einfallstore zu verdanken, die mit Buffer-Overflows, Pointern, zu langen
> Strings usw. in den letzten Jahren aufgetreten sind.

Meinst du, das wäre bei den alten Assemblerprogrammen (für deren
Ablösung C letztlich verantwortlich ist) besser gelaufen?

> Was unter Basic oder Pascal überhaupt nicht möglich wäre, weil da
> einfach sauberer deklariert und geprüft wird,

Auch beim typischen Pascal-Programm wurde das bounds checking für
gewöhnlich nur während der Entwicklungsphase benutzt, aber bei
Auslieferung aus Performancegründen deaktiviert.  Damit bist du dann
kaum besser dran als bei C.  Wenn die Bugs schon während der
Entwicklung aufgetaucht wären, dann hätten sie wohl auch die von dir
gescholteten C-Programmierer von vornherein beseitigt.

Inwiefern BASIC-Dialekte vie Bascom, um das es hier ja geht, in der
Tat noch Laufzeit-Boundarychecks machen, entzieht sich meiner Kenntnis.

von Cyblord -. (cyblord)


Lesenswert?

Timm T. schrieb:
> Aber ist ja cool und 1337, den Code so unübersichtlich wie möglich zu
> machen. Und Bounds prüfen ist was für Weicheier.

Hmm also ich sprach von "elegantem Code". Wie du da jetzt auf 
unübersichtlich kommst verstehe ich nicht.
Billige Polemik? Ja ich glaube so ist es.

Und Boundary Prüfung zur Laufzeit bläht dir viel Code in dein Projekt. 
Wie soll das bei kleinen Controllern gehen? Das will man meist nicht. 
Natürlich wäre es schön zu haben, bei einem ausgewachsenen PC Programm 
das mit zig MB Binarys daherkommt und sich mal schnell 500MB Speicher 
reserviert sieht das vielleicht anders aus. Aber dann nimmt eine andere 
Sprache, welche die Sicherheitsfunktionen bietet, die man will. C bietet 
sie nicht. Aber das ist Absicht.

von Timm T. (Gast)


Lesenswert?

Jörg W. schrieb:
> Auch beim typischen Pascal-Programm wurde das bounds checking für
> gewöhnlich nur während der Entwicklungsphase benutzt, aber bei
> Auslieferung aus Performancegründen deaktiviert.

Bei welchen Anwendungen ist den ein Check der Bounds wirklich so 
performancefressend, daß man den deaktivieren müßte? Die meiste Zeit 
wartet der Rechner doch eh auf den Benutzer bzw. auf neue Daten.

Cyblord -. schrieb:
> Und Boundary Prüfung zur Laufzeit bläht dir viel Code in dein Projekt.
> Wie soll das bei kleinen Controllern gehen? Das will man meist nicht.

Bitte? Ich mache auf dem AVR immer Bound Checking bei Benutzereingaben 
oder Daten, die über Uart reinkommen. Das ist halt so. Meistens sind 
sowieso 20% eigentliche Aufgabe des Controllers und 80% User-Interface, 
Display, Eingabe und Uart. Da kann ich mir die paar "wenn kleiner, 
begrenze auf Minimum" und "wenn größer, begrenze auf Maximum", oder 
"schreibe in Ringbuffer, wenn Buffer 90% voll, deaktiviere Uart" auch 
noch leisten, und muß mich dafür nicht mit ominösen Programmfehlern 
durch überschriebene Speicherbereiche rumschlagen.

Dafür hab ich hier eine sauteure Kläranlagensteuerung, die 
vorschriftsmäßig Aktionen (Neustart, Strom weg, Pumpenfehler...) 
protokolliert. Dabei aber regelmäßig die Datumsangaben verwürfelt, weil 
der Programmierer anscheinend zu faul war, einen Plausibilitätscheck des 
Datums zu machen. Das verkaufen die dann aber als "mit Protokollfunktion 
gemäß gesetzlichen Vorgaben".

Cyblord -. schrieb:
> Aber dann nimmt eine andere
> Sprache, welche die Sicherheitsfunktionen bietet, die man will.

Nimmt man anscheinend nicht, sonst würde es nicht regelmäßig darauf 
beruhende gravierende Sicherheitslecks geben. Das fängt schon mit der 
bescheuerten Idee der nullterminierten Strings an...

von Cyblord -. (cyblord)


Lesenswert?

Timm T. schrieb:
> Bitte? Ich mache auf dem AVR immer Bound Checking bei Benutzereingaben
> oder Daten, die über Uart reinkommen.

Das kannst du doch nicht mit einem eingebauten Boundary Check für alle 
Arrays vergleichen... Dazu braucht man komplexe Datenstrukturen für 
jedes Array, inkl. Funktionen die darauf arbeiten. Bei JEDEM Zugriff. 
Heute ist ein Array nichts anderes als ein Pointer an das 1. Element. 
Ich denke du übersiehst den Aufwand deiner eigenen Forderungen nicht 
wirklich.
Hast du mal näher mit solchen Konzepten auf Compiler bzw. Laufzeitbasis 
beschäftigt?

Mir kommen solche Forderungen immer etwas blauäugig vor. Als würde man 
den Tischlerhobel kritisieren, weil der so scharf ist und außerdem kann 
man damit ganz üble Macken in die Möbel machen. Man benötigt manchmal 
auch derbes Handwerkszeug (C) für manche Aufgaben oder will es nutzen, 
und nicht nur die große schwere teure CNC Maschine.

> Nimmt man anscheinend nicht, sonst würde es nicht regelmäßig darauf
> beruhende gravierende Sicherheitslecks geben. Das fängt schon mit der
> bescheuerten Idee der nullterminierten Strings an...

Auch hier müsste sonst eine spezielle String-Datenstruktur in der 
Sprache eingebaut sein. Aber du kannst doch eine solche Struktur 
einführen in deinen Projekten. Nur warum muss man das alles zwingend in 
die Sprache selbst reinpacken?

C ist hardwarenah geplant. No Seatbelts ist ein Feature. Keine 
Einschränkung. Auf kleinen Controllern machen deine Sicherheitskonzepte 
keinen Sinn. Der Code dafür würde manchen AVR Flash bereits sprengen.

: Bearbeitet durch User
von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Timm T. schrieb:
> Ich mache auf dem AVR immer Bound Checking bei Benutzereingaben oder
> Daten, die über Uart reinkommen.

Dann schau dir doch bitte mal die Bugs an, die du kritisiert hast.

Nein, an einer Überprüfung externer Eingaben liegt das in aller
Regel nicht.  Das sind deutlich subtilere Fallen, in die da getappst
wird.

Keiner behauptet, dass C der Stein der Weisen sei.  Aber ehrlich, wenn
wir außer C nur BASIC gehabt hätten, dann würden Betriebssysteme wohl
auch heute noch in Assembler geschrieben werden, so wie es vor C und
UNIX gang und gäbe war.  Ob das nun sicherheitsmäßig wirklich besser
gewesen wäre, wage ich mehr als zu bezweifeln.

von Timm T. (Gast)


Lesenswert?

Cyblord -. schrieb:
> Bei JEDEM Zugriff.
> Heute ist ein Array nichts anderes als ein Pointer an das 1. Element.

Doch ja, natürlich. Das Array hat eine Größe, und es wird geprüft, ob 
die angesprochene Adresse innerhalb des Arrays liegt. Wenn nicht, gibts 
schlimmstenfalls einen Programmfehler, aber es wird nicht außerhalb des 
Arrays geschrieben. Das machen Basic und Pascal genau so.

Das kann man bewußt umgehen, wenn man mehr Peformance will. Aber dann 
muß man wissen, was man tut, und macht das nicht "aus Versehen" wie bei 
C.

Jörg W. schrieb:
> Nein, an einer Überprüfung externer Eingaben liegt das in aller
> Regel nicht.

Dochdoch, wenn ein Webbrowser / Mediaplayer zuläßt, daß eine Webadresse 
/ ein Filename so lang ist, daß ein Teil des Strings im ausgeführten 
Speicherbereich landet, und darüber dann Zugriff auf den Programmbereich 
erfolgt, dann sind das genau solche fehlenden Eingabechecks.

Oder wenn ein Programm mehr Daten einliest, als die Datei eigentlich 
lang ist, mit den gleichen Folgen.

Jörg W. schrieb:
> Aber ehrlich, wenn
> wir außer C nur BASIC gehabt hätten, dann würden Betriebssysteme wohl
> auch heute noch in Assembler geschrieben werden

Du solltest Dich mal von der Vorstellung verabschieden, daß Basic im 
Interpreter läuft, lahm ist und nix kann. Das stimmt schon seit 20 
Jahren nicht mehr.

von Cyblord -. (cyblord)


Lesenswert?

Timm T. schrieb:
> Cyblord -. schrieb:
>> Bei JEDEM Zugriff.
>> Heute ist ein Array nichts anderes als ein Pointer an das 1. Element.
>
> Doch ja, natürlich.
In C meine ich.

Da ist ein Array ein Pointer auf das 1. Element. Thats it. Fertig. Aus.

> Das Array hat eine Größe, und es wird geprüft, ob
> die angesprochene Adresse innerhalb des Arrays liegt. Wenn nicht, gibts
> schlimmstenfalls einen Programmfehler, aber es wird nicht außerhalb des
> Arrays geschrieben. Das machen Basic und Pascal genau so.

Ist aber zur Laufzeit mit extremem Overhead verbunden. Und bringt auf 
Controllern wenig. Was soll das Programm tun wenn es eine illegalen 
Zugriff erkennt?

>
> Das kann man bewußt umgehen, wenn man mehr Peformance will. Aber dann
> muß man wissen, was man tut, und macht das nicht "aus Versehen" wie bei

Nein im Gegenteil. Man muss die Prüfung bewusst EINBAUEN. Mit viel Code.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Timm T. schrieb:

> Aber dann
> muß man wissen, was man tut, und macht das nicht "aus Versehen" wie bei
> C.

Das wesentliche Manko an C ist es, die Längeninformation des Arrays
nicht mit durchzureichen, sodass die Implementierung einer solchen
Prüfung nicht problemlos möglich ist.

> Jörg W. schrieb:
>> Nein, an einer Überprüfung externer Eingaben liegt das in aller
>> Regel nicht.
>
> Dochdoch, wenn ein Webbrowser / Mediaplayer zuläßt, daß eine Webadresse
> / ein Filename so lang ist, daß ein Teil des Strings im ausgeführten
> Speicherbereich landet,

Du solltest dich mal davon verabschieden, dass nach derart primitivem
Muster noch nennenswert was passiert.  Ja, auch sowas kommt vor, aber
das meiste sind irgendwelche race conditions oder viel subtilere
buffer overflows als die, die man mit so einer primitiven Methode
bereits hätte erkennen können.  Besonders „beliebt“ sind integer
overflows, aber gerade hier hättest du ein mächtiges Problem mit der
Performance, wenn du bei jeder Multiplikation vorab die Argumente
überprüfen willst.

>> Aber ehrlich, wenn
>> wir außer C nur BASIC gehabt hätten, dann würden Betriebssysteme wohl
>> auch heute noch in Assembler geschrieben werden
>
> Du solltest Dich mal von der Vorstellung verabschieden, daß Basic im
> Interpreter läuft, lahm ist und nix kann. Das stimmt schon seit 20
> Jahren nicht mehr.

Nichtsdestotrotz kann ich mir in BASIC beim besten Willen kein OS
vorstellen.  Da fehlen einige Features, auf die man in C von
vornherei geachtet hat, indirekte Funktionsaufrufe beispielsweise.
Hat BASIC inzwischen Datestrukturen?

Vor 45 Jahren jedenfalls (als C angetreten ist, den Assembler beim
OS abzulösen) war da wohl weit und breit nichts dergleichen, und auch
die von dir genannten 20 Jahre helfen da nicht – da waren die Messen
bereits gesungen.  Pascal war einigermaßen parallel entstanden, aber
halt als Lehrsprache, weshalb gezielte Typumwandlungen eben auch dort
fehlen.

von Karl H. (kbuchegg)


Lesenswert?

Timm T. schrieb:

> Doch ja, natürlich. Das Array hat eine Größe, und es wird geprüft, ob
> die angesprochene Adresse innerhalb des Arrays liegt.

Das kann man machen, solange man noch weiss, dass man es mit einem Array 
zu tun hat. Aber spätestens, wenn man dann mit Arrays und Funktionen 
arbeitet, ist dem in C nicht mehr so. Da verschwimmen die Grenzen. Und 
das ist ganz bewusst so gemacht worden.
Daher ist in C ein nicht gemachter Bounds Check kein vergessenes Feature 
sondern ist schlicht und ergreifend nicht möglich. Dazu müsste man die 
Sprache in wesentlichen Bereichen komplett umbauen.

> Das kann man bewußt umgehen, wenn man mehr Peformance will. Aber dann
> muß man wissen, was man tut, und macht das nicht "aus Versehen" wie bei
> C.

Sicherlich.
Wer die Tante zum Lulu gehen braucht, für den ist C die falsche Sprache. 
Hier ist schon der Entwickler gefragt, sorgfältig zu arbeiten. Das 
wiederum, da bin ich ganz bei dir, geht öfter schief als einem lieb ist.
Die Intention von C war von vorne herein keine Sprache mit 
Sicherheitsnetz sondern ein "You asked for it, you got it"

Es gibt nur 2 mögliche Auswege
* eine andere Sprache nehmen
* die 'ich kann nur 20% von C aber mehr interessiert mich nicht' 
Fraktion der Jungprogrammierer von der ernsthaften Entwicklung 
fernhalten, bis sie erwachsen geworden sind und nicht nur ihre Rechte 
sondern auch ihre Pflichten kennen, denen sie sich mit der 
Programmierung in C unterwerfen.

: Bearbeitet durch User
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
Noch kein Account? Hier anmelden.