Евгений
Сиклон просто академики разрабатывали, а раст корпорация. Сиклон полущ даже
Евгений
Хотя, НЯП, разработчики сиклона ушли пилить раст
Dmitry
на самом деле, надо было сделать нормальный LLVM IR со всеми нужными ручками
A64m
смешно, но C# и Ява с нормальным полиморфизмом (с полиморфной рекурсией) и нормальными ГЦ более современные языки (почти честные 80-е), чем свифт и раст , не говоря про го, так что в последние годы языкостроение как-то не радует
Dmitry
дальше одни могли бы пилить бэкенды к нему
Dmitry
а вторые - фронтенды
Dmitry
и все были бы счастливы. а IR был бы нормально сделанным Си
Anonymous
Ignat
Dmitry
т.е то, что до сих пор ЯП это смесь бека и фронта - это какой-то позор.
Евгений
чем он лучше?
Если говорить языком rust'а, то можно задавать больше ограничений на лайфтаймы и возможность ими управлять
A64m
грубо говоря в C# и яве как в ML-ях 80х и в хаскеле, а в расте как в 70х в аде, потом в модуле 3 и плюсах
Евгений
Danila Matveev
И чем полиморфизм в джаве полиморфнее полиморфизма в русте?
все забываю проверить, поправили ли
в 1.18 была шляпа, что если в зависимости от условия вызывать разные создатели итераторов (дочерние по отношению к объявленому в ответе), то раст не мог это скомпилировать
и это просто вымораживало, потому что чуть ли не каждый метод коллекций возвращает свой тип итератора (filter, split и т.д.)
Ignat
Кажется, в расте когда-то обещали HKT, но это не точно
Anonymous
планируют, но заняты другим
Ignat
A64m
да я не знаю даже, где я это впервые увидел. Это вроде ообщеизвестные понятия. Универсальное представление это боксинг всего в общем случае (есть всякие особенности и оптимизации)
Alexander
какой платформонезависимый вариант размер файла посмотреть?
Alexander
а то я обычно из unix брал
Alexander
речь о том, что у нас heap структура boxed, т.е. там info + указатель на сам объект
Alexander
т.е. все значения имеют одинаковую такую структуру
Alexander
и один метод может работать с разными объектами, без доп специализации
Alexander
например в расте так сделать нельзя
A64m
смысл в том, что в универсальном представлении можно генерить код для параметрически полиморфных функций, потому что все значения одного размера (с указатель)
Ignat
В чём проблема явно принимать указатель?
A64m
в другом случае, который "экспансивным" у Аппеля называется, надо генерить специализации для каждого типа, т.е. параметрический полиморфизм реализуется как "ад-хок" за кадром, и там где типов бесконечное кол-во (в случае полиморфной рекурсии, например) вообще не работает
A64m
да ни в чем, кроме удобства, так полиморфизм и костылят, даже там где дженериков нету вообще
A64m
просто универсальное представление как имплементация параметрического полиморфизма это более современное явление, на волне оптимизма связаннного с появлением ГЦ с поколениями и т.д.
Ignat
Ну от языка с ручным управлением памятью было бы странно ожидать стремление разместить всё на куче и оперировать указателями
A64m
все время правда предпринимаются какие-то попытки это оптимизировать так что и во всех этих имплементациях и специализации генерят для некоторых случаев (в некоторых джитят) и всякий анбоксинг и эскейп анализ используют и т.д. имплементации с полнопрограммным анализом и специализацией всего для ФЯ бывают но не особо успешные
A64m
а с растом-то понятно, там это полностью оправданно, без ГЦ это просто нельзя себе позволить
Leonid 🦇
@qnikst hSeek hndl SeekFromEnd 0; hTell hdnl?
Alexander
true
Leonid 🦇
и stat же вроде показывает размер файла как его репортит фс, а не тру
a66ath
что за книга у аппеля?
Leonid 🦇
т.е. вот у меня тут на файлопомойке показывает двойной размер, потому что репликация и админ такой, своеобразный
A64m
Modern Compiler Implementation in ML
Leonid 🦇
А у Харпера еще что-то свежее было
Leonid 🦇
или у него лекции
A64m
но по обсуждаемой теме у Аппеля пять страниц
A64m
книга у Харпера есть, но я не помню чтоб там по имплементации что-то было
A64m
я там, правда, только отдельные главы читал
Leonid 🦇
вторая редакция http://www.cambridge.org/us/academic/subjects/computer-science/programming-languages-and-applied-logic/practical-foundations-programming-languages-2nd-edition
A64m
так, что же еще после 95-го появилось, что то мне теперь этот вопрос покоя не дает
parket
Сел почитать про полностью гомоморфное шифрование.
И там такая фраза ( Википедия ):
Схема Гентри поддерживала операции сложения и умножения над шифротекстом, что позволяет построить кольца для реализации любых произвольных вычислений.
Не могу дойти своим умом. Что такое "произвольные вычисления"?
parket
Т.е. какие возможности нам даёт факт того, что это кольцо.
Alexander
@banana_is не надо так
parket
Alexander
произвольные вычисления, я так понимаю, можно закодировать любую произвольную программу, так что исполнитель будет работать только над зашифрованными данными и не будет иметь возможности расшифровать их
Alexander
про кольцо придётся умных дождаться, может расскажут
parket
Да, это понятно. Но не понятно, почему так.
Aragaer
... а я вдруг вспомнил одну задачку, над которой давно думал, но не знаю, как подступиться
Aragaer
суть в том, чтобы отдавать шифровку и расшифровку каких-то очень важных данных на аутсорс. Мы берем данные, применяем к ним какой-то одноразовый шум, отдаем на шифрование, а из полученного зашифрованного мы (зная свой же собственный шум) можем получить зашифрованное без шума. И наоборот
Aragaer
или например ключ искажается каким-то образом
parket
Alexander
ну просто шифрование дешифрование не интересно
Alexander
а вот обработка данных без доступа к данным инетересно
parket
E(М + N) != E(M) + N
Alexander
@banana_is у sdehl-а был интересны йдоклад
Alexander
на zurihack
PsyDebug
Alexander
но я не осилил до конца, и в эффективном методе были какие-то неприятные ограничения, типа без рекурсии и т.п.
Alexander
я знаю что об этом, я в математике стоящей за этим не пытался разбираться
A64m
ну а что еще нужно если сложение и умножение есть?
PsyDebug
Aragaer
чуть более конкретно - есть две функции шифрования, "легкая", которую делаем мы и "тяжелая", которую делают аутсорсеры. Я придумал в качестве примера "легкой" нагенерить еще кучу мусорных данных, чтобы было N запросов на шифрование, но только один из них содержит настоящую информацию. Аутсорсер не знает, какой один из N запросов содержит данные (это о-очень слабая защита, да), а мы знаем.
A64m
с соотв. нейтральными элементами
A64m
Aragaer
причем сложение обратимо, а умножение нет
parket
Коммутативность и Ассоциативность еще, вроде
A64m
да, причем умножение и без единицы, вроде, когда с единицей обычно "кольцо с единицей" говорят
A64m
коммутативность не обязательно
A64m
а ассоциативность должна быть
A64m
не помню, наверное все-таки не обязательна по умножению
parket
Вот я не очень силён в математике. Но с точки зрения программирования. Нам операция условного перехода вроде нужна, для полноты по Тьюрингу. Нет7