Oberon space

General Category => Общий раздел => Тема начата: valexey_u от Ноябрь 08, 2013, 10:51:50 am

Название: PICL - язык от Вирта для PIC
Отправлено: valexey_u от Ноябрь 08, 2013, 10:51:50 am
Собственно Вирт разрабатывает языки и для микроконтроллеров тоже, и нет, это не Оберон-07 :-)

http://www-oldurls.inf.ethz.ch/personal/wirth/Articles/Miscellaneous/PICL.pdf
Название: Re: PICL - язык от Вирта для PIC
Отправлено: valexey_u от Ноябрь 08, 2013, 10:53:43 am
Да, тут нет NEW. И, поскольку это совсем свежий язык который не обязан как-то походить на предыдущие, тут например названия типов другие, короткие: type = INT | SET | BOOL.
Название: Re: PICL - язык от Вирта для PIC
Отправлено: valexey_u от Ноябрь 08, 2013, 10:54:39 am
А вот про реализацию компилятора этого PICL: http://www-oldurls.inf.ethz.ch/personal/wirth/Articles/Miscellaneous/PICLcompiler.pdf
Название: Re: PICL - язык от Вирта для PIC
Отправлено: valexey_u от Ноябрь 08, 2013, 11:02:26 am
Замечу, что в этом языке нет CASE. Что подтверждает теорию о том, что CASE Вирт считает лишней конструкцией, и потихоньку её выпиливает.
Название: Re: PICL - язык от Вирта для PIC
Отправлено: valexey_u от Ноябрь 08, 2013, 11:15:30 am
А еще там есть query.
Название: Re: PICL - язык от Вирта для PIC
Отправлено: valexey_u от Ноябрь 08, 2013, 11:22:00 am
Также там интересен синтаксис например объявления переменных:
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
Название: Re: PICL - язык от Вирта для PIC
Отправлено: Kemet от Ноябрь 08, 2013, 11:27:20 am
всё те же вариации на тему Оберона, ну чуть поправлен синтаксис в угоду сишникам, как, видимо, маркетинговый ход.
Название: Re: PICL - язык от Вирта для PIC
Отправлено: valexey_u от Ноябрь 08, 2013, 11:31:05 am
всё те же вариации на тему Оберона, ну чуть поправлен синтаксис в угоду сишникам, как, видимо, маркетинговый ход.
Скорее вариация на тему Алгола - у него был такой же синтаксис.

Уж чего-чего, а маркетинговых ходов Вирт никогда не далал, и на поводу рынка не шел :-)

Ну и вообще язык от Оберона существенно отличается. То есть это явно самостоятельный язык, не форк Оберона приспособленный под PIC. Создатель у них один и тот же, что естественно накладывает некий отпечаток. Но не более того.
Название: Re: PICL - язык от Вирта для PIC
Отправлено: Kemet от Ноябрь 08, 2013, 11:41:31 am
А вот пример функции:
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'ом заканчиваться не может, это часть определения процедуры/функции.
Название: Re: PICL - язык от Вирта для PIC
Отправлено: Geniepro от Ноябрь 08, 2013, 11:44:21 am
Обсуждалось когда-то давным давно:
http://forum.oberoncore.ru/viewtopic.php?f=27&t=973&hilit=picl
Название: Re: PICL - язык от Вирта для PIC
Отправлено: valexey_u от Ноябрь 08, 2013, 11:46:36 am
А вот пример функции:
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
Название: Re: PICL - язык от Вирта для PIC
Отправлено: valexey_u от Ноябрь 08, 2013, 11:47:40 am
Обсуждалось когда-то давным давно:
http://forum.oberoncore.ru/viewtopic.php?f=27&t=973&hilit=picl
Обсуждением это сложно назвать :-)

Ну, то есть явно мало кто прочел эти 5 страниц, и скорее всего никто не разобрался что там написано.
Название: Re: PICL - язык от Вирта для PIC
Отправлено: Kemet от Ноябрь 08, 2013, 11:51:11 am
Скорее вариация на тему Алгола - у него был такой же синтаксис.

Уж чего-чего, а маркетинговых ходов Вирт никогда не далал, и на поводу рынка не шел :-)

Ну и вообще язык от Оберона существенно отличается. То есть это явно самостоятельный язык, не форк Оберона приспособленный под PIC. Создатель у них один и тот же, что естественно накладывает некий отпечаток. Но не более того.
После вариаций Оберона для StrongARM и TRM, я не вижу сногсшибательных отличий от Оберона даже в синтаксисе, не говоря уж о семантике, учитывая специфику
Название: Re: PICL - язык от Вирта для PIC
Отправлено: Geniepro от Ноябрь 08, 2013, 11:52:47 am
Обсуждалось когда-то давным давно:
http://forum.oberoncore.ru/viewtopic.php?f=27&t=973&hilit=picl

Обсуждением это сложно назвать :-)

Ну, то есть явно мало кто прочел эти 5 страниц, и скорее всего никто не разобрался что там написано.

Я когда-то листал, но так как с PIC'ами никогда не работал, то практического интереса этот язык не вызвал.
А теоретического -- тем более, непонятно для чего придуманный язык, наверное и правда что бы студентов учить как компиляторы делать...
Название: Re: PICL - язык от Вирта для PIC
Отправлено: valexey_u от Ноябрь 08, 2013, 11:55:17 am
Скорее вариация на тему Алгола - у него был такой же синтаксис.

Уж чего-чего, а маркетинговых ходов Вирт никогда не далал, и на поводу рынка не шел :-)

Ну и вообще язык от Оберона существенно отличается. То есть это явно самостоятельный язык, не форк Оберона приспособленный под PIC. Создатель у них один и тот же, что естественно накладывает некий отпечаток. Но не более того.
После вариаций Оберона для StrongARM и TRM, я не вижу сногсшибательных отличий от Оберона даже в синтаксисе, не говоря уж о семантике, учитывая специфику
Ну, я тут вижу отличий примерно столько же сколько у паскаля от Си. Ну, то есть действительно не так уж и много :-) В конце концов это не haskell и даже не с++.
Название: Re: PICL - язык от Вирта для PIC
Отправлено: Kemet от Ноябрь 08, 2013, 11:56:35 am
Видимо, описка, потому что REPEAT определен как RepeatStatement  = REPEAT StatSeq (UNTIL condition | END)
т.е. RETURN'ом заканчиваться не может, это часть определения процедуры/функции.
Там скорее всего не RETURN cnt=0, а UNTIL cnt=0
[/quote]Наверное. Действительно, в документах Вирта много ошибок )
Название: Re: PICL - язык от Вирта для PIC
Отправлено: valexey_u от Ноябрь 08, 2013, 11:58:04 am
Наверное. Действительно, в документах Вирта много ошибок )
Вероятно именно поэтому эти документы такие маленькие :-) Нет худа без добра.