Obwohl ich programmieren kann, habe ich noch keine Erfahrung mit der Arbeit an großen Projekten. Bisher habe ich entweder kleine Programme codiert, die in Sekundenschnelle kompiliert werden (verschiedene c / c ++ - Übungen wie Algorithmen, Programmierprinzipien, Ideen, Paradigmen oder einfach nur APIs ausprobieren ...) oder an einigen kleineren Projekten gearbeitet Erstellt in einer oder mehreren Skriptsprachen (Python, PHP, JS), in denen keine Kompilierung erforderlich ist.
Die Sache ist, wenn ich in einer Skriptsprache codiere, wann immer ich versuchen möchte, ob etwas funktioniert - ich führe einfach das Skript aus und sehe, was passiert. Wenn die Dinge nicht funktionieren, kann ich einfach den Code ändern und ihn erneut ausprobieren, indem ich das Skript erneut ausführe und so lange mache, bis ich das gewünschte Ergebnis erhalte. Mein Punkt ist, dass Sie nicht warten müssen Alles, was kompiliert werden muss, ist einfach, eine große Codebasis zu erstellen, zu ändern, etwas hinzuzufügen oder einfach damit zu spielen - Sie können die Änderungen sofort sehen.
Als Beispiel nehme ich Wordpress. Es ist ziemlich einfach, herauszufinden, wie man ein Plugin dafür erstellt. Zuerst erstellen Sie ein einfaches "Hello World" -Plugin, dann erstellen Sie eine einfache Oberfläche für das Admin-Panel, um sich mit der API vertraut zu machen. Dann bauen Sie sie auf und erstellen etwas Komplexeres. In der Zwischenzeit ändern Sie das Aussehen einiger Plugins Die Idee, nach jeder kleinen Änderung immer wieder etwas so Großes wie WP neu kompilieren zu müssen, um zu versuchen, "ob es funktioniert" und "wie es funktioniert / sich anfühlt", scheint einfach ineffizient, langsam und falsch.
Wie könnte ich das mit einem Projekt machen, das in einer kompilierten Sprache geschrieben ist? Ich möchte zu einigen Open-Source-Projekten beitragen, und diese Frage nervt mich immer wieder. Die Situation ist wahrscheinlich von Projekt zu Projekt unterschiedlich, da einige von ihnen, die mit Bedacht vorausgesehen wurden, in gewisser Weise "modular" sind, während andere nur ein einziger großer Blob sind, der immer wieder neu kompiliert werden muss.
Ich würde gerne mehr darüber erfahren, wie das richtig gemacht wird. Was sind einige gängige Praktiken, Ansätze und Projektdesigns (Muster?), Um damit umzugehen? Wie heißt diese "Modularität" in der Welt der Programmierer und worauf sollte ich googeln, um mehr darüber zu erfahren? Wachsen Projekte oft aus ihren ersten Gedankenverhältnissen heraus, was nach einer Weile problematisch wird? Gibt es eine Möglichkeit, das lange Kompilieren von nicht so gut gestalteten Projekten zu vermeiden ? Eine Möglichkeit, sie irgendwie zu modularisieren (möglicherweise nicht wichtige Teile des Programms während der Entwicklung auszuschließen (irgendwelche anderen Ideen?))?
Vielen Dank.