-
Umfrageergebnis anzeigen: Welche Programmiersprache verwendest du hauptsächlich???
- Teilnehmer
- 170. Du darfst bei dieser Umfrage nicht abstimmen
-
Erfahrener Benutzer
Roboter Genie
Ein wichtiger Unterschied zwischen den Programmiersprachen ist, wie man Aufgabenstellungen anpackt.
Nehmen wir als Beispiel die Aufgabe, zu ermitteln, ob eine Zahl durch 4 teilbar ist.
In der Schule im Informatikunterricht, als wir uns mit 4 Leuten einen riesigen Kasten mit 64KB RAM, 8-Zoll Disketten, 2 Bildschirmen und 2 Fernschreibern teilten, war die Standardlösung folgende:
If x/4 = int(x/4) then ...
Unser Basic konnte auf keine Bits zugreifen, Modulo kannte die Basicvariante auch nicht, folglich war diese Lösung gut.
Nur dauerte die Berechnung ewig lange, was ja auch ganz klar ist. Zwei Divisionen, eine Integerfunktion und ein Vergleich ... da gruselt es einem 
Heute würde man vielleicht eher so formulieren:
If (x mod 4) = 0 then ...
(Wenn der Rest von x geteilt durch 4 null ergibt, dann ... )
Das Klingt schon besser ... ein Modulo geht fix, also alles Bestens.
In Assembler geht man die Sache einfach ganz anders an. Man schaut einfach, ob die beiden niederwertigsten Bits 0 sind und ist durch mit der Aufgabe. Aufgrund der vielen Systemabhängigen Assemblerschreibweisen schreib ich das mal nach Schnauze 
Load RegisterA, X
Load RegisterB, &B00000011
AND RegisterA, RegisterB
BranchIfZero ->
Keine Division, und in wenigen Taktzyklen abgearbeitet. Um ein Vielfaches schneller und schlanker, also optimal!
Wenn man nun die Assemblertechnik versteht, dann lassen sich solche Lösungen aber ebenso heute auch in Basic hinbekommen, da viele Dialekte auch Bits testen und manipulieren können.
Ebenso könnte ich auch in Assembler die umständliche Variante mit Divisionen realisieren. Es ist halt nur so, das einem beim Erlernen verschiedener Sprachen auch verschiedene Kniffe beigebracht oder bewußt werden und die sind es, die entscheiden, wie schnell und effizient eine Programmiersprache ist.
Obwohl viele Compiler den Code in gewissen Grenzen optimieren können, werden sie das Grundpinzip, nach dem wir eine Aufgabe angehen nicht optimieren, das müssen wir beim Programmentwurf schon selber machen und hier liegt das größte Potenzial bzw. die größten Schwächen.
Gruß MeckPommER
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen