Ich bin ein Softwareentwickler mit vier Jahren Erfahrung in der .Net-Entwicklung, ich möchte immer auf dem neuesten Stand bleiben mit den neuesten Technologien (.net normalerweise verwandt) veröffentlicht werden und liebe es, sie zu lernen. Ich ging jedoch nicht zur Universität und lernte alles, was ich wusste, durch hilfreiche Kollegen, Internetkurse, das Internet und gute alte Bücher. Ich fühle, dass ich ein guter Entwickler bin, aber ohne die unteren Ebenen eines Computers wie im ersten Jahr eines computerbezogenen Uni-Kurses zu lernen, verliere ich mich, wenn ich mit Leuten über viel mehr technisches Low-Level-Computing rede. Gibt es ein Buch, das jemand empfehlen könnte, das die unteren Ebenen von dem abdeckt, was passiert, wenn ich in Visual Studio auf "Ausführen" klicke? Ich fühle mich überfordert, wenn mein Chef zu mir sagt: "Das läuft im CPU-Cache" oder "Sie sind durch die Festplattenlese begrenzt", und möchte sich selbstsicherer fühlen, wenn es darum geht, wie die Hardware miteinander kommuniziert ( CPU zu RAM usw.).
Entschuldigen Sie sich, wenn das eine vage Frage ist, oder schon einmal gefragt wurde (ich habe nachgesehen und konnte hier nichts finden, was meine Frage beantwortet).
Holen Sie sich eine Kopie von William Stallings - Computer-Organisation und Architektur . Dies ist ein Standard-Lehrbuch, das die meisten Punkte behandelt, die Sie angesprochen haben (und für mich gearbeitet haben!).
Sie sind natürlich mit der Open Courseware -Site von MIT vertraut. Es gibt viel schlimmere Dinge, die Sie tun könnten, als um den Kurs 6 (Elektrotechnik und Informatik) herum zu wandern. Wenn Sie es ernst meinen und die Zeit haben, beginnen Sie mit 6.001 (was noch?), dann 6.004 , und dann 6.033 .
Ich sollte Sie warnen. Diese Seite und die darin enthaltenen Inhalte können sehr süchtig machen.
Wenn Sie die Zeit und das Geld haben, könnten Sie sogar erwägen, College-Kurse zu besuchen. Mit vier Jahren Berufserfahrung haben Sie keine Probleme mit den administrativen Hähnchen, die an jeder Hochschule und Universität passieren, und die Erinnerungen, die Sie daraus ziehen, bleiben Ihnen ein Leben lang erhalten. (Vor ein paar Jahren hatte ich die Gelegenheit, für ein paar Semester, etwas über zwanzig Jahre nach meinem ersten Schulabschluss, wieder zur Schule zu gehen. Ich würde diese Erfahrung nicht für ALLES eintauschen, nicht einmal für die Mansion UND Die Mädchen von nebenan.)
Ich habe viel von hier gelernt: Ссылка
Das Schreiben verschiedener Dinge in der Versammlung ist eine großartige Möglichkeit, sich selbst zu verstehen, was vor sich geht. Sie könnten versuchen FASM oder MASM als Ihre Sprache ( Ich habe mit MASM angefangen, aber ich denke, dass FASM in diesen Tagen mehr in Mode ist.)
Aus der Perspektive eines langjährigen professionellen Entwicklers und eines Instruktors (Comp. Sci Kurse) sehe ich Ihre Situation. Einige Gedanken kommen mir auf den ersten Blick in den Sinn.
Wenn Sie hauptsächlich in der .NET-Welt programmiert haben, wäre es von Vorteil, das Ressourcenmanagement zu verstehen. Eine gute Möglichkeit, dies zu tun, besteht darin, zu einer niedrigeren Programmiersprache wie C oder C ++ zu wechseln und etwas Nicht-Triviales zu schreiben, das benutzergenerierte Daten verarbeitet.
Es kann auch nützlich sein, Algorithmen zu lesen und zu vergleichen - die "Big O" -Notation zu verstehen, wird sehr nützlich sein.
Nach meiner Erfahrung decken diese auch die zwei häufigsten Fehler Ihres durchschnittlichen .Net-Programmierers ab - in der Annahme, dass das Framework alle Übel der Speicherverwaltung handhabt (es ist dumm, ein Ressourcenleck zu erzeugen) und auch die Leistung auf Algorithmen zu bringen (Warten auf schnellere Hardware ist nur ein bisschen zu arrogant für meinen Geschmack)
Handy-Entwicklung - Verlassen Sie Ihre Komfortzone (.net) und schauen Sie sich vielleicht etwas anderes an, vielleicht ist Embedded-Programmierung in C ein bisschen weit, aber was ist mit Handy-Entwicklung?
Android ist eine gute Plattform, alle Tools, die Sie benötigen, sind kostenlos, Sie brauchen nicht einmal ein Telefon, da das SDK mit einem Emulator geliefert wird. Sie werden eine Menge lernen, wenn Sie über Dinge nachdenken müssen, an die Sie auf einer Windows-Maschine nicht zweimal denken würden, und der Sprung von .net ist nicht so toll.
Sie lernen etwas über die eingeschränkte Umgebung, Speicher, CPU-Zyklen und so weiter, die Sie dazu bringen, über die Programmierung anders nachzudenken und, was noch wichtiger ist, es ist ziemlich cool!
Sie könnten sogar mit nativer Entwicklung auf der Android / ARM-Plattform experimentieren?
Ich würde damit beginnen, Computersysteme: Die Perspektive eines Programmierers zu lesen. Es ist genau das, wonach Sie suchen. Ich liebe dieses Buch. Ich hatte die erste Ausgabe und erst kürzlich die zweite Ausgabe gekauft. Es wird bei Carnegie Mellon für ihre Einführung in Computersysteme verwendet.
Es soll ein Sprungbrett als Gesamteinführung sein und eine breite Palette von Themen abdecken. Das Material ist sehr gut präsentiert. Nachdem Sie dieses Buch gelesen haben, können Sie weiterführende Themen zu dem Thema verfolgen, das Ihre Interessen in den Vordergrund stellt.
Hier ist eine Liste von Kapiteln:
Kurze Bücher:
"K & amp; R", alias "The C Programming Language" von Brian Kernighan und Dennis Ritchie, vorzugsweise die neueste Version (1988) und nicht die Ausgabe von 1978.
Lange Bücher:
"Knuth", alias "Die Kunst der Computerprogrammierung", von Donald Knuth. Überraschend hohes Niveau für ein Buch, in dem alle Beispiele in Maschinensprache geschrieben sind.
"Computerarchitektur: Ein quantitativer Ansatz" von Hennessy und Patterson. Möglicherweise etwas zu niedrig - Informationen zum Aufbau einer eigenen CPU.
"AoE", auch bekannt als "The Art of Electronics", von Paul Horowitz und Winfield Hill. Wahrscheinlich weit niedriger als Sie wollten - digitale und analoge Elektronik.