Oberon space
General Category => Общий раздел => Тема начата: valexey_u от Ноябрь 08, 2013, 10:51:50 am
-
Собственно Вирт разрабатывает языки и для микроконтроллеров тоже, и нет, это не Оберон-07 :-)
http://www-oldurls.inf.ethz.ch/personal/wirth/Articles/Miscellaneous/PICL.pdf
-
Да, тут нет NEW. И, поскольку это совсем свежий язык который не обязан как-то походить на предыдущие, тут например названия типов другие, короткие: type = INT | SET | BOOL.
-
А вот про реализацию компилятора этого PICL: http://www-oldurls.inf.ethz.ch/personal/wirth/Articles/Miscellaneous/PICLcompiler.pdf
-
Замечу, что в этом языке нет CASE. Что подтверждает теорию о том, что CASE Вирт считает лишней конструкцией, и потихоньку её выпиливает.
-
А еще там есть query.
-
Также там интересен синтаксис например объявления переменных:
VariableDeclaration = type ident {"," ident}.
То есть например так:
INT a,b;
А вот пример функции:
PROCEDURE NofBits(INT x): INT;
INT n, cnt;
BEGIN cnt := 0; n := 8;
REPEAT
IF x.0 THEN INC cnt END ;
ROR x; DEC cnt
RETURN cnt = 0
END NofBits
-
всё те же вариации на тему Оберона, ну чуть поправлен синтаксис в угоду сишникам, как, видимо, маркетинговый ход.
-
всё те же вариации на тему Оберона, ну чуть поправлен синтаксис в угоду сишникам, как, видимо, маркетинговый ход.
Скорее вариация на тему Алгола - у него был такой же синтаксис.
Уж чего-чего, а маркетинговых ходов Вирт никогда не далал, и на поводу рынка не шел :-)
Ну и вообще язык от Оберона существенно отличается. То есть это явно самостоятельный язык, не форк Оберона приспособленный под PIC. Создатель у них один и тот же, что естественно накладывает некий отпечаток. Но не более того.
-
А вот пример функции:
PROCEDURE NofBits(INT x): INT;
INT n, cnt;
BEGIN cnt := 0; n := 8;
REPEAT
IF x.0 THEN INC cnt END ;
ROR x; DEC cnt
RETURN cnt = 0
END NofBits
Видимо, описка, потому что REPEAT определен как RepeatStatement = REPEAT StatSeq (UNTIL condition | END)
т.е. RETURN'ом заканчиваться не может, это часть определения процедуры/функции.
-
Обсуждалось когда-то давным давно:
http://forum.oberoncore.ru/viewtopic.php?f=27&t=973&hilit=picl
-
А вот пример функции:
PROCEDURE NofBits(INT x): INT;
INT n, cnt;
BEGIN cnt := 0; n := 8;
REPEAT
IF x.0 THEN INC cnt END ;
ROR x; DEC cnt
RETURN cnt = 0
END NofBits
Видимо, описка, потому что REPEAT определен как RepeatStatement = REPEAT StatSeq (UNTIL condition | END)
т.е. RETURN'ом заканчиваться не может, это часть определения процедуры/функции.
Там скорее всего не RETURN cnt=0, а UNTIL cnt=0
-
Обсуждалось когда-то давным давно:
http://forum.oberoncore.ru/viewtopic.php?f=27&t=973&hilit=picl
Обсуждением это сложно назвать :-)
Ну, то есть явно мало кто прочел эти 5 страниц, и скорее всего никто не разобрался что там написано.
-
Скорее вариация на тему Алгола - у него был такой же синтаксис.
Уж чего-чего, а маркетинговых ходов Вирт никогда не далал, и на поводу рынка не шел :-)
Ну и вообще язык от Оберона существенно отличается. То есть это явно самостоятельный язык, не форк Оберона приспособленный под PIC. Создатель у них один и тот же, что естественно накладывает некий отпечаток. Но не более того.
После вариаций Оберона для StrongARM и TRM, я не вижу сногсшибательных отличий от Оберона даже в синтаксисе, не говоря уж о семантике, учитывая специфику
-
Обсуждалось когда-то давным давно:
http://forum.oberoncore.ru/viewtopic.php?f=27&t=973&hilit=picl
Обсуждением это сложно назвать :-)
Ну, то есть явно мало кто прочел эти 5 страниц, и скорее всего никто не разобрался что там написано.
Я когда-то листал, но так как с PIC'ами никогда не работал, то практического интереса этот язык не вызвал.
А теоретического -- тем более, непонятно для чего придуманный язык, наверное и правда что бы студентов учить как компиляторы делать...
-
Скорее вариация на тему Алгола - у него был такой же синтаксис.
Уж чего-чего, а маркетинговых ходов Вирт никогда не далал, и на поводу рынка не шел :-)
Ну и вообще язык от Оберона существенно отличается. То есть это явно самостоятельный язык, не форк Оберона приспособленный под PIC. Создатель у них один и тот же, что естественно накладывает некий отпечаток. Но не более того.
После вариаций Оберона для StrongARM и TRM, я не вижу сногсшибательных отличий от Оберона даже в синтаксисе, не говоря уж о семантике, учитывая специфику
Ну, я тут вижу отличий примерно столько же сколько у паскаля от Си. Ну, то есть действительно не так уж и много :-) В конце концов это не haskell и даже не с++.
-
Видимо, описка, потому что REPEAT определен как RepeatStatement = REPEAT StatSeq (UNTIL condition | END)
т.е. RETURN'ом заканчиваться не может, это часть определения процедуры/функции.
Там скорее всего не RETURN cnt=0, а UNTIL cnt=0
[/quote]Наверное. Действительно, в документах Вирта много ошибок )
-
Наверное. Действительно, в документах Вирта много ошибок )
Вероятно именно поэтому эти документы такие маленькие :-) Нет худа без добра.