Assembler: Für was/aktuell? Lernen wo, wie?
-
Das wird ja immer besser hier...
Sowohl Podschun als auch Hyde sind eher sinnlose Lektüre zum Asm-Einstieg. Vor allem Hyde, er geht sowieso nicht sonderlich in die Tiefe, bietet aber stattdessen an, eine neue Grammatik zu lernen, die nix mit Asm zu tun hat. Beim Podschun waren eher die beigelegten .asm files auf dem Datenträger spannend, aber wo ist der oder sind die denn beim E-Book? Die eher interessanteren Feinheiten im Text gehen in einem Art C-Schlauch-Strahl voller abgehobenem Gesülze ziemlich unter.
Wenn man eher bei 0 anfängt, dann braucht man eine Art Aufbauenden roten Faden. Den gibt es aber in den Nachschlagebüchern
http://www.amazon.de/Assembler-Maschinennahes-Programmieren-Anfang-Windows-Programmierung/dp/3499612240/
und
http://www.amazon.de/Assembler-Grundlagen-Programmierung-mitp-Professional/dp/3826614690/
und
http://www.amazon.de/Assembler-GE-PACKT-Ge-packt-Joachim-Rohde/dp/3826617568/eher auch nicht wirklich.
Das heißt, man ist (erstmal) gezwungen, sich diesen roten Aufbauplan selbst zu erstellen, mit Hilfe von Disassemblern und einfachen Programmen oder kleinen Assemblersoucecodes und eben den oben genannten Büchern.Rein lernpraktisch, denke ich mal, sind Assemblergrundlagen viel schneller gelernt als Hochsprachengeschichten, also kein Grund darauf zu verzichten, auch wenn gerade (wie immer) kein "Asm in 21 Tagen" Kurs verfügbar ist.
-
also übungsaufgaben erhält man sonst im netz und solange man nicht in der lage ist, komplizierteste mathematische berechnungen einzuprogrammieren, braucht man mmn mit weitergehender programmierung gar nicht anzufangen.
-
HansKlaus schrieb:
also übungsaufgaben erhält man sonst im netz und solange man nicht in der lage ist, komplizierteste mathematische berechnungen einzuprogrammieren, braucht man mmn mit weitergehender programmierung gar nicht anzufangen.
Kannst du das mal etwas genauer ausführen? Folgt man dieser Logik oberflächlich, dann kann man nur zu dem Schluß kommen, das weitergehende Programmierung nur für Meistermathematiker Sinn macht. Aber was meinst du mit "weitergehender programmierung"?
Komplizierteste mathematische Berechnungen programmieren?
-
nachfeuer,
was ist eigentlich aus deinem interaktiven Einstiegskurs geworden? Bin nämlich immer noch nicht erleuchte hinsichtlich des Begriffes „Multipass“ oder „Mutlipass-Register“!
-
mit weitergehender programmierung meinte ich beispielsweise gui-programmierung, wie sie in dem von mir genannten buch anhand von windows angerissen wird, oder auch hardwarenahe programmierung.
meistermathematiker mußt du nicht sein, aber summen-, potenz-, bruch-, wurzel- und vektorrechnung sind schon ganz gut, und programme, die nach eingabe einer funktion die drei ableitungen, die stammfunktion und bei bedarf die steigung, die krümmung und das integral (was nach landläufiger ansicht schon meitermathematik ist) ausgeben, tragen sehr gut zur "hirnaktivierung" bei und werden immer gebraucht, sofern man nicht grad nen texteditor programmieren will. es besteht natürlich die möglichkeit, alles in klickibunti zu machen, aber dafür ist visual basic dann besser geeignet.
-
HansKlaus,
dann zeig doch bitte mal schnell den Code, der Symbolisch integriert oder differenziert.
Ist ja wirklich trivial - selbst mein uralt CAS-Taschenrechner findet, wie natürlich zu erwarten, die Stammfunktionen beliebiger Funktionen.
-
es geht doch nicht darum, irgendwelche rechenmaschinen neu zu erfinden, sondern darum, das programmieren zu lernen. für irgendwelche algorithmen machst du nachher copy & paste bzw wandelst den pseudo-code dann in assemblersprache, c, oder was auch immer, um, sofern du es denn schon aufwendig machen willst und nicht einfach irgendwelche funktionsbibliotheken verwendest. wenn du von null mit assembler anfangen willst, ist es in meinen augen das beste, erstmal nur zu wissen, was man machen muß, damit zeichenketten von der tastatur eingelesen werden und was man machen muß, damit irgendwelche zeichenketten auf dem bildschirm ausgegeben werden. dann kommt es dran, diese zeichenketten in zahlenwerte umzuwandeln und zahlenwerte in zeichenketten umzuwandeln. danach kommt dann die obengenannte mathematik dran und dann kann man schon behaupten, man könne die grundzüge von assembler.
wenn einen diese dinge nicht interessieren, wäre visual basic mit sql einfach besser, da man damit supergeile programme bauen kann, ohne großartig das rad neu erfinden oder son bißchen unter die haube gucken zu müssen.
-
Was hat den bitte schon Assembler mit CASs zu tun? Genau - garnichts: so was frickelt man nicht in Assembler zusammen. Auch Ein- und Ausgabe sind nicht sonderlich erhellend, wenn man sich nicht mit der Spezifischen Hardware (datasheets und co.) auseinandersetzen will. Für Anfänger geht es Hauptsächlich darum den Umgang mit Pointer (direkt/indirekte Adressierung), Register, Flags und dem Stack zu erlernen. Die meisten fangen daher an, mit irgendwelchen Schleifenkonstrukten herum zu spielen, in denen irgendwas berechnet und/oder Ein- oder Ausgegeben wird. Um das zu bewerkstelligen, muss man kein CAS &co implementieren können!
-
Wenn man eher bei 0 anfängt, dann braucht man eine Art Aufbauenden roten Faden. Den gibt es aber in den Nachschlagebüchern
http://www.amazon.de/Assembler-Maschinennahes-Programmieren-Anfang-Windows-Programmierung/dp/3499612240/
und
http://www.amazon.de/Assembler-Grundlagen-Programmierung-mitp-Professional/dp/3826614690/
und
http://www.amazon.de/Assembler-GE-PACKT-Ge-packt-Joachim-Rohde/dp/3826617568/Das erste hab ich, dass liest sich aber wie Mist (Muss man ertragen). Nach dem Inhaltsverzeichnis scheinen mir die letzten beiden Bücher Themen an zuschneiden, welche das erste Buch nicht tut (Falls falsch bitte korrigieren^^).
Der größte Mist ist, warum zeigen die alle Beispiele unter DOS? WinAPI gehört ja da rein, aber DOS ist schon längst tot und dabei mit ner DOSBox parallel rumzuspielen ist ziemlich lästig (Finde ich jedenfalls).
Gibt es eig. auch Bücher wo Assembler anhand von AT&T Syntax (Von mir aus auch Intel), glibc und mit gcc Tools gezeigt wird? glibc wäre auch ein guter DOS ersatz, da das auch für windoof portiert ist :D.
Mfg HeavyMetalGeek.
-
Nur Masochisten quaelen sich heute noch mit Assembler rum. Lass das lieber die paar Spezialisten bei Grosskonzernen machen, die sich damit abgeben MUESSEN.
Letztlich lernt man dabei doch fast nichts, da man das Grundprinzip in einer Stunde verstanden hat und sich dann nur noch mit Mikrodetails wie "Welches Bit muss in welchem Register stehen; In Welchem Register steht der Rueckgabewert" etc. rumplagt. Weder sehr erleuchtend noch spannend.
-
-Realist- schrieb:
Nur Masochisten quaelen sich heute noch mit Assembler rum. Lass das lieber die paar Spezialisten bei Grosskonzernen machen, die sich damit abgeben MUESSEN.
Letztlich lernt man dabei doch fast nichts, da man das Grundprinzip in einer Stunde verstanden hat und sich dann nur noch mit Mikrodetails wie "Welches Bit muss in welchem Register stehen; In Welchem Register steht der Rueckgabewert" etc. rumplagt. Weder sehr erleuchtend noch spannend.
jo, wenn ich mir nur eine Stunde zum Assemblerlernen Zeit gelassen hätte, würde ich ganz genauso daherschreiben.
@Headbängerheini:
http://download.savannah.gnu.org/releases/pgubook/ProgrammingGroundUp-1-0-booksize.pdf
http://asm.sourceforge.net//resources.html
-
also ich habe jetzt nicht wirklich viel länger (naja vielleicht 3std) für assembler gebraucht. was wirklich zeit frißt, ist eben das "programmieren", sprich die algorithmen und deren umsetzung. ob man jetzt direkt mit assembler anfangen soll, weiß ich nicht, aber als man den computer entwickelt hat, gab es ja auch nur assembler und man war gezwungen, es zu lernen.
ob jetzt "call schreibe_string" in assembler oder "puts()" in c benutzt, ist dabei mmn scheißegal.
-
HansKlaus schrieb:
also ich habe jetzt nicht wirklich viel länger (naja vielleicht 3std) für assembler gebraucht. was wirklich zeit frißt, ist eben das "programmieren", sprich die algorithmen und deren umsetzung. ob man jetzt direkt mit assembler anfangen soll, weiß ich nicht, aber als man den computer entwickelt hat, gab es ja auch nur assembler und man war gezwungen, es zu lernen.
ob jetzt "call schreibe_string" in assembler oder "puts()" in c benutzt, ist dabei mmn scheißegal.Stell Dir mal vor in einer Grossbank werden täglich - sagen wir 40 Millionen Datenbankzugriffe (und das ist eher sehr wenig) gemacht. Man kann sich dann recht leicht vorstellen, wie sich jeder unnötige Zyklus der CPU geradezu potenziert. Bei solchen Programmen, die einerseits "transaktionssicher" - andererseits bei jeder Transaktion aufgerufen werden, ist absolute Effizienz das erste Gebot. Man kann zwar mit gewissen Hochsprachen sehr effizient programmieren - C++ oder Java und sonst so überladenen Programmiersprachen haben dort aber nichts verloren...
-
Also ich hab zwar selber nix in dem Sektor zu tun aber ich hatte schon die ein oder andere Unterhaltung mit Jemandem der hat und ich kann dir versichern dass solche Bankensoftware nicht in Assembler geschrieben wird
-
dot schrieb:
Also ich hab zwar selber nix in dem Sektor zu tun aber ich hatte schon die ein oder andere Unterhaltung mit Jemandem der hat und ich kann dir versichern dass solche Bankensoftware nicht in Assembler geschrieben wird
Naja... hier zwei Links, einer zum Verständinis - der andere für einen Kurs
http://www.mainframes.com/assembler.htm
http://www.com-software.de/index.php?id=359&L=0Ich mache jetzt ein wenig Werbung für die Konkurrenz - aber warum nicht.. :p
-
HansKlaus schrieb:
also ich habe jetzt nicht wirklich viel länger (naja vielleicht 3std) für assembler gebraucht.
Echt? Toll. Könntest du schnell mal aufzeigen, wie du das gemacht hast bzw. wie es funktioniert, innerhalb von 3 Stunden Assembler zu lernen - inklusive complexen Taschenrechnersimulator mit allem Pipapo erstellen. Hier schauen nämlich viele Einsteiger rein und wir könnten sie einfach auf dein elaboriertes Lernkonzept verweisen und hoffen, das die absurdesten Sprüche und dämlichsten Behauptungen hier im Asm-Forum etwas weniger werden.
( http://webster.cs.ucr.edu/AsmTools/HLA/HLADoc/HTMLDoc/WhatIsHLA.html )
-
nachtfeuer schrieb:
Echt? Toll. Könntest du schnell mal aufzeigen, wie du das gemacht hast bzw. wie es funktioniert, innerhalb von 3 Stunden Assembler zu lernen - inklusive complexen Taschenrechnersimulator mit allem Pipapo erstellen.
Gehört das dazu? Taschenrechner?
Die 3 Stunden sind Angeberei, aber im Grunde stimmt das doch. Jeder sollte sich IMO die Grundzüge von Assembler aneignen, damit man die Maschine halbwegs versteht und Assembler lesen kann, und dann wieder was anderes machen!
-
Hostfreak schrieb:
C++ oder Java und sonst so überladenen Programmiersprachen haben dort aber nichts verloren...
Was ist an C++ so überladen bitte?
Mit Java bin ich d'accord mit dir.
-
Aha...?...! schrieb:
Was ist an C++ so überladen bitte?
Mit Java bin ich d'accord mit dir.Ich begreife die Frage nicht richtig. Ich kann ne nette lustige Applikation in C++ mit QT oder GTK oder was auch immer schreiben - ich kann ne nette lustige Applikation in Java mit Swingklassen schreiben - wie auch immer. Das hat nichts mit zig Millionen Transaktionen zu tun. Jeder Bankautomat - jede Kassentransaktion - jede interne Buchng - das gesamte HR usw.
Es geht um die Programmierung ganz unten.. also dort wo jede der erwähnten Transaktionen schlussendlich ankommen...
Nun C++ - alleine schon, dass da ein Constructor und ein Destructor bei jeder Instanzierung erforderlich ist, ist ein "Overhead" - Viel zu viele Instruktionen, die gar nicht nötig wären.. Wer seine Daten im Griff hat und auch im Team benötigt keine Kapselung der Daten... Dieses Problem ist ein Problem aus der Unix und Windows Welt. Wenn globale Variable (Daten) gleich automatisch allen Beteiligten einer "Unit of Compile" unkonntrolliert zur verfügung steht, ist an diesem Konzept etwas falsch... - oder?? Ansonsten würde man doch OO gar nicht benötigen.
-
Hostfreak schrieb:
Naja... hier zwei Links, einer zum Verständinis - der andere für einen Kurs
Sry aber ich kapier echt nicht was genau mir diese Links jetzt sagen sollen
Falls es dich beruhigt: Ich bin jetzt sicherlich kein Guru aber auch ganz sicher kein totaler Analphabet was Assembler angeht...Hostfrak schrieb:
Nun C++ - alleine schon, dass da ein Constructor und ein Destructor bei jeder Instanzierung erforderlich ist, ist ein "Overhead" - Viel zu viele Instruktionen, die gar nicht nötig wären..
Man sieht du hast dich ja sehr eingehend mit C++ und der Funktionsweise moderner Compiler auseinandergesetzt
Hostfrak schrieb:
Wenn globale Variable (Daten) gleich automatisch allen Beteiligten einer "Unit of Compile" unkonntrolliert zur verfügung steht, ist an diesem Konzept etwas falsch... - oder?? Ansonsten würde man doch OO gar nicht benötigen.
Man kann übrigens auch in ASM wunderbar OO programmieren, OOP hat nämlich nichts mit irgendwelchen Schlüsselwörtern konkreter sogenannter OO Sprachen zu tun (ich kann dir z.B. Tonnen von C++ Code zeigen der voll von class und frei von OOP ist ). Abgesehen davon ist OO natürlich kein Wundermittel aber deinen Satz da oben kapier ich nicht.
Hostfrak schrieb:
Das hat nichts mit zig Millionen Transaktionen zu tun. Jeder Bankautomat - jede Kassentransaktion - jede interne Buchng - das gesamte HR usw.
Klar, das ist natürlich alles in Assembler gecodet, was sonst? Gerade wenn es ums Finanzsystem geht ist es doch essentiell absolute Kontrolle über die Hardware zu haben und Assembler hierfür geradezu prädestiniert, schließlich hat es sich ja gezeigt dass die stabilsten und sichersten Programme genau dann geschrieben werden wenn jede Zeile Code jede beliebige Speicherstelle verändern kann. Auch sind Assemblerprogramme so übersichtlich dass selbst komplexeste Zusammenhänge in derart riesigen Systemen sofort begreifbar sind. Die daraus resultierende extrem leichte Wartbarkeit kombiniert mit der hohen Portabilität des Code macht Assembler zum idealen Kandidaten für die Entwicklung solcher Software...
Assembler hat seinen Platz aber dort seh ich ihn definitiv nicht...