[01:34:13] <vаlexey> .
[01:38:31] <Jordan> в чём смысл сообщений из одной точки или запятой?
[01:42:32] <vаlexey> типа здесь, сейчас, жив, присутствую и могу что-нибудь написать/ответить
[01:43:12] <vlad2> Jyj ; nbgf gjrfpsdftn rnj ghbcencndetn&
[01:43:22] <vlad2> Оно ж типа показывает кто присутствует?
[01:43:49] <vаlexey> ну да, показывает. вот ты например всегда присутствуешь в списке, но не всегда присутствуешь явным образом :-)
[01:44:11] <vаlexey> точка - это проявление активности. что тут не только клиент подцепился, но еще и тушка с мясом и мозгами присутствует.
[01:54:16] <Jordan> вопросец
[01:54:37] <Jordan> WITH в обероне, это тот же case для union полей?
[01:54:55] <Jordan> Узнать тип переменной?
[01:55:23] <Jordan> Только в си его нужно установить, в WITH он уже встроен в тег переменной?
[01:55:36] <Jordan> Не совсем понимаю.
[01:58:31] <vаlexey> не, не совсем, мягко говоря. у рекордов обероновых ведь иерархия имеется
[01:58:45] <vаlexey> то есть это проверка типов с учетом иерархии (и сразу приведение типа)
[01:59:12] <vаlexey> в union'е мало того что тега типа нет, так если это дело еще в структуру завернуть (то есть тэг присобачить), то все равно иерархии не будет.
[02:00:10] <vlad2> jordan, по поводу http://forum.oberoncore.ru/viewtopic.php?p=84834#p84834
[02:00:28] <vаlexey> то есть сделать то конечно можно, но расстояние от WITH и системы типов Оберона до Сишных юнионов все же весьма велико
[02:00:47] <Jordan> Как понять иерархия record?
[02:00:55] <vlad2> многопточность vs многопроцессность это просто два разных похода со своими областями применения. Хорошо, когда можно выбрать. Вс лучае ББ выбора нет - только многопроцессность.
[02:00:57] <vаlexey> дык они же наследуются друг от друга
[02:01:39] <Jordan> А понял.
[02:02:00] <vаlexey> ну, самое смешное. что как обычно, любой недостаток ББ сразу представляется как Идеалогически Верное Решение :-) И что нужно всегда делать ТОЛЬКО так. И что этого ВСЕГДА достаточно.
[02:02:01] <Jordan> Влад. То же понял. О чём речь.
[02:02:57] <Jordan> Интересен то факт, что почему нет многопоточности? Поэтому и спросил на форуме. Это идеология или просто сложность реализации.
[02:04:12] <vаlexey> Jordan: потому что в Обероне её не было
[02:04:33] <vаlexey> это было сознательное упрощение - однозадачная операционка (то есть даже без коопаративной многозадачности)
[02:04:35] <Jordan> У них же КП
[02:04:40] <vаlexey> а КП оттуда вырос
[02:05:05] <vаlexey> сборщик мусора работающий в многопоточной среде - штука существенно более сложная (чтобы не тормозил все)
[02:05:08] <Jordan> Может для применения ББ, она и не нужна.
[02:05:20] <vаlexey> да, блин. у них там даже сборщик мусора КОНСЕРВАТИВНЫЙ
[02:05:23] <vаlexey> а не точный
[02:05:36] <vаlexey> (кстати, в Обероне он был точный, сколь я помню. то есть в ОС Оберон)
[02:05:47] <vаlexey> а какое применение ББ? :-)
[02:06:25] <Jordan> Использование и продвижение оберон технологий :-)
[02:06:34] <vаlexey> o_O
[02:07:21] <Jordan> На форуме об оберон технологиях написано много. Но, что это...
[02:07:37] <Jordan> Некие формальности, правила
[02:08:56] <Jordan> Раздел же есть. Оберон технологии в IT
[02:09:28] <vаlexey> С++ технологии в IT :-)
[02:09:38] <vаlexey> звучит маразматично, по моему :-)
[02:09:41] <Jordan> Типа того.
[02:10:11] <Jordan> Стоп
[02:10:12] <Jordan> Оберон-парадигма в ИТ
[02:10:28] <vаlexey> С++-парадигма в ИТ :-)
[02:10:37] <vаlexey> js-парадигма в ИТ
[02:10:43] <vаlexey> C#-парадигма в ИТ
[02:10:45] <vаlexey> :-D
[02:11:33] <Jordan> Brainfuck парадигма в ИТ
[02:13:30] <Jordan> Что самое интересное, Пётр знал, что для его хоста будут нужны шрифты во freeglut из коробки нет, но всёравно взял freeglut.
[02:14:08] <Jordan> Мы не ищем легких путей.
[02:14:22] <Jordan> Если среда так непереносимая.
[02:14:34] <vаlexey> я не понимаю какие проблемы сделать биндинг для freetype
[02:14:35] <Jordan> Если язык, то аскетичный
[02:14:42] <vаlexey> Нужное подмножество
[02:15:11] <vаlexey> Я не представляю какие могут быть проблемы с другими языками у человека который хотя бы 5 лет программирует профессионально.
[02:15:34] <vаlexey> да даже если и не профессионально, а просто программирует.
[02:16:09] <Jordan> freetype нужен не только биндинг.
[02:16:14] <Jordan> Ещё сама обвязка
[02:17:03] <Jordan> Не в языке а в поддержке. Язык реализован для 1 с половиной платформы. Если нужно перенести, всё приехали.
[02:17:28] <vаlexey> не, Петр писал что он Си не знает, поэтому и не осилил биндинг к freetype
[02:17:56] <Jordan> Биндинг это лишь 10%
[02:18:12] <vаlexey> но вот его то он и не осилил :-)
[02:18:38] <Jordan> Даже биндинг не поможет, так как обвязка и сама библиотека очень сложна.
[02:18:53] <Jordan> Парой функцией не обойдёшся
[02:18:57] <vаlexey> э?
[02:19:15] <vаlexey> да нет там ничего неподъемно-сложного
[02:19:23] <vаlexey> у нас в проекте на работе народ довольно быстро прикрутил
[02:19:36] <Jordan> Грубо говоря, можно скачать ttf sdl и посмотреть сколько кода нужно написать для задействования freetype
[02:19:57] <vаlexey> да банально можно примеры глянуть :-)
[02:20:15] <Jordan> Потом понадобятся картинки
[02:20:19] <Jordan> Потом звук
[02:20:22] <Jordan> Потом видео
[02:20:23] <vаlexey> http://www.freetype.org/freetype2/docs/tutorial/step1.html
[02:20:41] <vаlexey> звук никакого отношения к opengl и к фритайпу не имеет
[02:20:48] <vаlexey> а видео - это OpenGL и есть
[02:21:00] <Jordan> Форматы
[02:21:20] <Jordan> В sdl всё из коробки, нужные либы уже есть.
[02:21:34] <vаlexey> ну, webm делается вообще с полпинка
[02:22:21] <Jordan> Хм то ли я другой исходник видел, думал что freetype сложнее.
[02:23:17] <vаlexey> да нет там ничего уберсложного
[02:23:33] <vаlexey> у нас freetype в проект студенты без опыта работы вкручивали
[02:27:34] <vаlexey> причем проект у нас больше чем ББ :-)
[02:29:30] <Jordan> Или это от желанияя все сделать с нуля, ручками.
[02:29:55] <vаlexey> что именно?
[02:37:07] <vаlexey> если что, sdl в нашем проекте ну вообще никак, не пришей кобыле хвост был бы.
[02:37:40] <Jordan> Для ББ-шного хоста в самый раз.
[02:38:27] <Jordan> Главное если ББ будет переносимый. Хост не нужно вообще переписывать.
[02:39:10] <Jordan> Интерфейс ББ
[02:41:14] <Jordan> sdl для разного используют, всёж от задачи. Мне чем sdl нравится на нём можно сразу ваять, без оконной системы конкретой оси.
[02:41:33] <Jordan> без знания оконной системы конкретой оси.
[02:42:11] <vаlexey> ну, там возможности очень ограниченные
[02:42:23] <vаlexey> а в версии до двойки вообще никаких возможностей и не было, в плане окон
[02:42:47] <Jordan> Игры на нём делают. :-)
[02:43:03] <vаlexey> ну да. игры - как раз приложения которым окна не нужны
[02:43:05] <vаlexey> то есть вообще
[02:43:18] <Jordan> Есть окно в него и тыкаешь. :-)
[02:43:31] <vаlexey> игры это обычно полноэкранка
[02:43:36] <vаlexey> либо это ОДНО окно
[02:43:45] <vаlexey> а в ББ одним окном не обойтись :0(
[02:43:47] <vаlexey> Ж-)
[02:44:17] <Jordan> В ББ многооконность есть? Так как при запуске одно окно, и окна не выходят за рамки главного окна.
[02:44:24] <vаlexey> у всех есть :-)
[02:44:34] <vаlexey> банально менюшка - это отдельное окно
[02:44:57] <vаlexey> то есть всплывающее меню по правой кнопке мышки
[02:45:15] <vаlexey> и оно таки да, выходит за границы главного окна
[02:45:23] <Jordan> Да точно.
[02:51:52] <Jordan> Теперь понял почему был выбран freeglut
[02:52:43] <Jordan> А я ещё в сообщении, мол была выбрана неправильная библиотека и всё такое, даже стыдно.
[02:53:27] <vаlexey> freeglut был выбран потому, что там можно было быстрее прототип накатать :-)
[02:53:56] <vаlexey> glut он вооще на поиграться, да прототипы пописать. обычно потом его выкидывают
[02:54:54] <Jordan> ясно
[02:55:31] <vаlexey> в принципе, sdl 2 дает возможность делать больше одного окна. вопрос лишь в деталях - насколько это быстро и гладко работает там. и какие там есть возможности для этих окон.
[02:55:50] <vаlexey> ну и вообще, написат либу-обертку над окошками для нескольких платформ - штука не сложная
[02:56:00] <vаlexey> это чай не виджеты клепать
[02:56:08] <vаlexey> там полторы концепции, в окнах этих
[02:59:31] <Jordan> nullptr это с11?
[02:59:51] <vаlexey> нет, это С++11
[03:00:03] <Jordan> Ну да, новьё
[03:02:49] <Jordan> накопал
[03:03:09] <Jordan> многоогонность есть.
[03:03:35] <vаlexey> вопрос в том - какая она
[03:03:36] <Jordan> Создаешь онка и функцией SDL_CreateRenderer работаешь с каждым окном отдельно
[03:03:38] <vаlexey> там много нюансов
[03:03:50] <vаlexey> ты учти, что там нужно будет часто создавать и уничтожать окна
[03:03:55] <vаlexey> часто и быстро
[03:04:17] <Jordan> Оно может оставаться только его скрыть.
[03:04:35] <vаlexey> это не всегда будет работать как надо
[03:04:36] <Jordan> Быстрота отрисовки или выделение памяти для окна?
[03:05:04] <vаlexey> короче, проверять надо. попробуй реализовать менюшку там :-D
[03:05:20] <Jordan> Я его ещё не подключил, гугль читаю.
[03:05:32] <Jordan> Буду пробывать.
[03:05:52] <vаlexey> по тычку в основное окно в месте тычка образуется окошко менюшки (с пофиг какой картинкой внутри), после потери фокуса это окно должно сразу исчезать
[03:06:19] <vаlexey> потеря фокуса - это например человек ткнул мышкой в чужое приложение.
[03:06:34] <vаlexey> или в твое окно
[03:06:38] <vаlexey> или ткнул esc
[03:06:41] <vаlexey> или что-то еще :-)
[03:06:45] <vаlexey> именно потеря фокуса.
[03:07:05] <Jordan> Проверить, если координаты мыши не совпадают со кном тогда удалить или скрыть окно. перевести в ждущий режим.
[03:07:35] <vаlexey> не
[03:07:54] <vаlexey> координаты могут не совпадать, но фокус ввода может быть все равно на твоем окне-менюшке
[03:08:12] <vаlexey> это вполне конкретное событие в оконной системе - потеря фокуса окном
[03:08:21] <vаlexey> так, я спать
[03:08:27] <Jordan> пока
[03:19:59] <Jordan> Влад ты здесь?
[03:45:34] <vlad2> Да.
[09:54:19] <alexey.veselovsky> гы-ы-ы. http://forum.oberoncore.ru/viewtopic.php?f=2&t=4895&p=84838#p84838
[09:54:57] <alexey.veselovsky> то что в плюсах делается так: http://www.cplusplus.com/reference/algorithm/fill/
[09:55:08] <alexey.veselovsky> то в ББ пишется на асме :-D
[09:55:24] <alexey.veselovsky> http://ru.cppreference.com/w/cpp/algorithm/fill
[13:16:45] <alexey.veselovsky> CONST msAdr = -40; kbdAdr = -36;
[13:18:16] <alexey.veselovsky> https://github.com/ilovb/ProjectOberon2013/blob/master/Input.Mod#L4
[13:18:29] <alexey.veselovsky> вот это точно феерично:
[13:18:34] <alexey.veselovsky> https://github.com/ilovb/ProjectOberon2013/blob/master/Input.Mod#L59
[13:24:28] <alexey.veselovsky> что-то я в жизни не понимаю
[13:24:35] <alexey.veselovsky> PROCEDURE Available*(): INTEGER;
BEGIN Peek();
RETURN ORD(Recd)
END Available;
[13:25:02] <alexey.veselovsky> при этом Peek вместо того чтобы возвратить что-то, пишет результат в глобальную переменную Recd
[13:25:11] <alexey.veselovsky> При этом Recd это BOOLEAN
[13:25:30] <alexey.veselovsky> А функция Avalible зачем-то возвращает INTEGER вместо була
[13:25:37] <alexey.veselovsky> https://github.com/ilovb/ProjectOberon2013/blob/master/Input.Mod#L30
[18:51:05] <vlad2> Да, говнокод натуральный.
[18:51:35] <vlad2> Одиозных оберонщиков теперь реально можно троллить такими перлами.
[18:51:47] <vlad2> Ибо ариан-5 не взлетит.
[19:51:17] <boris_ilov> Не удивлюсь если он запретил BOOLEAN для процедур :D
[20:01:28] <boris_ilov> "[13:18:29] <alexey.veselovsky> вот это точно феерично:"
[20:01:55] <boris_ilov> у меня сложилось впечатление, что это сознательное архитектурное решение
[20:03:03] <boris_ilov> Результат этой Available можно расширить различными кодами без изменения клиентов
[20:04:21] <vlad2> И ты туда же ;) Везде шлубокий замысел. А я вижу только хреновый код :)
[20:04:51] <boris_ilov> Да нет
[20:05:11] <boris_ilov> Просто Вирт совершенно сознательно пишет в книге
[20:05:22] <boris_ilov> The driver procedures for the keyboard and the mouse are located in module Input. Available()
signals that a character has been typed on the keyboard, if its value is greater than 0.
[20:06:02] <boris_ilov> А в других местах у него BOOLEAN статусные процедуры возвращают
[20:06:17] <boris_ilov> Т.е. конкретно в этом месте специально сделал INTEGER
[20:06:25] <boris_ilov> Варианта два
[20:06:37] <boris_ilov> либо есть смысл, либо он еб...ся
[20:06:42] <boris_ilov> :)
[20:07:02] <boris_ilov> А смысл находится легко
[20:07:20] <boris_ilov> Если Available может иметь разные значниия в будущем
[20:08:01] <boris_ilov> Это типа как код ошибки
[20:08:07] <boris_ilov> в венде
[20:08:12] <boris_ilov> 0 все хорошо
[20:08:20] <boris_ilov> >0 ошибка
[20:08:30] <boris_ilov> причем с конкретным нумером
[20:08:34] <boris_ilov> :D
[20:09:08] <boris_ilov> Вот не придумались ему коды на первом этапе
[20:09:18] <boris_ilov> может он планировал их позже добавить
[20:09:32] <boris_ilov> Но архитектурно сразу правильно сделал
[20:09:55] <boris_ilov> В общем не вижу криминала в данном месте
[20:13:04] <vlad2> Все равно хреново. Вот я хочу ввести с клавиатуры символо с кодом 0!
[20:13:57] <vlad2> Кстати, это реальный случай переписывания жабаскрипта на оберон. У меня там функция есть asChar:
[20:14:22] <vlad2> https://github.com/vladfolts/oberonjs/blob/master/src/type.js#L57
[20:14:51] <vlad2> Если вы думаете, что на оберон я ее перепишут как PROCEDURE asChar(): CHAR;
[20:14:57] <vlad2> То вы ошибаетесь :)
[20:15:30] <vlad2> Потому что я хочу имекть струки с люыми символами, и с 0 тоже.
[20:17:39] <boris_ilov> Я ошибся совсем чуть-чуть https://github.com/ilovb/ProjectOberonV4/blob/master/C2.Input.Mod#L12
[20:17:48] <boris_ilov> Эволюция была наоборот
[20:18:10] <boris_ilov> Так что vlad учись смотреть на Оберон с другой точки зрения ;)
[20:18:39] <vlad2> С какой? Один большой шортакт, абсолюно нерасширяемый и несопровождаемый? :)
[20:19:10] <boris_ilov> Не нужно просто думать что Вирт идиот
[20:19:43] <boris_ilov> Он гик и фрик
[20:19:47] <boris_ilov> но не идиот
[20:19:49] <boris_ilov> :)
[20:21:47] <vlad2> А никто не говорил, что он идиот. Но вот код говнистый. Это уж извините.
[20:22:00] <vlad2> Я такое сопровождать не хочу.
[20:22:24] <boris_ilov> Я бы не сказал что у него говнокод
[20:22:30] <boris_ilov> Стиль хромает
[20:22:48] <boris_ilov> Но говнокодом я это бы не назвал
[20:22:49] <vlad2> Ну бывает, конечно, хуже. Я ничего не говорю. Но вот молиться на такое...
[20:23:06] <boris_ilov> А никто и не молится
[20:23:20] <vlad2> Ну отчего же, есть определенный процент.
[20:23:32] <boris_ilov> оберкоровцам вообще насрать на виртовый оберрон
[20:23:39] <boris_ilov> у них CP в почете
[20:23:58] <vlad2> Да, вот даже в CP такого откровенного говна нет.
[20:24:05] <vlad2> (или я не видел)
[20:24:16] <boris_ilov> Какого например?
[20:24:39] <vlad2> С установкой глобальной переменной в одном методе и возврата ее из другого.
[20:25:03] <boris_ilov> Что за модуль?
[20:25:10] <vlad2> Да, у меня на глобальные переменные особвй пунуктик.
[20:25:36] <boris_ilov> Тык какой модуль то?
[20:25:56] <vlad2> [03:18] alexey.veselovsky: https://github.com/ilovb/ProjectOberon2013/blob/master/Input.Mod#L59
[03:24] alexey.veselovsky: что-то я в жизни не понимаю
[03:24] alexey.veselovsky: PROCEDURE Available*(): INTEGER;
BEGIN Peek();
RETURN ORD(Recd)
END Available;
[20:26:25] <boris_ilov> vlad: Ты прикалываешься?
[20:26:37] <boris_ilov> я тебе только что выше объяснил причину
[20:26:54] <vlad2> ???
[20:27:12] <boris_ilov> код эволюционировал
[20:27:14] <vlad2> Хрен с ним с INTEGER.
[20:27:34] <boris_ilov> ОК
[20:27:35] <vlad2> Это не эволюция, это стагнация.
[20:27:48] <vlad2> Код должен улучшаться в ъходе эволюции, а не ухудшаться.
[20:27:52] <boris_ilov> А разницу между интерфейсом и переменной в модуле ты понимаешь?
[20:28:16] <boris_ilov> Очевидно что переменная в данном случае не интерфейс
[20:28:23] <boris_ilov> интерфейс это Available()
[20:28:41] <boris_ilov> переменную ты можешь заменить на integer в будущем
[20:28:46] <boris_ilov> али еще на что
[20:28:57] <boris_ilov> Смотри дальше своего носа :)
[20:29:05] <boris_ilov> и все встанет на свои места
[20:29:38] <boris_ilov> Вирт архитектор а не быдлокодер с подворотни
[20:29:39] <vlad2> Как это соотносится с использованием глобальной переменной не по делу?
[20:29:47] <boris_ilov> В смысле?
[20:30:02] <boris_ilov> Где она не по делу?
[20:30:08] <vlad2> Извините, после лицезрения виртовского кода уважения к нему как к кодеру у меня вообще никакого.
[20:30:34] <boris_ilov> Ну как бы ты этот код изменил?
[20:30:42] <vlad2> Peek выставляет глобалную переменнцю, Available ее возвращает.
[20:30:52] <boris_ilov> И?
[20:31:10] <vlad2> Не, ты не видишь проблемы?
[20:31:16] <vlad2> Ну извините.
[20:31:41] <vlad2> Это надо прочуствовать.
[20:31:44] <boris_ilov> Так объясни
[20:31:53] <boris_ilov> что конкретно не так
[20:32:28] <boris_ilov> Я вижу банальную декомпоззицию
[20:32:35] <vlad2> Во-первых, это тупо не работает в случае многопоточки.
[20:32:55] <boris_ilov> Ах ты о сферических конях
[20:32:55] <vlad2> Во-вторых, это оченб трудно сопровождать.
[20:33:07] <vlad2> В-третьихз, это очень легко омается в процессе сопровождения.
[20:33:20] <boris_ilov> ОК. Как бы ты это сделал?
[20:34:31] <boris_ilov> Ты же в ООП тем же самым занимаешься
[20:34:53] <boris_ilov> когда прячешь переменные в объекте и даешь доступ только через методы
[20:34:54] <vlad2> PROCEDURE PeekImpl(): BOOLEAN;
[20:35:13] <vlad2> PROCEDURE Peek(); result := PeekImpl(); END Peek
[20:35:28] <vlad2> PROCEDURE Available*(): INTEGER; RETURN ORD(PeekImpl()) END
[20:36:05] <vlad2> хотя Peek не жэкспортируется, поэтому можно просто Peek переписать на возврат BOOLEAN
[20:36:22] <boris_ilov> Реализацию PeekImpl еще пожалста
[20:36:39] <vlad2> Забей. Просто Peek возвращает BOOLEAN
[20:37:01] <boris_ilov> И зачем она это делает?
[20:37:26] <vlad2> Чтоб не было глобальных переменных. И чтоб было понятно что откуда и куда.
[20:37:59] <vlad2> В случае объект все былоточно также - не было бы у меня поля Recd.
[20:38:15] <boris_ilov> А ничего, что состояние должно храниться?
[20:38:50] <vlad2> В том-то и джело, что здесь оно не должнол хранится.
[20:39:02] <boris_ilov> С чего это ты взял?
[20:39:03] <vlad2> Здесь Peek вызывается каждый раз.
[20:39:32] <vlad2> (правда из-за хренового форматирования это плохо видно)
[20:39:35] <boris_ilov> внемательно смотри на реализацию
[20:39:38] <vlad2> PROCEDURE Available*(): INTEGER;
BEGIN Peek();
RETURN ORD(Recd)
END Available;
[20:39:40] <boris_ilov> PROCEDURE Peek();
BEGIN
IF SYSTEM.BIT(msAdr, 28) THEN
SYSTEM.GET(kbdAdr, kbdCode);
IF kbdCode = 0F0H THEN Up := TRUE
ELSIF kbdCode = 0E0H THEN Ext := TRUE
ELSE
IF (kbdCode = 12H) OR (kbdCode = 59H) THEN (*shift*) Shift := ~Up
ELSIF kbdCode = 14H THEN (*ctrl*) Ctrl := ~Up
ELSIF ~Up THEN Recd := TRUE (*real key going down*)
END ;
Up := FALSE; Ext := FALSE
END
END;
END Peek;
[20:39:43] <boris_ilov> внимательно*
[20:40:23] <vlad2> И?
[20:40:32] <boris_ilov> смотри
[20:40:51] <boris_ilov> не видишь?
[20:40:59] <vlad2> Хочешь, чтоб я еще и этот код гавном назвал?
[20:41:17] <boris_ilov> ОК Recd всегда меняется?
[20:41:28] <vlad2> Нет, не всегда.
[20:41:33] <boris_ilov> Ну и?
[20:41:54] <boris_ilov> Peek может вернуть старое состояние
[20:42:00] <boris_ilov> которое должно храниться
[20:42:10] <boris_ilov> так понятно?
[20:42:14] <vlad2> Это хорошо?
[20:42:24] <boris_ilov> тьху ты
[20:42:26] <vlad2> Может это бага?
[20:42:29] <boris_ilov> что хорошо?
[20:42:53] <boris_ilov> а может тебе гордость не дает признаться что ты обосрал код даже не вкурив его?
[20:43:27] <vlad2> Слушай, если у меня будет время я перепишу его как надо, ОК?
[20:43:38] <boris_ilov> ОК
[20:43:44] <vlad2> Код - говнистый, я за свои слова отвечаю и над не беру.
[20:43:51] <vlad2> *назад
[20:44:00] <boris_ilov> заметано
[20:46:24] <boris_ilov> В сухом остатке ты считаешь что никакое состояние храниться не должно, и глоб. переменная соответственно не нужна
[20:46:29] <boris_ilov> Я правильно понял?
[20:50:08] <vlad2> Да. Глобальные переменные - хороший шорткат. Но избавиться потом от них требует титанических усилий.
[20:52:48] <vlad2> Вот этот самый код не будет работать с двумя клавиатурами в принципе. Проблема в том, что чтоб приделать вторую клавиатуру поменять этот модуль мало - надо перекурочить все модули, его использующией. И такое (добавление второй клавиватуры) - происходит постоянно при расширени системы. Поэтому у меня пунктик на глобальные переменные.
[20:54:39] <vlad2> Плюс к тому - потом потребуется запустить этот код в отдельном потоке. И это не сферический конь. Тоже постоянно. Кто-то сначала пишет с расчетом, что клавиатура одна и никаких потоков нет, а кто-то потом заставляет "это" работать в многопточоной среде и с двумя клавиатурами.
[20:55:43] <boris_ilov> В общем можешь почитать прожект и успокоиться
[20:55:49] <boris_ilov> состояние должно храниться
[20:55:53] <Jordan> Влад, ты Виртовский компьютер видел :-) Какая там многопоточность и две клавиатуры...
[20:56:03] <Jordan> Для себя же пишет
[20:56:16] <boris_ilov> читать конкретно 9.2. Keyboard and mouse
[20:56:36] <boris_ilov> 1:0 в пользу Вирта
[20:56:55] <Jordan> Дай ссыль на 9.2. Keyboard and mouse
[20:57:05] <vlad2> Да пожалуйста. Я ж уже говорил - мне неинтересен язык для наколенных поделок. Мне нужен язык для больших систем.
[20:57:09] <boris_ilov> http://www.inf.ethz.ch/personal/wirth/ProjectOberon/PO.System.pdf
[20:57:11] <vlad2> С двумя клавиатурами.
[20:57:14] <boris_ilov> ctrl+F
[20:57:45] <boris_ilov> Тык пожалуйста. Только при чем тут Обьерон?
[20:58:04] <Jordan> Новый диалект Обьерон? :-)
[20:58:32] <boris_ilov> ну тык vlad выдаст наверно постмодерн какой :)
[20:59:26] <vlad2> Ок. Виртовский код - гавно с точки зрения сопроводителя большой системы.
[20:59:42] <vlad2> Eberon
[21:00:07] <boris_ilov> Как сопроводитель больших систем протестую! :D
[21:01:07] <vlad2> Имеешь право ;_
[21:01:09] <Jordan> в 9.3 код странный
[21:01:34] <Jordan> пустой цикл
[21:01:38] <Jordan> REPEAT UNTIL SYSTEM.BIT(spiStat, 0);
[21:01:58] <Jordan> А нет
[21:02:10] <Jordan> Просто без скобок
[21:07:48] <Jordan> Прочитал доку. Так это о том компьютере с 1мб памяти. Вещь довольно специфичная.
[21:31:15] <vаlexey> vlad2: вообще этот Input довольно показательный модуль. Например показательно как там Вирт заполняет массив сканкодов клавиатуры.
[21:31:34] <vаlexey> Очень он там это не по обероновски делает :-)
[21:33:03] <vаlexey> По поводу Великого Архитектурного Замысла - замечу, что обычно Вирт таки предпочитает упрощение таким вот замыслам. Код у Виртса сурово конкретный, без забегания вперед.
[21:34:14] <vаlexey> Ну а с многоядерностью там да, все печально. То есть на FPGA ведь можно несколько ядер реализовать (хотя там тоже попилить придется), а вот Оберон как ОСь к этому вообще никак не приспособлена.
[21:34:20] <Jordan> Именно. Характеристика компа больше на микроконтроллёр походит.
[21:34:25] <Jordan> Узкая ниша.
[21:34:33] <Jordan> Расширять нечего.
[21:35:02] <vаlexey> Да не. Характеристики вполне себе. Можно и частоту полнять, да и памяти 256 метров воткнуть скажем. Не проблема.
[21:35:33] <Jordan> Даже интеренет не по сёрфить нормально.
[21:35:47] <vаlexey> Основная проблема (для меня) сейчас в том, что комп описан очень неполно. Исходников нет. То есть он выложил не достаточно верилога.
[21:36:10] <Jordan> Напиши ему.
[21:36:14] <vаlexey> Ну, серфинг интернета (если ты про браузер) это очень нетривиальная задача. И очень ресурсоемкая.
[21:36:37] <Jordan> Вот.
[21:36:47] <Jordan> Браузера нет. Круг задач сужается.
[21:36:51] <vаlexey> Так что в ОС Оберон на любом компе про серфинг можно смело забыть сразу.
[21:37:05] <vаlexey> Ну, как ни странно, без браузера жить можно :-)
[21:37:15] <vаlexey> Правда это уже почти утерянное искусство :-)
[21:37:34] <Jordan> Консольный бравсер? Типа лункс? Нет уж увольте
[21:37:55] <Jordan> В а2 есть вроде парсер html
[21:38:20] <vаlexey> ВООБЩЕ без браузера!
[21:38:24] <vаlexey> :-)
[21:38:46] <vаlexey> Парсер html - это очень малая толика от того что нужно. Очень малая.
[21:39:00] <vаlexey> Парсинг html конечно заковырист, это вам не xml, но сложность не в нем.
[21:39:29] <Jordan> В хранении? Ещё и CSS и java script
[21:39:37] <vаlexey> в семантики оного
[21:39:40] <vаlexey> в рендеринге
[21:39:44] <vаlexey> фигли там хранить?
[21:40:06] <Jordan> Распарсенное дерево, информацию страницы
[21:40:16] <Jordan> Потому есть всякие веб киты.
[21:40:25] <Jordan> Задача с нуля неподёмная
[21:41:01] <vаlexey> Но без этого в общем то можно жить :-)
[21:41:37] <Jordan> Так то да. Но зачем себе отказывать?
[21:41:52] <vаlexey> воздержание же!
[21:42:22] <Jordan> Тоже вариант.
[22:07:17] <boris_ilov> ахах http://habrahabr.ru/post/206338/
[22:08:43] <vаlexey> угу. винда такая винда
[22:09:44] <boris_ilov> http://oberspace.dyndns.org/index.php/topic,597.msg20310.html#msg20310
[22:09:46] <vаlexey> причем это явно не единственное говноместо
[22:09:52] <boris_ilov> едрен батон
[22:10:01] <boris_ilov> говорю же из другой книги это
[22:10:19] <boris_ilov> почему в исходники PO попало не знаю
[22:10:23] <vаlexey> угу. зачем оно там?
[22:10:25] <boris_ilov> но это из CC
[22:10:32] <vаlexey> оно ж даже не соберется
[22:10:49] <boris_ilov> а должно?
[22:10:51] <boris_ilov> :D
[22:11:20] <boris_ilov> я полагаю что обе книги пока в бэта версии ;)
[22:12:12] <boris_ilov> инструкции там мало тоже говорил уже почему
[22:12:30] <boris_ilov> плавающая арихметика Вирту в курсе CC не нужна просто
[22:12:37] <vаlexey> ну, я полагал что там либо примеры программ для операционки, либо таки эмулятор. а оно оказалось ни то ни это :-)
[22:12:57] <boris_ilov> это эмулятор учебного компилера
[22:13:07] <boris_ilov> на том же проце
[22:13:09] <vаlexey> который в этой операционке даже и не соберется :-)
[22:13:13] <boris_ilov> но компилер другой
[22:13:36] <vаlexey> да, но сделать операционку и комп без прерываний - это сильно :-)
[22:14:02] <boris_ilov> ну а чо?
[22:14:14] <boris_ilov> loop и вперед опрашивать устройства
[22:14:16] <boris_ilov> :D
[22:14:23] <vаlexey> не эффективно и можно пропустить
[22:14:36] <Jordan> насколько не эффективно?
[22:14:45] <boris_ilov> Ну Вирта видимо устраивает такой расклад
[22:14:49] <vаlexey> загрузка процессора всегда 100%
[22:14:54] <vаlexey> вне зависимости от использования
[22:15:11] <boris_ilov> не факт
[22:15:12] <vаlexey> а при высокой нагрузки можно пропустить данные с переферийного устройства - оно протухнет
[22:15:16] <vаlexey> нулевой реалтайм
[22:15:27] <boris_ilov> там может быть кусками по таймеру
[22:15:39] <Jordan> sleep там нельзя воткнуть
[22:15:41] <vаlexey> неа, там нет кусков по таймеру
[22:15:50] <boris_ilov> хотя без прерываний хлер знает как по таймеру делать :D
[22:15:51] <vаlexey> ну и операции NoP также нет
[22:16:24] <boris_ilov> вообще интересный момент, да
[22:16:31] <geniepro> boris_ilov> ну тык vlad выдаст наверно постмодерн какой :)
а кстати, неплохое название для нового оберона -- постмодерн )))
[22:16:54] <boris_ilov> постмодернтокинг :D
[22:17:25] <boris_ilov> постмодерон
[22:17:49] <vаlexey> гм. в CC что переведен на русский и издан совершенно другой процессор описан
[22:18:01] <boris_ilov> тык да!
[22:18:08] <boris_ilov> проснулся :)
[22:18:16] <boris_ilov> я ж тебе уже говорил об этом
[22:18:28] <vаlexey> да, я помню
[22:18:30] <boris_ilov> в СС сейчас проц тот же что и в PO
[22:18:37] <vаlexey> ну, почти тот же, да.
[22:18:38] <boris_ilov> а в русском другой
[22:18:45] <vаlexey> и это хорошо
[22:18:57] <vаlexey> ну русском там вообще жесть и содомия. там еще и с ошибками...
[22:19:59] <Jordan> Из комментариев о windows xp
[22:20:03] <Jordan> Ну так за 12 лет с момента выпуска он обрёл собственный интеллект и уже скоро начнёт охоту на разработчиков. А вы что думаете, ведь именно поэтому нельзя так долго использовать старые версии ПО.
[22:20:56] <geniepro> хр ещё долгие годы будет использоваться там, где её хватает
[22:20:59] <vаlexey> boris_ilov: вообще интересный подход - там нет даже инструкции jmp. Эмулируется прямой записью в R15.
[22:21:39] <boris_ilov> адреса?
[22:21:49] <boris_ilov> R15 это след команда?
[22:22:07] <boris_ilov> я не курил еще проц
[22:22:07] <vаlexey> это регистр. его содержимое - да, адрес следующей команды
[22:22:10] <geniepro> vаlexey> boris_ilov: вообще интересный подход - там нет даже инструкции jmp. Эмулируется прямой записью в R15.
да ваще бред -- императивнее уже просто некуда. ну разве что прямо на машине Тьюринга
[22:22:14] <vаlexey> так называемый PC
[22:22:26] <boris_ilov> понятно
[22:22:32] <vаlexey> SP аналогично - в компиляторе используется для SP R14
[22:22:48] <vаlexey> но можно и другой :-D
[22:22:56] <boris_ilov> а в RISC'ах разве не так?
[22:23:07] <vаlexey> Неа, то есть не обязательно
[22:23:14] <boris_ilov> вроде в ARM тоже регистры по полной используются
[22:23:26] <boris_ilov> хотя может путаю с чем
[22:23:31] <vаlexey> обычно таки SP и PC это отдельные регистры
[22:23:35] <vаlexey> выделенные именно для этого
[22:23:58] <vаlexey> Вот тебе RISC - рискее не бывает: http://ru.wikipedia.org/wiki/MSP430
[22:24:05] <vаlexey> посмотри какие там команды
[22:26:19] <boris_ilov> ну тык та же херня
[22:26:22] <boris_ilov> Регистр R0 используется как программный указатель
[22:26:37] <vаlexey> разница в SP
[22:26:52] <vаlexey> тут использование SP определено на уровне процессора
[22:26:59] <vаlexey> У Вирта - на уровне соглашений компилятора
[22:27:10] <boris_ilov> ну ты же сам говоил что стек не нужен
[22:27:13] <boris_ilov> ;)
[22:27:16] <vаlexey> дык да.
[22:27:29] <vаlexey> я же и не говорю что это что-то плохое :-)
[22:27:29] <boris_ilov> Вирт воплотил твои мечты
[22:27:37] <boris_ilov> выпилил его наххер :D
[22:27:56] <vаlexey> Ну, компилятор только отсталый - один фиг стек эмулирует :-) Но направление верное, да. :-)
[22:28:35] <vаlexey> Кстати, в этом Виртовском RISC не 12 инструкций, а больше. Там же еще бранчующиеся инструкции имеются
[22:29:02] <boris_ilov> ээто да
[22:29:12] <boris_ilov> но остальные все реализованы
[22:29:23] <vаlexey> их там еще 16
[22:29:30] <Jordan> Вирт писал для чего ему такой комп? Какие задачи он будет на нём решать?
[22:29:32] <vаlexey> итого 32 инструкции (в PO)
[22:29:44] <vаlexey> Jordan: это пруф оф концепт по сути.
[22:29:49] <boris_ilov> эм... чет много у тебя получилось
[22:29:59] <vаlexey> Ну и задачи обучения там вполне себе отлично решаются.
[22:30:09] <boris_ilov> блин loop реально странный https://github.com/ilovb/ProjectOberon2013/blob/master/Oberon.Mod#L358
[22:30:11] <vаlexey> boris_ilov: а там коды от 0000 до 1111
[22:30:28] <geniepro> я когда пытался подсчитать сколько будет опкодов, сбился со счёту. но гораздо больше, чем 16 или 32
[22:30:30] <boris_ilov> неужели реально 100% загруз O_o
[22:30:31] <vаlexey> http://www.inf.ethz.ch/personal/wirth/CompilerConstruction/CompilerConstruction2.pdf - страница 3 внизу и страница 4 вверху
[22:30:51] <vаlexey> boris_ilov: да. иначе можно пропустить. без прерываний то.
[22:31:28] <boris_ilov> я насчитал 25
[22:31:29] <geniepro> короче, Вирт -- микроконтроллерщик, и пишет проги как микроконтроллерщик ))))
[22:31:53] <vаlexey> geniepro: микроконтроллер без прерываний это абсурд и нонсенс.
[22:32:11] <geniepro> ну, Вирт -- упрощённый микроконтроллерщик )))
[22:32:42] <vаlexey> да не. это вполне себе десктоп. упрощенный. надо будет таки воплотить
[22:36:36] <vаlexey> да, я сегодня в этот цикл смотрел, и в драйвера устройств смотрел, и в устройство железяки смотрел
[22:36:55] <vаlexey> вывод - 100% нагрузка на комп в возможностью потерять данные.
[22:40:10] <vаlexey> короче, msp430 вновь мой фаворит - ибо крайне прост
[22:40:15] <vаlexey> истинный RISC!
[22:40:16] <vаlexey> :-)
[22:40:25] <vаlexey> (даже умножения нет!)
[22:40:55] <boris_ilov> "вывод - 100% нагрузка на комп в возможностью потерять данные."
[22:41:15] <boris_ilov> Ну видимо на этом железе работает и работает хорошо
[22:41:32] <vаlexey> ну если вычислялки не запускать, то да.
[22:41:38] <vаlexey> но первый же дятел разрушит вселенную
[22:41:47] <vаlexey> (даже не цивилизацию, а вселенную)
[22:41:48] <boris_ilov> эээ почему?
[22:41:49] <Jordan> что там работает голая ось.
[22:42:23] <boris_ilov> loop прерывается на время работы пользовательского кода
[22:42:30] <boris_ilov> проблем не должно быть
[22:42:32] <vаlexey> потому что сторонний модуль с циклом (вычислением) который работает секунду-десять радостно на эти 1-10 секунды подвесит весь комп. устройства опрашиваться перестанут на это время
[22:42:42] <vаlexey> то есть драйверы застынут.
[22:42:51] <Jordan> во прикол
[22:42:53] <vаlexey> в случае скажем сетевой подсистемы это крайне критично
[22:43:14] <boris_ilov> а как ты хочешь в однозадачной системе?
[22:43:22] <vаlexey> также как в досе :-)
[22:43:26] <boris_ilov> это и в первом издании так было
[22:43:27] <vаlexey> на прерываниях
[22:43:39] <vаlexey> и также как в моем однозадачном коде на msp430
[22:44:00] <vаlexey> я бы сказал что тут дефект именно железа а не оси
[22:44:13] <vаlexey> ибо ось то к прерываниям драйверным вполне готова
[22:44:20] <boris_ilov> ну вот крутится твой жестокий вычислительный процесс
[22:44:25] <boris_ilov> ты давишь батон
[22:44:29] <boris_ilov> прерывание
[22:44:36] <boris_ilov> обработка нажатия
[22:44:46] <boris_ilov> и процесс твой снова крутится....
[22:44:53] <boris_ilov> результат то тот же
[22:44:59] <vаlexey> в текущей инкарнации Оберон-компа не будет прерывания
[22:45:02] <geniepro> msp430: эмулируемые команды
RET - возврат из подпрограммы ( MOV @sp+,pc )
BR dst - переход в программе используя операнд ( MOV dst,pc)
та же шняга что и у Вирта
[22:45:10] <boris_ilov> разве что ctrl+alt+del не сделаешь :D
[22:45:16] <vаlexey> дави ты батон, не дави - пока не отлипнет вычислительная задача, ничего не прочухается
[22:45:20] <vаlexey> и всем пофиг на твой мышиный батон
[22:45:43] <boris_ilov> так раньше было ровно то же
[22:45:50] <vаlexey> кстати, именно поэтому буферизация ввода PS/2 у Вирта сделана на уровне железа, а не операционки.
[22:46:09] <vаlexey> Иначе все было совсем грустно
[22:46:11] <boris_ilov> обработка нажатия кнопки тебе ничего не даст, ибо принимать нажатие некому
[22:46:30] <vаlexey> даст. я могу сложить это дело в буфер системный
[22:46:33] <vаlexey> и обработать потом
[22:46:47] <boris_ilov> так оно так и есть
[22:46:58] <boris_ilov> посмотри в код
[22:47:01] <vаlexey> неа. там буфер в железе на 16 ячеек. и все.
[22:47:07] <vаlexey> в операционке буфера нет.
[22:47:10] <boris_ilov> ну это другой вопрос
[22:47:11] <boris_ilov> :)
[22:47:20] <vаlexey> да он и не нужен, ибо некому в него класть
[22:47:23] <vаlexey> ибо прерываний нет.
[22:47:30] <boris_ilov> ты не понял
[22:47:35] <boris_ilov> в него железо кладет
[22:47:39] <vаlexey> с таким подходом кстати, например проигрывание музыки не сделать.
[22:47:52] <boris_ilov> почитай прожект, там Вирт про это рассказывает
[22:48:10] <vаlexey> я уже. там не системный буфер, а железный буфер. это не в ОЗУ находится
[22:48:21] <boris_ilov> а какая разница?
[22:48:21] <vаlexey> это регистры уровня железа которые отображены в адресное пространство
[22:48:32] <boris_ilov> ну размер маленький, а кроме?
[22:48:57] <geniepro> vаlexey: http://ru.wikipedia.org/wiki/MSP430
msp430 не можут считаться истинным RISC, ибо в нём, как я понял, есть команды, оперирующие над содержимым памяти
в истинных RISC-процах команды оперируют только регистрами, а с памятью только две команды-- загрузка в регистр и выгрузка из регистра
[22:49:06] <vаlexey> меньше гибкость :-) кроме того, такое строение компа и оси исключает подключение другой переферии.
[22:49:11] <boris_ilov> очевидно он не ставил себе задачу хранить в буфере войну и мир
[22:49:14] <vаlexey> скажем ту же звуковушку туда уже не воткнешь
[22:49:50] <vаlexey> и ковокс не сделаешь :-)
[22:49:53] <boris_ilov> эк ты захотел :D
[22:50:10] <boris_ilov> на PC то звуковухи со скрипом появиились
[22:50:23] <boris_ilov> а ты хочешь на этой игрушке заиметь
[22:50:47] <vаlexey> ну, хотя бы спикером попищать нормально :-)
[22:51:04] <vаlexey> попищать нормально я и на микроконтроллере могу, а вот тут уже не смогу
[22:51:33] <geniepro> vаlexey: это РАБОЧАЯ СТАНЦИЯ!!! на ней работать надо, а не развлекаться музыку слушая да фильмы смотря )))
[22:51:59] <vаlexey> да, сурово. черт. для такой рабочей станции нужно и корпус соответствующий брутальный!
[22:52:14] <boris_ilov> valexey: делай железный буфер на спикере и увеличивай память на плате ;)
[22:54:31] <vаlexey> ну, памяти то и так будет 2 мегабайта. :-)
[22:54:31] <boris_ilov> кстати там этот спартан в модификации E есть
[22:54:37] <boris_ilov> heretic
[22:54:47] <vаlexey> и вечные проблемы со SRAM
[22:54:56] <boris_ilov> стыд и срам!
[22:55:24] <vаlexey> в частности тут в спеке я SRAM вообще не вижу
[22:55:34] <vаlexey> хотя понятно что он есть
[22:58:25] <vаlexey> гм. в спеке тоже про SRAM нема: http://www.xilinx.com/support/documentation/boards_and_kits/ug230.pdf
[22:58:43] <vаlexey> что резко обостряет потенциальный геморрой
[23:00:36] <boris_ilov> Вообще мне кажется Оберон стал такой сугубо учебной, но при этом реальной системой на реальном железе
[23:01:16] <boris_ilov> Отсутствие прерываний в настоящей ОС конечно нонсенс
[23:01:49] <boris_ilov> Но для учебной ОС это даже плюс в некоторм смысле
[23:02:10] <boris_ilov> Привыкли понимашь на железо полагаться
[23:02:16] <boris_ilov> прерывания им
[23:02:24] <boris_ilov> защищенные режимы
[23:02:37] <boris_ilov> АВОТХЕР! :D
[23:03:25] <Jordan> АВОТХЕР и таким компам.
[23:03:28] <Jordan> :-)
[23:03:37] <boris_ilov> Суровые челябинские оберонщики не покупают периферию, а проектируют сами :D
[23:06:17] <Jordan> Вирт программер 160-ого уровня. :-) Это вам не простые эльфы 80-ого.
[23:06:32] <Jordan> Да ещё и компы делает.
[23:06:57] <boris_ilov> Вирт не комы делает
[23:07:15] <boris_ilov> он полностью поднимает систему с нуля
[23:07:20] <vаlexey> boris_ilov: на самом деле понятно почему в Вирта там нет прерываний - их пришлось бы в язык вводить. Либо частично писать на асме.
[23:08:26] <Jordan> Просто хотел сказать, что он крут.
[23:08:27] <boris_ilov> яйца у него стальные, да
[23:08:30] <boris_ilov> у меня тока один вопрос
[23:08:49] <boris_ilov> как это компилять если бинарных кодов нет?
[23:09:13] <Jordan> так на другой оси типа windows, или что там у него на нубуке стоит.
[23:09:17] <boris_ilov> Вирт хочет чтоб мы компилер сначала вручную компильнули? O_o
[23:13:08] <boris_ilov> Он то понятно у себя раскрутил на старом компилере
[23:13:08] <boris_ilov> Хотя возможно что компилер обратно совместим по коду
[23:13:25] <boris_ilov> S3, V4, CP и т.д. и т.п.
[23:13:57] <boris_ilov> вот я дважды затупок
[23:14:07] <boris_ilov> на V4 то наверно легче чем в CP
[23:14:16] <vаlexey> :-)
[23:14:21] <boris_ilov> все таки ближе система
[23:14:32] <boris_ilov> а я все импорты оборачиваю
[23:14:32] <vаlexey> меня, однако, удручает наличие SYSTEM в компиляторе. это осложняет дело
[23:14:41] <vаlexey> то есть что компилятор пользуется SYSTEM-модулем
[23:15:02] <boris_ilov> чет я не заметил там систем
[23:15:21] <boris_ilov> блин я вообще то компильонул? O_o
[23:15:39] <vаlexey> MODULE ORS; (* NW 19.9.93 / 10.10.2013 Scanner in Oberon-07*)
IMPORT SYSTEM, Texts, Oberon;
[23:15:55] <vаlexey> MODULE ORG; (* NW 10.10.2013 code generator in Oberon-07 for RISC*)
IMPORT SYSTEM, Files, ORS, ORB;
[23:16:00] <vаlexey> ну и так далее
[23:17:00] <boris_ilov> а ну там приведение типов только SYSTEM.VAL
[23:17:13] <boris_ilov> CP проглотил не поперхнувшись
[23:17:46] <boris_ilov> вот типичное использование SYSTEM.VAL(SHORTREAL, k)
[23:18:01] <boris_ilov> INTEGER как REAL
[23:18:37] <boris_ilov> вручную это делать видимо геморно, потому SYSTEM
[23:19:34] <boris_ilov> тут используется платформонезависимая часть SYSTEM
[23:19:52] <boris_ilov> т.е. просто низкоуровневый код
[23:20:33] <boris_ilov> в оригинале SYSTEM.VAL(REAL, k) конечно
[23:22:41] <vаlexey> угу. что мешает сделать кросскомпилятор
[23:22:45] <vаlexey> и это ОЧЕНЬ плохо
[23:23:20] <vаlexey> вообще Вирт не парится с SYSTEM - если ему в данном конкретном месте удобней и быстрее его использовать, он его использует. И пофиг на переносимость :-)
[23:25:15] <boris_ilov> ну в данном случае переносимость вроде не страдает
[23:25:19] <vаlexey> ну, то есть даже вот оно может проглотить не подавившись, а собранный таким образом компилятор может выдавать не верный код
[23:25:46] <vаlexey> просто потому, что INTEGER имеет на машине где компилятор собирали, другой endian нежели на целевой машине
[23:25:51] <boris_ilov> Не должон. Ибо Вирт думаю компилил тоже на старом компилере
[23:26:02] <boris_ilov> ну и пусть
[23:26:05] <boris_ilov> у КУФД nj;t
[23:26:10] <boris_ilov> у REAL тоже
[23:26:24] <vаlexey> нет, реал прибит гвоздями к IEEE стандарту
[23:26:30] <vаlexey> он везде одинаковый
[23:26:46] <boris_ilov> разве IEEE задает порядок байт?
[23:27:04] <vаlexey> угу. там стандартное представление
[23:27:13] <boris_ilov> чет сомневаюсь
[23:27:33] <vаlexey> это отлично видно когда по сети передаешь - int'ы приходится всякими ntohl/htonl'ами обвешивать, а float отлично работает везде
[23:27:45] <vаlexey> зря сомневаешься, там досконально все описано.
[23:28:44] <boris_ilov> все равно сомневаюсь
[23:28:51] <boris_ilov> ибо это дюже странно
[23:29:13] <vаlexey> ну и опять таки - SYSTEM штука опциональная (см. репорт) поэтому неплохо бы писать по возможности без него. Ибо на другой платформе SYSTEM'а может и не быть.
[23:30:34] <vаlexey> ну, ntohs и htons есть. ntohl и htonl есть, а вот ntohf и htonf нет :-)
[23:30:40] <vаlexey> что как бы намекает :-)
[23:32:21] <vаlexey> я с этим делом регулярно вожусь, ибо у меня x86 с arm'ом общается по сети
[23:32:41] <vаlexey> и еще с msp430 :-)
[23:32:53] <boris_ilov> Таки сеть и железо несколько разные вещи
[23:33:37] <vаlexey> c записью в файл то же самое. сеть штука тупая - что ей скажешь, то и передает. сеть не конвертирует что-либо куда-либо
[23:33:48] <vаlexey> передает кусок памяти как есть.
[23:35:19] <vаlexey> кстати про оптимальность винды - у меня в последнее время presentationfontcache.exe сжирает полностью одно ядро
[23:35:29] <vаlexey> вне зависимости от того что запущено из приложений
[23:35:50] <vаlexey> а если учесть что у меня ноут - это весьма существенно
[23:36:01] <vаlexey> пришлось эту службу отрубить нафиг.
[23:36:06] <vаlexey> руками
[23:36:11] <vаlexey> Win7
[23:39:09] <boris_ilov> у меня на 7 антивирь мокрософтовый люто буйствовал
[23:39:32] <boris_ilov> тоже где-то n^n воткнули
[23:40:18] <vаlexey> n!
[23:40:43] <vаlexey> или просто, по совету Вирта, бесконечный цикл жгущий постоянно проц :-)
[23:41:51] <boris_ilov> http://softelectro.ru/ieee754.html
[23:42:02] <boris_ilov> ничего про порядок байт не нашел
[23:43:54] <boris_ilov> Хранение вещественных чисел может зависеть от порядка байт; так, на x86 используются форматы IEEE 754 со знаком и порядком числа в старших байтах.
[23:43:59] <boris_ilov> http://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D1%80%D1%8F%D0%B4%D0%BE%D0%BA_%D0%B1%D0%B0%D0%B9%D1%82%D0%BE%D0%B2
[23:44:50] <boris_ilov> В любом случае проблемы с SYSTEM.VAL быть не должно
[23:45:40] <boris_ilov> так как если на целевой машине он работает неправильно, то это значит только что пейсатель этого SYSTEM тупо лохонулся
[23:46:35] <boris_ilov> т.е. компилятор криво написан
[23:47:35] <boris_ilov> А вообще Оберон уже ругали за то, что SYSTEM не разделен на две части
[23:47:52] <boris_ilov> платформозависимую
[23:47:59] <boris_ilov> и просто низкоуровневую
[23:48:14] <boris_ilov> тут соглашусь
[23:48:16] <vаlexey> скорее платформозависимую и не безопасную
[23:48:30] <vаlexey> unsafе и plantform_name
[23:48:32] <boris_ilov> ну или так
[23:50:11] <vаlexey> впрочем, на эмуляторе если гонять, то проблем не будет.
[23:50:17] <vаlexey> ибо он тоже написан там не правильно :-)
[23:51:22] <boris_ilov> кстати а вот так VAL компилится
[23:51:27] <boris_ilov> IF (x.mode= ORB.Typ) & (x.type.size <= y.type.size) THEN restyp := x.type; x := y
ELSE ORS.Mark("casting not allowed")
END
[23:51:40] <boris_ilov> Т.е. тупо не во что не компилится
[23:51:51] <boris_ilov> это лишь обход системы типов
[23:52:48] <boris_ilov> По русски функция называлась бы ОТНЫНЕ()
[23:52:50] <boris_ilov> :D
[23:53:40] <boris_ilov> ОТНЫНЕ(считать Х реалом)
[23:53:45] <vаlexey> ну да. это называется - забить на тип
[23:53:55] <vаlexey> Си-каст :-)
[23:54:17] <boris_ilov> вообще логично
[23:54:25] <boris_ilov> как я сразу не догадался
[23:54:41] <boris_ilov> какие-то преобразования мерещились
[23:54:45] <boris_ilov> :)
[23:55:04] <vаlexey> бывает, чо :-)
[23:55:26] <vаlexey> но это конечно зависит от платформы
[23:55:40] <vаlexey> ибо не всегда всё есть шмат памяти
[23:55:40] <boris_ilov> да ладно?
[23:56:40] <boris_ilov> SYSTEM.VAL размер шмата контролит
[23:56:56] <boris_ilov> а интерпретировать шмат мы можем как угодно
[23:57:13] <boris_ilov> сломаться тут ничего не может
[23:57:22] <vаlexey> угу. ну, не сползая в банальности вроде платформ вида javascript, можно напомнить о том, что как минимум бывает несколько адресных пространств, точнее несколько физически разных RAM'ов. В некоторых процессорах.
[23:57:26] <boris_ilov> разве что можно нечаяно память засрать
[23:57:30] <boris_ilov> :D
[23:57:32] <vаlexey> И одни типы лежат тут, другие там.
[23:58:29] <boris_ilov> И чо? :)
[23:58:41] <boris_ilov> ну вот реально. Какая проблема может быть
[23:58:58] <boris_ilov> адрес не меняется
[23:59:03] <vаlexey> да и ничо :-) + проблемы с выравниваниями
[23:59:06] <boris_ilov> ограничение размера есть (x.type.size <= y.type.size)
[23:59:22] <vаlexey> ну, скажем char[4] (массив из 4 чаров) ты к INTEGER'у привести не сможешь
[23:59:31] <vаlexey> при попытке обращения будет bus error на аппаратном уровне
[23:59:52] <boris_ilov> почему это?