[03:58:14] <jordan36957> Влад, хотел спросить.
[03:58:40] <jordan36957> Возможно ли сделать онлайн уроки по 07? Как я вижу.
[03:59:20] <jordan36957> Открывается компилятор. Ниже уроки по главам. При открытии главы открывается компилятор с набранным текстом, урока и комментариями.
[03:59:52] <jordan36957> Можно читать, и сразу в онлайне компилировать и видить лог.
[04:01:55] <jordan36957> Я могу взять, примеры из книги Песни о Паскале, она как раз распространяется по свободной лицензии. Естественно переделать код под 07.
[04:02:12] <jordan36957> Или свои набацать. :-)
[07:24:40] <valexey_> jordan36957: возможно. делай. выложу. ну или сам выложи куда-нибудь :-)
[08:18:48] <valexey_> Нокия всё: http://habrahabr.ru/post/192328/
[10:43:31] <valexey> vlad2: я там еще багу отловил :-)
[10:43:43] <valexey> точнее расхождение с репортом
[14:17:09] <valexey> Блин. Боль, страданья, униженье - ну зачем Вирт запретил присваивать процедурным переменным локальные, вложенные процедуры?
[14:17:19] <valexey> Ну вот какой в этом смысл?
[14:17:51] <valexey> Лишь затем чтобы не думать про то, как они будут к локальным переменным обращаться?
[14:26:41] <valexey> Блин. Чтобы писать приложения под iOS 7 нужно ставить XCode 5,  а чтобы ставить XCode 5 нужно апгрейдить OS X как минимум до 10.8 или 10.9. Люблю Apple!
[14:26:45] <valexey> ГАДЫ!
[14:26:59] <valexey> мне теперь что, регулярно раз в год покупать свежую версию их оси?!
[15:03:16] <TRUE> а ты себе мак купил?
[15:03:36] <valexey> нет. я на нем работу работаю
[15:03:52] <TRUE> а компания не покупает ось сама?
[15:04:14] <valexey> автоматом - нет. покупаешь сам, потом деньгу возвращают (когда-нибудь :-) )
[15:04:47] <TRUE> а чей тогда аккаунт, на котором приложения выкладываются?
[15:04:48] <valexey> но фиг с ними, с 600 рублями. Новая ось грозит мне полным перетряхом содержимого винта. Ибо на текущий раздел оно не поместится
[15:04:58] <valexey> В данном случае - мой :-)
[15:26:10] <valexey> эхъ, багов привалило... :-)
[15:26:32] <valexey> чем ближе к релизу, тем больше народ начинает пользоваться компилятором, тем больше багов обнаруживается :-)
[16:03:23] <Kemet> 1
[16:03:33] <valexey> !
[16:06:53] <Kemet> захотелось мне для фотки фотошопную рамку, насал касчать - около гигаЖ, блин, 50-т слоёв, и на каждый слой полноразмерные картинки, хотя там маленькая область используется, типа цыетка, и т.п. блин, обленились дизайнеры, не хотят обрезать лишнее, замазывают и все
[16:57:46] <vlad2> valexey: баг #15 с наскоку не осилил - надо рефакторить (боль и страдания на жабаскрипте)
[16:59:08] <vlad2> Я, кстати, пока над ним думал выяснил для себя (в конце концов) какое может быть реальное практическое примение жабскриптового долбанутого прототипного наследование.
[17:00:47] <TRUE> и?
[17:00:50] <vlad2> У тебя есть _существующий_ объект. Иммутабельный (по смыслу). Но тебе надо чуть его подрихтовать. Т.е. сделать некую прокси, которая будет редиректить все к оригинальному объекту за исключением какого-то свойства.
[17:01:31] <vlad2> И, соответсвенно, передать такую прокси тому, кто ожидает оригинальный объект.
[17:01:54] <vlad2> Вот тут можно задействовать эту жабаскриптовую херню.
[17:01:55] <TRUE> А такое проканает с глобальными объектами? То есть, я смогу себе в локальную область видимости скопировать, скажем, String или Array?
[17:02:05] <vlad2> Правда синтаксически все равно все будет выгляеть страшно.
[17:02:22] <TRUE> например, добавив или изменив какой-то метод
[17:03:22] <vlad2> function makeProxy(original){ function Proxy(){this.overridePoperty = function(){...}; } Proxy.prototype = original; return new Proxy(); }
[17:03:34] <vlad2> Вот.
[17:03:44] <vlad2> (праввда мне в компиляторе оно не помогло :)
[17:03:51] <vlad2> Но работает как я описал.
[17:04:24] <vlad2> Да, такое буцдет работать со всем.
[17:04:58] <vlad2> Например, ты можешь поменять length у массива. А в остальном использовать как массив.
[17:05:19] <vlad2> Области видимости тут не причем.
[17:06:08] <vlad2> function makeProxy(original){ function Proxy(){this.length = 123; } Proxy.prototype = original; return new Proxy(); }
[17:06:17] <vlad2> var arr = [];
[17:06:30] <vlad2> var arr2 = makeProxy(arr);
[17:06:38] <vlad2> arr2.length == 123;
[17:06:48] <vlad2> arr.length == 0
[17:07:14] <vlad2> (dj всем остальном arr и arr2 одинаковы)
[17:07:38] <vlad2> arr2 instanceof Array
[17:07:41] <vlad2> И т.д.
[17:08:06] <TRUE> То есть, так работает и с самим Array, да?
[17:08:39] <vlad2> Все. Попытки назвать эту "фичу" ООП и т.п. - чистой воды профанация :)
[17:08:53] <vlad2> Да.
[17:09:22] <TRUE> Я могу скопировать себе глобальную функцию Array?
[17:09:25] <TRUE> А уд
[17:09:35] <TRUE> *удалить существующее свойство?
[17:09:46] <TRUE> или метод
[17:10:55] <vlad2> Можешь. Но там уже есть нюансы.
[17:11:29] <vlad2> В новых жабаскриптах можно ваставить свойству свойство неудаляемости.
[17:14:29] <vlad2> Кстати, такое "проксирование" делается на том же питоне без проблем. При том, что там нормальное ООП :)
[17:15:01] <TRUE> а разве там не прототипы?
[17:15:31] <vlad2> Короче я остаюсь при своем мнении - у чувака "это" придумавшего банально было искаженное представление о сути наследования в ООП :)
[17:15:47] <vlad2> В питоне все хорошо.
[17:16:10] <TRUE> > искаженное представление о сути наследования в ООП
согласен : )
[17:18:48] <vlad2> valexey: какое состояние лексера?
[17:35:40] <vlad2> jordan36957: да, я тоже думал, что онлайн клмпилятор идеально подходит для интерактивных онлайн уроков.
[17:37:48] <vlad2> valexey: это ты еще не пытался ставить 10.7 на комп с 10.5 ;)
[18:43:21] <valexey> vlad2: черт с ним, с состоянием. :-)  15 баг это который с неверной кодогенерацией?
[18:43:35] <vlad2> Да.
[18:44:34] <valexey> жуть. мерзкий баг
[18:45:05] <vlad2> Там в месте генерации не нет нужного контекста - его надо протаскивать как-то.
[18:45:12] <мистический_олень> дарова лабухи
[18:45:37] <мистический_олень> надо мне в сист. программинг джобы искать
[18:45:48] <мистический_олень> поближе к машкоду чёнить
[18:46:02] <valexey> мистический_олень: Yo, nigga!
[18:46:12] <мистический_олень> ща одну вакансию просмотрел
[18:46:13] <мистический_олень> в мск
[18:46:24] <мистический_олень> кину им резюм
[18:46:51] <valexey> vlad2: я глянул компилетор и как-то слегка в контекстах этих запутался нафиг. контекст на контексте сидит и контекстом погоняет. фиг знает где какой :-)
[18:47:16] <vlad2> Да, оно усугубляется динамической типизацией.
[18:47:38] <vlad2> Иерархия контектов отражает иерархию грамматики.
[18:48:04] <vlad2> (но я про жругой контекст говорил применительно к баге)
[18:48:05] <valexey> многократно усугубляется. то есть просто читая исходники разобраться очень сложно. надо будет под дежукером погонять.
[18:48:16] <мистический_олень> деклопером
[18:48:25] <мистический_олень> под клоподавкой
[18:48:35] <valexey> под дихлофосом :-)
[18:48:36] <мистический_олень> мухобойка
[18:48:53] <valexey> "весь день под дихлофосом сидел!"
[18:49:00] <vlad2> Есть еще такой способ: комментить что непонятно и смотреть на упавшие тесты :)
[18:49:04] <мистический_олень> токсикоманы
[18:49:07] <мистический_олень> хреновы.
[18:49:49] <vlad2> (серьезно, я так делаю)
[18:50:05] <valexey> разработка на js - бессмысленная и беспощадная!
[18:50:57] <vlad2> Угу.
[18:51:16] <valexey> vlad2: а какой контекст ты имеешь ввиду? я тот который у тебя в коде context зовется. я именно в них запутался :-)
[18:51:52] <vlad2> Тот, который в коде - это context парсинга, он тоже контекст.
[18:52:04] <valexey> ААА!!!
[18:52:11] <valexey> /me бьется головой об стену
[18:52:21] <valexey> Контекст на контексте который тоже контекст!
[18:52:26] <vlad2> А я про контекст откуда тип пришел (импортированный модуль). Вот его нет. Поэтому надо рефакторить.
[18:53:07] <vlad2> Да ладно. Просто обычно для контекста можно придумать более специализированное и понятное имя.
[18:53:20] <valexey> Походу таки надо на Обероне переписать будет :-) Может удастся придумать как это сделать по человечески :-)
[18:53:53] <vlad2> Без темплейтов там бцудет грустно.
[18:54:15] <valexey> ты про библиотеки контейнеров?
[18:55:56] <vlad2> Да не, вообще. Те же контексты - там можно было что-то generalize.
[18:57:00] <Kemet> убивцы жабаскрипта
[19:00:11] <valexey> на самом деле мы спасаем жабаскрипт - загоняем его обратно в ту нишу где он себя хорошо чувствует, то есть в скриптовую нишу, где требуется писать ну 10-20 строчек кода, не более.
[19:02:49] <Kemet> жабаписатели вам не простят!
[19:05:45] <valexey> джихад объявят? :-)
[19:07:26] <Kemet> угу, вообще запретят употребление оберона, даже в малых количествах, даже на ночь
[19:07:44] <jordan36957> http://vodvore.net/prikols/prikol00434.jpg :-)
[19:08:06] <valexey> :-D
[19:08:07] <jordan36957> процесс уже пошёл.
[19:08:36] <valexey> на самом деле на том же хабре большое сообщество фанов жабаскрипта
[19:08:44] <valexey> интересно как там на такое отреагируют :-)
[19:08:55] <jordan36957> Фаны есть всегда.
[19:09:08] <NEW> Отреагируют на что? На отключение?
[19:10:21] <Kemet> фаны есть всегда, это да, но когда они проникают в разные инетпроекты и начинают там выдавать свой иллюзорный мип за реальность ... вот это действительно страшно
[19:10:50] <valexey> на oberonjs для приложений в браузере
[19:11:50] <Kemet> *мип - мир
[19:12:40] <jordan36957> <valexey> на oberonjs для приложений в браузере Скажут pascal какашка и всё останется на своих местах. :-)
[19:13:35] <valexey> :-)
[19:15:31] <valexey> на самом деле, примитивизм Оберона может сыграть в плюс. В случае если мы хотим (а мы хотим!) попробовать спарку простой язык + богатое окружение (IDE и тулзы).
[19:16:03] <jordan36957> Кемет, разве веб программисты сотрудничают с нативными? Куда они лезут?
[19:16:25] <valexey> В частности за счет простого синтаксиса вполне можно будет сделать редактор для всяких iPad и прочих планшетников. Набирать код без клавиатуры практически.
[19:16:45] <valexey> jordan36957: ну например они сервера порываются писать
[19:16:51] <valexey> десктоп приложения
[19:17:03] <valexey> *и десктоп приложения
[19:17:39] <jordan36957> Ядер с каждым годом больше, озу растёт, думаю это реально.
[19:18:00] <jordan36957> Но вот без типизации печально.
[19:19:00] <valexey> ты учти, что сейчас не 2000 год. сейчас компы от розетки не питаются в основном
[19:19:22] <valexey> сейчас все на батарейках. и штука вся не в производительности а в потреблении
[19:19:54] <jordan36957> Уже есть 8 ядерные смартфоны. Куда девать эту мощь? Тратить на интерпритацию. :-)
[19:20:27] <valexey> желательно всю эту мощь загнать в глубокий sleep
[19:20:37] <valexey> иначе оно выжрет весь заряд батарейки за полчаса
[19:22:30] <jordan36957> это да. На мобильниках правит java.
[19:22:47] <valexey> на мобильниках, на самом деле, правит native code
[19:22:50] <valexey> c++/c
[19:22:58] <valexey> берем iPhone - нет там жабы вообще
[19:23:05] <valexey> берем игры для андроида - это c++
[19:23:25] <valexey> берем winphone - там c#/c++/js
[19:23:58] <valexey> про программирование: http://habrahabr.ru/post/192396/
[19:27:21] <jordan36957> Может статью на хабре о 07 написать. И дать ссылку на онлайн компилятор. И почитать отзывы. :-)
[19:27:49] <jordan36957> Такое в планах есть?
[19:32:30] <valexey> на голый компилятор не имеет смысла ссылку давать. у народа не хватит фантазии представить что из этого может вырасти
[19:32:59] <valexey> чем больше аудитория, тем больше с ними надо как с детьми
[19:33:14] <valexey> что-нибудь красивое показать, с анимацией там. картиночки.
[19:34:37] <jordan36957> Это да. Ещё нужно показать чем 07 лучше js. Вроде колонки с сравнением.
[19:36:30] <jordan36957> Как ещё объяснить, что в 07 строгая типизация. И носорога со слоном не скрестить? в js привыкли, объявил переменную, и пхай куда хочешь.
[19:36:52] <jordan36957> присваивай как хочешь.
[19:38:43] <jordan36957> расширенных поддержкой статической типизации и обеспечивающий полную поддержку Node.js и MongoDB.
[19:39:01] <valexey> ну, например за счет статической типизации у нас будет нормальный автокомплит, а не как в js
[19:39:57] <valexey> эта штука не простая :-) так что нет, оно ортогонально нашему направлению. это лишь компилятор + биндинги
[19:43:42] <jordan36957> Понял.
[19:45:19] <vlad2> Да, я глянул - монстр еще тот.
[19:45:30] <vlad2> С сомнительным языковым сахаром.
[19:46:19] <Kemet> грёбаный турбобит
[19:47:40] <vlad2> Судя по этому коду статическая типизация там весьма опциональна:
[19:47:43] <vlad2> function createUser(username, password) {
 match (findUser(username)) {
 case {none}:
   user =
     { username: username
     , fullname: ""
     , password: Crypto.Hash.sha2(password)
     };
   saveUser(user);
 default:
   displayMessage("This username exists");
 };
 Client.goto("/login");
}
[19:48:13] <jordan36957> Как заюзать в 07 Math.random?
[19:48:25] <vlad2> JS.Math.random
[19:48:53] <jordan36957> Просто подставлять, ок.
[19:50:51] <vlad2> Хотя они заявляют "Opa checks the types at compile time, which means that no type error can happen at runtime."
[19:51:18] <vlad2> "Opa compilers automatically infers the types"
[19:55:48] <jordan36957> PROCEDURE RandomRange(x, y: INTEGER): INTEGER;
BEGIN
 RETURN JS.Math.Random * (x - y) + y;
END;
[19:55:56] <jordan36957> line 9: operator '*' type mismatch: numeric type expected, got 'ANY'
[19:56:11] <jordan36957> Несоответствие типов.
[19:56:17] <jordan36957> Как тогда?
[19:56:17] <vlad2> На самом деле нормально заюзать "JS.Math.random" не получится, потому что компилятор не в курче возвращаемого значения random.
[19:56:36] <jordan36957> Ну ладно, обойдусь.
[19:56:41] <vlad2> VAR r: REAL;
[19:56:54] <vlad2> JS.do("r = Math.random()");
[20:01:45] <jordan36957> как размер массива узнать?     JS.alert(Length(S)); не робит.
[20:01:54] <jordan36957> Передавать явно?
[20:03:14] <vlad2> LEN(S) ?
[20:03:26] <vlad2> Откуда Length dpzkjcm&
[20:03:30] <vlad2> взялось
[20:04:02] <jordan36957> Я забыл, и здесь Вирт сократил.
[20:09:27] <valexey> vlad2: может у них там вывод типов?
[20:10:03] <vlad2> Да, они так говорят.
[20:10:24] <vlad2> Мне интересно насколько далеко он работает. При том, что это явно не хаскель.
[20:11:39] <vlad2> Или вот, например: function(x){return x.f();}
[20:12:41] <vlad2> Оно реально будет чекать, что у x есть метод f и выводить тип результата?
[20:13:22] <valexey> угу по идее.
[20:13:37] <valexey> это ж камловые ребята делали. они любят вывод типов :-)
[20:13:53] <vlad2> Т.е. и массивы у них типизированные?
[20:14:07] <valexey> по идее, да
[20:14:08] <vlad2> Тогда где-то должны быть явные касты.
[20:14:16] <vlad2> (я не видел)
[20:14:36] <valexey> зачем касты? где касты?
[20:16:41] <valexey> ну, в любом случае еще kotlin есть, который тоже статически типизирован
[20:16:59] <valexey> http://kotlin.jetbrains.org/
[20:17:23] <valexey> но они все не про то что мы делаем :-) они концентрируются обфиченном языке
[20:17:30] <vlad2> Ну в смысле?
[20:17:38] <vlad2> Например:
[20:18:19] <vlad2> function make(){ return userInput() ? new X() : new Y(); }
[20:18:28] <vlad2> f(make());
[20:18:52] <vlad2> У X есть метод f() у Y - нет.
[20:19:34] <valexey> эмм.. да фиг знает
[20:19:34] <vlad2> Очевидно должна быть возможность привести тип к X перед вызовом f.
[20:24:20] <valexey> лениво мне разбираться в этой радости :-)
[20:26:12] <valexey> "Unlike C or Java, you don't have to annotate types yourself as Opa features almost complete type inference."
[20:26:37] <valexey> но анотации типов там есть:
[20:26:41] <valexey> int function foo(string s) {
  String.length(s);
}
int function bar(string x, int y) {
  foo(x) + y;
}
[20:28:11] <valexey> ыыы! мейкфайлы!
[20:28:16] <valexey> https://github.com/MLstate/opalang/wiki/Hello%2C-chat
[20:28:23] <valexey> не, нафиг таки :-)
[20:28:53] <vlad2> Дальше можно не смотреть ;)
[21:02:58] <valexey> ЫЫЫ! http://forum.oberoncore.ru/viewtopic.php?f=62&t=4478&p=82175#p82175
[21:03:10] <valexey> "Уверен, что через некоторое время подавляющее большинство преподавателей станут учить алгоритмике с помощью ДРАКОНа."
[21:03:24] <valexey> "не исключено, что подавляющее большинство преподавателей начнут использовать обучение алгоритмике на основе ДРАКОНа через три - пять лет."