Size: a a a

Compiler Development

2020 April 20

МБ

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

KR

K R in Compiler Development
Михаил Бахтерев
Что имеется в виду под проверкой всех путей?
Что в обработчике исключений вы не вызываете функцию sqrt с тремя параметрами.
источник

МБ

Михаил Бахтерев in Compiler Development
Alexander Tchitchigin
По моим представлениям — не должен. Строки нормально интегрируются в этот "прекрасны новый мир" — не понимаю, о чём тут копья ломают. 🤷‍♀️
Ну... Вот есть у меня сервер, и он пишет лог во время работы. Лог - это же кодата, а не дата. А объект - дада. Как мне это всё представить в виде объекта?
источник

AT

Alexander Tchitchigin in Compiler Development
Михаил Бахтерев
Что имеется в виду под проверкой всех путей?
Exhaustiveness checking.
источник

KR

K R in Compiler Development
И exhaustiveness checking тоже. Но, как правило, скрипты содержат жуткое количество ошибок в обработчиках ошибок (редко выполняющийся код). Притом эти ошибки совершенно дебильные.
источник

AT

Alexander Tchitchigin in Compiler Development
Михаил Бахтерев
Ну... Вот есть у меня сервер, и он пишет лог во время работы. Лог - это же кодата, а не дата. А объект - дада. Как мне это всё представить в виде объекта?
Во-первых, в последние годы логи модно писать именно в виде структурированных (JSON) объектов. Во-вторых, не хочется представлять в виде объекта — не надо. Это либо сам шелл, либо утилиты-конвертеры будут текст разбирать и представлять как надо, в виде объектов ли, таблиц ли, или ещё чего-то.
источник

МБ

Михаил Бахтерев in Compiler Development
K R
Что в обработчике исключений вы не вызываете функцию sqrt с тремя параметрами.
Ну... Эмс... Да я её и так не вызову с тремя параметрами. Проблема-то не в этом основная. Проблема в том, что эти обработчики вызываются в произвольных порядках, их всё равно нужно сопрягать с основной программой через переменные или IO какой-нибудь. И вот в этом месте начинается трэш и угар. А корявый sort мне и так отловят при первом запуске.
источник

AK

Andrei Kurosh in Compiler Development
Sailor Moon
если есть программа where то в чем проблема? Можно же и сортировать и фильтровать
Программа where должна делать что - парсить текст? Для этого надо, чтобы все другие программы договорились о формате табличного вывода. Иначе одна будет табами отделять, другая вертикальной чертой, третья псевдографикой - и превед
источник

МБ

Михаил Бахтерев in Compiler Development
Вроде, были в ML какие-то наработки для того, чтобы бороться со всеми этими асинхронностями. AliceML, кажется? Как там дела обстоят? Никто не знает?
источник

TS

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

AT

Alexander Tchitchigin in Compiler Development
Михаил Бахтерев
Вроде, были в ML какие-то наработки для того, чтобы бороться со всеми этими асинхронностями. AliceML, кажется? Как там дела обстоят? Никто не знает?
Вроде, мёртв. Но я там только Future/Promise помню, которыми теперь никого не удивишь.
источник

KR

K R in Compiler Development
Михаил Бахтерев
Ну... Эмс... Да я её и так не вызову с тремя параметрами. Проблема-то не в этом основная. Проблема в том, что эти обработчики вызываются в произвольных порядках, их всё равно нужно сопрягать с основной программой через переменные или IO какой-нибудь. И вот в этом месте начинается трэш и угар. А корявый sort мне и так отловят при первом запуске.
Это тоже есть. Но дело в том, что они вообще не тестируются. Это же классическое "а ротор мы сделаем из дерева, т.к. досюда никто не дочитает". Компиляция хотя бы гарантирует, что там будет код, который не вызывает несуществующие процедуры, не обращается к несуществующим переменным и т.д.

Sqrt это утрировано. А в реальной жизни какая-то библиотека поменялась (это питонисты любят), всё переписали, а обработчик пропустили.
источник

SM

Sailor Moon in Compiler Development
Andrei Kurosh
Программа where должна делать что - парсить текст? Для этого надо, чтобы все другие программы договорились о формате табличного вывода. Иначе одна будет табами отделять, другая вертикальной чертой, третья псевдографикой - и превед
да, парсить текст, как и другие программы. А идентация мне кажется не большая проблема - пока таблица остается таблицой программы сумеют договориться. Тут вопрос о том кто будет определять стандарт, я так понимаю. Тогда шелл этого не должен делать, имхо. А то мало ли какой еще формат окажется удобным для коммуникации.. пусть программы сами решают
источник

МБ

Михаил Бахтерев in Compiler Development
K R
Это тоже есть. Но дело в том, что они вообще не тестируются. Это же классическое "а ротор мы сделаем из дерева, т.к. досюда никто не дочитает". Компиляция хотя бы гарантирует, что там будет код, который не вызывает несуществующие процедуры, не обращается к несуществующим переменным и т.д.

Sqrt это утрировано. А в реальной жизни какая-то библиотека поменялась (это питонисты любят), всё переписали, а обработчик пропустили.
Ну... С этим согласен.
источник

AT

Alexander Tchitchigin in Compiler Development
Sailor Moon
да, парсить текст, как и другие программы. А идентация мне кажется не большая проблема - пока таблица остается таблицой программы сумеют договориться. Тут вопрос о том кто будет определять стандарт, я так понимаю. Тогда шелл этого не должен делать, имхо. А то мало ли какой еще формат окажется удобным для коммуникации.. пусть программы сами решают
> пока таблица остается таблицой программы сумеют договориться

Похоже, Вы не занимались Data Science... 😂
источник

AK

Andrei Kurosh in Compiler Development
Sailor Moon
да, парсить текст, как и другие программы. А идентация мне кажется не большая проблема - пока таблица остается таблицой программы сумеют договориться. Тут вопрос о том кто будет определять стандарт, я так понимаю. Тогда шелл этого не должен делать, имхо. А то мало ли какой еще формат окажется удобным для коммуникации.. пусть программы сами решают
а зачем парсить, если можно этого не делать и передавать объекты\таблицы напрямую?
источник

KR

K R in Compiler Development
Andrei Kurosh
а зачем парсить, если можно этого не делать и передавать объекты\таблицы напрямую?
В обычной жизни таблицы в одной программе устроены несколько не так, как требует другая. Например, колонки перепутаны. Названия колонок другие.
Или вместо колонки "Продолжительность обеда" у вас "Начало обеда" и "Конец обеда".
источник

AT

Alexander Tchitchigin in Compiler Development
K R
В обычной жизни таблицы в одной программе устроены несколько не так, как требует другая. Например, колонки перепутаны. Названия колонок другие.
Или вместо колонки "Продолжительность обеда" у вас "Начало обеда" и "Конец обеда".
Это как раз на уровне шелла может разруливаться, так же как сейчас такое разруливается awk.
источник

KR

K R in Compiler Development
Alexander Tchitchigin
Это как раз на уровне шелла может разруливаться, так же как сейчас такое разруливается awk.
А зачем тогда data.table в R?
источник

AT

Alexander Tchitchigin in Compiler Development
K R
А зачем тогда data.table в R?
Потому что в шелле нет поддержки таблиц?
источник