2009-01-30 3 views
8

В настоящее время я использую Python для большинства моих проектов программирования (в основном, для быстрой разработки небольших программ и прототипов). Я хотел бы инвестировать время в изучение языка, который дает мне гибкость при использовании различных инструментов и API Microsoft всякий раз, когда возникает такая возможность. Я пытаюсь решить между IronPython и C#. Поскольку Python - мой любимый язык программирования (в основном из-за его краткости и чистого синтаксиса), IronPython звучит как идеальный вариант. Но после прочтения об этом немного у меня есть несколько вопросов.IronPython против C# для небольших проектов

Для тех из вас, кто использовал IronPython, неужели неясно, когда заканчивается классический Python и начинается .NET? Например, похоже, что существует значительное перекрытие функциональности между библиотеками .NET и стандартной библиотекой Python, поэтому, когда мне нужно выполнять строковые операции или анализировать XML, я не знаю, какую библиотеку я должен использовать. Кроме того, я неясно, когда я должен использовать типы данных Python и .NET в своем коде. Например, какой из следующих вариантов я буду использовать в своем коде?

d = {} 

или

d = System.Collections.Hashtable() 

(Кстати, мне кажется, что если я много таких вещей, как последний я мог бы потерять часть лаконичности, поэтому я предпочитаю Python в первом место.)

Другая проблема заключается в том, что ряд инструментов разработчика Microsoft, таких как .NET CF и Xbox XNA, недоступны в IronPython. Есть ли больше ситуаций, когда IronPython не даст мне полной возможности C#?

ответ

11

Я создал крупномасштабное приложение в IronPython, связанное с C#.

Это почти полностью бесшовные. Единственное, что отсутствует в IronPython от истинного «python» - это библиотеки на основе C (для них нужно использовать .NET для них) и IDLE.

Язык взаимодействует с другими языками .NET, как сон ... В частности, если вы вставляете интерпретатор и связываете переменные по ссылке.

Кстати, хэш в IronPython объявлен:

d = {} 

Просто надо знать, что это на самом деле IronPython.Dict объект, а не C# словарь. Тем не менее, преобразования часто работают незаметно, если вы передаете его классу .NET, и если вам нужно явно преобразовать, есть встроенные модули, которые делают это просто отлично.

В целом, отличный язык для использования с .NET, если у вас есть причины.

Просто совет: избегайте Visual Studio IronPython IDE, как чума. Я обнаружил, что автоматические линии заканчиваются на отступы, между пробелами и вкладками. Теперь - это сложная ошибка, вставленная в код.

3

Я предлагаю взглянуть на Boo [http://boo.codehaus.org/], язык на основе .NET с синтаксисом, вдохновленным Python, но который предоставляет полный спектр возможностей .NET 3.5.

IronPython отлично подходит для использования .NET-ориентированных библиотек, но он не подходит для , создавая из-за различий в том, как печатаются языки. Поскольку Boo использует типизацию на основе вывода в момент компиляции, за исключением случаев, когда запрос на утину явно запрашивается (или конкретный тип задается пользователем), он позволяет вам создавать.NET-ориентированные библиотеки легко доступны из кода C# (и других языков), который не подходит для IronPython; также, поскольку он должен делать меньше интроспекции во время выполнения, Boo компилируется в более быстрый код.

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