Seit meiner Jugend war ich immer ein äußerst neugieriger Mensch, dem es Spaß machte, Probleme zu verstehen und zu lösen. Ich wurde zum ersten Mal in der High School mit dem Programmieren in Berührung gebracht und war aus offensichtlichen Gründen schnell davon besessen.
In der High School waren die ersten Sprachen und Tools, die ich verwendet habe, Dinge wie Turing, Processing, GreenFoot und BlueJ. Bei allen handelte es sich um Lernwerkzeuge und mit Ausnahme von Turing um Java-Abstraktionen mit Schwerpunkt auf grafischer Programmierung. Mit diesen Tools konnte ich sehr schnell einige ziemlich coole Dinge erledigen. Diese frühen Erfahrungen haben wirklich mein Interesse geweckt.
Von dort aus möchte ich an meiner örtlichen Hochschule Webentwicklung studieren. Hier habe ich angefangen, Dinge wie HTML, CSS, JavaScript zu lernen. Später widmete ich mich Dingen wie PHP, Ruby, ASP.NET, Angular und vielen anderen verwandten Fähigkeiten außerhalb der reinen Entwicklung. Es war ein wunderbarer Kurs, der mir alle Fähigkeiten vermittelte, die ich brauchte, um ein äußerst effektiver Webentwickler zu sein.
Am Ende meiner College-Karriere hatte ich ein ziemlich gutes Verständnis der Webentwicklung als Ganzes. Ich wusste sicherlich nicht alles, aber ich war an dem Punkt angelangt, an dem mir nichts mehr ein Rätsel war. Von hier aus weckte meine natürliche Neugier in mir den Wunsch, tiefer einzutauchen. Sie führten mich in den Kaninchenbau von Betriebssystemen, Entwicklung auf Systemebene und eingebetteten Systemen. Wie Sie sich vorstellen können, bestand der erste Schritt darin, sich an C zu lehnen.
C zu lernen war weitaus schwieriger als ich erwartet hatte. Das Konzept des Stapel- und Heapspeichers sowie der Zeiger war äußerst verwirrend. Vor allem aus höheren Sprachen mit Garbage Collectors. Mir wurde schnell klar, dass C nicht einfach nur schwieriger war, sondern dass die Sprache in Wirklichkeit recht einfach war, sondern dass ich ständig all die schlechten Gewohnheiten und falschen Annahmen verlernen musste, die ich in den letzten Jahren beim Erlernen höherer Sprachen gemacht hatte!
Das nenne ich jetzt den Fluch des Top-Down-Lernens!
Ich war äußerst frustriert darüber, dass ich beim Erlernen von Sprachen, die nicht auf Systemebene liegen, all diese falschen Annahmen getroffen hatte. Außerdem dauerte das Erlernen von C dreimal so lange, wie es wahrscheinlich hätte sein sollen.
Mir fehlte die Wertschätzung für die von mir verwendeten Abstraktionen!
Verstehen Sie mich nicht falsch, es gibt viele Leute, die ihre gesamte Karriere damit verbringen können, sich nur auf die Entwicklung auf Anwendungsebene oder auf die Erstellung grundlegender Python-Skripte zu konzentrieren. Wenn Sie jedoch wirklich ein Software-Ingenieur sein und das Fachgebiet als Ganzes verstehen möchten, von eingebetteten Systemen bis hin zu Betriebssystemen und den für diese Betriebssysteme entwickelten Anwendungen, ist es von großem Vorteil, von unten nach oben zu blicken.
Mein Vorschlag für jeden, der wirklich Softwareentwickler werden möchte, ist, mit C zu beginnen. Verstehen Sie den Unterschied zwischen dem Stapel und dem Heap sowie den Zeigern. Probieren Sie etwas Assembly aus, auch wenn es dabei nur um die Analyse der Assembly geht, die Ihre kleineren C-Anwendungen erzeugen. Wenn Sie diese Dinge grundlegend verstehen, wird alles andere viel einfacher!
Ich wünschte, ich hätte so angefangen. Lehne dich von meinen Fehlern ab!
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3