Автор Тема: Monkey Language  (Прочитано 27240 раз)

DIzer

  • Гость
Re: Monkey Language
« Ответ #30 : Ноябрь 20, 2012, 01:55:18 pm »
1. Это просто "грязь" - которой быть не должно.
Но она есть. В любом языке.

2. У вас не смутное.. у вас - мутное ощущение.. а  я говорю про яп для которых алгоритм определен как конечная детерминированная последовательность действий
То есть о не полных по Тьюрингу? :-) Иначе привет задача о останове - проанализировав только код нельзя прийти к выводу завершится программа или нет когда-нибудь (в общем случае).

, четко определено понятие типа данных, переменной, значений, оператора присваивания, условного оператора, циклического оператора, и подпрограмм..- это базовый набор который  позволяет реализовать любой алгоритм..
Это сильно избыточный набор.  К тому же понятие типа данных к императивщине отношения не имеет. Я ж говорю - у тебя понятия о императивщине исключительно в рамках алгольной группы языков.
1. не на простых задачах
2. полнота - на кусках кода не определяется..
3. нет неизбыточный.. без него умозаключения по куску кода нельзя делать(нужно читать описание)..  а с каких пор  скажем СИ стал относится к алгольной группе?

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Monkey Language
« Ответ #31 : Ноябрь 20, 2012, 02:08:57 pm »
1. не на простых задачах
Ну, скажем в том же обероне я до сих пор спотыкаюсь на точказапятых. Где их надо ставить, а где нет. Куда уж проще то? :-)

Цитировать
2. полнота - на кусках кода не определяется..
Если в этом куске кода торчит while, то все, привет.

Цитировать
3. нет неизбыточный.. без него умозаключения по куску кода нельзя делать(нужно читать описание)..
Описание чего?

Цитировать
а с каких пор  скажем СИ стал относится к алгольной группе?
С самых начальных пор. Algol 60->CPL->BCPL->B->C
Собственно в сях стиль объявления переменных вида: "тип идентификатор" (вместо "индетификатор: тип") именно от Алгола пошел.
Y = λf.(λx.f (x x)) (λx.f (x x))

DIzer

  • Гость
Re: Monkey Language
« Ответ #32 : Ноябрь 20, 2012, 02:30:32 pm »
1. не на простых задачах
Ну, скажем в том же обероне я до сих пор спотыкаюсь на точказапятых. Где их надо ставить, а где нет. Куда уж проще то? :-)

Цитировать
2. полнота - на кусках кода не определяется..
Если в этом куске кода торчит while, то все, привет.

Цитировать
3. нет неизбыточный.. без него умозаключения по куску кода нельзя делать(нужно читать описание)..
Описание чего?

Цитировать
а с каких пор  скажем СИ стал относится к алгольной группе?
С самых начальных пор. Algol 60->CPL->BCPL->B->C
Собственно в сях стиль объявления переменных вида: "тип идентификатор" (вместо "индетификатор: тип") именно от Алгола пошел.
1.Чему привет?
вот  код
...
int a=10, b=15, t;
while (b != 0){
t=a;
a=b;
b=t % a;
}
printf("%i",a);
...
- кого встречаем?
2. Языка естественно.
3. По моей  он стоит особняком..


valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Monkey Language
« Ответ #33 : Ноябрь 20, 2012, 02:31:14 pm »
Если кому интересно, то вот весьма полная хронология языков программирования (да, все значимые обероны там есть, в том числе и компонентный паскаль) с указанием на чем какой язык базировался: http://en.wikipedia.org/wiki/Timeline_of_programming_languages

Си - дважды потомок Алгола (алгола 60 и алгола 68). И уж тем более С++ (он базируется на сях, a также на Симуле, которая сама по себя является расширением Алгола-60). А про всякие жабы я вообще молчу :-)
Y = λf.(λx.f (x x)) (λx.f (x x))

DIzer

  • Гость
Re: Monkey Language
« Ответ #34 : Ноябрь 20, 2012, 02:34:41 pm »
Си - дважды потомок Алгола (алгола 60 и алгола 68). И уж тем более С++ (он базируется на сях, a также на Симуле, которая сама по себя является расширением Алгола-60). А про всякие жабы я вообще молчу :-)
   ;D а по ссылке  этого не скажешь...

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Monkey Language
« Ответ #35 : Ноябрь 20, 2012, 02:35:47 pm »
Да, и я это все подтверждаю - я таки читал и спеку на Алгол-60 и спеку на BCPL/B и спеки на первые версии Сей - это считай один и тот же язык.
Скажем переменные там объявляются единообразно абсолютно - тип индентификатор, причем все это в едином блоке до тела функции (до первого "begin" или там { ).

Я слабо себе представляю как можно отнести Си к какой-то другой группе языков :-) Ну разве что начать делить алгольную группу на более мелкие подгруппы. (типа вот они все алгольные, но алгольная группа состоит вот из таких вот подгрупп: ... )
Y = λf.(λx.f (x x)) (λx.f (x x))

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Monkey Language
« Ответ #36 : Ноябрь 20, 2012, 02:41:55 pm »
Си - дважды потомок Алгола (алгола 60 и алгола 68). И уж тем более С++ (он базируется на сях, a также на Симуле, которая сама по себя является расширением Алгола-60). А про всякие жабы я вообще молчу :-)
   ;D а по ссылке  этого не скажешь...
Что это?

1963    CPL   Barron, Strachey, et al.                                ALGOL 60
1967    BCPL  Richards                                                CPL
1969    B     Ken Thompson, with contributions from Dennis Ritchie    BCPL
1972    C     Dennis Ritchie                                          B, BCPL, ALGOL 68

По плюсам, думаю сам осилишь.
Y = λf.(λx.f (x x)) (λx.f (x x))

DIzer

  • Гость
Re: Monkey Language
« Ответ #37 : Ноябрь 20, 2012, 02:48:50 pm »

По плюсам, думаю сам осилишь.
не .. не осилю ибо идя по этой дорожке можно уйти далеко.. от  того что нужно на практике..

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Monkey Language
« Ответ #38 : Ноябрь 20, 2012, 05:11:03 pm »
Пощупал на практике сий чудо-язык - вполне себе ничего так. Генерируемый код вполне вменяем и даже человекочитаем. Тяжелых либ за собой оно не таскает, что не может не радовать. Hello world в случае выбора платформы stdcpp получается порядка 33 Кб (бинарь нативный). Компилируется быстро. Очень быстро.

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

Из замеченного забавного: компилятор ленив. То есть те функции которые не используются он даже и не пытается скомпилировать (единственное что проверяется - синтаксическая корректность). Следовательно в неиспользуемых функциях вполне могут сидеть ошибки типов. До тех пор пока их никто не использует - все будет собираться. Как только напишешь где-то их вызов - будет ошибка компиляции. Замечу, что на безопасность такая странность никак не влияет. Хотя и не привычно конечно.
Y = λf.(λx.f (x x)) (λx.f (x x))

DIzer

  • Гость
Re: Monkey Language
« Ответ #39 : Ноябрь 20, 2012, 05:59:53 pm »

Из замеченного забавного: компилятор ленив. То есть те функции которые не используются он даже и не пытается скомпилировать (единственное что проверяется - синтаксическая корректность). Следовательно в неиспользуемых функциях вполне могут сидеть ошибки типов. До тех пор пока их никто не использует - все будет собираться. Как только напишешь где-то их вызов - будет ошибка компиляции. Замечу, что на безопасность такая странность никак не влияет. Хотя и не привычно конечно.
Не понял,.. а как же модульность типа "модульный статически типизированный язык " - в каком смысле она понимается? - если в обыденном... то что получается сформирую я модуль... скомпилю, отправлю заказчику.. а там кака?
« Последнее редактирование: Ноябрь 20, 2012, 06:01:59 pm от DIzer »

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Monkey Language
« Ответ #40 : Ноябрь 20, 2012, 06:21:52 pm »
equals и assignment один знак "="  :D
Не смущает, valexey?

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Monkey Language
« Ответ #41 : Ноябрь 20, 2012, 06:29:47 pm »
equals и assignment один знак "="  :D
Не смущает, valexey?
В этом языке - нет. Тут четкое разделение на statement и expression, и одно другим быть не может. А вот если в Си или хаскелле equals и assignment сделать одним значком, то получится бардак.
Y = λf.(λx.f (x x)) (λx.f (x x))

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Monkey Language
« Ответ #42 : Ноябрь 20, 2012, 06:34:04 pm »
Если ты в теме, то объясни плиз безграмотному. Почему в обероне разные знаки? Там ведь тоже вроде чОткое разделение.

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Monkey Language
« Ответ #43 : Ноябрь 20, 2012, 06:40:45 pm »
Если ты в теме, то объясни плиз безграмотному. Почему в обероне разные знаки? Там ведь тоже вроде чОткое разделение.
Чтобы упростить компилятор.
Y = λf.(λx.f (x x)) (λx.f (x x))

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Monkey Language
« Ответ #44 : Ноябрь 20, 2012, 06:45:08 pm »
Типа чтоб енто еще на уровне лексера разруливалось?