Are there any major architectural differences when designing applications that will be built on static languages (such as C# or Java) and dynamic languages (such as Ruby or Python)?
No.
È leggermente più facile scrivere quadri fantasiosi per le lingue dinamiche. Ma questa non è una cosa da applicare.
Which are the design possibilities that might be a good choice for one type that's a bad one for the other?
Nessuno, davvero.
Puoi scrivere cose buone in entrambi i linguaggi gentili.
Are there any useful features achievable with one type that's not with the other (in design and architecture, of course)?
No.
La differenza è che i linguaggi dinamici sono "write, run, fix". Puoi sperimentare e risolvere rapidamente.
I linguaggi statici sono "scrivere, compilare, costruire, eseguire, correggere". Non puoi sperimentare facilmente.
Oltre a questo, sono quasi identici nelle loro capacità.
Are there any dynamic-specific design patterns?
Forse. Le funzioni Python eval()
e execfile()
- in un certo senso - puntano su una funzione di linguaggio dinamico che è difficile (ma tutt'altro che impossibile) gestire in un linguaggio statico. Sarebbe molto più linee di codice per compilare ed eseguire codice nello stesso spazio di processo.
Non è specifico per la lingua dinamica. È solo più semplice.