Sebbene sia in grado di programmare, non ho ancora alcuna esperienza con il lavoro su grandi progetti. Quello che ho fatto finora è stato codificare piccoli programmi che vengono compilati in pochi secondi (vari esercizi c / c ++ come algoritmi, principi di programmazione, idee, paradigmi o semplicemente provare api ...) o lavorare su alcuni progetti più piccoli che erano realizzato in uno o più linguaggi di script (python, php, js) in cui non è necessaria la compilazione.
Il fatto è che, quando si codifica in un linguaggio di scripting, ogni volta che voglio provare se qualcosa funziona, eseguo semplicemente lo script e vedo cosa succede. Se le cose non funzionano, posso semplicemente cambiare il codice e riprovare eseguendo nuovamente lo script e continuando a farlo fino a quando non ottengo il risultato che volevo. Il punto è che non devi aspettare qualsiasi cosa da compilare e per questo è abbastanza facile prendere una grande base di codice, modificarla, aggiungere qualcosa o semplicemente giocarci - puoi vedere le modifiche all'istante.
Come esempio prenderò Wordpress. È abbastanza facile provare a capire come creare un plugin per questo. Per prima cosa crei un semplice plug-in "Hello World", quindi crei una semplice interfaccia per il pannello di amministrazione per familiarizzare con l'API, quindi lo crei e rendi qualcosa di più complesso, nel frattempo cambiando l'aspetto di un paio di volte .. L'idea di dover ricompilare qualcosa di grosso come WP più e più volte, dopo ogni piccola modifica per provare "se funziona" e "come funziona / si sente" sembra semplicemente inefficiente, lenta e sbagliata.
Ora, come potrei farlo con un progetto scritto in una lingua compilata? Vorrei contribuire ad alcuni progetti open source e questa domanda continua a infastidirmi. La situazione probabilmente differisce da progetto a progetto in cui alcuni di essi che sono stati pre-pensati saggiamente saranno in qualche modo "modulari", mentre altri saranno solo un grosso blob che deve essere ricompilato ancora e ancora.
Vorrei sapere di più su come è fatto correttamente. Quali sono alcune pratiche, approcci e progetti (schemi?) Comuni da affrontare? Come viene chiamata questa "modularità" nel mondo dei programmatori e cosa devo cercare su Google per saperne di più? Spesso i progetti nascono dalle loro proporzioni del primo pensiero che diventano problematiche dopo un po '? Esiste un modo per evitare la lunga compilazione di progetti non così ben progettati? Un modo per modulare in qualche modo (forse escludendo parti non vitali del programma durante lo sviluppo (altre idee?))?
Grazie.