2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




На страницу Пред.  1, 2, 3, 4, 5  След.
 
 Re: Bash - очень сложный язык
Сообщение29.03.2026, 01:42 
У меня, на юникс-системах (FreeBSD от 6.0 до 14-ой), в наверное 98% все на csh написано.
Т.е. тот-же perl по дефолту в системе отсутствует.
И этого мне вполне достаточно, чтобы отконфигурить машину без подключения к сети, а потом остается только провод вставить...
Тут, как говорится, каждому свое. Мне просто так удобнее.

 
 
 
 Re: Bash - очень сложный язык
Сообщение29.03.2026, 10:43 
Аватара пользователя
DemISdx в сообщении #1721214 писал(а):
И этого мне вполне достаточно, чтобы отконфигурить машину

Для правки конфигов достаточно начального понимания bash/csh. В дебри синтаксиса нырять нет необходимости.
Но, все равно, это язык не для написания программ (как думает топикстартер), а для связывания утилит.
Раньше это называлось командный язык, сейчас называют скриптовый язык.
Писать большие сложные программы на нем - это разновидность извращения.

 
 
 
 Re: Bash - очень сложный язык
Сообщение29.03.2026, 11:04 
peg59 в сообщении #1721212 писал(а):
Мне баш вообще не нравится. Очень уж синтаксис дебильный.

При манипуляциях с текстом нужны регулярные выражения, а там синтаксис вообще не для людей :)

 
 
 
 Re: Bash - очень сложный язык
Сообщение29.03.2026, 11:34 
peg59 в сообщении #1721133 писал(а):
Мне странно, что вы говорите о bash, а обсуждаете системные утилиты: ls, ps, grep и пр.
Я понимаю, что утилиты не являются частью bash. Но какой толк в голом bash без утилит? Никакого. Соответственно, можно смотреть на имена утилит как на часть языка администрирования системы.

peg59 в сообщении #1721220 писал(а):
Но, все равно, это язык не для написания программ (как думает топикстартер), а для связывания утилит.
Нет, я не предлагаю писать на bash сложные программы. Все, что мне надо - удобный и простой язык для конфигурирования системы.

 
 
 
 Re: Bash - очень сложный язык
Сообщение29.03.2026, 12:08 
Аватара пользователя
EminentVictorians в сообщении #1721226 писал(а):
удобный и простой язык для конфигурирования системы.

Это и есть набор системных утилит (заточенных как раз для работы в скриптах). А что использовать в качестве клея - дело вкуса. Скриптовых языков сейчас чуть больше чем до хрен фига.

 
 
 
 Re: Bash - очень сложный язык
Сообщение29.03.2026, 17:36 
peg59 в сообщении #1721231 писал(а):
Это и есть набор системных утилит (заточенных как раз для работы в скриптах). А что использовать в качестве клея - дело вкуса. Скриптовых языков сейчас чуть больше чем до хрен фига.
Ну да, это я тоже понимаю. Но проблема то остается: сам подход, где надо жонглировать какими-то раздутыми бинарниками, да еще и в императивном стиле - так себе.

 
 
 
 Re: Bash - очень сложный язык
Сообщение29.03.2026, 18:32 
Аватара пользователя
Баш ужасный язык,
Я к таким не привык,
Не желаю я Баша учить.
Вместо этого я,
Злого Баша кляня,
Все желаю флудить и флудить!

 
 
 
 Re: Bash - очень сложный язык
Сообщение30.03.2026, 01:06 
Аватара пользователя
EminentVictorians в сообщении #1721248 писал(а):
Но проблема то остается: сам подход, где надо жонглировать какими-то раздутыми бинарниками,

Раздутыми? Не обращал внимания.
$ ls -l `which ls`
-rwxr-xr-x 1 root root 158632 июн 4 2025 /usr/bin/ls
$ ls -l `which ps`
-rwxr-xr-x 1 root root 154552 июл 30 2025 /usr/bin/ps
ls -l `which mount`
-rwsr-xr-x 1 root root 72072 мая 10 2025 /usr/bin/mount
ls -l `which cp`
-rwxr-xr-x 1 root root 149960 июн 4 2025 /usr/bin/cp

-rwxr-xr-x 1 root root 178616 мая 10 2025 /sbin/fdisk

Не вижу ничего раздутого. И почему жонглировать? Надо смонтировать, говорим mount. Надо работать с устройством поблочно, говорим dd, посмотреть каталог, говорим ls. Надо редактировать, говорим vim (или nano для чайников).
А если нужно кучу разных ls с разными вариантами ключей, то для этого придуманы alias'ы.
Какие-то сложности на ровном месте.

 
 
 
 Re: Bash - очень сложный язык
Сообщение31.03.2026, 09:40 
peg59 в сообщении #1721264 писал(а):
Раздутыми? Не обращал внимания.
$ ls -l `which ls`
-rwxr-xr-x 1 root root 158632 июн 4 2025 /usr/bin/ls

158 килобайт - куда столько?
Исходник ls.c на гитхабе имеет 5 с лишним тысяч строк кода. Вот они, все эти десятки ключей, там и закодированы.

 
 
 
 Re: Bash - очень сложный язык
Сообщение31.03.2026, 10:43 
Аватара пользователя
EminentVictorians в сообщении #1721327 писал(а):
158 килобайт - куда столько?
Видели размер современного майкрософтовского драйвера мыши?
Напишете свое, на 10 кбайт? Сэкономите кучу битов!
Не хватает емкости винчестера?
Ну, может быть, не знаю. Вы микроконтроллеры программируете, экономите каждый байт? Похвально.
Думается, не там экономите. Эти утилитки отлажены и проверены десятилетиями работы.

А вообще, когда собирают минималистические дистрибутивы, все эти утилитки умудряются запихать в один исполняемый файл busybox (статическая компиляция, без отладочной информации) на тройку-пятерку сотен кб. Попробуйте, может, вам понравится. Концепция линков на файлы позволяет пользоваться привычными именами.

Ну и непонятно, какие претензии к башу, когда вы все время упираете на утилиты. По большому счету это разные программы.

 
 
 
 Re: Bash - очень сложный язык
Сообщение31.03.2026, 11:21 
peg59 в сообщении #1721329 писал(а):
Вы микроконтроллеры программируете, экономите каждый байт?
Нет, не программирую.

peg59 в сообщении #1721329 писал(а):
Не хватает емкости винчестера?
Нет, дело не в этом. Дело не в технических ограничениях, а в биологических. 5 тысяч строк кода - это сложная полнофункциональная программа, которую необходимо долго изучать: ключи, синтаксис, форматы вывода и т.д. Это не unix way.

peg59 в сообщении #1721329 писал(а):
Ну и непонятно, какие претензии к башу, когда вы все время упираете на утилиты. По большому счету это разные программы.
Я же писал, претензия не столько к башу, сколько к самому подходу администрировать систему тяжелыми многофункциональными программами (вместо простых типизированных функций). Имена утилит можно рассматривать как часть языка администрирования системы.

 
 
 
 Re: Bash - очень сложный язык
Сообщение31.03.2026, 11:33 
Аватара пользователя
EminentVictorians в сообщении #1721330 писал(а):
Это не unix way
Это unix way - "do one thing well". Чтобы хорошо выводить на экран файлы - эти ключи нужны.
Кроме того, несколько странно в одном сообщении критиковать unix way, а в другом - критиковать программы за то, что они ему не следуют.
EminentVictorians в сообщении #1721330 писал(а):
вместо простых типизированных функций
Это не работает по двум причинам.
Во-первых, получается существенно больше символов для простых ситуаций.
Во-вторых, система должна уметь взаимодействовать с произвольными новыми утилитами. У которых, соответственно, свои типы, и придется перекладывать данные между ними туда-сюда.

 
 
 
 Re: Bash - очень сложный язык
Сообщение31.03.2026, 12:22 
mihaild в сообщении #1721332 писал(а):
Кроме того, несколько странно в одном сообщении критиковать unix way, а в другом - критиковать программы за то, что они ему не следуют.
Я не весь unix way критикую, а только часть про "обмениваться текстом". Часть "do one thing well" мне наоборот нравится.

mihaild в сообщении #1721332 писал(а):
Чтобы хорошо выводить на экран файлы - эти ключи нужны.
Очень спорно. Зачем например нужен ситуативный ключ "-r, --reverse reverse order while sorting"? Мне было бы гораздо комфортнее, если бы я знал, что ls выводит список, и я бы потом просто применил общую функцию reverse к списку:
Код:
reverse $ ls path
Там и там одно и то же слово, но семантика совершенно разная. В первом случае ключ, который тупо надо запомнить, и который относится к одной единственной программе, а во втором случае общая функция, которую можно применять к чему угодно, лишь бы по типам все нормально было. Все то же самое можно про ключ --sort сказать. Вместо нескольких предустановленных флагов типа --sort=time и --sort=size было бы гораздо проще, если бы sort была бы просто отдельной функцией, которая бы принимала 2 аргумента: способ сортировки и список. И мы бы сортировали так как сами хотим, а не вот этими предустановленными способами, которые можно только запомнить.

mihaild в сообщении #1721332 писал(а):
Во-первых, получается существенно больше символов для простых ситуаций.
Функций наверное будет больше, но общий объем информации для запоминания должен стать кратно меньше (за счет увеличения "связности" языка).

mihaild в сообщении #1721332 писал(а):
Во-вторых, система должна уметь взаимодействовать с произвольными новыми утилитами. У которых, соответственно, свои типы, и придется перекладывать данные между ними туда-сюда.
Ну да, новые утилиты имеют какие-то фиксированные типы (которые выражается в терминах общей системы типов). С помощью функций мы работаем с данными этих типов. В большинстве случаев это будут функции из стандартной библиотеки (типа отсортировать, отфильтровать и т.д.). Ну в крайнем случае можно и свою функцию-геттер написать, если тип данных новой утилиты какой-то слишком сложный.

 
 
 
 Re: Bash - очень сложный язык
Сообщение31.03.2026, 12:36 
Аватара пользователя
EminentVictorians в сообщении #1721333 писал(а):
Мне было бы гораздо комфортнее, если бы я знал, что ls выводит список, и я бы потом просто применил общую функцию reverse к списку
Да что уж мелочиться, сразу выдавать inode number, а все данные извлекать дальше map-ом. Писать очень удобно будет.
EminentVictorians в сообщении #1721333 писал(а):
Мне было бы гораздо комфортнее, если бы я знал, что ls выводит список, и я бы потом просто применил общую функцию reverse к списку
Ну и применяйте, ls | tac, кто запрещает?
EminentVictorians в сообщении #1721333 писал(а):
если бы sort была бы просто отдельной функцией, которая бы принимала 2 аргумента: способ сортировки и список
И хотя 95% использований покрываются двумя ключами, каждый раз явно руками писать извлечение нужных полей.
EminentVictorians в сообщении #1721333 писал(а):
Функций наверное будет больше, но общий объем информации для запоминания должен стать кратно меньше
А тут оптимизация по удобству использования, а не изучения.
Перл тоже популярность обрел не просто так.
EminentVictorians в сообщении #1721333 писал(а):
Ну да, новые утилиты имеют какие-то фиксированные типы (которые выражается в терминах общей системы типов).
Что это вообще значит? Любой тип выражается через примитивные по определению.

В общем пользоваться всеми ключами вас никто не заставляет, можете спокойно писать в 3 раза более длинный код из примитивов.
А вот типизация в шелле не нужна. MS попробовали завести её в power shell, желающих пользоваться нашлось не много. Потому что типизированный код всегда будет длиннее, чем как-то по месту руками покопаться в строке.
Сложные вещи, конечно, без сложных структур делать очень неудобно. Но такие вещи в шелле делать и не надо.

 
 
 
 Re: Bash - очень сложный язык
Сообщение31.03.2026, 14:08 
Аватара пользователя
EminentVictorians в сообщении #1721333 писал(а):
В первом случае ключ, который тупо надо запомнить

Зачем? Тяжело сказать man ls или ls --help?
То, что используется часто, запомнится само, что на один раз, нужно, как правило в скрипте. Есть алиасы в конце концов.

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

 
 
 [ Сообщений: 64 ]  На страницу Пред.  1, 2, 3, 4, 5  След.


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group