[00:00:08] <ada_ru> (I_vlxy_I) но мелкомягкий перспективней, ибо можно подумать про LSP
[00:00:45] <ada_ru> (vasil_sd) отвечает (I_vlxy_I) на <но мелкомягкий персп…>
Для задачи обучалки - LSP это из пушки по воробьям....
[00:01:28] <ada_ru> (vasil_sd) Там же сниппеты мелкие, народ будет всего пару строчек дёргать и жать кнопочку 'run'
[00:01:31] <ada_ru> (I_vlxy_I) это нормальный автокомплит например и хождение по исходникам
[00:01:43] <ada_ru> (I_vlxy_I) в этом примере - несколько файлов сразу. как ходить по ним будешь?
[00:01:56] <ada_ru> (I_vlxy_I) opengl - это довольно много кода обычно
[00:02:42] <ada_ru> (vasil_sd) отвечает (I_vlxy_I) на <opengl - это довольн…>
Обучающие кусочки не будут уж очень большими. И думаю пары файлов будет хватать для почти любых примеров
[00:02:54] <ada_ru> (I_vlxy_I) а так, вон чего у нас было для оберона: http://oberspace.org/oberonjs.html
[00:03:06] <ada_ru> (vasil_sd) отвечает (I_vlxy_I) на <в этом примере - нес…>
Как у адакор - табами
[00:03:59] <ada_ru> (vasil_sd) отвечает (I_vlxy_I) на <а так, вон чего у на…>
Во, весьма неплохо.
[00:04:57] <ada_ru> (I_vlxy_I) а вот народ развил идею: https://online.oberon.org
[00:05:03] <ada_ru> (I_vlxy_I) точнее не идею, а реализацию 🙂
[00:05:36] <ada_ru> (vasil_sd) А куда там идти?
[00:05:39] <ada_ru> (I_vlxy_I) собственно про это я в 2014 году на обероноконфе рассказывал. как оно устроено
[00:05:49] <ada_ru> (I_vlxy_I) ну, например: https://online.oberon.org/model/184
[00:05:50] <ada_ru> (vasil_sd) А вижу уже
[00:06:15] <ada_ru> (I_vlxy_I) капец. 6 лет назад уже это было
[00:06:41] <ada_ru> (vasil_sd) отвечает (I_vlxy_I) на <собственно про это я…>
Оберон прикольный язык. Мне особенно книжка Вирта понравилаcь :)
По ходу чтения у концу книги уже свой компилятор есть :)
[00:07:04] <ada_ru> (I_vlxy_I) ага. как материал для обучения - очень неплох
[00:07:21] <ada_ru> (I_vlxy_I) для написания полноценного hello world в языкостроении и в компиляторо и осестроении
[00:07:37] <ada_ru> (vasil_sd) отвечает (I_vlxy_I) на <ага. как материал дл…>
Вообще супер.
Но для реальных задач всё-таки многого не хватает...
[00:08:05] <ada_ru> (I_vlxy_I) угу. там и компиляторщику нельзя на этом останавливаться. то будет уметь, в плане грамматик, только LL1
[00:08:40] <ada_ru> (vasil_sd) отвечает (I_vlxy_I) на <угу. там и компилято…>
Это да.
[00:09:14] <ada_ru> (vasil_sd) Странно, что в учебные программы не ставят оберон. Для младших курсов для понимания - самое оно
[00:10:32] <ada_ru> (vasil_sd) Программа - написали компилятор, дальше на этом компиляторе редактор текстов, потом лабораторные по алгоритмам :)
[00:10:52] <ada_ru> (I_vlxy_I) ставят. но в основном не у нас
[00:11:12] <ada_ru> (I_vlxy_I) всякие оксфорды вроде оберон юзают для обучения
[00:11:17] <ada_ru> (vasil_sd) отвечает (I_vlxy_I) на <ставят. но в основно…>
Я нас имею ввиду. Забугром-то там много хороших программ...
[00:11:19] <ada_ru> (I_vlxy_I) оберон и хаскель 🙂
[00:11:37] <ada_ru> (vasil_sd) отвечает (I_vlxy_I) на <оберон и хаскель 🙂>
Одновременно, для шизофрении :)
[00:11:52] <ada_ru> (I_vlxy_I) по моему таки последовательно
[00:11:55] <ada_ru> (I_vlxy_I) но это не точно 🙂
[00:12:21] <ada_ru> (vasil_sd) отвечает (I_vlxy_I) на <но это не точно 🙂>
:)
[00:12:56] <ada_ru> (vasil_sd) ладно. я всё. спать
всем пока!
[00:13:06] <ada_ru> (I_vlxy_I) спокойной ночи
[02:08:32] <ada_ru> (Oleg) Вот бы сделать что-то типа Vaadin но на Аде
[02:09:27] <ada_ru> (Oleg) Чтоб перестать говнокодить в JS со всякими реактами, вуями и ангулярами
[04:10:11] <nordwind> На сяоми кстати все работает
[04:10:59] <nordwind> И брать надо глобал версию, включая в ней английский язык.
[04:12:40] <nordwind> Открыл в мобильном firefox
[04:25:44] <nordwind> https://github.com/vasil-sd/ada-tlsf/blob/master/formal_model_spec/block.als
[04:28:29] <nordwind> Опечатки в комментариях стр. 12, 168, 192 "линейным, абстрактным, момент"
[04:33:01] <nordwind> стр 187 "джойним" заменить на добавляем?
[04:48:37] <nordwind> https://github.com/vasil-sd/ada-tlsf/blob/master/formal_model_spec/freelist.als строка 27 "непредвиденных эффектов", стр. 107 там точно "for 7"?
[05:11:07] <nordwind> https://github.com/vasil-sd/ada-tlsf/blob/master/formal_model_spec/freelist.als строка 8 "одним из модулей-спецификацией" заменить на "модулем-спецификацией" ?
[05:27:46] <nordwind> И да, вначале сишный комментарий? В смысле /* */ вместо --
[07:27:38] <ada_ru> (vasil_sd) отвечает на <(nordwind) И да, вна…>
Ага, спасибо, поправлю все опечатки!
For 7 во freelist:107 задаёт максимальный размер множеств для поиска контр-примеров. 7 нормальный размер, избыточный, конечно, но лучше больше чем меньше :)
[07:27:52] <ada_ru> (vasil_sd) отвечает на <(nordwind) И да, вна…>
Да, это нужно сделать единообразно
[07:31:07] <ada_ru> (vasil_sd) отвечает на <(nordwind) стр 187 "…>
Вот тут не уверен, там операция join, как в реляционных базах, она не добавляет, а объединяет отношения специальным образом. Если есть устоявшийся русскоязычный термин, то буду благодарен, если кто-нибудь мне его скажет.
[07:31:36] <ada_ru> (vasil_sd) отвечает на <(nordwind) Опечатки …>
Ок, поправлю
[07:35:27] <ada_ru> (vasil_sd) А кроме опечаток, там хоть понятно в общих чертах о чем речь идёт? Нужно что-нибудь подробнее расписать по общей логике спеки?
[07:48:26] <ada_ru> (Eugene) отвечает (I_vlxy_I) на <по моему таки послед…>
на первом курсе хаскель, на втором оберон
[07:59:51] <ada_ru> (vasil_sd) отвечает (Eugene) на <на первом курсе хаск…>
Хаскель на первом курсе, по-моему немного жестковато.
[08:00:29] <ada_ru> (Eugene) отвечает (vasil_sd) на <Хаскель на первом ку…>
Почему? Математика же просто...
[08:06:35] <ada_ru> (vasil_sd) отвечает (Eugene) на <Почему? Математика ж…>
Там объем знаний для нормального понимания нужен приличный. И про лямбды и про типы и немного категорий (там же любая попытка вывести буковку на экран - это сразу монада) и тд.
[08:08:02] <ada_ru> (vasil_sd) А иначе это превращается в натаскивание на какие-то клише и синтаксические шаблоны языка, без понимания студентами того, что лежит в основе языка.
[08:09:21] <ada_ru> (vasil_sd) Ну, то есть, хаскель на первом курсе можно, но это не для среднего студента, а для каких-либо выпускников математических школ/колледжей и пр.
[08:14:09] <ada_ru> (Eugene) отвечает (vasil_sd) на <Там объем знаний для…>
был же эксперимент -- обычный студент за пару недель изучил хаскелл на уровне, достаточном для практического применения
[08:15:32] <ada_ru> (Eugene) http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.368.1058&rep=rep1&type=pdf
[08:17:10] <ada_ru> (Eugene) отвечает (vasil_sd) на <Ну, то есть, хаскель…>
ну это же Оксфорд, кто попало туда не попадёт, наверное...
[08:22:01] <ada_ru> (Eugene) таки я не понял этот модуль:
package Cube_Demo is
pragma Elaborate_Body;
end Cube_Demo;
он же ничего не экспортирует, то есть этот модуль просто подключается, выполняется его секция begin-end и всё на этом?
по-моему, такой подход нарушает всякие разные правила правильного программирования...
[08:43:40] <nordwind> Термин. Наверное слияние. Только он туда не подходит.
[08:46:59] <nordwind> Мне как не программисту, понятно о чем речь. Пусть ещё кто нибудь код проверит.
[09:37:46] <ada_ru> (vasil_sd) отвечает на <(nordwind) Мне как н…>
Хорошо, значит более-менее нормально расписал.
[10:50:40] <ada_ru> (Vadim) отвечает (Eugene) на <таки я не понял этот…>
Засунуть весь код в один файл это не для слабонервных. ;)
[11:38:06] <ada_ru> (Eugene) отвечает (Vadim) на <Засунуть весь код в …>
зачем в один файл? там разбито по модулям, но при этом по крайней мере этот модуль имеет побочные эффекты при загрузке, которые, к тому же, могут иметь разные результаты в зависимости от порядка выполнения секций begin-end этих модулей.
Вообще, думаю, это дыра в языке, такого быть не должно
[12:08:23] <ada_ru> (Максим) https://www.hackster.io/hedley-rainnie/lorada-ada-lora-ca5d0a
[12:35:19] <ada_ru> (vasil_sd) отвечает (Максим) на <https://www.hackster…>
Интересный проект. Особенно работа c trustzone
[12:51:28] <ada_ru> (Vadim) отвечает (Eugene) на <зачем в один файл? т…>
Один что бы было изначально проще :)
[17:42:48] <ada_ru> (Vadim) AdaWebUI предположительно некоторый аналог Vaddin
[18:15:58] <ada_ru> (Oleg) отвечает (Vadim) на <AdaWebUI предположит…>
О точно спасибо, посмотрю
[18:17:45] <ada_ru> (Vadim) Ну там сейчас ничего нет.
[18:17:51] <ada_ru> (Vadim) Почти.
[18:18:04] <ada_ru> (Oleg) Как то нет развития в этом направлении, проклятый вую реакт и прочее все окупировали
[18:18:08] <ada_ru> (Vadim) Есть аналогичный модуль в Матрёшке
[18:18:34] <ada_ru> (Vadim) Я его когда-то выложу на GitHub
[18:21:26] <ada_ru> (sergey_dukov) отвечает (Eugene) на <зачем в один файл? т…>
В АДЕ анализ инициализации модулей выполнен правильно. Если обнаружена зацикленная инициализация, то это идицируется как ошибка. Помню, в JPI MODULA2, компилятор пытался разрешить подобные проблеммы, но ничего хорошего из этого толком не получалось. Возникала возможность вредоносных побочных эффектов, хотя зацикливания инициялизации удавалось избегать.
[18:25:29] <ada_ru> (I_vlxy_I) отвечает (sergey_dukov) на <В АДЕ анализ инициал…>
В рантайме у Ады это ловится, или в компайл тайме?
[18:27:03] <ada_ru> (sergey_dukov) отвечает (I_vlxy_I) на <В рантайме у Ады это…>
На стадии компиляции.
[18:27:53] <ada_ru> (I_vlxy_I) отвечает (sergey_dukov) на <На стадии компиляции…>
Гут!
[18:44:59] <ada_ru> (Максим) отвечает (I_vlxy_I) на <В рантайме у Ады это…>
Можно заставить компилятор отложить это до момента выполнения, если ты умнее компилятора и хочешь чтобы разработку в стиле agile 😁
[18:53:51] <ada_ru> (I_vlxy_I) отвечает (Максим) на <Можно заставить комп…>
А можно небось вообще все проверки отключить, чтобы прога не падала!
[18:56:43] <ada_ru> (Максим) Elaboration Order Handling in GNAT — GNAT User's Guide for Native Platforms 21.0w documentation
https://docs.adacore.com/gnat_ugn-docs/html/gnat_ugn/gnat_ugn/elaboration_order_handling_in_gnat.html
[18:57:40] <ada_ru> (sergey_dukov) отвечает (I_vlxy_I) на <А можно небось вообщ…>
Это совершенно дурная традиция, отключать проверки.
[18:58:14] <ada_ru> (I_vlxy_I) отвечает (sergey_dukov) на <Это совершенно дурна…>
Ну, иногда надо действительно БЫСТРО.
[19:13:07] <ada_ru> (sergey_dukov) Весь смысл использования АДЫ — это создание надёжных программ. Конкретно, отключить контроль инициализации модулей, то большая вероятность зацикливания программы. А чем это лучше запланированного падения программы? А в результате программа всё равно упадёт, когда сожрёт все ресурсы. Оптизацию нужно производить после проверки программы на правильность в результатате тестовой эксплуатации.
[19:33:27] <ada_ru> (I_vlxy_I) Я про боевой сценарий и говорил. На тестовых серверах можно обмазаться практически любыми проверками
[19:33:48] <ada_ru> (I_vlxy_I) отвечает (I_vlxy_I) на <А можно небось вообщ…>
Но вот это - сарказм был, если что.
[20:03:46] <ada_ru> (sergey_dukov) отвечает (I_vlxy_I) на <Я про боевой сценари…>
Цена динамического контроля инициализации модулей очень низкая, Она производится один раз при загрузке программы или библиотеки. Для библиотек в GNAT есть возможность перенести проверку на стадию сборки или на стадию компиляции вызывающей программы. Всё это справедливо, если библиотека АДОВСКАЯ. Я стороник того, чтобы изгнать СИ из АДЫ (как это с самого начала и задумывалось)! А контроль инициализации модулей лучше делать на стадии компиляции (благо есть такая возможность). Это гарантирует от всяких проблем с инициализацией. Не нужно надеяться произойдёт ли или нет исключение на стадии выполнения, а отимизацию можно сделать максимальной.
[20:11:25] <ada_ru> (I_vlxy_I) отвечает (sergey_dukov) на <Цена динамического к…>
Я знаю, что рантайм проверка тут очень дешевая. В С++ и в Си также.
[20:23:46] <ada_ru> (sergey_dukov) отвечает (I_vlxy_I) на <Я знаю, что рантайм …>
В СИ её вообще нет. В СИ++ всё правилами вызовов конструкторов-деструкторов, а поледовательность их вызововов определяется компилятором и зависит от версии СИ++.
[20:25:18] <ada_ru> (I_vlxy_I) отвечает (sergey_dukov) на <В СИ её вообще нет. …>
Есть. -fsanitize=address
[20:29:51] <ada_ru> (I_vlxy_I) Это не в стандарте языка, но это есть везде
[20:29:55] <ada_ru> (I_vlxy_I) И применяется
[20:35:31] <ada_ru> (sergey_dukov) отвечает (I_vlxy_I) на <Есть. -fsanitize=add…>
Основная парадигма СИ - "программист всегда прав", и вы можете засунуть в инитиализиционный код всё что угодно. И компилятор даже не может определить, возможно ли зацикливание. Хотя если он видит рекуррсивный вызов функций, он предупреждает о возможности зацикливания.
[20:56:41] <ada_ru> (I_vlxy_I) отвечает (sergey_dukov) на <Основная парадигма С…>
Компилятор - нет. Рантайм проверка - да.
[20:57:39] <ada_ru> (I_vlxy_I) Мы немного о разном говорим. Но спасибо, я, кажется, знаю что ещё мне надо улучшить в докладе и какие примеры/исследования провести. Спасибо.
[21:04:26] <ada_ru> (sergey_dukov) 🆗