Ich programmiere seit weniger als einem Jahr und habe einige Erfahrungen mit dem Schreiben von Systemanwendungen, Web-Apps und Skripten für Unternehmen / Organisationen. Eine Sache, die ich jedoch nie wirklich gemacht habe, ist die Arbeit mit einem Framework wie Django, Rails oder Zend.
Wenn ich über das Django-Framework schaue, bin ich ein wenig frustriert darüber, wie viel in Frameworks abstrahiert wird. Ich verstehe die Kernziele von DRY und minimalem Code, aber ein Teil dieser übermäßigen Abhängigkeit von verschiedenen Modulen und der starken Abstraktion von Kernfunktionen fühlt sich so an:
Lässt Programme aufgrund der sich ständig ändernden Natur von Modulen / Frameworks sehr schnell veralten.
Erschwert das Verständnis von Code aufgrund der Fülle an verfügbaren Frameworks und Modulen und all ihrer Eigenheiten.
Macht den Code weniger logisch, es sei denn, Sie haben die gesamte Dokumentation gelesen. Das heißt, ich kann einige Listenverständnisse und Bedingungslogiken durchlesen und herausfinden, was ein Programm tut, aber wenn Sie Funktionen sehen, die die Übergabe von beliebigen Zeichenfolgen und Wörterbüchern erfordern, wird es schwierig, die Dinge zu verstehen, es sei denn, Sie sind bereits ein Guru in ein gegebenes Modul; und:
Macht es schwierig und mühsam, zwischen Frameworks zu wechseln. Das Wechseln zwischen Sprachen ist bereits eine Herausforderung, aber es ist beherrschbar, wenn Sie die Kernfunktionalität / -philosophie genau genug verstehen. Das Wechseln zwischen Frameworks scheint eher eine Frage der Auswendiglernen zu sein, die in gewisser Weise die Ineffizienz zu fördern scheint, die diese Frameworks beseitigen sollen.
Müssen wir wirklich wie 50 Abstraktionsebenen auf etwas so Einfaches wie eine MySQL-Abfrage setzen? Warum nicht so etwas wie das PDO-Interface von PHP verwenden, in dem vorbereitete Anweisungen / Eingabetests behandelt werden, die allgemein verständliche SQL-Abfrage jedoch immer noch Teil der Funktion ist?
Sind diese Abstraktionen wirklich nützlich? Macht Feature Bloat sie nicht nutzlos und erschwert sie Anwendungen im Vergleich zu ähnlichen Anwendungen, die ohne Verwendung eines Frameworks geschrieben wurden?
Do we really need to put like 50 layers of abstraction on top of something as simple as a MySQL query?
- Erstens ist ein gutes Framework eine Abstraktionsebene (vielleicht 2 oder 3 intern), und zweitens umfasst "etwas so Einfaches wie eine MySQL-Abfrage" tatsächlich ein gutes Dutzend Abstraktionen. Selbst nachdem die Abfrage, die Sie aus Ihrer interpretierten Sprache ausführen , auf dem Datenbankserver eingegangen ist, haben Sie weiterhin Abfragen über Datenbanken, über Engines, über Dateisysteme und über physischen Speicher. Kurz gesagt: Ja, wir brauchen Abstraktionen, weil sie unsere Köpfe vor dem Explodieren bewahren.
as a relatively inexperienced programmer
- Je länger Sie Software entwickeln, desto mehr werden Sie es zu schätzen wissen, weniger Zeit damit zu verbringen, das Rad neu zu erfinden und mehr Zeit zu Hause zu verbringen, um Dinge zu tun, die Sie lieben.