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
> oder warum gibt es kein Programm "C umwandeln in Assembler" ?
Natürlich gibt es das. Nennt sich Compiler...
> 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. :-)
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...
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 ;-)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.