[00:56:50] <akastargazer> Я записываю
[14:37:18] <geniepro> vlad2, valexey: в с++ есть какой-нить класс более менее стандартный для работы вещ. числами с фиксированной запятой?
[14:42:00] <_valexey_> geniepro: в стандарте - нет
[14:42:08] <_valexey_> Надо буст глянуть
[14:43:48] <geniepro> Российские компьютеры МЦСТ Эльбрус поступили в продажу для юридических лиц
http://www.tehnoomsk.ru/content/%D1%80%D0%BE%D1%81%D1%81%D0%B8%D0%B9%D1%81%D0%BA%D0%B8%D0%B5-%D0%BA%D0%BE%D0%BC%D0%BF%D1%8C%D1%8E%D1%82%D0%B5%D1%80%D1%8B-%D0%BC%D1%86%D1%81%D1%82-%D1%8D%D0%BB%D1%8C%D0%B1%D1%80%D1%83%D1%81-%D0%BF%D0%BE%D1%81%D1%82%D1%83%D0%BF%D0%B8%D0%BB%D0%B8-%D0%B2-%D0%BF%D1%80%D0%BE%D0%B4%D0%B0%D0%B6%D1%83-%D0%B4%D0%BB%D1%8F-%D1%8E%D1%80%D0%B8%D0%B4%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D1%85-%D0%BB%D0%B8%D1%86
[15:19:52] <geniepro> https://scontent.xx.fbcdn.net/hphotos-xta1/v/t1.0-9/11128857_891021264298269_591772530943474016_n.jpg?oh=b235f6e9c286a6c64f30b32b42475887&oe=55E1E2AB
[15:52:32] <geniepro> http://www.ferra.ru/ru/system/review/elbrus-4c-processor/#.VUdjrmilZRs
[17:03:15] <sda> Путин: 85% советского правительства - евреи
https://www.youtube.com/watch?v=IliRWCni9aw
[18:43:00] <vlad2> /me наступил еще на один недостаток унарного минуса "не входящего" в целочисленную константу в обероне
[18:44:48] <vlad2> 2147483647 - максимум для знакового 32-битного
[18:45:14] <vlad2> -2147483648 - минимум
[18:46:52] <vlad2> Соответственно компилятор не может распарсить "-2147483648" без переполнения, хотя по факту переполнения никакого нет.
[18:47:08] <sda> а что он говорит при этом?
[18:47:20] <vlad2> Кто?
[18:47:33] <Jordan> unknown error?
[18:47:48] <sda> компилер как себя ведет
[18:48:05] <Jordan> на ассерте падает ;-)
[18:48:06] <vlad2> У меня нет под рукой виртовского компилятора - самому очень интересно, что он там говорит.
[18:48:44] <vlad2> Что касается oberonjs - то там проблемы не было, до очередного переписывания js -> oberon
[18:49:45] <vlad2> В js реализации переполнения не было, потому что в js нет целых, там вешественные числа.
[18:52:46] <vlad2> Собственно чего делать с этим - не знаю. Ругаться на переполнение - глупо, но оно там есть согласно спеке на язык. Менять спеку - некошерно.
[18:54:17] <sda> на моем компиле, который на дельфи ошибка вылазиет:
i = -2147483648;
writeint( i );
Exception EConvertError in module ac32.exe at 00006682.
'2147483648' is not a valid integer value.
[19:00:44] <vlad2> Угу.
[19:08:07] <vlad2> valexey: зацени послелние клеветы :)
[19:22:08] <s6> эээээ даёшь битовые строки
[19:22:15] <s6> bitstrings
[19:22:44] <s6> и не 32-битные а arbitrary length
[19:29:05] <sda> стандартный оберон не идеален, его можно и нужно править, делать на его основе другие языки
[19:30:22] <sda> для такого случая у себя пока поставил костыль в процедуре SimpleExpression:
if op = opsub then
begin
GetSym;
if ( sym = lxnumber ) and ( token = '2147483648' ) then
begin
token := '-2147483648';
Term( x );
end else
begin
Term( x );
Cg_Op1( op, x );
end;
end else
[19:32:42] <vlad2> Тогда следующий пример:
CONST x = 0FFFFFFFFH;
:)
[19:33:26] <sda> хотя можно так написать
if ( sym = lxnumber ) then
begin
token := '-' + token;
[19:33:33] <sda> ну как вариант константу )
[19:33:55] <vlad2> Не такой интересный, то тоже подразумевает разночтения - в спеке-то ничего нет.
[19:34:13] <alexey.veselovsky> UB :-)
[19:34:59] <vlad2> Ага. UB. В обероне. 16-страничном. Какая жирная клевета :)
[19:36:01] <alexey.veselovsky> ну, этта..
[19:36:09] <alexey.veselovsky> в 17 страничном же уже!
[19:36:11] <alexey.veselovsky> :-D
[19:45:42] <Jordan> что, где, когда, что я пропустил? :-)
[20:00:29] <s6> Что такое "UB"?
[20:00:55] <sda> короче, это не ошибка компилятора - это несовершенство двоичной платформы! ) даже в си стандарты считают, числа дожны быть симетричными!
[20:01:16] <sda> undefined behavior
[20:02:57] <alexey.veselovsky> естественно это не ошибка компилятора
[20:03:01] <alexey.veselovsky> это ошибка языка :-)
[20:03:08] <alexey.veselovsky> точнее - в спеке на язык
[20:03:11] <alexey.veselovsky> и в грамматике
[20:06:16] <Jordan> UB в обероне? Чудеса :-)
[20:06:47] <alexey.veselovsky> только оно еще более U, ибо про это в спеке ни слова :-)
[20:20:17] <Kemet> опять клеветы!
[20:20:59] <vlad2> Ну повод-то неплохой :)
[20:21:38] <Kemet> vlad2: дык у Вирта поди всёв реалах считается )
[20:21:58] <vlad2> Сомневаюсь.
[20:23:05] <Kemet> ну если там адреса даже в реалах
[20:27:28] <alexey.veselovsky> адреса у Вирта не в реалах
[20:27:33] <alexey.veselovsky> опять небось с AO путаешь :-)
[20:27:42] <alexey.veselovsky> не следует путать Оберон с AO :-D
[20:30:45] <Kemet> alexey.veselovsky: не, эт он же в папире писал типа миграция на О7
[20:31:29] <alexey.veselovsky> я не знаю что он там писал в папире, но в исходниках оси у него для адресов используется INTEGER
[20:33:04] <alexey.veselovsky> GET(a, v) a: INTEGER; b : any basic type
[20:33:18] <alexey.veselovsky> вот как ты сюда адрес засунешь REAL’ный? ;-)
[20:33:27] <alexey.veselovsky> http://www.inf.ethz.ch/personal/wirth/ProjectOberon/Sources/SCC.Mod.txt
[20:33:31] <alexey.veselovsky> тут примеры использования
[20:34:46] <Kemet> ненене, сувать никуда нинада! его нада конвертить в интеджер прикогда нада, а хранить в реалах
[20:35:02] <alexey.veselovsky> нельзя
[20:35:22] <alexey.veselovsky> ты же понимаешь, что точность у 32битного REAL’а сильно ниже чем у 32битного INTEGER'a
[20:35:29] <alexey.veselovsky> а они там именно такие
[20:35:58] <alexey.veselovsky> в результате у тебя будет не адрес а хз что
[20:36:05] <alexey.veselovsky> ты что-то путаешь
[20:36:09] <alexey.veselovsky> возможно с AO
[20:36:38] <Kemet> не, в папире так написано и ооо! акрон так делал, вспонил где я видел
[20:37:03] <alexey.veselovsky> акрон может и делал, но сам Вирт так не делает в PO
[20:37:13] <alexey.veselovsky> оно и понятно - оно так работать просто не будет
[20:37:20] <Kemet> эээ, причем тут АО, в АО настоящие адреса
[20:38:23] <Kemet> alexey.veselovsky: оно будет работать но ясен пень не на всем диапазоне
[20:38:38] <alexey.veselovsky> дык
[20:38:43] <alexey.veselovsky> а нам нужно - на всем
[20:38:44] <Jordan> alexey.veselovsky есть же longreal
[20:38:50] <alexey.veselovsky> нет
[20:38:53] <alexey.veselovsky> в Обероне его нет
[20:38:58] <Jordan> dooble короче
[20:39:17] <alexey.veselovsky> Kemet: а какой глубокий смысл в таком хранении? Чтобы тормозило больше и применимо было не везде? :-)
[20:39:20] <Kemet> Jordan: в компиляторе Вирта есть и ЛОНГИНТ )
[20:39:38] <alexey.veselovsky> в компиляторе дофига чего есть, там и новые литералы всякие есть
[20:39:41] <alexey.veselovsky> но в языке - нет
[20:40:03] <Jordan> alexey.veselovsky ну нет, стандарта у языка.
[20:40:13] <alexey.veselovsky> есть репорт
[20:40:15] <Kemet> alexey.veselovsky: надо папир читать, я счас не помню подплёку вопроса, но  так было написано в доке по миграции с ОЮЩ7
[20:40:29] <alexey.veselovsky> кинь ссыль
[20:40:33] <alexey.veselovsky> на сайте вирта не нашел
[20:40:50] <Jordan> Репорт, это я бы сказал, некий минимум, в смысле. Если не хватает суйте фичи в компилятор
[20:41:08] <Jordan> Репорт абстракте, а компилятор конкретен
[20:41:09] <alexey.veselovsky> до состояния С++? ;-)
[20:41:29] <Jordan> хотя бы до с99
[20:42:13] <Jordan> alexey.veselovsky Есть идеал, а есть жестокая практика. Как то так. Выживает сильнейший.
[20:42:48] <Jordan> Потому и фичуют, компилятор оберона, ибо не репортом токмо
[20:47:11] <Kemet> alexey.veselovsky: да там счас хрен что найдёшь, надо старый вариант сайта смотреть
[20:50:31] <Jordan> как вообще стандарт на язык пропихнуть? Пример pascal пропихнули в мейнстрим.
[20:50:43] <Jordan> Тот же оберон.
[20:55:40] <vlad2> Это надо много терпения и желания.
[20:56:06] <vlad2> И противоречит девизу оберона "у кого надо - работает" :)
[20:56:15] <alexey.veselovsky> jordan: не путай мейнстрим со стандартом
[20:56:36] <alexey.veselovsky> стандартный паскаль - это полная маргинальщина, в мейстриме он никогда не был
[20:56:49] <alexey.veselovsky> мейнстримовый паскаль к стандарту на паскаль отношения не имеет никакого
[21:51:51] <_valexey_> Java живет без стандарта. Delphi, Go, python, ruby, php, c#, objc, swift - тоже.
[21:52:45] <_valexey_> Стандарты есть и значимы для мейнстрима лишь у некоторых языков. Например у c, c++, ada.