Вы порекомендовали бы Iron Ruby, Iron Python или PowerShell для того, чтобы сделать приложение С# хостом script?

Вы бы порекомендовали Iron Ruby, Iron Python или PowerShell для создания приложения С# для хоста script?

После некоторого быстрого возиться, прямо сейчас я склоняюсь к powershell по двум основным причинам (обратите внимание на это чисто мое мнение, и если они ошибаются, я бы с удовольствием узнал!!!):

1) Просто создать рабочую среду с классами в вашем приложении; поэтому легко сделать приложение сценарием.

2) Я слышал некоторые слухи, что IronRuby и IronPython теряют поддержку от Microsoft, поэтому они могут быть плохим долгосрочным решением?

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

В частности, помимо того, что давая мне знать, согласны ли вы с моими двумя пунктами выше, я хотел бы знать, будут ли IronRuby и IronPython намного проще использовать (для пользователя, а не для разработчиков), чем для PowerShell, и если в вашем опыте использовать DLR так же просто, как просто передать объект в рабочую область powershell? И если я добавлю поддержку DLR и скриптов IR/IP, мое приложение по-прежнему будет обратно совместимо с XP?

Ответ 1

Я не уверен, что PowerShell имеет "язык сценариев для приложений" в любом месте его долгосрочных целей. Это первая оболочка, вторая - механизм интеграции и автоматизации, а третий - язык сценариев оболочки... так как он не является распространяемым вообще, я не уверен, где встраивается встроенный скриптинг.

Конечно, очень легко размещать PowerShell - предполагая, что он предварительно установлен на ваших целевых ПК - так что это очень жизнеспособный вариант, но я думаю, что в целом это так же легко сделать с IronRuby или IronPython.

Я сомневаюсь, что сама DLR уходит, поэтому я думаю, что использование языка DLR по-прежнему является хорошим выбором для этого: вы бы настроили принимать другие языки DLR с гораздо меньшими усилиями, а DLR и языки распространяются.

Кроме того, работа для размещения PowerShell получает только PowerShell, тогда как вы можете использовать одну и ту же работу, чтобы работать IronPython и IronRuby. Кто знает, поскольку PowerShell является динамическим языком, возможно, он будет перенесен в DLR с надлежащей поддержкой динамики в будущей версии... но вряд ли когда-либо будет распространяться, поскольку Microsoft не считает его инструментом dev, а скорее основной частью ОС.

Нижняя строка: использование DLR гораздо более портативно - и не только для XP, но даже для Mono (и, следовательно, для Linux, OS X, iOS, Android и т.д.... и даже для Интернета или Windows Phone через Silverlight).

Ответ 2

число 2 истинно (команды динамического lang теряют численность персонала на некоторое время) и отличная причина. Ruby и Python не являются языками MS, и как таковой Iron * просто "заработает на .NET". PowerShell - это создание Microsoft, Microsoft и Microsoft.

Что еще более важно, несколько продуктов Microsoft использовали глубокие зависимости от PowerShell (Exchange, SharePoint и т.д.), поэтому очень мало вопросов о постоянной поддержке PowerShell в качестве языка.

Наконец, PowerShell считает, что сценарий lang для других приложений является одним из его целевых ориентиров для первого класса.

Ответ 3

Я нахожусь в подобном положении. Я решил использовать скрипты IronPython, но с тех пор, как увидел, что Андерс Хейлсберг говорит "Будущее С#", у меня было ощущение, что IronPython обречен.

В Microsoft заинтересовалось получить DLR, но они в конечном итоге хотят, чтобы мы использовали инструменты и языки, которыми они управляют. В конце концов, вы не используете С#, а не Java? Итак, как будет выглядеть динамический язык Microsoft? Как насчет динамического, интерпретируемого С# (Iron С#)? В разговоре Хейльсберга было ясно, что это далеко не так. У него даже было консольное окно с интерфейсом REPL. Тем не менее, всегда есть возможность для Iron VB. Разговор о закрытии цикла.

В плюсе для нас программисты Iron С# также решают другую проблему, с которой у меня возникают проблемы: существование двух параллельных объектных сред, одного из .Net-объектов, одного из объектов Python. Требуется работа, чтобы добраться от одного к другому. Я предполагаю, что Iron С# будет использовать структуру класса .Net.

Мой совет: придерживайтесь классов Iron Python и .Net. Когда произойдет Iron VB или Iron С#, это будет быстрый, возможно автоматический перевод языка. Кроме того, если мы достаточно используем IronPython, Microsoft может изменить свое мышление.