Различия между PowerShell и Ruby

Я новичок в сфере динамических языков и пытаюсь найти хорошую отправную точку.

Глядя на то, как Microsoft снижает роль Iron Ruby в своих предложениях, я ищу динамический язык программирования, который будет поддерживаться на платформе dotNET. Не могли бы вы перечислить конкретные функции, которые есть в одном, но не в другом, чтобы облегчить выбор.


person GregC    schedule 22.10.2010    source источник
comment
Есть очевидные вещи, такие как в целом более чистый синтаксис, но меня интересует функциональность.   -  person GregC    schedule 22.10.2010
comment
Возможно: stackoverflow.com/q/3484232/323582   -  person Roman Kuzmin    schedule 22.10.2010


Ответы (1)


PowerShell - это, прежде всего, инструмент автоматизации Windows, который раскрывает свои функции двумя способами:

  1. Оболочка (консоль) аля КорнШелл, CSH, BASH.
  2. Динамический язык сценариев.
  3. Хостинг-движок а-ля TK / TCL и Windows Scripting Engine.
  4. Основы для платформы устранения неполадок Windows 7.

Я рассматриваю такие языки, как Python и Ruby, как языки общего назначения, которые, хотя они могут предлагать запросы REPL, не так подходят для программирования оболочки, то есть легко запускают системные команды и EXE, захватывают stdin / out, имеют дело с неразрывными и завершающими ошибками. и т. д. Вот в чем преимущество PowerShell.

OTOH, я бы не стал использовать PowerShell для всех общих задач программирования. Это не может:

  1. Определите типы .NET (кроме тех, которые относятся к типу PSCustomObject)
  2. Реализуйте интерфейс
  3. Реализуйте что-нибудь общее
  4. Невозможно вызвать общие методы
  5. Не поддерживает синтаксис вызова метода статического расширения, например. array.Where ()
  6. Не поддерживает понятие импорта пространства имен (т. Е. Использование system; в C #)

Как гласит старая пословица, убедитесь, что вы выбрали правильный инструмент для работы.

person Keith Hill    schedule 22.10.2010
comment
Судя по вашим комментариям, если бы MS захотела охватить все основы, им нужно было бы активно развивать динамический язык. А пока мы должны радоваться тому, что в C # 4.0 есть ключевое слово dynamic. - person GregC; 22.10.2010
comment
stackoverflow.com/questions/3484232/ - person GregC; 22.10.2010
comment
Но VB был динамичным в течение многих лет, верно? Что, ты не считаешь это настоящим языком? :-) - person Keith Hill; 22.10.2010
comment
Было время, когда около 90% всех приложений Windows были написаны на VB ;-). Как 10 или 12 лет назад. И вернемся к вашему сообщению, Add-Type очень помогает в этом отношении. Однако это уже не просто решение PowerShell. А array.Where() можно легко сделать с помощью родной оболочки PowerShell с $array | Where-Object {}. - person Joey; 24.10.2010
comment
Согласился с LINQ-подобным характером PowerShell Where / Select / и т. Д. Однако есть и другие общие и / или статические методы расширения, которые было бы неплохо вызывать - Enumerable.Join / Intersect / и т. Д. - person Keith Hill; 24.10.2010