Źmićer
Или по твоему есть либо c++ либо дактайпинг?
Lama
Я говорю о том, что и раст и кресты в компайле выглядят либо как ебля через темплейты/систему типов, либо как препроцессоры
Źmićer
Видимо у меня не хватает каких-то знаний чтобы продолжать этот разговор
Źmićer
БЫло бы не плохо если бы ты привел пример охуенности хаскеля там или чего вместо него
Lama
Видимо у меня не хватает каких-то знаний чтобы продолжать этот разговор
Ну вот посмотри на numpy или weld Это либы для тензорных вычислений, но идея у них такая
Lama
Ты пишешь скрипт, который собирает тебе программу с маленьким рантаймом
Lama
Но numpy специализирован на тензорах
Źmićer
В расте какбы даже вывод типов работает let elem = 5u8; let mut vec = Vec::new(); vec.push(elem);
Źmićer
и нулевой рантайм
Lama
А вот язык общего назначения такого вида это terra У тебя в компайле очень сильная lua, которая собирает тебе программу чуть ли не из инструкций Или, например, питонячий miasm примерно с такой же идеей работает
Tharin
Есть ещё Crystal
Tharin
Там тоже всё удобненько
Źmićer
Хуйня это все. Я лично последний месяц ебался с релизом GIL в мультитредовом Питоне с “тонким мл биндом”. И код, который я в результате написал настолько хуевый, что лучше бы я руками генерики писал.
Źmićer
Copilot за тебя напишет все mutы и типы уже через пару лет.
Źmićer
А питон как был говном неспособным к нормальному проду - так и останется
Lama
Не-не, ты не понял Питон в компайле собирает тебе программу
Lama
Типа, сейчас мы пишем программы, которые компилятор превращает в бинарный код. Это как если рисовать картины в Photoshop А я предлагаю писать скрипт, который пишет программу. Это как написать программу, которая генерит тебе картины
Źmićer
Я могу сказать, что я пишу скрипт на расте, который генерирует программу на llvm, которая потом компилируется в машинный код
Lama
На питоне очень просто выражать свои мысли, но он не эффективный. Тащить эту неэффективность в рантайм не хочется. Рантайм хочется эффективный Писать программы на растах/крестах это душно, потому что это сложные языки
Źmićer
Количество слоев не имеет значения
Lama
Я могу сказать, что я пишу скрипт на расте, который генерирует программу на llvm, которая потом компилируется в машинный код
Не, ты не пишешь скрипт на расте Ты пишешь некоторый прообраз программы на расте А эта llvm пытается понять чего ты хочешь и потом генерит код, похожий на твой прообраз
Lama
Не, ты не пишешь скрипт на расте Ты пишешь некоторый прообраз программы на расте А эта llvm пытается понять чего ты хочешь и потом генерит код, похожий на твой прообраз
И отсюда появляется куча проблем У llvm протекают абстракции, поэтому в своём прообразе программы ты делаешь какие-то неочевидные вещи, которые не меняют сути, но эксплуатирую особенности llvm-а к оптимизациям
Źmićer
Ну ты просто говоришь что появятся языки ещё более высокого уровня
Źmićer
Вот только я ставлю на copilot
Lama
Нет, я говорю: Хватит писать описания программ. Эта декларативность раздувает компилятор и приводит к тому, что всем нам приходится учить неочевидиные хаки в компиляторе В компайле нужно быть более императивным. Это сложнее, но это вернёт полный контроль над конечным кодом. Хватит делать вид что у нас тут функции или классы или объекты. Комьютер работает с инструкциями, и эффективность и правильность нашей программы зависит от того какие инструкции окажутся в конечном бинаре
Lama
Тот же weld так работает. Ты императивно пишешь мол "сгенерь вот тут код, который перемножает такие вот матрицы". Или "сгенерь вот тут код, который делает такой вот map" и так далее. И это получается ультраэффективно и сильно
Źmićer
И эти скрипты работают в рантайме
Źmićer
Там конечно есть jit - только weld написан на расте
Źmićer
Фишка в том, что я могу написать такой код на самом расте с zero cost
Lama
И эти скрипты работают в рантайме
Не совсем. Они работают в ините Там создаётся объект с сгенеренным кодом внутри, в который ты потом данные запихиваешь
Źmićer
Вообще говоря раст - поразительно эффективен для клепания говноскриптов
Źmićer
Там есть заебись стандартаная либа, итераторы и вот это все
Źmićer
Паттерн матчинг, работа с файлыми, обработка ошибок
Lama
Не, раст очень душный в разработке
Vitaly
И эти скрипты работают в рантайме
спасибо, было интересно твое мнение почитать
Lama
Не, раст очень душный в разработке
Сиди и запоминай все эти дженерики для разделённой памяти. Потом сиди и запоминай все особенности замыканий и borrow модели
Źmićer
Вкатиться видимо сложно
Źmićer
Но я пишу код который компилируется с первой попытки
Źmićer
И я не сказал бы что там много бойлерплейта
Lama
Даже самые матерые растоманы среди моих знакомых таким не могут похвастаться
Źmićer
Скажем так - компилятор исправляет мои ошибки и у меня “ага, точно! я проебался!” а не “бля, хуле он ругается”
Źmićer
D:
А я не запускю компайлер пока rls не перестает ругаться, так что формально - с первой Ж)
Bogdan
Попробовать чтоли раст уже наконец
Bogdan
Дока какая-то там совсем маленькая
Bogdan
А во нашёл
Vitaly
я задолбался, 2 часа не могу Tabnine на спейсмакс поставить, это какая-то жесть
Vitaly
Zucchini
@emacs_en
Zucchini
только сразу говори что у тебя спейс
Vitaly
а там и по спейсмаксу?
Zucchini
кого-нибудь попробуем найти
Vitaly
спасибо)
Vitaly
tabnine поставил, теперь сниппеты повылетали...
Vitaly
Vitaly
да, а что?
Lama
Для чего?
Vitaly
я даже знак пайпа через сниппет ставлю
Vitaly
или в фениксе особенно
Vitaly
<%= form_for ___, Routes.____path(@conn, ___)}, ___, fn f -> %>
Vitaly
ff
Vitaly
настоил сниппеты, теперь оказывается табнине не работает с лсп...
Vitaly
либо то, либо другое
Lama
либо то, либо другое
Почему? Это странно
Vitaly
Почему? Это странно
я не знаю, несколько ишью висят
Vitaly
незакрытые
Lama
Может там есть другие LSP клиенты?
Vitaly
не, там просто табнине через company-mode работает, а lsp через lsp-mode