Какой (скриптовый) язык выучить, если я уже начал работать с PowerShell? - PullRequest
3 голосов
/ 18 февраля 2010

Некоторое время назад я начал с PowerShell, который действительно хорош. Я могу писать практически все, что знаю, я могу использовать .NET Framework, WMI, даже WIN API. Такие функции, как конвейерная связь, очень помогают мне писать управляемый и читаемый код. В V2 добавлены расширенные функции, модули, фоновые задания, удаленное взаимодействие (woow) и т. Д.

Как я уже сказал, с PowerShell я могу делать практически все, но я бы хотел выучить новый язык. Основная причина - дальнейшее самообразование. Другие причины (не так важные):

  • некоторые ограничения (например, нелегко работать с потоками в PowerShell или поддержке обобщений)
  • скорость (вероятно, стоит обернуть все в PSObjects и не работать с объектами напрямую)
  • кроссплатформенная разработка (например, я могу запустить Python на моем Symbian, что, вероятно, невозможно с PowerShell)

Какой язык вы бы мне порекомендовали, который может превзойти PowerShell в некоторых областях? Например, в плане читабельности, согласованности языков, документации, полезности, библиотек, стабильности, моментов WTF ...
Если он способен справиться с указанными мною ограничениями, тем лучше.

Я предпочитаю язык сценариев из-за цикла REPL и потому что он не слишком многословен, как, например, C #, но это не является обязательным требованием.

Я быстро взглянул на IronPython. Основной причиной был хостинг, представленный на PDC 2009 . Однако я скучаю по трубопроводу, он слишком многословен и несколько неуклюж по сравнению с PowerShell.


Мое прошлое: я работал (по крайней мере, как новичок) с этими языками: с c #, c ++, javascript, tsql. Я быстро взглянул на python, но это не убедило меня попробовать (возможно, ошибку).

Я не думаю, что этот вопрос следует закрывать, поскольку он относится к PowerShell и сравнению с другими языками (сценариями). Если вы проголосовали за закрытие, оставьте хотя бы комментарий, почему.

Ответы [ 4 ]

4 голосов
/ 18 февраля 2010

Хотя язык сам по себе не является "скриптовым", стоит взглянуть на F #. Он поддерживает трубопровод (|>) и ряд других высокоуровневых функций, таких как сопоставление с образцом. Кроме того, в Visual Studio предусмотрена интерактивная консоль, а также отдельная интерактивная подсказка консоли. Существует также функциональная природа F #, которая немного «сногсшибательна», но в хорошем смысле. : -)

2 голосов
/ 21 февраля 2010

Не уверен, какую версию IronPython вы тестировали, но я настоятельно рекомендую взглянуть на нее еще раз. Последняя версия IronPython основана на стандарте 2.6, который является версией python, которую использует большинство других пользователей. Он может быть немного более многословным, чем некоторые языки сценариев, но для меня он больше похож на полноценный язык программирования аля C #, чем на язык сценариев. Работать с классами и несколькими потоками намного проще в IronPython, чем в Powershell. Кроме того, вы получаете возможность использовать библиотеки и сборки .NET, как в Powershell. (Для кроссплатформенного кода вам нужно придерживаться только классов Python)

Мой типичный подход - использовать Powershell, когда мне нужно что-то взломать или выполнять задачи по управлению системой (файлы, реестр, wmi и т. Д.), IronPython, если это более сложный или небольшой проект, а затем C # для коммерческого использования. код оценки. Каждый из них предлагает свой способ мышления (конвейеры, динамическая типизация, статическая типизация), но все они используют одни и те же базовые библиотеки .NET, поэтому мне не приходится выяснять, как снова анализировать даты при смене языков.

Что касается ваших требований, то IronPython / python, похоже, очень хорошо им подходят:

  1. Читаемость и последовательность две основные цели Python
  2. Документация на Languange хороша, а документация кода - это столп python
  3. Полезность, библиотеки: вы получаете всю мощь .NET, так же, как вы могли бы делать в Powershell
  4. Стабильность: последняя версия IronPython очень стабильна ( Resolver One использует и полностью встроена в IronPython)
  5. WTF моменты ... Не могу вам помочь, но это все-таки REPL, так что вы можете хотя бы покопаться, чтобы выяснить, что не так: -P

Единственная область, в которой я бы сказал, что IronPython остро не хватает - это поддержка инструментов. В Powershell есть замечательных редакторов сценариев , но пока лучший редактор, который я нашел для IronPython, - это комбинация Notepad ++ и, как ни странно, встроенная в Python консоль Resolver One, которая имеет достойное завершение кода и легко передать данные в сетку, так как это приложение для работы с электронными таблицами. Также у вас иногда возникает проблема «Жить в двух мирах», где есть Python-способ что-то сделать и .NET-способ сделать что-то, и вам приходится выбирать (совместимость или знакомство с .NET). И хотя IronPython можно использовать для простых сценариев, если вы в основном имеете дело с простыми файлами, реестром или xml, то Powershell, безусловно, подходит. Ironpython просто помогает заполнить пробел между чистым языком сценариев и полноценным языком программирования.

Надеюсь, это поможет. У меня есть несколько примеров IronPython и Powershell в моем блоге. Я использую IronPython только около года, но, исходя из фона C #, очень интересно посмотреть, как работает программирование на динамическом языке. Также сайт TryPython.Org - отличный способ начать использовать IronPython прямо из браузера!

Удачи!

2 голосов
/ 18 февраля 2010

Если вам нужен другой язык сценариев , я бы предложил VB Script (чтобы можно было прочитать все примеры сценариев Windows, которые вы найдете), или JavaScript (дополнительные варианты использования: программирование веб-клиента это другая область развития).

Точно так же вы можете взглянуть на C #: и для написания кода .NET, и для расширения PowerShell. Это также облегчит понимание возможностей .NET Framework (нет примеров для большей части платформы в PowerShell, но везде есть примеры C #).

1 голос
/ 18 февраля 2010

Как насчет IronRuby? Обычно Ruby считается приятным языком для программирования, а проект IronRuby имеет поддержку Microsoft, поэтому однажды он может стать «правильным» языком .NET.

Хотя это ранние стадии & ndash; похоже, он не готов к использованию в реальных условиях.

...