In den 1980er Jahren war der einfachste Weg, einen Nerd-Streit zu beginnen, zu verkünden, dass die eigene Lieblings-Programmiersprache die beste ist. C, Pascal, Lisp, Fortran? Programmierer verbrachten Stunden damit, genau zu erklären, warum ihre spezielle Art, eine if-then-else-Klausel zu formulieren, besser war als Ihre Art.
Das war damals. Heute sind die Schlachten um Syntax und Struktur weitgehend vorbei, weil sich die Welt auf ein paar einfache Standards geeinigt hat. Die Unterschiede zwischen Semikolon, geschweiften Klammern und Co. in C, Java und JavaScript sind gering. Interessante Debatten über Typisierung und Schließungen gibt es immer noch, aber die meisten sind überflüssig, weil die Automatisierung die Lücke schließt. Wenn Sie es nicht mögen, einen Datentyp anzugeben, besteht eine gute Chance, dass der Computer in der Lage ist, genau abzuleiten, was Sie gemeint haben. Wenn Ihr Chef JavaScript will, Sie aber Java mögen, konvertiert ein Cross-Compiler all Ihr statisch typisiertes Java in minifiziertes JavaScript, das im Browser ausgeführt werden kann. Warum sich streiten, wenn die Technologie uns den Rücken freihält?
Heute ist das Interessante an den Frameworks. Als ich mich mit anderen Fakultätsmitgliedern an der Johns Hopkins University zusammensetzte, um einen neuen Kurs zu planen, dominierten Frameworks das Gespräch. Ist Angular besser als Ember? Ist Node.js alles?
Wir entwarfen einen Übersichtskurs, der die Architektur der wichtigsten Softwarepakete erforschen sollte, die die Grundlage des Internets bilden. Das war das Zentrum des Geschehens, würdig eines Übersichtskurses, der die Architektur der wichtigsten Softwarepakete erkunden würde, die das heutige Internet umgürten.
In diesem Sinne sind Frameworks die neuen Programmiersprachen. Sie sind der Ort, an dem die neuesten Ideen, Philosophien und Praktiken des modernen Programmierens zu finden sind. Einige flammen auf, aber viele werden zu den neuen Grundbausteinen der Programmierung. Hier sind sieben Facetten, die den Framework-Trend anheizen – und Frameworks zum neuen Lieblingsort für Nerd-Kämpfe machen.
Die meiste Programmierung ist eine Aneinanderreihung von APIs
Es gab eine Zeit, in der das Schreiben von Software bedeutete, sein ganzes Wissen über die Programmiersprache einzusetzen, um das Beste aus dem Code herauszuholen. Es machte Sinn, die Komplexität von Zeigern, Funktionen und Scope zu beherrschen – die Qualität des Codes hing davon ab, das Richtige zu tun. Heutzutage übernimmt die Automatisierung vieles davon. Wenn Sie wertlose Anweisungen im Code lassen, machen Sie sich keine Sorgen. Der Compiler streicht toten Code heraus. Wenn Sie Zeiger herumhängen lassen, wird der Garbage Collector das wahrscheinlich herausfinden.
Plus, die Praxis des Codierens ist jetzt anders. Der meiste Code ist jetzt eine lange Reihe von API-Aufrufen. Gelegentlich werden die Daten zwischen den API-Aufrufen neu formatiert, aber selbst diese Aufgaben werden normalerweise von anderen APIs erledigt. Ein paar wenige Glückliche schreiben cleveren, Bit-banging, Pointer-juggling Code für die Innereien unserer Maschinen, aber die meisten von uns arbeiten mit den höheren Schichten. Wir lassen einfach die Pipe zwischen den APIs laufen.
Deshalb ist es wichtiger zu verstehen, wie sich eine API verhält und was sie tun kann. Welche Datenstrukturen akzeptiert sie? Wie verhalten sich die Algorithmen, wenn der Datensatz größer wird? Fragen wie diese sind für die heutige Programmierung zentraler als solche über Syntax oder Sprache. In der Tat gibt es inzwischen eine Reihe von Werkzeugen, die es einfach machen, eine Routine in einer Sprache aus einer anderen aufzurufen. Es ist zum Beispiel relativ einfach, C-Bibliotheken mit Java-Code zu verknüpfen. Auf das Verständnis der APIs kommt es an.
Die Schultern der Giganten sind es wert, auf ihnen zu stehen
Stellen Sie sich vor, Sie sind ein Jünger von Erlang oder einer anderen neuen Sprache geworden. Sie entscheiden, dass sie die beste Plattform bietet, um eine stabile, fehlerfreie App zu schreiben. Das ist ein schönes Gefühl, aber es könnte Jahre dauern, bis Sie den gesamten Code, der für Java oder PHP verfügbar ist, in Ihre neue Sprache der Wahl umgeschrieben haben. Sicher, Ihr Code könnte sich als dramatisch besser herausstellen, aber ist das die zusätzliche Zeit wert?
Frameworks lassen uns die harte Arbeit derer nutzen, die vor uns kamen. Wir mögen vielleicht nicht die Architektur mögen, die sie gewählt haben und wir mögen uns über Implementierungsdetails streiten, aber es ist effizienter, unsere Beschwerden zu unterdrücken und einen Weg zu finden, mit den Unterschieden zu leben. Es ist so viel einfacher, alles Gute und Schlechte der Code-Basis durch ein Framework zu vererben. Den Macho-Weg einzuschlagen, indem Sie alles selbst in Ihrer neuen Lieblingssprache schreiben, anstatt in einem der beliebteren Frameworks, wird es Ihnen nicht erlauben, die Vorzüge Ihrer neuen Wahl so schnell zu genießen, wie es möglich wäre, wenn Sie sich einfach auf die Framework-Hersteller und ihre APIs verlassen würden.
Auf die Kenntnis der Architektur kommt es an, nicht auf die Syntax
Wenn der größte Teil der Programmierung darin besteht, API-Aufrufe aneinanderzureihen, gibt es keinen großen Vorteil, die Eigenheiten der Sprache zu lernen. Sicher, Sie könnten ein Experte dafür werden, wie Java statische Felder in den Objekten initialisiert, aber Sie wären viel besser dran, wenn Sie herausfinden würden, wie Sie die Leistung von Lucene oder JavaDB oder einem anderen Haufen Code nutzen können. Sie könnten Monate damit verbringen, die Optimierungsroutinen von Objective-C-Compilern zu ergründen, aber das Erlernen der Ins und Outs der neuesten Apple Core Library wird Ihren Code wirklich zum Schreien bringen. Sie werden viel weiter kommen, wenn Sie die pikanten Details des Frameworks lernen, als die Syntax der Sprache, auf der das Framework aufbaut.
Der Großteil unseres Codes verbringt die meiste Zeit in den inneren Schleifen der Bibliotheken. Die Details der Sprache richtig zu verstehen kann helfen, aber zu wissen, was in den Bibliotheken vor sich geht, kann sich dramatisch auszahlen.
Algorithmen dominieren
Das Erlernen einer Programmiersprache kann Ihnen helfen, mit den in den Variablen versteckten Daten zu jonglieren, aber das bringt Sie nur so weit. Die wirkliche Hürde ist es, die Algorithmen richtig hinzubekommen, und die werden normalerweise von den Frameworks definiert und implementiert.
Viele Programmierer wissen, dass es gefährlich und verschwenderisch ist, Zeit damit zu verbringen, Standardalgorithmen und Datenstrukturen neu zu implementieren. Sicher, man kann sie vielleicht ein wenig an die eigenen Bedürfnisse anpassen, aber man riskiert, subtile Fehler zu machen. Frameworks wurden im Laufe der Jahre ausgiebig getestet. Sie stellen unsere kollektive Investition in eine Software-Infrastruktur dar. Es gibt nicht viele Beispiele dafür, wann es sinnvoll ist, „aus dem Raster zu fallen“, die harte Arbeit anderer beiseite zu werfen und eine algorithmische Hütte mit Ihren eigenen zwei Händen zu bauen.
Der richtige Ansatz ist, die Frameworks zu studieren und zu lernen, wie man sie zu seinem besten Vorteil nutzt. Wenn Sie die falsche Datenstruktur wählen, können Sie aus einer linearen Aufgabe eine machen, die eine Zeit benötigt, die eine quadratische Funktion der Eingabegröße ist. Das ist ein großes Problem, wenn Sie erst einmal viral gehen.