[01:11:20] <ada_ru> (I_vlxy_I) А есть какие-нибудь интересные доклады по Аде в интернетах?
[01:15:52] <ada_ru> (I_vlxy_I) чот на youtube какая-то жесть находится по ключевым словам
[01:16:07] <ada_ru> (I_vlxy_I) в гугле вообще какой-то сайт отбитых феминисток
[01:16:19] <ada_ru> (I_vlxy_I) https://adaconf.org
[01:21:08] <ada_ru> (I_vlxy_I) Адских спикеров нету, приходится смотреть про преимущества C++: https://www.youtube.com/watch?v=ltCgzYcpFUI
:-)
[01:48:16] <ada_ru> (I_vlxy_I) А видео вот этого не бывает? http://www.cister.isep.ipp.pt/ae2016/detail
[01:48:32] <ada_ru> (I_vlxy_I) Записей докладов. Только pdf'ки?
[02:25:27] <ada_ru> (Pavel) Идещь на фосдем.орг или ада белжиум и ищешь
[02:25:56] <ada_ru> (Pavel) Но это ведь был повод попиарить цпп :)
[02:28:39] <ada_ru> (I_vlxy_I) Неее! Как ты мог подумать про меня такое?!
[02:28:41] <ada_ru> (I_vlxy_I) :-)
[03:04:40] <ada_ru> (I_vlxy_I) А ada Europe это разве то же событие, что м fossdem?
[09:26:26] <ada_ru> (Pavel) Нет
[09:26:49] <ada_ru> (Pavel) Ада европа это за деньги
[13:04:29] <OCTAGRAM> с номером PEP промахнулся, правильный — https://www.python.org/dev/peps/pep-0383/
[13:21:41] <ada_ru> (I_vlxy_I) О чем вещают?
[13:28:47] <OCTAGRAM> обратимое кодирование из байтовых кодировок в юникод
[13:30:05] <yeo> шлюз ссылку пропустил сообщение из телеграм с фото без текста
[13:30:32] <yeo> s/ссылку//
[13:36:49] <OCTAGRAM> PEP 0383, в общем
[13:38:36] <ada_ru> (Максим) Pavel Включай live трансляцию :)
[13:39:36] <ada_ru> (Pavel) не потянет, тут дохлый интернет
[13:39:40] <ada_ru> (Pavel) слишком много клиентов
[14:29:42] <OCTAGRAM> procedure Free (X : in out String_Access); — то чувство, когда смотришь и не веришь, что читаешь стандарт
[14:31:31] <OCTAGRAM> из той же серии: function Exception_Identity(X : Exception_Occurrence) return Exception_Id; — пропустил же кто-то эти иксы
[15:17:07] <ada_ru> (I_vlxy_I) А что в них такого?
[15:26:21] <OCTAGRAM> кем надо быть, чтоб назвать аргумент X?
[15:26:44] <ada_ru> (I_vlxy_I) а в чем проблема то?
[15:27:32] <OCTAGRAM> а чё б сразу не f32
[15:28:07] <OCTAGRAM> или c32 вместо Wide_Wide_Character
[15:28:36] <OCTAGRAM> function Wide_Wide_Exception_Name(X : Exception_Occurrence) return Wide_Wide_String; — ну режет глаз X тут
[15:28:54] <ada_ru> (I_vlxy_I) foldr :: (a -> b -> b) -> b -> t a -> b
foldr f z t = appEndo (foldMap (Endo #. f) t) z
[15:29:21] <ada_ru> (I_vlxy_I) например
[15:29:24] <ada_ru> (I_vlxy_I) и не вижу проблем
[15:30:00] <OCTAGRAM> потому что это не Ада
[15:30:34] <ada_ru> (I_vlxy_I) это от языка не зависит. чем абстрактней функция, тем меньше смысла в названии аргумента и тем больше о смысле говорят типы, а не названия переменных
[15:31:29] <ada_ru> (I_vlxy_I) у процедуры Free тип аргумента значит сильно больше чем его название, поэтому название можно было бы вообще опустить
[15:34:14] <OCTAGRAM> ну блин, хоть Object, хоть Item
[15:34:18] <OCTAGRAM> хоть Data
[15:34:24] <OCTAGRAM> что угодно, только не X
[15:34:45] <OCTAGRAM> нашёл ещё такое: A generalized_reference <http://www.ada-auth.org/standards/12rm/html/RM-4-1-5.html#S0104> is a name <http://www.ada-auth.org/standards/12rm/html/RM-4-1.html#S0091> that identifies a reference object, and denotes the object or subprogram designated by the reference discriminant of the reference object.
[15:35:15] <ada_ru> (I_vlxy_I) нормально
[15:35:24] <OCTAGRAM> то есть, ссылка Ada 2012 может быть на подпрограмму
[15:35:31] <OCTAGRAM> этот момент я упускал
[15:35:52] <OCTAGRAM> получается восходящее замыкание, правда, не сильно поддержанное синтаксисом
[15:36:06] <ada_ru> (I_vlxy_I) длинные имена нужны только если тип не говорит о штуке ничего + оная штука весьма глобальна. то есть объявлена тут, а используется в 100500 строках ниже
[15:36:14] <OCTAGRAM> ну и без копируемости не сильно отличается от нисходящих замыканий
[15:36:50] <ada_ru> (I_vlxy_I) если использование Штуки локально и тип однозначно определяет её свойства, то длинное имя не нужно. a,b,c,x - вполне отличные названия.
[15:38:35] <OCTAGRAM> /me пытается понять, type Ref_Element(Data : access Element) — вот тут access Element обязательно анонимный должен быть или нет
[15:45:04] <OCTAGRAM> type Test_Reference (Data : not null Ada.Strings.Unbounded.String_Access) is null record with Implicit_Dereference => Data; -- not an access discriminant of "Test_Reference"
[15:45:07] <OCTAGRAM> понятно
[16:05:32] <OCTAGRAM> cannot initialize entities of limited type
[16:05:34] <OCTAGRAM> мда
[16:06:01] <OCTAGRAM> непросто пытаться писать так, чтоб в Ada 2012 было удобно, а с Ada 95 совместимо
[16:06:34] <OCTAGRAM> надо ж было производителям застрять на Ada 95
[16:06:40] <ada_ru> (I_vlxy_I) нафига совместимость с Ада 95?
[16:06:46] <ada_ru> (I_vlxy_I) Чо уж не с Ада 83?
[16:06:48] <OCTAGRAM> AdaMagic же
[16:07:02] <ada_ru> (I_vlxy_I) ада магик живо еще?
[16:07:19] <OCTAGRAM> в каком смысле живо?
[16:07:36] <OCTAGRAM> если где-то нет GNAT, берёшь компиляешь AdaMagic
[16:07:53] <OCTAGRAM> других-то нет вариантов
[16:07:55] <ada_ru> (I_vlxy_I) аффтары поддерживают сие поделие? развивают?
[16:08:53] <OCTAGRAM> те индийцы, у которых можно официально в розницу получить, насколько я понимаю, вообще не в теме и просто стригут купоны
[16:09:01] <OCTAGRAM> так что нет
[16:09:19] <ada_ru> (I_vlxy_I) значит мертво
[16:09:33] <OCTAGRAM> но, впрочем, у них есть некий "abstractor", который даёт общее сишное API на разных встроенных платформах
[16:10:06] <OCTAGRAM> и им кто-то сделал адский RTL поверх этого абстрактора
[16:10:39] <OCTAGRAM> так что вместе с абстрактором растёт портируемость «из коробки» инструментария как целого
[16:10:58] <OCTAGRAM> а компилятор — да, увы, не обновляется
[16:11:33] <OCTAGRAM> там якобы поддерживается подмножество Ada 2005, но я это подмножество не смог нащупать
[16:11:58] <OCTAGRAM> самых очевидных отличий, ни Объект.Метод, ни Wide_Wide_Character нету
[16:12:05] <OCTAGRAM> в документации тоже не уточняется
[16:12:08] <ada_ru> (I_vlxy_I) ну, это значит, что и баги там фикситься не будут. в общем, я бы не стал полагаться на такой инструмент
[16:12:23] <OCTAGRAM> а куда деваться?
[16:12:29] <ada_ru> (I_vlxy_I) и код небось проприентарный, то есть и пофиксить не выйдет если что
[16:12:39] <OCTAGRAM> код закрытый, да
[16:12:55] <OCTAGRAM> хм, ну всё-таки ACATS прошёл
[16:12:56] <ada_ru> (I_vlxy_I) как куда? допилить ada2js так, чтобы он и сишечку кодогенерировал!
[16:13:32] <OCTAGRAM> Такер Тефт ещё упоминал некий SPARK2C в недрах AdaCore
[16:13:49] <OCTAGRAM> ada2js с ACATS как дружит?
[16:14:02] <ada_ru> (I_vlxy_I) понятия не имею :-)
[16:14:09] <OCTAGRAM> и вообще, если на выходе транслятора сишный код, то ошибки поправимы хотя бы на выходе
[16:14:49] <OCTAGRAM> iOS и Emscripten — туда пока войти только через AdaMagic можно
[16:14:51] <ada_ru> (I_vlxy_I) там может быть такой сишный код, что лучше бы это был асм
[16:15:04] <OCTAGRAM> лучше, чем никакой
[16:16:24] <OCTAGRAM> Эльбрус ещё, наверное, только через AdaMagic будет достижим какое-то время
[16:16:28] <ada_ru> (I_vlxy_I) а точно-точно с iOS проблемы нерешабельные? вроде под ARM компилять gnat может. и с сишными либами линковаться тоже
[16:16:41] <ada_ru> (I_vlxy_I) в теории проблем быть не должно. на практике конечно придется потрахаться
[16:16:52] <ada_ru> (I_vlxy_I) Эльбрус не нужен
[16:16:58] <OCTAGRAM> кому как
[16:17:03] <OCTAGRAM> я могу быть уверен только насчёт AdaMagic
[16:17:25] <OCTAGRAM> с AdaMagic все проблемы я более менее в состоянии разрулить
[16:18:26] <OCTAGRAM> «вроде под ARM компилять gnat может» звучит гораздо менее оптимистично
[16:18:53] <OCTAGRAM> и даже если с iOS решено, остаётся Emscripten и Эльбрус
[16:19:04] <ada_ru> (I_vlxy_I) ну, скажем так, под мой lego ev3 gnat не только может компилять, но и запускаться на самом лего может и там компилять :-)
[16:19:10] <ada_ru> (I_vlxy_I) хотя там даже FPU нет
[16:19:20] <ada_ru> (I_vlxy_I) и ОЗУ типа 32 метра
[16:20:12] <OCTAGRAM> я пока что думаю сделать ссылки копируемыми в версии для Ada 95
[16:42:06] <ada_ru> (Максим) a2js с ACATS не дружит, a тк никто не интересуется a2js кроме vgodunko я не вижу смысла убиваться с acats
[16:44:25] <OCTAGRAM> ну просто вообще не понятно, что за кот в мешке
[16:44:48] <OCTAGRAM> как он записи транслирует, как процедуры, как вложенные процедуры, как объекты
[16:46:07] <OCTAGRAM> меня бы заинтересовало, если: 1. поддержка wasm; 2. асинхронизация; 3. структурная многозадачность на зелёных потоках
[16:46:38] <OCTAGRAM> такого нет нигде, это был бы уникальный продукт; CheerpJ сейчас стартует две минуты
[16:46:45] <ada_ru> (Максим) я пытался описывать, но это трудно
[16:46:47] <ada_ru> (Максим) http://forge.ada-ru.org/matreshka/wiki/Web/AdaToJavaScript
[16:46:58] <OCTAGRAM> а насчёт асинхронизатора как?
[16:47:12] <ada_ru> (Максим) а что это?
[16:47:44] <ada_ru> (Максим) была идея как-то транслировать задачи Ады в js workers
[16:48:13] <ada_ru> (I_vlxy_I) wasm очень далек от js. то есть транслятор в js в wasm не транслирует обычно.
[16:48:40] <ada_ru> (I_vlxy_I) wasm - это еще один бинарь, компиляцию в wasm обычно делает соответствующий бекенд. например llvm умеет
[16:48:51] <ada_ru> (Максим) в wasm пока останавливает необходимость отладки
[16:49:01] <OCTAGRAM> иногда асинхронизатором назыввают CPS-преобразователь
[16:49:06] <ada_ru> (I_vlxy_I) ы? есть же отладчики.
[16:49:18] <OCTAGRAM> хотя я не могу согласиться
[16:49:23] <ada_ru> (I_vlxy_I) плюсистов это не останавливает :-)
[16:49:27] <ada_ru> (Максим) кот js получаемый из a2js сильно напоминает адский исходник, его проще отлаживать
[16:49:44] <ada_ru> (I_vlxy_I) а source maps a2js может генерить?
[16:49:50] <ada_ru> (Максим) нет :(
[16:50:07] <ada_ru> (Максим) я не осилил спецификацию
[16:50:44] <OCTAGRAM> канонический CPS — это когда на выходе получается процедура с дополнительным аргументом-продолжением, и она этот аргумент либо сама вызывает, либо ставит его обработчиком в XHR или window.setTimeout
[16:51:19] <OCTAGRAM> а тот асинхронизатор, о котором я думаю, может скакать на трамплине, и коммуницировать с трамплином другим образом
[16:52:41] <OCTAGRAM> там вместо родного стека должен быть своя структура данных, все локальные переменные должны переделываться в поля объектов в этой структуре
[16:52:59] <ada_ru> (Максим) как это в Аде написать? для XHR и таймаута я делаю интерфейс + метод, который будет вызываться у объекта
[16:53:21] <OCTAGRAM> вместо вызовов функций нужно передавать трамплину команду и делать возврат управления
[16:54:33] <OCTAGRAM> а на Аде будет declare с задачами в синхронном стиле
[16:54:41] <ada_ru> (Максим) типа такого: http://forge.ada-ru.org/matreshka/browser/trunk/design/asis2js/examples/my_handlers.ads
[16:54:57] <ada_ru> (Максим) http://forge.ada-ru.org/matreshka/browser/trunk/design/asis2js/examples/html_button.adb
[16:55:15] <OCTAGRAM> чтоб раскрыть потенциал Ады, нужно, чтоб можно было писать в синхронном стиле
[16:56:09] <OCTAGRAM> ещё хорошо, чтоб можно было abort написать, и всем XHR приехала отмена запроса, всем cancelTimeout и т.п., ну и, конечно, все данные с поддержкой RAII были освобождены
[16:56:43] <OCTAGRAM> abort одной задаче, а отмена — всем дочерним, в этом смысл структурной многозадачности
[16:56:50] <ada_ru> (Максим) можешь пример написать например с setTimeout и задачами? как ты это видишь
[16:57:03] <OCTAGRAM> на Аде пишем delay
[16:57:34] <OCTAGRAM> после трансформации это превращается в команду трамплину либо вызвать delay, либо отдельная команда трамплина будет для delay
[16:58:14] <OCTAGRAM> трамплин вызывает window.setTimeout, запечатывает стек текущей задачи, и если осталось виртуальное процессорное время, переходит к исполнению другой задачи
[16:59:44] <OCTAGRAM> на setTimeout ставится обёртка, которая запустит трамплин с нужной задачей
[17:00:21] <OCTAGRAM> хотя, конечно, если есть активные задачи, то их тоже можно поделать до возвращения управления браузеру
[17:00:52] <OCTAGRAM> и ещё window.setInterval может пригодиться для задач, у которых кончилось процессорное время
[17:01:17] <ada_ru> (Максим) а XHR тоже синхронный? типа Result := serverCall;
[17:01:24] <OCTAGRAM> ну тут как вариант сам трамплин может каждый раз смотреть, есть ли задачи, и если есть, ставить setTimeout
[17:01:31] <OCTAGRAM> с точки зрения Ады — да
[17:02:21] <OCTAGRAM> я так понимаю, в отсутствие goto можно пользоваться switch
[17:02:47] <OCTAGRAM> там удобно, что по умолчанию исполнение дальше вниз проваливается
[17:03:28] <OCTAGRAM> функции после преобразования заходят в while, а внутри while заходят в switch
[17:04:10] <OCTAGRAM> while нужен для переходов вверх, как в циклах, внутренний трамплин, чтоб не вываливаться во внешний
[17:05:17] <OCTAGRAM> switch смотрит значение программного счётчика там же, где и локальные переменные, и в зависимости от его значения, продолжает с того или иного места
[17:06:37] <OCTAGRAM> ещё по-хорошему надо считать виртуальные инструкции, чтоб управление другим задачам и/или браузеру передавать
[17:07:41] <OCTAGRAM> как минимум, при передаче управления вверх внутри той же преобразованной процедуры надо проверять предел, и при вызове новой процедуры
[17:08:18] <OCTAGRAM> в Mozilla Firefox можно посмотреть, какие пределы установлены, после которых браузер предлагает снять сценарий с исполнения
[17:09:16] <OCTAGRAM> надо уметь заранее вернуть исполнение браузеру
[17:09:44] <OCTAGRAM> ещё, правда, есть идейка насчёт UI транзакций
[17:10:00] <OCTAGRAM> в браузере же всё атомарно меняется после исполнения
[17:11:02] <OCTAGRAM> это либо что-то мьютекса, который пока захвачен, управление браузеру не возвращается, и задача, его захватившая, работает с максимальным приоритетом до освобождения
[17:12:21] <OCTAGRAM> либо изменения накапливаются в транзакции, и потом эта транзакция может атомарно применяться кодом, который не подвергался преобразованию
[17:13:30] <OCTAGRAM> в этой транзакции команды Fetch могут быть для свойств и атрибутов DOM, и они должны совпасть при применении транзакции с тем, что там было, пока транзакция готовилась
[17:26:35] <ada_ru> (I_vlxy_I) cppcon тоже за деньги, но видео всех докладов потом выкладывают. не сразу, через пару месяцев, но выкладывают.
вообще, это распространенная практика, когда видео с докладов платных конференций потом публикуют. например видео с докладов ADD тоже публиковались.
[17:54:21] <ada_ru> (Pavel) https://live.fosdem.org/watch/aw1125 кто хотел трансляцию?
[18:16:44] <ada_ru> (I_vlxy_I) хы. монозвук в левый наушник
[18:22:20] <ada_ru> (I_vlxy_I) swagger for ada - это прикольно
[18:22:37] <ada_ru> (I_vlxy_I) https://github.com/stcarrez/swagger-ada
[18:23:51] <ada_ru> (I_vlxy_I) о! и по расту есть!
[18:55:57] <ada_ru> (Максим) да, чувак придумал свои ada servlets
[18:56:23] <ada_ru> (I_vlxy_I) разве свои? swagger вроде к аде отношения не имеет.
[18:56:40] <ada_ru> (Максим) и сказал что гунлбуферс не нужен :)
[18:56:47] <ada_ru> (I_vlxy_I) язык и тулзы для описание рест-сервисов. вроде удобно
[18:57:00] <ada_ru> (I_vlxy_I) эй! это чоэто? это как это?
[18:57:03] <ada_ru> (I_vlxy_I) как мотивировал?
[18:57:09] <ada_ru> (I_vlxy_I) все через json?
[18:57:15] <ada_ru> (Максим) ну в реализации swagger-ada, в серверной части
[18:58:24] <ada_ru> (Максим) ща про гногу будут толкать
[18:58:46] <ada_ru> (I_vlxy_I) или он не про протобафы говорил, а про gRPC?
[18:59:14] <ada_ru> (Максим) а это не одно и тоже?
[18:59:20] <ada_ru> (I_vlxy_I) нет
[19:00:07] <ada_ru> (I_vlxy_I) gRPC юзает протобафы, но протобафы активно юзаются и без них
[19:01:42] <ada_ru> (I_vlxy_I) собственно мне протобафы и плоскобуфера нужны без gRPC, и вообще без RPC
[19:04:27] <ada_ru> (I_vlxy_I) ой. они там GPS юзают вместо кошерного vscode, или там хотя бы emacs'a.
[19:05:39] <ada_ru> (I_vlxy_I) по вертикали почему-то изображение вытянуто на проекторе. сразу очевидно, что открытые драйвера - какашка 😊
[19:18:40] <ada_ru> (I_vlxy_I) какой СТРАШНЫЙ гуй.
[19:22:25] <ada_ru> (I_vlxy_I) но вообще, прикольно. понятно что там небось сверху css можно вкрутить
[19:28:42] <ada_ru> (Максим) засунуть весь код в предвыполнение пакета! что за изврат? как интересно он отладчик юзает :)
[19:29:03] <ada_ru> (I_vlxy_I) а отладчик там бряку не ставит?
[19:29:29] <ada_ru> (I_vlxy_I) там вообще, как я понял, всё мутно - не понятно же что на сервере выполняется, что на клиенте.
[19:29:48] <ada_ru> (I_vlxy_I) а то, что на клиенте (в браузере) небось вообще никак не поотлаживать.
[19:30:06] <ada_ru> (I_vlxy_I) но вообще, с зависимостью от дебагера нужно бороться 😊 по крайней мере её минимизировать.
[19:32:18] <ada_ru> (Максим) да все на сервере, как я понял
[19:32:56] <ada_ru> (I_vlxy_I) вплоть до мелких событий, ала onMouseClick?
[19:33:09] <ada_ru> (I_vlxy_I) это ж капец какая отзывчивость интерфейса будет
[19:33:24] <ada_ru> (I_vlxy_I) + всякий лейаут контролов ведь на стороне клиента явно должен быть
[19:33:42] <ada_ru> (Максим) и с кодировкой чуваки не проблемаются, String и погнали
[19:33:52] <ada_ru> (I_vlxy_I) то есть как минимум на стороне клиента, какая-то жиррная клиентская либа на js должна быть
[19:34:12] <ada_ru> (I_vlxy_I) ну, стринг для utf8 вполне прокатит 😊 особенно если строки не резать
[19:34:30] <ada_ru> (I_vlxy_I) вообще uint8_t* прокатит. то есть просто данных кусок.
[19:35:30] <OCTAGRAM> а если резать, то и с Wide_Wide_String так прост не получится
[19:36:01] <OCTAGRAM> графемы надо искать или что там в Юникоде для таких случаев
[19:36:05] <ada_ru> (I_vlxy_I) чойто? UTF32 вроде не бывает шире 4 байт.
[19:36:25] <ada_ru> (I_vlxy_I) то есть в теории - может быть. на практике - таких символов нет же.
[19:36:28] <OCTAGRAM> символ от его умляутов нельзя отрезать
[19:36:36] <ada_ru> (I_vlxy_I) а, это наверно да
[19:36:59] <OCTAGRAM> то ли графемы, то ли кластеры это называется
[19:37:40] <ada_ru> (Максим) да, там кластеры из символов
[19:38:32] <ada_ru> (I_vlxy_I) но вообще, кажется, сделать какое-то богатое приложение на этой гноге - это повеситься можно. богатое на UI события.
[19:38:41] <ada_ru> (I_vlxy_I) например графический редактор (даже уровня паинта)
[19:39:28] <ada_ru> (I_vlxy_I) если до сервера например задержка в 300ms
[19:39:31] <ada_ru> (Максим) Unsupported database type
[19:39:50] <ada_ru> (Максим) при попытке зайти на chat.gnoga.com
[19:40:12] <ada_ru> (I_vlxy_I) Ага
[19:40:27] <ada_ru> (I_vlxy_I) "The database information is in your settings.php file."
[19:40:29] <ada_ru> (I_vlxy_I) похапэ!
[19:40:54] <ada_ru> (I_vlxy_I) кажется это вообще URL не про аду
[19:43:12] <ada_ru> (I_vlxy_I) о! ща будет про питон!
[19:43:36] <ada_ru> (I_vlxy_I) PythonCore
[20:00:38] <ada_ru> (I_vlxy_I) чот они там на французском шпрехают шоле?
[20:00:46] <ada_ru> (I_vlxy_I) лягушатники!
[20:06:00] <ada_ru> (I_vlxy_I) ня. а почему экран не показывают? кода не видно на презентации
[20:06:07] <ada_ru> (I_vlxy_I) зато виден чувак и зрители