In "The Zen of Python", di Tim Peters, la frase "Complesso è meglio che complicato" mi ha confuso. Qualcuno può dare una spiegazione più dettagliata o un esempio?Che cosa significa "Complesso è meglio di complicato"?
risposta
sebbene suoni complessi e complicati allo stesso modo, non significano lo stesso in questo contesto.
Lo Zen quindi dice: Va bene costruire applicazioni molto complesse, purché il bisogno di farlo sia ragionevole.
per fare un esempio:
counter = 0
while counter < 5:
print counter
counter += 1
il codice è molto facile da capire. Non è complesso Tuttavia, è complicato. Non è necessario eseguire manualmente la maggior parte dei passaggi precedenti.
for i in xrange(5):
print i
Questo codice è più complesso rispetto all'esempio sopra. Ma: conoscendo la documentazione di'xrange 'puoi capirlo con una sola occhiata. Molti passaggi sono nascosti dietro un'interfaccia facile da usare.
Man mano che i processi diventano più grandi, il divario tra complicato e complesso diventa sempre più ampio.
Una regola generale è quello di seguire gli altri principi della Zen di Python:
Se è difficile da spiegare, non è una buona idea.
Se è facile da spiegare, potrebbe essere una buona idea.
Complesso: fa molto. Di solito inevitabile.
Complicato: Difficile da capire.
Mi piace questa citazione (source):
Una persona complessa è come un iPod. Che è dire che sono coerenti, semplice e 'user friendly' pur essendo anche piuttosto sofisticato. A differenza della persona complicata, interagire con una persona complessa non richiede una conoscenza speciale dei loro modi complicati , perché i loro modi non sono complicati. Quando vengono commessi gli errori , tendono ad essere molto clemente perché capiscono che le persone sono imperfette. In breve, sono esseri umani maturi e sensibili.
e questo (source): è complicato
Un Airbus A380. Una medusa è complessa. La rete della metropolitana di Parigi è complicata. Come le persone usano è complesso. Il tuo scheletro è complicato. Sei complesso. Un edificio è complicato. Una città è il complesso .
Alcuni altri articoli su questo:
non ho letto questo libro.
complesso è a mio parere una soluzione che potrebbe non essere facile da capire ma è scritta in codice semplice e logico.
complicato è una soluzione che potrebbe essere semplice (o complessa) ma è scritta in codice che non è facile da capire perché non ci sono schemi o logica in esso e nessuna metafore e denominazione appropriate.
I sistemi complicati sono altamente accoppiati e quindi fragili.
I sistemi complessi sono costituiti da parti semplici che operano insieme per creare un comportamento emergente complesso. Mentre i comportamenti emergenti possono ancora essere una sfida, le singole parti possono essere isolate, studiate e debuggate. Le singole parti possono essere rimosse e riutilizzate.
io commento più su questo argomento e fornire esempi on my blog
- 1. Che cosa significa `_time_independent_equals`?
- 2. Che cosa significa Material.alphaTest?
- 3. Che cosa significa "~" significa prima di enumerazioni
- 4. Che cosa significa "CL" nel messaggio di commit? Cosa significa?
- 5. Che cosa significa _branch_match_id?
- 6. Che cosa significa "sys.argv"?
- 7. Che cosa significa SKU?
- 8. Che cosa significa MEDIA_ERROR_SERVER_DIED?
- 9. Che cosa significa __FILE__?
- 10. Che cosa significa "String ..."?
- 11. Che cosa significa "javascript: //"?
- 12. Che cosa significa __utma?
- 13. Che cosa significa "@UIApplicationMain"?
- 14. Che cosa significa 8badf00d?
- 15. Che cosa significa nibNameOrNil?
- 16. Che cosa significa "=>"?
- 17. Che cosa significa "Remotabile"?
- 18. Che cosa significa compilationOptions.emitEntryPoint?
- 19. Che cosa significa "deprecato"?
- 20. Che cosa significa "arricciatura"?
- 21. Che cosa significa new()?
- 22. Che cosa significa "monolitico"?
- 23. Che cosa significa scalabilità?
- 24. Che cosa significa [, elemento]?
- 25. Che cosa significa Opt.out?
- 26. Che cosa significa CultureInfo.InvariantCulture?
- 27. Che cosa significa hibernate.default_schema?
- 28. Che cosa significa "log *"?
- 29. Che cosa significa \ u003C?
- 30. Che cosa significa getActivity()?
@Abe Um, che cosa? – marcog
Sì, sono con Abe su questo. Qualcosa che a quanto pare mi sta dicendo di rendere il mio lavoro facile da capire è molto difficile da capire. Uh, penso. – Malvolio
@Malvolio Per favore, spiegami che cosa stai trovando così difficile da capire? Penso di averlo detto abbastanza semplicemente. – marcog