Wenn Sie möchten, möchte ich lernen, zukunftssicher zu programmieren. Während Windows (vorerst) den Markt für Desktop-Betriebssysteme dominiert, ist es offensichtlich sehr wertvoll, seine Sprachen / Frameworks / APIs usw. zu lernen. Dies kann sich ändern, wenn neue Geräte auftauchen oder Windows sich selbst in den Fuß schießt -freundliche Vorschauen von Windows 8 sehen nicht besonders ansprechend aus ...).
Wäre es richtig zu denken, dass solide Kenntnisse in C / C ++ für Back-End-Logik / Low-Level-Programmierung und dergleichen in Kombination mit einer extrem portablen Sprache wie Java für GUIs usw. eine gute Grundlage für die Softwareentwicklung wären? das wird sich auf den meisten Systemen als nützlich erweisen? - Ich spreche von Desktop-PCs, Tablets, Telefonen.
quelle
Antworten:
Wenn Sie zukunftssicher sein möchten, ist der beste Rat, den ich Ihnen geben kann, sich nicht in eine Technologie einzuschließen.
Lernen Sie APIs also nicht blind. Erfahren Sie, wie sie konzipiert sind. Was sind die Philosophien hinter den Kulissen? Was sind ihre Vor- und Nachteile? Denken Sie an Software im Allgemeinen, nicht an eine bestimmte Technologie.
Sie können auch an einer guten Programmkonzeption arbeiten. OOP und AOP sind eine gute Wahl, IMO. Aber verstehen Sie nicht nur den Mechanismus, sondern arbeiten Sie wirklich an der Philosophie hinter dem Mechanismus.
Vernachlässigen Sie nicht die allgemeine Informatik wie Datenstrukturen und Algorithmen, da es sich um technologieübergreifendes Wissen handelt, das immer nützlich ist.
Gehen Sie auch für gute Praktiken. Sie haben oft Dutzende Möglichkeiten, etwas zu tun, aber die meisten davon sind Mist: fehleranfällig, schwer zu warten, später schwer zu verstehen oder von einem anderen Programmierer usw. . . Normalerweise ist der Code schwerer zu lesen als zu schreiben. Lernen Sie also, wie Sie etwas mehr Aufwand für das Schreiben aufwenden, um das Lesen zu erleichtern (da Sie Code mehr lesen als schreiben).
Lernen Sie effektive Techniken zum Debuggen (intelligente Verwendung von Protokoll und Debugger) und zum Testen (Schreiben von Code, der auf einfache Weise getestet werden kann, und Automatisieren dieser Tests).
Dann benötigen Sie einen allgemeinen technologischen Hintergrund. Ich spreche von sehr breitem Wissen, wie die Funktionsweise eines Prozessors (Cache-Miss oder Verzweigungsvorhersage sind ein guter Start), von UNIX-Systemen, von Netzwerkprotokollen wie IP, TCP und Ethernet usw. . .
Am Ende lernen, wie man lernt. Wenn Sie lernen können, können Sie sich anpassen.
Sie benötigen einige fundierte Kenntnisse in bestimmten Technologien, um einen Job zu finden, aber diese sind sehr schnell veraltet (denken Sie beispielsweise an COBOL oder an die Webprogrammierung zur Zeit des IE / Netscape-Krieges). Verlassen Sie sich also nicht darauf, dass sie zukunftssicher sind. Sie werden der Schlüssel sein, um eingestellt zu werden, aber definitiv nicht das, was einen großartigen Programmierer ausmacht und was Ihre Fähigkeiten im Laufe der Zeit dauerhaft macht.
EDIT: Wenn Sie gerade erst anfangen, sollten Sie definitiv etwas erledigen. Eigentlich alles. Ein Spiel wie Tetris oder Snake ist ein guter Anfang und macht Spaß. Wenn Sie die Dinge nicht erledigen, werden Sie zu viel Zeit mit Lernen verbringen und wirklich nicht die Erfahrung sammeln, die erforderlich ist, um vollständig zu verstehen, was Sie lernen.
Lassen Sie uns ein Beispiel mit Entwurfsmustern geben. Designmuster sind großartig und Sie sollten sie definitiv verwenden. Bei Überbeanspruchung wird Ihr Code jedoch kompliziert und schwer verständlich. Sie müssen sich dem Problem stellen, das ein Entwurfsmuster löst, und einige Zeit verlieren, um es oder seine Nebenwirkungen zu lösen, um vollständig zu verstehen, worum es im Entwurfsmuster geht. Entwurfsmuster müssen im Laufe der Zeit als kleine Refactorings verwendet werden, wenn der Code wächst. Und Sie wissen, wann ein Entwurfsmuster benötigt wird, wenn der Nutzen größer ist als die durch seine Verwendung verursachte Codekomplexität. Dies erfordert Erfahrung.
Also definitiv, erledigen Sie Dinge, sie lernen aus Ihren Fehlern. Ich kann nicht mehr darauf bestehen: GET THINGS DONE !
quelle
Was die guten Programmierer von den schlechten unterscheidet, ist ihre Fähigkeit, in JEDER Sprache zu programmieren. Wie andere Poster bereits bemerkt haben, können Sie mit jeder wichtigen objektorientierten Sprache großartige Programme erstellen und gefragt sein.
Auch wenn Sie noch in der Schule sind, stellen Sie sicher, dass Sie einige Schreibkurse belegen. Die besten Ingenieure und Programmierer sind auch diejenigen, die ihre Ideen gut kommunizieren.
Sobald Sie anfangen zu arbeiten, ist es am besten, sich über aktuelle Trends zu informieren, um zu verhindern, dass Sie veraltet sind. Haben Sie keine Angst, einen Job für einen anderen zu verlassen, wenn dieser nicht die aktuelle Technologie verwendet oder schreckliche Prozesse usw. hat. Das Schlimmste, was Sie für Ihre Karriere tun können, ist, einen Job anzunehmen, bei dem Sie mit alter Technologie oder schwachen Prozessen arbeiten.
quelle
Die Antwort von @deadalnix ist gut. Ich würde drei Dinge hinzufügen:
quelle
Da Sie am Anfang stehen, würde ich sagen, lernen Sie einfach eine Sprache, egal welche. Die Schwierigkeit liegt nicht in der Sprache (Syntax) selbst, sondern im Verständnis der Konzepte; und diese allgemeinen Programmierkonzepte gelten für alle Programmiersprachen, so lernen Sie Ihre zweite und dritte und vierte (...) Sprache wird viel einfacher sein.
Denken Sie also am Anfang nicht zu viel darüber nach, „zukunftssicher“ zu sein. Versuchen Sie jedoch im Laufe der Zeit, Sprachen zu beherrschen, die sich stark voneinander unterscheiden. Grundsätzlich sollten Sie (wie Sie sagten) mit einer einfachen (-ish) Sprache wie C / C ++, einer höheren Programmiersprache wie Java und einer Skriptsprache (Python, Ruby usw.) vertraut sein. Wenn Sie in die wirklich fortgeschrittenen Dinge einsteigen möchten, müssen Sie auch Assembly kennen.
Aber betonen Sie sich jetzt nicht zu sehr. Das Programmieren zu lernen dauert Jahre. Wählen Sie für den Moment einfach eine Sprache wie Java oder C # oder was auch immer und versuchen Sie es. :) :)
quelle
If you want to go into the really advanced stuff you must also know Assembly
- Sie können dies in jeder Stufe tun, die Herausforderungen sind einfach unterschiedlich.Nichts davon wird helfen.
Eine solide Kenntnis der Datenstrukturen und Algorithmen - unabhängig von einer bestimmten Programmiersprache - ist wertvoller als "Low-Level-Programmierung und dergleichen".
Eine "extrem portable Sprache wie Java" ist genauso portabel wie C und hilft nicht. The Next Big Thing unterscheidet sich so stark von diesen Sprachen, dass Ihr super-portables Java eine Haftung und kein Vorteil darstellt.
Mac OS (Desktop, Tablet und Telefon) wird in Ziel C ausgeführt. Dies könnte ein Ausgangspunkt sein.
Windows (Desktop, Tabelle und Telefon) wird in C # ausgeführt. Das könnte ein Anfang sein.
quelle