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