[00:56:56] <valexеy> Что-то у меня ощущение, что грамматика (то есть описание грамматики) у Вирта дико избыточно
[01:01:04] <vlad2> Гы :) В смысле? :)
[01:07:57] <valexеy> В прямом. Взять хотя бы лексер.
[01:08:10] <valexеy> Нафига там эта развесистая клюква лексем?
[01:08:27] <valexеy> Этот самый Integer отдельной лексемой, Real отдельной
[01:08:45] <valexеy> digit отдельной и так далее.
[01:08:53] <valexеy> По моему, это все можно компактней записать.
[01:08:55] <vlad2> А как надо?
[01:09:30] <valexеy> Я не знаю как надо :-) У меня пока просто смутные ощущения, что грамматика (её запись) переусложнена.
[01:10:41] <valexеy> Ну, то есть у меня от нее ощущения примерно такие же, как от использования зубодробительных паттернов ООП в hello world'e
[01:10:49] <valexеy> Декомпозиция ради самой декомпозиции.
[01:10:54] <valexеy> Но возможно я не прав конечно.
[01:11:55] <valexеy> Ну и еще, по моему, она такова из за того, что Вирт пользуется достаточно бедным языком описания грамматик
[01:14:01] <valexеy> Например это его постоянное digit {digit} в более продвинутом языке описания грамматик записывается просто как digit+
[01:16:50] <valexеy> Далее - зачем у него там ScaleFactor в отдельное правило вынесен?
[01:17:56] <valexеy> оно же ровно в одном месте (строчкой выше) применяется
[01:28:03] <valexеy> Да, а структурные литералы так и просятся в язык
[01:33:17] <vlad2> Чего-чего?
[01:33:52] <valexеy> Литералы, говорю, стуруктурного типа.
[01:34:05] <valexеy> Ну вот "hello world" - это строковый литерал
[01:34:09] <valexеy> 42 - целочисленный
[01:34:38] <valexеy> А какое-нибудь RECORD 43; "Hello World" END; -- структурный ;-)
[01:35:15] <valexеy> Но не только. Структурными являются не только рекорды, но и всякие там массивы поганые
[01:35:46] <vlad2> А. Это да.
[02:29:06] <valexеy> чорт. мне казалось что у Вирта в грамматике с большой буквы правила вывода, а с маленькой - лексемы.
[02:29:08] <valexеy> Ан хрен.
[02:29:20] <valexеy> Это у него camelCase такой для всего подряд.
[02:29:23] <valexеy> Чорт.
[03:13:33] <vlad2> :)
[03:15:44] <valexеy> но тогда не понятно какого хрена qualident у него не СamelCase'ом
[03:16:37] <vlad2> Может для него это одно слово :)
[03:16:54] <vlad2> После десятилетий писаний компиляторов оберона :)
[03:17:10] <valexеy> да, вполне похоже на профессиональный жаргонизм
[03:19:27] <valexеy> такс. действительно оказалось, что синтаксис не самое страшное. подмножество на поиграццо вполне выделил и вроде как оттестил.
[03:19:49] <valexеy> теперь надо как-то думать про типы и вообще с кем допустимы всякие операции, а с кем нет.
[03:19:59] <valexеy> А тут уже думать надо!
[03:27:07] <valexеy> vlad2: а что ты там с SET"ами сделал? Как на js отобразил?
[03:28:04] <vlad2> Еще не дошел до него.
[03:28:29] <vlad2> Наверное обычно целое будет. Чего городить-то?
[03:29:09] <valexеy> да фиг знает. мало ли.
[13:37:04] <valexеy> vlad2: а как у тебя сделано присваивание структур по значению?
[13:37:09] <valexеy> типо a := b;
[14:01:31] <valexеy> http://oberspace.dyndns.org/index.php/topic,363.msg9784.html#msg9784
[14:10:53] <valexеy> мдя. в свете того, что в js ВСЕ числа это 64битная плавающая точка, разделение на REAL и LONGREAL в обероне становится особенно забавным
[15:32:46] <alexey.veselovsky> дас, тяжело в js с числами
[15:32:50] <alexey.veselovsky> один сплошной дабл
[15:33:17] <alexey.veselovsky> /me так и представляет себе как в целочисленной переменной внезапно появляется дробное число
[17:40:16] <vlad2> Вроде я там вычитывал, что нельзя присваивать структуры. Или это уже в следующей версии?
[17:41:48] <vlad2> Мдас, всего-то прикрутил массивы, а код опять катится в гавно. Опять надо рефакторить.
[17:50:01] <alexey.veselovsky> Вроде бы можно. Там нельзя присваивать value-аргументу типа записи
[17:50:05] <alexey.veselovsky> вроде бы
[17:50:51] <vlad2> Просто одни люди не миогут писать на С, а другие - на жабоскрипте...
[17:51:15] <alexey.veselovsky> но их единит то, что они не могут писать на Обероне ;-)
[17:51:34] <alexey.veselovsky> да, тебе же компилятор потом еще на Обероне переписывать!
[17:51:44] <alexey.veselovsky> Чтобы он компилял сам себя в js :-D
[17:51:52] <vlad2> О да :)
[17:52:45] <vlad2> По поводу целочисленной переменной - ты просто не можешь себе представить, что переменная не имеет типа, точнее он может меняться :)
[17:53:00] <alexey.veselovsky> можешь
[17:53:11] <alexey.veselovsky> но от этого, знаешь ли, не легче
[17:53:15] <alexey.veselovsky> :-)
[17:53:57] <alexey.veselovsky> грубо говоря, с точки зрения оберона, при целочисленном "переполнении" будет порча памяти.
[17:54:07] <alexey.veselovsky> такой конкретный такой UB
[18:21:58] <vlad2> Ну да. Наш апликэqшн перестал работать в британии после перевода часов. Цикл Дейкстры навсегда! ;)
[18:22:34] <alexey.veselovsky> :-)
[18:38:47] <vlad2> На самом деле смех-смехом, а такие херни бьют сильнее всего.
[18:38:56] <alexey.veselovsky> угу
[18:38:57] <vlad2> В понедельник разом у всез перестало работать.
[18:39:03] <vlad2> Пипец.
[18:39:25] <alexey.veselovsky> нежданчик
[18:39:35] <alexey.veselovsky> примерно как и в Ариане-5 ;-)
[18:40:44] <alexey.veselovsky> Прикольный логотип у одного редактора кода: http://codemirror.net <http://codemirror.net/>
[18:40:53] <alexey.veselovsky> http://codemirror.net/doc/baboon.png
[18:42:10] <vlad2> Это у него жопа или яйца? :)
[18:42:30] <alexey.veselovsky> эмм.. хорроший вопрос :-)
[18:42:34] <vlad2> В зеркале, кстати, тоже все не так однозначно ;)
[18:42:36] <alexey.veselovsky> по идее должна быть жопа ;-)
[18:43:39] <vlad2> Зато там есть паскаль ;)
[18:43:49] <alexey.veselovsky> Да!
[18:44:20] <alexey.veselovsky> В современных редакторах редко встретишь поддержку чего-то паскалеподобного.
[18:47:14] <alexey.veselovsky> "надо определить какие-то рамки в работе над проектом
после которых ведущий разработчик получает право убивать"
[18:48:07] <vlad2> Хе-хе.
[18:48:28] <vlad2> И поставить введущим разработчиком info21 ;)
[18:48:50] <alexey.veselovsky> Да он же не разработчик :-)
[19:45:38] <alexey.veselovsky> vlad2: http://oberspace.dyndns.org/index.php/topic,363.msg9792.html#msg9792
[19:56:11] <vlad2> Не может быть :) Это ж очевидный ляп.
[19:56:26] <alexey.veselovsky> Дык вчитайся :-)
[19:58:41] <alexey.veselovsky> http://oberspace.dyndns.org/index.php/topic,363.msg9793.html#msg9793
[19:58:45] <alexey.veselovsky> вот, уточнизм.
[20:07:42] <alexey.veselovsky> А в редакции от 2012 года вообще шиза
[20:07:55] <alexey.veselovsky> Там же Вирт ввел еще один целочисленный тип - BYTE
[20:08:09] <alexey.veselovsky> И там где этот тип описывается, он пишет: The type BYTE is compatible with the type INTEGER, and vice-versa.
[20:08:15] <alexey.veselovsky> ога
[20:08:54] <alexey.veselovsky> но одновременно с тем в Statement'ах, там где про присваивание, так и осталось, что ТИП ДОЛЖЕН БЫТЬ ОДИН И ТОТ ЖЕ У ЛЕВОЙ И ПРАВОЙ ЧАCТИ!
[20:09:08] <alexey.veselovsky> То есть Вирт противоречит сам себе там
[20:09:35] <alexey.veselovsky> Впрочем, он эту редакцию от 2012 года в народ не пустил, так что возможно это черновик.
[20:09:41] <alexey.veselovsky> (я так надеюсь)
[20:16:53] <vlad2> Да, ему 2012 год вообще странный.
[20:18:34] <alexey.veselovsky> вообще, заметно что Вирт постепенно избавляется от иерархий везде
[20:18:41] <alexey.veselovsky> От иерарахий типов
[20:18:47] <alexey.veselovsky> От вложенных процедур
[20:19:02] <alexey.veselovsky> Ранее от избавился от иерархий модулей.
[20:19:14] <alexey.veselovsky> (в Модуле-2 они были)
[20:20:07] <alexey.veselovsky> Это все безусловно упрощает компилятор :-)
[20:20:33] <alexey.veselovsky> И, возможно, даже снижает порог вхождения в язык.
[20:20:43] <alexey.veselovsky> Правда код потом выглядит как дерьмо, но это не важно ;-)
[20:21:55] <vlad2> Ну не нужно ему ООП :) Вот выпилит наследование записей - можно будет знатно потроллить оборонкоровцев ;)
[20:22:05] <alexey.veselovsky> :-)
[20:22:14] <alexey.veselovsky> Когда он операционку писал - было нужно
[20:22:20] <alexey.veselovsky> В том числе для гуйни
[20:22:26] <alexey.veselovsky> А теперь интересы у него другие ;-)
[20:22:44] <vlad2> Eue/
[20:22:47] <vlad2> Угу.
[20:22:58] <alexey.veselovsky> Зато он в Обероне-07 пишет как правильно ПРОИЗНОСИТЬ оператор присваивания: "The assignment operator is written as ":=" and pronounced as becomes. "
[20:23:07] <alexey.veselovsky> Он к нему явно не равнодушен ;-)
[20:23:59] <vlad2> Фрейд бы чего-нибудь сказал :)
[20:24:10] <alexey.veselovsky> :-)
[20:25:11] <alexey.veselovsky> Давай Вирту коллективное письмо сочинять :-) А то тяжко с такими вот непонятками реализацию оберона ваять ;-)
[20:25:56] <vlad2> Дык, посылать-то все-равно кто-то один будет.
[20:26:14] <alexey.veselovsky> Кстати, в Обероне 1990 года модуль SYSTEM был обязательным. А в Обероне-07 он уже опциональный.
[20:26:38] <vlad2> Гы.
[20:27:56] <vlad2> Ты сюда постни письмо - подрихтуем и пошлем.
[20:28:20] <vlad2> Можно info21 упомянуть, чтоб Вирт ответил :)
[20:29:00] <alexey.veselovsky> ok. Надо только критическую массу клевет накопить. Еще повожусь с Обероном недельку, клеветнических тем понасоздаю на форуме, тогда содержимое письма наполнится ;-)
[20:29:37] <alexey.veselovsky> Как показывает практика, не попытавшись реализовать компилер (ну или очень плотно и много писать на Обероне-07) на грабли наступить сложно.
[20:29:41] <vlad2> Сильно большим письмом не надо пугать ;)
[20:29:49] <vlad2> Угу.
[20:30:43] <alexey.veselovsky> Причем даже если писать на Обероне-07 много, то на грабли можно не наступить, ибо когда на нем пишешь, то пишешь всегда на диалекте его (то как поняли авторы твоего конкретного компилятора + то как они это дело постарались пофиксить)