Assembler oder C?

OP #2533518
Lesenswert?

Hallo leuet,

ich habe vor einen Microcontroller zu programmieren. Da ich aber 
keinerlei erfahrung damit habe ergibt sich erstmal die Frage welche 
Programmiersprache soll ich wählen? Programmieren will ich mit AVR 
Studio einen:

Atmel ATEMega8A-PU

Es sollen nur die Ausgänge verschaltet werden. Praktisch will ich mit 
jedem Port eine andere LED ansteuern.Insgesamt 8 unterschiedliche, dazu 
kommen noch 2 LED anzeigen, die Zahlen von 0-99 ausgeben können sollen. 
Die anzeigen besitzen auch jeweils einen Microcontroller.

Kann mir da jemand helfen?

Gruß Markus
Gast #2534033
Lesenswert?

Vielleicht macht es umgekehrt noch mehr Sinn.

C ist leicht lesbar für Leute die ohnehin die mathematische 
Ausdrucksweise drauf haben und jetzt noch programmieren lernen.
ASM leichter fassbar für Leute die sich die Hardware (ALUs, Rechenwerk, 
etc.) vorstellen.

Lernen sollte man sicher beides. Beginnen aber mit dem, wo man nach 5 
Minuten draufgucken irgendeine Idee davon hat, was da geschieht (auch 
wenn die dann letztlich nicht stimmt). Stimmt man dem zu, dann kann die 
erste eigentlich eine beliebige Sprache sein.
Gast #2534063
Lesenswert?

>5 min halte ich für recht optimistisch

Ich bin nicht sicher ob wir uns recht verstehen.
Es geht nicht darum, beim ersten Anblick eines Textes eines Programmes 
innerhalb von 5 Minuten zu verstehen, was da läuft. Schon garnicht wenn 
man die Sprache garnicht kennt.

Ich zitiere mich mal selbst:
>wo man nach 5 Minuten draufgucken irgendeine Idee davon hat, was da >geschieht

Es geht um "irgendeine Idee", oder sagen wir eine Intuition, ein vages 
Bild; darum ob der Code eine Vorstellung erweckt. Ob das Angucken nun 5 
Minuten oder drei Wochen dauert ist eigentlich egal.

Betrachten wir es mal von der Warte des Kenners: Wer ein gewöhnliches 
C-Programm anschaut und nach 5 Minuten keine mathematischen Ausdrücke 
(mit so komischen doppelten Kaufmans-Und) und englische Ausdrücke wie 
"if" und "else" erkannt hat und damit nicht "wenn" und "sonst" und deren 
Relevanz für die Idee des Programmierens an sich verbunden hat für den 
ist halt C als erste Sprache nichts.
Bei Assembler ist das sicher weniger wahrscheinlich. Trifft aber doch 
die Menschen, die sich auf der Register-Transfer-Ebene dem Thema 
genähert haben und was von Microcode etc. gehört haben.

(OK. Wenn ihm das mit 5 anderen Sprachen auch so geht, dann fehlt ihm 
Vor- und Allgemeinbildung. Aber dennoch kann er sicher programmieren 
lernen, wenn er das nachholt).
Gast #2534077
Lesenswert?

Markus G. schrieb:
> ich habe vor einen Microcontroller zu programmieren.

Also hast du - schließe ich mal messerscharf - noch keine Ahnung, was 
für einen uC du programmieren willst, kennst noch nicht dessen Innereien 
und fragst dann so eine Frage.

Mein Rat:
1. Guck dir einen uC aus
2. Lies dessen Manual - und zwar gründlich
3. Lerne dabei auch, wie es mit den Registern, Speicher-Räumen, 
Taktzeiten, Maschinenbefehlen usw. bei diesem Typ aussieht
4. und dann entscheide dich, mit welchen Tools du das Programmieren 
dieses Chips angehen willst.

W.S.
(Firma: JDCC) #2534082
Lesenswert?

Die Sprachen sind sich alle irgendwie ähnlich - klar gibt es
Besonderheiten. Assembler ist da halt total anders. Eigentlich
die "Macht" über den Rechner ;).

Es dauert bis man es draufhat.

Ein fremdes Programm zu verstehen ist nicht ganz einfach, jeder
Programmierer hat seinen eigenen Stil, seine eigene Art an Probleme
heranzugehen.

Das kommt halt viel später wie eine LED mal blinken zu lassen.

C ist nach oben offen - mit Assembler kommt man irgendwann an eine
Grenze, der Sourcecode ist kaum noch überschaubar (mach mal eine
Assemblerprojekt mit 100 kB Sourcecode. Das macht man nur einmal
im Leben).

Ich hatte mal mit C als Ersatz für Assembler angefangen, mittlerweile
benutze ich C eigentlich für alles. Ich kann ein SQLite einhängen,
Websites damit bauen und einen kleinen ATTiny damit programmieren.

Immer wieder erstaunlich wie weit man damit kommt ...
Gast #2534515
Lesenswert?

Für das was du machen willst ist Assembler nicht notwendig.

Also willst du schnell ein Erfolgserlebnis ==> C
Bist du leidensfähig und hast viel Zeit bis das funktioniert ==> 
Assembler.

Im Endeffekt wenn du das programmieren von C mal wirklich auf Dauer und 
ernsthaft weiterführen willst, brauchst du beides.

Programmieren wirst du dann später wahrscheinlich zu 99% in C und nur 
wenige Subfunktionen in Assembler.
Aber zumindest zum debuggen , oder zum optimieren deines C-Codes 
solltest du dann Assembler lesen und verstehen können.
Gast #2534537
Lesenswert?

Suche dir zur gewählten µC-Familie ein passendes Tutorial oder ein gutes 
Einsteigerbuch und arbeite es durch. Lerne wenigstens die Grundlagen der 
Assemblerprogrammierung, denn nur so steigst du wirklich dahinter, was 
der µC intern wirklich macht. Danach kannst du dich mit C beschäftigen. 
Es geht natürlich auch ohne Assemblerkenntnissen, wenn aber der Compiler 
oder du mal Mist machen, dann ist die Fehlersuche um so komplizierter, 
einfach deshalb, weil du den erzeugten ASM-Code nicht verstehst.

Als ich mit der µC-Programmierung angefangen habe, gab es für diese 
Familie noch keine sinnvollen / kostenlosen C-Compiler. Deshalb war 
Assembler das Mittel der Wahl und auch heute mache ich vieles in 
Assembler. Doch spätestens wenn es etwas komplexere Sachen werden 
sollen, wo vielleicht noch eine fertige Lib des Controllerherstellers 
verwendet werden soll, komme ich nicht mehr um C herum.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren