Una obiezione che ho spesso sentito sollevare contro Python è che è difficile sincronizzare un team di molti programmatori su un grande progetto Python. Nota: la sincronizzazione possibile in un progetto di questo tipo non implica necessariamente che sia pratica, economica o facile. Esistono ancora n * (n-1) canali di comunicazione tra i programmatori, quindi i costi di comunicazione crescono più o meno in media del numero di programmatori.
Una cosa che mi è piaciuta in Java sono le interfacce. Purtroppo, sia PEP 245 e anche la versione modificata di Guido su interfacce ( ) hanno non è stato implementato. Stavo pensando che lo stile anatra tipizzazione interfacce Limited (senza tipi, nomi metodo giusto) potrebbe essere molto utile, decisamente non per amore di pychecker, codice più veloce, o forzare i programmatori (dumb) di seguire la progettazione dell'architetto (smart), ma come mezzo di facile sincronizzazione tra 2 o più programmatori.
Quindi, a parte il tipico ma non funziona molto bene il suggerimento di "più documentazione" (nessuno vuole scriverlo davvero), quali sono i tuoi mezzi di sincronizzazione di alto livello di progettazione e integrità concettuale su progetti così grandi e multi-persona?
(in parte chiedo perché grandi progetti ho partecipato a Python mai usato)
Ho sentito le obiezioni sopra menzionate di persona: almeno 3 volte quando si parla di startup (2 startup di Scala, quindi hanno una tendenza verso la tipizzazione statica) e almeno una volta all'interno di corp quando si considerano vari linguaggi di programmazione per i progetti. Sul web: non ricordo questo ora, ho una vaga memoria di leggerlo su alcuni blog e forum OO. I tipi di tipizzazione statici (Java, Scala) sembrano aver avuto grande importanza su questo punto, anche se tipicamente tipizzazione statica e interfacce sono in genere destinate ad altre cose (velocità, completamento automatico IDE).
Nota Conosco la difesa TDD ma il problema qui è che è difensivo in quanto tipicamente è una persona che scrive test unitari. Certamente, si potrebbe immaginare 1+ programmatori seduti insieme e scrivere test unitari prima di programmare come test indiretto di tipo spec + ma avete visto che è stato fatto? Non ho. Sento anche che i test unitari, anche scritti da gruppi, non sono un design (limitato) o una specifica. Sono di basso livello, dopo tutto. C'è un motivo (buono forse?) Che Java abbia interfacce in aggiunta e non al posto di JUnit.