2011-04-20 4 views
7

Я новичок программист, который в основном использует Java. Недавно я заинтересовался Ruby, и когда я пошел загружать IDE, я был удивлен, обнаружив, что нет единственной реализации или интерпретатора языка. Я пытался исследовать проблему, но я действительно не понимаю, как язык создается достаточно хорошо, чтобы знать, что искать.Почему существуют разные реализации Ruby?

Как возможно, чтобы на одном языке было несколько переводчиков? Означает ли это, что между ними существуют важные различия, и что это значит для программиста? Пожалуйста, извините меня, если это вопиющий вопрос в первую очередь!

+8

Существует несколько реализаций * большинства * языков, [включая Java] (http://en.wikipedia.org/wiki/Blackdown_Java). – meagar

+1

Не только языки. Почти любой вид программного обеспечения: веб-браузеры, GNU emacs vs. xemacs vs. xyzzy, разные терминалы, имеющие один и тот же язык оболочки, ... – sawa

+0

@meagar спасибо за этот ответ, у меня было подозрение, что было так, но wasn ' Конечно! – cotroxell

ответ

7

Поскольку разработчики разных языков решают сосредоточиться на определенной области. Например, совместимость с Java runtime (JRuby) или эксперимент с JIT (rubinius), целевой Ruby на предприятии (REE) и т. Д. И т. Д. ...

Это не единственное для Ruby, это здоровый язык, если определенная группа видит потенциал с языком в определенной области, это может способствовать росту в этом сообществе.

1

Это почти все языки, которые имеют множество реализаций, включая Java (например, Oracle Java, Apache Harmony, OpenJDK). Но если вы хотите использовать рубин по умолчанию, вы можете использовать следующее: default ruby implementation using YARV.

Но в противном случае для вас будет возможность использовать рубин на существующей инфраструктуре, как с JRuby с Java VM, и IronRuby, чтобы обслуживать существующую платформу или приложение в отрасли.

4

Большинство языков имеют несколько реализаций. Оказывается, есть компромиссы, которые нельзя всегда обрабатывать с помощью одного проекта.

  • Интеграция платформ
    Чем ближе интегрироваться с одной платформой, чем дальше вы находитесь от интеграции на других. Таким образом, существует фундаментальный выбор: специализация или общность.

  • Стабильность
    Если вы готовы принять нестабильность, то можно преследовать более амбициозные цели. Таким образом, существует фундаментальный выбор: разработка или стабильность.

  • Менеджмент команды
    Существует только место для такого управления в любом конкретном проекте. Единственный способ создать новое пространство управления - создать новый проект. Поэтому есть принципиальный выбор: ваш проект или мой проект. В некотором смысле, это «главный разум», поскольку разные менеджеры будут выбирать разные приоритеты.

+0

Благодарим вас за ответ. Я думаю, что меня в основном путают в интеграции платформ. Так существуют ли разные реализации, потому что кто-то должен действительно подключить язык к командам низкого уровня, которые являются специфическими для платформы?Думаю, я думал, что это было в домене компилятора, а не в самом языке. – cotroxell

+0

Да, у каждого языка есть связанный системный интерфейс. Если он является полностью общим, например Java, он имеет тенденцию быть ограниченным и терпит неудачу для всех клиентов, но может (как Java) успешно преуспеть на серверах. Если он завершен и наклонен в одном направлении (так как Ruby относится к Unix), то он также может преуспеть на клиентах, хотя в этом случае Ruby прибыл слишком поздно для расцвета богатого клиента. Я мог бы написать целую книгу о языках против GUI-интеграции. Это слишком большой вопрос для комментария SO. – DigitalRoss

Смежные вопросы