В интерпретируемых языках разница немного более тонкая.
Ruby:
# early binding:
def create_a_foo(*args)
Foo.new(*args)
end
my_foo = create_a_foo
# late binding:
def create_something(klass, *args)
klass.new(*args)
end
my_foo = create_something(Foo)
Поскольку Ruby (вообще) не скомпилирован, нет компилятора для сделайте изящный фронт. Рост JRuby означает, что в наши дни больше компилируется Ruby, хотя и делает его более похожим на Java.
Проблема с IDE по-прежнему стоит: такая платформа, как Eclipse, может искать определения классов, если вы -кодируйте их, но не можете, если вы оставите их до вызывающего.
Инверсия управления не очень популярна в Ruby, вероятно, из-за ее экстремальной гибкости во время выполнения, но Rails отлично использует позднюю привязку чтобы уменьшить объем конфигурации, необходимый для получения вашего приложения.