Assembler als erste Programmiersprache? [geschlossen]

12

Wie gut wäre es Ihrer Meinung nach, People Assembly (eine Variante) als erste Programmiersprache beizubringen? Es würde viel mehr Mühe kosten, als zum Beispiel Java oder Python zu lernen, aber man würde die Maschine mehr oder weniger vom ersten Programmiertag an gut verstehen (zumindest im Vergleich zu vielen höheren Programmiersprachen). Was denkst du? Ist es eine realistische Idee, zumindest für diejenigen, die bereit sind, zusätzliche Anstrengungen zu unternehmen? Vorteile und Nachteile?

Hinweis: Ich bin kein Lehrer, nur neugierig

Anto
quelle
5
Ich denke, es ist besser für Leute geeignet, die Informatik studieren und nicht Software Engineering / Entwicklung
Imran Omar Bukhsh
1
@Imran Ich stimme grundsätzlich zu, aber jedes College-Programm, das mir einfällt, hat einen Abschluss in Informatik, der von Leuten erworben wird, die hauptsächlich in der Softwaretechnik arbeiten. (Ich gehe davon aus, dass es sich bei dieser Frage um eine ernstzunehmende Grundlage für eine Programmierkarriere handelt, nicht zB um einen
Umfragekurs an
7
@Imran - Ich fand das etwas überraschend. Die Informatik neigt sicherlich mehr zur Mathematik und Theorie? Mehr interessiert an Mengen, abstrakten Algebren und asymptotischer Notation als am Fummeln und Schreiben endloser Wiederholungen von Move-Blah-to-Blah.
Steve314
2
Die Informatik hat sicherlich abstrakte Fächer, ist aber in mancher Hinsicht auch sehr "hardwarenah". Ich habe einmal an LICS teilgenommen, einer Konferenz für Informatik. Ich erinnere mich, dass es Aufsätze über die Datenlokalität verschiedener Sortieralgorithmen gab, die meiner Meinung nach theoretische Grundlagen für die Untersuchung der praktischen Effizienz von Algorithmen liefern. In Bezug auf die Montage stelle ich persönlich eine gewisse Ähnlichkeit mit einigen theoretischen Berechnungsmodellen (Turingmaschinen, Zählmaschinen ...) fest
Joh
1
Jeder Programmierer sollte zumindest nachlesen, wie die Montage funktioniert, IMO. Es gab mir viele Einblicke und ich bin in der Regel so weit wie möglich vom Chrom entfernt. Jeff Duntemanns Assemblersprache Step by Step ist eine unterhaltsame Lektüre für Anfänger.
Erik Reppen

Antworten:

14

Es wäre schwierig, einen neuen Programmierer mit Assembler-Code zu inspirieren. Eine dynamische Hallo, Benutzer-Website ist mit weniger Aufwand viel cooler. Ich sage nicht, dass die grundlegenden Lektionen gleich sind, aber ein Einführungskurs wird einen großen inspirierenden Inhalt haben, oder es wird keinen zweiten Kurs geben.

Ich erinnere mich, dass meine frühen Programmierkurse in Scheme unterrichtet wurden, und ich war größtenteils frustriert darüber, dass ich nicht einfach nur eine EXE-Datei kompilieren und mein Programm "ausführen" konnte (ich dachte, MS Visual Basic sei das Ende der Programmierung). Erst Jahre später begriff ich, mit welchem ​​mächtigen Werkzeug ich gespielt hatte. Ich denke, ich hätte es mehr geschätzt und diese Lektionen besser verinnerlicht, wenn ich einige frühe Erfahrungen mit etwas Pragmatischerem gemacht hätte.

G__
quelle
20
Ich habe viele Studenten gesehen, die viel erstaunter waren, als sie eine LED zum Blinken brachten und einen Motor in Bewegung setzten.
Whatsisname
1
@Whatsisname +1, das wäre eine schöne, beeindruckende Demo, solange es geht, ohne in der Elektronik hängen zu bleiben. Dies könnte natürlich auch mit einer höheren Sprache geschehen, z. B. Roomba-Hacking, wenn der "Fahrer" eine vom Lehrer bereitgestellte Black Box wäre.
9.
1
Viele neue Programmierer ließen sich von der Montage auf VIC20, C = 64 und ähnlichen Maschinen inspirieren.
Gaius
2
@Gaius Zuerst nicht! Sie schalten diese Maschinen ein und sind in einem einfachen Interpreter. Die Montage erfolgt nach einer Menge Erfahrung und dem
Erreichen
1
@whatsisname, aber Sie können so etwas wie ein Arduino verwenden, um LEDs zu blinken und Motoren zu bewegen, ohne die Montage lernen zu müssen
Ken Liu
12

Ich halte das für eine schreckliche Idee, sowohl für Studenten der Softwaretechnik als auch für CS-Studenten, und für alle, die sich mehr für Programmierung als für Elektronik interessieren.

Es kann getan werden, aber es bedeutet nicht , es sollte getan werden. Früher bestand der Weg, wirklich coole Sachen mit Heimcomputern zu machen, darin, zuerst das Zusammenbauen zu lernen. Das lag an den frühen Hardware-Einschränkungen - höhere Sprachen waren einfach nicht leistungsfähig und schnell genug. Heutzutage kann man mit einer höheren Sprache in kürzerer Zeit viel cooleres Zeug machen.

Was hört sich interessanter an, als einen schnellen Prototyp für ein einfaches Spiel zu schreiben und mit Variationen eines Algorithmus zu spielen oder mit Registern und einfachen Dingen zu kämpfen?

Andres F.
quelle
3
Als Pianist hätte ich es sicherlich interessanter gefunden, mit einigen Songs gleich mitzuspielen, aber um anständig zu werden, muss man Arpeggios, Skalen usw. üben und dann wirklich bahnbrechende Sachen machen (mit "vorbereiteten Klavieren" spielen und Sie müssen wissen, wie das Klavier von innen nach außen funktioniert. Es ist alles, wie gut Sie Ihr Handwerk kennenlernen wollen.
John
10
@ John bei CashCommons: Schlechte Analogie. Das Starten mit dem Assembler ist wie das Starten der Hämmer, der Tastatur, der Gewichte und der Dämpfer. Und dann weiter zur Musiktheorie (Quintenkreis), um das Black-Key- und White-Key-Geschäft zu erläutern. Gehen Sie dann zu noch mehr Musiktheorie über, bevor Sie eine Tonleiter spielen.
S.Lott
3
@ S.Lott: Ehhhhh ... kauf das nicht ganz. Ich kann ein Programm vom Typ "Hallo Welt" in Assembler schreiben, ohne mir Gedanken über Transistoren zu machen. Man muss kein Chipdesigner sein, um Programmierer zu sein. Das Wissen, von dem Sie sprechen, ist eine Grundlage für den Bau oder die Reparatur eines Klaviers, die nur im Zusammenhang mit dem Spielen eines Klaviers steht.
John
3
@ John bei CashCommons: "Bauen oder Reparieren eines Klaviers". Das ist die Analogie zum Assembler. Eine triviale „Hallo Welt“ in Assembler kann geschrieben werden, aber es ist nur OS - API - Aufrufe - in der Tat alle die schrecklichen Details von Assembler zu ignorieren. Für das Schreiben von E / A-Treibern ist ein Assembler unerlässlich. Genauso wie die Hämmer und Dämpfer bauen und warten und nicht funktionieren.
S.Lott
1
@ S.Lott: Hmmmm ... Ich denke, der jeweilige Befehlssatz hängt vom Chip ab, nicht wahr? Guter Punkt.
John
7

Ich denke nicht, dass es eine schreckliche Idee ist, aber wie komplex wird ein Programm für diese Studenten sein? Die Montage erfordert viel mehr Arbeit. Es könnte in Ordnung sein, sie mit sehr einfachen Dingen zu beginnen und sie dann auf etwas zu verschieben, das einfacher zu bearbeiten ist, sobald sie eine Wertschätzung für die Arbeit auf der unteren Ebene erhalten haben. Studenten, die zum ersten Mal eine Idee haben, haben manchmal die Idee, den nächsten Halo, MS Office, AutoCAD oder ähnliches zu programmieren. Wenn sie sehen, wie viel Arbeit in einer einfachen Assemblersprache steckt, können sie Angst haben. Machen Sie das klar dass es bessere Dinge als die Montage gibt und sie dann dorthin verschieben, sobald sie die Konzepte gesehen haben. Sie können auch versuchen, Assemlby gleichzeitig mit etwas anderem wie C zu unterrichten.

Auch welche Assemblersprache? Ich erinnere mich, dass es relativ einfach war, mit MIPS zu arbeiten, und ich denke, dass es in einem Emulator ausgeführt wird, sodass keine Gefahr besteht, Probleme auf dem realen Computer zu verursachen, obwohl es derzeit möglicherweise bessere Tools gibt.

Das könnte gut funktionieren, wenn es richtig gemacht wird. Sei einfach vorsichtig...

FrustratedWithFormsDesigner
quelle
+1 für die Komplexität der Problemsache. Meine Stimme wäre, ein paar Assembler-Implementierungen den Implementierungen in höheren Sprachen gegenüberzustellen. Und vielleicht verwenden Sie 68000 Assembler in einem Emulator anstatt in x86 - ich weiß nicht, wie sich der x86 / amd64-Assembler entwickelt hat, aber der 68000 war viel sauberer und einfacher zu bedienen als damals 8086. Vielleicht auch eine Überlegung wert - ein Virtual Machine Assembler, wie Sie ihn mit LLVM bekommen können. Nicht dasselbe wie ein echter Assembler, aber es hat viele ähnliche Prinzipien und ist wahrscheinlich relevanter.
Steve314
Das gleichzeitige Unterrichten von ASM mit C klingt nach einer ziemlich guten Idee
Anto
@ Steve314: Ich bin nicht auf x86 Assembler, aber es sieht so aus, als ob es komplizierter als 8086 geworden ist.
David Thornley
@ David - ich nehme das an, aber es könnte in mancher Hinsicht einfacher geworden sein. In den 8086 Tagen hing der Bereich der verfügbaren Adressmodi von dem von Ihnen verwendeten Register sowie von der Anweisung ab. Auf 68000 gab es (für die meisten Zwecke) Datenregister und Adressregister, bei denen jeder Typ ziemlich einheitlich verwendet wurde, ohne dass dies ein Index oder ein Basiszeiger war oder was störte. Im Laufe der Zeit hat sich das vielleicht geändert? Der 68000 verfügte auch über mehr Register, wodurch Speicherplatz eingespart werden konnte. Auf jeden Fall müssen Sie keine SIMD-Kenntnisse haben, um grundlegende Assembler-Prinzipien zu erlernen.
Steve314
@ David - Ich kann nicht glauben, dass ich die (unterdrückte) segmentierte Adressierung vergessen habe. Das war in einer Hochsprache schon schlimm genug. Es gibt jetzt wieder segmentierte Adressierung, aber es ist eine andere Sache, in Bezug auf virtuellen Speicher usw., über die sich Programmierer auf App-Ebene keine Gedanken machen sollten.
Steve314
7

Assembly war die erste Sprache, die wir in der Elektronikschule lernten (in den 1900er Jahren) und es schien eine natürliche Wahl zu sein. Wir haben uns in unseren Kursen von diskreten Bauteilen über Widerstandstransistorlogik, Logikgatter, integrierte Schaltkreise, Prozessoren bis hin zur Programmierung in der Baugruppe weiterentwickelt. Viele der Schüler in diesen Klassen hatten noch nie in einer Sprache programmiert und sie haben es gleich gelernt.

Eine Versammlung kann also eine gute Wahl für eine Muttersprache sein, wenn das richtige Fundament für den Studenten gelegt wird. Für alle, die sich zum Ziel gesetzt haben, Anwendungen oder Webentwickler zu werden, ist Assembler meiner Meinung nach wahrscheinlich ein zu untergeordneter Ausgangspunkt.

Bill the Lizard
quelle
7

Eines ist sicher, wenn die Leute, die zuerst die Vollversammlung lernen, es schaffen, werden sie erstaunliche Programmierer sein.

Das erinnert mich daran, als ich das Autofahren gelernt habe. Meine Mutter bestand darauf

Lernen Sie mit einem automatischen Auto, bis Sie sich sicher sind, und fahren Sie dann mit unseren manuellen Autos.

Der Grund dafür war, dass sie nicht wollte, dass ich auf einmal von mehr abgelenkt wurde, als ich sein musste.

Wenden Sie das an, um zu lernen, wie man programmiert. Ist es notwendig, alles auf einmal auf einen Lerner zu werfen? Sie erfahren, was eine Variable ist, und gleichzeitig, wie viele Daten sie in welchem ​​Register speichern können.

Über die Hälfte meiner Klasse hat unsere Montageklasse nicht bestanden, und dies war eine Gruppe von Leuten, die sich zu diesem Zeitpunkt 2+ Jahre lang als programmierkundig angesehen hatten.

Wenn ich alles noch einmal lernen müsste, wäre es meine persönliche Präferenz, mit einer Sprache zu beginnen, die so viel wie möglich für mich leistet. Gehen Sie dann, während ich lerne, rückwärts zu den Sprachen der unteren Ebene.

CrazyPenguin
quelle
1
Ich denke, das ist ein guter und fundierter Rat. Irgendwann ist es wichtig, sich über Bits und Bytes im Klaren zu sein und darüber, was der Prozessor mit ihnen macht, aber es ist eine äußerst verschwenderische Aufgabe, mit ihnen zu beginnen, da Sprachen wie Ruby und Python perfekt für Anfänger sind und hervorragende Prinzipien der Softwareentwicklung fördern.
Davidk01
1
Haben Sie die Möglichkeit in Betracht gezogen, dass der Kursleiter den Assemblersprachkurs nicht gerade hervorragend unterrichtet hat?
John R. Strohm
Ich denke, er hat einen tollen Job gemacht.
CrazyPenguin
3

Ist es eine realistische Idee, zumindest für diejenigen, die bereit sind, zusätzliche Anstrengungen zu unternehmen?

Nein

aber man hätte ein gutes Verständnis für die Maschine

Warum ist das vorteilhaft? Können Sie ein Beispiel oder einen Hinweis geben, wie dies von Wert sein könnte?

Vorteile und Nachteile?

Vorteile: Keine.

Nachteile:

  • Ein Durcheinander von zufälligen Kleinigkeiten über Flags und Zustände und Register und komplexe Speicheradressierungsschemata und E / A-Geräte und DMA und Interrupts und Taktzyklen und so weiter. Nichts davon hilft, moderne VM-basierte Sprachen und Computer zu verstehen.

  • Eine Trennung von der eigentlichen Problemlösung, auf die Computer angewendet werden.

  • Eine Scheidung von Endbenutzern und den praktischen Daten- und Verarbeitungsproblemen, die sie lösen müssen.

  • Eine unnötige Flut von Erklärungen zu Maschine und virtueller Maschine sowie zu Compiler und Interpreter und dem gesamten Schildkrötenstapel, der die Welt aufhält.

  • Viele detaillierte "Dies ist die physische Implementierung eines" Objekts "in der höheren Sprache, zu der sie schließlich gelangen.

  • Viele detaillierte "So werden Methodenfunktionen verteilt" in der höheren Sprache, zu der sie letztendlich gelangen.

  • Viele Erklärungen zu "Dies gilt nicht für 80386, aber für den 80586-Chipsatz".

  • Viele einfache OS-API-Aufrufe bewirken, dass ein ASM-Programm alles ausführt, was für jemanden nützlich zu sein scheint.

Der Sinn einer ersten Programmiersprache ist es, den Chipsatz nicht zu beherrschen.

Der Sinn einer ersten Programmiersprache ist es,

  1. Verstehen, wie man über Computer denkt.

  2. Verstehen, wie nützliche Daten verarbeitet werden.

  3. Verstehe, wie man etwas erledigt. Design - Code - Test.

S.Lott
quelle
1
@ S.Lott - Klar, das ist nicht der Punkt meiner ursprünglichen Frage, aber es könnte vorteilhaft sein, diese zu haben, bevor Sie zu den höheren Sprachen wechseln . Versteh mich nicht falsch, du machst einen gültigen Punkt.
Anto
3
-1 Viele deiner Nachteile betrachte ich als Vorteile. Es ist besser zu wissen, wie der niedrige Pegel funktioniert, bevor Sie ihn von oben verwenden. Grundlagen sind wichtig.
Orbling
1
Assembler als Programmiersprache macht Sie viel besser mit Datenstruktur, Logik und Grundlagen auf niedrigerer Ebene vertraut als die höheren Programmiersprachen. Beide haben einen Platz, Assembler könnte einfacher zu verstehen sein als die höheren Sprachen, vorausgesetzt, Sie haben nicht versucht, etwas zu Kompliziertes zu erreichen. Die Menschen sollten zunächst nicht versuchen, komplexe Dinge zu tun.
Orbling
4
Der Vorteil von Assembler ist, dass es demonstriert, wie ein echter Computer funktioniert. Wissen Sie. Das Ding, auf dem eigentlich alles läuft .
Paul Nathan
1
@ S.Lott - Nein, aber das bedeutet, dass Sie das meiste alte Wissen, das Sie gesammelt haben, sehr gut nutzen und mit der Zeit neues Wissen hinzufügen können. Schauen Sie, Hochsprachen wie Python werden mit der Zeit mit neuen Versionen geliefert, aber altes Wissen ist immer noch verwendbar (und tatsächlich hat Python die Abwärtskompatibilität mit v3 gebrochen)
Anto
3

Wenn ich beauftragt würde, einen Lehrplan zu entwerfen, würde ich im ersten Semester zwei Kurse gleichzeitig abhalten: asm + grundlegende Computerorganisation / -architektur und einen SICP-basierten Kurs, der in Scheme gegründet wurde. Das zweite Semester sollte sich an Datenstrukturen und elementaren Algorithmen im Schema orientieren.

Das zweite Jahr würde ein einjähriges Projekt mit Delphi, C ++ oder C # sein, das sich auf modernes Software-Design (OO-Design, funktionales Design, Software-Engineering, Versionskontrolle usw.) konzentriert.

Der Effekt sollte darin bestehen, sowohl in der Zusammenfassung als auch in der Praxis eine intensive Grundlage zu schaffen, die zu vertieften Kursen im dritten und vierten Schuljahr führt.

Paul Nathan
quelle
3

Ich war TA-Anfänger im Informatikunterricht und ich denke, das ist eine schlechte Idee.

  1. Assembly verwendet sowohl Logik (wenn dies erforderlich ist) als auch sehr schwierige Übersetzungen zwischen Begriffen und Zahlen. Intro CS-Schüler haben oft nur mit der Logik zu kämpfen (Schleifen, if / else, boolesche Ausdrücke) und müssen sich wirklich erst damit befassen, bevor sie sich auch Gedanken darüber machen, welche Zahlen welche logischen Ausdrücke bedeuten. Die Verwendung übergeordneter Sprachen fasst diese Logik für Schüler zusammen, die bisher noch keinen Grund hatten, so zu denken.
  2. Intro CS-Kurse werden nicht unbedingt nur von CS-Majors besucht, die mit CS weitermachen. Oft werden sie auch von anderen Ingenieur-Majors und Nicht-Majors belegt, die gerade ein interessantes Thema für ein Wahlfach "bereisen". Assembly ist eine großartige Grundlage für hartgesottene, engagierte CS-Studenten, bietet jedoch keinen guten Überblick darüber, was Programmieren für Studenten ist, die das Hauptfach in Betracht ziehen oder die niemals das Hauptfach belegen, aber eine Einführung in das Fach wünschen ; Auch ist es für sich genommen in den meisten Bereichen nicht sonderlich nützlich.
  3. Übergeordnete Sprachen machen den Kern der eigentlichen Programmierarbeit transparenter. Assembly behandelt einige wichtige grundlegende Themen - grundlegende Speicherkonzepte, grundlegende Leistungskonzepte usw. -, befasst sich jedoch nicht wirklich mit der Erstellung eines wartbaren, lesbaren Designs, was heutzutage wichtiger ist, IMO. Frühe Schüler scheinen oft die altmodischen Ideen zu haben, mit denen "echte Programmierer Code schreiben, mit dem niemand anders umgehen kann", und das Unterrichten einer höheren Sprache lehrt, dass das Codieren eine kollaborative Aufgabe ist und nicht nur darum, brillant zu sein.

Trotzdem denke ich, dass Baugruppen- / Computerhardware eine sehr frühe Klasse sein sollte - idealerweise das erste Quartal in der Major-Klasse. Lassen Sie die Schüler eine Hochsprache unter die Lupe nehmen, und wechseln Sie dann direkt zu Hardware auf niedriger Ebene, bevor Sie mit Datenstrukturen fortfahren - idealerweise in einer Sprache, die Speicherverwaltung erfordert.

Ethel Evans
quelle
Sehr gut gesagt - ich stimme zu. Der erste Kurs muss auf den Punkt kommen, den durchgängigen Nutzen der erlernten Fähigkeiten zeigen und die Fantasie beflügeln: "Meine Güte! Ich kann programmieren? Was kann ich jetzt noch mit dieser neuen Fähigkeit tun ..." Stimmen Sie auch zu, dass die beste Zeit für Assemblersprachen nach einer höheren Sprache liegt. Das motiviert dazu, "unter die Haube" zu schauen, wie der Computer das übergeordnete Zeug tatsächlich versteht. Das erste Mal Assemblersprache zu sehen, nachdem eine höhere Sprache gesprochen wurde, hinterlässt einen weiteren starken Eindruck: Der Schüler trifft auf Elektronik, Chips, Sensoren usw.
Assad Ebrahim
3

Assembly war meine zweite Sprache, gleich nach BASIC. Als ich jedoch lernte, war es eine andere Zeit. Mein Commodore 64 hatte andere Sprachen zur Verfügung, aber wenn Sie wollten, dass etwas schnell aussieht oder mehr als eine Sache gleichzeitig erledigt, mussten Sie die Assemblersprache lernen und lernen, wie man mit Interrupts arbeitet. Das Grafikumgebungs-Betriebssystem (GEOS), das dem Commodore ein Fenstersystem gab, war ebenfalls vollständig zusammengebaut. Es war im Großen und Ganzen die beste Assembly-API, die ich je gesehen habe. Es war auch die einzige Plattform, auf der ich Ihren Code stylen konnte. Richtig, Sie können Kursivschrift und verschiedene Schriftgrößen verwenden - etwas, das sich zum Lesen der Kommentare als nützlich erwiesen hat.

Ich habe viel über die Funktionsweise des Commodore gelernt, aber der Motorolla-Chip hatte einen sehr einfachen Opcode-Satz. Es ist nicht allzu schwierig, weniger als 255 Opcodes voneinander zu trennen. Ich war nicht der Lage, meine Erfahrung auf dem Motorolla 6510 - Chip - Programmierung für die Intel 8086. Die Chips und Systemarchitekturen waren zu unterschiedlich Parlay. Ich stelle mir vor, ich hätte die gleichen Probleme gehabt, auch auf den Motorolla 68000-Chip des Amiga aufzusteigen.

Kurz gesagt, ich muss mit jedem, der sagt, dass die Vollversammlung eine gute Muttersprache sein sollte, von ganzem Herzen anderer Meinung sein. Hier ist der Grund:

  • Sie haben keine inhärente Struktur und keine übliche Methode, die Funktionalität in einer Anwendung zu beeinträchtigen. Das ist genau das, was höhere Sprachen so nützlich macht.
  • Sie müssen sinnlose Dinge wissen, wie man eine Methode in einer Bibliothek richtig aufruft. Wenn die Bibliothek von C erstellt wurde, bedeutet dies, den Stapel zu manipulieren (besser alles in der richtigen Reihenfolge), aber in einer anderen Sprache kann es bedeuten, Register zu setzen. Dies alles erledigt ein Compiler oder ein Interpreter - und Sie können sie nicht optimieren.
  • Ihr Code kann nicht auf einem anderen Chip verwendet werden und funktioniert möglicherweise nicht mit einer anderen Hardwareplattform.

Heutzutage wird die Assemblersprache verwendet, um bestimmte endliche Aktionen zu beschleunigen, bei denen handgefertigte Assemblierungen schneller sind als vom Compiler generierte Assemblierungen. Die Hauptstruktur der Anwendung wird in einer höheren Programmiersprache wie C, C ++ usw. erstellt. Natürlich würde die Assembly-Programmierung sehr wichtig werden, wenn Sie anfangen, Compiler zu schreiben. Wie viele von uns machen das?

Berin Loritsch
quelle
1

Ich nahm in meinem Abschlussjahr an der High School teil. Ich hatte bereits Kurse in Java, Pascal, C und C ++ besucht und war mit keinem von ihnen vertraut, und ich habe wirklich an der Versammlung gesaugt Ein oder zwei Monate, bevor irgendjemand den Compiler für mich zum Laufen bringen konnte.

Ich denke nicht, dass es notwendig oder klug ist, zuerst die Assemblersprache zu lernen, aber es ist klug, die Dinge zu lernen, die sie Ihnen in den ersten Wochen der Assembler-Arbeit beibringen, wie der Prozessor funktioniert und einige der Debug-Tricks. Das Zeug fand ich als Neuling sehr interessant und aufschlussreich.

Peter Turner
quelle
0

Ich verstehe nicht, warum dies nicht möglich ist, obwohl die Qualität einer Idee von der Menge abhängt, der Sie sie auch beibringen würden. Jemand, dessen Endziel es ist, ein Webentwickler zu sein, würde sich wahrscheinlich langweilen und könnte aufhören, da es ihnen nicht die unmittelbare Befriedigung geben würde, etwas zu erstellen, das Python, Ruby usw. würde. Wenn sie irgendwann an Hardware oder anderen Projekten auf niedriger Ebene arbeiten möchten, ist dies meines Erachtens ein guter Anfang (vorausgesetzt, Sie geben einen ausreichenden Hintergrund für die Computerarchitektur an, damit dies sinnvoll ist). Ich denke, es könnte den Leuten helfen, in Zukunft besseren Code zu schreiben, obwohl ich denke, es wäre schwieriger, andere Sprachen zu lernen, um anzufangen.

Jetti
quelle
0

Ich denke, Assemblersprache wird nur Sinn machen, wenn Sie sich auf Dinge konzentrieren wie:

  • Speicherverwaltungstechniken
  • HW IO (insbesondere zeitliche und leistungsbezogene Herausforderungen)
  • CPU-Funktionen - insbesondere Sicherheitsfunktionen

Ohne einen Schwerpunkt in diesem Bereich handelt es sich lediglich um eine vereinfachte Sprache, die dazu neigt, schlechte Organisationsgewohnheiten zu vermitteln. Codierung auf Maschinenebene ist gut im Toolkit zu haben, um zu wissen, wie die Dinge funktionieren, aber es ist keine gute Muttersprache.

Ich würde jemanden für eine höhere Sprache interessieren. Dann unterrichte C ++; dann Assembly mit dem Fokus darauf, wie C ++ - Compiler Assembly-Code generieren. Das Verständnis von V-Tables und anderen übergeordneten Sprachfunktionen trägt wesentlich dazu bei, dass der Entwickler darüber nachdenkt, wie Sprachen wirklich funktionieren, anstatt die Informationen einfach unter "magic" abzulegen.

Jim Rush
quelle