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

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


Сообщения - Kemet

Страницы: 1 [2] 3 4 ... 40
16
Общий раздел / Re: Oberon rev. 2015 (февраль)
« : Март 16, 2015, 06:34:06 pm »
Зачем в примере переменные p0, p1, p2?
Очевидно, что это пример - часть программы, в которой опущено созданий переменных разных типов, значения который в дальнейшем и присваиваются p.
Т.е., опущено, например
NEW(p0); NEW(p1); NEW(p2);затем идет код, в котором переменной p приcваиваются нужные значения
TYPE R = RECORD a: INTEGER END ;
 R0 = RECORD (R) b: INTEGER END ;
 R1 = RECORD (R) b: REAL END ;
 R2 = RECORD (R) b: SET END ;
 P = POINTER TO R;
 P0 = POINTER TO R0;
 P1 = POINTER TO R1;
 P2 = POINTER TO R2;

VAR p: P; p0: P0; p1: P1; p2: P2;
...
IF a THEN
  p:= p0;
ELSIF b THEN
  p:= p1
...
END;

CASE p OF
 P0: p0.b := 10 |
 P1: p1.b := 2.5 |
 P2: p2.b := {0, 2}
END
а p0.b := 10
p1.b := 2.5
...
чтобы не производить приведение типа p к производному типу

17
символы в него будут впихивать
ээээ, извиняюсь, кто куда и как будет впихивать?

18
Общий раздел / Re: Oberon-07/13: заметки
« : Июль 14, 2014, 04:43:30 am »
Ну вот, нашел таки место, где оригинальный оберон можно еще больше ограничить ;) Сделал non-VAR аргументы только для чтения: https://github.com/vladfolts/oberonjs/wiki/Eberon-non-VAR-arguments-are-read-only
[/quoteJОни потому "нек только для чтения", что их используют в качестве локальных переменных, для экономии, видимо

19
Общий раздел / Re: Oberon-07/13: заметки
« : Июнь 28, 2014, 03:56:51 am »
2. Автоматическое приведение типа после проверки (аналог WITH), работает только с переменными по месту из пункта 1.
    IF pb IS PDerived THEN
        pb.derivedField := 123;
    END;
Зачем перегружать известные и предсказуемые конструкции всякой чухнёй?

20
Общий раздел / Re: ARM Linux Oberon
« : Апрель 18, 2014, 04:13:08 am »
А можно подробней, что это такое? А то я не разобрался.
Это SharkOberon, работающий поверх Линукса

21
Общий раздел / Oxford Oberon-2 compiler
« : Апрель 17, 2014, 06:00:27 am »
В местном путеводителе не нашел упоминания, нужно бы внести.
Цитировать
At Oxford, we use Oberon as the second language we teach to our undergraduate students (the first one is Haskell). We chose it because of its cleanliness and simplicity, and because of the availability of books that emphasize clear reasoning about programs. Yes, it seems old-fashioned in some ways, but partly that's because it is closer to the hardware than is now the fashion. And it's hard to find another language with a defining document that comes in under 20 pages.

To support this teaching within our Unix-based software laboratory, I have developed from scratch a portable compiler that translates Oberon-2 into bytecode, which can be either interpreted or dynamically translated into machine code. Dynamic translation uses a portable interface modelled on the one in GNU Lightning, but is so far implemented only on x86 machines. The implementation includes a full garbage collector, and comes with profiling tools and a simple GUI debugger.

This implementation of the Oberon-2 language does not include a version of the Oberon-2 operating system and programming environment; instead, programs are edited with the tools of the host operating system and compiled into executables that run like other programs on the host system.

The compiler is written in Objective Caml, and the runtime system is written in C. It is not necessary to have Objective Caml installed in order to use the binary distributions listed below, but it is needed in order to build the system from the source distribution. The build process also uses some scripts written in Tcl.

The current version of the compiler is release 2.9; another page has links to some (slightly outdated) design documents for the compiler.

Oxford Oberon-2 compiler

22
Исходники, кстати, читаются легко, хотя на C# я ни строчки не написал. Вообще, на каком-то этапе появилось ощущение, что читаю код на Активном Обероне )

23
 a Professional or higher version of Visual Studio is required

24
Раз пошла такая пьянка, то вполне востребована и такая форма инициализации:
VAR
  i, j, k : LONGINT := 0 ;

25
Общий раздел / Re: Юмор
« : Декабрь 21, 2013, 06:33:33 am »
Приятель админ...
Просто каждый должен заниматься своим делом.

26
Также, в Активном Обероне есть поддержка "инициализаторов параметров процедур" - т.е. параметров по умолчанию, синтаксис такой же.

27
Сегодня в svn A2 была добавлена поддержка инициализаторов переменных в Активном Обероне. Синтаксис, на текущий момент, такой:
VAR
  i := 1, j := 2, k :=3 : LONGINT;
В отличии от инициализаторов переменных в Модуле-3 (в дополнение к отличию в синтаксисе) - обязательное указание типа переменных.

28
Между прочим, ReactOS писана на 89 процентов на Си.  А с учетом того, что MSVS не умеет C99, становится очевидно почему же там переменные вначале блока объявляют - другие варианты этот язык просто не поддерживает.
На текущий момент код полностью переработан и  переписан на С++, в качестве компилятора используется гнутый компилятор, но попытки перейти на msvc также активно продолжаются.

29
А причем тут глобальность - переменная используется в секции инициализации(телу) модуля, для которой данная переменная локальна. Единственное, что можно было бы сделать - как в старших Оберонах - произвольное расположение секций, тогда секцию VAR с этой переменной можно было бы прижать к телу модуля

Это не единственное, что можно сделать :) Можно набраться критического мышления и смелости и сказать, что секция VAR вообще ненужна, а локальные переменные объявлять по мере надобности, максимально ограничивая их область видимости.
В Модуле-3 секция VAR может предшествовать блоку BEGIN END, находящемуся в любом месте, а также перед FOR - это по репорту, по факту - перед любым блочным оператором, и даже вообще не объявляться, первое присваивание и определит тип переменной, но это явно плохой подход.
Секция VAR заставляет продумывать решение, остальные должны страдать

30
В общем vlad смотри: https://github.com/id-Software/DOOM-3-BFG/blob/master/neo/framework/CmdSystem.cpp
Православные сишники внезапно объявляют переменные всегда (за редким исключением) в начале блока. Вот же парадокс! И с чего это им вздумалось VAR эмулировать?
Можно, ещё, посмотреть в исходники ReactOS и увидеть то же самое.

Страницы: 1 [2] 3 4 ... 40