Seit Jahren beschäftige ich mich mit "low level" Sprachen. Für mich bedeutet das C und Montage. Allerdings hatte ich noch keine Zeit dafür und war es auch NIE nötig.
Jetzt, da ich keine Notwendigkeit sehe, sollte ich entweder nur einen Zeitpunkt festlegen, an dem ich das Thema studieren werde, oder den Plan für immer fallen lassen.
Meine Position
In den letzten 4 Jahren habe ich mich auf "Webtechnologien" konzentriert, die sich möglicherweise ändern, und ich bin ein Anwendungsentwickler, der sich wahrscheinlich nicht ändern wird.
In der Anwendungsentwicklung denke ich, dass Benutzerfreundlichkeit das Wichtigste ist. Sie schreiben Anwendungen, die von Benutzern "konsumiert" werden sollen. Je benutzerfreundlicher diese Anwendungen sind, desto mehr Wert haben Sie erzeugt.
Um eine gute Bedienbarkeit zu erreichen, halte ich die folgenden Dinge für realisierbar
- Gutes Design : Durchdachte Funktionen, auf die über eine durchdachte Benutzeroberfläche zugegriffen werden kann.
- Richtigkeit : Das beste Design ist nichts wert, wenn es nicht richtig umgesetzt wird.
- Flexibilität : Eine Anwendung A sollte sich ständig weiterentwickeln, damit die Benutzer nicht zu einer anderen Anwendung B wechseln müssen, die neue Funktionen hat, die A implementieren könnte. Anwendungen, die sich mit demselben Problem befassen, sollten sich nicht in den Funktionen, sondern in der Philosophie unterscheiden.
- Leistung : Leistung trägt zu einer guten Benutzererfahrung bei. Eine Anwendung ist idealerweise immer ansprechbar und erledigt ihre Aufgaben relativ schnell (basierend auf ihrer Häufigkeit). Der Wert der Leistungsoptimierung über den Punkt hinaus, an dem er vom Benutzer wahrgenommen wird, ist fraglich.
Ich denke, Low-Level-Programmierung wird mir dabei nicht weiterhelfen, abgesehen von der Leistung. Das Schreiben einer ganzen App in einer einfachen Sprache, um die Leistung zu verbessern, ist für mich jedoch eine vorzeitige Optimierung.
Meine Frage
Was könnte mir die Programmierung auf niedrigem Niveau beibringen, welche anderen Sprachen würden mich nicht unterrichten? Vermisse ich etwas oder ist es nur eine Fähigkeit, die für die Anwendungsentwicklung von sehr geringem Nutzen ist? Bitte haben Sie Verständnis dafür, dass ich den Wert von C und Assembly nicht in Frage stelle. Es ist nur so, dass ich in meinem täglichen Leben ziemlich glücklich bin, dass alle Feinheiten dieser Welt für mich abstrahiert und verwaltet werden (meistens durch Schichten, die in C / C ++ geschrieben sind und selbst zusammengesetzt sind). Ich sehe einfach keine Konzepte, die für mich neu sein könnten, nur Details, mit denen ich meinen Kopf füllen müsste. Also, was ist für mich drin?
Meine Schlussfolgerung
Vielen Dank an alle für ihre Antworten. Ich muss sagen, niemand hat mich wirklich überrascht, aber zumindest bin ich mir jetzt ziemlich sicher, dass ich diesen Bereich des Interesses fallen lassen werde, bis ein Bedarf dafür entsteht.
Nach meinem Verständnis ist das Schreiben von Assemblys für Prozessoren, wie sie in heutigen CPUs verwendet werden, nicht nur unnötig kompliziert, sondern es besteht auch die Gefahr, dass die Laufzeitleistung schlechter ist als bei C-Prozessoren. Eine Optimierung von Hand ist aufgrund von OOE nahezu unmöglich, obwohl ein Compiler nicht alle Optimierungen automatisch durchführen kann. Außerdem ist der Code entweder portierbar, weil er eine kleine Teilmenge der verfügbaren Befehle verwendet, oder er ist optimiert, funktioniert dann aber wahrscheinlich nur auf einer Architektur.
Das Schreiben von C ist längst nicht mehr so notwendig wie früher. Wenn ich eine Anwendung in C schreiben würde, würde ich genauso viel erprobte und etablierte Bibliotheken und Frameworks verwenden, die mir die Implementierung von Routinen zum Kopieren von Zeichenfolgen, Sortieralgorithmen und anderem Material ersparen würden, das als Übung an der Universität dient. Mein eigener Code würde auf Kosten der Typensicherheit schneller ausgeführt. Ich bin weder daran interessiert, das Rad während der normalen App-Entwicklung neu zu erfinden, noch versuche
ich, anhand von Core-Dumps zu debuggen: D Ich experimentiere derzeit mit Sprachen und Dolmetschern. Wenn ich also etwas veröffentlichen möchte, nehme ich an würde ein funktionierendes Konzept nach C portieren, obwohl C ++ den Trick genauso gut tun könnte.
Nochmals vielen Dank an alle für Ihre Antworten und Ihre Erkenntnisse.