A64m
от g-машины в смысле? это тоже граф редукшн
A64m
не знаю, как в двух словах сказать
A64m
в двух словах, наверное, что там делается попытка избавится от неизвестных вызовов и приганий, а с учетом полнопрограммного анализа строить эвал и апплай функции как будто все известно, инлайнить их и т.д.
A64m
тут, думаю, уже понятно почему не удалось ни один практичный компилятор так построить пока
Alexander
да, он что-то такое рассказывал
Alexander
что там что-то типа switch-case/state machine в эвалуаторе строится для программы
Alexander
тогда у нас все вызовы это direct jump
Anonymous
@glhfo будет жить. Поприветствуем!
Vitaly
Ребята, кто прилично знает Scala, отзовитесь! Есть пара позиций в JB (Спб/Мюнхен как минимум). Пишите в личку.
Dmitry
офтоп
Maxim
Кстати, почему на главной typeable.io висит лого тинькова?
Alexander
возможно тиньков был их клиентом
Maxim
Да что ты говоришь
Какой глубокий вывод)
Maxim
Я вот не нагуглил что именно они для них делали
Maxim
Плохо гуглил впрочем
Leonid 🦇
Некропостинг
Alexander
Некропостинг
Это цитата для Дмитрия. В чате по хаскельным вакансиям он попросил пример того, что в хаскеле можно считать императивной лапшой. Я вспомнил, что такой разговор уже был
Alexander
Вот конкретно с этим я не согласен и готов обсудить, что императивное программирование на Haskell, хоть и лучшее ИП из существующих, но все же императивное. Лейбл "Это же Haskell" не дает автоматически защиты от говнокода и стрельбы в ногу.
Alexander
казалось бы, в хаскелле ничего не осталось такого, чем можно себе в ногу выстрелить - глобальных переменных нет, типы есть
Alexander
Чрезмерное увлечение магией на типах также способно превратить код в неподдерживаемую лапшу, но уже на уровне типов, что, наверное, еще хуже.
Dmitry
Нужно формализовать понятие "лапша", ну а дальше дело за малым -- добавляешь опцию "-Wlapsha" и ок.
саша
Dmitry
ну вот да, лапша тоже начинает отдавать вкусовщиной
Dmitry
как вам код серванта, например? или vinyl ?
Dmitry
Dmitry
Dmitry
linux kernel - промышленное программирование?
Dmitry
коммерческие стеки протоколов?
Dmitry
коммерческие драйвера?
Alexander
как вам код серванта, например? или vinyl ?
Vinyl - еще одна поппытка поиграться на уровне типов и сделать то, что простые смертные ни понять, ни поддерживать не могут. Servant получше, так как его eDSL на типах хотя бы имел целью быть в продакшне. Но это не важно, так как нам не нужно поддерживать ни vynil, ни aervant в нашем коде, и мы можем свести взаимодействие с ними к минимуму.
Alexander
Dmitry
да ладно. понадобится что-то сделать, чего в серванте нет из коробки - а в нём почти ничего нет из коробки - и очень быстро будете писать и отлаживать во время компиляции код с UndecidableInstances
Dmitry
ну и если ядро линукса, стеки и драйвера - это то самое великое и ужасное Промышленное Программирование - то сам термин смысла не имеет
Dmitry
отсутствие типов, отсутствие тестов, отсутствие проектирования, отсутствие чувства прекрасного, копипаста, размазывание ответственности - это всё и есть промышленное программирование в таком случае
саша
Dmitry
Dmitry
что, если не сервант? на чем вебсервисы-то писать?
Dmitry
на йесоде, что ли?
Dmitry
хаха
Dmitry
саша
В том числе как я понял, это выражается в непринятии не "математических" тайпклассов. Всякие там IOReader, IOWriter и прочее
Dmitry
а публика с хабра начинает откладывать кирпичи просто от факта, что кто-то делает не так, как они
Dmitry
в жж достаточно было упомянуть в одном предложении хаскель и разработка, что бы получить сотни комментов срача
Alexander
Dmitry
пхаха. мне попадались всякие, давно в этом бизнесе
саша
Dmitry
на Java ?
Alexander
саша
Dmitry
ну у нас тут хаскельный чатик
Dmitry
что-то не верится, что сейчас кто-то будет писать вебсервис не на серванте
Dmitry
у нас 2018-ый год, на минутку
Andrey
https://github.com/input-output-hk/cardano-sl/tree/develop/docs как я понял, критерии хорошего и плохого кода размазаны тут
Dmitry
и от тайплевел-халявы - автогенерации документации, клиентского кода, тестов, swagger - никто нп откажется
Dmitry
ну вот сервант как раз и заставляет немного разобраться в тайплевеле
Dmitry
несильно. т.к. есть вещи куда хардкорнее него
Dmitry
абсолютный минимум для 2018-го года.
Andrey
у них же была статья замечательная, где они просто на пальцах объясняют, как дошли до жизни такой
Alexander
Dmitry
Dmitry
оч. хороший
Alexander
у меня не хватило сил отревьювить все эти пакеты и переписать
Alexander
Я - не буду. Я понимаю цену внедрения servant и vinyl в мой проект. Accidental complexity и риски крайне высоки. Но вот хаскеллистам, которые витают где-то высоко, слова "поддерживаемость, accidental complexity, борьба со сложностью", видимо, ни о чем не говорят. Программировать на Haskell можно двумя способами: либо ублажать свой могучий интеллект, либо писать код для всех.
Хотя, наверное, даже тремя способами: еще абы как. Ео это ни для интелоекта, ни для других. Ни рыба, ни мясо
Alexander
тот кто пишет веб сервис не на серванте или пишет сервис на 1.5 ендпоинта или делает это плохо
Alexander
Dmitry
Dmitry
да.
Alexander
сервант даёт автогенерацию кода, даёт автотесты, даёт swagger, даёт проверки сериализации всех данных
Alexander
притаскивает servant-quickchek
Alexander
все эти супервизоры, клиент-серверы и прочее