OberonCore https://forum.oberoncore.ru/ |
|
День Оберона 2019 https://forum.oberoncore.ru/viewtopic.php?f=155&t=6421 |
Страница 9 из 13 |
Автор: | Валерий Лаптев [ Среда, 12 Февраль, 2020 03:36 ] |
Заголовок сообщения: | Re: День Оберона 2019 |
Пётр Кушнир писал(а): Много шума из ничего. Не-не-не... Уже только одно ЯВНОЕ представление архитектуры из компонентов - дорогого стОит. Конструирование типа из частей - нечто похожее есть в Додиезе - там можно писать частичные классы. Конечно, для сборки программы из компонентов потребуется метаинформация. Но, на мой взгляд, к единообразию все равно прийти не удастся. В отличие от материального мира, в программировании очень легко создаются новые сущности. Поэтому каждый, кто хочет (и способен) просто делает свое "в меру своей испорченности". |
Автор: | Пётр Кушнир [ Среда, 12 Февраль, 2020 09:44 ] |
Заголовок сообщения: | Re: День Оберона 2019 |
Валерий Лаптев писал(а): Не-не-не... Очень убедительно. Мы-то лапотные, трейтов с миксинами не видели ни разу, а уж про тип как тег или интерфейс как сумму методов и мечтать не могли. В итоге вся суть новости в том, что кто-то что-то сделал. Ну ок. |
Автор: | budden [ Среда, 12 Февраль, 2020 15:21 ] |
Заголовок сообщения: | Re: День Оберона 2019 |
Вот мне опять же неясно. Несколько уровней компонент есть в яве и C# (функция - класс - пакет - приложение). Явного описания структуры в java, может быть, и не существует, но, если программа вся статическая и не грузит классы по имени, то эту структуру, видимо, легко получить (сам с явой практически недостаточно опыта имел, чтобы знать этот вопрос). Кроме того, не всякая система может быть описана статически и грань довольно быстро переступается. Например, веб-страницу можно рассматривать как некую систему из компонент, но её структура определяется в момент выполнения и может меняться динамически. В т.ч. и в ББ с его коммандерами и динамической компиляцией модуля структура программы неизвестна до запуска ББ - она меняется по ходу дела. В динамической среде не так-то легко определить структуру зависимостей (и даже само понятие о зависимости не вполне ясно), таковая структура может спокойно содержать циклы и проч. Соответственно, возможность статического описания структуры проекта сама по себе не даёт ни достаточно гибкости для всех задач практики, ни ставит вопросов о полном наборе нужных инструментов. Поэтому всё же осмелюсь снова спросить, в чём же инновация в ВИРе? |
Автор: | adimetrius [ Среда, 12 Февраль, 2020 15:26 ] |
Заголовок сообщения: | Re: День Оберона 2019 |
Валерий Лаптев писал(а): Конструирование типа из частей - нечто похожее есть в Додиезе - там можно писать частичные классы. А чем ABSTRACT RECORD не "частичное описание класса"? Views.View асбтрактный, оч много всего реализовывает, изящно, элегантно и незаметно, а программист потом дописывает Restore, макушку айсберга - и вот оно. |
Автор: | Comdiv [ Среда, 12 Февраль, 2020 17:34 ] |
Заголовок сообщения: | Re: День Оберона 2019 |
budden писал(а): Явного описания структуры в java, может быть, и не существует, но, если программа вся статическая и не грузит классы по имени, то эту структуру, видимо, легко получить (сам с явой практически недостаточно опыта имел, чтобы знать этот вопрос). Структура программы может быть и статической по замыслу и не грузить явно классы по именам из строк, но сама по себя Java в отношени компоновки классов существенно динамическая и всё равно неявно грузит классы по имени в тот момент, когда они понадобятся, и их отсутствие можно корректно обработать, если использующий код отлавливает ClassNotFoundException.Цитата: Поэтому всё же осмелюсь снова спросить, в чём же инновация в ВИРе? Для ответа на этот вопрос, видимо, нужно чтобы кто-то, всё-таки, воспользовался предложением и после консультаций с автором описал бы систему со стороны. Не хотите взяться? Там есть горячая перезагрузка кода и русский язык, как Вы любите.
|
Автор: | Валерий Лаптев [ Четверг, 13 Февраль, 2020 08:56 ] |
Заголовок сообщения: | Re: День Оберона 2019 |
adimetrius писал(а): Валерий Лаптев писал(а): Конструирование типа из частей - нечто похожее есть в Додиезе - там можно писать частичные классы. А чем ABSTRACT RECORD не "частичное описание класса"? Не. Абстрактные классы - это обычный ООП, который есть во всех языках. Наследники реализуют и добавляют. Частичный класс - это несколько другое. Можно ДОБАВИТЬ в БАЗОВЫЙ класс чего не хватает. Совсем в другом месте программы. При этом исходный базовый класс не требуется заново транслировать, а только добавления. |
Автор: | Comdiv [ Четверг, 13 Февраль, 2020 11:15 ] |
Заголовок сообщения: | Re: День Оберона 2019 |
Валерий Лаптев писал(а): Можно ДОБАВИТЬ в БАЗОВЫЙ класс чего не хватает. Совсем в другом месте программы. Иными словами, это аналог добавления процедуры, которая работает с экземпляром класса, объявленного в другом модуле, где ради "красивого" вида вызова, вводятся побочные эффекты:При этом исходный базовый класс не требуется заново транслировать, а только добавления.
2. Необходимость разрешать конфликты пересекающихся "расширений". 3. Стимулирование отказа от полноценного сокрытия и внесенения зависимости от внутреннего содержимого, повышая хрупкость связей. |
Автор: | Валерий Лаптев [ Четверг, 13 Февраль, 2020 14:32 ] |
Заголовок сообщения: | Re: День Оберона 2019 |
Ну, "молча" предполагается, что эти "годы экспериментов" проделала Микрософт, и потом внесла эти фичи в язык. Собственно, Недоря тоже проводит "годы экспериментов", разрабатывая ВИР. |
Автор: | budden [ Четверг, 13 Февраль, 2020 14:45 ] |
Заголовок сообщения: | Re: День Оберона 2019 |
Цитата: Цитата: Поэтому всё же осмелюсь снова спросить, в чём же инновация в ВИРе? Для ответа на этот вопрос, видимо, нужно чтобы кто-то, всё-таки, воспользовался предложением и после консультаций с автором описал бы систему со стороны. Не хотите взяться? Не, так не пойдёт. Я спрашиваю у тех, кто её там увидел и пришёл в восторг. Если никто ничего не увидел, то не о чем и говорить. |
Автор: | adimetrius [ Четверг, 13 Февраль, 2020 16:57 ] |
Заголовок сообщения: | Re: День Оберона 2019 |
Валерий Лаптев писал(а): adimetrius писал(а): Валерий Лаптев писал(а): Конструирование типа из частей - нечто похожее есть в Додиезе - там можно писать частичные классы. А чем ABSTRACT RECORD не "частичное описание класса"? Не. Абстрактные классы - это обычный ООП, который есть во всех языках. Наследники реализуют и добавляют. Частичный класс - это несколько другое. Можно ДОБАВИТЬ в БАЗОВЫЙ класс чего не хватает. Совсем в другом месте программы. При этом исходный базовый класс не требуется заново транслировать, а только добавления. Хм, вот интересно: Пусть есть тип А, и для него автор гарантировал множество инвариантов ИА. Клиент К использует А, полагаясь, ессно, на ИА. Потом некто, годы спустя, подмешивает в А что-то. Получается А'. Но выглядит как А. Вопрос: что будет с клиентом К, которому под видом А подсунули А'? Кто гарантирует, что ИА соблюдается для А'? |
Автор: | Comdiv [ Четверг, 13 Февраль, 2020 17:47 ] |
Заголовок сообщения: | Re: День Оберона 2019 |
Валерий Лаптев писал(а): Ну, "молча" предполагается, что эти "годы экспериментов" проделала Микрософт Результаты исследований имеются в открытом доступе?
|
Автор: | Comdiv [ Четверг, 13 Февраль, 2020 17:54 ] |
Заголовок сообщения: | Re: День Оберона 2019 |
budden писал(а): Не, так не пойдёт. Я спрашиваю у тех, кто её там увидел и пришёл в восторг. Если никто ничего не увидел, то не о чем и говорить. Восторг, или, точней, живой отклик вызывает ряд высказываемых мыслей. Качество воплощения глобальных идей и оценку оврагов в конкретной системе вряд ли кто делал из здесь обитающих.Валерий, может, Вам или Вашим студентам будет интересно поработать с Вир-1? |
Автор: | Sergej Durmanov [ Четверг, 13 Февраль, 2020 19:47 ] |
Заголовок сообщения: | Re: День Оберона 2019 |
Comdiv писал(а): Валерий Лаптев писал(а): Ну, "молча" предполагается, что эти "годы экспериментов" проделала Микрософт Результаты исследований имеются в открытом доступе? |
Автор: | PSV100 [ Четверг, 13 Февраль, 2020 19:54 ] |
Заголовок сообщения: | Re: День Оберона 2019 |
budden писал(а): В динамической среде не так-то легко определить структуру зависимостей (и даже само понятие о зависимости не вполне ясно), таковая структура может спокойно содержать циклы и проч. Соответственно, возможность статического описания структуры проекта сама по себе не даёт ни достаточно гибкости для всех задач практики, ни ставит вопросов о полном наборе нужных инструментов. Поэтому всё же осмелюсь снова спросить, в чём же инновация в ВИРе? Ни общее описание системы, ни краткая инструкция не дают полного представления. В блоге автора также оказалось мало информации по самой сути. В целом, природа "явной схемы программы" выглядит не статичной. Вот здесь шире представлен "дух" системы (существующего и планируемого концепта): - Компонентный ассемблер для цифрового пространства. Часть 1 - Компонентный ассемблер. Часть 2. Дух языка - Вир-2. Интерфейсы Ранее автор делал акцент, прежде всего, на "программировании в большом" ("от распределенных приложений до распределенных много под-системных систем, работающих в неоднородной вычислительной среде"), или см. здесь. Сейчас, вроде бы, стоит задача охватить и "программирование в малом". Однако, публичные результаты пока наблюдаются лишь такие: OOP or not OOP or better OOP Цитата: Цитата: Множество интерфейсов для одной и той же структуры данных напоминают возможности языка модулей ML. Рассматривали ли вы языки ML-семейства — SML, OCaml? Мы рассматриваем широкий набор языков, в основном те, с которыми мы собираемся конкурировать: Java, Kotlin, C#, Go, Swift, Dart, Lua, JS. Смотрим и на ML’s, на Rust и на Jai. Но это не значит, что мы берем какой-то язык за основу. Мы запускаем широкое исследование, в котором задействованы университетские кадры из нескольких университетов, чтобы построить набор бенчмарков для количественного и качественного сравнения языков. Это все будет открыто, когда появятся первые результаты. И ещё до кучи насчёт языков: CLIP/CLOP vs pure OOP |
Автор: | Comdiv [ Четверг, 13 Февраль, 2020 20:00 ] |
Заголовок сообщения: | Re: День Оберона 2019 |
Sergej Durmanov писал(а): Comdiv писал(а): Валерий Лаптев писал(а): Ну, "молча" предполагается, что эти "годы экспериментов" проделала Микрософт Результаты исследований имеются в открытом доступе? |
Автор: | PSV100 [ Четверг, 13 Февраль, 2020 20:02 ] |
Заголовок сообщения: | Re: День Оберона 2019 |
Во время доклада на Дне Оберона были ремарки по поводу "огромного" размера пустой программы на Go. Также автор упоминал негативные ("прожорливые", хотя на фоне тех же Java c Net-ом ...) результаты от "компонентных" экспериментов на Delphi в 2000-х гг., предшествующих проекту ВИР. В самом деле, в те времена для Delphi возникла библиотека KOL (Key Objects Library), которая продемонстрировала "аппетиты" типового ООП-подхода, показав на порядок меньше (плюс эффективнее использование памяти, да и скорость...). Стандартная VCL в Delphi имеет традиционный раздутый абстрактный и виртуальный слой. Компилятор и линковщик из-за механизмов наследования и, прежде всего, таблиц виртуальных методов не могут "выкидывать" неиспользуемую "виртуальщину". В KOL использовали старый борландовский тип "object" вместо "class" и "interface", имеющий компактнее формат (в сравнении с "interface" -- и меньшую стоимость виртуального вызова), был задействован крайне минималистический набор виртуальных методов. Чтобы не разбухало RTTI вынуждены были не плодить типы для реализации визуальных "control"-ов, был общий TControl с огромным набором методов для всех случаев -- последствия обхода особенностей системы сборки (или всей системы). Также оказалось, что на размер конечного образа влияет большое количество исходных файлов-модулей, в результате применялись огромные модули (но в малом количестве) с массой содержимого. Предусматривалась замена стандартных системных модулей (которые могут через секции инициализации/финализации задействовать много чего нужного, однако не во всех программах) и др. Была возможность не использовать механизм исключений или задействовать в ограниченной форме на основе объекта исключения единственного класса. Архитектура объектов предусматривала адекватное внедрение зависимостей. Например, некая "техническая" процедура обработки событий от ОС определенных типов попадает в конечный образ только в случаях, если для объекта будет задан соответствующий "пользовательский" обработчик события (зависимость явного использования "технической" процедуры задаётся лишь в единственном месте -- в процедуре установки обработчика события). И пр. Ранее в теме была ссылка на JSC -- альтернативное новое поколение компонентной модели. Также информация без полного охвата, вроде бы, речь больше о программировании "в большом" (грубо, "фабрики типов"), не ясно насчёт программирования "в малом". Однако, докладчик говорит о переписывании или реализации системы "на Си с классами" (своё "наколенное" ООП), утверждает, что производительность и пр. существенно лучше, чем решение на основе Qt. Имхо, "компонентный ассемблер" для программирования "в большом" ("сборочного") вряд ли будет приемлемым без адекватного "ассемблера" и для "синтезирующего" программирования. |
Автор: | PSV100 [ Четверг, 13 Февраль, 2020 20:07 ] |
Заголовок сообщения: | Re: День Оберона 2019 |
Sergej Durmanov писал(а): Если я правильно понимаю, это что-то вроде partial types из Модулы-3 и C# ( тоже позаимстовано из Модулы-3 ). Когда объект разбивается на самодостаточные части ( интерфейс + реализация ) и при компиляции собирается в единый тип ( возмодна вариативность ) Скорее, usebox больше напоминает более гибкие "встраиваемые" или "расширяемые" модули (Module Embedding), когда-то предложенные для Оберонов. Встраивание (отношение contains-a) и импортирование (разделение модуля -- shares-a) -- разные отношения и могут быть одновременно между модулями. С учётом замечания от Недори: "так как в современной разработке всегда используются системы управления кодом и версиями, технически мы готовы к переходу к защите кода через авторизацию" в том числе, вроде бы, можно для "расширенных" модулей разрешить доступ и к приватной части базового модуля (например, используя паскалевское/борландовское ключ. слово "inherited"). В результате такой механизм будет включать и возможности "дочерних" модулей из Ada. И, вроде бы, нет преград в механизме и для "родовых" модулей (с generic-параметрами). |
Автор: | Comdiv [ Четверг, 13 Февраль, 2020 20:16 ] |
Заголовок сообщения: | Re: День Оберона 2019 |
PSV100 писал(а): Имхо, "компонентный ассемблер" для программирования "в большом" ("сборочного") вряд ли будет приемлемым без адекватного "ассемблера" и для "синтезирующего" программирования. Не стоит обесценивать это утверждение имхой. Без адекватного соответствия сборочного и синтерзирующего уровней невозможно эффективное создание эффективных же систем. Сгинете на согласовании и не сможете воспользоваться преимуществами друг друга.
|
Автор: | arlean1 [ Пятница, 14 Февраль, 2020 00:14 ] |
Заголовок сообщения: | Re: День Оберона 2019 |
Comdiv писал(а): PSV100 писал(а): Имхо, "компонентный ассемблер" для программирования "в большом" ("сборочного") вряд ли будет приемлемым без адекватного "ассемблера" и для "синтезирующего" программирования. Не стоит обесценивать это утверждение имхой. Без адекватного соответствия сборочного и синтерзирующего уровней невозможно эффективное создание эффективных же систем. Сгинете на согласовании и не сможете воспользоваться преимуществами друг друга.не совсем понятны критерии эффективности? Речь идет о больших или малых системах? Например, сборочный уровень - язык метапрограммирования может быть "подобен" языку порождаемой программы, в т.ч. для более лёгкого вхождения - это тоже эффективно ... типа https://compscicenter.ru/media/courses/2018-spring/spb-cpp-2/slides/cpp_2_lecture_240418.pdf Как примеры метапрограммирования - https://habr.com/ru/post/137446/ - здесь каждая из техник по-своему эффективна. |
Автор: | Валерий Лаптев [ Пятница, 14 Февраль, 2020 08:23 ] |
Заголовок сообщения: | Re: День Оберона 2019 |
adimetrius писал(а): Хм, вот интересно: Пусть есть тип А, и для него автор гарантировал множество инвариантов ИА. Клиент К использует А, полагаясь, ессно, на ИА. Потом некто, годы спустя, подмешивает в А что-то. Получается А'. Но выглядит как А. Вопрос: что будет с клиентом К, которому под видом А подсунули А'? Кто гарантирует, что ИА соблюдается для А'? В том-то и дело, что для клиента К все останется по-прежнему. У Недори это как-то гораздо более прозрачно сделано. И лично мне почему-то гораздо понятнее. |
Страница 9 из 13 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |