PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Welche ist die beste Programmiersprache?



blizzard
14.04.2005, 14:59
Hi Leute

Ich weiß, das passt hier nicht so rein, aber ich hab kein besseres Forum gefunden. Zu meiner Frage: Ich will mir einen Roboter bauen der von einem AVR Controller kontrolliert wird, hab aber mit der Programmierung eines AVRs noch nichts am Hut! Welche Programmiersprache würdet ihr mir empfehlen (WinAVR, BASCOM, ...)? Ich hab schon Vorkenntnisse in C,C++ (1 1/2 Jahre in der Schule) und den Robby CCRP5 hab ich mir auch schon gekauft und ein wenig in CCBasic programmiert. Ich versteh also schon ein wenig vom Programmieren. Welche Programmiersprache würde am besten passen?
Danke

mfg blizzard

uwegw
14.04.2005, 15:11
Welche ist die beste Programmiersprache?
VORSICHT! du bist auf dem besten wege den uralten glaubenskrieg zu diesem thema neu zu entfachen... ;)

passen würden deine beiden vorschläge wohl schon wenn du schon kenntnisse in den beiden sprachen hast...
meine meinung: bascom= einfach, aber nicht so vielseitig, außerdem kostets was wenn die demo nicht mehr reicht
c= mächtig, aber komplizierter, dafür kostenlos...

Alter Knacker
14.04.2005, 15:16
wenn du hier (https://www.roboternetz.de/phpBB2/search.php) "programmiersprache" eingibst, erhältst du 4! seiten an antworten ;-)
mfg knacki

JanB
14.04.2005, 15:17
Welche ist die beste Programmiersprache?

Für AVRs: Assembler

Da dürfte wohl niemand widersprechen. ;-)

Gruß Jan

PicNick
14.04.2005, 15:53
Doch, ich. [-(
Ohne definierte Kriterien kann man so eine Aussage nicht gelten lassen.

uwegw
14.04.2005, 15:59
Für AVRs: Assembler
Da dürfte wohl niemand widersprechen.

für den avr selbst hast du wohl recht, nur für den programmierer nicht unbedingt...
unter asm kannst du zwar jedes einzelne bit umdrehen, aber du musst auch an jedes einzelne bit denken...

PicNick
14.04.2005, 16:05
für den avr selbst hast du wohl recht, nur ...

Das wundert nicht, er kann ja auch nix anderes. :mrgreen:

blizzard
14.04.2005, 16:30
Danke für die Antworten.
Ich entscheide mich dann wohl für WINAVR. Das ist wie uwegw geschrieben hat zwar das kompliziertere aber auch das komplexere. Außerdem hab ichs mir schon runtergeladen (mit der Anleitung vom Downloadbereich). Außerdem hilfts vielleicht auch in der Schule.

mfg blizzard

Superhirn
14.04.2005, 17:00
c= mächtig, aber komplizierter, dafür kostenlos...

Hi uwegw,
Woher bekomme ich einen gratis C Compiler für AVRs. Ich hab mir WinAVR runtergeladen. Der ist aber auf 4kB begrenzt. Stimmt das? Oder gibst von wem anderen auch noch einen gratis Compiler.

Wollte nähmich schon mit Assembler anfangen. Sollte jedoch lange zum Programmieren dauern hab ich gehört. Und alle zeiten müssen ja in Abhängigkeit von der Taktfrequenz programmiert werden. Oder?

mfG
Superirn

uwegw
14.04.2005, 17:27
von winavr hab ich (noch) so gut wie keine ahnung, habs schon mal runtergeladen aber bin noch nicht dazu gekommen es auszuprobieren. ich benutze pascal (e-lab avrco)...
die 4kb begrenzung ist in der demo von bascom, winavr ist open source...

Superhirn
14.04.2005, 18:02
von winavr hab ich (noch) so gut wie keine ahnung, habs schon mal runtergeladen aber bin noch nicht dazu gekommen es auszuprobieren. ich benutze pascal (e-lab avrco)...
die 4kb begrenzung ist in der demo von bascom, winavr ist open source...

Ich dachte immer Demo Bascom hat 2kb begrenzung und Winavr 4kB

Superhirn

Pascal
14.04.2005, 18:06
die Demo von Bascom hat eine Begrenzung von 2kByte(vielleicht auch 4 kByte, so ein Gerücht hab ich zumindest mal gesehen, obs stimmt, weiß ich nicht), aber WinAVR ist auf jeden Fall ohne Begrenzung

pebisoft
14.04.2005, 18:09
winavr-c ist hat keine grenzen und ist 100% freeware auf der gnu-basis.
bascom neue version ist jetzt auf 4k begrenzt.
mfg pebisoft

pebisoft
14.04.2005, 18:19
hallo jan ich gebe dir recht.
ich versuche jetzt durch winavr den weg zu asm zu finden.
wie aus den treads in winavr zu entnehmen ist ,wurden in der letzten zeit sehr gute zeitkritische routinen in winavr produziert und umgesetzt, eine sehr gute leistung. vor 10 wochen habe ich auf winavr noch geschimpf, jetzt nicht mehr. natürlich brauch man dabei auch noch einige zuverlässige kameraden, die ein auf die sprünge helfen und diese kameraden waren und sind da. besonders bedanke ich mich bei ...., die liste ist sehr lang.
gerade jan hat uns allen gezeigt, das sogar ein videosignal mit der rs232-schnittsstelle kommunizieren kann, natürlich geht das nur in asm. vielleicht schafft man dieses auch einmal in winavr, ich möchte hier keine prognosen schliessen.
mfg pebisoft

Worstcase
14.04.2005, 18:35
Hallo, ich denke mal die Entscheidung zu c bzw cpp ist die sehr richtig, wer cpp kann finde auch leicht den einstieg in andere objektorientierte sprachen wie java. ich selber programmiere seid 2 monaten in cpp. habe füher aber auch einiges in assembler auf dem Amiga gemacht. später dann awl auf der alten S5 meiner meinung nach immer noch das beste für eine speicherprogrammierbare steuerung. da fällt mir ein bei ebay bekommt man oft günstige s5 cpu´s und baugruppen ist vieleicht ein wenig groß für einen robi aber bestimmt nicht schlecht eine schier unbegrentze anzahl an i/o ports und das ganze mit einem op versehen, mal drüber nachdenken.

pebisoft
14.04.2005, 18:45
wenn die free-sofware stimmt und die grösse der forumgruppe für den austausch der info , dann könnte man mal über s5 cpu's reden.
mfg pebisoft

Worstcase
14.04.2005, 18:49
leider kenn ich keine free software dafür, ich denke mal das alte step5 bekommt man sicher günstig ich hab damals eine klimaanlage programiert mit weit über 100 anlaog eingängen 200 digitalausgängen und sonstigen sachen und operatorpanel. waren aber 2 cpu für failsafe.

lekro
14.04.2005, 22:58
Ein Tipp am Rande: Die Grundlagen von C oder von C++ (man sollte sich für _eines_ entscheiden und bloß keinen Mischmasch lernen) lernt man am besten bei einfacher Konsolenprogrammierung für den normalen PC.

Mit WinAVR mit C zu beginnen ist nicht so das Gelbe vom Ei. Man tut sich entweder unnötig schwer, weil viele Besonderheiten beachtet werden müssen, die in normalen C-Büchern nicht stehen, oder aber man gewöhnt sich einen schlampigen Programmierstil an, ohne wirklich die Hintergründe zu verstehen.

Felix G
14.04.2005, 23:38
man sollte sich für _eines_ entscheiden und bloß keinen Mischmasch lernenDas würde ich so nicht sagen, man kann durchaus beides lernen.

Das Hauptproblem ist daß viele erst C lernen und dann C++, aber beim programmieren letztendlich nur die Dateiendung ändern.
Sie schreiben quasi C-Code mit einer Prise C++, und das kann einfach nicht vernünftig funktionieren.


Grundsätzlich spricht nichts dagegen nach C auch noch C++ zu lernen, aber dann bitte richtig!

Blackbird
15.04.2005, 06:14
C oder C++ beschreiben doch nur den Sprachumfang, die Syntax, nicht die Semantik.
@FelixG und @lekro, was ihr meint ist Strukturiertes Programmieren vs. OOP. Das hat mit C oder C++ erst mal gar nix zu tun.
Klar kann man mit C++ besser OOP machen, was in C etwas schwierig, aber nicht unmöglich ist. Ein strukturiertes Programm mit der Syntax von C++ zu schreiben UND zu compilieren ist doch nichts verwerfliches, das wird sehr häufig gemacht.

WinAVR-C unterstützt nur die Syntax von C.

Blackbird

pebisoft
15.04.2005, 07:57
wer den avr programmieren möchte mit c, der kommt mit winavr am besten aus. dort gibt es keine schlampige arbeit. es ist das gnu standart c.
ich würde einmal an deiner stelle den gnu einmal benutzen. wenn du linux kennst, weisst du, wie er funktioniert. was das winavr so kompliziert erscheinen lässt, ist das ansprechen der beonderen namensregister der avr-chip, und sind genormt, ein glück.
es gibt bei den avr kein oop.
mfg pebisoft

lekro
15.04.2005, 23:51
Das würde ich so nicht sagen, man kann durchaus beides lernen.
[...]
Grundsätzlich spricht nichts dagegen nach C auch noch C++ zu lernen, aber dann bitte richtig!Jep, ganz deiner Meinung. Ich schrieb ja auch von einem "Mischmasch", der entsteht, wenn man C und C++ vermischt, weil man es gleichzeitig lernen möchte. Nacheinander ist es kein Problem, wenn man sich der Unterschiede beider Sprachen bewusst ist und nicht denkt "C++ ist erweitertes C".


C oder C++ beschreiben doch nur den Sprachumfang, die Syntax, nicht die Semantik.
Mal davon abgesehen, dass ein C++-Compiler nicht jedes C-Programm kompiliert, gibt es einen gravierenden Unterschied zwischen C- und C++-Programmen. Dieser Unterschied ist der Programmierstil. In C++ schreibt man seine Programme objektorientiert, nur kurze Funktionen, dafür mehr. In C eher längere Funktionen und prozedural.

Das meinte ich mit der Aussage, dass man entweder C oder C++ lernen sollte.
(Im vollen Bewusstsein, hiermit evtl. einen Glaubenskrieg auszulösen:) Ja, ich finde es verwerflich, in C++ mit C-Stil zu programmieren.


WinAVR-C unterstützt nur die Syntax von C.Schonmal probiert, eine C++-Datei ins Makefile zu setzen? ;)
Das funktioniert sogar recht gut, wie man auch der avrlibc-FAQ entnehmen kann. Exceptions funktionieren nicht und die STL gibt's natürlich auch nicht. Aber Klassen, Vererbung, virtuelle Funktionen etc. funktionieren ziemlich gut mit WinAVR.


es ist das gnu standart c. Bitte "Standard". Rechtschreibfehler sind mir meist egal, aber auf "Standard" mit t reagier ich allergisch.

es gibt bei den avr kein oop.Wie o.g., ist das nicht hundert Prozent korrekt, man kann mit WinAVR C++-Code schreiben.
Man kann auch, wie Blackbird gesagt hat, in C oo programmieren. Selbst wenn C++ überhaupt nicht unterstützt würde, träfe diese Aussage so nicht zu.

Felix G
16.04.2005, 00:11
WinAVR-C unterstützt nur die Syntax von C.Schonmal probiert, eine C++-Datei ins Makefile zu setzen? ;)
Das funktioniert sogar recht gut, wie man auch der avrlibc-FAQ entnehmen kann. Exceptions funktionieren nicht und die STL gibt's natürlich auch nicht. Aber Klassen, Vererbung, virtuelle Funktionen etc. funktionieren ziemlich gut mit WinAVR.Wie sieht das denn performancemässig aus?
hast du schonmal getestet wieviel langsamer bzw. grösser der Code dabei wirklich wird?

Denn je nach Anwendung wäre es manchmal schon ganz praktisch wenn man objektorientiert programmieren könnte.

lekro
16.04.2005, 10:14
Wie sieht das denn performancemässig aus?
hast du schonmal getestet wieviel langsamer bzw. grösser der Code dabei wirklich wird?Ich habe bisher nur mal ein wenig rumprobiert, aber der ausführbare Code wird dadurch kaum größer.

Ob man C oder C++ kompiliert, die avrlibc ist dieselbe; es gibt schließlich noch keine avrlibc++, die einen signifikanten Größenunterschied verursachen könnte.

Klassen etc. sind ja nur Sprachkonstrukte, im späteren Code erzeugen die keinen Overhead mehr.
Nur virtuelle Funktionen erzeugen einen geringen Overhead. Aber man muss sich fragen, ob man in C diesen Overhead nicht auch hätte, wenn man das Prinzip der virtuellen Funktionen manuell implementiert.

new/delete sollte man auf den kleineren Controllern aber weitestgehend meiden, da man sie meistens über malloc/free implementiert und dadurch einigen Overhead erzeugt.


Ob C++-Code langsamer ist, habe ich nicht überprüft (mir ist es aber auch nicht aufgefallen). Theoretisch betrachtet sollte es absolut keine Performanceeinbußen geben, wie auf dem PC. Praktisch könnte gelegentlich etwas umständlicherer Code als nötig erzeugt werden, da der avr-C++-Compiler nicht so sehr gepflegt wird wie der C-Compiler und vielleicht manche Optimierungen in Bezug auf Klassen nicht kennt. Das sollte aber selten auftreten (wenn überhaupt).
Müsste man mal messen oder die Listings durchsehen, ich denke aber, dass es keinen Geschwindigkeits-Unterschied geben wird.

Blackbird
18.04.2005, 07:06
lekro hatte geschrieben:


Blackbird hat folgendes geschrieben::
C oder C++ beschreiben doch nur den Sprachumfang, die Syntax, nicht die Semantik.

Mal davon abgesehen, dass ein C++-Compiler nicht jedes C-Programm kompiliert, gibt es einen gravierenden Unterschied zwischen C- und C++-Programmen. Dieser Unterschied ist der Programmierstil. In C++ schreibt man seine Programme objektorientiert, nur kurze Funktionen, dafür mehr. In C eher längere Funktionen und prozedural.

Hier muß ich Dir widersprechen: C++ erleichtert (und unterstützt) die OOP, C++ IST selbst aber keine OOP-Language. C++ ist (nur) eine "Sprach-Elemente-Erweiterung" (und zwar eine ziemlich mächtige) von C, die jetzt einen eigenen Standard hat.
Die Verwendung von C++-Sprachelementen muß nicht automatisch zu OOP-Code führen. Der Programmierer sollte es aber tun - und hier bin ich mit Dir vollkommen einer Meinung.
Leider gibt es noch zu viele "C-Progger", die mit C++ reinen strukturierten Code abliefern. Und es gibt aber auch die "OOP-Progger", die es nicht lassen können, aus jedem 3-Zeiler ein mehrseitiges OOP-Programm zu machen. DAS ist dann meistens wirklich langsamer als eine simple Funktion - und DAS hat auch der OOP den Ruf der Langsamkeit eingebracht.
Es liegt also an den Menschen wie sie die Sprachen benutzen, nicht an den Sprachen selbst. Die sind unschuldig.

Ich finde es absoluten Quatsch, wegen C und C++ eine Glaubenskrieg zu beginnen ("niemals mit C, nur mit C++ beginnen", "C++ ist unübersichtlicher", ...).
Einfach neugierig sein und lernen. Dann kann man selber entscheiden.

Übrigens: Die Sprache sollte zur Aufgabe passen, nicht umgekehrt.

Blackbird

lekro
18.04.2005, 14:42
Übrigens: Die Sprache sollte zur Aufgabe passen, nicht umgekehrt.Full ACK.

PicNick
18.04.2005, 14:47
EBEN ! Also muß man ggf. die Aufgaben anpassen :mrgreen: