Als Python-Programmierer, der Ruby ausprobiert hat (und es mag), denke ich, dass es eine gewisse ironische Parallele zu der Zeit gibt, als Python begann, populär zu werden.
C- und Java-Programmierer "bashten" Python mit der Begründung, dass es keine echte Sprache sei und dass die dynamische Natur seiner Typen gefährlich sei und es den Leuten erlaube, "schlechten" Code zu erstellen. Als Python immer beliebter wurde und die Vorteile der schnellen Entwicklungszeit offensichtlich wurden, ganz zu schweigen von der weniger ausführlichen Syntax:
// Java
Person p = new Person();
# Python
p = Person()
wurden in späteren Versionen von Java einige dynamischere Funktionen eingeführt. Autoboxing und -unboxing machen den Umgang mit Primitiven weniger mühsam, und Generics erlauben es uns, einmal zu kodieren und es auf viele Typen anzuwenden.
Mit einiger Belustigung habe ich gesehen, dass eine der wichtigsten flexiblen Funktionen von Ruby - Monkey Parcheando - von den Python-Anhängern als gefährlich angepriesen wird. Nachdem ich in diesem Jahr damit begonnen habe, Studenten in Ruby zu unterrichten, denke ich, dass die Möglichkeit, die Implementierung einer bestehenden Klasse, selbst einer, die Teil des Systems ist, zu "reparieren", sehr mächtig ist.
Natürlich kann man auch mal Mist bauen, und das Programm kann abstürzen. Ich kann auch in C ziemlich leicht einen Segfault verursachen. Und Java-Anwendungen können den Flammentod sterben.
Die Wahrheit ist, ich sehe Monkey Parcheando als den nächsten Schritt in der dynamischen und Meta-Programmierung. Komisch, denn das gibt es schon seit Smalltalk.