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

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #45 : Январь 09, 2012, 12:21:06 pm »
кстати, понравилось в Аде:
if
........
end if;
имхо улучшает читаемость

В Аде вообще синтаксис весьма и весьма читабелен. То есть читабельней Оберона. При разработке языка там делали упор именно на читабельность. Ядро языка Ада мне очень нравится. А вот дальнейшая эволюция зыка, то что потом вокруг наросло - не очень. Например поддержка ООП там ввели через не правильное место. По крайней мере синтаксически.

Если взять Аду, взять кувалду, и отбить ненужное, нарастить немного недостающего, то можно получить очень приятный язык. Ada lite :-)
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #46 : Январь 09, 2012, 01:21:05 pm »
кстати, понравилось в Аде:
if
........
end if;
имхо улучшает читаемость

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

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #47 : Январь 09, 2012, 01:29:23 pm »
2. В одну строку писать и не надо. Надо писать структурно. Здесь редактор автоматом и обеспечит нужный уровень читабельности.

Только если он будет "фильтровать" всякий мусор :) Типа ненужных объявлений типа и прочих begin/end в данном примере с лямбдой.

Если вдумаетесь, то лаконичность написания ( в ущерб читабельности) возникла именно как необходимость набирать ручками каждый символ.
Если редактор берет на себя рутину представления, то и нафига лаконичность?

Краткость - сестра :) Не надо путать лакончиность и "птичий язык" :)

Vartovyj

  • Full Member
  • ***
  • Сообщений: 197
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #48 : Январь 09, 2012, 04:27:00 pm »
Если взять Аду, взять кувалду, и отбить ненужное, нарастить немного недостающего, то можно получить очень приятный язык. Ada lite :-)
Не, лучше взять оттуда удачные решения и прикрутить к Oberon-M:)

Vartovyj

  • Full Member
  • ***
  • Сообщений: 197
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #49 : Январь 09, 2012, 04:29:37 pm »
Я тоже так когда-то думал :) (в обероне еще в конце процедуры надо ее имя писать). Но на самом деле это борьба со следствием. Первопричина - большие процедуры и многовложенные конструкции (в оберонах, кстати, их очень любят).
То есть от первопричины не уйти:)

igor

  • Sr. Member
  • ****
  • Сообщений: 438
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #50 : Январь 09, 2012, 05:21:41 pm »
Если взять Аду, взять кувалду, и отбить ненужное, нарастить немного недостающего, то можно получить очень приятный язык. Ada lite :-)
Не, лучше взять оттуда удачные решения и прикрутить к Oberon-M:)
И та, и другая затея весьма сомнительны (IMHO). Язык - это не мешок с запчастями, где одни части можно произвольно выкинуть, другие добавить. Оберон, в первую очередь, хорош как раз тем, что он удачно сбалансирован. Малейшие, даже незначительные изменения, по-хорошему надо бы прогонять на множестве задач. Если уж этим заниматься, то начинать нужно с проработки новых концепций. Если же изменения должны коснуться только синтаксиса, то без новых РБНФ разговаривать не о чём.

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #51 : Январь 09, 2012, 05:24:07 pm »
Я тоже так когда-то думал :) (в обероне еще в конце процедуры надо ее имя писать). Но на самом деле это борьба со следствием. Первопричина - большие процедуры и многовложенные конструкции (в оберонах, кстати, их очень любят).
То есть от первопричины не уйти:)

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

Vartovyj

  • Full Member
  • ***
  • Сообщений: 197
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #52 : Январь 09, 2012, 05:31:13 pm »
Если уж этим заниматься, то начинать нужно с проработки новых концепций. Если же изменения должны коснуться только синтаксиса, то без новых РБНФ разговаривать не о чём.
В основном, речь идет о синтаксисе, но возможно и добавление новых концепций.
В начале, думаю, лучше наметить контуры, в том числе позаимствовав удачные решения с других языков. а затем уже можно и к РБНФ приступить.

Peter Almazov

  • Sr. Member
  • ****
  • Сообщений: 482
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #53 : Январь 09, 2012, 05:58:19 pm »
против
sum = map (\a b -> a+b) list
Я, конечно, понимаю, что речь идет о принципе и извиняюсь за оффтопик.
Но, все-таки, зачем писать такую херню и потом повторять ее десять раз.
Если уж приводить иллюстрацию, то хотя бы корректную.

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #54 : Январь 09, 2012, 06:04:44 pm »
И та, и другая затея весьма сомнительны (IMHO). Язык - это не мешок с запчастями, где одни части можно произвольно выкинуть, другие добавить.

А мы не произвольно, мы по выбору. :-)

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

Если уж этим заниматься, то начинать нужно с проработки новых концепций. Если же изменения должны коснуться только синтаксиса, то без новых РБНФ разговаривать не о чём.
Если уж чем-то начинать заниматься, но вначале нужно определиться - зачем это все :-) Чем мы тут собственно и занимаемся. А РБНФ дело совершенно не хитрое (настолько не хитрое, что РБНФ даже не описывает полностью грамматику Оберона).

Ну, например чтобы поменять синтаксис объявления массивов (как тут было предложено) достаточно изменить правило вывода всего одного нетерминала:
ArrayType  =  ARRAY length {"," length} OF type.
Поменять на:
ArrayType  =  type "[" length {"," length} "]".

В результате будет нечто вроде:
a : REAL[10,20,30];
В общем, EBNF - фигня. Было бы понятно зачем и что менять, а EBNF нарисовать не проблема.
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #55 : Январь 09, 2012, 06:11:45 pm »
против
sum = map (\a b -> a+b) list
Я, конечно, понимаю, что речь идет о принципе и извиняюсь за оффтопик.
Но, все-таки, зачем писать такую херню и потом повторять ее десять раз.
Если уж приводить иллюстрацию, то хотя бы корректную.
Как зачем? Для бодрости боевого духа! ;-) Как оказалось, карась не дремлет ;-)
sum = foldr (\a b -> a+b) 0 list
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

Vartovyj

  • Full Member
  • ***
  • Сообщений: 197
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #56 : Январь 09, 2012, 07:08:20 pm »
В результате будет нечто вроде:
a : REAL[10,20,30];
не понял...
a:[10][20][30] real; //3-х мерный массив?
a:[] int=10,20,30; //объявление массива с инициализацией?
« Последнее редактирование: Январь 09, 2012, 07:11:02 pm от Vartovyj »

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #57 : Январь 09, 2012, 07:16:26 pm »
В результате будет нечто вроде:
a : REAL[10,20,30];
не понял...
a:[10][20][30] real; //3-х мерный массив?
a:[] int=10,20,30; //объявление массива с инициализацией?

a : REAL[10,20,30]; (* объявление трехмерного массива real'ов *)
А про инициализацию я не думал еще :-)
Вообще, это ж была по сути демонстрация того, что EBNF изменить не сложно, сложно придумать куда менять.

Вообще, чтобы не переливать из пустого в порожнее, предлагаю новые синтаксическо-грамматические предложения оформлять сразу с примером того как плохо было, и как хорошо станет. Однострочные примеры обычно не дают достаточно сильного ощущения, что было плохо, а станет лучше. То есть примеры должны быть более-менее реального размера, чтобы было понятно, что предлагаемое нововведение реально может улучшить жизнь.
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

Vartovyj

  • Full Member
  • ***
  • Сообщений: 197
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #58 : Январь 09, 2012, 07:56:32 pm »
Переделанный пример из книги Вирта:
module ProgramPattern;
import Texts, Oberon;
w: Texts.Writer; //global writer
proc copy(r: Texts.Reader);
    ch: char;
    Texts.Read(r, ch);
    while ~r.eot do Texts.Write(w, ch); Texts.Read(r, ch) end while
end copy
proc SomeCommand*;
    r: Texts.Reader; //local reader
    Texts.OpenReader(r, Oberon.This.text, Oberon.Par.pos);
    copy(r, w); Texts.Append(Oberon.Log, w.buf)
end SomeCommand;
Texts.OpenWriter(w)
end ProgramPattern.

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #59 : Январь 10, 2012, 04:52:20 am »
1. ИМХО, главное при разработке языка - чего уже нельзя убрать, а не чего еще можно добавить.
Брейнфак никому, кроме эзотериков, не нужен.
А ведь из брейнфака действительно уже нечего убрать, то есть идеал с Вашей точки зрения...
« Последнее редактирование: Январь 10, 2012, 04:55:14 am от Geniepro »
to iterate is human, to recurse, divine

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