[00:27:03] <valexey> демотивируюсь :-)
[00:43:20] <valexey> vlad2: а расскажи, что у тебя там за ООП такое в компилере?
[00:45:39] <vlad2> Дык, я ж сюда постил совсем недавно :)
[00:46:06] <vlad2> function Class(){}
Class.extend = function extend(methods){
function Type(){
for(var m in methods)
this[m] = methods[m];
}
Type.prototype = this.prototype;
var result = methods.init;
result.prototype = new Type(); // inherit this.prototype
result.prototype.constructor = result; // to see constructor name in diagnostic
result.extend = extend;
return result;
};
[00:46:14] <vlad2> Минималистичный вариант.
[00:46:20] <vlad2> Только самое нужное.
[00:46:34] <vlad2> Методы и их перегрузка.
[00:46:42] <valexey> так. а как этим пользоваться?
[00:46:43] <vlad2> Метод init - конструктор.
[00:47:18] <vlad2> var X = Class.extend({method1: function(){}});
[00:47:27] <vlad2> var x = new X();
[00:47:34] <vlad2> x.method1();
[00:47:48] <vlad2> init забыл
[00:48:03] <vlad2> var X = Class.extend({init: function(){}, method1: function(){}});
[00:48:07] <valexey> о, блин. то есть X - это класс отнаследованный от Class с новым методом method1?
[00:48:12] <vlad2> (init всегда должен быть)
[00:48:17] <vlad2> Да.
[00:48:40] <vlad2> причем с этой наколенной херней работает "родной" instanceof
[00:49:02] <vlad2> И эта херня теперь работает в IE :)
[00:49:03] <valexey> Соответственно можно var XX = X.extend({method1:function(){}})
[00:49:09] <vlad2> Да.
[00:49:32] <valexey> хы. прикольно. чем-то напоминает "модульную" систему в том же js у тебя в компилере.
[00:50:10] <valexey> блин. но один залетевший дятел может разрушить всю эту цивилизацию
[00:50:49] <vlad2> Дык, велкам ту жабаскрипт :)
[00:50:57] <valexey> гы. http://forum.oberoncore.ru/viewtopic.php?f=34&t=4462&p=81942#p81942
[00:51:20] <vlad2> Но эта херня всеравно _сильно_ лучше ручного прописывания через прототипы.
[00:51:23] <valexey> /me представил себе как под андроидом этот интерфейс юзать
[00:51:25] <valexey> брр
[00:51:39] <vlad2> Гы :)
[00:51:42] <valexey> ну, ясное дело. ибо декларативненько
[01:02:09] <valexey> черт. я и забыл насколько info21 не компетентен в современных технологиях
[01:02:20] <valexey> чот он мне все больше менеджера напоминает в этом плане :-)
[01:07:04] <vlad2> Ну менеджеры обычно осознают, что они нихрена не понимают :)
[01:14:34] <valexey> ну, да. тут штука осложняется остепененностью научной :-)
[01:14:41] <valexey> и ощущением собственной клевости
[01:15:31] <valexey> Ибо ББ под андроид это ж жесть - это совсем другая графика (не X11), это другой процессор (ARM, MIPS), это другое вообще ВСЁ. Другая концепция интерфейса.
[01:15:46] <valexey> Проще ББ на AMD64 портануть :-)
[01:15:50] <valexey> Или там под мак.
[01:29:13] <jordan36957> Ай юморист. :-)
[01:29:31] <jordan36957> В хорошем смысле.
[01:30:55] <valexey> jordan36957: хто? :-)
[01:31:08] <jordan36957> Ты. Тему прочитал.
[01:31:32] <valexey> Ну, дык. Это ж правда!
[01:32:07] <valexey> С точки зрения обучения программированию пофигу как именно приложение исполняется. Хоть через десять эмуляторов виртуальных машин и интерпретаторов.
[01:32:35] <jordan36957> Так то да.
[01:33:02] <jordan36957> А возможно ли в место js использовать php? В онлайн компиляторе?
[01:33:13] <valexey> нет. а смысл?
[01:33:20] <valexey> php не в браузере выполняется же
[01:33:31] <valexey> это будет медленнее работать
[01:33:48] <jordan36957> Дашло. Цель же именно в браузере.
[01:33:57] <jordan36957> *Дошло
[01:34:01] <valexey> угу. на сервер компилятор тоже легко засунуть
[01:34:03] <valexey> через node.js
[01:34:16] <valexey> короче, жабаскрипт, как платформа, наше ффсйо!
[01:34:30] <jordan36957> А статистика по использованию компилятора есть? Его используют?
[01:34:48] <valexey> не, статистику не собираем.
[01:34:55] <TRUE> <vlad2> причем с этой наколенной херней работает "родной" instanceof
[01:35:02] <TRUE> а разве не работало?
[01:35:26] <valexey> вот будут js-вставки кода. обрастем сразу либами, можно будет что-то прикольное делать.
[01:35:34] <valexey> тогда возможно народ пойдет играться :-)
[01:36:41] <jordan36957> Для обучения удобно. Ничего не нужно настраивать. Запустил дистр линукса в livecd подключился к вайфаю и учись. Для школы самое оно.
[01:38:12] <vlad2> TRUE: работало, просто для этого поизвращаться пришлось :)
[01:38:29] <vlad2> Ты вот понимашеь как оно работает? :)
[01:39:17] <TRUE> так я же проверял тогда ещё. Тогда экстенд работал нормально.
[01:39:19] <vlad2> (instanceof в частности)
[01:39:35] <TRUE> я его проверил, но как работает внутри - не знаю
[01:39:39] <TRUE> проверил -работало
[01:39:48] <TRUE> на моих примерах
[01:40:17] <vlad2> Я не знаю почему не работало в IE. Я начал с того, что попытался избавится от __proto__ - потому что оно deprecated.
[01:40:43] <vlad2> Потому так и сяк - перестало работать в хроме.
[01:40:52] <vlad2> Потому еще поковырял - вроде заработало.
[01:41:03] <vlad2> Ощущение магии так и не исчезло.
[01:41:03] <TRUE> мне показалось, что причина в require("file.js")
[01:41:08] <vlad2> Не.
[01:41:37] <vlad2> Помимо этого там еще не работал indexOf для массивов.
[01:41:53] <vlad2> Но это известная херня (я ее нагуглил и починил).
[01:41:58] <vlad2> А.
[01:42:16] <vlad2> И еще bind Для функций в IE нет.
[01:42:33] <vlad2> Уж не знаю как они без него живут, у нас вовсю используется.
[01:42:47] <TRUE> var F = require("file.js"); var obj = new F.Func1(); Отрабатывал как-то не так, как ожидалось
[01:42:50] <TRUE> в ие
[01:42:54] <valexey> блин. как страшно жить!
[01:43:35] <vlad2> Конкретно file.js в браузере работать не будет, потому что это nodejs'ая штука
[01:44:01] <TRUE> не, это абстрактный пример был. Я не знал, что это часть нода.
[01:44:09] <vlad2> А.
[01:44:24] <jordan36957> Сохранять и загружать в компилятор, нельзя? Только копи паст?
[01:44:24] <vlad2> Не, require должно работать - это ж обычная функция.
[01:44:54] <vlad2> Угу. Тут никто не силен в вебразработке, чтоь сделать из странички конфетку.
[01:44:57] <valexey> jordan36957: в смысле, в компилятор? :-)
[01:45:07] <jordan36957> Файл исходников.
[01:45:14] <valexey> пока нет.
[01:45:20] <TRUE> просто, читал что-то, но помню уже смутно. Вроде, при вызове new F.Func1(), внутри Func1 this понималось как window, а не как F.
[01:45:26] <jordan36957> Нашёл ошибку.
[01:45:28] <vlad2> (хотя конкретно кнопку с загрузкой файла легко сделать)
[01:45:47] <jordan36957> в конце функции он компилит без ;
[01:45:53] <valexey> jordan36957: гипотетически, есть два варианта: 1) хранить файло на сервере. 2) хратить файло в браузере (через file api)
[01:46:03] <valexey> в браузере - то есть на машине клиента
[01:46:18] <jordan36957> что так JS.alert("Hello, World!")
[01:46:23] <jordan36957> что эдак JS.alert("Hello, World!")
[01:46:30] <jordan36957> не JS.alert("Hello, World!");
[01:46:46] <valexey> во втором случае от сервака ничего не требуется вообще, и это твое файло полностью у тебя и пределы твоего компа не покидает
[01:46:59] <vlad2> ';' может отсутствовать - см. грамматику оберона
[01:47:08] <jordan36957> ок
[01:48:03] <valexey> вопрос, тащемто, в том, где хранить файло (исходники) лучше :-)
[01:48:25] <TRUE> а в куках оно поместится? : )
[01:48:53] <valexey> зачем куки? есть ведь http://www.w3.org/TR/FileAPI/
[01:49:03] <jordan36957> А там же капс лок
[01:49:58] <jordan36957> Перевод ключевых слов в верхний регистр будет. К примеру набираю begin а он переводит в BEGIN
[01:50:57] <valexey> сори, это не то. вот это: http://dev.w3.org/html5/webstorage/
[01:51:43] <valexey> http://ru.wikipedia.org/wiki/Web_Storage
[01:52:55] <valexey> 5 мегабайт хватит на всё!
[01:52:57] <valexey> :-)
[01:54:36] <jordan36957> Что не так
[01:54:37] <valexey> хотя для исходников 5 Мб это дофига
[01:54:39] <jordan36957> http://i59.fastpic.ru/big/2013/0827/62/e84050856cf83339e7711a4a6dfca962.png
[01:54:53] <TRUE> всплыл нюанс: модули с одного сайта нельзя использовать нигде, кроме как на нём.
[01:54:53] <valexey> ; забыл
[01:54:55] <valexey> как минимум
[01:55:08] <valexey> после алерта
[01:55:12] <valexey> TRUE: ась?
[01:55:37] <jordan36957> Понял, но зачем?
[01:55:48] <TRUE> перед строкой 11
[01:55:54] <valexey> дык, см. грамматику оберона :-) стейтменты разделяются ;
[01:56:05] <valexey> на концы строк языку пофиг
[01:56:27] <TRUE> valexey: хранилище выделяется на домен.
[01:56:47] <jordan36957> Ещё бы компилятор, выдавал вменяемые варнинги. :-)
[01:56:49] <TRUE> то есть, с другого сайта эти модули не получить
[01:57:20] <jordan36957> нужно привыкнуть
[01:57:57] <valexey> jordan36957: кстати, рекомундую нажать Ctrl+Shift+J, а JS.alert заменить на JS.console.log(value)
[01:58:12] <valexey> TRUE: более того, с другого компа тоже не получить :-)
[01:58:25] <valexey> это локальное хранилище для конкретно этого домена
[01:58:38] <valexey> ну, в вики хорошо описано.
[01:58:41] <TRUE> и с другого браузера на этом компе : )
[01:58:46] <valexey> угу
[01:59:06] <valexey> значит что? значит надо сделать импорт и экспорт модулей :-)
[01:59:28] <valexey> скрестить с каким-нибудь дропбоксом :-)
[01:59:37] <TRUE> а смысл?:)
[01:59:39] <TRUE> а
[02:00:04] <TRUE> только js не получит доступа к дропбоксу, если ты специально на него не ш
[02:00:13] <TRUE> *не зашёл
[02:00:22] <jordan36957> Компиляция и исполнение происходит на стороне сервера?
[02:00:31] <TRUE> (если я правильно помню вебсокеты)
[02:00:37] <TRUE> нет
[02:00:40] <TRUE> в браузере
[02:00:53] <valexey> у них же есть api для js
[02:00:58] <TRUE> и компиляция, и исполнение
[02:01:07] <valexey> https://www.dropbox.com/developers/datastore/tutorial/js
[02:01:30] <valexey> jordan36957: да, все происходит локально на твоей машине
[02:01:47] <valexey> jordan36957: то есть после того как страничка загрузилась с онлайн компилятором, ты можешь смело отрубать интернет
[02:01:57] <valexey> все будет работать.
[02:01:57] <TRUE> вебсокеты по причинам безопасности, вроде, не разрешают коннекты на сайт отличный от того, с которого получена страница со скриптом
[02:01:57] <jordan36957> с этим что не так M: ARRAY 20 OF INTEGER
[02:02:20] <valexey> а это где? в аргументах функции?
[02:02:33] <jordan36957> В VAR
[02:02:46] <valexey> точказапятую забыл?
[02:02:52] <TRUE> )
[02:03:00] <jordan36957> с ней тоже ошибка
[02:03:06] <jordan36957> сейчас картинку пришлю
[02:03:34] <valexey> MODULE test;
VAR m : ARRAY 20 OF CHAR;
BEGIN
END test.
[02:03:38] <valexey> так компилится
[02:04:05] <jordan36957> да
[02:05:01] <jordan36957> http://i57.fastpic.ru/big/2013/0827/b0/2e93061fed3cee8c7ac9a9075decddb0.png
[02:05:22] <TRUE> точку с запятой
[02:05:24] <valexey> VAR - секция должна быть ДО процедур
[02:05:28] <TRUE> и VAR перед процедурой
[02:05:34] <valexey> + точказапятой не хватает, да.
[02:06:08] <TRUE> импорт, типы, переменные, процедуры, инициализация.
[02:06:14] <jordan36957> Ок.
[02:07:04] <jordan36957> Буду внимательнее.
[02:08:25] <jordan36957> Для чего такая замарочка с ;?
[02:08:34] <vlad2> можете "неправильные" примеры складывать в кучку - я потому по ним пройдусь с целью улучшения диагностики ошибок синтаксиса.
[02:08:59] <vlad2> (заводить issue на гитхабе).
[02:09:33] <jordan36957> Зато в духе оберона, ошибка на все случаи жизни END expected (MODULE) :-)
[02:10:04] <jordan36957> В добавок js можно изучить
[02:10:17] <vlad2> На самом деле эта ошибка всего лишь означает, что он обламался при парсинге модуля.
[02:10:31] <vlad2> (а мог, например, при парсинге процедуры).
[02:11:00] <jordan36957> Это я понял. Просто, бывает сложно понять, что он хочет
[02:11:35] <vlad2> Там хинты можно расставить прямо в grammar.js - сейчас их там мало, можно сделать много :)
[02:12:39] <vlad2> (см. required в grammar.js)
[02:12:57] <jordan36957> Динамические массивы типа ARRAY OF INTEGER + setlength будут поддерживаться? Или только описание оберона 07? А то как то тосклива.
[02:13:07] <vlad2> Эта штука говорит, что уже если распарсили "a" то обязано быть и "b".
[02:13:24] <vlad2> Т.е. делает диагностику точнее.
[02:13:54] <valexey> jordan36957: а зачем тебе? :-)
[02:13:55] <vlad2> Да, отсутствие динамических массивов это хардкор :)
[02:14:52] <vlad2> Не понимаю чего их Вирт выпили из general-purpose language ;)
[02:14:54] <jordan36957> Заранее можно набивать ARRAY 99999999 OF INTEGER
[02:15:03] <TRUE> Почему "отсутствие"? Невозможность создать или изменить размер. А обрабатывать - пожалуйста.
[02:15:11] <jordan36957> Типа ARRAY MAX_100500 OF INTEGER
[02:15:17] <jordan36957> :-)
[02:15:23] <valexey> злобно
[02:15:37] <TRUE> у кого?
[02:15:44] <TRUE> ...злобнее
[02:15:48] <jordan36957> Как тогда динамику делать?
[02:16:01] <valexey> через динамические структуры данных :-)
[02:16:05] <vlad2> На списках же ш!: )
[02:16:15] <jordan36957> В браузере работает?
[02:16:18] <valexey> на V-list'ах
[02:16:24] <TRUE> зачем оно в браузере?
[02:16:29] <jordan36957> Чем массив не динамическая структура данных?
[02:16:36] <valexey> http://ru.wikipedia.org/wiki/V-%D1%81%D0%BF%D0%B8%D1%81%D0%BE%D0%BA
[02:17:06] <vlad2> JS.makeArray(100); ;)
[02:17:28] <jordan36957> Во во. Опять всё через system
[02:17:52] <vlad2> Да не, конечно надо просто позволить NEW(pArray, 100);
[02:18:23] <jordan36957> Вектор это же тот же массив, просто удобнее в использовании, обслуживающие функции уже готовы, пример С++
[02:18:51] <jordan36957> То есть класс вектор.
[02:19:03] <jordan36957> В С++ или в free pascal.
[02:19:26] <valexey> проблемы будем решать по мере поступления :-) массивы динамические никаких проблем по сути не решат.
[02:19:48] <jordan36957> Проще в понимании.
[02:19:48] <valexey> нужно просто сделать инструмент для клепания тех контейнеров (библиотечно) которые нужны
[02:20:08] <valexey> то есть нужен инструмент напоминающий шаблоны :-)
[02:20:22] <vlad2> Угу. А в библиотеках можна и IMPORT JS написать :)
[02:20:27] <valexey> по моей имхе, таковой струмент должен быть внешним (в случае оберона) относительно компилятора
[02:20:29] <jordan36957> Копи паст? :-)
[02:20:44] <valexey> автоматизированный копипаст! решение на уровне среды программирования
[02:21:00] <jordan36957> Я шучу.
[02:21:10] <jordan36957> Естественно я понял.
[02:21:14] <valexey> В среде пишешь "шаблон" модуля. Это не модуль и не компилится. Это шаблон.
[02:21:29] <valexey> А потом в среде же говоришь - а сгенери ка мне модуль на базе вот этого шаблона для вот такого вот типа
[02:21:44] <valexey> И в твоем проекте появляется готовый модуль.
[02:22:34] <valexey> который сразу проверяется компилятором на валидность
[02:22:41] <valexey> как-то так :-)
[02:22:42] <jordan36957> Но всё же зачем Вирт так урезал О7? Это универсальный язык. От оберон 2 не особо приняли а тут урезали много. И пошли форки, актив обероны, зононы, кп и т.д
[02:23:30] <valexey> ну, может в плане массивов он пытался еще и менеджер памяти упростить
[02:23:53] <valexey> ибо когда у тебя известны все размеры на этапе компиляции, это может упростить планирование распределения памяти
[02:24:08] <valexey> меньше проблем с фрагментацией например
[02:25:34] <valexey> http://lenta.ru/news/2013/08/26/siri/
[02:25:36] <valexey> :-D
[02:26:44] <valexey> черт, мне таки нравятся мерикосские законы относительно рекламы
[02:27:02] <valexey> то есть что там можно явным образом противопоставлять свой продукт продукту конкурента
[02:27:10] <valexey> а не "обычному стиральному порошку"
[02:29:14] <TRUE> а как объявить запись с хотя бы одним полем?
[02:29:28] <TRUE> тип
[02:29:32] <jordan36957> Так, можно реализовать любой язык хоть С++ в браузере, переводи в js.
[02:30:01] <jordan36957> Да. Могут быть нюансы и т.д
[02:30:39] <valexey> C++ уже есть в браузере :-)
[02:30:58] <valexey> но он конечно не столь няшный код генерит
[02:31:25] <valexey> TRUE: в смысле?
[02:34:09] <TRUE> всё, разобрался
[02:38:57] <jordan36957> ТРУ вот описание 07
[02:39:00] <jordan36957> http://www.inf.ethz.ch/personal/wirth/Articles/Oberon/Oberon07.Report.pdf
[02:42:09] <valexey> а вот проназвания (там про трамвай современный, но аналогии можно протянуть и с Паскалем <-> Компонентным паскалем)
[02:42:44] <valexey> "В тоже время, ЛРТ - это именно новый виток развития наземного городского транспорта, ставший ответом на запрос экономики. Просто современный трамвай. Принципы те же что и у трамвая, просто новые требования к подвижному составу, рельсовому полотну, организации движения. Но понятие "трамвай" было еще весьма живо в сознании людей, которые видели его в 40-х, и вызывало это слово по прежнему некие архаические картины. Именно поэтому в обиход, прессу, в выступления политиков на западе пошел термин "легкий рельсовый транспорт". Это смотрелось новее и моднее. Местами его называли "легкое метро", чтобы как бы подчеркнуть близкое к метрополитену качество работы новых систем. Очень сложно объяснить что такое "качественный трамвай", проще было объяснить что такое "лайт версия метрополитена""
[02:43:42] <jordan36957> Вопрос.
[02:45:31] <jordan36957> Что на оберкоре об онлайн компиляторе 07 говорят? Они им заинтересовались?
[02:46:31] <jordan36957> Где на сайте посмотреть исходники компилятора?
[02:47:11] <TRUE> Feed* = RECORD
len, size: INTEGER
END;
Feed* = POINTER TO RECORD
len, size: INTEGER
END;
Первое компилится, а второе - нет. При импорте из другого модуля.
[02:47:12] <valexey> там же ссылка на исходники прям на самой страничке с компилятором есть
[02:47:14] <valexey> https://github.com/vladfolts/oberonjs
[02:47:22] <TRUE> line 24: identifier 'Feed' is not exported by module
[02:47:35] <valexey> в самом низу, надпись Development
[02:47:39] <jordan36957> Теперь увидел.
[02:47:41] <valexey> jordan36957: я хз. что они там говорят.
[02:48:02] <vlad2> TRUE: похоже на багу
[02:48:35] <valexey> jordan36957: вот посмотрим что там ответят в той теме про ББ и Андроид :-)
[02:48:40] <TRUE> думаю, это не критично, поскольку js по своей природе не различает POINTER TO
[02:48:44] <vlad2> А. Понятно. Типа анонмный рекорд - поэтому.
[02:48:49] <TRUE> то есть, у него всё поинтер
[02:49:13] <vlad2> Да, с точки зрения js все равно.
[02:49:19] <vlad2> Наверное надо починить.
[02:49:25] <valexey> надо
[02:49:25] <TRUE> почему анонимный?
[02:49:41] <valexey> ибо с точки зрения семантики разница таки будет.
[02:49:44] <vlad2> Потому что не POINTER TO T
[02:49:46] <valexey> семантики Оберона
[02:49:55] <TRUE> это же тип. Я оба типа импортирую в другом модуле, на том, где поинтер, ошибка компиляции
[02:50:19] <TRUE> а
[02:51:10] <TRUE> так работает.
[02:51:16] <TRUE> если раздельно делать
[02:51:44] <vlad2> Дай полный пример когда не работает.
[02:51:55] <vlad2> А еще лучше сразу в issue его.
[02:52:01] <jordan36957> Влад, сколько ты компилятор писал?
[02:52:35] <valexey> он его до сих пор пишет :-)
[02:52:47] <vlad2> Вообще долго. Я думал будет меньше. И в оценке размера (под коду) я ошибся в два раза :)
[02:52:58] <jordan36957> Так сколько?
[02:53:46] <vlad2> Нет под рукой моей VCS :)
[02:54:20] <vlad2> По ощущениям - полгода.
[02:54:28] <jordan36957> Я пробывал раньше написать игрушечный компилятор, дальше парсера не пошло. Но я тогда не разбирался в динамических структурах данных.
[02:55:47] <vlad2> Чисто технических проблем сложных почти не было. Основное время - борьба с жабаскриптом :)
[02:56:36] <valexey> и толкование репорта :-)
[02:56:47] <vlad2> Писалось в основном перед сном - если спать не хотелось, а спать было пора.
[02:56:56] <vlad2> И толкование репорта, да.
[02:57:24] <vlad2> Чтоб целеноправленно несколько часов - такого не было.
[02:57:27] <jordan36957> just for fun :-)
[02:57:31] <vlad2> Типа.
[02:58:46] <jordan36957> Какие есть проекты на 07? Может операционые системы?
[02:59:14] <valexey> Astrobe же :-)
[02:59:39] <valexey> то есть программирование микроконтроллеров (сам Astribe писан на С#)
[03:00:08] <jordan36957> А ещё, не только для микроконтроллеров.
[03:00:10] <valexey> ну и вирт там что-то вроде ваял под армы что-ли. может и оська какая
[03:01:01] <valexey> 07 же новяк - в 2008 году выполз
[03:01:08] <valexey> народиться что-то большое не успело
[03:01:21] <valexey> тем более что в Цюрихе играются не с 07 а с АО
[03:01:41] <vlad2> AO вообще шаг в никуда, по-моему.
[03:02:03] <jordan36957> Вы как программисты ответьте, оберон 07 годится для программирования или нет?
[03:02:10] <valexey> фиг знает. в него довольно дофига фич напихали (не документированных).
[03:02:19] <valexey> это чисто исследовательско-учебный проект.
[03:02:27] <jordan36957> Может ну слишком скуден.
[03:02:44] <valexey> jordan36957: смотря для какого :-) для программирования графики for fun вполне сгодится думаю
[03:02:55] <valexey> вот будут js-вставки, попробуем :-)
[03:02:57] <jordan36957> На место си.
[03:03:13] <valexey> На место си (во все его места) - нет.
[03:03:33] <TRUE> MODULE M;
TYPE T1* = POINTER TO RECORD END;
T2* = RECORD END;
PT2* = POINTER TO T2;
END M.
MODULE M2;
IMPORT M;
VAR f1: M.T1;
f2: M.PT2;
f3: M.T2;
END M2.
[03:03:45] <jordan36957> Понял.
[03:03:47] <valexey> С некой натяжкой на место Си может Модула-2 претендавать.
[03:04:00] <valexey> (модула-3 -- не может)
[03:04:10] <jordan36957> Высокоуровнева?
[03:04:23] <valexey> рантайма хочет. сборщика мусора там и проч.
[03:05:06] <jordan36957> То есть если у нативного языка убрать рантайм будет, что то типа си?
[03:05:10] <valexey> но и модула-2 с натяжкой сильной. ну, то есть в линуксе модула-2 не заменит Си. Ибо там все на сях и его особенностях построено. Хрен выкорчуешь :-)
[03:05:26] <jordan36957> Даже прослойки?
[03:05:42] <valexey> ну, там же API весь сишный
[03:05:44] <jordan36957> Для паскаля даже биндинг к x11 есть
[03:05:51] <valexey> в API входят ведь не только функции, но и макросы.
[03:06:40] <jordan36957> sdl2
[03:06:41] <valexey> да вот конкретно для x11 даже биндингов не надо - штука то не хитрая. да еще и по tcp или unix domain socket общабельная. берешь и реализуешь сам на своем языке любимом.
[03:07:52] <valexey> в общем, полностью заменить Си не сможет никто, пожалуй (ну С++ разве что). Но оно и не требуется же. Тебе важно заменит ли язык ХХХ в конкретно твоей нише этот ненавистный Си :-)
[03:09:16] <valexey> короче, посмотрим что выйдет из js-веба. ниша очень перспективная. вскоре на смартфонах js будет родным языком :-)
[03:09:40] <valexey> в Win8 js уже родной язык (скажем интерфейс метроскайпа писан именно на нем)
[03:11:53] <jordan36957> Ну там наворотили.
[03:12:36] <jordan36957> Так можно совместить. К примеру написать компилятор с оберона в си.
[03:13:09] <jordan36957> Олег такое пишет.
[03:13:37] <jordan36957> Но я если честно не качал и не запускал.
[03:14:17] <valexey> можно. ну вот он пусть пишет компилер в Си, а мы тут немного другое направление пока попилим :-)
[03:14:48] <valexey> надо быть ближе к прикладным наглядным вещам. :-)
[03:15:20] <jordan36957> Я же не говорю пилить о7, что типа оберон++ с шаблонами и т.д
[03:16:03] <valexey> прежде чем хвататься за другой бекенд, неплохо бы хотя бы с одним разобраться :-)
[03:16:17] <valexey> хотя. кто-нибудь может и попробовать, почему бы и нет, собственно.
[03:16:21] <jordan36957> Это просто мысли.
[03:16:48] <valexey> форк с последующим мерджем :-)
[03:18:07] <_simple> скуката...
[03:19:55] <valexey> пойду спать
[03:19:58] <valexey> BBCB!
[03:20:00] <valexey> :-)
[03:20:10] <jordan36957> Смотрю я исходники О7, странный в js ООП.
[08:11:12] <vlad3> в жабаскрипте нет ООП ;)
[08:13:39] <vlad3> Есть функции и объекты. Объкты наследуются от объеквтов (не путать с типами/классами, типов нет). Из этого говна можно пытаться сделать что-то напоминающее классическое ООП. Но это все равно слезы.
[08:19:51] <vlad3> Причем наследование синтаксически оформленно весьма витиевато - вручную его выписывать задалбываешься сразу.
[09:47:50] <valexey> !
[09:48:02] <Kemet> !
[09:49:16] <Kemet> valexey: читая талмуд, который типа перевожу, меня не оставляло ощущение какого-то диссонанса, и только открыв древнюю А2 я понял, что оно внутрях было несколько иное )
[09:49:38] <valexey> :-)
[09:49:41] <Kemet> не принципиально, но местами
[09:49:48] <valexey> все течет, все изменяется
[09:50:13] <valexey> Оберон ОСь описанная у Вирта в книжке внутрях тоже несколько другая чем то, что доступно сейчас для скачивания.
[09:50:14] <Kemet> угу, это хорошо, но талмуд-то надо было переписать )
[09:50:59] <Kemet> хотя, кто ж диссеры переписывает, это если бы часть документации было, то можно было бы ожидать
[09:51:26] <valexey> угу
[09:51:34] <valexey> защитился, и ладно.
[09:51:45] <Kemet> ага
[10:00:53] <Kemet> затишье на форумах
[10:02:48] <Kemet> valexey: чегото ж обероноподобное на жабаскрипте ипилили на хакатоне, на форуме тема было, пусть Инфо21 жабаскрипт и использует )
[10:03:20] <Kemet> будет ему и на адроиде и вообще везде
[10:16:09] <valexey> Kemet: это было разве обероноподобное? Это вроде эксельсиоровцы пилили ББ-подобное на java, а не javascript
[10:16:16] <valexey> То есть ЯП там был java
[10:16:29] <valexey> А штука была похожа на ББ или ОС Оберон
[10:16:31] <Kemet> ну както так, да
[10:16:43] <Kemet> я это и имел ввиду
[10:16:59] <valexey> язык не кошерен :-)
[10:17:26] <valexey> да и не заработает оно в андроиде например
[10:17:47] <Kemet> а в чем проблема
[10:18:09] <valexey> большой страшный сложный язык java!
[10:18:27] <valexey> с дженериками, аннотациями и поэтессами!
[10:18:29] <Kemet> эээ, ну оно же в андроиде есть
[10:19:15] <valexey> то что они на хакатоне запилили, в андроиде так просто не заработает.
[10:19:32] <Kemet> значит андроиду пора на свалку )
[10:19:38] <valexey> то есть абсолютно точно придется делать отдельную версию под андроид
[10:20:33] <Kemet> я вот дума, не сделают ли майкрософтовцы в свете последних событий еще один шаг в сторону опенсорса и откроют вин8 )
[10:21:10] <Kemet> винсе у них же типа опенорсная
[10:21:19] <valexey> не опенсорсная
[10:21:31] <valexey> но там можно скачать кит и как из кубиков её собирать
[10:21:33] <valexey> свой дистр
[10:21:51] <Kemet> ну так там все исходники присутсвуют
[10:22:55] <valexey> чот я сомневаюсь. url на скачивание?
[10:23:04] <valexey> ты точно с .net microframework не путаешь?
[10:23:19] <Kemet> уу, я года два назад смотрел, хде его щас искать то
[10:23:38] <Kemet> не, не путаю, я под свою тошибу ее собирал
[10:24:07] <valexey> гм. прикольно. надо будет загуглить эту тему
[10:24:08] <Kemet> даже больше года 3 назад было
[10:24:40] <Kemet> ну там надо сначала зарегаться как разработчик, только потом будет доступно, перосто так не скачаешь, да
[10:29:43] <ilov_boris> :D
[11:12:17] <valexey> "test"
[11:12:18] <valexey> test
[11:12:19] <Жаба> valexey, passed
[11:12:33] <valexey> "с дженериками, аннотациями и поэтессами!" ахах
[11:12:38] <valexey> странно
[11:12:48] <valexey> что-то с логами не так.
[11:34:25] <Kemet> valexey: я вот думаю, к какой архитектуре ядра отнести А2
[13:06:35] <valexey> http://www.pcworld.com/article/2047425/intel-bringing-vision-3d-to-laptop-and-tablet-cameras.html
[13:26:21] <Kemet> test
[13:26:21] <Жаба> Kemet, passed
[13:30:09] <valexey> Kemet: думаю к тому же типу что и "ядро" DOS'a :-)
[13:30:39] <valexey> изоляции то нет, так что ВСЯ сиетема со всей прикладухой является ядром :-)
[13:33:19] <Kemet> ядро там четко опроеделяется и отделяется
[13:34:45] <valexey> ну, дык в досе тоже
[13:34:53] <valexey> оно логически отделено, но изоляции нет
[13:35:06] <valexey> а современная терминология ядер предполагает таки изоляцию
[13:35:35] <Kemet> архитектура, конечно, не стандартная, отнести, например к класической модульной системе нельзя, потому что адресное пространство единое и нет перключения режимов процессора, микро и экзо не совсем тоже, гибридное тоже, изза отсутсвия переклюбчений
[13:35:56] <valexey> именно. поэтому - то же что и у доса Ж-)
[13:36:04] <Kemet> ))
[13:36:34] <Kemet> в чингулярити вроде ж тоже единое пространство
[13:36:54] <Kemet> и отсутствие переключений
[13:36:59] <valexey> угу. но возможно там есть мелкое микроядро которое все остальное мыслит как сервис.
[13:37:04] <valexey> микроядро != ядро
[13:37:06] <Kemet> сингулярити
[13:37:12] <valexey> микроядро + сервисы = ядро
[13:37:43] <Kemet> в микроядерной, сервисы работают в режипе юзерспайс
[13:38:55] <valexey> а дос - тоже микроядерная? :-)
[13:39:12] <Kemet> сеорее монолитная
[13:39:18] <valexey> в чем отличие?
[13:39:36] <Kemet> я дос не особо
[13:40:16] <Kemet> монолитная подразумевает, что если и есть сервисы, но они собираются статически
[13:41:40] <valexey> ну, в досе это не так.
[13:41:49] <valexey> драйвера да резиденты собирались независимо от ядра
[13:42:11] <Kemet> но сервисм управления драйверами собирался статически
[13:42:20] <valexey> а линукс - монолит или микроядро? :-) модули ядра там тоже можно загружать и выгружать. они не статически собираются
[13:42:56] <Kemet> ды линукс вроде просто поддерживает две архитектуры
[13:43:08] <Kemet> монолитт и модульное
[13:43:41] <Kemet> как его соберешь, так он и полетит
[13:43:53] <Kemet> не?
[13:44:07] <valexey> насколько я помню, ядра не делят на модульные и монолитные. их ноче делят на микроядро и монолит
[13:44:27] <valexey> так вот, линукс с независимыми динамическими загружаемыми и выгружаемыми модулями ядра считается монолитным ядром.
[13:45:25] <valexey> ибо все это великолепие работает в едином адресном пространстве
[13:46:34] <Kemet> микроядро - частный случай модульного ядра вроде так
[13:47:24] <Kemet> у NT вот гибридное ядро , что тоже частный случай модульного
[14:02:30] <Kemet> ну раз однозначно отнести ядро А2 невозможно к классическим типам ядер, то будет новое - Активное ядро!
[14:03:56] <valexey> :-)
[14:04:00] <valexey> пассивно-агрессивное
[14:04:03] <valexey> !
[14:30:42] <TRUE> <Kemet> valexey: я вот думаю, к какой архитектуре ядра отнести А2
[14:31:08] <TRUE> не микро- (и тому подобные).
[14:32:07] <TRUE> эти типы ядер явно требуют аппаратные возможности по разделению доступа к разным частям компьютера (или хотя бы инструкциям процессора)
[14:33:08] <TRUE> то есть, чуть ли не явно прописывается, что такие ядра работают на процессорах со специфическими возможностями в управлении.
[14:33:51] <TRUE> <valexey> микроядро != ядро
[14:34:30] <Kemet> В А2, вернее в Активном Обероне такие средства(для разделения системы команд( имеются, если при описании ассемблерных команд не указать соответсвующий модификатор, нет возможности использовать привелигированные команды процессора
[14:34:34] <TRUE> есть два понятия, которые на русский переводятся как "ядро". Это kernel и core.
[14:35:08] <TRUE> microkernel = kernel
[14:35:22] <TRUE> microkernel + services = core
[14:35:29] <TRUE> проде бы, так
[14:37:40] <TRUE> Kemet: да, средства разделения есть, но они не аппаратные, а на уровне языка программирования.
[14:39:05] <Kemet> lумаю, что деление ядер не должно зависеть от архитекктуры процессора
[14:42:06] <Kemet> TRUE: видмо kernel = core + services
[14:42:41] <TRUE> <Kemet> lумаю, что деление ядер не должно зависеть от архитекктуры процессора
[14:43:46] <TRUE> ничего не поделать: если хотим виртуальную память, то нужна поддержка аппаратуры, если хотим вытесняющиеся потоки - нужна поддержка аппаратуры.
[14:43:47] <Kemet> Monolithic kernels, which have traditionally been used by Unix-like operating systems, contain all the operating system core functions and the device drivers (small programs that allow the operating system to interact with hardware devices, such as disk drives, video cards and printers). This is the traditional design of UNIX systems.
[14:45:10] <Kemet> TRUE: многозадачные ОС существовали когда в проуессорах небыло средств для непосредственногго управления задачами, да и сейчас такие процессоры есть
[14:45:38] <Kemet> и на них ноомально крутятся многозадачные ос
[14:46:41] <Kemet> ну т.е. аппаратная поддержка это хорошо, но без нее жизнь не останавливается
[14:54:42] <Kemet> конечно, никакая программная защита не сравнится с аппаратной, например, когда DEC портировал свою VMS с VAX-11, в котором было 4 уровня защитыя9режима работы) и VMS это активно использовала, обеспечивая практически непробиваемую защиту, на Alpha, в котором было только два режима(уровня), и осталось только два кольца аппаратной защиты, но устойчивость снизилась незначительно
[14:54:45] <valexey> ядро оси штука такая, по определению зависящая от архитектуры процессора :-)
[14:56:28] <Kemet> valexey: конечно есть зависимые части, куда без этого, но линукс на системах без механизмов управления памятью остается линуксом
[15:19:18] <TRUE> <Kemet> и на них ноомально крутятся многозадачные ос
[15:19:43] <TRUE> какие многозадачные? невытесняющие? :)
[15:20:08] <TRUE> защитыя9режима?
[15:22:40] <Kemet> TRUE: тот же unix на pdp-11 крутится, где например нет аппаратной реализации поддержки задач и их контекстов
[15:24:34] <TRUE> что это за слово?
[15:24:52] <Kemet> какое?
[15:24:55] <TRUE> защитыя9режима
[15:26:33] <Kemet> TRUE: защиты (режима работы)
[15:26:44] <TRUE> а
[15:28:09] <TRUE> >в котором было 4 уровня защиты
[15:28:50] <TRUE> вообще-то общеизвестный факт, что для работы аппаратной защиты любого количества логических колец защиты достаточно 2 аппаратных колец защиты
[15:29:50] <TRUE> в одном кольце работает диспетчер, а все остальные - в другом. Различие всех остальных ведётся по тегу (например, номеру уровняХ
[15:30:00] <TRUE> уровня
[15:33:42] <Kemet> TRUE: ну там было типа 4 кольца защиты - ядра, драйверов, сервисов, пользователских приложений, они отделялись не только логически, но аппаратно, например пользователь не мог обратиться к аппаратуре, и т.д.
[15:34:50] <TRUE> да, это ясно. Двух аппаратных колец для эмуляции четырёх (и более) логических колец защиты достаточно
[15:35:28] <Kemet> для эмуляции да, я ж и говорю - устойчивость системы снизилась незначительно
[15:45:10] <TRUE> >
[15:45:12] <TRUE> >тот же unix на pdp-11 крутится, где например нет аппаратной реализации поддержки задач и их контекстов
[15:45:30] <TRUE> режимы ядра там есть - я только что посмотрел
[15:45:57] <TRUE> поддержка контекстов, соответственно, - тоже есть
[15:46:14] <TRUE> не такая богатая, как сейчас - но есть.
[15:46:30] <TRUE> те же сегменты с данными как-то надо хранить
[15:46:55] <TRUE> разные параллельные задачи тоже как-то различать надо
[15:47:56] <TRUE> если разные потоки могут вытеснять друг друга на этом железе, то поддержка реализована аппаратно
[15:48:49] <Kemet> TRUE: мы говорили не о поддержке режимов ядра/пользователя (которые не везде кстати есть, ана некоторых их есть и 4 разных), а о поддержке многозадачности на аппаратном уровне, т.е. контекстов задач, которых там нет, и нет средств для их управления на аппаратном уровне. нету их там
[15:49:51] <valexey> Kemet: назови тип ядра AO-kernel, и соответственно укажи, что сингулярити построена на таком же типе ядра :-)
[15:51:09] <TRUE> Kemet: поддержка задач аппаратно не принципиальна.
[15:51:09] <Kemet> там есть системный таймер, про прерыванию происходит прогроаммное переключение, т.е. в программной структурезадачи сохраняется текущий контекст выполнения, выбирается из очереди новая задача, программно восстанавливается контекс и происходит передача управления, и всё
[15:51:37] <TRUE> и это не управление задачами? :)
[15:52:17] <Kemet> это программное управление, а не аппаратное, такое на любом проце возможно, без всяких скуперпупер аппаратных манагеров
[15:52:26] <valexey> да, многопоточность вполне реализуется даже на msp430 :-)
[15:52:29] <valexey> реалтаймовенько
[15:52:43] <Kemet> ну так о том и речь
[15:53:01] <valexey> вот если таймеров нет, то тогда беда.
[15:53:17] <Kemet> .что для этого аппаратные средства не сильно нужны, главное был бы, например, таймер и обработака парерываний
[15:53:22] <valexey> тогда только кооперативная многозадачность, ну или поддержку в компилятор втыкать
[15:53:33] <TRUE> while (true) {i++}. Переключи мне этот поток на другой. Без аппаратной поддержки
[15:54:07] <TRUE> таймер - это и есть поддержка
[15:54:20] <valexey> да легко. компилятор понавтыкает переходов и счетчик инструкций :-)
[15:54:36] <Kemet> TRUE: таймер натикает, запустится обработчик прерыаваний, и в итоге переключится, программноо, но аппаратных структур для этого может и не быть
[15:54:56] <valexey> ну, таймер это таки аппаратура
[15:55:03] <Kemet> в pdp-11 их нет, но юникс там пашет
[15:55:04] <valexey> хотя найти проц без таймера сейчас сложновато
[15:55:26] <TRUE> таймер - это и есть аппаратная возможность. И то, что по таймеру вызовется - тоже забито в аппаратуре (переключатель потоков)
[15:55:41] <TRUE> то есть, номер прерывания, там
[15:55:44] <valexey> вектора прерываний, дыа
[15:56:03] <TRUE> или ещё что-то похожее для переключения именно потоков
[15:56:18] <TRUE> а в ОС уже этот номер инициализируют нужным образом
[15:59:46] <TRUE> Так вот: я полчаса назад снял с полки Таненбаума и убедился, что для микроядерности нужен режим ядра (превилигированный режим), режим пользвателя и клиент-серверная архитектура (все друг другу шлют сообщения). Это идея микроядра. И она включает необходимость использования как минимум двух колец защиты.
[16:01:20] <TRUE> а изюминка по-настоящему модульных систем в том, что для работы монолитно или микроядерно не надо переписывать код (за исключением загрузчика модулей, наверно).
[16:03:44] <TRUE> по тому же Танненбауму получается, что модульные системы не являются и монолитом: в монолите любая процедура может обратиться к любой другой процедуре, а модули используют инкапсуляцию.
[16:06:24] <TRUE> и, наконец, по тому же Танненбауму, экзоядро не является частью ОС, а служит для целей виртуализации. Но если на ней построить ОС, то можно создать поддержку зелёных потоков на уровне ОС
[16:09:57] <Kemet> TRUE: мы все же говорили про аппаратное управление задачами, которое требует наличия специальных структур как минимум, смотри например i386 TSS
[16:28:59] <TRUE> если ОС однопоточная, то аппаратное переключение задач не принципиально. Но если есть вытесняющие потоки, то как без аппаратной поддержки задач работать - я не понимаю. Не могу придумать. Но с другой стороны, разговор про задачи я не начал, а лишь поддержал своим мнением. А начали мы с того, что я сказал про необходимость аппаратной поддержки разных режимов работы процессора для микроядра. Микроядро - это способ повысить надёжность ОС и не допустить уничтожение цивилизации любым дятлом. Такая необходимость возникла потому, что большинство разработчиков ОС того времени (да и сейчас) писали на си. В А2 не используют разные режимы ядра, а используют другие способы защиты.
[16:38:12] <Kemet> без аппаратной поддержки задач, все структуры копируются программно, дело только в эффективности, ну и желательна поддержка механизмов, обеспечивающих атомарность таких действий, чтобы не получить сюрпризов. В ПДП-11 это можно обеспечить, запретив прерывания и подняв приоритет выполнения команд до максимума
[16:39:00] <Kemet> приоритет процессора
[17:42:49] <vlad2> /me начинает понимать почему веб разработчики так ненавидят IE. Сделал поддержку IE8.
[17:43:24] <vlad2> Кстати, оно там еще и тормознее в 10 раз :)
[17:43:41] <vlad2> Так что BB может соревноватьсья :)
[17:45:58] <valexey> :-)
[17:46:23] <valexey> ну, восьмерка это уже раритет таки
[17:46:34] <valexey> ориентироваться лучше на 10ку. вынь8 на десятке
[17:46:46] <valexey> и нативные приложения на js по сути под десятку и пишутся
[17:47:45] <valexey> vlad2: походу твой компилятор может быть полезен info21 :-) http://forum.oberoncore.ru/viewtopic.php?f=34&t=4462
[17:49:04] <vlad2> Просто у меня на нетбуке (где я и пишу компилятор, обычно лежа на диване) - стоит XP. Так что было дело принципа :)
[17:51:26] <TRUE> а может лучше сделать 3 ветки в репозитории? Быстрая (без ие), ие10, ие8.
[17:52:02] <vlad2> Оно тормознее только на IE.
[17:52:37] <TRUE> а
[17:53:02] <vlad2> Ветки пока нет смысла делать - там точечные фиксы. Просто ловить их было долго и нудно по причине дебильной жабаскриптовой философии "херня? фиг с ней, поехали дальше".
[17:53:54] <valexey> js тут похож на асм :-)
[17:53:59] <vlad2> Кроме того, после избавления от bind - стало даже быстрее :)
[17:54:01] <valexey> он вообще во многом на асм похож :-)
[17:54:51] <valexey> столь же гибок и хакабелен, и столь же убог для нормальной разработки
[17:55:10] <valexey> особенно в случае рефакторинга :-)
[18:14:56] <vlad2> Жесть какая: http://www.vesti.ru/doc.html?id=1122443
[18:23:07] <valexey> это точно
[18:32:01] <valexey> сегодня тестировался на английский
[18:32:10] <valexey> уровень выясняли мой, ога. перед началом курсов
[18:32:26] <valexey> чо-то какое-то хреновое тестирование - банально тест письменный на времена и формы глаголов
[18:32:34] <valexey> устный никак не тестировали
[18:33:23] <valexey> по моей имхе, результат письменного такого теста слабо будет коррелировать с устным английским
[18:35:30] <vlad2> ДА у меня по тестам тоже все нормально было еще как приехад. Толку-то... :)
[18:36:15] <vlad2> Причем по их же тестам в их же школе для иностранцев.
[18:36:54] <vlad2> Но я походил годик. Речь послушал.
[18:46:53] <valexey> ну, слушать мало. надо еще и говорить с кем-то
[18:47:00] <valexey> а вот с этим тут, в россии, напряженка
[18:49:06] <vlad2> Угу.
[18:53:22] <valexey> ваще я свой уровень оцениваю ниже чем у пятилетнего ребенка (носителя языка)
[18:53:37] <valexey> при этом я уверен, что тест я прошел лучше чем даже семилетний ребенок :-)
[19:20:25] <vlad2> А вот какой алгоритм есть сатндартный для объединения контейнеров элементов с разделитемлям элементов? Т.е. alg(containers, element) -> container
[19:22:23] <TRUE> где?
[19:22:30] <vlad2> В общей практике.
[19:22:37] <TRUE> в js?
[19:23:01] <vlad2> Вот, например есть похожий join, но он работает с уже плоскирми элементами.
[19:23:10] <vlad2> Не, мне название нужно :)
[19:23:38] <TRUE> reduce
[19:23:45] <vlad2> join(elements, element) - > e1, element, e2, element, e3
[19:23:50] <TRUE> fold
[19:24:07] <vlad2> Да, fold это похоже
[19:24:20] <TRUE> в js он называется reduce
[19:25:19] <vlad2> Только мне надо наоборот. unfold :)
[19:25:24] <vlad2> C разделителем :)
[19:25:43] <valexey> свертка это немного другое все же
[19:25:48] <TRUE> а, есть строка с разделителями, а надо чистый список?
[19:25:48] <valexey> там функция произвольная
[19:26:27] <vlad2> Список списков, а нао один список с разделителями
[19:27:06] <vlad2> Ну или для начала просто список из списка списков.
[19:37:33] <Kemet> test
[19:37:34] <Жаба> Kemet, passed
[19:38:36] <vlad2> Хрен с ним, написал цикл :)
[19:41:55] <valexey> vlad2: правильный цикл?
[19:41:58] <valexey> :-)
[19:42:25] <vlad2> Нет конечно. Там как раз правильный - это ЦД ;)
[19:42:37] <vlad2> Проход по контейнерам + втсавка разделителя.
[19:42:49] <valexey> гы
[19:43:25] <vlad2> Можно подкинуть на форум, а то давно уже циклов не было :)
[19:44:24] <valexey> Ж-)
[19:46:44] <vlad2> Тем более теперь есть компилятор, в котором есть ЦД :)
[19:50:28] <valexey> :-)
[19:51:27] <vlad2> Т.е.: PROCEDURE do(input: ARRAY OF ARRAY OF INTEGER; separator: INTEGER);
[19:51:45] <vlad2> Блин. Даже аутпут нормальный не запилить.
[19:51:54] <vlad2> Динамических массивов нет.
[20:00:01] <vlad2> Постнул ;)
[20:05:21] <vlad2> Причем даже в виде массива 999 аутпут не сделать - получится что массив полупустой и LEN будет врать.
[20:06:38] <vlad2> Т.е. даже ниже по стэку такой аутпут нормально не передать - надо отдельно получившуюся длину тащить.
[21:13:02] <valexey> чорные боксёры открыли для себя автокомплит
[21:13:10] <valexey> не прошло и десяти лет :-)
[21:22:15] <vlad2> :)
[21:22:55] <vlad2> некошерно. программер должен страдать. иначе это не тру-оберон.
[21:23:08] <valexey> :-)
[21:34:15] <vlad2> Как по анлглийски сказать "веками накопленное говно мамонта"?
[21:35:07] <vlad2> Но чтоб прилично.
[21:36:10] <vlad2> "unnecessary stuff" не отражает всей сути :)
[21:37:19] <jordan36957> Как в С++ работать с папками? Только dirent не предлагать.
[21:37:48] <jordan36957> Может класс какой есть.
[21:38:16] <valexey> vlad2: ну, легаси же
[21:38:21] <vlad2> стандартных средств нет
[21:38:25] <valexey> legacy stuff
[21:38:37] <vlad2> может boost::filesystem допилили - не смотрел
[21:38:41] <valexey> tons of legacy stuff
[21:38:51] <vlad2> О. Да. Так лучше.
[21:39:40] <vlad2> jordan36957: процедура примерно такая: если нет в стандарте -> смотрим boost -> ищобретаем велосипед
[21:39:51] <valexey> jordan36957: http://linux.die.net/man/3/mkdir
[21:39:54] <valexey> :-D
[21:42:07] <vlad2> jordan36957: на винде не будет работать, не слушай его :)
[21:42:27] <jordan36957> Да я понял.
[21:43:27] <valexey> ну, ок. system("mkdir mydir");
[21:43:30] <valexey> :-D
[21:51:47] <jordan36957> Походу на оберкоре "оттепель". Типа как в хрущёвские времена. :-) Подсветка, авто комплит.
[21:52:24] <jordan36957> *Хрущёвские
[22:14:22] <valexey> угу.
[22:14:48] <valexey> выпендриваются перед буржуями видать :-)
[22:18:11] <valexey> Кстати, факт что Олег успешней всего с буржуями взаимодействует.
[22:18:48] <jordan36957> Прорубает окно в европу. :-)
[22:19:58] <valexey> Довольно успешно, замечу. То есть на его форуме они вполне общаются. Это не те буржуи что в рассылке, вроде бы, но тем не менее.
[22:24:42] <jordan36957> На оберкоре его давно не видно. Тоже вопрос. Ему могли выделить раздел на форуме. Но он сделал свой сайт. К чему бы... Тоже не выдержал пропаганды. :-)
[22:27:43] <jordan36957> По моей логике, если бы я был модеротором форума оберкор. Я бы всех оберонщиков, приглашал на сайт, то есть каждому проэкту свой раздел. Пример Кемету раздел по АОС, А2, Олегу с его компилятором и т.д Некое централизовонное сообщество. Вроде rsdn.
[22:29:43] <valexey> ну, судя по множеству пустующих разделов на сайте zx.oberon - Олег так и пробует.
[22:37:56] <jordan36957> Хех.
[22:37:58] <jordan36957> Любые настоятельные рекомендации (почему-то) оскорбляют наших зарубежных коллег...
[22:38:21] <jordan36957> Не привыкли они так. :-) Мягше к ним надо. :-)
[22:38:32] <jordan36957> http://forum.oberoncore.ru/viewtopic.php?f=1&t=4460#p81988
[22:38:59] <valexey> ну дык а с фигали им вылезать из мыллиста и регаться на левом форуме на непонятном языке?
[22:39:11] <valexey> зачем форум вообще, когда мыллист есть?
[22:39:39] <valexey> развитие ядра линукса координируется через мыллист, модула-3 тоже. так почему ББ должен координироваться иначе?
[22:39:58] <jordan36957> Незнаю.
[22:40:15] <jordan36957> Думаю не нужен или можно обойтись без него.
[22:40:22] <valexey> по сути, это просто прихоть оберонкоровцев
[22:42:48] <valexey> есть общее интернациональное место - мыллист, где обсуждаются вопросы, и где единожды опубликованное остается на всегда у каждого из участников. а тут какие-то выскочки пытаются перетянуть одеяло на себя. причем так, чтобы они могли (через админку) менять, перемещать и модифицировать сообщения.
[22:43:09] <valexey> Да еще и эти выскочки - чуждые по менталитету и языку.
[22:43:32] <jordan36957> Тогда лучше у своих проповедовать. :-)
[22:44:43] <TRUE> вот, как в js объединить список списков в список.
[22:44:49] <TRUE> function pushAll(a, donor){a.push.apply(a, donor); return a}
[22:45:45] <TRUE> а через разделитель вывести - это нужна функция listJoin
[22:45:54] <TRUE> function pushAll(a, donor){a.push.apply(a, donor); return a}
function pushTo(item, list){list.push(item); return list}
function mkPushDelim(d){return function(a, i){a.push(i, d); return a}}
function splitItems(list, pushDelim){return list.reduce(pushDelim, [])}
function listJoin(containers, delim) {
var a = containers.reduce(pushAll, []);
return pushTo(a.pop(), splitItems(a, mkPushDelim(delim)));
}
[22:51:13] <TRUE> или ещё так можно
[22:51:28] <TRUE> function pushAll(a, donor){a.push.apply(a, donor); return a}
function mkPushDelim(d){return function(a, i){a.push(i, d); return a}}
function listJoin2(containers, delim) {
var list = a.reduce(pushAll, []).reduce(mkPushDelim(delim), []);
list.pop();
return list;
}
[23:31:41] <vlad2> TRUE: давай на O7 ;)
[23:31:53] <vlad2> На жабасскрипте все могут ;)
[23:32:17] <TRUE> а где это вообще надо? В компиляторе?
[23:41:34] <vlad2> Да нет, я ж на работе :)
[23:44:28] <TRUE> Оберон - строготипизированный язык. цифры перемешивать с "разделителями" просто так не получится.