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

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Monkey Language
« Ответ #15 : Ноябрь 20, 2012, 12:06:35 pm »
Проверил.

Function Foo:Void()
Return 0
End

Радостно ругается:
Error : Void functions may not return a value.

Так что, требую разъяснений, в каком именно место оно говно в случае strict mode :-)
как от нефиг делать - в викишной статье  он тоже включен (strict)-  однако, что там написано... и endif -нет
В примере из вики нет ни одного return'a который был бы не по делу.
Y = λf.(λx.f (x x)) (λx.f (x x))

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Monkey Language
« Ответ #16 : Ноябрь 20, 2012, 12:08:01 pm »
Посмотрел Monkey language reference.
Да... немного измененный (имхо в худшую сторону) VBA у них получился.
А в каком месте оно на VBA похож? Динамической типизации нет (в Monkey), тихо-умолчательных объявлений переменных тоже нет
Я имел в виду синтаксис. Тихо-умолчательные объявления можно отключить.

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Monkey Language
« Ответ #17 : Ноябрь 20, 2012, 12:11:01 pm »
и endif -нет

Цитировать
If statement

The If statement allows you to conditionally execute a block of statements depending on the result of a series of boolean expressions.

The first boolean expression that evaluates to true will cause the associated block of statements to be executed. No further boolean expressions will be evaluated.

If no boolean expression evaluates to true, then the final else block will be executed if present.

The syntax for the If statement is:

If Expression [ Then ]
     Statements...
ElseIf Expression [ Then ]
     Statements...
Else
     Statements...
EndIf

There may be any number of ElseIf blocks, or none. The final Else block is optional.

End or End If may be used instead of EndIf, and Else If may be used instead of ElseIf.

In addtion, a simple one line version of If is also supported:

If Expression [ Then ] Statement [ Else statement ]
Y = λf.(λx.f (x x)) (λx.f (x x))

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Monkey Language
« Ответ #18 : Ноябрь 20, 2012, 12:11:45 pm »
Посмотрел Monkey language reference.
Да... немного измененный (имхо в худшую сторону) VBA у них получился.
А в каком месте оно на VBA похож? Динамической типизации нет (в Monkey), тихо-умолчательных объявлений переменных тоже нет
Я имел в виду синтаксис. Тихо-умолчательные объявления можно отключить.
Да синтаксис у них у всех алголоподобный :-) То есть отличия от синтаксиса того же оберона минимальны.
Y = λf.(λx.f (x x)) (λx.f (x x))

DIzer

  • Гость
Re: Monkey Language
« Ответ #19 : Ноябрь 20, 2012, 12:16:24 pm »

В примере из вики нет ни одного return'a который был бы не по делу.
  а я не говорю в ДАННОМ случае  про ретурн (хотя ни шиша не понятно зачем возвращать 0 в методах)
где endif? и SetUpdateRate 60 - есть в наличии... в общем говно мультиплатформенное... как будто регулярных какашек мало...

DIzer

  • Гость
Re: Monkey Language
« Ответ #20 : Ноябрь 20, 2012, 12:20:18 pm »
а тут еще и "End or End If may be used instead of EndIf, and Else If may be used instead of ElseIf"-  нафиг, нафиг....

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Monkey Language
« Ответ #21 : Ноябрь 20, 2012, 12:25:02 pm »

В примере из вики нет ни одного return'a который был бы не по делу.
  а я не говорю в ДАННОМ случае  про ретурн (хотя ни шиша не понятно зачем возвращать 0 в методах)
Методы потому что на кой-то хрен имеют тип int. Вроде такого: Method OnRender:Int()
Ну а коли функция задекларирована как возвращающее целое значение, то в теле функции нужно таки что-то вернуть. C точки зрения языка тут все чисто.

где endif?
С этим также разобрались выше. Тут тоже все четко.

и SetUpdateRate 60 - есть в наличии...
А вот с этим надо еще разобраться. Ощущение что дока врет и наличие/отсутствие strict'а никак не влияет на поведение. Моя догадка, кстати, верна - Foo Arg может использоваться только как statement, в то время как Foo(Arg) может использоваться и как выражение.

в общем говно мультиплатформенное... как будто регулярных какашек мало...
На счет говна таки не уверен - пока по ощущениям оно не хуже всего остального с чем приходилось сталкиваться, и явно лучше чем js например.

А регулярных какашек конечно же мало - ни одна регулярная какашка не может того, что может эта бибизьянка.
Y = λf.(λx.f (x x)) (λx.f (x x))

DIzer

  • Гость
Re: Monkey Language
« Ответ #22 : Ноябрь 20, 2012, 12:28:01 pm »
в общем Алексей.. - спорить на эту тему мне неинтересно.. просто, я стою на такой позиции;
 если мы имеем хороший императивный ЯВУ и кусок кода реализующий часть прозрачного алгоритма..- то более менее опытный проггер вполне может разобраться в синтаксисе  базовых яп без всякого руководства..- в этом случае  это не так.. либо как вариант - крайне неудачно  выбран ознакомительный пример  а написавший его - ушлепок.

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Monkey Language
« Ответ #23 : Ноябрь 20, 2012, 12:35:20 pm »
в общем Алексей.. - спорить на эту тему мне неинтересно.. просто, я стою на такой позиции;
 если мы имеем хороший императивный ЯВУ и кусок кода реализующий часть прозрачного алгоритма..- то более менее опытный проггер вполне может разобраться в синтаксисе  базовых яп без всякого руководства..- в этом случае  это не так.. либо как вариант - крайне неудачно  выбран ознакомительный пример  а написавший его - ушлепок.
Ну, с алгоритмом (а где там вообще алгоритм в примере? :-)) разобраться можно без вникания в тонкости синтаксиса (что радует). Все тонкости синтаксиса вывести из конкретного ПРОСТОГО примера - нельзя. В любом языке (пофигу императивный он или нет).

Полностью разоабраться с чем-то без руководства можно только если это нечто ровно то же самое что ты когда-то изучал с руководством :-) Обратных примеров в жизни я не видел вообще (народ который утверждал что с вот этим языком он разобрался без руководства, неизменно сыпался на простейших вопросах по тому же синтаксису и по семантики оного языка + имели ряд очень вредных заблуждений об этом языке (языки были разные, от сей до шарпа и всяких ад-паскалей)). Чем более похож новый язык на тот язык с которым человек уже хорошо знаком, тем СЛОЖНЕЕ ему его узнать (не начать абы как клепать поделия, а именно понять язык). Просто потому, что недостаточно стимула чтобы просто сесть и хотя бы чуточку прочесть доки. Много раз такое видел.
Y = λf.(λx.f (x x)) (λx.f (x x))

DIzer

  • Гость
Re: Monkey Language
« Ответ #24 : Ноябрь 20, 2012, 12:41:21 pm »

Полностью разоабраться ...
и далее по тексту сообщения ... к тому о чем говорил я  не относится.

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Monkey Language
« Ответ #25 : Ноябрь 20, 2012, 12:50:52 pm »

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

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

DIzer

  • Гость
Re: Monkey Language
« Ответ #26 : Ноябрь 20, 2012, 01:00:41 pm »
 ;) Простые задачи в хорошем ЯВУ должны решаться просто и без различных толкований.. (ибо средства используются стандартные ОБЩИЕ для всех императивных ЯВУ) , а что касается "придирок" - так я нашел их всего за пару минут.. работы с  небольшим куском неудачного кода... без всяких описаний... Что касается субьективного восприятия ради бога... мое личное - мультиплатформенность еще не повод копаться в дерьме (и еще не  факт что она не такая же корявая как язык)...

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Monkey Language
« Ответ #27 : Ноябрь 20, 2012, 01:14:59 pm »
;) Простые задачи в хорошем ЯВУ должны решаться просто и без различных толкований.. (ибо средства используются стандартные ОБЩИЕ для всех императивных ЯВУ) ,
Дык оно и решается :-) То что накопано тобой не представляет какой-либо проблемы для кодинга и понимания того что накодил кто-то там. То есть вообще гроша выеденного и яйца ломанного не стоит ;-)

Кроме того, у меня смутное ощущение, что под императивными языками ты подразумеваешь лишь языки алгольной группы, что, в общем то, не верно. :-)

а что касается "придирок" - так я нашел их всего за пару минут.. работы с  небольшим куском неудачного кода... без всяких описаний... Что касается субьективного восприятия ради бога... мое личное - мультиплатформенность еще не повод копаться в дерьме (и еще не  факт что она не такая же корявая как язык)...
У тебя просто нет таких задач, которые реально требовали бы мультиплатформенности. А у меня есть. И немного своеобразный синтаксис (а в каком ЯП оне НЕ своеобразный? у каждого свои особенности к которым привыкать) это такая мелочь по сравнению с теми проблеммами которые он потенциально может решить..

А так да, естественно пробовать надо. По описанию языка никогда не поймешь насколько он работоспособен под разные платформы. Вроде декларируется что он лучше, в плане одинаковости поведения под разными платформами, того же haxe который мне до того некоторые в джаббере рекламировали :-)

PS. Нет, конечно кайфа с написания кода на этом языке не получишь. Не вставляет оно. Вот то ли дело C++ современный... :-)
Y = λf.(λx.f (x x)) (λx.f (x x))

DIzer

  • Гость
Re: Monkey Language
« Ответ #28 : Ноябрь 20, 2012, 01:29:01 pm »

Дык оно и решается :-) То что накопано тобой не представляет какой-либо проблемы для кодинга и понимания того что накодил кто-то там. То есть вообще гроша выеденного и яйца ломанного не стоит ;-)

Кроме того, у меня смутное ощущение, что под императивными языками ты подразумеваешь лишь языки алгольной группы, что, в общем то, не верно. :-)

1. Это просто "грязь" - которой быть не должно.
2. У вас не смутное.. у вас - мутное ощущение.. а  я говорю про яп для которых алгоритм определен как конечная детерминированная последовательность действий
, четко определено понятие типа данных, переменной, значений, оператора присваивания, условного оператора, циклического оператора, и подпрограмм..- это базовый набор который  позволяет реализовать любой алгоритм..

PS. Нет, конечно кайфа с написания кода на этом языке не получишь. Не вставляет оно. Вот то ли дело C++ современный... :-)
Чужая душа - потемки... я вот никогда не понимал Хаскилеров(рационально).. с моей точки зрения  это формазонство чистой воды.

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Monkey Language
« Ответ #29 : Ноябрь 20, 2012, 01:35:54 pm »
1. Это просто "грязь" - которой быть не должно.
Но она есть. В любом языке.

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

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