: новая консольная программа, имеющая рабочее название Microsoft Scripting Host (MSH), и новый язык написания сценариев под названием Monad. Консольная программа выглядит как командная строка Windows, но на этом сходства между старой и новой оболочками заканчиваются. Компания Microsoft планирует включить язык Monad в состав системы Longhorn, но, возможно, он будет доступен и для нынешних версий Windows. Перечислим 10 характерных особенностей нового языка.
10. Имена команд отражают выполняемую ими задачу.
Хотя большинство профессионалов ИT-индустрии знакомы с командами оболочки создания сценариев, они вряд ли могут объяснить логическую основу схемы присвоения командам названий. Monad заменяет эту нелогичную схему новой, в которой команды имеют структуру «действие-объект». Например, следующая команда возвращает информацию о системных дисках:MSH>get-drive
9. Арифметические выражения.
В отличие от старой оболочки, язык Monad обеспечивает полную поддержку арифметических операций. Кроме стандартных операторов, Monad поддерживает сокращения операторов, принятые в языке Cи. В качестве примера приведем следующее выражение:MSH>$result = 2 + 2
8 Условные сравнения.
Язык Monad поддерживает множество условных индикаторов, в том числе «меньше», «меньше или равно», «больше», «больше или равно», «равно», «не равно», «эквивалентно» и «не эквивалентно» (соответственно выражения «-lt», «-le», «-gt», «-ge», «-eq», «-ne», «-like», «-notlike»). Следующая команда выводит слово Equal на стандартное устройство вывода, если результат выражения 2+2 равен 4:MSH>If ((2+2) -eq 4) {write-host Equal}
7 Циклические конструкции.
Создатели сценариев будут рады появлению альтернативы удобной, но непонятной команде For. В состав циклических конструкций языка Monad также входят циклы While и Foreach. Приведенный ниже код использует команду While для вывода результата простого вычисления пять раз:MSH>while($int -lt 5) {write-host $int; $int += 1)
6 Функции.
Поддержка языком Monad организации функций позволяет создавать «строительные блоки», содержащие последовательности кодовых структур. Следующая функция возвращает результат выражения 2+2:Function myTwos { $result = 2 + 2 }
5 Видимость переменных.
Разграничение видимости переменных в языке Monad позволяет создать более надежный код. Границы видимости переменной задаются при их создании:MSH>$local:mylocalint = 1
4 Динамическое выполнение команд.
Monad позволяет динамически создавать и выполнять команды. Можно поместить тело команды в переменную и далее работать уже с переменной, как показано в следующем примере.MSH>$cmd = get-commands
MSH>$cmd
3 Перенаправление.
Язык Monad предоставляет полную поддержку перенаправления в файл. Чтобы вывести список системных служб в файл, необходимо набрать:MSH>get-service >> outfile.txt
2 Передача объектов.
Вместо скромных средств передачи текста оболочка MSH предоставляет пользователю механизм передачи структурных объектов между командами, таким образом многократно расширяя возможности кода. Следующий пример осуществляет передачу результата команды Get-process в команду Sort:MSH>get-process | sort CP
1 Объекты Cmdlet.
Самым заметным преимуществом языка Monad является то, что он позволяет разрабатывать собственные объекты cmdlet — управляемые объекты, которые создаются с помощью одного из языков Microsoft .NET. Объекты Cmdlet позволяют расширить встроенные функциональные возможности языка Monad. Пользователь обращается к расширяемому набору встроенных в язык Monad объектов cmdlet, применяя принцип «действие-объект». К примеру, можно использовать объект cmdlet для вывода списка остальных доступных объектов cmdlet:MSH>get-command
Старший технический редактор Windows & .NET Magazine и президент компании TECA. С ним можно связаться по адресу: mikeo@teca.com