http://amarao-san.livejournal.com/ ([identity profile] amarao-san.livejournal.com) wrote in [personal profile] vitus_wagner 2017-03-16 09:29 am (UTC)

Я думаю, 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".


Post a comment in response:

This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting