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

Vartovyj

  • Full Member
  • ***
  • Сообщений: 197
    • Просмотр профиля
Модифицированный синтаксис Оберона
« : Декабрь 29, 2011, 11:46:49 am »
Что бы вы поменяли в Обероне?

Скажем, можно было бы избавиться от громоздких конструкций: ARRAY N OF, POINTER TO
VAR a: ARRAY N OF REAL    |    VAR a[N]:REAL    |    a[N]:REAL (*убрать VAR из языка вообще*)
TYPE Node = POINTER TO NodeDescriptor    |    TYPE Node = ^NodeDescriptor

n:=n+1    |    n+=1
b:=b+c    |    b+=c

Убрать BEGIN - автоматическое распознавание границы между определением и телом функций, модулей.

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #1 : Декабрь 29, 2011, 12:00:16 pm »
Не касаясь целесообразности подобного расширения, скажу, что вроде бы грамматику ввод упрощенного синтаксиса не усложнит. То есть форма VAR a[N]:REAL не делает грамматику Оберона сложнее чем LL(1) (а она и так LL(1)).

В плане добавления в синтаксис - я бы добавил инициализаторы массивов констант. Ибо дюже неудобно руками через arr[1]:=value забивать 223 коэффициента например fir-фильтра (и да, эти коэффициенты - константа, они НИКОГДА не меняются, поэтому класть их в нечто мутабельное, вроде массивов в обероне, смысла не имеет. это менее эффективно и более подвержено ошибкам).
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

Vartovyj

  • Full Member
  • ***
  • Сообщений: 197
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #2 : Декабрь 29, 2011, 12:34:08 pm »
В плане добавления в синтаксис - я бы добавил инициализаторы массивов констант. Ибо дюже неудобно руками через arr[1]:=value забивать 223 коэффициента например fir-фильтра (и да, эти коэффициенты - константа, они НИКОГДА не меняются, поэтому класть их в нечто мутабельное, вроде массивов в обероне, смысла не имеет.

CONST arr[223] = 65,73,3,821,...,105
CONST arr[] = 65,73,3,821,...,105

Valery Solovey

  • Hero Member
  • *****
  • Сообщений: 509
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #3 : Декабрь 29, 2011, 05:56:21 pm »
VAR a[N]:REAL
Думаю, a :[N] REAL по-лучше будет.

Valery Solovey

  • Hero Member
  • *****
  • Сообщений: 509
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #4 : Декабрь 29, 2011, 06:20:56 pm »
CONST arr[223] = 65,73,3,821,...,105
CONST arr[] = 65,73,3,821,...,105
С одной стороны, в массив могут сложить указатели на записи, значит arr[223] = ... не очень-то поиспользуешь. Только исключительно для простых типов.
С другой стороны, сделали же в КП для строк исключение (сравнение и присваивание без необходимости явно обращаться к каждой ячейке массива...

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #5 : Декабрь 30, 2011, 03:37:57 pm »
CONST arr[223] = 65,73,3,821,...,105
CONST arr[] = 65,73,3,821,...,105
С одной стороны, в массив могут сложить указатели на записи, значит arr[223] = ... не очень-то поиспользуешь. Только исключительно для простых типов.
С другой стороны, сделали же в КП для строк исключение (сравнение и присваивание без необходимости явно обращаться к каждой ячейке массива...

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

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #6 : Январь 02, 2012, 02:57:01 pm »
Пояюсню: очень хорошо когда в языке общего назначения есть подъязык описания данных. Как например в js (несмотря на его общую говенную сущность) есть такой подъязык и это очень удобно. Настолько удобно, что его выдернули и оформили отдельно, чтобы был доступен всем другим: json (http://json.org/json-ru.html).

И очень неприятно когда такого языка нет. Кстати, до недавних пор такого полноценного языка небыло и в C и C++. Теперь есть.
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #7 : Январь 03, 2012, 06:31:20 pm »
И очень неприятно когда такого языка нет. Кстати, до недавних пор такого полноценного языка небыло и в C и C++. Теперь есть.

Что есть?

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #8 : Январь 03, 2012, 06:59:28 pm »
Есть например это: http://ru.wikipedia.org/wiki/C%2B%2B0x#.D0.A3.D0.BD.D0.B8.D0.B2.D0.B5.D1.80.D1.81.D0.B0.D0.BB.D1.8C.D0.BD.D0.B0.D1.8F_.D0.B8.D0.BD.D0.B8.D1.86.D0.B8.D0.B0.D0.BB.D0.B8.D0.B7.D0.B0.D1.86.D0.B8.D1.8F

То есть теперь в С++ можно единообразно инициализировать в том числе и сложные пользовательские типы данных. Раньше вот это можно было лишь для простых структур, без конструкторов:
struct B {double r; double im;};

struct A {
    int arr[3];
    char c;
    B b;
};

int main() {
    A a = {{1,2,3}, 'a', {-1.0,1.0}};
    return 0;
}

А например в C89 вот так было нельзя написать:
typedef struct {double r; double im;} B;

typedef struct {
    int arr[3];
    char c;
    B b;
} A;

int main() {
    A a = {{1,2,3}, 'a', {-1.0,1.0}};
    return 0;
}
В C99 уже можно. В C11 по моему там еще что-то улучшили в этом направлении.
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

Vartovyj

  • Full Member
  • ***
  • Сообщений: 197
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #9 : Январь 03, 2012, 07:57:49 pm »
Идея с json хороша, но я предлагаю рассмотреть не универсальное решение для всех языков, а обертку только к Оберонам.
Кстати, коменты я бы взял C-подобные, тоесть /*...*/ и //, так как виртовские (*...*) зрительно интерферируют с процедурными скобками.
Тут в одном из топиков жаловались на VAR и засилие точек с запятой. Так, от VAR-а можно отказаться, просто сделав компилятор более интеллектуальным.

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #10 : Январь 03, 2012, 08:13:17 pm »
Идея с json хороша, но я предлагаю рассмотреть не универсальное решение для всех языков, а обертку только к Оберонам.
Да, про это и говорится - про подъязык описания данных. Если рассматривать грамматику как граф (а она граф и есть), то на нем отчетливо видны подъязыки из которых состоит язык (например Оберон): http://valexey.blogspot.com/2010/05/blog-post.html
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #11 : Январь 04, 2012, 04:52:27 am »
Если приделать к оберону удобный современный синтаксис, то это уже не будет оберон, и уж оберонщики его точно не признают...
to iterate is human, to recurse, divine

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

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #12 : Январь 04, 2012, 08:33:01 am »
Если приделать к оберону удобный современный синтаксис, то это уже не будет оберон, и уж оберонщики его точно не признают...
Даже если просто капс убрать? :-)

На самом деле два вопроса:
1) нужно ли это самое признание оберонщиков?
2) что и зачем мы хотим в итоге получить?
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #13 : Январь 04, 2012, 10:17:40 am »
Если приделать к оберону удобный современный синтаксис, то это уже не будет оберон, и уж оберонщики его точно не признают...
Даже если просто капс убрать? :-)
Особенно если убрать капс. Ведь ключевые слова в верхнем регистре -- одна из важнейших фишек оберона, которой они всегда аргументируют отсутствие подсветки синтаксиса.

На самом деле два вопроса:
1) нужно ли это самое признание оберонщиков?
Ну если оберонщики не станут признавать этот язык (так же как и Зоннон), то и называть его обероном не следует.

2) что и зачем мы хотим в итоге получить?
Да, кстати, хороший вопрос...
« Последнее редактирование: Январь 04, 2012, 10:20:08 am от Geniepro »
to iterate is human, to recurse, divine

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

Vartovyj

  • Full Member
  • ***
  • Сообщений: 197
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #14 : Январь 04, 2012, 11:18:27 am »
Особенно если убрать капс. Ведь ключевые слова в верхнем регистре - одна из важнейших фишек оберона, которой они всегда аргументируют отсутствие подсветки синтаксиса.
А зачем убирать подсветку в современных редакторах? Думаю, правильный вариант - сделать как в Зонноне: или все ключевое слово капсом или все без.
Цитировать
Ну если оберонщики не станут признавать этот язык (так же как и Зоннон), то и называть его обероном не следует.
В Зонноне грубо извратили идею оберона с ооп и с NET, так как Оберон - это сам себе NET.
Цитировать
что и зачем мы хотим в итоге получить?
Эстетически красивый, простой вариант синтаксиса, возможно просто как настройка.