PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Wahl der Programmiersprache



M.M.R.
18.01.2007, 20:27
Hallo Leute !
Ich würde auch gerne mit dem Programmieren von Mikrocontrollern anfangen und würde gerne mit einem Atmel AVR Controller anfangen.
Jetzt würde ich gerne wissen, ob es nicht grundsätzlich egal ist, welche Programmiersprache man wählt, um seine Software zu schreiben, denn das fertige Programm wird doch sowieso IMMER in Maschinensprache übersetzt bevor man es auf den Controller überspielt.
Habe ich da etwas missverstanden ?
Naja, hoffentlich könnt ihr mir weiterhelfen.
Vielen Dank schon mal für eure Antworten.

Gruß, M.M.R. ;)

mx3
18.01.2007, 20:58
Hi!

Natürlich ist es egal welche Programmiersprache man wählt.
(Assembler,Bascom,oder C >> AVR-GCC).
Je nach Vorkenntisse.Für Anfänger entfiehlt es sich Bascom zu nehmen.
Diese Seite schon Besucht?
www.roboternetz.de/phpBB2/viewtopic.php?t=884

mfg,MX3

Schokohoernl
18.01.2007, 21:04
Hallo!

Rein Theoretisch ist es egal welche Programmiersprache du wählst. Es gibt eben einfacherer (z.b. Basic ) und schwierigere (Z.B. Assembler).

Das Problem bei ALLEN Hochsprachen (Basic, C, Pascal, etc.) ist, dass sie irgendwelche für den Menschen halbwegs verständlichen Befehle in andere Assembler-Befehle umwandeln. (Assembler ist praktisch direkt Maschienencode) Je nach dem wie gut jetzt dein Copilierprogramm ist, desto kleiner bzw. schneller ist dann dein für den µC verständlicher Maschienencode. Das hat aber weniger mit der Sprache zu tun, als mit der Programmierung des Compiler-Programms.

MfG

Schoko

SprinterSB
18.01.2007, 21:35
Die Wahl hängt auch davon ab, ob nur schnell ein Projekt durchgezogen werden soll, oder ob vielleicht irgendwann andere Projekte auf vielleicht anderen Controllern/Prozessoren interessant sein könnten.

C/C++ ist im Embedded-Bereich praktisch Standard, vereinzelt auch Java (Händi, ...) oder Ada (Militär, Avionics). Sprachen wie BASIC sind da recht exotisch und werden wenig/kaum verwendet, was auch an der mangelnden Standardisierung liegt.

Assembler ist zum Einsteigen und Lernen auch interessant, wenn man nicht den Fokus auf schnelle Ergebnisse legt, sondern von der Pike auf lernen will.

Hierzu sei noch angemerkt, daß jede Controller-Familie einen anderen Befehlssatz hat und dementsprechend auch Assembler familienabhängig ist, da er eine lesbare Form von Maschinencode darstellt.

Im professionellen Bereich ist Assembler seit es leistungsfähige Compiler gibt, die teilweise besseren Assembler erzeugen als der menschengeschriebener, schon lange nicht mehr state of the art. Die heutigen Entwicklungszyklen wären mit Assembler nicht einzuhalten.

Neben der Sprache ist auch interessant:

-- Welche Bibliotheken (zusätzliche Funktionalität) gibt es, die nicht direkt zum Sprachumfang gehören?
-- Welche Entwicklungsumgebungen/IDEs gibt es?
-- Was kost?
-- Wie verbreitet ist die Sprache?
-- Gibt es genügend Infos? Bücher, Tutorials, Foren, ...
-- hab ich was vergessen?

M.M.R.
19.01.2007, 14:53
Alles klar, Leute !
Vielen Dank für eure Antworten!
Ihr habt mir schon mal einen Schritt weiter geholfen!
Ich fange dann wohl mit Bascom an :) !

Gruß, M.M.R.

PICture
19.01.2007, 15:20
Hallo!

Ich wollte nur ein bischen ergänzen.

Die Programmiersprache ist auch von der Art der Programme abhängig, die man für bestimmte Hardware braucht.

Ich habe sehr oft BASIC benutzt und für zeitkritische (schnelle) Abläufe, Assemblermodule als funktionen angewendet, da die Maschinensprache in Ausführung ca. 1000 mal schneller als BASIC ist.

MfG

Vitis
19.01.2007, 19:15
na, der Faktor 1000 scheint mir n bissl hoch gegriffen ... kommt auch
immer drauf an wie etwas in Basic programmiert ist.
Für verschiedene Probleme gibts unterschiedliche Lösungen,
die in der Geschwindigkeit auch stark differieren.

PICture
19.01.2007, 20:06
Hallo Vitis!

Natürlich, das hängt vor allem vom compiler ab. Das habe ich mit interpreter gemessen. :)

MfG

albundy
19.01.2007, 20:11
@Vitis,

mag sein, dass der Faktor 1000 zu hoch ist ...


kommt auch
immer drauf an wie etwas in Basic programmiert ist.
Für verschiedene Probleme gibts unterschiedliche Lösungen,
die in der Geschwindigkeit auch stark differieren.

ich sitze gerade an einer RGB Videoausgabe mit 8 Farben.
Nach meiner Meinung ist so etwas nur mit Assembler zu bewältigen, wo man jeden Takt explizit ausnutzen kann.
In Bascom sehe ich für so ein Vorhaben keine Chance.

@M.M.R.
Wobei ich Bascom nicht schlecht machen will.
Bascom ist eine gute und ausgereifte Hochsprache, für Anfänger sehr gut geeignet.

SprinterSB
19.01.2007, 20:24
Natürlich, das hängt vor allem vom compiler ab. Das habe ich mit interpreter gemessen. :)MfG

BASCOM ist ein Compiler.

PICture
19.01.2007, 20:34
Hallo albundy!

Eben. Ich habe mit Basic angefangen und danach mit ASM, weil ich das, was ich wollte, nur mit BASIC nicht realisieren konnte. Alle langsame Sachen habe ich wieder in BASIC programmiert, weil das Programmieren so viel schneller geht.

Ich habe auch oft BASIC benutzt um ein Konzept von einem ASM Programm (z.B. multitasking) zu prüfen.

Ich finde ausgewogene Mischung von ASM und Hochsprache optimal für jede Anwendung.

MfG

Chris3000
19.01.2007, 20:38
Hallo in die Runde!

Der Thread bietet sich grad mal an um eigene Interessen einzuschieben!

Bin absoluter Frischling und wohl oder übel desshalb noch ein ziemlicher Noob! Hab mir aber auch ein kleines Projekt überlegt, das ich gerne Stein für Stein erarbeiten würde! (Vielleicht gibs mal nen eigenen Thread da dann mehr Infos!)
Aber Programmieren gehört wohl auch zur Realisierung dazu!


Nun meine Frage! Hat es Sinn erst Basic zu lernen (da für Anfänger geeignet!) und später ne bessere "Programmiersprache"? Oder sollte man dann dierekt mit was Besserem anfangen, weil die Befehle sich doch alle unterscheiden?

Danke

Chris

PICture
19.01.2007, 21:30
Hat es Sinn erst Basic zu lernen (da für Anfänger geeignet!) und später ne bessere "Programmiersprache"? Oder sollte man dann dierekt mit was Besserem anfangen, weil die Befehle sich doch alle unterscheiden?

Diese Fragen habe ich mich auch mal gestellt. :)

Dann habe ich verschiedene Hochsprachen kurz ausprobiert und festgestellt, dass es keine schlechtere und bessere, sondern nur verschiedene gibt.

Von allen hat mir nur BASIC gefallen, das ist eben Gefühlsache.

Weil ich aber hauptsächlich für meine eigene Hardware programme geschrieben habe, war mir BASIC irgendwann zu langsam.

Je nach dem was für einen Prozessor gerade für meine Anwendung optimal und erhältlich war, habe ich seine Maschinensprache schnell erlernt und ihn programmiert. Man muss bloss die Befehlsnamen erlernen, weil die Struktur eines ASM Programs ändert sich nicht.

Bei den Hochsprachen ist das ganze nicht so einfach, weil ausser verschiedenen Befehlsnamen sind sie auch anders strukturiert. Deswegen man bleibt meistens bei einer Hochsprache, die ihm gefällt.

MfG

Hanni
19.01.2007, 21:35
BASCOM ist ein Compiler.

Also irgendwie bezweifle ich das. Bascom scheint mir eher ein kleines Programm zu sein, welches Makros aneinander reiht. Anders kann ich mir so manch sinnfreie Einschränkung / Eigenart von Bascom nicht erklären.


Grüße,
Hanni

kalledom
20.01.2007, 01:31
Maschinensprache ist der Code, den der µC (die Maschine) versteht, mit dem er 'gebrannt' wird. Die erste Spalte zeigt einige Beispiele:

082A movfw z1ms
3E04 addlw 4
0702 addwf PCL,W
1803 skip_NC
0A8A incf PCLATH Als Assembler-Listing schreiben wir das, was ab der 2. Spalte steht, die sogenannten Mnemoniks.
Assembler und Linker generieren daraus den Maschinencode als Binär- oder Hex-Datei. Tatsächlich im PIC abgespeichert werden nur die Bytes aus der 1. Spalte.
Nach dem Assemblieren wird je nach Einstellung auch ein List-File erzeugt, in dem alles zu sehen ist: die Adresse, der Maschinen-Code (die Bytes), eine laufende Zeilennummer, sowie die Mnemoniks und Variablen (das Assemblerlisting).
Assembler ist eine maschinen-nahe, also hardware-nahe Sprache, mit dem alle Möglichkeiten, die ein µC zu bieten hat, ausgenutzt werden können. Dazu sind Kenntnisse über die Hardware und Funktionen des µC Voraussetzung.

Als nächste Programmiersprache gibt es C in vielen Varianten. Auch innerhalb von C kann in Assembler programmiert werden. C ist nicht ganz so schnell wie Assembler. Tiefgreifende Hardwarekenntnisse über den µC sind nicht unbedingt erforderlich.
Es folgen weitere Hochsprachen / Programmiersprachen, die je nach Anwendung, Umfang und Geschwindigkeit 'auserwählt' werden.

Früher waren die Hochsprachen eingeteilt:
Cobol für den kaufmännischen Bereich,
Fortran für mathematische Berechnungen,
Pascal für Datenverwaltung ?
Basic für 'Jedermann', ...