[07:51:35] <Kemet> $
[08:55:54] <vlad3> valexey: сделал JS.do("javascript")
[08:57:54] <Kemet> vlad3: нада как в "больших" оберонах PROCEDURE Proc CODE[JS] javascript END Proc; ))
[09:05:47] <vlad3> тяжелое сишное детство :) Там было просто __asm("inc eax")
[11:47:18] <Kemet> таки решили интегрировать Блэкбокс в А2
[11:48:32] <Kemet> для чего прдется модифицировать и А2 и ББ, и Активный Оберон, для безшовной инетеграции
[12:46:59] <valexey> vlad2: Круто!
[12:47:03] <valexey> Обновил :-)
[12:58:21] <valexey> vlad2: а ту багу не пофиксил?
[13:02:44] <Kemet> test
[13:02:44] <Жаба> Kemet, passed
[15:27:32] <valexey> что-то не понимаю я позицию Мадзи и Соловья.. Ну, то есть с фига ли человек пишущий на обероне внезапно бОльшую часть кода начнет на js писать?
[15:35:31] <Kemet> valexey: помнишь я говорил про подход - "аааа, не трогайте, ааа зачем, ааа это убьёт ХХХ в УУУ, аааа пусть само умрёт
[15:35:45] <valexey> угу, помню
[15:35:58] <Kemet> так это оно и есть
[15:36:18] <valexey> но, блин. ведь в SYSTEM есть по сути асмовые вставки. да и в ББ полно расширизмов, в том числе позволяющие машкод вставлять
[15:37:06] <Kemet> фигня, в АО вообще полноценный ассемблер
[15:37:19] <valexey> дык!
[15:37:42] <Kemet> в ББ его нет по причине шоб не заморачиваться на разные процы, типа кому надо тот в кодах напишет
[15:38:02] <valexey> При этом предлагают то синтаксис у оберона изменить, то указатели на массивы добавить то еще что. То есть модифицировать сам язык.
[15:38:08] <Kemet> а не потому что это убъект КП )
[15:38:21] <Kemet> ага
[15:38:31] <valexey> Угу :-) Ведь изначально ББ был под разные машины - и x86 и моторолки
[15:39:26] <Kemet> ну в АО в PACO Ассемблер и для i386? fmd64 b ARM все ж сделали
[15:40:06] <Kemet> но тут были проекты, диссеры , потому и делали
[15:40:23] <valexey> в общем, не вижу ни одной причины выпиливать js-вставки :-)
[15:40:43] <Kemet> а оминки коммерческая контора, просто делать не могут
[15:41:10] <Kemet> ну вставки я думаю всех лучше как CODE сделать, чтоб не размывать
[15:41:27] <Kemet> да и с Обернами стыкуется
[15:42:09] <Kemet> насал пилить фронтэнт бэбэшного кп
[15:42:54] <valexey> ну, пока так, а там всегда можно поменять думаю. надо попробовать саму идею, обкатать. посмотреть чего еще не хватает.
[15:43:26] <Kemet> нет ничего более постоянного, чем временные запоатки )
[15:43:29] <valexey> алсо если делать как CODE, то это все же уже расширение синтаксиса языка. а тут просто вызов функции со строкой унутре :-)
[15:43:59] <Kemet> дак CODE же есть
[15:44:04] <valexey> где?
[15:44:10] <Kemet> в О7
[15:45:20] <valexey> http://www.inf.ethz.ch/personal/wirth/Articles/Oberon/Oberon07.Report.pdf
[15:45:23] <valexey> где?
[15:48:10] <valexey> фича в том, что таковой модуль, с js-вставками остается синтаксически и семантически правильным Оберон-07 модулем и может быть проверен на синтаксис ЛЮБОЙ реализацией Оберона-07
[15:48:34] <valexey> При этом можно написать модуль JS-заглушку. тогда он даже соберется
[15:48:55] <valexey> то есть например компилятором akron1
[15:49:43] <Kemet> видимо выпилил, как необязательное в репорте
[15:50:37] <valexey> Ну, SYSTEM там тоже опциональный, но он его не выпилил
[15:51:21] <valexey> В общем, чем я больше думаю, тем больше мне кажется, что JS.do("js code here") является наиболее правильным решением.
[16:02:25] <Kemet> ну может и так, просто вызов с передачей параметра
[16:41:31] <Kemet> горожу лисапет - список на чанках
[16:41:50] <valexey> дело хорошее :-)
[16:41:56] <valexey> особенно в Oberon-07 :-)
[16:42:11] <Kemet> чанки или лисапеты?
[16:42:22] <valexey> Точнее это получается массив на списке чанков во
[16:43:12] <valexey> Гм. А можно ведь сделать не списком а массивом указателей на чанки. Будет эффективней.
[16:43:19] <Kemet> ну вообще то я именно ArrayList делаю
[16:43:32] <valexey> а, тогда гут
[16:43:44] <valexey> списком чанков имеет смысл делать стек, а не массив
[16:44:18] <valexey> но без WITH конечно синтаксически печально в Обероне-07
[16:44:56] <Kemet> но не для О7, хотя у меня есть для О1/Сириуса-М символьныйбуфер тоже так де сдаланый, но в О7 не пойдет ибо указателей на массив нету, нужно в рекорды зпаворачивать
[16:45:24] <valexey> угу. боксинг :-)
[16:45:46] <Kemet> ага, над элементарным такие абстракции
[16:46:36] <Kemet> этож сплошной оверхед везде
[16:46:56] <valexey> да не. какой такой оверхед? ну, то есть можно ж и без оверхеда
[16:47:14] <valexey> RECORD сам по себе, как и struct в сях может не добавлять оверхедов
[16:48:26] <Kemet> оверхед в абстракциях, нужно архитектурить, в еоде, в логике
[16:48:34] <Kemet> в коде
[16:48:42] <valexey> угу
[16:49:00] <valexey> зто понятия становятся ортогональными :-)
[16:49:02] <Kemet> ну то есть чтобы начать писать нужно сначала библиотеку замутить
[16:49:19] <valexey> короче, я не готов сказать хорошо это или жутко плохо. надо попробовать пописать.
[16:49:53] <Kemet> если либы готовы - нормалььно, если нет - ну тут облом и слёзы
[16:50:11] <valexey> алсо, быть может это и хорошо - системщикам (таки нам, да) придется сделать некие инструменты чтобы было проще либы клепать. просто так голый компилятор не выпустить.
[16:50:31] <valexey> причем все это с минимальным набором стандартных либ :-)
[16:50:40] <Kemet> угу
[16:52:09] <Kemet> в М3 синтаксис местами приятнее чем в оберонах
[16:52:15] <valexey> Еще было бы интересно попробовать полностью или частично воспроизвести Оберон ОС (что в книжке) на Обероне-07 в браузере :-)
[16:52:34] <valexey> Ну, M3 ваще конфетка.
[16:52:58] <valexey> Другое дело, что мы не осилим эту конфетку сейчас съесть.
[16:52:59] <Kemet> так дек же
[16:54:17] <Kemet> оберон ос на о7...ну не знаю, тяжеловато
[16:54:31] <Kemet> надо погружаться и в ос и в о7 с головой
[16:54:50] <valexey> ну, без системных частей вроде сборщика мусора - у нас ведь оно уже есть :-)
[16:55:32] <Kemet> ну это ясно, можно взять хостовый вариант, там уже оторвано
[16:57:12] <valexey> хочется прям по книжке :-)
[16:57:24] <valexey> будет наглядное пособие доступное каждому откуда угодно
[16:57:41] <Kemet> ну так то да
[16:59:43] <Kemet> наверное запилю либу контейнеров и попробую передать в репу А2, вдруг примут, хотя им ваще нафик ниче не надо
[17:00:01] <vlad2> valexey: по поводу баги еще такое наблюдение
[17:01:19] <vlad2> надо отдельно заводить тип для поинтера, чтоб потом иметь возможность кастать указатели. Как-то это не совсем лаконично и вообще.
[17:08:47] <valexey> vlad2: норм. в том виде в котором я зарепортил последний баг - я специально объявил TYPE AA = POINTER TO RECORD; чтобы ГАРАНТИРОВАННО с самой рекордой никто ничего делать не мог
[17:08:57] <valexey> ни кастить, ни копировать ни создавать
[17:09:00] <valexey> вот
[17:09:48] <valexey> то есть вне модуля
[17:10:14] <valexey> а внутри модуля если ты пишешь TYPE FooPtr = POINTER TO Record (Boo) a : INTEGER END;
[17:10:27] <valexey> то добраться до поля a ты таки сможешь. но только внутри модуля. вот.
[17:10:54] <valexey> так, пойду проверю свои утверждения в репорте :-)
[17:11:51] <valexey> да, похоже на правду
[17:33:11] <vlad2> Мда, просматривая новости про сирию нельзя не признать, что северная корея сделала правильную ставку на ЯО. http://www.vesti.ru/doc.html?id=1123420
[17:34:17] <valexey> ну да. неплохо бы пугалку иметь
[17:34:48] <vlad2> Еще интересно, что несмотря на тотальный брэйнвошинг сами америкосы не поддерживают всю эту херню.
[17:35:13] <vlad2> Последние пару дней просматривал cnn - там комментав "за" чуть более чем 0.
[17:35:29] <vlad2> При том, что они там явно модерируются.
[17:35:52] <valexey> гы
[17:36:27] <vlad2> И еще вчера кто-то онлайн голосование устроил там же - результаты были 400 "против" и 15 "за".
[17:36:35] <vlad2> Демократия победила.
[17:37:16] <vlad2> Т.е говернмент делает не то чего хотят 96% избирателей.
[17:37:57] <valexey> ну там вообще какая-то рассинхронизация с гаверментом - сноуден с АНБ там...
[17:38:00] <valexey> :-)
[18:51:41] <Kemet> test
[18:51:42] <Жаба> Kemet, passed
[18:54:18] <Kemet> прям все занялись совершенствованием ангийского )
[19:43:02] <Kemet> vlad2: в С++ случайно нет такой возможности, указать что метод обязан быть переопределен в потомка?
[19:43:39] <TRUE> сделать абстрактный метод
[19:44:16] <Kemet> а в абстрактный можно поместить минимальную реализацию?
[19:44:25] <TRUE> нет
[19:44:28] <Kemet> его ж вызвать нельзя
[19:44:53] <TRUE> в потомке, где не осталось нереализованных абстрактных методов - можно
[19:46:15] <Kemet> вот, а мне нужен, примерно такой механизм - в базовам типе есть метод с минимальной реализацией, а в потомке его нужно доопределить, т.е. поместить вызов предка и собственную реализацию, и проконтролировать, что метод точно реализован. может где есть такое
[19:54:42] <TRUE> то есть, на этапе компиляции ошибки возвращаться не должно?
[19:54:46] <TRUE> так это просто
[19:54:56] <TRUE> можно так извратиться
[19:55:40] <TRUE> Есть базовый класс T0 и его потомок T1.
В T0 есть метод m0.
Его реализация такая:
Проверяем, какому классу соответствует данный экземпляр.
Как это в коде c++ будет выглядеть, я не знаю, но схеатично это будет так:
if (instanceof(T0) {
exception();
}
//somecode
[19:57:43] <TRUE> или из реализации m0 вызвать абстрактный метод m (объявлен абстрактным в T0). В T1 он будет реализован и вызван методом m0.
[20:06:16] <Kemet> как раз чтобы компилятор ругался н
[20:07:00] <Kemet> язык не принципиален, я просто про спп спросил
[20:07:47] <TRUE> тогда нужно что-то на шаблонах
[20:07:56] <TRUE> возможно, в сети уже и готовое есть
[20:12:02] <TRUE> а может, получится объявить абстрактный класс без присутствия в нём хоть одного абстрактного метода. Тогда, с одной стороны, метод можно будет наполнить содержанием, а с другой стороны - просто так разместить объект базового типа в памяти тоже не получится: только потомка.
[20:13:54] <TRUE> или в конструкторе написать assert(! (this instanceof(T0));
[20:27:37] <vlad2> Kemet: Ты хочешь странного.
[20:27:38] <vlad2> Серьезно.
[20:28:03] <vlad2> Я вот прямо чувствую - 99% у тебя получится херня, даже если оно заработает как ты хочешь.
[20:28:53] <vlad2> Я про такой подход "чего-то сделать в базовом классе, чтоб потомки потом расхлебывали и подстраивались" уже писал здесь. Крайне хреновый подход.
[20:29:40] <vlad2> Если у тебя есть какая-то реюзабельная функциональность - она должна быть выражена в законченном компоненте, а не в базовом классе.
[20:30:07] <vlad2> В примитивном приближении - это может быть просто функция. Без всякиз классов.