Я думаю, semantic locality и stream processing - практически одно и то же. Если мы можем выполнять работу без random access вне рабочего окна, то: а) наша работа семантически локальна б) может выполняться над потоком данных
Вообще, лично у меня к классическому unix-way-pipes есть масса претензий, основная, это отсутствие типизации. Все эти бесконечные awk -F '-' '{print $1" "$2"}' - это восстановление типов по косвенным признакам.
В современном серверном софте есть некотоая благая подвижка, в которой cli ко всякому сложному софту выводят данные в json. Всё то же самое, но уже с минимальной структурой, так, что не нужно тратить специальные усилия на обработку специальных случаев (пробелы в именах, "неправильные" символы и т.д.). Вместе с jq и другими видами query languages это очень удобно.
Революция произойдёт в тот момент, когда GNU научится хоть какой-то структуре в выводе программ.
Условно говоря, получение ip-адреса для eth3 будет выглядеть так: ip -j a l|jq .eth3.ipv4.address[0].
Второй больной вопрос: это error stream. У нас есть софт для работы с stdout/stdin, а stderr - полностью на откуп человеку. Всего машиночитаемого в обработке ошибок - единственный int, который относится не к куску данных, а ко всей программе. Для stderr нет никаких методов обработки - оно "human readable".
no subject
а) наша работа семантически локальна
б) может выполняться над потоком данных
Вообще, лично у меня к классическому unix-way-pipes есть масса претензий, основная, это отсутствие типизации. Все эти бесконечные awk -F '-' '{print $1" "$2"}' - это восстановление типов по косвенным признакам.
В современном серверном софте есть некотоая благая подвижка, в которой cli ко всякому сложному софту выводят данные в json. Всё то же самое, но уже с минимальной структурой, так, что не нужно тратить специальные усилия на обработку специальных случаев (пробелы в именах, "неправильные" символы и т.д.). Вместе с jq и другими видами query languages это очень удобно.
Революция произойдёт в тот момент, когда GNU научится хоть какой-то структуре в выводе программ.
Условно говоря, получение ip-адреса для eth3 будет выглядеть так:
ip -j a l|jq .eth3.ipv4.address[0]
.Второй больной вопрос: это error stream. У нас есть софт для работы с stdout/stdin, а stderr - полностью на откуп человеку. Всего машиночитаемого в обработке ошибок - единственный int, который относится не к куску данных, а ко всей программе. Для stderr нет никаких методов обработки - оно "human readable".