Евгений
Сиклон просто академики разрабатывали, а раст корпорация. Сиклон полущ даже
Евгений
Хотя, НЯП, разработчики сиклона ушли пилить раст
Dmitry
на самом деле, надо было сделать нормальный LLVM IR со всеми нужными ручками
A64m
смешно, но C# и Ява с нормальным полиморфизмом (с полиморфной рекурсией) и нормальными ГЦ более современные языки (почти честные 80-е), чем свифт и раст , не говоря про го, так что в последние годы языкостроение как-то не радует
Dmitry
дальше одни могли бы пилить бэкенды к нему
Dmitry
а вторые - фронтенды
Dmitry
и все были бы счастливы. а IR был бы нормально сделанным Си
Dmitry
т.е то, что до сих пор ЯП это смесь бека и фронта - это какой-то позор.
A64m
И чем полиморфизм в джаве полиморфнее полиморфизма в русте?
он на универсальном представлении, т.е. как 80-е делали, а не как в 70х, так что можно делать полиморфную рекурсию и HKT (но HKT они не делают) в расте нельзя
Евгений
чем он лучше?
Если говорить языком rust'а, то можно задавать больше ограничений на лайфтаймы и возможность ими управлять
A64m
грубо говоря в C# и яве как в ML-ях 80х и в хаскеле, а в расте как в 70х в аде, потом в модуле 3 и плюсах
Danila Matveev
И чем полиморфизм в джаве полиморфнее полиморфизма в русте?
все забываю проверить, поправили ли в 1.18 была шляпа, что если в зависимости от условия вызывать разные создатели итераторов (дочерние по отношению к объявленому в ответе), то раст не мог это скомпилировать и это просто вымораживало, потому что чуть ли не каждый метод коллекций возвращает свой тип итератора (filter, split и т.д.)
Ignat
Кажется, в расте когда-то обещали HKT, но это не точно
Anonymous
планируют, но заняты другим
A64m
да я не знаю даже, где я это впервые увидел. Это вроде ообщеизвестные понятия. Универсальное представление это боксинг всего в общем случае (есть всякие особенности и оптимизации)
Alexander
какой платформонезависимый вариант размер файла посмотреть?
Alexander
а то я обычно из unix брал
Ignat
да я не знаю даже, где я это впервые увидел. Это вроде ообщеизвестные понятия. Универсальное представление это боксинг всего в общем случае (есть всякие особенности и оптимизации)
То есть речь о том, что у одних сабтайпинг с указателем на таблицу виртуальных функций в инстансе, а у других — подмешиваемые трейты и указатель на таблицу виртуальных функций нужного трейта рядом с указателем на инстанс?
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
@banana_is не надо так
Есть не надо так!
Alexander
произвольные вычисления, я так понимаю, можно закодировать любую произвольную программу, так что исполнитель будет работать только над зашифрованными данными и не будет иметь возможности расшифровать их
Alexander
про кольцо придётся умных дождаться, может расскажут
parket
Да, это понятно. Но не понятно, почему так.
Aragaer
... а я вдруг вспомнил одну задачку, над которой давно думал, но не знаю, как подступиться
Aragaer
суть в том, чтобы отдавать шифровку и расшифровку каких-то очень важных данных на аутсорс. Мы берем данные, применяем к ним какой-то одноразовый шум, отдаем на шифрование, а из полученного зашифрованного мы (зная свой же собственный шум) можем получить зашифрованное без шума. И наоборот
Aragaer
или например ключ искажается каким-то образом
Alexander
ну просто шифрование дешифрование не интересно
Alexander
а вот обработка данных без доступа к данным инетересно
parket
E(М + N) != E(M) + N
Alexander
@banana_is у sdehl-а был интересны йдоклад
Alexander
на zurihack
Alexander
но я не осилил до конца, и в эффективном методе были какие-то неприятные ограничения, типа без рекурсии и т.п.
parket
а вот обработка данных без доступа к данным инетересно
Вот я об этом и говорю. :) Вот только сходу не понятно, что нам даёт кольцо.
Alexander
я знаю что об этом, я в математике стоящей за этим не пытался разбираться
A64m
ну а что еще нужно если сложение и умножение есть?
PsyDebug
Вот я об этом и говорю. :) Вот только сходу не понятно, что нам даёт кольцо.
я правильно понимаю, что кольцо это циклическая последовательность?
Aragaer
чуть более конкретно - есть две функции шифрования, "легкая", которую делаем мы и "тяжелая", которую делают аутсорсеры. Я придумал в качестве примера "легкой" нагенерить еще кучу мусорных данных, чтобы было N запросов на шифрование, но только один из них содержит настоящую информацию. Аутсорсер не знает, какой один из N запросов содержит данные (это о-очень слабая защита, да), а мы знаем.
A64m
с соотв. нейтральными элементами
A64m
я правильно понимаю, что кольцо это циклическая последовательность?
кольцо это сложение с нулем и умножение с единицей
Aragaer
причем сложение обратимо, а умножение нет
parket
Коммутативность и Ассоциативность еще, вроде
A64m
да, причем умножение и без единицы, вроде, когда с единицей обычно "кольцо с единицей" говорят
A64m
коммутативность не обязательно
A64m
а ассоциативность должна быть
parket
коммутативность не обязательно
По сложению разве не обязательна?
A64m
не помню, наверное все-таки не обязательна по умножению
parket
Вот я не очень силён в математике. Но с точки зрения программирования. Нам операция условного перехода вроде нужна, для полноты по Тьюрингу. Нет7