Автор Тема: PICL - язык от Вирта для PIC  (Прочитано 7823 раз)

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
PICL - язык от Вирта для PIC
« : Ноябрь 08, 2013, 10:51:50 am »
Собственно Вирт разрабатывает языки и для микроконтроллеров тоже, и нет, это не Оберон-07 :-)

http://www-oldurls.inf.ethz.ch/personal/wirth/Articles/Miscellaneous/PICL.pdf
Y = λf.(λx.f (x x)) (λx.f (x x))

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: PICL - язык от Вирта для PIC
« Ответ #1 : Ноябрь 08, 2013, 10:53:43 am »
Да, тут нет NEW. И, поскольку это совсем свежий язык который не обязан как-то походить на предыдущие, тут например названия типов другие, короткие: type = INT | SET | BOOL.
Y = λf.(λx.f (x x)) (λx.f (x x))

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: PICL - язык от Вирта для PIC
« Ответ #2 : Ноябрь 08, 2013, 10:54:39 am »
А вот про реализацию компилятора этого PICL: http://www-oldurls.inf.ethz.ch/personal/wirth/Articles/Miscellaneous/PICLcompiler.pdf
Y = λf.(λx.f (x x)) (λx.f (x x))

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: PICL - язык от Вирта для PIC
« Ответ #3 : Ноябрь 08, 2013, 11:02:26 am »
Замечу, что в этом языке нет CASE. Что подтверждает теорию о том, что CASE Вирт считает лишней конструкцией, и потихоньку её выпиливает.
Y = λf.(λx.f (x x)) (λx.f (x x))

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: PICL - язык от Вирта для PIC
« Ответ #4 : Ноябрь 08, 2013, 11:15:30 am »
А еще там есть query.
Y = λf.(λx.f (x x)) (λx.f (x x))

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: PICL - язык от Вирта для PIC
« Ответ #5 : Ноябрь 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
Y = λf.(λx.f (x x)) (λx.f (x x))

Kemet

  • Hero Member
  • *****
  • Сообщений: 587
    • Просмотр профиля
Re: PICL - язык от Вирта для PIC
« Ответ #6 : Ноябрь 08, 2013, 11:27:20 am »
всё те же вариации на тему Оберона, ну чуть поправлен синтаксис в угоду сишникам, как, видимо, маркетинговый ход.

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: PICL - язык от Вирта для PIC
« Ответ #7 : Ноябрь 08, 2013, 11:31:05 am »
всё те же вариации на тему Оберона, ну чуть поправлен синтаксис в угоду сишникам, как, видимо, маркетинговый ход.
Скорее вариация на тему Алгола - у него был такой же синтаксис.

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

Ну и вообще язык от Оберона существенно отличается. То есть это явно самостоятельный язык, не форк Оберона приспособленный под PIC. Создатель у них один и тот же, что естественно накладывает некий отпечаток. Но не более того.
Y = λf.(λx.f (x x)) (λx.f (x x))

Kemet

  • Hero Member
  • *****
  • Сообщений: 587
    • Просмотр профиля
Re: PICL - язык от Вирта для PIC
« Ответ #8 : Ноябрь 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'ом заканчиваться не может, это часть определения процедуры/функции.

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: PICL - язык от Вирта для PIC
« Ответ #9 : Ноябрь 08, 2013, 11:44:21 am »
Обсуждалось когда-то давным давно:
http://forum.oberoncore.ru/viewtopic.php?f=27&t=973&hilit=picl
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: PICL - язык от Вирта для PIC
« Ответ #10 : Ноябрь 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
Y = λf.(λx.f (x x)) (λx.f (x x))

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: PICL - язык от Вирта для PIC
« Ответ #11 : Ноябрь 08, 2013, 11:47:40 am »
Обсуждалось когда-то давным давно:
http://forum.oberoncore.ru/viewtopic.php?f=27&t=973&hilit=picl
Обсуждением это сложно назвать :-)

Ну, то есть явно мало кто прочел эти 5 страниц, и скорее всего никто не разобрался что там написано.
Y = λf.(λx.f (x x)) (λx.f (x x))

Kemet

  • Hero Member
  • *****
  • Сообщений: 587
    • Просмотр профиля
Re: PICL - язык от Вирта для PIC
« Ответ #12 : Ноябрь 08, 2013, 11:51:11 am »
Скорее вариация на тему Алгола - у него был такой же синтаксис.

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

Ну и вообще язык от Оберона существенно отличается. То есть это явно самостоятельный язык, не форк Оберона приспособленный под PIC. Создатель у них один и тот же, что естественно накладывает некий отпечаток. Но не более того.
После вариаций Оберона для StrongARM и TRM, я не вижу сногсшибательных отличий от Оберона даже в синтаксисе, не говоря уж о семантике, учитывая специфику

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: PICL - язык от Вирта для PIC
« Ответ #13 : Ноябрь 08, 2013, 11:52:47 am »
Обсуждалось когда-то давным давно:
http://forum.oberoncore.ru/viewtopic.php?f=27&t=973&hilit=picl

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

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

Я когда-то листал, но так как с PIC'ами никогда не работал, то практического интереса этот язык не вызвал.
А теоретического -- тем более, непонятно для чего придуманный язык, наверное и правда что бы студентов учить как компиляторы делать...
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: PICL - язык от Вирта для PIC
« Ответ #14 : Ноябрь 08, 2013, 11:55:17 am »
Скорее вариация на тему Алгола - у него был такой же синтаксис.

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

Ну и вообще язык от Оберона существенно отличается. То есть это явно самостоятельный язык, не форк Оберона приспособленный под PIC. Создатель у них один и тот же, что естественно накладывает некий отпечаток. Но не более того.
После вариаций Оберона для StrongARM и TRM, я не вижу сногсшибательных отличий от Оберона даже в синтаксисе, не говоря уж о семантике, учитывая специфику
Ну, я тут вижу отличий примерно столько же сколько у паскаля от Си. Ну, то есть действительно не так уж и много :-) В конце концов это не haskell и даже не с++.
Y = λf.(λx.f (x x)) (λx.f (x x))