PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Vergleich Bascom und C



jeffrey
03.12.2007, 14:29
Hallo,
es geht hier um die Vorteile/Nachteile von C gegenüber Bascom und umgekehrt.
Bisher habe ich meine AVRs immer mit Bascom programmiert, habe halt mal damit angefangen und bin dabei geblieben. Allerdings kann ich auch C, zumindest so einigermaßen, aber bisher nur für den PC verwendet. Macht es Sinn, sich in C für AVRs einzuarbeiten, und umzusteigen?
Welche Vorteile bietet C oder Bascom(Geschwindigkeit, Speicherplatz, ...)
Ht jemand erfahrung und Vergleichsmöglichkeiten von beiden?
MfG Jeffrey

Hubert.G
03.12.2007, 14:37
Das ist eine Grundsatzfrage und man kann wahrscheinlich endlos diskutieren wie z.B. hier: www.mikrocontroller.net/topic/37811#new

AlKI
03.12.2007, 14:56
Jeffrey, mir geht es genauso wie dir. ich beobachte mal den thread.

es kommt aber vlt auch darauf an, was für ein Programm/was für eine Programmzusammenstellung man nutzt. (welcher editor/compiler/linker/brenner... compiler und linker sind doch normalerweise in einem programm, oder isn linker nur beim PC nötig?)


EDIT: und ich komm an die 4kB-Grenze!

UlrichC
03.12.2007, 16:29
Ein Linker, linkt Objektdateien (also Kompilate aus dem Compiler) zusammen, und erstellt das letztendliche Binary.
Ein Linker wird bei allen Programmiersprachen eingesetzt. sogar in VB wird gelinkt.

BASCOM oder C oder gar ASM
Ist ganz einfach. Man nimmt das, womit man am ehesten sein Ziel erreicht.
Wenn BASCOM zu grobkörnig ist bzw. zu umständlich wird, bricht man runter auf C. Wenn C zu langsam wird und Codeoptimierungen erfolgen müssen gelangt man zu ASM.

Gruß,
UlrichC

UlrichC
03.12.2007, 16:35
EDIT: und ich komm an die 4kB-Grenze!
Oh ja... das geht schnell.
Auch ein Grund zu wechseln ^^

p_mork
03.12.2007, 16:49
Hallo Jeffrey!

Bei der Programmierung solltest Du grundsätzlich C/C++ verwenden, instebondere dann, wenn es um Microcontroller geht. Hier mal eine kurze Übersicht von Vor- und Nachteilen:

Vorteile BASCOM:
-leicht erlernbar
-man kann sofort loslegen
-einfach zu bedienende IDE
-große eingebaute Bibliothek mit vielen Funktionen, speziell für AVRs

Nachteile BASCOM
-riesiger Code
-langsamer Code
-man weis nie genau, was die einzelnen Funtkionen eigentlich machen
-man lernt kaum was über die Hardware

-wenn es mal keine fertige Funktion gibt, kann es zu einem echten Problem werden
-schlechter Programmierstil
-sehr begrenzte Sprachmittel
-keine Portierbarkeit
-nicht kostenlos
-in der Demo max 4k Code möglich


Vorteile C
-schneller Code
-kleiner Code
-kleiner Quelltext bei Beherrschung der Sprache
-mächtige Sprachmittel
-sehr gute Portierbarkeit
-gibts für so gut wie jede Architektur
-guter Programmierstil
-man erfährt auch etwas von der Hardware
-man weis immer, was der Controller tut
-Modulare Programmierung->Wiederverwendung von Code
-Open Source

Nachteile von C
-etwas schwer zu erlernen
-Umgang mit der IDE meist komplizierter
-teilweise schlecht lesbarer Code

Wie man sieht hat C sehr viele Vorteile gegenüber von BASCOM. Trotzdem ist BASCOM gerade bei Anfängern sehr belieb. Meistens nur deshalb, weil man nicht erst 20 Seiten lesen muss, allein um zu verstehen, wie man den Compiler bedient oder weil einem dort wegen der eingebauten Funktionen alles einfacher erscheint. Doch gerade diese Einfachheit wird später vielen zu einem Problem, wenn es b.z. für etwas keine fertige Routine gibt. Da merkt man ziemlich schnell, wie schwach die wenigen Sprachmittel von BASCOM sind. Deshalb ist C auf dauer unverzichtbar.

MfG Mark

chr-mt
03.12.2007, 16:58
Auch ein Grund zu wechseln ^^

oder sich die Vollversion von Bascom zu holen ;)


st ganz einfach. Man nimmt das, womit man am ehesten sein Ziel erreicht.
So isses.


Gruß
Christopher

UlrichC
03.12.2007, 16:59
Nachteile C
-teilweise schlecht lesbarer Code


Dat is ja nur so, wenn Anfänger am Werk sind ;-)

oberallgeier
03.12.2007, 18:00
... schlecht lesbarer Code ... is ja nur so, wenn Anfänger ... Also da muss man/ich doch protestieren. Ich kenne ein, zwei Profis, die abgrund scheusslichen Code produzieren, der kaum nachzuarbeiten ist. Präzise und professionell im Endergebnis, aber praktisch nicht pflegbar. Es gibt eben eine direkte und eine indirekte Proportionalität zwischen Erfahrung und Umfang der Kommentare und Dokumente.

Hubert.G
03.12.2007, 18:07
Scheusslichen Code, nicht nachvollziehbar, kann man immer produzieren, egal ob mit BASCOM, C oder Assembler. Das ist sicher kein Kriterium.

roboterheld
03.12.2007, 18:11
schon wieder geiz ist geil : "EDIT: und ich komm an die 4kB-Grenze!"

warum fangt ihr eigentlich mit dem hobby an, wenn ihr nur auf lau fahren wollt? manchmal kommt mir das hier vor wie im hartz-4 forum. keiner hat mehr geld. ...das ist zu teuer...können wir eine sammelbestellung machen...hast du das nicht billiger...muss wegen geldmangel meine basicbücher verkaufen...usw zum kotzen. nehmt doch ein hobby was ihr bezahlen könnt.

roboterheld
03.12.2007, 18:14
....Nachteile BASCOM
-riesiger Code
-langsamer Code
-man weis nie genau, was die einzelnen Funtkionen eigentlich machen
-man lernt kaum was über die Hardware .....

ich glaube du hast ein rad ab. kennst bascom nicht. du hast auch noch nicht mit winavr-c geproggt.

frag mal die dussels die hier mit winavr-c proggen. die lesen auch nicht die doku vom avr , die lesen auch nicht die doku von c, die wissen auch nicht was die einzelnen funktionen machen, sondern geben blind ein und wundern sich das etwas nicht geht.

Hubert.G
03.12.2007, 18:50
Es geht hier aber nicht um die Benutzer sondern um die Programmersprache, wenn ich nicht lese werde ich das eine wie das andere nicht können. Das ist das selbe wie mit dem scheusslichen Code, die Programmiersprache kann da nichts dafür.

oberallgeier
03.12.2007, 19:01
schon wieder geiz ist geil .... nehmt doch ein hobby was ihr bezahlen könnt.
Du hast sicher recht. Aber es ist wohl nicht/nicht nur die Geldausgabe - auch der Zeitaufwand. Was ich in den ersten drei Monaten schon dazugelernt habe (lernen musste) - und dauernd ein Atmel-doc runterladen, nachsehen - und dann läuft doch nix! Weil zwar alles in den doc´s steht - aber nach 20 Seiten weiss ich nix mehr vom Anfang. Und irgendwie das schlechte Gewissen, wenn man absolut simple Fehler sich von anderen korrigieren lässt (und deren Zeit verplempert). Es ist doch einfach, sich Codeschnipsel da und dort zu nehmen und zusammenzulöten. Das tu ich auch. Viel zu oft. Aber wenns mal läuft, das nochmal durchzugehen bis man es versteht - dazu gehört schon ein gewisser Hang zum Masochismus :). Ich hab den (auch) nicht immer :(. Hmmm - small and sophisticated - aber das kostet, vor allem Zeit.

AlKI
03.12.2007, 19:36
keiner hat mehr geld. ...das ist zu teuer... ...usw zum kotzen. nehmt doch ein hobby was ihr bezahlen könnt.


naja, wenns was im i-net kostenlos gibt, dann schlägt der Schwabe zu. und wenn die vollversion kostet, sucht sich der schwabe nen anderen weg. Ich glaub, ich probier jetzt mal Winavr aus...

danke für die vergleiche!

izaseba
03.12.2007, 19:53
keiner hat mehr geld. ...das ist zu teuer... ...usw zum kotzen. nehmt doch ein hobby was ihr bezahlen könnt.

Wieso ?
Bevor ich Geld für einen Kompiler ausgebe, obwohl es alternativen gibt, die mir sogar zusagen, stecke ich das Geld in die Hardware, z.B. STK500 und(oder) den Dragon, da ich das Geld besser angelegt.

Gruß Sebastian

p_mork
03.12.2007, 21:25
ich glaube du hast ein rad ab. kennst bascom nicht. du hast auch noch nicht mit winavr-c geproggt.


Doch, ich kenne BASCOM. Ich habe selbst damit angefangen, weil es mir so einfach erschien. Aber irgendwann habe ich im Netz ein gutes C++-Tutorial gefunden und so zuerst C und dann C++ und ihre Vorteile kennengelernt.

PS:
Sag bitte nicht winavr-c, das ist doch gar kein richtiges Wort. Ausserdem unterscheidet es sich nicht von "anderen Cs", der gcc kann alle möglichen Standarts komplieren.

MfG Mark

Vitis
04.12.2007, 08:54
Man kann in Bascom wie in C auch direkt mit Registern und
Flags arbeiten, die Highlevelbefehle sind nicht unabdingbar
und nicht selten kommt man für bestimmte Funktionen
auch garnicht dran vorbei, der Unterschied ist dann
lediglich die Syntax.
Was bei Bascom Resourcen frisst sind die Push und Pop
aller Register beim Interrupt, das stimmt.
Das kann man aber auch ausschalten und die Register
selber sichern wenn man möchte.
Was die Codegröße angeht sag ich mal einfach in den
raum "printf" ... da ist Bascom sparsamer.
Der größte Pferdefuß ist die Portierbarkeit auf
andere µC, aber auch dies ist relativ.
Nen Code vom ATMega8 zum AT91SAM7X oder LPC2148 zu
portieren ist auch kein Zuckerschlecken und nicht selten
kommt man doch nicht am komplett neu programmieren
vorbei.

MeckPommER
04.12.2007, 10:04
Bascom ist ... das was man draus macht. Ob der Code effizienter als C ist, ist sicherlich von Fall zu Fall verschieden. Mal ein Beispiel aus meinem aktuellen Gebastel:
Ich habe einen Atmega32 der über nur 2 Ports einen 512KB SRAM ansteuern soll. Dafür gibts 3 Latches die bla, bla, usw. ... Dadurch, das die Long-Speicheradresse ersteinmal auf die Latches verteilt werden muss, ist das natürlich ganz schön langsam. Ok. Aber zumindest die Software, die das steuert, möchte mann so schnell wie möglich haben.
1. Software mit Bascom. Schnell mal hingeschrieben, funktioniert aber langsam. 15kB pro Sekunde. Na ja.
2. Bascom optimiert, z.B. die Aufteilung der Long-Adresse mit Hilfe von Overlay-Variablen und noch einiges mehr. Funktioniert um ein Vielfaches schneller. Sehr schön, 140kB/Sek, Ziel erreicht :)
3. Assembler. Vielleicht geht das Ganze ja noch schneller. Ganz schlank und flott in Assembler. Und ? Exakt so schnell und so groß wie die optimierte Bascom-Version.

Um gute und effiziente Software zu entwickeln ist es nicht wichtig, ob es nun Bascom oder C ist. Es kommt darauf an, das man weiß, was man tut.
Ich würde niemandem empfehlen, von Bascom nach C, oder von C nach Bascom zu wechseln, solange er/sie sich in seiner Sprache wohlfühlt. Wer sich verbessern möchte, der sollte aber ruhig mal in Richtung Assember schauen.

roboterheld
05.12.2007, 18:16
....ein Atmel-doc...

einmal die atmega16.pdf runterladen fertig.

roboterheld
05.12.2007, 18:19
.....Sag bitte nicht winavr-c,.....

winavr-c

roboterheld
05.12.2007, 18:21
....Software mit Bascom. Schnell mal hingeschrieben, funktioniert aber langsam. 15kB pro Sekunde. Na ja.....

die ossis müssen noch proggen lernen, damit es schneller geht.

BlueNature
05.12.2007, 18:32
BASCOM ist an sich wenn man es genau sieht eine eigener Veruch eine leicht erlenbare Spache in die µC-Welt der AVR's zu schaffen, die Anfängern den Einstieg ohne Diplom und sonstiges ermöglicht. Für allgemeine Aufgaben steht dabei kein Problem im Weg, außer Kosten für Lizenz (Code > 4kB) und eben der weitreichenden Fertigbausteine (Libraries aus C-Seite, welche wohl viele gerne nutzen). Allgemein muß man sagen das BASIC nicht sonderlich gut angesehen ist. C ist nun eben mal die zentrale Seite der Programierung. Jeder redet eben C der was auf sich hält. Ich selbst habe es auch erlernt, aber für andere schreibe ich trotz allem gerne in BASIC und BASCOM weil es eben einen einfachen und klaren Einstieg bildet ohne größerere Hürden. Kleinere und mittelmäßige Projekte sind in meinen Augen sogar in BASCOM einfacher und zielgerichteter zu realisieren, als sich C anzutun. Wenn man es richtig anfasst, kann man auch gute Rechenleitungen herauskitzeln. Der Code ist eben nunmal mindestes so mies wie sein Programmierer. Einen wirklichen Nachteil von BASCOM will ich trotzallem nicht unterschlagen. Es handelt sich hierbei um Rechenoperationen. Diese können bei BASCOM nur 2 Operatoren enthalten ( a = b + c). C ist in dieser Situation ohne Mehraufwand eben weit überlegen (kleiner Stubs an die BASCOM-Progger-Riege)

Grüße Wolfgang

MeckPommER
05.12.2007, 20:25
@roboterheld

Das du den Sinn meines Postings nicht verstanden hast, ist nicht schlimm.

Für deinen Ossi-Kommentar jedoch gehörst du meiner Meinung nach zumindest verwarnt oder vom Board geworfen. Und das unabhängig davon, das ich Hamburger bin.

Deine gehäuften aggressiven Postings hier im Forum gehen mir mittlerweile ganz schön auf die Nerven, denn diese passen nicht in dieses ansonsten sehr freundliche und kreative Forum.

@BlueNature

Es stimmt schon, Bascom verleitet eher zu unstrukturiertem Code. Die Geschwindigkeit eines Codes hängt aber meiner Meinung nach eher mit dem dahinterbefindlichen Algorithmus zusammen und mit dem "Hineindenken" in die Hardware.
Zu den Rechenoperationen, tja, da kann ich dir nur Recht geben, das ist manchmal enorm umständlich. Hat aber auch manchmal den Vorteil, das einem bei umfangreicheren mathematischen Operationen Möglichkeiten zur Optimierung ein- und auffallen.
Wer sich größeren Projekten widmet, der kommt um eine gewisse Disziplin beim Programmieren nicht herum. Wer nicht grade Anfänger ist, der schafft dies in allen Programmiersprachen. Wer allerdings Anfänger ist, der verliert sich schneller mal in Bascom in Spaghetti-Code und hält dann möglicherweise seine vielen Kommentare im Spaghetti für Disziplin ;-)

Gruß MeckPommER

P.S.: ich stubbse mal mit :)

oberallgeier
05.12.2007, 21:04
Hallohhh ihr,


... verleitet eher zu unstrukturiertem Code. ... verliert sich schneller mal in Bascom in Spaghetti-Code und hält dann möglicherweise seine vielen Kommentare im Spaghetti für Disziplin ;-)
:) :) eine lustige Denkweise, das mit den Kommentaren und der Disziplin - die gefällt mir.
Einmal - weil ich selber viel kommentiere - so nach dem Motto: wenn ich alles aufschreibe was ich kann, dann habe ich in drei oder sechs Monaten die Hälfte von dem zur Verfügung was ich zum Nacharbeiten brauche. Zum anderen - habe ich schon immer vermutet, dass ich beim Programmieren zur Disziplinlosigkeit neige.

Mir hatte vor vielen Jahren, bei mehreren, teils sehr grossen Programmier-Projekten, das vehemente Durchsetzen von Planungdiagrammen geholfen. Damals machte ich ALLES in Fortran - bis zur Textverarbeitung und bis zur Bitmanipulation. Und hatte ziemlich gute, gestaffelt aufgebaute Nassi-Shneiderman-Diagramme als Planungsunterlagen aufgestellt. Da KANN man hinterher kaum undiszipliniert drauflosgehen. Weil dieses System es praktisch nicht zulässt. Vielleicht gibt es heute andere, bessere oder einfach (nur) modernere Planungshilfen. Aber ein bisschen Bleistift und Papier ist ja immer sehr nützlich - beim Planen, beim Programmieren - sogar beim intensiven Lesen brauche ich das (na ja, wenn die Buchstaben auf Papier stehen :) ).

Und - wenn ich zurückdenke - an die "Logische Propädeutik", die ich als Vorübung durchgegangen war - ich glaube dort stand es, dass man eigentlich nur ein einziges DIN-A4-Blatt richtig gut im Kopf behalten kann. Und die gestaffelte Konkretisierung des Problems bei den genannten Diagrammen beruht ja zum Teil darauf, und hilft ungemein. Zumindest wars bei mir so.

Ok, bei OOP muss eben UML her - aber, machen wir hier OOP ?

Ach so, ja, schon aus meinem politischen Selbstverständnis heraus - auch von mir ein Protest gegen dumme "ossi" - oderwieauchimmer- Stänkereien.

chr-mt
06.12.2007, 07:28
Hi,

Allgemein muß man sagen das BASIC nicht sonderlich gut angesehen
ist.
Das ist leider so.
Ich denke, das kommt auch oft vom Studium, wo Basic wohl grundsätzlich verteufelt wird.
Ich höre das immer wieder mal von unseren Praktikanten.
Da kommt immer wieder die alte Leier: "Goto" "Zeilennummern" "Spaghetticode" ...

C der was auf sich hält.
Ich habe das Gefühl, wenn man so manche Kommentare über Basic in anderen Foren liest, daß es eher heißen müsste:
"Der sich für was besseres hält"
Im Roboternetz ist das Gott sei Dank nicht so.


ich stubbse mal mit
Ich auch ;)
Da könnte Mark wirklich mal was machen.

Gruß
Christopher

roboterheld
06.12.2007, 10:02
....Es handelt sich hierbei um Rechenoperationen. Diese können bei BASCOM nur 2 Operatoren enthalten ( a = b + c). C ist in dieser Situation ohne Mehraufwand eben weit überlegen (kleiner Stubs an die BASCOM-Progger-Riege) ......


wenn du das in c schreibst, schau dir mal den asm-code an, er wird so geschrieben wie ich es in basic einzeln mache. es ist nicht anders. ich nehme hier die arbeit dem assembler ab. kein nachteil sondern ein vorteil.

roboterheld
06.12.2007, 10:03
...C ist in dieser Situation ohne Mehraufwand eben weit überlegen....

zwiefel...zweifel..lol....

roboterheld
06.12.2007, 10:06
.....in Spaghetti-Code und hält dann möglicherweise seine vielen Kommentare im Spaghetti für Disziplin.....

in c noch viel schlimmer.

roboterheld
06.12.2007, 10:08
.....Ach so, ja, schon aus meinem politischen Selbstverständnis heraus....

hast du überhaupt eins, ein politisches selbstverständnis, glaube nicht. du gehörst zu den radfahrern oder klinkenputzern bei vorgesetzten.

roboterheld
06.12.2007, 10:11
....auch von mir ein Protest gegen dumme "ossi" ...

gut so, die kosten zur zeit nur soli...

Vitis
06.12.2007, 14:57
@held,

also wenn du schon zitierst, lies Dir doch bitte den Thread
auch ganz durch.
er schreibt nämlich von einfachem Code und optimiertem
Code. Der optimierte, auch unter Bascom, schaft auch 140k
und mit Ost / West hat das nochmal nix aber garnix zu tun.
Ehrlich, den Ost vs. West Käse hätt ich hier nicht erwartet,
hat mich sehr enttäuscht, auch wenn ich n Wessi bin.

edit:

...auch von mir ein Protest gegen dumme "ossi" ...

gut so, die kosten zur zeit nur soli...
Du hast Dein volkswirtschaftliches Wissen wohl aus dem Kaugummiautomaten
gezogen!!
Sowas von ner niveaulosen Argumentation.
Die einen fressen für Dich wohl nur Döner,
andere vermutlich nur Pizza
und kahlköpfige verhauen Asylbewerber ... ja klar.

Im Übrigen braucht man nicht jeden halbgaren Satz
in einen neuen Beitrag zu packen um sich so sein Ranking
in die Höhe zu treiben.

PicNick
06.12.2007, 15:45
Also Ausländer (Ösi = Schluchtensche...r) sollt man sich bei inner-deutschen Konflikten eher zurückhalten.
Ausserdem ist Pebi-Held absolut Therapie-Resistent, dann wissen wir schon von füher.
However, ich drück mal auf die Verwarnung, das is ihm aber sicher eh' wurst.
Die anderen bitte ich, nicht drauf einzusteigen,

C versus Bascom hat so schon genug Potential zum streiten :-)

UlrichC
06.12.2007, 21:43
Hujui ju da gehts ja um ei nand.

Seid lieb zu einander ;-)



C versus Bascom hat so schon genug Potential zum streiten


Bascom macht richtig Spaß... wenn man an einem Abend gemütlich einen Bot zum zucken bekommt.
C macht dann noch mal richtig Spaß, weil man damit das BASCOM-Gehacke noch mal optimieren und vor allem Strukturieren kann.
Bei Bascom hängt halt eben manches in der Luft wo man keinen Einfluss drauf hat. Darum habe ich in einem Beitrag auch von Körnung geschrieben.
Grob = BASCOM
Mittel = C
Fein = ASM

Darum würde ich behaupten, das wenn man die Möglichkeiten hat beides zu machen. Kann man auch beides nutzen.
Die paar EUR zur Vollversion lohnen sich wenn man viel Programmiert. Wenn man im Jahr einmal seinen Robbi umbaut und einen Sensor mehr dranklebt ist die Diskussion ohnehin unwichtig.
Da kann man rein theoretisch auch in ASM rumhacken.. das spielt keine Rolle.
Interessant wird’s erst wenn viel in kurzer Zeit programmiert werden will.


Also da muss man/ich doch protestieren. Ich kenne ein, zwei Profis, die abgrund scheusslichen Code produzieren, der kaum nachzuarbeiten ist. Präzise und professionell im Endergebnis, aber praktisch nicht pflegbar. Es gibt eben eine direkte und eine indirekte Proportionalität zwischen Erfahrung und Umfang der Kommentare und Dokumente.

Ups.. dann muss es ja zwischen Profi und Profi vl. doch noch Unterschiede geben.
Softwareplanung und Design ist auch eine Sache die dazu gehört. Design-patterns, Reviews usw.
Ok, mit den Dokus und Kommentaren muss ich dir aber recht geben. Softwareentwickler können in der Regel nicht wirklich Schreiben. Meist auch nicht kommunizieren.. folglich würde die Schreiberei an der Stelle auch nicht viel bringen.
Wobei SW-Leutz ja schon wissen das der Programmcode die beste Doku ist ;-)

Wie dem auch sei... schönen Nikolaus zusammen,
Christian

oberallgeier
06.12.2007, 22:21
Ups.. dann muss es ja zwischen Profi und Profi vl. doch noch Unterschiede geben.ChristianKlar, Christian, ich hatte ja auch nur von ein, zwei . . geschrieben. Die meisten Profis liefern ja auch das, was sich der kleine Maxi unter professionell vorstellt. Aber es ist eben die Frage, wie nachvollziehbar so manches Programm ist. Aber das hast Du doch sicher auch so verstanden :) .