Lernen der unteren Rechenstufen [geschlossen]

8

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).

    
Ben 04.06.2010, 10:12
quelle

11 Antworten

0

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!).

    
Martin Smith 04.06.2010, 13:11
quelle
3

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.)

    
John R. Strohm 04.06.2010 21:08
quelle
2

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.)

    
Noon Silk 04.06.2010 13:12
quelle
2

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.

  • Holen Sie sich ein paar Hobby-Sachen, die steuern Geräte (Modelleisenbahnen, Sichtzeichen, Musik Sache, Robotersteuerungen etc.) für welche Linie auch immer es sich interessieren würde Sie und schreiben Code, um diese zu kontrollieren.
  • Nimm Nachtunterricht oder komm einfach dort angefangen.
  • Studiencode aus nicht-trivialen Quellen wie Open Source OS Sachen mit Gerätetreiber bis Sie wirklich verstehe, was es tut.
  • Alle anderen Antworten hier (C, C ++ - Code, Assemblercode, gute alte Standardbücher usw.)
Mark Schultheiss 04.06.2010 20:11
quelle
1

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)

    
Rowland Shaw 04.06.2010 17:23
quelle
1

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?

    
Dog Ears 04.06.2010 19:50
quelle
1

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:

  • Kapitel 1: Eine Tour der Computersysteme
  • Kapitel 2: Informationen darstellen und manipulieren
  • Kapitel 3: Darstellung von Programmen auf Maschinenebene
  • Kapitel 4: Prozessorarchitektur
  • Kapitel 5: Programmleistung optimieren
  • Kapitel 6: Die Speicherhierarchie
  • Kapitel 7: Verknüpfen
  • Kapitel 8: Außergewöhnlicher Kontrollfluss
  • Kapitel 9: Virtueller Speicher
  • Kapitel 10: E / A auf Systemebene
  • Kapitel 11: Netzwerkprogrammierung
  • Kapitel 12: Concurrent Programming
Dale Ragan 04.06.2010 20:46
quelle
0

Vielleicht können Sie in

schauen
  1. OS Konzepte
  2. Compliers
  3. Datenstrukturen
  4. Sprachen auf Assembly-Ebene und deren Ausführung
  5. Mikroprozessoren
Ram 04.06.2010 13:01
quelle
0

Auch wenn Sie niemals Ihren eigenen Code auf dieser Ebene schreiben werden, fand ich es hilfreich, etwas über die Assembler- und Maschinensprache zu lesen. Jeff Deltemanns Bücher ( Ссылка ) zu diesem Thema waren ein guter Anfang für mich.

    
Andreas F 04.06.2010 13:04
quelle
0

+1 mit Ram - auf meinem cs Kurs haben wir Betriebssysteme (siehe Pipelining - interessantes Konzept) und Compiler. Beginnen Sie mit den grundlegenden Modellen und wenn Ihr Interesse weiter geht, sehen Sie, wie es bald sehr komplex wird. interessante Themen

    
bergin 04.06.2010 19:55
quelle
0

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.

    
David Cary 10.06.2010 00:01
quelle

Tags und Links