Автор Тема: Модифицированный синтаксис Оберона  (Прочитано 180577 раз)

Vartovyj

  • Full Member
  • ***
  • Сообщений: 197
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #360 : Ноябрь 30, 2012, 09:02:42 am »
казалось безобидной  и "правильной" замены  :=  на  <- возможно разночтение  (разумеется на уровне человеческого восприятия, компилятор эту проблему выловит)
я против этой замены по чисто эстетическим причинам
Цитировать
идея кастомной инициализации переменных в секции VAR, соответствующая философии языка, - ведет к появлению исключений
отсутствие этой секции, как в Си ведет к исключениям?
Насчет end и ; это как раз причесывание в стиле питона и луа, оставляя особенности оберона.

DIzer

  • Гость
Re: Модифицированный синтаксис Оберона
« Ответ #361 : Ноябрь 30, 2012, 10:59:01 am »
Вот видите Kemet
казалось безобидной  и "правильной" замены  :=  на  <- возможно разночтение  (разумеется на уровне человеческого восприятия, компилятор эту проблему выловит)
я против этой замены по чисто эстетическим причинам
Цитировать
идея кастомной инициализации переменных в секции VAR, соответствующая философии языка, - ведет к появлению исключений
отсутствие этой секции, как в Си ведет к исключениям?
Насчет end и ; это как раз причесывание в стиле питона и луа, оставляя особенности оберона.
1. а меня проблемы при интерпретации человеком a <- 1 и а < -1
2.В Обероне переменные определяемые в секции VAR можно считать создаваемыми либо перед выполнением программы, либо в момент вызова процедуры.. и это для ряда задач БЛАГО, в СИ это не так...
Мне не понравился следующий момент - если  возможность занесения в переменную значения  ДО выполнения первой исполняемой инструкции программы, то должна она реализоваться ПОЛНОСТЬЮ (если это допустимо задачей).. а тут мы имеем,  в ряде случаев,  ограничения.. причем, как показал Алексей,  их количество зависит от того, глобальные переменные или локальные...

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #362 : Ноябрь 30, 2012, 11:07:37 am »
1. а меня проблемы при интерпретации человеком a <- 1 и а < -1
Правильно. Поэтому нужно писать так:
a ← 1
Собственно в том же Haskell'e так и пишется. Но при этом в редакторе НАБИРАЕТСЯ <-, что автозаменяется вумным редактором на ←
Y = λf.(λx.f (x x)) (λx.f (x x))

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #363 : Ноябрь 30, 2012, 11:11:54 am »
2.В Обероне переменные определяемые в секции VAR можно считать создаваемыми либо перед выполнением программы, либо в момент вызова процедуры.. и это для ряда задач БЛАГО, в СИ это не так...
В Си и С++ это как раз так.
Точнее, тут нужно уточнить что значит "создаются". Память под них выделяется на стеке в момент вызова функции. А использовать их можно только ниже их места объявления и ровно в их блоке (и во вложенных в нем).
Y = λf.(λx.f (x x)) (λx.f (x x))

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #364 : Ноябрь 30, 2012, 11:19:38 am »
а вообще, господа,  - когда угар веселья  прошел.. может кто то ответит мне..  что мы хотим добиться (кроме развлекалова ) ?
Ну, у меня два направления тут:
1) Рассмотреть варианты как снизить психологический порог вхождения для Оберона (фактический порог и так низок, но народ шугается синтаксиса который у них одновременно ассоциируется с досом и коболом (капс)). Причем сделать это не меняя грамматики, изменив только синтаксис. Язык остается тем же самым. Практика показывает, что народ падок на синтаксис питона. Почему бы и нет? Можно за EBNF'ить похожий синтаксис не меняя ядро грамматики (и тем более не трогая семантику).
2) Рассмотреть возможный пакет дополнений к Оберону, множество маленьких аккуратных дополнений которые могут сделать программирование на нем приятней, а следовательно и надежней. Но тут есть нюанс - до тех пор пока не напишешь на языке хотя бы тысяч 20 строк кода, обсуждать и думать в эту сторону продуктивно не получится. Просто потому что будешь туда тащить свои привычки из других языков. Причем эти 20к строк должны быть про прикладную задачу, а не про очередной компилятор оберона.
Y = λf.(λx.f (x x)) (λx.f (x x))

DIzer

  • Гость
Re: Модифицированный синтаксис Оберона
« Ответ #365 : Ноябрь 30, 2012, 11:21:52 am »
2.В Обероне переменные определяемые в секции VAR можно считать создаваемыми либо перед выполнением программы, либо в момент вызова процедуры.. и это для ряда задач БЛАГО, в СИ это не так...
В Си и С++ это как раз так.
Точнее, тут нужно уточнить что значит "создаются". Память под них выделяется на стеке в момент вызова функции. А использовать их можно только ниже их места объявления и ровно в их блоке (и во вложенных в нем).
Алексей, вы говорите про техническую сторону дела.. я  про логическую (высокоуровневую) -  вот эта строчка "А использовать их можно только ниже их места объявления и ровно в их блоке (и во вложенных в нем)." - на уровне "ящечной" аналогии  эквивалентна.. следующему- переменная появилась (как емкость в которую можно заносить значения) в момент ее определения в каком-то месте (блока) и существует пока мы не выйдем из этого блока.

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #366 : Ноябрь 30, 2012, 11:26:33 am »
2.В Обероне переменные определяемые в секции VAR можно считать создаваемыми либо перед выполнением программы, либо в момент вызова процедуры.. и это для ряда задач БЛАГО, в СИ это не так...
В Си и С++ это как раз так.
Точнее, тут нужно уточнить что значит "создаются". Память под них выделяется на стеке в момент вызова функции. А использовать их можно только ниже их места объявления и ровно в их блоке (и во вложенных в нем).
Алексей, вы говорите про техническую сторону дела.. я  про логическую (высокоуровневую) -  вот эта строчка "А использовать их можно только ниже их места объявления и ровно в их блоке (и во вложенных в нем)." - на уровне "ящечной" аналогии  эквивалентна.. следующему- переменная появилась (как емкость в которую можно заносить значения) в момент ее определения в каком-то месте (блока) и существует пока мы не выйдем из этого блока.
Поэтому я и разделил твое "создаются" на два более точных значения. Ибо зачем гадать? :-)

Кроме того, в С89/90 это именно так как ты описываешь - переменные должны быть объявлены в начале функии, до первого statement'a не являющимся объявлением переменной. Кстати, на нем написано большенство приложений писаных на Си.

Это стало не так начиная с C99 и далее C12.

Ну а плюсы - совсем другая история.
Y = λf.(λx.f (x x)) (λx.f (x x))

DIzer

  • Гость
Re: Модифицированный синтаксис Оберона
« Ответ #367 : Ноябрь 30, 2012, 11:32:37 am »

Поэтому я и разделил твое "создаются" на два более точных значения. Ибо зачем гадать? :-)
Затем, что меня и достаточно многих людей программирование интересует в контексте решаемой задачи.. если для ее решения ДОСТАТОЧНО воспользоваться простыми моделями и средствами.. то нахрена мне нужно знать  "два и более...  точных значений"  ;) - как будто других проблем мало..

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #368 : Ноябрь 30, 2012, 11:46:45 am »

Поэтому я и разделил твое "создаются" на два более точных значения. Ибо зачем гадать? :-)
Затем, что меня и достаточно многих людей программирование интересует в контексте решаемой задачи.. если для ее решения ДОСТАТОЧНО воспользоваться простыми моделями и средствами.. то нахрена мне нужно знать  "два и более...  точных значений"  ;) - как будто других проблем мало..
Ну, э. Меня тоже интересует в контексте решаемой задачи. И это в некоторых случаях принципиально важно в какой момент времени на стеке будет выделена память под массив со 100500 элементами.

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

Vartovyj

  • Full Member
  • ***
  • Сообщений: 197
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #369 : Ноябрь 30, 2012, 11:58:53 am »
Так нужна секция VAR или лучше как в С?

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #370 : Ноябрь 30, 2012, 12:03:06 pm »
Так нужна секция VAR или лучше как в С?
Как в КАКОМ Си?
Y = λf.(λx.f (x x)) (λx.f (x x))

DIzer

  • Гость
Re: Модифицированный синтаксис Оберона
« Ответ #371 : Ноябрь 30, 2012, 12:03:27 pm »

Ну, э. Меня тоже интересует в контексте решаемой задачи. И это в некоторых случаях принципиально важно в какой момент времени на стеке будет выделена память под массив со 100500 элементами.

Ну, а вообще, на этом форуме, в отличие от оборонкоре, высказав свое суждение всегда можно напороться на ответ презренного профессионала, который тонко разбирается в сортах этого дерьма :-)
1. Язык Оберон - не определяет реализацию с нужной вам точностью - соответственно НЕ ПОДХОДИТ(но может подойти его конкретная реализация). Задачи бывают разные...  ЯВУ бывают разные... одни подходят для решения задачи другие нет, одни плохо подходят другие хорошо, третьи плохо.. но есть сторонние библиотеки нивелирующие "плохость" - судить о "плохости" яп на основании какой то задачи можно.. но суждение будет частным...
2. Да и там это тоже было..дело вот в чем.. для задач , решаемых коровятами с помощью КП - эти вопросы не существенны..- но это не значит, что КП даже для таких задач оптимальный выбор, или что эти задачи просты (проще тех которые стоят перед вами)... а мнение "презренного профессионала" (помимо того что оно давит на больные мозоли) им просто чужеродно (ибо непонятно).

Vartovyj

  • Full Member
  • ***
  • Сообщений: 197
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #372 : Ноябрь 30, 2012, 12:13:14 pm »
Так нужна секция VAR или лучше как в С?
Как в КАКОМ Си?
Тогда так вопрос: секция VAR или объявление переменных в любом месте внутри блока с использованием ниже объявления?

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #373 : Ноябрь 30, 2012, 12:47:40 pm »
Так нужна секция VAR или лучше как в С?
Как в КАКОМ Си?
Тогда так вопрос: секция VAR или объявление переменных в любом месте внутри блока с использованием ниже объявления?
Почему не рассматривается объявление переменных вначале процедуры без секции var?
Кроме того, блоков в Обероне нет. Это не Алгол и не Паскаль и не Си.
Y = λf.(λx.f (x x)) (λx.f (x x))

Vartovyj

  • Full Member
  • ***
  • Сообщений: 197
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #374 : Ноябрь 30, 2012, 01:04:30 pm »
Почему не рассматривается объявление переменных вначале процедуры без секции var?
Кроме того, блоков в Обероне нет. Это не Алгол и не Паскаль и не Си.
"Секцию var" рассматриваем и просто как объявление переменных вначале процедуры и как, собственно, выделенную ключевым слов VAR. Если избавляемся от вара и бегина, нужно ли как-то отделять объявление от остального тела процедуры, к примеру ";"?