Автор Тема: Oberon-07/13: заметки  (Прочитано 83393 раз)

dizer

  • Jr. Member
  • **
  • Сообщений: 80
    • Просмотр профиля
Re: Oberon-07/13: заметки
« Ответ #135 : Ноябрь 13, 2014, 09:53:49 pm »
Это естественный вопрос, после того как вы сравнили его с O(n) контейнером - списком, дав характеристику -  not efficient comparing to arrays in some cases

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: Oberon-07/13: заметки
« Ответ #136 : Ноябрь 13, 2014, 10:10:49 pm »
Это естественный вопрос, после того как вы сравнили его с O(n) контейнером - списком, дав характеристику -  not efficient comparing to arrays in some cases

Ну там помимо времени доступа есть и другие параметры - в сравнении с массивами списки неэффективны по используемой памяти и по нагрузке на GC. Не хотелось бы все это расписывать.

dizer

  • Jr. Member
  • **
  • Сообщений: 80
    • Просмотр профиля
Re: Oberon-07/13: заметки
« Ответ #137 : Ноябрь 13, 2014, 10:15:30 pm »

Ну там помимо времени доступа есть и другие параметры - в сравнении с массивами списки неэффективны по используемой памяти и по нагрузке на GC. Не хотелось бы все это расписывать.
  ;) Еще раз попались - в этом нет смысла (если вы конечно не хотите в определении языка закрепить КОНКРЕТНУЮ пользовательскую реализацию), то есть по факту, тут дело не в желании , а в бессмысленности.

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: Oberon-07/13: заметки
« Ответ #138 : Ноябрь 13, 2014, 10:22:02 pm »
Еще раз попались - в этом нет смысла (если вы конечно не хотите в определении языка закрепить КОНКРЕТНУЮ пользовательскую реализацию), то есть по факту, тут дело не в желании , а в бессмысленности.

Ну вот и не буду.

Jordan

  • Sr. Member
  • ****
  • Сообщений: 282
    • Просмотр профиля
Re: Oberon-07/13: заметки
« Ответ #139 : Ноябрь 14, 2014, 01:49:43 pm »
Может вынести array в пространство имён std?

M: ARRAY * OF INTEGER;

Std.M.Add(5);
Std.M.Remove(5);
Std.M.Clear();

Все новые фичи добавлять в такое пространство.

Чем хуже вариант из stl?

M: STD.VECTOR OF INTEGER;
Mas: STD.VECTOR OF INTEGER OF INTEGER; двухмерный

M.PUSH_BACK(idx);
M.PUSH_FRONT(idx);
M.RESERVE(size);
M.SIZE();

и т.д

Ну и SORT добавить. Так как void* то нет. Каждый раз писать заново.
« Последнее редактирование: Ноябрь 14, 2014, 01:51:29 pm от Jordan »

Jordan

  • Sr. Member
  • ****
  • Сообщений: 282
    • Просмотр профиля
Re: Oberon-07/13: заметки
« Ответ #140 : Ноябрь 14, 2014, 01:54:16 pm »
Точнее так.

Может вынести array в пространство имён std?

M: STD.ARRAY OF INTEGER;

M.Add(5);
M.Remove(5);
M.Clear();

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: Oberon-07/13: заметки
« Ответ #141 : Ноябрь 14, 2014, 03:53:55 pm »
Точнее так.

Может вынести array в пространство имён std?

Да не, пока не столько много хлама в глобальном скопе, чтобы дробить по пространствам.

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: Oberon-07/13: заметки
« Ответ #142 : Ноябрь 16, 2014, 04:51:13 am »
Очень не хотел трогать оригинальный синтаксис по мелочам (проще сразу весь поменять, чем пытаться улучшить итерационно), но формализм точек с запятой окончательно утомил. В общем, можно ставить ';' после RETURN и после последнего поля в объявлении записи. Ну и до кучи - не обязательно дублировать имя процедуры в конце. Только для еберона, в оберон режиме все строго по Вирту.
Подробности: https://github.com/vladfolts/oberonjs/wiki/Eberon-syntax-relaxations

dizer

  • Jr. Member
  • **
  • Сообщений: 80
    • Просмотр профиля
Re: Oberon-07/13: заметки
« Ответ #143 : Ноябрь 16, 2014, 01:31:06 pm »
Очень не хотел трогать оригинальный синтаксис по мелочам (проще сразу весь поменять, чем пытаться улучшить итерационно), но формализм точек с запятой окончательно утомил. В общем, можно ставить ';' после RETURN и после последнего поля в объявлении записи. Ну и до кучи - не обязательно дублировать имя процедуры в конце. Только для еберона, в оберон режиме все строго по Вирту.
Подробности: https://github.com/vladfolts/oberonjs/wiki/Eberon-syntax-relaxations
Вот так... взял и перечеркнул труд последних 10 лет Маэстро? - ничего святого Влад,  у вас не осталось...

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: Oberon-07/13: заметки
« Ответ #144 : Ноябрь 16, 2014, 11:10:14 pm »
Вот так... взял и перечеркнул труд последних 10 лет Маэстро? - ничего святого Влад,  у вас не осталось...

Да ничего я не перечеркивал. Если у Вирта и еще кого-то настолько въелось писать имя процедуры в конце, что он не замечает неудобства - пожалуйста. Или если кто-то каждый раз не ставя ';' после RETURN осознает мощность грамматики оберона и гениальность Маэстро - тоже пожалуйста. Нет тут никаких краеугольных камней. Чистой воды прагматизм - зачем плакать и жрать кактус, если можно чуть-чуть подрихтовать грамматику. Это ж не пресловутый "=" вместо ":=" :)

Romiras

  • Sr. Member
  • ****
  • Сообщений: 264
    • Просмотр профиля
    • Romiras Dev Lab
Re: Oberon-07/13: заметки
« Ответ #145 : Ноябрь 21, 2014, 08:40:02 am »
Был удивлён, что в новом Обероне (07) нельзя создавать псевдонимы зарезервированным типам. Например, для обеспечения совместимости с другими компиляторами.
Вследствие этого такой код уже невозможен:

MODULE Test;
  TYPE
    LONGINT = INTEGER;

    Buffer* = POINTER TO BufDesc;
    BufDesc* = RECORD
      len*: LONGINT;
    END;

END Test.

Romiras

  • Sr. Member
  • ****
  • Сообщений: 264
    • Просмотр профиля
    • Romiras Dev Lab
Re: Oberon-07/13: заметки
« Ответ #146 : Ноябрь 21, 2014, 08:29:34 pm »
А что в этом модуле не так?
MODULE TestRecord;

  TYPE
    Buffer* = POINTER TO BufDesc;
    BufDesc* = RECORD
      len*: INTEGER;
    END;

END TestRecord.

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: Oberon-07/13: заметки
« Ответ #147 : Ноябрь 21, 2014, 10:55:52 pm »
Был удивлён, что в новом Обероне (07) нельзя создавать псевдонимы зарезервированным типам.

Да, обсуждали уже здесь - Вирт выпилил беспощадно.

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: Oberon-07/13: заметки
« Ответ #148 : Ноябрь 21, 2014, 10:58:43 pm »
А что в этом модуле не так?

Точка с запятой после последнего филда в рекорде. Такова орининальная грамматика. Пофиксил в ебероне как раз недавно: https://github.com/vladfolts/oberonjs/wiki/Eberon-syntax-relaxations#extra-semicolon-can-be-used-in-record-last-field-declaration

Romiras

  • Sr. Member
  • ****
  • Сообщений: 264
    • Просмотр профиля
    • Romiras Dev Lab
Re: Oberon-07/13: заметки
« Ответ #149 : Ноябрь 21, 2014, 11:21:34 pm »
Блин. А я уже отчёт перечитываю несколько раз.
Спасибо.

Кстати, я тут попробовал компилировать модуль с новым компилятором с Гитхаба
MODULE test;
IMPORT JS;
BEGIN
    JS.alert("Hello, World!")
END test.
ReferenceError: require is not defined