Size: a a a

Compiler Development

2020 April 20

SM

Sailor Moon in Compiler Development
Andrei Kurosh
Условно говоря, есть ls и есть ps. Обе утилиты возвращают таблицу с данными. К любой таблице должны быть применимы такие операции как сортировка, фильтрация строк\столбцов, агрегация и т.д. - но каждая утилита вынуждена реализовывать весь этот функционал самостоятельно, потому что он возможен только на уровне внутреннего представления, а не на уровне текста. Вместо этого в nushell есть одна универсальная команда where, которая фильтрует табличный вывод любой другой команды. Это очень удобно и гибко, но возможно только при общении объектами
если есть программа where то в чем проблема? Можно же и сортировать и фильтровать
источник

ИЧ

Илья Чистяков in Compiler Development
я за json, можно добавить во все утилиты доп формат вывода и парсить покрасоте
источник

AT

Alexander Tchitchigin in Compiler Development
Михаил Бахтерев
Да серилизовать - не проблема. Вопрос о том, как я из программы на Си должен писать/читать. Парсить какие-то универсальные представления типа JSON - это так себе удовольствие.
Должен заметить, в программах на C (да и C++ в очень большой степени) и с текстом работать — возни больше, чем нужно. Юникод так и вообще почти неподъёмен. Поэтому Ваши жалобы и отсылки именно к C выглядят странновато.
В любом случае, если язык/автор могут работать только со строками — нет большой проблемы встроить такую программу и в структурированный конвейер.
источник

МБ

Михаил Бахтерев in Compiler Development
Alexander Tchitchigin
Должен заметить, в программах на C (да и C++ в очень большой степени) и с текстом работать — возни больше, чем нужно. Юникод так и вообще почти неподъёмен. Поэтому Ваши жалобы и отсылки именно к C выглядят странновато.
В любом случае, если язык/автор могут работать только со строками — нет большой проблемы встроить такую программу и в структурированный конвейер.
Хм... Проблемы с юникодом последний раз у меня были даже и не помню, когда. Ну, я в Windows не работаю, может быть, поэтому. Всё отлично читается/пишется без танцев с бубнами.

Фишка же в том, что в 95% случаев достаточно строк. Почему в этих 95% случаев пользователь должен осваивать что-то более сложное?
источник

VS

Vasily Shapenko in Compiler Development
Михаил Бахтерев
Хм... Проблемы с юникодом последний раз у меня были даже и не помню, когда. Ну, я в Windows не работаю, может быть, поэтому. Всё отлично читается/пишется без танцев с бубнами.

Фишка же в том, что в 95% случаев достаточно строк. Почему в этих 95% случаев пользователь должен осваивать что-то более сложное?
Строки бывают в разной кодировке, и в с++ это историческая проблема
источник

МБ

Михаил Бахтерев in Compiler Development
Вот если бы ему не приходилось ничего осваивать, и он бы получал плюсы - это было бы хорошо. Принцип good enough непобедим, к сожалению. В сравнению с lisp-машинам unix был good enough, и этого хватило.
источник

ИЧ

Илья Чистяков in Compiler Development
Михаил Бахтерев
Хм... Проблемы с юникодом последний раз у меня были даже и не помню, когда. Ну, я в Windows не работаю, может быть, поэтому. Всё отлично читается/пишется без танцев с бубнами.

Фишка же в том, что в 95% случаев достаточно строк. Почему в этих 95% случаев пользователь должен осваивать что-то более сложное?
в любом случае нужна будет возможно выводить результат в виде строк, как я понимаю, речь не о замене, а доп функциональности
источник

МБ

Михаил Бахтерев in Compiler Development
Илья Чистяков
в любом случае нужна будет возможно выводить результат в виде строк, как я понимаю, речь не о замене, а доп функциональности
Так вот и вопрос, а как вывод строк последовательный, который можно flush-ить до завершения программы, будет вписываться в систему? Всякие табуляции и сортировки по столбцам - это хорошо, но если для интерфейса с этим нужно будет реализовывать какие-нибудь тайп-классы... Ну, это не удобно.
источник

МБ

Михаил Бахтерев in Compiler Development
У MS же это давнишняя идея: они даже Haskell пытались в качестве Shell использовать. Но не взлетело.
источник

ИЧ

Илья Чистяков in Compiler Development
Михаил Бахтерев
Так вот и вопрос, а как вывод строк последовательный, который можно flush-ить до завершения программы, будет вписываться в систему? Всякие табуляции и сортировки по столбцам - это хорошо, но если для интерфейса с этим нужно будет реализовывать какие-нибудь тайп-классы... Ну, это не удобно.
просто делать два интерфейса, для людей и для машин
источник

ИЧ

Илья Чистяков in Compiler Development
или не просто)
источник

ИЧ

Илья Чистяков in Compiler Development
там где сложно, не делать и страдать
источник

KR

K R in Compiler Development
Илья Чистяков
просто делать два интерфейса, для людей и для машин
Там скорее нужен спектр. Даже для машин скрипты могут быть написаны в порядке возрастания строгости на bash, на Питоне, и на Ocaml. И для системных скриптов предпочтительнее строгость Ocaml.

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

МБ

Михаил Бахтерев in Compiler Development
Не предпочтительнее. Проблема в системных скриптах она не внутри кода, а снаружи, потому что случается дочерта событий, ошибок и прочего. Строгость по типам - не самая большая проблема. Ну, таков мой опыт. Из типов достаточно строк, да int-ов. А вот правильно сигналы какие-нибудь обрабатывать. Как? Никакая система типов не спасает. Даже сессионки, потому что они просто всю сложность упихивают на уровень типов.
источник

МБ

Михаил Бахтерев in Compiler Development
Надо создать Терминальный Фонд! :)
источник

KR

K R in Compiler Development
Михаил Бахтерев
Не предпочтительнее. Проблема в системных скриптах она не внутри кода, а снаружи, потому что случается дочерта событий, ошибок и прочего. Строгость по типам - не самая большая проблема. Ну, таков мой опыт. Из типов достаточно строк, да int-ов. А вот правильно сигналы какие-нибудь обрабатывать. Как? Никакая система типов не спасает. Даже сессионки, потому что они просто всю сложность упихивают на уровень типов.
Не только по типам, разумеется. Но и ML не только в типах.
источник

МБ

Михаил Бахтерев in Compiler Development
K R
Не только по типам, разумеется. Но и ML не только в типах.
А что есть полезненького в ML для этого?
источник

KR

K R in Compiler Development
Михаил Бахтерев
А что есть полезненького в ML для этого?
Константы по-умолчанию, изменяемые значения неудобны синтаксически (это заставляет людей использовать константы), модули, позволяющие разделять всё. Компиляция проверяет все пути (в редком питоновском скрипте все обработчики ошибок написаны корректно).
источник

AT

Alexander Tchitchigin in Compiler Development
Михаил Бахтерев
Хм... Проблемы с юникодом последний раз у меня были даже и не помню, когда. Ну, я в Windows не работаю, может быть, поэтому. Всё отлично читается/пишется без танцев с бубнами.

Фишка же в том, что в 95% случаев достаточно строк. Почему в этих 95% случаев пользователь должен осваивать что-то более сложное?
По моим представлениям — не должен. Строки нормально интегрируются в этот "прекрасны новый мир" — не понимаю, о чём тут копья ломают. 🤷‍♀️
источник

KR

K R in Compiler Development
Исключения, опять-таки, введены нормально в ML по сравнению с shell (там только set -x)
источник