[00:48:40] <vlad2> Блин. Еще одна бага на race condition. А книжуц от simple так и не прочитал еще.
[00:59:44] <valexey> какую?
[01:00:25] <TRUE> ewd
[01:00:33] <TRUE> одну из публикаций его
[01:02:20] <valexey> э?
[01:03:01] <TRUE> одну из публикаций Дейкстры
[01:05:01] <TRUE> Помнится, ты покупал планшет?
[01:09:24] <valexey> нет, у меня и так есть рабочмй йпад и самсунговый гэлэкси таб 10
[01:09:50] <TRUE> графический
[01:10:20] <valexey> а, да. этот да
[01:10:49] <TRUE> всё ещё пользуешься? Полезная вещь?
[01:11:34] <valexey> я - нет. а наш дизайнер - да
[01:11:59] <valexey> у меня же ноуты,  с ноутом дико не удобно
[01:12:00] <TRUE> то есть, её сложно применить простому программисту?
[01:12:04] <TRUE> а
[01:12:23] <TRUE> а что за модель?

[01:13:32] <valexey> wacom bamboo pen&touch
[01:13:51] <TRUE> размер а5?
[01:14:32] <valexey> вроде да
[07:08:14] <Kemet> TRUE: да, видимо вариант с вызовом виртуального метода - самый простой. проблема только в том, что в оберонах все методы являются виртуальными, но в активном обероне у метода есть модификатор abstract? [jnz ctvfynbrf tuj yt ljjghtltktyf tot? yj levf.? xthtp f,cnhfrn vj;yj gjghj,jdfnm? n/t/ tckb vjlbabrfnjh cnjbn? pyfxbn gjnjvjr j,zpfy tuj htfkbpjdfnm? bkb nfr;t gjcnfdbnm vjlbabrfnjh
[07:09:52] <Kemet> abstracn, хотя семантика его недореализована, но думаю именно его можно использовать - если метод объявлен с таким модификатором, то должен бять переопределен в наследнике или также помечсен как абстрактный
[07:11:16] <Kemet> а для фиксации переопределения есть модификатор final - он не позволяет переопределять такие методы, и этот модификатор нормально работает
[07:12:00] <Kemet> вобщем, курочить компилятор не придется, только abstract допилить
[07:13:29] <Kemet> хотя поведение такого абстрактного" метода несколько нестандартно - у него может быть реализация, и его можно всегда вызвать (все методы же виртуальные)
[10:35:35] <Kemet> %
[12:34:17] <Kemet> задолбали некоторые типарегистраторы, уже какой раз, присылают "коммерческие предложения" купить в зоне ru домен с именем моего домена, находящегося например в зоне su /И откуда узнают, если там приватеперсон и никаких данных. на лесоповалы всех
[13:53:57] <vlad2> valexey: ссылки под рукой нет. типа он прочитал и решил все свои проблемы :)
[13:54:59] <valexey> гы
[13:57:02] <valexey> vlad2: как там баги? не дошли руки?
[13:59:31] <vlad2> Я там ковырнул насчет строгих кастов - вылезла еще парочка багов. Может на выходных ковырну.
[13:59:39] <valexey> ok
[13:59:56] <valexey> vlad2: а что на счет экспорта указательный типов?
[14:00:05] <valexey> тот самый баг что на гитхабе мною заведен
[14:00:20] <valexey> сий баг не позволяет некоторые биндинги сделать красиво
[14:01:10] <vlad2> Это все из той же оперы - было такое понимание, что экспорить указательные типы в принципе не надо.
[14:01:55] <vlad2> (потому что создается/кастается всегда реверенснутый тип)
[14:02:56] <valexey> эээ.. а как без этого opaque-типы делать?
[14:03:16] <valexey> то есть БЕЗ возможности копирования по значению
[14:04:05] <vlad2> Я имел ввиду "экспортировать" с точки зрения жабаскрипта.
[14:04:35] <vlad2> (в генерирукм коде экспорт не нужен)
[14:05:34] <vlad2> Так. Надо кофе.
[14:06:16] <valexey> не понял. экспорт определен на уровне ЯП Оберон-07. У нас модулей несколько. Таким образом, с точки зрения программиста, он не видит js вообще, он чисто в Обероне работет. И из одного модуля он не может достучаться до экспортированного указательного типа другого модуля.
[14:06:26] <valexey> Это, очевидно, какой-то непорядок :-)
[14:06:45] <valexey> То есть на этом уровне программисту пофиг что там внизу - js или нативный машкод, или jvm или что-то там еще.
[14:13:01] <vlad2> Достучаться может. С точки зрения жабаскрипта ему для этого не надо return {PointerType: pointerType};
[14:13:43] <valexey> э? не понял, как? как до типа достучаться?
[14:14:05] <valexey> MODULE A;
TYPE AA* = POINTER TO RECORD END;
END A.

MODULE B;
IMPORT A;
VAR a : A.AA; (* error, identifier 'AA' is not exported by module 'A' *)
END B.
[14:14:21] <valexey> Вот, модуль B не может достучаться до указательного типа из модуля А
[14:15:07] <vlad2> Это просто бага. В генерируем коде этот идентификатор все равно никак не используется.
[14:15:13] <vlad2> не использовался
[14:15:31] <vlad2> теперь надо - потому что он может быть в тайпгарде.
[14:16:10] <valexey> Ну вот просто багу бы поправить :-) Потому, что у меня есть потребность в opaque-типах.
[14:16:28] <vlad2> Ну конкретно эту там просто должно быть.
[14:16:40] <valexey> угу.
[14:17:32] <valexey> То есть экспортируем указательный тип на некую рекорду, все кто вне этого модуля видят этот тип, и могут с ним обращаться именно как с указателем - то есть копировать там, но не создавать. И до тушки рекорда добраться не могут.
[14:17:55] <valexey> Более того - даже тушки рекордов копировать не могут. Вот
[14:19:45] <vlad2> resolve: function(symbol){
       var id = symbol.id();
       var exported = this.__exports[id];
       if (exported)
           // remove non-record types from generated exports
           if (symbol.isType() && !(symbol.info().type() instanceof Type.Record))
               delete this.__exports[id];
       Scope.prototype.resolve.call(this, symbol);
   },
[14:19:57] <vlad2> Видишь коммент? :)
[14:20:21] <vlad2> Добавь там еще Type.Pointer :)
[14:20:27] <vlad2> И будет щастье.
[14:20:30] <vlad2> Должно быть :)
[14:20:58] <valexey> гм. попробую :-)
[14:22:07] <vlad2> Там все тесты должны нормально пройти - типа расширение, а не изменение.
[14:22:43] <valexey> if (symbol.isType() && !(symbol.info().type() instanceof Type.Record || symbol.info().type() instanceof Type.Pointer))
[14:22:45] <valexey> так?
[14:23:10] <vlad2> Crj,jxtr не хватает, вроде.
[14:23:46] <vlad2> Скобочек.
[14:23:56] <vlad2> А. Не.
[14:23:59] <vlad2> Все правильно.
[14:25:11] <vlad2> Но потом все равно перефиксывать надо будет :)
[14:25:45] <vlad2> Оно должно экспортировать все. А вот генерировать не все :)
[14:26:13] <vlad2> Т.е. можешь вообще там убрать весь этот if.
[14:26:17] <valexey> гм. однако ошибка
[14:26:27] <valexey> причем похоже при попытке выполнения получившегося кода
[14:26:50] <vlad2> Да, там может.
[14:26:59] <vlad2> Ладно. Забей. Я на выходных доберусь.
[14:27:10] <valexey> var A = function (){
var AA$base = RTL$.extend({
init: function AA$base(){
}
});
return {
AA: AA
}
}();
var B = function (A){
var a = null;
}(A);
[14:27:17] <valexey> ну, логично, чо
[14:27:35] <valexey> ReferenceError: AA is not defined


[14:27:47] <valexey> то есть компилятор то работает, а вот сгенереный код - нет :-)
[14:27:48] <vlad2> Ну да. Он там запутался.
[14:28:11] <vlad2> Можешь попробовать $base убрать (найдешь в исходниках).
[14:28:24] <vlad2> Может он и не нужен :)
[14:28:46] <valexey> ненене, я туда пока не полезу. я походу придумал пока workaround :-)
[14:28:50] <valexey> для opaque
[14:29:03] <valexey> оберну поинтер в record :-D
[14:29:36] <valexey> +1 уровень косвенности :-D
[14:30:13] <valexey> кстати, а вот вопрос - если мы экспортнули только поинтер на рекорд, то может ли сторонний модуль завести поинтер и сделать NEW?
[14:31:07] <vlad2> Ну да. Почему нет?
[14:31:21] <valexey> эээ... хреново.
[14:31:41] <valexey> это позволит левым модулям плодить не инициализированные экземпляры рекордов
[14:31:52] <valexey> причем они их инициализировать в принципе не смогут
[14:32:11] <valexey> а потом лови этот блуждающий недоинициализированный рекорд по всему коду
[14:33:48] <vlad2> Да, в КП чуть лучше - там типа абстрактные рекорды бывают.
[14:34:17] <valexey> блин, но на уровне экспорта то это должно ведь рулиться.
[14:34:37] <valexey> так. надо покурить репорт в эту сторону. Но чую я, что там нифига на этот счет не определено.
[14:36:25] <vlad2> Добавь еще одни уровень косвенности ;)
[14:36:30] <TRUE> Kemet: И откуда узнают, если там приватеперсон и никаких данных.

Может, они с сайта контактную информацию берут?
[14:37:00] <vlad2> Рекорд с филдом-поинтером на неэкспортированный тип. Там будет или NIL или проиничено все как надо.
[14:37:54] <valexey> vlad2: да ну тебя нафиг! Вообще, если у нас opaque type, то, из за независимости компиляции модулей сторонний модуль в принципе не может сделать NEW - ведь для этого нужно знать хотя бы sizeof(record)
[14:37:57] <valexey> а он этого не знает
[14:38:01] <valexey> вот
[14:38:21] <valexey> то есть если пользователю известен только указатель
[14:38:49] <valexey> но, блин. это ведь ограничения реализации на самом деле. в js-мире таких ограничений нема
[14:38:58] <мистический_олень> прикольно . Вакансия у нас по микроконтроллерам
[14:39:15] <мистический_олень> если б я ещё отлично знал цпп =)
[14:41:27] <vlad2> Ну хорошо - экспортируй указатель на самый базовый тип. Пусть кто-то левый его создает - просто получит херню. П твой модуль будет создавать правильный экземпляр со всеми проиниченными полями.
[14:42:34] <valexey> какая-то внутренне противоречивая, или избыточная херня в этом месте у Оберона
[14:42:42] <vlad2> Т.е. на самом деле просто не хватает ABSTRACT чтобы запретить явно создание херни темми, кому нельзя.
[14:42:50] <valexey> я эту мысль еще подумаю, и наверно отпишу на форум
[14:43:36] <valexey> Ну, то есть на самом деле было бы логично, если бы когда мы экспортируем только POINTER TO Type, то никто вне модуля не может создавать рекорды через NEW (ибо и на стеке они создавать их не могут тоже)
[14:43:46] <vlad2> Вообще да - потому что даже в таком варианте придется кастать на входе в модуль.
[14:44:13] <vlad2> Да. Так было бы логичнее.
[14:44:25] <valexey> Если мы экспортируем сам TYPE Type = RECORD foo : INTEGER END; , то создавать могут (и на стеке и в куче через NEW) но не могут получить доступ к полям
[14:44:46] <valexey> TYPE Type* = RECORD foo : INTEGER END;
[14:44:48] <valexey> так
[14:45:04] <valexey> А если вот так: TYPE Type* = RECORD foo* : INTEGER END; - то имеют полный доступ ко всему
[14:45:07] <valexey> вот
[14:45:10] <vlad2> Угу.
[14:45:12] <vlad2> Согласен.
[14:45:25] <valexey> возможно Вирт это подразумевал, но, гад такой, не описал этого!
[14:45:40] <vlad2> Надо запрещать NEW для экспортированных типов-указателей.
[14:45:47] <valexey> угу
[14:45:56] <vlad2> Он еще и на почту не отвечает ;)
[14:46:17] <TRUE> может, у него она сменилась давно
[14:46:18] <valexey> значит надо прокачивать скилл телепатии :-)
[14:46:28] <vlad2> C другой стороны я не удивлюсь, если ему просто пофиг на подобные архитектурные изыски :)
[14:46:44] <vlad2> Может для него POINTER не более чем штука для построения списков :)
[14:47:00] <valexey> Либо, что тоже вероятно, у него просто проблемы со здоровьем и ему не до тонн писем в почтовом ящике.
[14:58:50] <vlad2> Во, не я один параноик http://habrahabr.ru/post/159565/
[15:04:32] <vlad2> Каменты про терморектальный криптоанализатор доставляют :)
[15:05:26] <vlad2> - "Что, кто-то еще думает, что паяльник поможет вспомнить 10 килобайт шума?"
- "А он такой: Слыш, братан, я на информатике был последний раз в 8 классе, и то, только потому, что склеить тёлку хотел. Вот паяльник, вот то, что мне надо. Так что давай, не кипеши, а по порядку рассказывай."
[15:39:41] <valexey> vlad2: вау! TypeError: Object #<LazyTypeId> has no method 'name'


[15:41:58] <valexey> а, фу. это я дурак
[15:49:05] <vlad2> Ты там уже ковыряешь во всю? :)
[16:00:45] <valexey> угу
[16:02:31] <Kemet> TRUE: Не, на сайтах такой инфы нема, только в закрытом профиле у регистратора
[16:03:09] <Kemet> ктото из сотрудников сливает инфу
[16:03:13] <TRUE> а регистратор забугорный или местный?
[16:03:29] <Kemet> местный
[16:03:30] <TRUE> или как вариант - кто-то из сотрудников начал собственный бизнес
[16:03:43] <Kemet> тоже варианет
[16:04:13] <valexey> vlad2: а в жабаскрипте, если у меня есть локальная переменная с таким же именем как глобальная, могу ли я как-то к глобальной достучаться?
[16:04:42] <TRUE> локальная где?
[16:04:48] <TRUE> в процедуре или объекте
[16:04:58] <valexey> в объекте
[16:05:09] <TRUE> в объекте this.v
[16:05:17] <vlad2> Можешь получить глобальный объект и в нем обратиться.
[16:05:30] <vlad2> Но я бы отрывал за такое :)
[16:05:39] <TRUE> вне объекта - просто v
[16:05:42] <valexey> а как глобальный получить?
[16:05:48] <TRUE> window.v
[16:06:02] <valexey> не выходит каменный цветок.
[16:06:14] <valexey> вот у меня локальный объект - String
[16:06:22] <valexey> он ясен хрен перекрывает глобальный String
[16:06:25] <valexey> и привет
[16:06:36] <TRUE> а
[16:06:41] <TRUE> JS.String
[16:06:54] <TRUE> если из компилятора вызывать
[16:07:13] <TRUE> там же "use strict"
[16:07:47] <valexey> нет никакого компилятора.я про чистый js говорю
[16:08:07] <valexey> var String = {}; var chr = String.fromCharCode(42);
[16:08:31] <valexey> вот тут надо чтобы во втором statement'e у нас String был глобальным а не локальным
[16:08:37] <valexey> как обратиться?
[16:08:42] <TRUE> а где var String объявлен? В методе объекта или просто функции?
[16:09:17] <TRUE> если это просто функция, то this.String.ddd
[16:09:48] <valexey> проблема не в доступе к var String, проблема в доступе к String.fromCharCode
[16:09:49] <TRUE> если объект, то добавьте в него поле global = window при инициализации
[16:09:53] <TRUE> да
[16:10:08] <TRUE> если не объект, а функция, то this = window
[16:10:12] <valexey> и да, кроме строчки var chr = String.fromCharCode(42); я ничего менять не могу
[16:11:16] <TRUE> а до строчки var String = {} можно сделать var GlobalString = String ?
[16:11:28] <valexey> нет
[16:12:05] <valexey> вопрос в том, где этот глобальный предопределенный String лежит?
[16:13:03] <TRUE> window
[16:13:22] <TRUE> в браузере
[16:14:05] <valexey> хреново
[16:14:15] <valexey> то есть в node.js это ж явно не window будет
[16:18:16] <TRUE> остаётся только один вариант: идёшь в магазин на Ашанской 49, а дальше интуиция сама подскажет
[16:18:21] <TRUE> Ошарская, 69
[16:19:15] <valexey> а что это?
[16:19:42] <TRUE> ты в Нижнем Новгороде?
[16:19:47] <valexey> да
[16:19:54] <TRUE> приедешь - узнаешь : )
[16:21:06] <vlad2> valexey: назови переменную по другому, не мучай зверушку
[16:21:40] <TRUE> так он не может изменитьб
[16:21:47] <TRUE> это не его, я так понял
[16:21:55] <valexey> ога. так компилер генерит :-)
[16:22:30] <TRUE> а можно какой-то объект получить, из которого получится извлечь этот самый String?
[16:22:45] <TRUE> prototype, там, или ещё что?
[16:22:54] <valexey> да.. фиг знает
[16:23:28] <TRUE> а какой компилер генерит?
[16:23:31] <vlad2> Не понял. А "var String = {}" кто гненерит?
[16:24:04] <valexey> компилер конечно :-)
[16:24:17] <valexey> У меня тип - String :-)
[16:24:20] <valexey> на уровне модуля
[16:24:26] <TRUE> какой компилер?
[16:24:31] <valexey> var String = RTL$.extend({
init: function String(){
 this.p = null;
}
});

[16:24:36] <valexey> :-D
[16:24:38] <vlad2> А.
[16:24:41] <vlad2> Это просто.
[16:24:48] <vlad2> пойди в lexer.js
[16:25:03] <valexey> и запрети String? :-)
[16:25:07] <vlad2> и добавь там String к списку ключевых слов жабаскрипта.
[16:25:24] <valexey> А мы не опухнем все объекты из global'а туда пихать?
[16:25:35] <vlad2> Заодно еще можешь добавить там Object, Date, Array
[16:25:47] <TRUE> https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects
[16:26:40] <vlad2> Там все не надо - надо только те, которые использует компилятор в генерируемом коде.
[16:26:53] <vlad2> Так что даже Date не надо.
[16:27:03] <valexey> Не только. Еще те, которые используем мы через JS.do :-)
[16:27:34] <valexey> блин, при программировании на js ощущение будто занимаешься лепкой из говна
[16:27:54] <vlad2> Через js.do ты контролируешь что используешь и не перекрываешь String.
[16:28:24] <TRUE> перекрывает не он, а компилятор
[16:28:30] <valexey> ну да, а вот компилятор какой-нибудь Date вполне может перекрыть так, что ты из JS.do уже до него не доберешься
[16:28:32] <vlad2> Дык, я ж давно говорил - безформенное гавно. Лепишь-лепшь, а оно расползается и расползается.
[16:29:07] <valexey> нужен какой-то глобальный костыль - вроде var Global = window; или как оно там еще.
[16:29:09] <TRUE> кстати, так должно было работать JS.do("JS.String.ddd");
[16:29:14] <vlad2> Компилятор ничего не перекрывает. Перекрываешь ты своими обероновскими идентификаторами.
[16:29:40] <valexey> угу
[16:30:10] <vlad2> Т.е. если ты собрался писать "JS.do("new Array()")" - позаботься о том, чтоб у тебя в обероновском скопе не было Array. Не вижу проблемы, короче.
[16:30:11] <valexey> TRUE: неа, с точки зрения жабаскрипта нет же объекта по имени JS
[16:30:33] <vlad2> valexey: есть, если ты импортировал JS
[16:30:38] <TRUE> зато в компиляторе и рантайме есть
[16:30:47] <valexey> я вижу проблему в эстетическом плане :-) ладно, пойду еще в говно покопаюсь :-)
[16:30:52] <vlad2> (а ты его импортировал, чтоб написать JS.do)
[16:31:05] <valexey> во! щща попрбую!
[16:31:08] <valexey> кажется придумал, дыа
[16:31:44] <TRUE> попробй вот это
JS.do("alert(typeof(window.String.fromCharCode))");
[16:31:54] <TRUE> в своём оберон-коде
[16:32:07] <TRUE> не
[16:32:17] <TRUE> JS.do("alert(typeof(JS.String.fromCharCode))");
[16:32:21] <TRUE> вот так
[16:36:39] <TRUE> MODULE test;
IMPORT JS;
BEGIN
   JS.do("alert('hehe: ' + typeof(JS.String.fromCharCode))")
END test.

[16:38:22] <valexey> гм. действительно :-)
[16:38:26] <valexey> спасип
[16:54:46] <valexey> эмм. так. такое ощущение что еще какая-то лажа
[16:54:53] <valexey> с импортируемыми типами
[16:54:58] <valexey> щща на чистом примере посмотрю
[16:57:08] <valexey> дас, баг.
[16:57:52] <valexey> MODULE A;
TYPE
R* = RECORD foo : INTEGER END;
END A.

MODULE B;
IMPORT A;
VAR
s : A.R;
BEGIN
END B.

[16:57:56] <valexey> такое не работает
[16:58:04] <valexey> причем компилится, но не работает
[16:58:10] <valexey> ибо для s генерится такой код:
[16:58:27] <valexey> var s = new R();

[17:02:18] <valexey> завел багу
[17:03:04] <vlad2> Да, бага.
[17:03:37] <valexey> Компилятор которым никто не пользуется по определению не имеет багов :-) А вот как кто-то начинает пользоваться... :-)
[17:04:01] <valexey> Чем активней продуктом пользуются, тем больше багов и тем стабильней продукт :-D
[17:04:26] <valexey> Во! Geniepro отрыл эту статью Дейкстры: http://oberspace.dyndns.org/index.php/topic,297.msg17856.html#msg17856
[17:07:03] <valexey> между прочим, очень хорошо, что у нас бекендом js - баги в компиляторе ловить легче.
[17:08:01] <Kemet> чето форум както неспешно работает
[17:08:28] <valexey> там что-то то ли апач колбасит, то ли сеть вообще
[17:08:54] <valexey> это не php и не движок форума виноват. онлайн компилятор так же не спешно грузится
[17:10:27] <valexey> vlad2: завести ту багу про typeguard'ы на гитхабе?
[17:11:47] <vlad2> Ага!
[17:16:53] <valexey> такс, ща кофе, репорт в зубы и напишу полный пример того что сейчас и как оно должно быть. и в issues закину
[17:41:15] <valexey> vlad2: во: https://github.com/vladfolts/oberonjs/issues/16
[17:41:21] <valexey> жирное описание вышло :-)
[17:42:06] <valexey> заодно еще там багов нашел. в typeguard'e
[17:47:16] <vlad2> OK! Спасибо :)
[21:07:53] <jordan36957> Чем меньше язык, тем больше костылей и хаков приходится придумывать программисту. :-)
[21:08:56] <valexey> Ну, часть костылей и хаков можно вынести в либы, а часть в IDE :-)
[21:08:59] <TRUE> чем больше язык, тем больше костылей и хаков уже в нём. Но это не отменяет необходимости городить свои.
[21:09:03] <valexey> После чего станет вполне терпимо работать.
[21:09:31] <jordan36957> То есть привычка.
[21:09:39] <valexey> нет, то есть инструментарий :-)
[21:11:48] <jordan36957> Купить машину, довести до состояния, что бы заводилась, потом уже ехала, и т.д Ну а когда уже отладишь, можно ехать в путь. :-)
[21:12:17] <jordan36957> Прям Российский автопром.
[21:12:33] <valexey> ну, оберон-07 это скорее двигло. на двигле далеко не уедешь :-) нужно еще чтобы движок оброс машиной снаружи :-)
[21:12:57] <jordan36957> Явно для ценителей.
[21:13:40] <valexey> ну, это как патрон. Самое важное в стрелковом оружии это патрон, под него уже разрабатывается все остальное. Но если вокруг патрона не наросло ружье или там автомат, толку от него мало.
[21:14:20] <jordan36957> А оно стоит этих заморочек? Будет ли прикладной программист, этим заниматься? Системщики понятно, они и не такое видывали.
[21:14:48] <jordan36957> Вот вам тонна, патронов, а оружие вы уж сами сделаете. :-)
[21:15:00] <valexey> После того как вокруг патрона нарастет автомат - прикладной программист будет этим пользоваться.
[21:15:02] <jordan36957> Я военным сразу выдают и автомат и патроны.
[21:15:14] <jordan36957> То есть А
[21:15:22] <jordan36957> А военным сразу выдают и автомат и патроны.
[21:15:40] <valexey> вот и мы выдадим.
[21:15:48] <jordan36957> Тогда окей.
[21:30:21] <jordan36957> А есть ли описание стандарной библиотеки?
[21:30:45] <jordan36957> Опять будут несовместимости.
[21:38:55] <valexey> Не будут. Ну, то есть в процессе придумаем, и, я надеюсь, согласуем с akron1
[21:39:59] <TRUE> а с остальными?
[21:40:30] <valexey> а кто там еще есть?
[21:40:51] <TRUE> вы втроём библиотеку придумаете?
[21:41:47] <TRUE> то бишь, стандарт библиотеки для языка программирования.
[21:42:14] <jordan36957> Я могу подсобить. Насчёт библиотеки.
[21:42:32] <jordan36957> Типа паскалевской.
[21:43:24] <jordan36957> В библиотеку хорошо бы добавить работу с директориями, я ужаснулся когда узнал, что у С++ нет.
[21:43:29] <TRUE> вопрос не в реализации. Если описание библиотекиесть, а вместе с компилятором её нет - ничего страшного
[21:44:07] <valexey> Думаю это процесс итерационный. От практики надо отталкиваться.
[21:44:26] <TRUE> а вот если в библиотеке есть что-то ненужное и слабонужное или вообще нереализуемое в разных средах, то это проблема
[21:44:42] <jordan36957> А кто будет стандартизировать библиотеку? В смысле есть официальный репорт, а как с библиотекой?
[21:45:22] <TRUE> есть две реализации языка с дной и той же библиотекой. Остальные захотят быть совместимыми
[21:46:24] <TRUE> к тому же, если библиотека логичная, то что-то своё будет как-то странно смотреться.
[21:46:52] <jordan36957> А как в библиотеке реализовать к примеру динамический массив? В самом языке массива динамического нет. Как это примерно сделать.
[21:47:42] <jordan36957> На массивах же строки деожатся.
[21:47:53] <jordan36957> *держатся
[21:48:57] <jordan36957> Массив это всего лишь область памяти. Указатель + malloc
[21:49:37] <TRUE> это если память ручная
[21:50:10] <valexey> ArrayList of chunks :-)
[21:50:57] <jordan36957> Ок. Как работать с изображениями? ТО есть выделил память для картинки, загрузил, и работаешь с ней.
[21:51:15] <jordan36957> Опять список.
[21:51:33] <jordan36957> Дефрагментация на пустом месте.
[21:51:34] <vlad2> JS.do("new Array") ;)
[21:51:52] <jordan36957> Как в самом языке. По стандарту.
[21:52:21] <jordan36957> К примеру отлаживаешь в браузере, компилишь уже в натив.
[21:52:46] <valexey> Через opaque типы в стандартной библиотеке.
[21:53:59] <jordan36957> opaque - это что? Может есть ссыдка, где бы подробгнее это описывалось?
[21:54:08] <jordan36957> *ссылка
[21:56:19] <jordan36957> В вики прочитал.
[22:04:29] <jordan36957> Я все же прочитал полностью книгу Страуструпа. Мне понравился раздел, дополнительные темы.
[22:06:30] <valexey> угу. он крутой
[22:09:23] <jordan36957> Я немного стал понимать, почему С++, такой костыльный. Просто хотелось сделать более дружелюбный язык для программиста. Не по сложности а по возможностям. С стл Степанов не прогадал. Таки вин.
[22:12:09] <valexey> :-)
[22:27:48] <valexey> Любой язык который массово применяется становится костыльным
[22:41:48] <jordan36957> Даже тот же оберон 2 в чистом виде не используют, КП, актив оберон и т.д
[22:47:28] <valexey> дык.