Forum: Mikrocontroller und Digitale Elektronik Programmiersprache


von MÖMÖ (Gast)


Lesenswert?

Hallo,

als Hobbyprogrammierer habe ich folgende Frage :

die "Hardware" z.B. ATmega8 arbeitet doch intern mit 1 und null also
Strom oder kein Strom (Spannung)

Die Programme der Hochsprachen C oder Bascom oder Assemblerprogramme 
werden doch umgewandelt in eine Hexdatei die dann in den ATmega8 
übertragen wird.

nun zur Frage
warum sind einige Sprachen langsam und z.B Assembler schnell wenn doch 
alles wieder in 1 und 0 umgewandelt wird.

oder warum gibt es kein Programm "C umwandeln in Assembler" ?

Danke

von johnny.m (Gast)


Lesenswert?

> oder warum gibt es kein Programm "C umwandeln in Assembler" ?
Natürlich gibt es das. Nennt sich Compiler...

von Karl heinz B. (kbucheg)


Lesenswert?

> warum sind einige Sprachen langsam und z.B Assembler schnell wenn doch
> alles wieder in 1 und 0 umgewandelt wird.

Das ist wie der Unterschied zwischen Mann und Frau:
Wenn ich dir den Weg beschreibe, dann sind wir in 20 Sekunden
fertig. Wenn meine Frau dir den Weg beschreibt, dann kann
das schon mal dauern. :-)



von Michael (Gast)


Lesenswert?

 MÖMÖ (Gast)
Die frage ist, wie genau wird der C-Code umgewandelt...
meine wenn du ein Programm schreibst, und es mit 2 verschiedenen 
Compilern compilierst und ein *.hex file erzeugst, werden diese alles 
andere als identisch sein!!! compilieren ist also nix absolutes, wenns 
nicht immer gleich ist, ist halt auch nicht immer gleich gut...

von antworter (Gast)


Lesenswert?

meine 2 cent:

(Vorsicht, frauenkompatible Erklärung)

Warum der Mensch meist besser optimiert als ein Compiler:

Nehmen wir mal an, ein Programmablauf entspräche einer Schachpartie -> 
die Register sind die "Felder", und die Daten sind die "Spielfiguren".

(Natürlich gibt es in diesem Szenario nur einen Spieler, und zwar den 
Programmierer)

Ein Algorithmus nimmt dann quasi eine Startaufstellung und verändert 
diese unter Einhaltung der Regeln (hier Befehlssatz des 
Mikrocontrollers) bis das Ziel erreicht ist (das Ergebnis / die Ausgabe 
des Algorithmus)

Da der Mensch in der Lage ist zu abstrahieren und Muster zu erkennen, 
fällt es ihm einfach, einen optimalen Algorithmus zu erstellen und "neue 
Wege" zu gehen (so er Hirnschmalz, Kreativität und etwas Erfahrung 
mitbringt).
Der Compiler hingegen kann sich nur an die Optimierungsregeln halten, 
die seine Programmierer ihm mitgegeben haben.

Und noch was: der Mensch verfügt oftmals über Hintergrundwissen (z.B. 
die Eingabe betreffend: Wertebereiche, Änderungsverhalten etc.), das er 
auf Assemblerebene ausnutzen kann, aber einem Hochsprachencompiler meist 
nicht (oder nur schwer) "mitgeben" kann.


P.S.:

Sorry für die Magenkrämpfe, die jetzt einige Mitprogrammierer plagen 
werden, aber mir gefiel diese Abstraktion ;-)

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Gute Erklärung - mein Magen krampft ganz und gar nicht :-)

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.