The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Система распараллеливания shell-скриптов PaSh перешла под кр..."
Отправлено freehck, 01-Окт-21 01:34 
> Почти не спал последние дни, а тут вы явились, нужно быть все-же добрее.

Надо же. На меня похож.

Окей, я по жизни на редкость злая сволочь (по мнению некоторых), но тоже попробую быть добрее. На то есть несколько причин. Во-первых, после оскорблений ты наконец-то начал вести осмысленный диалог, о чём свидетельствует пост, на который я сейчас пишу ответ, во-вторых ты в этом посте написал почти слово в слово всё то, что я имел сказать тебе, и в-третьих твои посты, где ты восхищён racket-ом, показывают, что мозг у тебя есть, и он жив.

=== Оскорбления и рефлексия ===

Так вот. Ты под этой новостью написал целую серию крайне дерзких, совершенно безапелляционных заявлений о том, что шелл -- это ужас, жуть и мрак, что эта технология изначально была ошибкой, что это бредовая штука, что даже питон (питон, карл! питон, ёпрст!) лучше, чем шелл, что ближайший аналог шелла -- это брейнфак.

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

Единственное, что ты попытался обосновать -- это то, что шелл не является по твоему мнению кросс-платформенным. Но ты решил в качестве аргумента упирать на то, что не везде утилиты, объединяемые шелл-скриптом, будут в наличии, а также не всегда эти утилиты ведут себя одинаково (видимо, ты про различия coreutils и bsdutils как минимум). Но это крайне слабый аргумент. Сам шелл -- кросс-платформенный инструмент. А вот скрипты имеют зависимости. И обеспечение наличия нужных тулзов -- это задача того, кто скрипт в систему, собственно, ставит. Довольно очевидные вещи.

Итого. Ты оскорбляешь хорошую технологию, отличное знание которой лично мне как опсу (а в прошлом -- racket- и ocaml-программисту) очень и очень помогает по жизни, и особенно -- в кризисных ситуациях (масса историй). Аргументы либо отсутствуют, либо плохие. Я надеюсь, что теперь ты понимаешь, чем именно ты заслужил отношение, которое имел неудовольствие читать выше по треду. Я просто спесь сбивал. И как видишь -- с результатом.

=== Адекватая замена shell ===

Так вот, вернёмся к вопросу о задачах, для которых создавался и используется шелл. Шелл решает ровно одну задачу: организацию конвейера параллельно исполняющихся процессов. И он решает её хорошо. Утверждать, что это ошибочный ход, значит противоречить принципам UNIX, на основе которых построена вся наша экосистема nix-подобных осей.

Ты предлагаешь Rash как альтернативу стандартному шеллу. Что ж, штука конечно интересная, но есть несколько замечаний к такой альтернативе.

1) Ничто не мешает делать конвейерные вставки на лиспе и в обычном шелле путём оборачивания в функцию вызова интерпретатора с лисп-кодом внутри, так в чём же тогда суть? Сисадмины годами так дёргали и питон, и перл, и много чего ещё.

2) Попытка сделать шелл языком общего назначения, чтобы он мог нести в себе логику преобразования сложных структур данных -- обречена на провал. Потому что, ещё раз повторюсь, шелл решает ровно одну задачу (см выше). И ему не нужно брать на себя большего, ибо как раз это -- ошибочный ход, являющийся следствием непонимания того, чем шелл является. Любая дополнительная логика должна быть выполнена иным инструментом. Например, при помощи awk, jq/yq, sed...

3) Даже если шелл и делать языком общего назначения, то sexp-ы явно не лучший выбор. У лиспов очень высокий порог вхождения. Людей, которые способны вести разработку, держа в голове деревья и продумывая то, как они будут сворачиваться -- ничтожно мало. Такой язык просто не будут использовать. RMS тоже когда-то хотел видеть лисп в качестве языка системного программирования, но время показало, что этому не бывать.

4) Rash не posix compliant. Что делать со скриптами, написанными на posix shell? Выбрасывать? Нет, никто этого делать не станет. И переписывать тоже. Это будет просто глупая трата времени. Обратная совместимость -- это важно. Даже тот же Emacs на Guile перенести не могут вот уже не первое десятилетие, потому что стремятся сохранить обратную совместимость с уже написанными пакетами на Elisp, ибо без них Emacs нафиг никому не нужен.

=== Конвейеры ===

Ты вот утверждаешь в одном из постов, что передавать объекты и коллекции в конвейере -- это хорошо и правильно. Что ж, я как функциональщик отчасти с этим тезисом согласен. В конце концов когда мы ведём разработку на функциональном языке -- мы именно тем и заняты, что пишем такие конвейеры. Но вот в чём суть: хорошо ли это для шелла?

Шелл в текущем виде выстреливает прежде всего потому, что он организует конвейер именно для текстовых потоков. Любые иные потоки данных -- редкость, и в принципе неправильный подход. Неправильный, потому что поток текста -- сущность понятная всем пользователям, которая встречается наиболее часто, и которую удобно использовать. А если в конвейере начинают передаваться иные сущности, будь то картинки или ассоциативные массивы, или что угодно ещё -- то следом возникает необходимость проверки типа передаваемой сущности, необходимость держать это в уме при разработке скрипта, необходимость вставлять множество дополнительных проверок (ну не просто же так в racket-е существуют контракты, да?). Если всё это вставить в шелл, то честное слово, почему бы вместо шелла не писать сразу уже на racket-е? Или на perl? Или на чём угодно ещё?

Нет, shell выстрелил именно потому, что он не делает лишнего. Иногда сужение области применения -- это хорошо. Это помогает сохранить простоту чтения и понимания, что для скриптового языка, имеющего ограниченную область приложения, крайне важно.

=== Заключение ===

Ну вот, я потратил аж целых полчаса, и надеюсь, что-то донёс. Твой ответ покажет, имело ли всё это смысл.

От себя пожелаю -- больше спать. Нужен режим дня. Разум не существует отдельно от тела, как бы может того ни хотелось некоторым из нас. Если подзапустить тело, то и разуму будет нанесён ущерб. А без разума -- является ли гуманоидное существо человеком? Вот пишешь в сеть пост, и никогда не знаешь, кто на другом конце сидит. Человек или...

PS: Силу шелла не стоит недооценивать. Вот кто-то скажет, что find -- просто ищет файлы, а кто-то -- что она обходит дерево каталогов. И разница в понимании сути данной утилиты между этими двумя людьми -- огромна. То же самое и с шеллом.

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
  Введите код, изображенный на картинке: КОД
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру