mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Programmiersprache


Autor: MÖMÖ (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: johnny.m (Gast)
Datum:

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

Autor: Karl heinz Buchegger (kbucheg)
Datum:

Bewertung
0 lesenswert
nicht 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. :-)



Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: antworter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ;-)

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.