Вопрос

Посмотрев на каждый из этих двух проектов, кажется, что оба ОЧЕНЬ похожи.Оба работают поверх CLI, оба имеют синтаксис в стиле Python, оба используют .NET вместо стандартных библиотек Python.

Итак, каковы различия между ними и преимущества каждого?

Это было полезно?

Решение

Основное отличие, как я вижу, состоит в том, что Boo является статически типизированным, то есть тип переменной определяется при первом назначении и фиксируется оттуда - в то время как IronPython имеет " real " динамическое поведение нормального кода Python.

IronPython теперь официально поддерживается Microsoft, и предназначается для новой динамической языковой среды выполнения в версии 2.0. Я подозреваю, что из-за статически типизированной природы Boo может быть быстрее. У меня не так много "настоящих" опыт с этим, хотя ...

IronPython также переопределяет многие стандартные библиотеки Python, поэтому вы можете запускать множество программ Python без изменений на IronPython (например, Django ).

Другие советы

Бу имеет статическую типизацию, но имеет опциональную типизацию утки (что, по моему опыту, работает довольно хорошо). Бу также специально разработан, чтобы быть "дружественным для запястья" - другими словами, чтобы минимизировать необходимость использования комбинаций клавиш Shift. Он имеет хорошую поддержку IDE в SharpDevelop .

Как видно, Boo черпает вдохновение из Python, но также и для того, чтобы использовать все преимущества .NET.

С точки зрения производительности, Boo чувствует себя немного быстрее, чем IronPython, и, в частности, ему не хватает заметной задержки запуска IronPython.

Boo все еще незрелый язык, и ему не хватает сообщества Python. Лично я бы немного опасался использовать его в производстве. Кроме того, я не согласен со всеми отклонениями, которые он сделал из Python, такими как избавление от явного «я» в классах.

Я еще не использовал IronPython, но вот что я знаю о Boo...

  • Boo был вдохновлен Python и имеет много синтаксических сходств.О различиях см. http://boo.codehaus.org/Gotchas+for+Python+Users
  • Boo был написан специально для CLR
  • Он статически типизирован, что имеет ряд преимуществ.
    • Его можно скомпилировать в DLL и использовать в проектах VB и C#.
    • вы получаете автодополнение кода в IDE
  • Сам язык расширяем.Вы можете писать «синтаксические макросы» и фактически добавлять в язык новые элементы.Это делает его хорошим кандидатом для написания DSL.
  • Это еще не версия 1.0, а IronPython есть.Язык все еще испытывает трудности с ростом, но все еще очень пригоден для использования.

Я использовал Boo для таких вещей, как:

  • Сценарии запланированных заданий.Это отличная альтернатива файлам VBScript и BAT, особенно при доступе к API .NET.С тех пор я в основном перешел на Powershell, но он зависит от ОС и имеет более тяжелый синтаксис, поэтому для некоторых вещей я все еще использую Boo.
  • Написание модульных тестов
  • Встроенный язык сценариев

Я написал приложения на Boo и IronPython. Для меня IronPython был более надежным выбором, и многое из того, что я написал в портах CPython без изменений. Все последние проекты были чисто IronPython, если они предназначены для .Net Framework.

Поскольку Джим "сбежал" для Microsoft IronPython был переведен на язык высшего уровня. Для этого есть даже Visual Studio.

Я согласен с VolkA здесь. Быть способным управлять Джанго велико. Это просто потрясающий фреймворк, и Boo будет трудно его переделать. Сегодня это больше вопрос фреймворков, которые предоставляет язык, чем его конструкции. И Boo не дает особых улучшений по сравнению с Python в конструкциях, которые он поддерживает.

Основное отличие, на мой взгляд, заключается в том, что IronPython является реализацией зрелого языка - в то время как Boo моложе и менее известен.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top