[00:00:03] <OCTAGRAM> Controlled и инициализации всякие
[00:00:20] <OCTAGRAM> ну указатели, допустим, в null ставятся
[00:01:32] <OCTAGRAM> напишешь Y : access all Something with Address => X'Address; без Import, и содержимое затрётся в null
[00:02:13] <ada_ru> (I_vlxy_I) сказано делать V : My_Struct with Address => Byte_List(0)'Address; :-)
[00:02:47] <OCTAGRAM> ну если не жалко того, что там было, то можно и так
[00:02:52] <OCTAGRAM> я предупредил
[00:03:24] <ada_ru> (I_vlxy_I) вообще, смотрю подробности реализации - делают в принципе еще проще. хранят указатель на памяти кусок + сеттеры/геттеры для полей. руками к полям не пускают (а их и нету по сути - сеттер/геттер по самому буферу шарится)
[00:08:51] <yeo> мое знакомство с jgnat кончилось в ммомент осознания, что он не отображает интерфейсы в Java-овые интерфейсы
[00:10:30] <OCTAGRAM> вот ведь трагедия
[00:10:44] <OCTAGRAM> это так важно?
[00:11:57] <OCTAGRAM> через дискриминанты, как предлагается, не вариант?
[00:13:16] <yeo> не знаю, не хочется тратить силы на заброшенное ПО
[00:14:03] <OCTAGRAM> ну теперь-то, с CheerpJ, начинается другая история
[00:14:55] <ada_ru> (I_vlxy_I) это какое-то очень странное извращение, компилять аду в жабу чтобы потом скомпилять эту жабу в жабаскрипт
[00:16:02] <yeo> OCTAGRAM а это видел? http://www.opennet.ru/opennews/art.shtml?num=47940
[00:17:51] <OCTAGRAM> да, но зато там будет понятный Swing, который заменит сложно управляемый браузероспецифичный HTML DOM чем-то, привычным для того, кто писал на Делфи
[00:19:00] <ada_ru> (I_vlxy_I) не, точно извращение, свинг который будет криво работать поверх дома для того, чтобы полутора ископаемым делфятникам было понятней приятней и привычней писать на аде o_O
[00:19:12] <OCTAGRAM> поверх канваса
[00:19:48] <ada_ru> (I_vlxy_I) а потом я попробую это открыть на своем смартфоне и офигею от увиденного.
[00:20:49] <OCTAGRAM> кроме того, я по сайту Freelancer вижу, как течёт решение на Angular, и как я понимаю, это связано с тем, что JavaScript более располагает к утечкам памяти, значит, если не избегать зла в виде трассирующей сборки мусора, так хотя бы пусть это будет мусор от Java, а не от (написанного человеком) JavaScript
[00:22:08] <ada_ru> (I_vlxy_I) память точно также и в жабе течет. тебя язык никак не спасет от того, что кто-то схватил на тебя указатель и не обнуляет его.
[00:22:19] <OCTAGRAM> ну и ещё можно добавить, что браузероспецифичные библиотеки делают браузер незаменимым, а со Свингом можно браузер с собой не тащить, хотя UI, конечно, в разы хуже, чем на SWT
[00:22:49] <OCTAGRAM> язык может этому способствовать в меньшей мере
[00:23:18] <OCTAGRAM> в JS контекст целиком захватить и больше никогда не отпускать — как нефиг делать
[00:24:09] <OCTAGRAM> писать на JS так, чтобы контексты отпускались, сложнее, и читать это потом тоже сложно по сравнению с кодом, в котором почти ничего никогда не освобождается
[00:25:45] <ada_ru> (I_vlxy_I) ладно JS, мне вот надо немного ООП на матлабе :-/ вот это жесть предстоит, думаю.
[00:26:45] <ada_ru> (I_vlxy_I) блин, или забить и сделать всё на array struct'aх...
[00:31:31] <OCTAGRAM> ну и ещё там WebAssembly применяется, а не просто JavaScript, хотя насчёт пропорций не уверен
[00:31:58] <OCTAGRAM> но какие бы ни были пропорции сейчас, потом CheerpJ может меняться в лучшую сторону
[00:34:55] <ada_ru> (I_vlxy_I) а может и не меняться
[00:35:05] <ada_ru> (I_vlxy_I) надеюсь свою нишу они найдут
[00:35:11] <OCTAGRAM> хотя бы есть надежда
[00:35:43] <OCTAGRAM> производитель свою нишу уже нашёл, например, в браузерных играх
[00:35:58] <OCTAGRAM> их Cheerp конкурирует с EmScripten
[00:36:05] <ada_ru> (I_vlxy_I) для С++, да. хотя не уверен что оно там шустрее емскриптина
[00:36:18] <OCTAGRAM> в чём-то пофичастее
[00:36:48] <ada_ru> (I_vlxy_I) я пользовал и то и другое, cheerp производит человекочитабельный js, то есть его выхлоп ближе к рукописному js, а emscripten производит нечто асмоподобное замкнутое на себя самого
[00:36:50] <OCTAGRAM> раньше ещё Mandreel всякие были, так их сдуло, а Cheerp остался
[00:38:23] <OCTAGRAM> yeo, CheerpJ купил меня Swing'ом
[00:39:05] <OCTAGRAM> не хочу ни Ангуляр, ни «похожее на Ангуляр»
[00:39:21] <OCTAGRAM> какой-то он инопланетный
[00:39:23] <ada_ru> (I_vlxy_I) динозавр! ты вымрешь!
[00:40:24] <OCTAGRAM> лучше всего Какао, либо нечто с возможность моста в Какао, на худой конец нечто, похожее на Какао
[00:41:19] <OCTAGRAM> что, на Свинге кто-то писать переставал?
[00:41:36] <OCTAGRAM> на нём вебню не писали, а так куда он денется
[00:42:02] <ada_ru> (I_vlxy_I) ну, копрооративный гуй пишется нонче в виде веба. почти всюду.
[00:42:13] <OCTAGRAM> какую-нибудь обрезку фотографий я манал на обычном вебе делать
[00:42:14] <ada_ru> (I_vlxy_I) где-то еще жабагуй остался конечно, но в основном - веб
[00:42:29] <ada_ru> (I_vlxy_I) ну, ты вымрешь
[00:42:53] <ada_ru> (I_vlxy_I) для обычной обрезалки фотографий я манал jvm ставить на комп
[00:43:07] <OCTAGRAM> нет, я про онлайн
[00:43:41] <OCTAGRAM> чтоб там что-то через DOM позиционировалось и через HTML5 API обрезалось
[00:43:45] <OCTAGRAM> вот это я манал
[00:43:48] <ada_ru> (I_vlxy_I) для обычной обрезалки фотографий я манал минимум метр емскриптена тащить при каждой загрузке страницы
[00:44:06] <OCTAGRAM> там Cheerp
[00:44:08] <ada_ru> (I_vlxy_I) а так - легчайший js писаный руками для канваса и всё
[00:44:16] <ada_ru> (I_vlxy_I) 3 Кб кода
[00:44:40] <OCTAGRAM> где ты видел легчайший JS, когда нужно обрезать фотографии среди прочего
[00:45:30] <OCTAGRAM> везде какой-нибудь GWT, React или Angular затесаются
[00:45:32] <ada_ru> (I_vlxy_I) я в потроха не лез. но, кажется, никаких домов и ангуляров там не надо
[00:45:38] <ada_ru> (I_vlxy_I) алсо не надо там и черпов и свингов
[00:45:54] <ada_ru> (I_vlxy_I) это ж функционал уровня паинта образца 1991 года
[00:45:59] <ada_ru> (I_vlxy_I) или даже еще более раннего
[00:46:18] <OCTAGRAM> это в нормальной среде исполнения так
[00:46:29] <ada_ru> (I_vlxy_I) в браузере же
[00:46:32] <OCTAGRAM> а в HTML5 всё становится веселей
[00:46:42] <ada_ru> (I_vlxy_I) канвас есть, жабаскрипт есть. что тебе еще надо для этой задачи?
[00:47:05] <OCTAGRAM> чтоб в других браузерах работало так же, как у меня
[00:47:32] <ada_ru> (I_vlxy_I) обрезание ты сделаешь везде одинаково, не беспокойся :-)
[00:47:45] <ada_ru> (I_vlxy_I) веселости начнутся в случае шрифтов в канвасе
[00:48:10] <OCTAGRAM> всё браузерное, сколько я смотрю, годами пытаются отладить, и не могут
[00:48:51] <OCTAGRAM> берёшь десктопную программу, там за нефиг делать работает без глюков, которые в браузерной версии за тысячи человекочасов всё никак не смогли починить
[00:53:19] <OCTAGRAM> вот на Freelancer.com чат отваливается, бывает: окно открыто, но ты не знаешь на самом деле, пишут тебе или нет, для надёжности надо перезагрузить

берёшь GreyLink, Pidgin, Psi, ну что угодно десктопное, и они просто работают
[00:53:46] <OCTAGRAM> что угодно без лапши коллбеков, наверное, в этом соль
[00:54:17] <ada_ru> (I_vlxy_I) берем skype десктопный - не работает
[00:54:23] <ada_ru> (I_vlxy_I) не знаешь написали тебе или нет
[00:54:36] <OCTAGRAM> это который новый на Electron?
[00:54:42] <ada_ru> (I_vlxy_I) нет, старый
[00:54:50] <ada_ru> (I_vlxy_I) у него это с дветысячилохматого года
[00:54:57] <ada_ru> (I_vlxy_I) сколько себя помню проблемы были
[00:55:18] <OCTAGRAM> я вот, наоборот, такого с ним не припомню
[00:55:48] <ada_ru> (I_vlxy_I) значит ты им мало пользуешься
[00:56:00] <ada_ru> (I_vlxy_I) я то им по рабочим вопросам ежедневно примерно с 2008 года
[00:56:06] <OCTAGRAM> если перезапуск клиента не помогает, по крайней мере, проблема не в клиенте
[00:56:21] <ada_ru> (I_vlxy_I) иногда - помогает
[00:56:34] <OCTAGRAM> а если на Freelancer.com перезагрузка окна помогает, значит, проблема именно в браузерных библиотеках
[00:56:57] <OCTAGRAM> где-то вебсокет отвалился, и лапшой коллбеков кто-то не осилил это обработать как надо
[00:56:59] <ada_ru> (I_vlxy_I) а неа, там же state частично на сервере хранится. повторный запрос может выдать что-то новое
[01:11:48] <OCTAGRAM> CPC с трудом запинать получилось (там Ocaml и вообще всё плохо, Ocaml 4 не подходит, надо третий, всё в таком духе), вот, думаю, может, µC++ посмотреть для сравнения
[01:12:22] <OCTAGRAM> хочется чего-нибудь для асинхронизации кода
[01:13:24] <ada_ru> (I_vlxy_I) а кто все эти уважаемые господа?
[01:13:32] <OCTAGRAM> в CPC контекст при каждом входе/выходе постоянно копируется, память выделяется заново, и как-то это тупо
[01:13:42] <OCTAGRAM> Continuation Passing C
[01:15:31] <OCTAGRAM> принимает на вход код на C, помеченные процедуры преобразует в CPS, а дальше их можно запустить на входящем в библиотеку планировщике зелёных потоков
[01:15:58] <ada_ru> (I_vlxy_I) что только люди не придумают лишь бы не использовать Go или erlang...
[01:16:08] <OCTAGRAM> так Go фиговый
[01:16:20] <ada_ru> (I_vlxy_I) атличный!
[01:16:41] <OCTAGRAM> мне больше нравится Ада
[01:16:55] <OCTAGRAM> как в Go со структурной многозадачностью?
[01:17:31] <OCTAGRAM> в Erlang тоже не сильно лучше, как я понимаю
[01:17:35] <ada_ru> (I_vlxy_I) моя не знать таких ругательств. в го решают вполне конкретную прикладную задачу (точнее из класс).
[01:17:52] <OCTAGRAM> я бы при прочих равных предпочёл писать на Аде
[01:18:26] <ada_ru> (I_vlxy_I) прочих равных не бывает. увы.
[01:18:28] <OCTAGRAM> надо только взять AdaMagic и его вывод перенаправить во что-то, и вот пожалуйста, RAII и структурная многозадачность
[01:18:37] <OCTAGRAM> и зелёные потоки
[01:19:17] <OCTAGRAM> без RAII жизнь не радость
[01:20:29] <OCTAGRAM> зелёных потоков тоже хочется
[01:20:51] <ada_ru> (I_vlxy_I) бери Go!
[01:21:03] <OCTAGRAM> как в Go с RAII?
[01:21:19] <ada_ru> (I_vlxy_I) все очень хорошо! делаешь defer и радуешься!
[01:21:54] <ada_ru> (I_vlxy_I) для остального есть GC и коды ошибок. :-D
[01:22:03] <OCTAGRAM> то есть, поставлю переменную для файла, и как только выйдет из блока, так файл закрыт
[01:22:19] <ada_ru> (I_vlxy_I) угу. defer же!
[01:23:14] <OCTAGRAM> «later in program execution»
[01:23:19] <OCTAGRAM> как-то неточно
[01:23:29] <OCTAGRAM> надо по выходе из блока же
[01:23:37] <ada_ru> (I_vlxy_I) на выходе из блока и будет
[01:24:03] <OCTAGRAM> так, а этот defer на тип навешивается, я чё-т не пойму
[01:24:46] <OCTAGRAM> не вижу, как на тип навесить defer
[01:25:02] <ada_ru> (I_vlxy_I) хм. точнее при выходе из функции, не из блока
[01:26:05] <OCTAGRAM> больше похоже на Делфёвое finally
[01:26:39] <OCTAGRAM> как оно меня задрало, и Embarcadero всё никак не дадут нормальное ARC в версии для винды и макоса
[01:27:51] <ada_ru> (I_vlxy_I) https://play.golang.org/p/MBe1es3-qGF
[01:27:56] <ada_ru> (I_vlxy_I) такоэ
[01:28:35] <OCTAGRAM> и где тут тип, на который навешивается RAII?
[01:28:37] <ada_ru> (I_vlxy_I) в основном используется для защиты от утечек ресурсов в случае паники
[01:29:10] <ada_ru> (I_vlxy_I) нигде! выделил ресурс, сразу прилепил к этой переменной defer и всё. так меньше шансов забыть его освободить
[01:29:33] <ada_ru> (I_vlxy_I) то есть
foo := open();
defer close(foo);
[01:29:37] <OCTAGRAM> то есть, сколько есть переменных, к каждой надо defer
[01:30:01] <ada_ru> (I_vlxy_I) ну, можешь блоком целым. ничто не мешает задеферить пачку
[01:30:01] <OCTAGRAM> и для промежуточных результатов тоже переменные заводить, вдруг им тоже надо
[01:30:19] <ada_ru> (I_vlxy_I) + лямбды тебе в помощь с замыканиями
[01:30:42] <OCTAGRAM> а можно просто на типы навешивать, как в обычном RAII
[01:31:01] <ada_ru> (I_vlxy_I) надо глянуть, может в рантайме есть какая-нибудь ШТУКА
[01:31:06] <ada_ru> (I_vlxy_I) с другой стороны, там же мусорщик
[01:31:09] <OCTAGRAM> и не греть голову тому, кто потом будет пользоваться
[01:31:11] <ada_ru> (I_vlxy_I) такая себе гарантия
[01:32:24] <OCTAGRAM> я помню, как в Google Earth окно оставалось открытым, потому что его явно не закрыли, а трассирующий сборщик мусора подхватывал не сразу, такого дебилизма не хочу
[01:33:02] <OCTAGRAM> вот в языке Ада всё правильно сделано
[01:33:04] <ada_ru> (I_vlxy_I) будто консервативный мусорщик поступил бы лучше :-D
[01:33:16] <ada_ru> (I_vlxy_I) в консервативном есть вообще шанс что оно никогда не будет освобождено
[01:33:22] <OCTAGRAM> а являются потоки обычными или зелёными — это за скобками языкового стандарта
[01:33:26] <ada_ru> (I_vlxy_I) собственно в Go изначально был консервативный
[01:33:34] <OCTAGRAM> ARC же
[01:34:16] <ada_ru> (I_vlxy_I) ARC работае медленнее мусорщика же. refcounting он медленный. постоянно туда-сюда считать ссылки. брр
[01:34:20] <OCTAGRAM> адский стандарт готов, это только трансляторы доступные не поддерживают, единственная мелочь остающаяся
[01:34:43] <ada_ru> (I_vlxy_I) ничего не происходит с переменными, но мы постоянно какие-то счетчики туда-сюда инкрементим декрементим. маразм же!
[01:36:12] <OCTAGRAM> ну да, а TGC в одной программе вытаскивает все страницы из свопа, Касперский проверяет, не заразились ли они при этом, потом так получается, что в своп ушли другие программы, а там тоже надо все страницы вытащить, чтоб мусор собрать, и так процессор занять на 100% круглыми сутками
[01:36:59] <OCTAGRAM> смотришь на загрузку CPU, думаешь, когда ж ты, козлина, довычисляешь всё, что тебе нужно, когда это кончится
[01:37:04] <OCTAGRAM> а это никогда не кончится
[01:37:09] <ada_ru> (I_vlxy_I) если с памятью ничего не происходит (нет новых хм... с позволения сказать, выделений), то мусорщик даже и не запустится.
[01:37:12] <OCTAGRAM> это вечный двигатель наоборот
[01:37:29] <OCTAGRAM> не хочу, чтоб программы были такими
[01:37:42] <OCTAGRAM> за свои программы чтоб не надо было краснеть
[01:37:49] <ada_ru> (I_vlxy_I) а вот рефкаунтинг отлично прогрее процессор, заодно инвалидируя кеш
[01:38:17] <OCTAGRAM> чего там по MESI инвалидировать?
[01:39:33] <ada_ru> (I_vlxy_I) дык по памяти же прыгать приходится. чтение одной долбанной переменной - это чтение сразу 64+ байт памяти из ОЗУ. это медленно
[01:39:38] <OCTAGRAM> с объектом один поток работает как правило, состояния M и E с другими процессорами не требуют, а если S или I, так процессор в ожидании электричество же не тратит
[01:40:21] <ada_ru> (I_vlxy_I) туда прыг, сюда скок. тормозим поток.
[01:40:27] <OCTAGRAM> ну и не так часто значения кроме 0 или 1 там бывают
[01:41:31] <OCTAGRAM> мне идеально
[01:42:19] <OCTAGRAM> сколько работаю с разными программами, те, что с ARC, гораздо приятнее в использовании
[01:43:10] <OCTAGRAM> насчёт безобидности TGC я слышу только разговоры, а в реальности — страдания
[01:43:30] <ada_ru> (I_vlxy_I) ну, тут дело такое... ARC это в основном С++, а С++ да, он хорош, равно как и программисты его использующие обычно лучше понимают как компьютер работает нежели остальные.
[01:43:58] <ada_ru> (I_vlxy_I) Не, ты реально больше любишь консервативный сборщик мусора?
[01:44:26] <OCTAGRAM> ARC — это консервативный?
[01:44:33] <ada_ru> (I_vlxy_I) нет
[01:46:51] <OCTAGRAM> я люблю, когда есть ARC, COW и опционально уникальные указатели
[01:46:53] <ada_ru> (I_vlxy_I) хотя я немного путаю, консервативный похоже суть частный случай трасирующего. бывает консервативный и точный
[01:47:06] <OCTAGRAM> трассирующий  не люблю
[01:47:16] <ada_ru> (I_vlxy_I) вот консервативный - это полный конец обеда.
[01:47:37] <OCTAGRAM> только как инструмент отладки ARC приемлем
[01:47:39] <ada_ru> (I_vlxy_I) зато реализуется вообще для любого ЯП: хоть Си, хоть оберона. не проблема
[01:48:12] <OCTAGRAM> а, ещё слабые ссылки безопасные хорошо, когда есть
[01:50:03] <OCTAGRAM> когда в 2000х скандал разразился с утечками через кольца, я думал, сделают слабые ссылки, но слабые ссылки так и не сделали, а вместо этого изгадили движки браузеров трассирующей сборкой мусора, и с тех пор о быстрых браузерах остались лишь воспоминания
[01:51:00] <OCTAGRAM> делал как-то на mshta.exe проектик, там как раз по умолчанию старый движок подключился, всё так реактивно летает, непривычно
[01:51:37] <OCTAGRAM> вот ещё плюс в копилку CheerpJ
[01:52:07] <OCTAGRAM> не знаю, работают ли там слабые ссылки, но есть шанс, что если не сейчас, то будут потом
[01:52:23] <ada_ru> (I_vlxy_I) оставь надежду всяк сюда входящий
[01:52:43] <ada_ru> (I_vlxy_I) в смысле - надежда, на самом деле, только на вебасм, где вообще gc нету
[01:52:53] <OCTAGRAM> ну в крайнем случае AdaMagic остаётся
[01:52:56] <ada_ru> (I_vlxy_I) (хотя конечно обещают вкрутить полноценный)
[01:53:22] <OCTAGRAM> надо только асинхронизатор хороший найти для полного счастья
[01:54:51] <OCTAGRAM> ну а CheerpJ этот вебасм как раз и может использовать в той или иной мере, обычный Cheerp умеет
[01:55:09] <ada_ru> (I_vlxy_I) дас.. подобные извращения возможны только в случае если работаешь один. вероятно удаленно.
[01:55:33] <OCTAGRAM> а если не один, то что?
[01:55:36] <ada_ru> (I_vlxy_I) обычный черп не для жабы, а для плюсов. плюсам мусорщик не нужен. жабе - нужен полноценный.
[01:55:58] <OCTAGRAM> ну и если производитель тот же
[01:56:14] <ada_ru> (I_vlxy_I) А если не один, а если вас хотя бы 10 человек, то будет очень сложно договориться именно на такой вариант набора извращений.
[01:56:15] <OCTAGRAM> то, наверное, он и разберётся, как в васм прикрутить
[01:57:00] <ada_ru> (I_vlxy_I) поэтому два варианта: либо остальные не извращенцы и ты с ними не работаешь (или соглашаешься на их условия), либо извращенцев несколько и они вместо работы начинают бесконечно обсуждать инструментарий, а не задачу.
[01:57:16] <OCTAGRAM> достаточно, чтоб начальник решил
[01:57:41] <OCTAGRAM> а, ну это немного другое
[01:57:58] <OCTAGRAM> это называется возможность R&D в предприятии
[01:59:18] <ada_ru> (I_vlxy_I) ну, если начальник не дурак (и не извращенец), то возьмет что-то подходящее для данной задачи из набора мейнстрим технологий
[01:59:20] <OCTAGRAM> без R&D, в конечном итоге, ничего не возможно, просто всегда выгодно, чтоб это сделал кто-то другой
[01:59:49] <ada_ru> (I_vlxy_I) иначе программисты опять будут спорить о инструментарии вместо работы
[01:59:50] <OCTAGRAM> в моём случае я экспериментирую постоянно, и что-то из этого потом удается приспособить к задаче и продать
[02:00:17] <ada_ru> (I_vlxy_I) ну, это выдает в тебе одиночку.
[02:00:24] <OCTAGRAM> да пофиг на таких недураков
[02:00:46] <OCTAGRAM> помощников можно себе найти
[02:02:43] <OCTAGRAM> нет у меня такой миссии, чтоб любыми жертвами не одному работать
[02:03:41] <OCTAGRAM> работы полно
[02:03:58] <OCTAGRAM> одиночки кода понаделают, а поверх этого уже и команды могут складываться
[02:04:16] <ada_ru> (I_vlxy_I) я к тому, что такой подход сложно масштабировать
[02:04:34] <ada_ru> (I_vlxy_I) собственно, в свое время Ада была создана чтобы покончить с таким подходом
[02:04:43] <ada_ru> (I_vlxy_I) ибо он цвел пышным цветом в оборонке
[02:05:21] <OCTAGRAM> как на скалистом грунте сначала мох, мох разлагается, на этом субстрате растения, потом деревья
[02:06:21] <OCTAGRAM> ну вот представь Баллмера, который вместо «Developers! Developers! Developers! Developers!» повторяет «Quality! Quality! Quality! Quality!», и это буду я
[02:06:25] <OCTAGRAM> другие приоритеты
[02:06:44] <ada_ru> (I_vlxy_I) это так не работает ведь. нужна какая-то общая база, общий язык и подходы. общая технология. если ты выбрал набор слабоподдерживаемых экзотических технологий, то очень маловероятно что кто-то продолжит твою работу выбрав в точности тот же набор
[02:08:51] <OCTAGRAM> ну да, не мешает потребителей учить давить на производителей
[02:09:07] <OCTAGRAM> чтоб под давлением выше мотивация была делать правильно
[02:11:15] <OCTAGRAM> что касается набора, ну не знаю, наверное, из набора только несколько важных будет
[02:11:33] <OCTAGRAM> остальное те, кто приходят, освоят в процессе
[02:12:03] <OCTAGRAM> асинхронизатор — он же не меняет семантику
[02:13:28] <OCTAGRAM> просто вместо цельного стека получается связный список блоков в динамической памяти
[02:14:02] <OCTAGRAM> если адреса переменных на стеке как числа не интерпретировать, не пытаться разницу вычислить, то всё так же
[02:14:13] <OCTAGRAM> Ada в AdaMagic соответствует стандарту
[02:15:21] <OCTAGRAM> семантика Ады похожа на многие другие известные языки, и Сергей Киркоров даже книги засылал для оперативного переобучения всех желающих
[02:16:41] <OCTAGRAM> это только одному человеку надо инструкцию составить, как совместить AdaMagic, асинхронизатор и EmScripten, и всё, дорога проторена для остальных
[02:19:08] <OCTAGRAM> у некоторых предприятий специфики своего кода больше изучать, чем тут
[02:19:50] <OCTAGRAM> а специфики своего кода может получаться больше, если не пытаться решить проблему как лучше
[02:20:41] <OCTAGRAM> вот синхронный стиль со структурной многозадачностью — это хорошо и это как лучше, есть книги на русском языке, как с рандеву писать
[02:21:04] <OCTAGRAM> если этого нет, то писать приходится по-другому, и писать по-другому приходится всё
[02:21:52] <OCTAGRAM> у меня есть парсер видеосайтов на node.js, ну так что-то никто, кроме меня, его не состоянии поддерживать
[02:22:00] <OCTAGRAM> не помог JavaScript
[09:06:44] <ada_ru> (nitrocerber) 218 сообщений за ночь) во вы тут развели)
[10:59:43] <OCTAGRAM> доделал: http://static.toom.su/js/hello/Hello_CheerpJGNAT.Test_Page.html
[11:00:35] <OCTAGRAM> думаю сорцы выложить, а то есть не очевидные для первопроходцев нюансы
[11:01:24] <OCTAGRAM> не всё по документации работает, не в любых интуитивно ожидаемых комбинациях
[11:14:47] <OCTAGRAM> собственно https://gitlab.ow2.org/octagram/Hello_CheerpJGNAT
[11:23:35] <vgodunko> Красиво оно ставит колом FF
[11:26:07] <ada_ru> (Pavel) а оно так и должно вечно крутиться в Loading?
[11:26:15] <OCTAGRAM> не вечно
[11:26:19] <OCTAGRAM> но пару минут
[11:26:44] <OCTAGRAM> по Ctrl+Shift+K можно увидеть, как что-то постоянно грузится
[11:27:13] <OCTAGRAM> насчёт многозадачности правда
[11:27:43] <ada_ru> (Pavel) я виже только вот https://share.zhukoff.net/share/hhnMl.png =)
[11:28:37] <OCTAGRAM> это фишка не Cheerp, а только CheerpJ, в loader.js
[11:28:50] <ada_ru> (Pavel) а во, кнопка появилась
[11:29:36] <OCTAGRAM> васма нету :(
[11:36:23] <vgodunko> Ребята, переходите на a2js!
[11:37:58] <vgodunko> Поддержите отечественного производителя!
[11:38:50] <OCTAGRAM> как там с асинхронностью?
[11:39:42] <vgodunko> Есть спецификация WebWorkers
[11:39:47] <OCTAGRAM> блин
[11:40:39] <OCTAGRAM> ну почему какая-то шляпа вместо того, чтоб просто взять и предоставить возможность писать в синхронном стиле и трансформировать это
[11:41:55] <vgodunko> Наверное потому, что асинхронность специфична для весьма узкого круга задач
[11:42:12] <vgodunko> И каждый раз оптимальный подход сугубо индивидуален
[11:42:14] <OCTAGRAM> специфична для браузера
[11:42:20] <OCTAGRAM> браузер так требует
[11:42:32] <OCTAGRAM> это  чтобы угодить браузеру
[11:42:36] <OCTAGRAM> и всё
[11:42:43] <OCTAGRAM> так надо
[11:42:52] <OCTAGRAM> дурацкие браузеры, но что поделать
[11:43:04] <OCTAGRAM> не перекладывать же этот геморрой на плечи программиста
[11:43:15] <vgodunko> А pthreads не дурацкиё?
[11:43:23] <vgodunko> Не менее геморная технология
[11:43:24] <OCTAGRAM> тем более, восходящих замыканий в Аде нет
[11:43:41] <OCTAGRAM> pthread нормальные
[11:44:05] <OCTAGRAM> весьма и весьма
[11:44:09] <vgodunko> я могу придумать кучу ответов к их нормальности, от хи-хи до ну-ну
[11:44:12] <OCTAGRAM> то, что нужно
[11:44:17] <vgodunko> Они привычные
[11:44:38] <vgodunko> Но в глубине имеют свой комплект граблей
[11:44:45] <OCTAGRAM> для shared memory вариантов особо нет
[11:46:27] <OCTAGRAM> адская структурная многозадачность призвана скрывать эти грабли в некотором диапазоне способов применений
[11:46:52] <ada_ru> (nitrocerber) Один Ктулху знает, чего мне стоило слепить мемес на телефоне..
[11:48:01] <OCTAGRAM> вообще, идеал пока — это асинронизованный васм, и CheerpJ получился ближе к нему
[11:48:22] <OCTAGRAM> если с AdaMagic что-то придумать, может получиться и ещё лучше
[11:49:08] <OCTAGRAM> а a2js куда-то не туда развивается, ну иногда, может быть, для чего-то сойдёт
[11:49:34] <OCTAGRAM> может, если wind.js на него натравить, что-то путное получится
[11:50:21] <OCTAGRAM> так, чтоб из коробки, пока что получилось только с CheerpJ
[11:53:51] <ada_ru> (I_vlxy_I) CheerpJ - афигеть идеал. кнопка грузится пять минут.
[11:54:08] <ada_ru> (I_vlxy_I) :-D
[11:55:42] <ada_ru> (I_vlxy_I) ну и результат без мышки не юзабелен вообще
[11:55:59] <ada_ru> (I_vlxy_I) а ведь большинство компов в наше время мышки не имеет
[11:59:59] <OCTAGRAM> клавиатура только, что ли?
[12:00:23] <ada_ru> (I_vlxy_I) не, клавиатуры тоже нет :-)
[12:00:51] <ada_ru> (I_vlxy_I) сенсорный экран же
[12:00:52] <OCTAGRAM> вообще, клавиатура там работает, OK в диалоге, по крайней мере, нажать можно
[12:01:04] <OCTAGRAM> а что с ним?
[12:01:05] <ada_ru> (I_vlxy_I) вон, на таком компе демотиватор был сделан выше :-)
[12:01:19] <OCTAGRAM> с сенсорного экрана нажатие не срабатывает?
[12:01:25] <OCTAGRAM> я не знаю, у меня нет
[12:01:32] <ada_ru> (I_vlxy_I) фиг попадешь же
[12:02:00] <OCTAGRAM> а масштабирование?
[12:02:37] <OCTAGRAM> для того, чем я собираюсь заниматься, дырки в заборе как-то не очень подходят
[12:03:00] <OCTAGRAM> наоборот, на два монитора рядом хорошо бы картинку разместить
[12:07:04] <OCTAGRAM> чтоб там в одном виртуальном окне (с точки зрения Swing, но не браузера) листать картинки, в левой более узкой панели, кликая, включать более подробную информацию в основной панели, нажимая кнопку специальную, отправлять в закладки, которые в таком же окне с боковой панелью, из закладок или окон поиска ещё d'n'd делать
[12:07:23] <OCTAGRAM> где там на дырке в заборе место найдётся для d'n'd
[12:07:55] <OCTAGRAM> это себя не любить колупаться, кораблик через бутылочное горлышко собирать
[12:30:19] <ada_ru> (I_vlxy_I) Вопрос тогда: нафига это в браузере делать?
[12:51:03] <OCTAGRAM> сподвигнуть поставить программу бывает непросто
[12:51:04] <OCTAGRAM> закон жанра
[12:52:38] <OCTAGRAM> может быть, отдельную программу лучше распробуют, но начинать будут с браузера
[12:54:36] <ada_ru> (nitrocerber) Таки да, ща даж онлайновки мультиплеерные фигачат на каком-нибудь юнити и вшивают в браузер
[12:56:59] <OCTAGRAM> хотя, допустим, CORS из браузера будет фигачить с нужными кукисами, а отдельно — нет
[12:57:18] <OCTAGRAM> а в какой-нибудь Фейсбук залогиниться — надо показать браузер
[12:58:28] <OCTAGRAM> какие-то действия за счёт доступа к кукисам имеет смысл производить именно там