9

Введение в pwsh для продвинутых. Часть I

Наибольшая мощь платформы .NET раскрывается посредством IL (intermediate language, эдакий символический аналог языка ассемблера) — во что, собственно, и преобразовывается код на C# или любом ином языке платформы. Однако IL сторонятся как огня даже бывалые .NET'овцы (звучит как-то неполиткорректно), что говорить о разработчиках сценариев PowerShell?! Между тем, для последних это не просто полезный навык, скорее — возможность взять планку на порядок выше покуда другие рвут и мечут в отсутствии какой-либо фичи. Именно так в бытность второй версии PowerShell и поступал автор, реализуя, к примеру, побитовы(й|е) сдвиг(и) в(лево|право) посредством функции, в основе которой был динамический метод.

Здесь, правда, используется синтаксис pwsh, измождённым же ностальгией при переводе примера на вторую версию PowerShell следует быть аккуратными при использовании переменной $$ и принять на вид возможность имитации тернарной операции посредством массивов; для прочих пример может показаться притянутым за уши, так как pwsh уже располагает операторами -shl и -shr, а значит

(New-Shift).Invoke(7, 3)

или:

(New-Shift shr).Invoke(7, 1)

будут подобны разве что ложке дёгтя в бочке мёда. Однако, истинная причина, по которой мы сознательно избегаем синтаксиса версий ниже шестой, кроется в различного рода рестрикциях присущих .NET Framework (и, как следствие, "наследуемых" PowerShell -le v5), но отсутствующих в .NET Core, как, например, использование указателей в динамических методах. Чтобы продемонстрировать это, а заодно чуть подробнее разобрать сам принцип создания последних, рассмотрим побайтовый вывод числа через указатель.

Результатом, как и ожидается будет 00 40 00 00. А теперь немой вопрос: для чего это может понадобиться, если всё можно написать на C# и скормить Add-Type? Прежде — скорость: динамические методы создаются в динамической (кто бы мог подумать!) сборке pwsh, в то время как Add-Type создаёт физическую сборку, подгружаемую в текущий домен приложений, а это, во-первых, требует валидации кода, во-вторых, ведёт к захламлению сборками домена в текущем сеансе. Вторая немаловажная причина кроется в обработке больших данных где исключается параллелизм, например, расчёт энтропии некоторого файла, с которой, как было замечено ранее здесь, лучше и начинать исследования бинарного кода.

Лига программистов

2.1K постов11.9K подписчиков

Правила сообщества

- Будьте взаимовежливы, аргументируйте критику

- Приветствуются любые посты по тематике программирования

- Если ваш пост содержит ссылки на внешние ресурсы - он должен быть самодостаточным. Вариации на тему "далее читайте в моей телеге" будут удаляться из сообщества

0
DELETED
Автор поста оценил этот комментарий

Что-то я не понял совсем, для чего было стандартную операцию писать в виде функции с использованием языка псевдоассемблера, который собирается через бесконечно медленные join и split, последний ещё и через регулярное выражение?

раскрыть ветку (1)
0
DELETED
Автор поста оценил этот комментарий
Всё от и до расписано, если непонятно поясню ещё раз: в pwsh операторы побитовых сдвигов имеются "из коробки", во времена PowerShell v2 приходилось выкручиваться самостоятельной реализацией их аналогов (о том, что это контрпример, автор также упомянул). Что до скорости join и split, если бы они действительно были "бесконечно медлинные", хост не возвращал бы вообще никаких результатов, раз, да и о производительности кода пока речи не было, два.
0
Автор поста оценил этот комментарий

Вопрос в другом - зачем вообще PowerShell? Это реально тяжелый язык.


Мы давно перешли на питон, скрипты на питоне легче поддерживать.

раскрыть ветку (1)
0
DELETED
Автор поста оценил этот комментарий

У каждого свои (?:контр)?аргументы как в плане определения сложности, так и выбора языка. Да и в целом, язык программирования, как и операционная система — всего лишь средство, а не самоцель.

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества