Forum: Mikrocontroller und Digitale Elektronik Assembler oder C


von Michael D. (etzen_michi)


Lesenswert?

Tut mir leid dass ich dieses Thema schon wieder aufwühle (habe schon 
gesehen dass die Suche voll damit ist und mir die Ergebnisse auch 
durchgelesen -> zumindest bis sie vom Thema abgekommen sind).

Es geht darum ob es sinnvoller ist C oder Assemlber zu lernen.

Bisher habe ich ca. 1Woche Zeit zwischendurch Assembler überflogen und 
ein wenig Programmiert.

Mir geht es hier nicht nur um Hobbybedarf, da ich momentan bei der 
Jobsuche bin und ggf. Bereiche in denen Programmiert wird mit 
einfließen.

Kurz nochmal die Frage:

Ich habe bereits ein wenig mit Assembler gearbeitet, und frage mich ob 
es sinnvoll währe (besonders für die Zukunft) weiter Assembler zu lernen 
bis ich es ordentlich kann und dann auf C zu wechseln oder jetzt schon 
Assembler zur Seite legen und C lernen.

von Peter (Gast)


Lesenswert?

die Frage ist für welche µC du überhaupt programmierst? Auf einem Tiny 
arbeite ich gerne mit ASM wenn es aber eh ein grosser AtXmega wird, dann 
verwende ich C. Für Optimierungen ist es aber wichtig ASM zu können, 
damit man dem Compiler über die Schultern schauen kann.

von Michael D. (etzen_michi)


Lesenswert?

Momentan arbeite ich mit ATtiny und ATMega. Ich weiß nicht womit ich 
Arbeiten werde, sollte ich in meinem Beruf damit in Berührung kommen.

von Carsten S. (dg3ycs)


Lesenswert?

Hi,

also ich denke wenn es darum geht das es auch im Berufleben als Vorteil 
gelten soll, dann würde ich schon "vernünftig" Assembler lernen und 
danach dann auf C wechseln und dort richtig ranklotzen.

Das Programme komplett in Assembler geschrieben werden kommt auch im µC 
sektor immer seltener vor. Aber ausgestorben ist es nicht...
Gerade im Professionellen Umfeld aber ist es wichtig das Programme 
effizient sind, sowohl hinsichtlich Laufzeit(timing) als auch Platz.
Zwar sind einige C Compiler mittlerweile so gut das man selbst nicht 
"kleiner" in Assembler schreiben kann, aber alles wo es im Timing auf 
einzelne Prozessortakte ankommt geht nicht ohne eingebettete 
Assemblerabschnitte.
Zudem sollte man als µC Programmierer auch den vom Compiler erzeugten 
Code lesen können, alleine schon um beurteilen zu können das der sich 
nicht irgendwo "verschluckt" hat. Und natürlich um Fehlfunktionen auf 
die Schliche zu kommen. Wurde ja auch schon oben geschrieben.

Daher ist Assembler im Professionellen Umfeld immer noch relevant.
Was man nicht mehr unbedingt braucht ist die so excelente Beherschung 
das man jeden Programmierkniff/Trick kennt - wie es vor 20Jahren war als 
jedes Byte noch richtig teuer war. Bei C ist sowas heute natürlich 
absolut relevant, aber in ASM...
Aber ordentlich verstehen um Code gut zu lesen oder auch mal ein paar 
Zeilen einbetten zu können muss sein. Wobei es weniger darum geht einen 
Prozessorspezifischen Dialekt perfekt zu beherschen als die Grundidee zu 
verstehen und sich schnell in eine andere Variante einarbeiten zu 
können.

Gruß
Carsten

von Olaf (Gast)


Lesenswert?

> Mir geht es hier nicht nur um Hobbybedarf, da ich momentan bei der
> Jobsuche bin und ggf.

Beruflich wird C programmiert und nur C und nichts anderes als C. 
Allenfalls in extrem seltenen Faellen wird vielleicht mal irgendwo ein 
Stueck Assembler drin sein.

Olaf

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Olaf schrieb:
> Beruflich wird C programmiert und nur C und nichts anderes als C.
Allerdings ist es sehr von Vorteil, wenn bei Problemen auch ein vom 
compiler erzeugtes Assemblerlisting gelesen, verstanden und 
interpretiert werden kann... ;-)

von Johnny B. (johnnyb)


Lesenswert?

Einige hier werden mich jetzt vielleicht steinigen, aber heutzutage 
kommst Du in einer Durchschnittsfirma die selber Firmware für 
Mikrocontroller entwickelt gänzlich mit C durch und kannst Assembler 
ohne schlechtes Gewissen vergessen.

Assembler ist meiner Meinung nach nur noch in gewissen Nischen 
interessant z.B. wenn Du alte Firmware warten musst, schlechte Compiler 
verwendest und den erzeugten Code überprüfen musst oder sehr einfache 
aber hochstückzahlige Billigprodukte entwickelst wo es auf jeden Cent 
ankommt (z.B. "Chinaspielzeug").

Bei sehr komplexen Produkten geht der Trend bereits stark in Richtung 
embedded PC's und dann wird vorallem mit C++ programmiert.

von oldmax (Gast)


Lesenswert?

Hi
Obwohl ich mit C nix im Sinn hab, bin ich der Meinung, wenn du beruflich 
programmierst, würd ich C lernen. Assembler, zumal du ja schon ein wenig 
"Erfahrung" damit sammeln konntest, ist für einen Programmierer 
hinterher nicht das große Problem. Solltest du jemals Bedarf daran 
haben, ist dir der Weg zu Assembler ja nicht verbaut. Aber natürlich 
favorisiere ich nach wie vor Assembler, da damit direkt das Verständnis 
für die Funktion eines µC übermittelt wird. Dies ist bei einer 
Hochsprache nicht unbedingt gegeben. Sagen wir mal so, mit Assembler 
bist du auf der persönlichen "Du-", mit einer Hochsprache auf der 
distanzierten "Sie-Ebene". Gesteckte Ziele kannst du in jeder Ebene 
erreichen.
Gruß oldmax

von Michael D. (etzen_michi)


Lesenswert?

Hmm ... Wenn ich das richtig verstehe wird von einem empfohlen Assemlber 
zu lernen bis man es einigermaßen kann und dann auf C zu gehen um später 
Assembler in C einbinden zu können.

Meine befürchtung hierbei ist das bis ich Assembler einbinden muss das 
schon wieder vergessen habe.
Andererseits werde ich mich dann wohl schneller wieder reinfinden.


Person 2 empfiehlt Assembler komplett wech zu lassen.

Hierbei Frage ich mich ob man dann auch lernt wie so ein µC überhaupt 
funktioniert, und ob es den wichtig ist das zu wissen.


Hinzu kommt das ich mal Basic ein wenig (2Jjahre) rumgespielt habe und 
ich fast befürchte das mit C durcheinander zu bekommen.


Fazit: Scheint als sollte ich Assembler erstmal ignorieren und gleich 
mit C anfangen. Hoffe das ich mit diesem Schritt keinen Fehler mache.
Warte noch auf weitere Antworten, villeicht hat ja noch jemand Gründe 
für C oder Assembler b.z.w. dagegen.

Schonmal Vielen Dank für die bisherigen sowie alle noch kommenden 
Antworten

von lol (Gast)


Lesenswert?

Assembler ist gut, um ein Verständnis für den Prozessor und die 
technische Funktionsweise eines Computerprogramms zu bekommen. Am Anfang 
lohnt es sich also sehr, damit zu üben. Es unterstützt einem dann auch 
sehr beim Verständnis von C, insbesondere die ganze Pointergeschichte, 
aber auch Arrays, Speicherallokation, effizientes Programmieren etc.

Produktiv wird man kaum mit Assembler arbeiten, da es einfach zu 
aufwendig und zu fehleranfällig ist. Deshalb lohnt es sich, nach einigen 
Wochen Assembler, C zu lernen. C ist die mit Abstand wichtigste Sprache 
im Mikrocontrollerbereich.

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.