Forum: Mikrocontroller und Digitale Elektronik Assembler lernen


von Panda (Gast)


Lesenswert?

Hallöchen,
gerade fange ich mit Programmieren an. Mit Hardware kenn ich mich schon 
ziemlich gut aus. Ich Überlege, ob ich mit Assembler anfangen soll, weil 
ich mal gehört habe, das Assembler-Programmierer eigentlich alle anderen 
Sprachen auch beherschen. Ist das eine gute Entscheidung? Könnt ihr mir 
ein Programm dafür empfehlen?

von Jürgen D. (poster)


Lesenswert?

Als Programm würde ich die einen Assembler passend zu deinem MC 
empfehlen. :)
Assembler ist keine sprache wie z.B C. Du sprichst auf unterster Ebene 
direkt mit der Hardware. Jede CPU Familie hat da ihre eigenen Befehle 
und Aufbau. Wen du z.B. ein Programm vom Admel auf einen PIC übertragen 
möchtest mußt du beide Prozessoren genau kennen.
Bei assembler bist du mit jedem Bit, jedem Register und jedem 
Prozessortakt auf du und du. Du weist genau wieviel Takte welche 
Programmteil an Zeit verbraucht. Oft wichtig bei Zeitkritischen 
Anwendungen oder Interrupts. Berechnungen und Strings sind aber z.B in C 
deutlich einfacher zu machen.

von Matthias K. (rino1)


Lesenswert?

Definiere dein Hardwarewissen.
Weil von gut auskennen bist du bestimmt noch weit entfernt.
Denke ich.

Programmieren ist ein Mittel zum Zweck nicht mehr und nicht weniger.
Was ist dein Ziel?

Außer du machst es nach dem Motto, weil ich es nicht kann, darum will 
ich es lernen.

Gruß,
Matthias

von Panda (Gast)


Lesenswert?

Hallo Mattias,
ja mit Hardware kenne ich aus. Das ist mein Hobby. Ich baue öfter 
Computer zusammen.

Was ich mit Programmieren machen will? Mhh also ein Progamm schreiben, 
das dann auf einem Computer läuft. Ist das nicht immer so?

von Chris B. (dekatz)


Lesenswert?

Panda schrieb:
> Ich baue öfter
>
> Computer zusammen.
>
>
>
> Was ich mit Programmieren machen will? Mhh also ein Progamm schreiben,
>
> das dann auf einem Computer läuft. Ist das nicht immer so?

Sehr vage!
Könnte man jetzt so interpretieren: du möchstest einen PC in Assembler 
programmieren. Auch kein Problem, google einfach mal nach MASM32...viel 
Spaß!

von Amerize (Gast)


Lesenswert?

Panda schrieb:
> Hallo Mattias,
>
> ja mit Hardware kenne ich aus. Das ist mein Hobby. Ich baue öfter
>
> Computer zusammen.
>
>
>
> Was ich mit Programmieren machen will? Mhh also ein Progamm schreiben,
>
> das dann auf einem Computer läuft. Ist das nicht immer so?



Mal fix nen PC zusammen schrauben ist n bisschen was anderes als 
wirkliche Hardwarekenntnisse und das verstehen selbiger.

Aha. Ein Programm für einen PC. Wenn du etwas auf µC hättest machen 
wollen, hättest du das Tutorial dieser Seite durchmachen können.

von Wusel D. (stefanfrings_de)


Lesenswert?

Vielleicht gefällt Dir mein AVR Assembler Workshop: 
http://stefanfrings.de/avr_workshop/index.html

Meiner Meinung nach helfen Assembler Kenntnisse kaum, um höhere Sprachen 
zu verstehen. Aber sie helfen, die Hardware besser zu verstehen.

Bei der Programmierung von Mikrocontrollern in C kommt es ab und zu vor, 
dass der vom Compiler erzeugte Maschinencode nicht tut, was man 
beabsichtigt hatte. Ein Blick in den vom Compiler erzeugten Assembler 
Code kann da sehr helfen - vorausgesetzt man kann Assembler wenigstens 
lesen.

Wenn Du noch keine Programmiersprache drauf hast, dann übe erstmal ein 
bisschen C auf dem PC. Danach kannst Du die Eigenarten der 
Mikrocontroller-Programmierung in C lernen.

Erst danach würde ich anfangen, Assembler zu lernen und andere 
alternative Hochsprachen.

Mein Workshop lässt vermuten, dass ich Assembler als Erstsprache 
Empfehle, aber inzwischen vertrete ich diese Meinung nicht mehr.

PC's mit Betriebsystem (Windows, Linux) würde ich nicht in Assembler 
programmieren. Es ist nämlich nicht ohne weiteres möglich, am 
Betriebsystem vorbei auf die Hardware zuzugreifen (zu DOS Zeiten ging 
das noch). Egal was Du machen willst (eine Datei laden, etwas auf dem 
Bildschirm ausgeben, die Tastatur abfragen), dur musst dazu IMMER eine 
Schnittstellenfunktion des Betriebsystems aufrufen. Und diese 
Schnittstellen sind bei Linux und Windows immer in C geschrieben und in 
Form von Libraries (dll's) bereit gestellt. Man kann sie zwar auch aus 
Assembler Programmen heraus aufrufen, aber das ist kompliziert.

Zudem ist die Hardware eines normalen PC inzwischen für Anfänger einfach 
zu komplex. PC's programmiert man in Hochsprachen (wie C++) - nur kleine 
Programmfragmente/Algorithmen realisiert man gelegentlich noch in 
Assembler.

von Cyblord -. (cyblord)


Lesenswert?

Naja du kannst anscheinend noch nicht mal deinen Beitrag in die korrekte 
Kategorie einordnen. Willst aber hier großartig mit Assembler aufm PC 
anfangen und behauptest auch noch damit könnte man dann alle 
Hochsprachen erschlagen.
Mein Tip: Wenn du programmieren willst, dann tu das mit den üblichen 
Sprachen auf dem PC (C, C++, Java, Visual C# usw. usw.). Damit bist du 
genug beschäftigt.
Wenn du wirklich was drauf hättest, dann hättest du jetzt schon dein 
erstes Hello World Programm fertig und müsstest nicht erst in einem 
Forum aufschlagen.

gruß cyblord

von Georg G. (df2au)


Lesenswert?

Assembler ist für einen Anfänger ein dickes Brett. Dazu bietet dir 
Assembler die Möglichkeit, dich selbst zu erschießen, ohne dass du 
Pistole oder Kugel erkennst.

C ist ein gute Kompromiss zwischen Hardware-Nähe und Bequemlichkeit. Der 
Compiler sagt dir sogar ab und an, dass du die Pistole in der Hand hast 
(außer du gehörst zu den richtig Mutigen, die alle Warnungen 
abschalten).

Als Einstieg in die Programmierung würde ich dir Pascal als Sprache und 
den PC als Ziel empfehlen. Pascal ist zwar total out und tot, dafür aber 
vom Lerneffekt her gut. Einen alten Borland Compiler gut es für lau. Die 
Sprache ist recht streng und erlaubt dir keinen Tanz auf dem Seil. Der 
integrierte Debugger hilft enorm bei der Fehlersuche. Pistolen sind nur 
mit enormen Klimmzügen zu beschaffen. Der spätere Umstieg auf C ist 
simpel.

von Cyblord -. (cyblord)


Lesenswert?

Georg G. schrieb:
> Als Einstieg in die Programmierung würde ich dir Pascal als Sprache und
> den PC als Ziel empfehlen. Pascal ist zwar total out und tot, dafür aber
> vom Lerneffekt her gut. Einen alten Borland Compiler gut es für lau. Die
> Sprache ist recht streng und erlaubt dir keinen Tanz auf dem Seil. Der
> integrierte Debugger hilft enorm bei der Fehlersuche. Pistolen sind nur
> mit enormen Klimmzügen zu beschaffen. Der spätere Umstieg auf C ist
> simpel.

Die 90er haben angerufen, sie wollen ihre Programmiertipps 
wiederhaben...

Mal ehrlich, heute noch jemandem Pascal zu empfehlen und ne alte Borland 
IDE, sag mal gehts noch? Moderne Sprachen UND moderne Werkzeuge. Das 
gehört zusammen. Was willst du denn mit dem antiken Kram? Visual Studio 
oder Eclipse oder QTBuilder und entsprechende moderne Sprachen bzw. 
deren neuere Auswüchse. Ordentliche Unterstützung für verteilte 
Anwendungen via Internet, Codeverwaltung (SVN und Co.), Multithreading 
DAS sind die Themen welche heute gefordert sind. Ein Anfänger sollte 
möglichst früh mit modernen Tools arbeiten.
Hats hier nur Hobbyfrickler welche seit 15 Jahren nur 20 Zeilen 
Programme auf ihrem Pentium I tippern?


gruß cyblord

von Georg G. (df2au)


Lesenswert?

cyblord ---- schrieb:
> Moderne Sprachen UND moderne Werkzeuge.

Es wird dich erschrecken: Auch Mechaniker, die später mit CNC Maschinen 
arbeiten, fangen mit Handsäge und Feile an.

Was nutzt es dem Schüler, wenn er durch tagelangen Kampf mit der IDE 
demotiviert wird? KISS ist angesagt in der Grundausbildung.

Was bei der von dir favorisierten Klicke-Bunti-Hackerei herauskommt, 
erleben wir täglich.

von Panda (Gast)


Lesenswert?

@Chris B.: Danke für den Tipp, MASM32 scheint das zu sein, wonach ist 
gesucht hab.

@Stefan: Ein Freund hat mir gesagt, dass Atmega-Assembler wie Suppe 
Essen ohne Löffel ist. Außerdem wollte ich mich schon eher mit größeren 
Systemen beschäftigen. Dein Workshop scheint eher für Schüler zu sein.

@cyblord: Warum so böse, auch du bist nicht als Programmierer geboren 
worden... Ist MASM32 auch ein "modernes TOol" ?

von Peter II (Gast)


Lesenswert?

Panda schrieb:
> Ein Freund hat mir gesagt, dass Atmega-Assembler wie Suppe
> Essen ohne Löffel ist. Außerdem wollte ich mich schon eher mit größeren
> Systemen beschäftigen. Dein Workshop scheint eher für Schüler zu sein.

auf einem Atmega ist ASM noch sinnvoll und nachzuvollziehen. Beim PC 
würde ich sagen das ASM ist wie den Pool mit einen Kabel leer machen.

von Fuerst-Rene (Gast)


Lesenswert?

Hi ich musste es beruflich bedingt lernen.
Nach einem Jahr war ich erst richtig in der lage alles mit den PICs zu 
machen. und jetzt 3 Jahre weiter behersche ich immernoch nur 60% der 
Möglickeiten von Assembler. Es ist anfangs echt hart und frustrierend.
Heute binn ich froh das ich es kann, macht echt spass und die anderen 
Programmierer bei uns in der Firma sehen immer wieder wie mann auf 
einfachste weise mit nur 6 Befehlen schneller arbeiten kann als ein 
Javaprogramm auf ner Höllenmaschiene ;-)

Fazit tue es dir an und beiß dich durch!
Ps. ich habe nachrichtentechnik Studiert und hatte keinerlei ahnung von 
Programmieren davor.

von Cyblord -. (cyblord)


Lesenswert?

Georg G. schrieb:
> cyblord ---- schrieb:
>> Moderne Sprachen UND moderne Werkzeuge.
>
> Es wird dich erschrecken: Auch Mechaniker, die später mit CNC Maschinen
> arbeiten, fangen mit Handsäge und Feile an.
Jaja immer derselbe Vergleich. Warum schickst du ihn dann nicht direkt 
zu den Lochkarten? Anforderungen verändern sich nunmal. Probleme von 
damals (begrenzte Speicher und Rechenleistung) sind verschwunden, viele 
neue Probleme sind aufgetaucht (Wartbarkeit, Erweiterbarkeit, 
Multithreading, Cloud, Sicherheit usw.).

> Was bei der von dir favorisierten Klicke-Bunti-Hackerei herauskommt,
> erleben wir täglich.

Ja was denn? Vergleiche doch mal die Programme heute mit denen vor 15-20 
Jahren. Und jetzt? Meinst du dahin will jemand zurück? Was willst du uns 
damit sagen? Du bist halt ein ewig gestriger der unqualifiziert über 
moderne Sachen mault. Früher war alles besser usw. Da weiß ich schon 
alles da gibts dann auch leider nichts zu Diskutieren weil gegen ne 
fundierte Meinung kommt man nicht an. Tip: Deine 90er Konsolenprogramme 
will niemand mehr. Klicki-Bunti ist schon wieder out. Heute wird nur 
noch gewischt und getouched. Mag dir nicht gefallen aber du kannst 
deshalb nicht an der Realität vorbeiprogrammieren und Anfängern den 
alten Kram von vorgestern aufbrummen.

gruß cyblord

von Panda (Gast)


Lesenswert?

cyblord ---- schrieb:
> Heute wird nur noch gewischt und getouched.

Mhh ich dachte hier hätte ich mit Experten zu tun.

von Wusel D. (stefanfrings_de)


Lesenswert?

> Dein Workshop scheint eher für Schüler zu sein.

Ja genau.

Ich finde den Tipp mit Pascal gar nicht so verkehrt. Wie Georg schon 
schrieb, kommt Borland Pascal mit einem sehr guten Debugger daher und 
die Sprache verhindert, dass man sich selbst als Anfänger ungewollt 
komplizierte Fallsctricke baut.

Aber: Das gleiche gilt auch für Java, nur ist Java derzeit viel 
angesagter.

Deswegen ziehe Java dem alten Pascal vor, wenn man schon die Haken und 
Ösen von C erstmal vermeiden will. Der Umstieg von Java nach C/C++ 
sollte leicht sein.

Ich habe in dieser Reihenfolge gelernt: Assembler, Basic, Pascal, C, 
C++, Perl, Java. Aber ich würde es heute nicht nochmal so wiederholen.

von Georg G. (df2au)


Lesenswert?

Panda schrieb:
> Ist MASM32 auch ein "modernes TOol" ?

Er wurde mal (so wird unter der Hand berichtet) als Folterwerkzeug 
konzipiert.
Du brauchst viel Leidensfähigkeit und Geduld.

von Cyblord -. (cyblord)


Lesenswert?

Panda schrieb:
> cyblord ---- schrieb:
>> Heute wird nur noch gewischt und getouched.
>
> Mhh ich dachte hier hätte ich mit Experten zu tun.

Ja gut an so Oberchecker wie dich kommt niemand ran...

Was gefällt dir jetzt an dieser Aussage nicht? Was meinst du wohin die 
GUIs in Zukunft gehen? Schau dir den Absatz von Tablets vs. PC/Notebooks 
an, schau dir Win8 an. Ich bin davon auch nicht begeistert aber rate mal 
wie schon bald 95% aller Nutzer deine Programme bedienen wollen.

gruß cyblord

von Matthias K. (rino1)


Lesenswert?

Panda schrieb:
> Hallo Mattias,
> ja mit Hardware kenne ich aus. Das ist mein Hobby. Ich baue öfter
> Computer zusammen.
>
> Was ich mit Programmieren machen will? Mhh also ein Progamm schreiben,
> das dann auf einem Computer läuft. Ist das nicht immer so?

Also besteht dein Hardwarewissen ehr daraus fertige Hardware passend 
aufeinander abzustimmen,damit ein maximales Ergebnis heraus kommt.

Wenn dich ehr die Hochsprache interessiert, d.h. du möchtest ein 
Programm auf einen Rechner, wie auch immer der aussieht, mit einem 
Betriebsystem laufenlassen, dann ist C, so heißt es, ein recht guter 
Startpunkt,
Es ist noch Hardware näher als die anderen Hochsprachen.

Es kommt jetzt ganz drauf an was du machen willst, weil es gibt viele 
Sprachen die Ihre vorteile und Nachteile haben, und zum Teil nur für 
spezielle Fälle entwickelt wurden.

Darum war auch meine Frage was dein Ziel ist. Besser formuliert was soll 
das Einsatz Gebiet sein. Z.B. Animation...

Assembler ist eine der mächtigsten Sprachen, wie ich finde. Aber äußerst 
aufwendig.
Das kann man als Problem ohne Lösung sehen oder als Hinternis über das 
man erst mal klettern muss.

Die ganz wichtige Frage ist: Wie nahe möchtest du der Hardware kommen?

Gib einfachmal in eine Suchmaschine ein: Texteditor mit Assembler 
Syntax.

Dann muss du ausprobieren was dir ambesten gefällt.

Gruß,
Matthias

von Panda (Gast)


Lesenswert?

cyblord ---- schrieb:

> Was gefällt dir jetzt an dieser Aussage nicht? Was meinst du wohin die
> GUIs in Zukunft gehen? Schau dir den Absatz von Tablets vs. PC/Notebooks
> an, schau dir Win8 an. Ich bin davon auch nicht begeistert aber rate mal
> wie schon bald 95% aller Nutzer deine Programme bedienen wollen.

Ich möchte mathematische Berechnungen auf einem Prozessor programmieren, 
und keine Handy-App machen. Windows mag ich auch nicht.


@alle anderen: Vielen Dank für die zahlreichen Tipps.
Ich denke die Entscheidung fällt zwischen C und Assembler. MASM32 ist ja 
leider nur für Windows, deshalb schaue ich mir gerade Linux-Assembler 
an. Ich glaube damit kann ich glücklich werden.

von Wegstaben V. (wegstabenverbuchsler)


Lesenswert?

cyblord ---- schrieb:
> Panda schrieb:
>> cyblord ---- schrieb:
>>> Heute wird nur noch gewischt und getouched.
>>
>> Mhh ich dachte hier hätte ich mit Experten zu tun.
>
> Ja gut an so Oberchecker wie dich kommt niemand ran...
>
> Was gefällt dir jetzt an dieser Aussage nicht? Was meinst du wohin die
> GUIs in Zukunft gehen? Schau dir den Absatz von Tablets vs. PC/Notebooks
> an, schau dir Win8 an. Ich bin davon auch nicht begeistert aber rate mal
> wie schon bald 95% aller Nutzer deine Programme bedienen wollen.
>
> gruß cyblord


@cyblord:
Nur ist es so, das "wischen und tatschen" (also sprich: GUI zur 
Bedieneingabe und zur Visualisierung) nur ein (gegebenenfalls recht 
geringer) Teil einer EDV-Anwendung sind.

Für z.B. ein Schachprogramm oder komplexe Steuersysteme (z.B. eine 
Motorsteuerung im Auto) sind Benutzeroberfläche und Assembler so 
ziemlich das unwichtigste was man dort dringend benötigt. 
Regelalgorithmen, Propagation, Backtracking etc. wollen erst mal "vom 
Grunde auf" verstanden und implementiert sein. Ob das nun über Register 
A oder Register B passiert ist ziemlich schnuppe.

von Cyblord -. (cyblord)


Lesenswert?

Panda schrieb:
> Ich möchte mathematische Berechnungen auf einem Prozessor programmieren,
> und keine Handy-App machen. Windows mag ich auch nicht.

Das ist doch schonmal ne Aussage. Dann wissen wir endlich auch mal WAS 
du eigentlich tun willst.

Dafür eignet sich C schon auch. So wie eig. jede andere Sprache. Aber 
für mathematische Dinge eignen sich spezielle Sprachen besser, als da 
wären R, Mathlab, Octave z.B.

Assembler hingegen eignet sich dafür überhaupt nicht. Allgemein würde 
ich davon auf dem PC die Finger lassen. Bringt dir nichts.

@Buchsler:
Das ist mir schon klar. Aber die Möglichkeiten der GUI hängen stark von 
der verwendeten Kombi aus Sprache und IDE ab. Die Logik im Hintergrund 
und die Datenstrukturen eher weniger. Das ordinäre "PC-Programm" lebt 
nunmal meist von der GUI.

gruß cyblord

von frank (Gast)


Lesenswert?

> Ich möchte mathematische Berechnungen auf einem Prozessor programmieren,

> deshalb schaue ich mir gerade Linux-Assembler an.

> Ich glaube damit kann ich glücklich werden.

Ich glaub nich...

von Panda (Gast)


Lesenswert?

Mit Matlab habe ich schonmal gearbeitet, aber das ist mir zu langsam. 
Deshalb möchte ich jetzt selbst programmieren. GUIs sind doch 
schnickschnack, ich dachte Programmierer verwenden Konsolen!?

von Jürgen D. (poster)


Lesenswert?

Panda schrieb:
> Ich möchte mathematische Berechnungen auf einem Prozessor programmieren
Und das ist in Assembler nicht so einfach, du hast da ja keine 
Varablentypen wie bei den "richtigen" Programiersprachen sondern 
einfasch nur Speicherzellen im RAM. Du maust da alles zu Fuß machen wie 
Übertrag, Vorzeichen, Kommastellen u.s.w.
Winkelfunktionen sind auch recht lustig in Assembler.

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


Lesenswert?

Panda schrieb:
> weil ich mal gehört habe, das Assembler-Programmierer eigentlich
> alle anderen Sprachen auch beherschen.
Was nicht so alles dahingelabert wird...
> Ist das eine gute Entscheidung?
Nein, eine Fehlinformation. Weil es den einen einzigen Assembler 
sowieso nicht gibt. Und Assembler-Programmierer sind "näher dran" an der 
Hardware, deshalb tun sie sich bei der harwarenahen 
(uC-)Programmierung leicht(er). Aber Assembler auf dem PC? Das ist 
Blödsinn. Selbst BIOS-Programmierer sehen zu, dass sie schnellstmöglich 
auf die Hochsprachenebene können.

Panda schrieb:
> Ich möchte mathematische Berechnungen auf einem Prozessor programmieren,
> und keine Handy-App machen.
Was denn genau? Denn gerade Mathematik ist doch am allereinfachsten 
mit einer Hochsprache zu bewältigen. Nur wenn es um schnelle EA-Aktionen 
und Zugriffe auf Register geht, dann siehst du mit Assembler Land. Aber 
z.B. eine Matrizenmultiplikation mit Double in Assembler zu machen ist 
wie einen gorßen Nagel mit der Faust reinzudreschen...

> Windows mag ich auch nicht.
Ach so, auf dem Niveau sind wir unterwegs...  :-/

von Cyblord -. (cyblord)


Lesenswert?

Panda schrieb:
> Mit Matlab habe ich schonmal gearbeitet, aber das ist mir zu langsam.
Was willst du denn Berechnen? Gehts da um Number-Crunching? Dann würde 
ich gleich entsprechende SDKs für Berechnungen auf modernen Grafikkarten 
empfehlen. Damit bekommt man ordentlich wumms. Das ganze wird dann in 
C/C++ programmiert.

> Deshalb möchte ich jetzt selbst programmieren. GUIs sind doch
> schnickschnack, ich dachte Programmierer verwenden Konsolen!?
Weils ja auch DEN Programmierer gibt. Kommt drauf WAS du programmieren 
willst.

gruß cyblord

von Oliver (Gast)


Lesenswert?

Panda schrieb:
> weil
> ich mal gehört habe, das Assembler-Programmierer eigentlich alle anderen
> Sprachen auch beherschen.

Das ist ein etwa so, als wenn du das Alphabet lernst. Damit kannst du 
dann zwar theoretisch alle Wörter der Fremdsprachen schreiben, die 
dieses Alphabet nutzen, aber verstehen tust du nix.

Wenn du auf dem PC anfangen willst, nimm Java. Da gibt es ausreichend 
Infos im Netz, auch auf Deutsch, die IDE läuft "out of the box", und 
auch sonst spricht erst einmal nichts dagegen.

Oliver

von Panda (Gast)


Lesenswert?

Oliver schrieb:

> auch sonst spricht erst einmal nichts dagegen.

In Java wurden doch erst letztens viele Sicherheitslücken gefunden. Ich 
denke die Macher von Java werden Sicherheit doch auch als Ziel gehabt 
haben. Nun bin ich unsicher, was dies über die anderen Ziele von Java 
aussagt.

@cyblord: Ja, dein Argument mit den Grafikkarten macht C wiederrum 
interessanter...

@Lothar: Also ich denke das Assembler auf dem PC grundsätzlich KEIN 
Blödsinn ist. Was bringt dich zu dieser Aussage?

von Amerize (Gast)


Lesenswert?

Panda schrieb:
> Also ich denke das Assembler auf dem PC grundsätzlich KEIN
>
> Blödsinn ist. Was bringt dich zu dieser Aussage?

Es ist kein Blödsinn, aber für das was du machen willst einfach nicht 
geeignet.

von Peter II (Gast)


Lesenswert?

Panda schrieb:
> Also ich denke das Assembler auf dem PC grundsätzlich KEIN
> Blödsinn ist.

weil es einfach die entwicklungszeit in keinen verhältnis zur Rechenzeit 
steht. Was hilft es dir wenn dein ASM Programm 10% schnell als ein C 
programm ist, du aber dafür 1Jahr länger daran programierst?

Und was ist wenn du dein Programm speziell für I7, AMD, SSE, SSE2 
optimieren willst? Bei C sagst du es einfach den compiler. bei ASM 
fängst du erstmal ein neu programmieren.

ASM macht auf keinen CPUs (µC) schon sinn, weil man dort alles noch 
überschaubar ist. Auf einem PC gibt es komplett andere anforderungen. Da 
geht es teilweise um die reihenfolge der ASM befehle die dann eventuell 
von der CPU schneller verarbeitet werden. Soetwas wirst du dir nicht so 
schnell anlesen können.

Lerne C oder meinetwegen auch JAVA und wenn dir das wirklich zu lansam 
ist. Dann kannst du dir überlegen den langsamen teil in ASM auszulagern. 
Aber doch bitte nicht das komplette programm ein ASM schreiben.

von Cyblord -. (cyblord)


Lesenswert?

Panda schrieb:
> @Lothar: Also ich denke das Assembler auf dem PC grundsätzlich KEIN
> Blödsinn ist. Was bringt dich zu dieser Aussage?

Doch ist es. Es ist totaler Blödsinn. Macht auch niemand ohne Not. Not 
ist es dann wenn du ein eigenes Betriebssystem oder hardwarenahe Treiber 
o.ä. programmieren willst.

Aber warum probierst du es nicht einfach selbst aus?

gruß cyblord

von Panda (Gast)


Lesenswert?

@Peter: Ich bin verwirrt, ist die CPU nicht Teil eines PCs?

von Panda (Gast)


Lesenswert?

@cyblord: Ich denke, solange es Spezialisten gibt, die so etwas machen, 
wird es kein Blödsinn sein. Evtl. nicht ganz das richtige für meine 
Anwendung, aber das ist ja etwas anderes. Meine Anwendung ist ja auch 
kein Blödsinn ;)

von Matthias K. (rino1)


Lesenswert?

Panda schrieb:
> @Lothar: Also ich denke das Assembler auf dem PC grundsätzlich KEIN
> Blödsinn ist. Was bringt dich zu dieser Aussage?

Zeitlicher Aufwand ist rießig und es gibt keine Bibliotheken.

Du müsstest für dich alles erst erschaffen.
Das kann man vieleicht so vergleichen: Wenn du ein Haus baust nur aus 
Lehm und Wasser und das einzige Werkzeug sind deine Hände.


Gruß Matthias

von Peter II (Gast)


Lesenswert?

Panda schrieb:
> @Peter: Ich bin verwirrt, ist die CPU nicht Teil eines PCs?

jeder PC hat (mindestens) eine CPU. Aber nicht jeder CPU gehört zu einem 
PC.

von Prof Dr Ing Mastermurks (Gast)


Lesenswert?

Also mir macht x86/64 assembler coden auch Spass, allerdings dauert es 
erheblich länger als C++, unter anderem auch deswegen, weil die meisten 
APIs für C/C++ ausgelegt sind. Deshalb braucht man auch oft Disassembler 
wie IDA Pro um zu schauen, wie es in irgendwelchen C Programmen gemacht 
ist.

C/C++ ist da um irgendwas schnell mit wenig Code hinzumurksen, was dann 
anständig aber nicht superschnell läuft und wo die meisten 
nicht-übergeeks den Quellcode noch halbwegs verstehen. Man ärgert sich 
über den Compiler, weil er dämliche, unverständliche Fehlermeldungen 
ausspuckt

Asm ist da um irgenwas sehr schnell und minimalistisch klein zu machen, 
braucht allerdings Zeit und meist mehr code (ausser bei z.B. 
Bitoperationen, da ist ASM definitiv besser) und hat manchmal sehr 
gemeine Bugs. Nur wenige Leute können den Quellcode lesen. Man ärgert 
sich über sich selbst weil man dumme Bugs fabriziert und es der 
Assembler ohne Fehlermeldung assembliert.

Tip: Fang mit FASM oder event. auch NASM an und lass den M$ Schrott MASM 
weg, das ist proprietärer Windowssschrott. FASM assembliert sich selbst 
und läuft auf fast allem was einen x86 Core hat.

von Jürgen D. (poster)


Lesenswert?

Ich hatte vor vielen Jahren mal probiert einen TI DSP in Assembler zu 
programmieren. Das war eigendlich unmöglich.
Bei jeden befehl musste man mit angeben welcher 
Registersatz/Akku/Statusregister u.s.w verwendet werden soll.
Die Ergebnisse standen dann auch noch nicht beim nächsten Befehlziklus 
zur Verfügen sonden meist 8 bis 32 Befehle später.
Wenn man da klassisch Programmieren wollte muste man etsprechend viele 
NOP einfügen.
Optimal währe da mehrere Berechnungen ineinander zu verschachteln (daher 
auch die wählbaren Registersätze), aber zu Fuß verhaspelt man sich da 
unter Garantie.
Bei einer Multikern CPU im PC mit Coprozessor, Piplines und was weis ich 
ist das bestimmt auch nicht besser.

von Panda (Gast)


Lesenswert?

Gibt es eine Faustformel, bei welchen Aufgaben CPUs schneller sind, und 
wann man besser Grafikkarten einsetzt?

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Das Schweizer Taschenmesser für AVR, PIC, Z80, 8080, 8085
http://www.oshonsoft.com/index.html

Damit kannst du auch mathematische Berechnungen durchführen (z.B. 
elliptische Integrale lösen).

von Cyblord -. (cyblord)


Lesenswert?

Joe G. schrieb:
> Das Schweizer Taschenmesser für AVR, PIC, Z80, 8080, 8085
> http://www.oshonsoft.com/index.html
>
> Damit kannst du auch mathematische Berechnungen durchführen (z.B.
> elliptische Integrale lösen).

Er will PC...

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

cyblord ---- schrieb:
> Er will PC...

Dann sehe ich das Problem nicht, VI anwerfen, loslegen...

von Peter II (Gast)


Lesenswert?

Joe G. schrieb:
> Dann sehe ich das Problem nicht, VI anwerfen, loslegen...

er kennt VI nicht, er kann bis jetzt nur Hardware

von Cyblord -. (cyblord)


Lesenswert?

Joe G. schrieb:
> cyblord ---- schrieb:
>> Er will PC...
>
> Dann sehe ich das Problem nicht, VI anwerfen, loslegen...

So läuft das heute nicht mehr. Ich schrieb ja oben schon, er könnte 
schon lange losgelegt haben.
Aber da muss man erstmal über x86 Assembler philosophieren und außerdem 
ist ihm eine ordinäre x86 CPU vielleicht zu langsam....

gruß cyblrod

von Panda (Gast)


Lesenswert?

Nur weil ich nicht richtig programmieren kann, heisst das nicht, dass 
ich keinen Editor bedienen kann...zumindest kenne ich die Definitionen 
von PC und CPU.

von Prof Dr Ing Mastermurks (Gast)


Lesenswert?

@Jürgen D.
Schade das es nicht sowas wie ein Out of Order Assembler gibt, bei 
welchem man zwar in Assembler programmiert und dementsprechend die 
Vorteile der spezifischen ASM Befehle hat, aber der Assembler die 
Befehle und Register für jeden x86 CPU Typ so umsortiert, das es keine 
Pipeline locks gibt.

Ich weiss, das es die CPU zu einem gewissen Teil mit Out of Order 
execution und Register renaming selbst macht, denke aber das ein gut 
gemachter Assembler das wesentlich besser könnte, als es die CPU oder es 
Menschen können. Gab zwar mit dem Itanium irgendwelche Ansätze in die 
Richtung, hat sich aber meines Wissens nie richtig etabliert.

von Panda (Gast)


Lesenswert?

@cyblord: Willst du weiter schmollen, oder hast du zu meiner Frage über 
CPU vs. Grafikkarte vlt. noch einen Tip?

von Cyblord -. (cyblord)


Lesenswert?

Panda schrieb:
> Nur weil ich nicht richtig programmieren kann, heisst das nicht, dass
> ich keinen Editor bedienen kann...zumindest kenne ich die Definitionen
> von PC und CPU.

Unter Linux hast du den GCC doch wahrscheinlich eh schon drauf.

Dann nimm doch einen Editor deiner Wahl, dieses Online-Buch:

http://openbook.galileocomputing.de/c_von_a_bis_z/

und leg los mit C. Damit kannst erstmal relativ schnelle Berechnungen 
ausführen.

gruß cyblord

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Panda schrieb:
> @cyblord: Willst du weiter schmollen, oder hast du zu meiner Frage über
> CPU vs. Grafikkarte vlt. noch einen Tip?

Konzentriere dich doch einfach mal auf das Wesentliche. Lasse allen 
Schnickschnack beiseite und programmiere dein erstes "Hello World" in 
Assembler. Erst dann kommt das nächste Problem an die Reihe.

von Cyblord -. (cyblord)


Lesenswert?

Panda schrieb:
> @cyblord: Willst du weiter schmollen, oder hast du zu meiner Frage über
> CPU vs. Grafikkarte vlt. noch einen Tip?

Wenn du damit rausrückst welches Passwort du knacken willst, dann kann 
man dir evt. die richtige Hardware empfehlen. Oder gehts um Bitcoins?

von Panda (Gast)


Lesenswert?

@cyblord: Nein, ich will eine simulation durchführen, wofür ich viele 
Gleichungen lösen muss. Sehr sehr viele, bis zu dritter Ordnung.

von Wusel D. (stefanfrings_de)


Lesenswert?

@Panada

Die Sicherheitprobleme sind nicht in Java, sondern in dem Java Plugin. 
Das ist ein himmelweiter Unterschied.

Java kann auf alle Dateien zugreifen und alle Windows API Funktionen 
aufrufen. Das ist Sinn der Sache, genau wie in allen anderen 
Programmiersprachen.

Nur will man so viele Freiheiten nicht den Programmen erlauben, die man 
unfreiwillig in Webseiten eingebettet geladen hat. Dafür kann Java aber 
nix, diese Schutzfunktionen, die nicht so gut sind, wie sie sein 
sollten, sind Bestandteil des Java Plugins.

Ansonsten müsstest Du ALLE gewöhnlichen Programmiersprachen verbannen. 
Aber ohne Programmiersprache kannst Du auch keine Programme schreiben.

Und wo due gerade so schön Assembler empfiehlst: Sag uns doch mal bitte, 
welche Security relevanten Features Assembler bietet. Da bin ich aber 
gespannt!

von der Gast (Gast)


Lesenswert?

Ich sags mal so (bezugnehmend auf den Zwist zur Grundausbildung, bei dem 
ich definitiv auf der Seite der erst gehen, dann Laufen Fraktion bin)

Wenn ich drauf los programmiere und ich auf Grund mangelnden Wissens 
nicht weiß, wo und wie mein Programm Zeit versenkt, kann ich jede 
Sprache und 5 Grafikkarten benutzen - es kommt trotzdem Mist raus.
Gerade bei Software in Richtung Simulationen und number crunching, wo es 
eben merklich auf die Performance ankommt sollte man Basiswissen haben.

Die gui fürs Handy kann man sicher schnell und modern per Flash machen.

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Panda schrieb:
> Nein, ich will eine simulation durchführen, wofür ich viele
> Gleichungen lösen muss. Sehr sehr viele, bis zu dritter Ordnung.

In Assembler? Der 1. April ist doch schon vorbei und Himmelfahrt erst 
morgen ?

von Peter II (Gast)


Lesenswert?

Stefan Frings schrieb:
> Die Sicherheitprobleme sind nicht in Java, sondern in dem Java Plugin.
> Das ist ein himmelweiter Unterschied.

unsinn, die schutzfunktionen sind in JAVA. Sie werden nur von den Plugin 
aktivert. Und es gibt methoden in den Reflextions wo man die Herkunft 
von Klassen änder werde kann - das ist der BUG und dieser ist im JAVA 
selber und nicht im Plugin.

von Cyblord -. (cyblord)


Lesenswert?

Panda schrieb:
> @cyblord: Nein, ich will eine simulation durchführen, wofür ich viele
> Gleichungen lösen muss. Sehr sehr viele, bis zu dritter Ordnung.

Dann hängt die Geschwindigkeit nicht wenig davon ab, wie geschickt du 
das implementierst. Für Gleichungssysteme sollte es eigentlich auch 
einiges an libs geben welche da vielleicht helfen. Die solltest du dann 
auch nutzen.

Für massive parallelisierung sind Grakas nicht schlecht, da du sehr 
viele Mini-CPUs (auch Shader genannt) hast und das ganze Ding auf 
Parallelität ausgelegt ist. Genau für solche "Supercomputing" Dinge wie 
Simulationen sind die SDKs der Graka-Hersteller ja gedacht. Ich würde da 
an deiner Stelle mal deren Dokus durcharbeiten und mit den SDKs 
experimentieren. Aber meist geht das nur mit einigen wenigen 
hochpreisigen Grakas.

Trotzdem musst du vorher programmieren können.

> Die gui fürs Handy kann man sicher schnell und modern per Flash machen.
Wann hast du die letzte App gemacht? Das läuft in Java (Android) oder 
Objective-C (iOS).

gruß cyblord

von Panda (Gast)


Lesenswert?

@cyblord: Danke für die Aufklärung. Ich denke, ich suche jetzt mal nach 
Grafikkarten-Libraries für C++. Was hier rumliegt ist eine Nvidia GTX 
680.

von Cyblord -. (cyblord)


Lesenswert?

Woher weißt du denn überhaupt dass ein normaler PC dafür zu langsam ist?

@der Gast:
Ansonsten stimme ich dir übrigens zu.

von Panda (Gast)


Lesenswert?

Habe einen Teil mit Matlab versucht, das hat mich geschockt.

von Ja geil (Gast)


Lesenswert?

popcorn

von Cyblord -. (cyblord)


Lesenswert?

Panda schrieb:
> Habe einen Teil mit Matlab versucht, das hat mich geschockt.

Das kann man aber IMO nicht vergleichen. Wird Matlab Code überhaupt 
kompiliert oder evt. sogar nur interpretiert?
Ich würde es nochmal mit reinem C normal auf nem schnellen PC testen. Da 
kannst du auch Multicore Programmieren und bei nem 8 Core CPU das ganze 
dann auch ziemlich beschleunigen. Erfordert aber natürlich einiges an 
Wissen udn Erfahrung. Mal schnell kann man sowas nicht machen.

gruß cyblord

von der Gast (Gast)


Lesenswert?

Wieso suchst du c++ libraries wenn du die Sprache nicht mal ausgewählt 
hast... Die zu lösenden linearen Gleichungen lassen mich auch stutzen so 
wie du es geschrieben hast.
Bei mir hat mein eingebauter Sensor Vollausschlag. Bist du ein Troll 
oder eher Richtung Schüler / Selbstüberschätzung?

von Panda (Gast)


Lesenswert?

Nein, bin schon lang kein Schüler mehr.
Scheinbar kann man mit C++ Grafikkarten programmieren, also entscheide 
ich mich dafür. Ich glaube Assembler ist mächtiger, aber scheinbar ist 
es für mein Problem ja weniger geeignet. Danke an alle...

von Peter II (Gast)


Lesenswert?

Panda schrieb:
> Scheinbar kann man mit C++ Grafikkarten programmieren, also entscheide
> ich mich dafür.

halte uns bitte auf dem laufenden, für jemand der gerade anfängt zu 
programmieren gleich mit einzusteigen ist schon seehr sportlich.

von Panda (Gast)


Lesenswert?

Ja, wird schon klappen. Die Mehrheit der Forenmitglieder hier scheint ja 
recht pessimistisch eingestellt zu sein, um nicht zu sagen zickig. Freut 
euch, die Sonne scheint.

von Verwirrter (Gast)


Lesenswert?

> Bei mir hat mein eingebauter Sensor Vollausschlag. Bist du ein Troll
> oder eher Richtung Schüler / Selbstüberschätzung?

Glaube nicht, dass er ein Troll ist. Ich vermute mal er ist mehr von der 
Fraktion

"Ich möchte jetzt meine eigenen Computerspiele programmieren. So mit 3D 
und so. Damit ich die nicht mehr kaufen muss. Bitte helft mir!"

Abteilung: Null Plan bei totaler Selbstüberschätzung.

PS: ist nicht böse gemeint. ;)

Die überschaubare Löung deiner Probleme: C
Die Frustrationsgrenze für dich: C++
Die unüberwindbare Hürde für dich: ASM

letzteres weil nicht geeignet für: Programmieranfänger (1 Mannjahr 
lernen ist bei Assembler GAR NICHTS)

Achja, früher in Zeiten des C64 war das alles mal anders. Da waren die 
BS und Prozzis auch noch überschaubar.

Wenn du mit C warm geworden bist kannst du auch Assembler hinzunehmen 
(wirst du aber dann in aller Regel nicht mehr wollenbrauchen)

;)

von Kai S. (kai1986)


Lesenswert?

Hallo,

die Arbeitsgruppen, die sich in der theoretischen Physik mit 
Simulationen beschäftigen, programmieren mit C. Zudem wird auch nur eher 
in Ausnahmefällen die Rechenleistung von Grafikkarten abgerufen. Das 
meiste läuft auf ganz normalen x86er CPUs. Für C gibt es 
leistungsfähige, mathematische Bibliotheken. Unter Linux fällt mir da 
spontan die GSL Bibliothek ein. Um hohe Rechenleistungen zu nutzten muss 
der Berechnungsprozess auch parallelisierbar sein, was dann auch bei der 
Programmierung umgesetzt werden muss. Dabei kommt es oft vor, das z.B. 
eine Berechnung mit mehreren unterschiedlichen Parametersätzen 
durchgeführt werden muss. Für solche Probleme ist die "Parallelisierung" 
auf einem Standard Multicoreprozessor angenehm, weil man das 
"Singlecoreprogramm" einfach mehrfach mit unterschiedlichen 
Startparametern laufen lassen kann, ohne Zusatzaufwand beim 
Programmieren zu haben.

Wenn die Rechenleistung wirklich so knapp ist, dann liegt das auch oft 
eher an der Funktion des Programms und weniger an der 
Programmiersprache. Ich selbst hatte bei einem meiner frühen Projekte 
ein Programm geschrieben, das geschätzt für die komplette Berechnung ca. 
150h benötigt hätte. Durch die Verbesserung des Algorithmus lies sich 
das ganze am Ende auf ca. 5 Sekunden Berechnungszeit drücken. Und das 
nur durch einfügen von geschickteren Abbruchbedingungen und Ausnutzung 
von Symetrien.

Von daher meine Empfehlung, lern C und achte beim Programmieren darauf, 
ein gutes Konzept (erstellt mit Papier und Bleistift) zu haben, das 
bringt mehr als die schnelleste Sprache oder die leistungsfähigste 
Hardware und lässt sich bei Folgeprojekten oft hervorragend 
wiederverwenden.

Gruß Kai

von Karl H. (kbuchegg)


Lesenswert?

Da ist ja wieder mal ganz großes Damentennis hier.

Panda.
Kauf dir einen Kernighan & Ritchie, installier dir einen freien 
C-Compiler und fang an den K&R von vorne durchzuarbeiten und die dort 
angegebenen Übungen zu machen. Bis du damit durch bist, fällt bereits 
der erste Schnee.

Und DANN kann man weitersehen!

Vor deinem geisteigen Auge zieht bereits ein Spitzenplatz bei der Tour 
de France vorbei, garniert mit einigen gelben Trikots ... dabei kannst 
du noch nicht mal Dreiradfahren.

von Uwe (Gast)


Lesenswert?

Mathematische Berechnungen kann man gut beschleunigen wenn man die SIMD 
(z.B. SSE, SSE2 usw.) Einheiten der CPU benutzt. Dafür gibt es auch gute 
Werkzeuge wie Intels C Compiler. Mit der Hand geht das natürlich noch 
besser aber da braucht man schon ... Durchhaltevermögen ;)
Ansonsten macht man Mathematische Berechnungen mit der FPU. Diese ist 
aber acuh ... Gewöhnungsbedürftig. Also für Fließkomma und 
trigonometrische Funktionen nimmt man C (bzw. C++). Der Optimizer macht 
den Rest.
Ich bin ein Assembler Fan (mach ich schon seit ich 13 bin (68k)).
Naja es ist gut Assembler zu können, denn so lernst du erst, wie ein 
Computer wirklich funktioniert. Aber FPU in Assembler ... Sinnfrei

von Tom B. (botas)


Lesenswert?

C, ASM,.... ist doch erst mal alles egal. Erst mal überhaupt was 
programmieren. Möglichst einfach um nicht gleich den Spaß zu verliehen.
Da ist Pascal, Basic oder irgendeine Sciptsprache wie PHP gar nicht 
schlecht. Wenn das dann klappt (hello world  Funktionen  
Fallunterscheidungen /...) dann erst mal erlesen welche 
Programmierparadigmen und Datenstrukturen es gibt.
Wenn dann noch der Wunsch existiert weiter zu machen:  Glückwunsch! Die 
Wahl der Sprache hat sich bis hier hin schon ganz von allein deutlich 
eingeschränkt ;-)

von Reinhard #. (gruebler)


Lesenswert?

Tom B. schrieb:
> C, ASM,.... ist doch erst mal alles egal. Erst mal überhaupt was
> programmieren.

Genau meine Meinung. Versuch's doch erst mal mit einer Excel-Tabelle.

von Joachim D. (Firma: JDCC) (scheppertreiber)


Lesenswert?

Mit Assembler bist Du Gott. Nichts anderes kann einen Rechner
so schön ins Nirwana schicken. Effektiv ist es natürlich nicht ;)

Können sollte man Assembler, man bekommt ein Gefühl für die
Maschine (das gibt Dir keine andere Programmiersprache).

von oldmax (Gast)


Lesenswert?

Hi
Nun habt ihr euch wirklich mal wieder als Glaubensgemeinschaft geoutet. 
Auch wenn ich Aussagen unterstütze: "mit Assembler arbeitet man direkt 
an der Hardware" und selber auch Assembler bei µC vorziehe, auf einem PC 
Assembler zu programmieren ist so ziemlich der letzte Weg einer Lösung 
für ein Problem. Deshalb macht es mir immer wieder Spaß, solchen 
Diskussionen zu folgen.
Ganz klar: wer auf einem PC Assembler schreibt ist entweder ein 
Masochist oder ein Spezialist für ganz besondere Aufgaben. Ein Beispiel:
Ich hab mal noch unter Win3.11 einen Lagerverwalter programmiert, der 
eine Maschine (Lager) organisieren musste. Die Maschine gab die Anfrage 
"Wohin-Woher" und erwartete in einer kurzen Zeit eine Antwort. Nun war 
es aber auch vorgesehen, das Ausdrucke vom Lagerbestand von den 
Bedienern angefordert wurden und wer noch diese alten Betriebssysteme 
kennt, weiß auch, das Drucken den PC erst einmal beschäftigt hat. Da 
ging nix anderes. Andere Funktionen "z.b. Dateien laden, speichern" 
ebenfalls. Also musste für diesen Fall der Drucker im Interrupt 
betrieben werden. Da hab ich dann mal auf einem PC mit Assembler 
"nachgeholfen". Aber nur für die Druckroutine. Nicht den gesamten 
"Lagerverwalter".
Heut ist so etwas äußerst selten. Für jemanden, der programmieren lernen 
möchte, und das auf einem PC, da muss ich sagen, nimm eine Hochsprache 
und verstehe erst einmal das Wort "programmieren". Nimm dein Ziel und 
setz es in Basic, Pascal oder C oder womit auch immer um. Dann kommen 
die eigentlichen Probleme und dann geht es ans Aufgaben lösen. An dieser 
Stelle wirst du froh sein, wenn dich die Programmiersprache mit 
Funktionen und Routinen unterstützt und du nicht alles per Hand in 
irgendeinem Register zusammenschrauben musst.
Wer programmieren kann, der fragt nicht nach der Sprache. Es schaut nur, 
was ist am besten geeignet. VB, Visual C, C++, Pascal, Delphi, Java, 
Assembler: alles nur Sprachen, aber keine Programmierung. Und: nicht 
wenn du eine Sprache davon kannst, kannst du auch andere, aber kannst du 
programmieren, dann lernst du auch die geeignete Sprache dazu relativ 
leicht.
Dabei ist es völlig unerheblich, ob heutzutage Programmierer vor einer 
Konsole sitzen oder mit "Wisch und Weg" eine Aufgabe lösen.
Gruß oldmax

von Hans (Gast)


Lesenswert?

Ich glaube nicht dass die Sprache den wirklich entscheidenden Teil der 
Geschwindigkeit ausmacht.

Viel mehr solltest du dein Wissen in Algorithmen und Komplexitätstheorie 
vertiefen. Die Geschwindigkeitssteigung dürfte in den meisten Fällen 
viel höher ausfallen.

Natürlich ist es so, dass wenn du von Seiten der Algorithmen alles 
ausgereizt hast, mit einer spezialisierten Sprache noch etwas mehr 
Performance herausholen kannst.

Da du an Mathematischen Problemen interessiert bist, solltest du dir 
evtl. die 
http://www.amazon.de/Numerical-Recipes-3rd-Edition-Scientific/dp/0521880688 
anschauen.

Wenn du wirklich produktiv entwickeln willst, wirst du mit Assembler 
nicht wirklich weit kommen. Jedes größere Software System wird dadurch 
viel zu unübersichtlich. Nicht ohne Grund wurden mannigfaltige Methoden 
zur Strukturierung von Software erfunden.

Selbst bei der Betriebssystem Implementierung wechselt man so schnell es 
nur geht auf eine Hochsprache.

von Wusel D. (stefanfrings_de)


Lesenswert?

Assembler ist halt am nächsten an der Hardware. Wenn das Assembler 
Programm perfekt ist, dann kann es nur schneller oder gleich schnell 
sein, wie die beste höhere Programmiersprache.

Aber dazu muss man es auch perfekt beherrschen - was gerade bei einem 
Anfänger nicht zu erwarten ist. Für Anfänger ist es erstmal wichtig, 
Methodeik und Algorithmen zu lernen (egal in welcher 
Programmiersprache).

Wer z.B. zwei Listen mit verschachtelten for-Schleifen abgleicht, dem 
kann auch Assembler nicht helfen. Und doch wird wohl jeder Anfänger es 
zuerst so versuchen. Dann merkt er, dass es bei großen Listen 
unerträglich lange dauert und kommt so zu besseren Lösungsansätzen, z.B. 
mit Hash Tabellen.

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.