[11:37:43] <valexey_> ""Я правильно понимаю, что пользователь библиотеки обязан знать про тип Elem и Iterator при работе со списками? и - наследовать свои классы от Elem, в предположении, что они будут храниться в списках?"

Да, именно так"
[11:38:09] <valexey_> то есть у Дмитрия как раз все шарашит через таблицу виртуальных функций?
[16:40:29] <vlad2> Да фиг с ними с виртуальными функциями. А вот то, что элементы надо наследовать от чего-то - это сразу закопать.
[16:41:35] <geniepro> vlad2: ну а как это сделать по другому, если в обероне лишь один вид полиморфизма -- наследования? тут нужен стандартный параметрический полиморфизм, но шаблоны не прижились в обероне
[16:42:01] <geniepro> либо делать адхок без всякого полиморфизма, как они обычно и делают
[16:42:36] <geniepro> кроме того, там у них же были идеи делать модули генераторы модулей -- вот ими тоже можно -- шаблоны вручную, так сказать
[16:43:25] <vlad2> Никак не сделать. Но любой оберонщик тебе скажет, что все в обероне можно делать в библиотеке :) Ну а то, что эта библиотека неюзабельна они искренно не понимают, потому что других не видели :)
[16:43:35] <geniepro> оберонщики любят работать на уровне чуть выше ассемблера
[16:47:40] <valexey> на самом деле извратиться можно было бы. кажется.
[16:48:32] <valexey> хотя, я вот не знаю, что, в список я не могу просто int положить, нужно обязательно объект?
[16:49:01] <valexey> ну, энивей, можно было извратиться. через указатели и расшаривание стейта.
[16:51:15] <valexey> а, ну или даже без этого же.
[16:51:46] <valexey> в КП ведь есть Object - родительский тип любого RECORD'a
[16:52:08] <valexey> соответственно Compare принимает два указателя типа Object, и возвращает BOOLEAN
[16:52:10] <valexey> всё
[16:53:00] <valexey> ну а через рефлекшн в принципе и мувать объекты можно в памяти, не зная на этапе компиляции его точного типа.
[16:53:21] <valexey> это всё говно конечно, и вообще не безопасно, но для hello world'ов сойдет.
[16:53:29] <geniepro> <valexey> хотя, я вот не знаю, что, в список я не могу просто int положить, нужно обязательно объект?
если ты настоящий оберонщик, то список int'ов у тебя уже давно есть )))
[16:53:51] <valexey> ну, ок. список интов есть, но функций для сортировки то нету!
[16:54:19] <geniepro> да кто в здравом уме в обероне сортирует списки??? сортируй массив уже!!!
[16:54:21] <valexey> ваще, надо будет покурить его реализацию и сделать свой бенчмарк.
[16:55:04] <Kemet> в КП вроде есть спциальный тип ANYREC, который вроде совместим со всеми записями при передаце по ссылке,
[16:55:04] <valexey> вообще, кажется, нужно сравнивать уже ББ не с C++, а с python :-)
[16:55:21] <valexey> ну я и говорю Object. Забыл что оно ANYREC зовётся.
[16:55:34] <valexey> короче, берем numpy и сравниваем производительность :-)
[16:55:45] <valexey> c js вот тоже можно сравнить
[16:57:37] <Kemet> A record which is an extension of a hidden (i.e., non-exported) record type may not be exported.
Each record is implicitly an extension of the predeclared type ANYREC. ANYREC does not contain any fields and can only be used in pointer and variable parameter declarations.
[16:58:18] <valexey> ну я и говорю - Object
[16:58:51] <Kemet> не, прсто некий ROOT, псевдотип
[16:59:09] <valexey> а чем Object (в java) не такой root?
[16:59:19] <valexey> class Object
[16:59:24] <Kemet> Тем что он есть
[16:59:40] <Kemet> а КП его как бы нет, ты его не увидишь, мания компимляторас
[16:59:58] <geniepro> к ANYREC можно прямо привести как к Object?
[17:00:11] <Kemet> в дельфи есть TObject, так он тоже есть и он описан на языке дельфи
[17:00:43] <Kemet> geniepro: нет, но можно передать запись в параметр такого типа
[17:00:55] <geniepro> ну значит не Object
[17:01:24] <geniepro> недообъект, короче
[17:01:31] <valexey> ну, Object он да, не абстрактный
[17:01:48] <valexey> был бы Object интерфейсом, была бы полная аналогия
[17:01:49] <Kemet> открытая запись)) как открытый массиы)
[17:02:34] <Kemet> полезная штука
[17:02:49] <geniepro> valexey: у интерфеса же должны быть какие-то методы, иначе зачем он нужен? а у ANYREC'а нет ни методов, ни полей, ничего вообще -- ANYREC это тупо void*
[17:03:06] <valexey> нет, не типа
[17:03:25] <valexey> void* это просто указатель. а ANYREC - это с метаинформацией, возможен dynamic_cast
[17:03:27] <geniepro> valexey: я написал не типа, а тупо ))
[17:03:35] <valexey> тем более - это не тупо
[17:04:01] <valexey> к void* ты не можешь dynamic_cast применить
[17:04:09] <valexey> а к ANYREC - можешь
[17:04:18] <geniepro> а в обероне есть dynamic_cast?
[17:04:34] <valexey> угу
[17:04:49] <valexey> это ж типа чуть ли не основная киллерфича у них
[17:04:56] <valexey> за полторы инструкции делается!
[17:05:06] <valexey> эффективно! message bus на этом работает!
[17:08:10] <Kemet> ага, поэтому Вирт везде пихает специальное целочисленное поле с имарс жлемента)
[17:08:23] <Kemet> с типом элемента
[17:10:04] <valexey> а у вирта же нету вроде бы ANYREC
[17:10:11] <valexey> то есть там такой финт не прокатит
[17:10:19] <Kemet> да ему и не надо
[17:10:56] <Kemet> У него в системе титп Object
[17:11:14] <geniepro> vlad2: а у тебя в оберонжс'е есть такая либа как Scl?
[17:12:56] <valexey> http://www.opennet.ru/opennews/art.shtml?num=48307
[18:06:01] <vlad2> Нет, я сделал тип MAP
[18:08:07] <vlad2> Так же как и STRING
[18:18:32] <valexey> а MAP это ж другое. это ж unordered_map
[18:18:59] <vlad2> Неважно. Хоть какой.
[18:19:56] <valexey> ну, таки Scl это ж про сортировку.
[18:21:31] <valexey> кстати, в Scl, в доке, нет графиков, но есть табличка. Что как бы намекает о качестве и возможностях составных документов в BB :-)
[18:37:13] <valexey> интересно, как скоро полетит субстанция на вентилятор на оберонкоре на тему того, что самомашинка Uber'a столкнулась с пешеходовелосипедистом и послепдний скончался?
[19:44:41] <vlad2> Полетит, к бабке не ходи :) А вот если бы на обероне писали... :)
[19:45:26] <geniepro> то так бы и не дописали )))
[19:59:28] <Kemet> geniepro, да там в пару строчек всё пишется
[20:02:37] <valexey> в одну, ога :-)
[20:02:49] <valexey> /me посмотрел на несколько сотен тысяч строк кода проекта.
[20:02:58] <valexey> да не. вообще строчек кода не нужно!
[20:47:17] <vlad2> Где-то пролетала реальная история как чувак продавал (или раздавал) программу в 0-байт. И она реально делала полезную функцию - запускала предыдущую загруженную прогрмму.
[21:00:53] <geniepro> да, известная история, вроде про питера нортона
[21:01:13] <geniepro> с неё и начались нортон утилитис