Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - vlad

Страницы: 1 ... 9 10 [11] 12 13 ... 93
151
Общий раздел / Re: Oberon-07/13: заметки
« : Январь 26, 2014, 05:41:02 pm »
При том, что труЪ оберонщики FOR не любят, ни разу не упоминалась такая ущербность данного конструкта (в оберновской инкарнации):

FOR нельзя использовать для итерирования по пустой последовательности.

FOR i := 0 TO LEN(array) - 1 DO

" - 1" всегда напрягало, теперь понятно в чем подвох.

152
Общий раздел / Re: Oberon-07/13: заметки
« : Январь 24, 2014, 06:37:24 am »
Так это уже код на "ебероне"? На обероне он был бы ещё больше -- в куче процедур слово BEGIN отсутствует...

Отсутствующий BEGIN всегда был в О7, это не моя придумка. В ебероне пока только методы добавлены, больше никаких изменений по сравнению с оригинальным Виртовским О7. И, кстати, да - без методов кода было бы еще больше, причем такого, мясного...

153
Общий раздел / Re: Oberon-07/13: заметки
« : Январь 23, 2014, 10:44:17 pm »
Из последних наблюдений:
- надо чего-то делать с синтаксисом вызова функции: "f().g()" не написать и это задалбывает особенно в свете необходимости объявлять промежуточные переменные в секции VAR.
- жестокий копипаст - куча почти одинакового текста
- локальные функции почти бесполезны без возможности передать их хотя бы вниз по стеку (пришлось наплодить кучу сугубо локальных функций в глобально скопе).

154
Общий раздел / Re: Oberon-07/13: заметки
« : Январь 23, 2014, 10:38:11 pm »
Переписал oberon.js. Получился вот такой ужос: https://github.com/vladfolts/oberonjs/blob/master/src/ob/Operator.ob. Оригинал: https://github.com/vladfolts/oberonjs/blob/fb3cf7ea53bfe3d8972c3df1fed864ae9d4188b4/src/operator.js. Исходник увеличился в 3 раза. Любители синтаксического оверхеда могут прокомментировать и поправить :)

155
Общий раздел / Re: Online компилятор Oberon-07/11.
« : Январь 22, 2014, 05:05:58 pm »
Неужели данная проверка сложнее, чем уже написанный компилятор, или это личное убеждение?

Проверку добавить не сложно. Так же как и кучу других хороших вещей. Проверка обяазна быть в хорошем современном языке (js - говно еще раз). Просто оно неприоритетное. Если кого-то сильно парит - можно всегда скачать исходниги и добавить.

156
Общий раздел / Re: Online компилятор Oberon-07/11.
« : Январь 22, 2014, 04:05:39 pm »
По умолчанию, компилировать со всеми проверками. Добавить флаг, компилировать без проверок. Написал потестил, и скомпилировал без проверок. Особенно когда циклов много, ищи где там, что переполнилось.

Да, есть такая проблема. Просто она не приоритетная. Потому что:
1. Сам репорт ничего не говорит про проверки. Т.е., текущая реализация никак не противоречит оригинальному репорту. Так что вообще говоря лучше начинать с убеждения Вирта в важности таких проверок и необходимости включения их в репорт.
2. В случае компиляции в JS получаемый undefined behavior конечно неприятен, но не настолько фатален как в случае native кода - память не портится (пресловутая герметичность сохраняется).
3. Решение этой проблемы сильно зависит от того, к чему придет компилятор в плане генерации кода. И от того к чему придут браузеры. В JS уже есть типизированные массивы, возможно добавят и возможность проверки индексов - в этом случае проблема решится автоматически.

157
Общий раздел / Re: Online компилятор Oberon-07/11.
« : Январь 22, 2014, 02:10:29 pm »
Происходит переполнение, потому и сбрасывается в ноль, предположение. Возможно проверка есть в динамике. Но лучше такое ловить на стадии компиляции. Так как такое значение, нереально для диапазона INTEGER. Ну и выдавать сообщение об ошибке.

Там используется какая-то стандартная JS функция для парсинга числа. Вот ей пофиг на переполнения (как обычно в JS). Надо переписывать на свою реализацию.

158
Общий раздел / Re: Online компилятор Oberon-07/11.
« : Январь 22, 2014, 02:07:54 pm »
JS динамический язык, странно, что сам интерпритатор JS не сообщает об ошибке. Или в JS  это нормально?

Да, это нормально для JS. Думал об этой проблеме, но пока не знаю что делать. Проверку на уровне JS не врубить, делать вручную - будет крайне неэффективно.

159
Общий раздел / Re: Oberon-07/13: заметки
« : Январь 14, 2014, 02:43:02 pm »
Наконец-то есть возможность не объяснять, почему тело у if, while всегда надо заключать в фигурные скобки.

Просто не надо городить трехэтажные if'ы. Тогда и проблем не будет, которые пытаются решить обязательными фигурными скобками.

P.S. Знаю о таком "правиле", никогда не пользовался, ни разу на грабли не наступал.

160
Общий раздел / Re: Oberon-07/13: заметки
« : Январь 13, 2014, 05:35:45 pm »
Единственный RETURN должен быть объявлен религиозным фетишем и убран. Понятно зачем Вирт его хотел, но цель не оправдывает средства. Появление неестественных дополнительных переменных (или функций), многовложенных IF и переусложненных условий не оправдывают желания не допустить неправильного использования множественного RETURN.

P.S. Потом постараюсь привести кусок переписанного кода.

161
Общий раздел / Re: Oberon-07/13: заметки
« : Январь 13, 2014, 05:28:05 pm »
Очень не хватает операции проверки типа, совмещенной с получением доступа к этому типу (хотя бы в виде WITH или недокументированного CASE). Из-за этого код становится заведомо неэффективным и подверженным опискам:
IF p IS T THEN
    p(T).field := 123; (вот здесь можно вместо T написать T2 и получить ошибку в рантайме *)
END;

Проверка здесь делается два раза (присвоить поле, если p нужного типа), хотя с точки зрения желаемого результата - достаточно одной.

162
Общий раздел / Re: Oberon-07/13: заметки
« : Январь 13, 2014, 05:19:53 pm »
Попытка использовать в параметрах процедур рекорды вместо указательных типов для придания им семантики ненулевых указателей (по примеру С++).
PROCEDURE p(r: Record); (* r не может быть NIL *)

Не прокатило, потому что зачастую требуется перейти опять к указательному типу - чтобы сравнить с другим указателем или чтобы присвоить полю-указателю или чтобы вернуть указатель.  И если в случае C++ это можно сделать (операция взятия адреса), то в случае оберона - нельзя.

Понятно, что операция взятия адреса переменной не аллоцированной через NEW небезопасна, но вот сравнение с другим указателем - вполне безопасно.

163
Общий раздел / Oberon-07/13: заметки
« : Январь 13, 2014, 05:12:43 pm »
Буду кидать в эту тему впечатления от переписывания компилятора на оберон. С целью пересмотреть потом на предмет улучшений языка.

164
Общий раздел / Re: Популярность языков в 2013
« : Январь 11, 2014, 11:22:18 pm »
На этот раз это результаты опроса в твиттере.

А чего, оберонов там совсем нет, или я не нашел?

165
Общий раздел / Re: Online компилятор Oberon-07/11.
« : Январь 10, 2014, 04:32:44 pm »
Хотя кажется не для вложенных процедур, тоже всегда указывает на 1ую строку (по крайней мере ошибка попадалась). Если надо, попробую более точно определить (может я чего не догрузил из репозитария)

Да, я видел такое не одни раз. Все руки не дошли. Если наткнешься на конкретный пример - запиши в issue плз.

Страницы: 1 ... 9 10 [11] 12 13 ... 93