Бу против IronPython - PullRequest
       25

Бу против IronPython

26 голосов
/ 11 октября 2008

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

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

Ответы [ 7 ]

25 голосов
/ 11 октября 2008

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

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

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

14 голосов
/ 13 октября 2008

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

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

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

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

11 голосов
/ 24 октября 2008

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

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

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

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

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

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

1 голос
/ 11 октября 2008

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

0 голосов
/ 11 октября 2008

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

...