Про скобочки
От: Воронков Василий Россия  
Дата: 26.04.10 15:21
Оценка: -3
Известно, что в Си-подобном синтаксисе круглые скобочки несколько перегружены смыслом. Это и средство для группировки выражений, и часть грамматики некоторых стандартных выражений вроде for, if и вызов функции, и приведение типов...
На мой взгляд это несколько снижает читабельность.

А как бы вы отнеслись к сокращению "скобочности" синтаксиса? Хотя бы в выражениях. Например, вместо


for (x in y) 
  expr



было бы


for x in y do
  expr



Или вместо


if (x > y)
  expr
else
  expr



было бы


if x > y then
  expr
else
  expr



Само собой при сохранении остальной си-подобности.
Re: Про скобочки
От: Курилка Россия http://kirya.narod.ru/
Дата: 26.04.10 15:25
Оценка:
Здравствуйте, Воронков Василий, Вы писали:

[cut]
ВВ>Само собой при сохранении остальной си-подобности.

И без фигурных скобок и с вытекающими их этого последствиями?
Re[2]: Про скобочки
От: Воронков Василий Россия  
Дата: 26.04.10 15:26
Оценка:
Здравствуйте, Курилка, Вы писали:

К>[cut]

ВВ>>Само собой при сохранении остальной си-подобности.
К>И без фигурных скобок и с вытекающими их этого последствиями?

Нет, с фигурными. Фигурные скобки — тема отдельная, про них речи не было.
Re: Про скобочки
От: Mystic Украина http://mystic2000.newmail.ru
Дата: 26.04.10 15:26
Оценка: +1
Здравствуйте, Воронков Василий, Вы писали:

ВВ>А как бы вы отнеслись к сокращению "скобочности" синтаксиса? Хотя бы в выражениях. Например, вместо


Так паскаль получится? Или Ada Но я только "за" :w
Re[2]: Про скобочки
От: Воронков Василий Россия  
Дата: 26.04.10 15:32
Оценка:
Здравствуйте, Mystic, Вы писали:

ВВ>>А как бы вы отнеслись к сокращению "скобочности" синтаксиса? Хотя бы в выражениях. Например, вместо

M>Так паскаль получится? Или Ada Но я только "за" :w

Паскаль получится, если фигурные скобочки заменить на begin/end

Но дело не в том, что там получится. Собственно, мне интересно, не является ли конструкция вида


for x in y do
  expr



более "чистой" с т.з. синтаксиса, чем


for (x in y)
  expr



Учитывая, что внутри for у нас может быть куча дополнительных скобочек.
Re[3]: Про скобочки
От: Курилка Россия http://kirya.narod.ru/
Дата: 26.04.10 15:37
Оценка: +1
Здравствуйте, Воронков Василий, Вы писали:

ВВ>Здравствуйте, Курилка, Вы писали:


К>>[cut]

ВВ>>>Само собой при сохранении остальной си-подобности.
К>>И без фигурных скобок и с вытекающими их этого последствиями?

ВВ>Нет, с фигурными. Фигурные скобки — тема отдельная, про них речи не было.


Ну мне в глаза бросается их отсутствие для си-подобного языка.
Re[3]: Про скобочки
От: Mystic Украина http://mystic2000.newmail.ru
Дата: 26.04.10 15:41
Оценка:
Здравствуйте, Воронков Василий, Вы писали:

ВВ>более "чистой" с т.з. синтаксиса, чем


Непонятно, что значит "более чистой". Очень субьективное понятие. С точки зрения разбора скобочки нисколько не вредят. С точки зрения читабельности в случае сложного выражения всегда можно написать for(;), а уже внутри него разруливать. Так, кстати, я и поступаю в более-менее сложных случаях. Ну и скобочки по стилю написания лучше соответствуют всяким другим {, ++, ?:.

С другой стороны, что лично я готов пойти дальше, мне академичность Ada нравится куда больше.
Re[4]: Про скобочки
От: Воронков Василий Россия  
Дата: 26.04.10 15:43
Оценка:
Здравствуйте, Курилка, Вы писали:

ВВ>>Нет, с фигурными. Фигурные скобки — тема отдельная, про них речи не было.

К>Ну мне в глаза бросается их отсутствие для си-подобного языка.

В конструкциях типа for/if скобочки всегда являлись необходимыми только если у нас несколько выражений.

Предполагается что синтаксис такой:

for x in y do 
  expr;

for x in y do  {
  expr1;
  expr2
}


В качестве альтернативного решения вспоминается Go, если я правильно понял его грамматику, где в подобных выражениях круглые скобочки являются необязательными, а вот фигурные — необходимы в любом случае:


for a < b {
    a *= 2
}
Re[4]: Про скобочки
От: Temoto  
Дата: 26.04.10 15:44
Оценка:
ВВ>>более "чистой" с т.з. синтаксиса, чем

M>Непонятно, что значит "более чистой". Очень субьективное понятие. С точки зрения разбора скобочки нисколько не вредят. С точки зрения читабельности в случае сложного выражения всегда можно написать for(;), а уже внутри него разруливать. Так, кстати, я и поступаю в более-менее сложных случаях. Ну и скобочки по стилю написания лучше соответствуют всяким другим {, ++, ?:.


M>С другой стороны, что лично я готов пойти дальше, мне академичность Ada нравится куда больше.


"академичность Ada" это что?
Re[4]: Про скобочки
От: Воронков Василий Россия  
Дата: 26.04.10 15:44
Оценка:
Здравствуйте, Mystic, Вы писали:

M>Непонятно, что значит "более чистой". Очень субьективное понятие. С точки зрения разбора скобочки нисколько не вредят. С точки зрения читабельности в случае сложного выражения всегда можно написать for(;), а уже внутри него разруливать. Так, кстати, я и поступаю в более-менее сложных случаях. Ну и скобочки по стилю написания лучше соответствуют всяким другим {, ++, ?:.


ОК, point taken.

M>С другой стороны, что лично я готов пойти дальше, мне академичность Ada нравится куда больше.


Дальше — это куда?
Re[5]: Про скобочки
От: Курилка Россия http://kirya.narod.ru/
Дата: 26.04.10 15:50
Оценка:
Здравствуйте, Воронков Василий, Вы писали:

ВВ>Здравствуйте, Курилка, Вы писали:


ВВ>>>Нет, с фигурными. Фигурные скобки — тема отдельная, про них речи не было.

К>>Ну мне в глаза бросается их отсутствие для си-подобного языка.

ВВ>В конструкциях типа for/if скобочки всегда являлись необходимыми только если у нас несколько выражений.

ВВ>В качестве альтернативного решения вспоминается Go, если я правильно понял его грамматику, где в подобных выражениях круглые скобочки являются необязательными, а вот фигурные — необходимы в любом случае

Довольно значительное число людей берут позицию авторов Go в качестве стандарта кодирования на других си-подобных языках, надеюсь, не надо рассказывать про возможные ошибки при неиспользовании фиг. скобок.
Re[5]: Про скобочки
От: Temoto  
Дата: 26.04.10 15:50
Оценка:
ВВ>В качестве альтернативного решения вспоминается Go, если я правильно понял его грамматику, где в подобных выражениях круглые скобочки являются необязательными, а вот фигурные — необходимы в любом случае:

Добавлю, что в Go некоторые решения, в частности синтаксические, сделаны с упором на сверхбыстрый парсинг и компиляцию. А это далеко не всегда самые приоритетные причины. Если рассматривать Go как пример синтаксиса, то нужно учесть, что без заморочек про скорость компиляции, его синтаксис был бы другим. Неизвестно насколько другим, правда.
Re[6]: Про скобочки
От: Воронков Василий Россия  
Дата: 26.04.10 15:55
Оценка: +1
Здравствуйте, Курилка, Вы писали:

К>Довольно значительное число людей берут позицию авторов Go в качестве стандарта кодирования на других си-подобных языках, надеюсь, не надо рассказывать про возможные ошибки при неиспользовании фиг. скобок.


А многие не берут. И заставлять их использовать фигурные скобки на уровне грамматики несколько неправильно.
Писать скобки в случае одного выражения или не писать — это тема для отдельного флейма и вроде как такой флейм тут недавно был, смысла в его продолжении я не вижу.

Замечу только, что если, к примеру, из языка убрать разбиение на statements и expressions, то все уродство обязательных фигурных скобочек сразу же вылезет наружу:

var x = if cond then { y } else { z }

вместо

var x = if cond then y else z
Re[5]: Про скобочки
От: Mystic Украина http://mystic2000.newmail.ru
Дата: 26.04.10 15:56
Оценка:
Здравствуйте, Temoto, Вы писали:

T>"академичность Ada" это что?


Несколько избыточный синтаксис, но проработанный таким образом, что ошибка/опечатка в одном символе почти никогда (кроме как в идентификаторах) не приводит к синтаксически правильной программе. Плюс возможность хорошей диагностики ошибок компиляции.
Re[5]: Про скобочки
От: Mystic Украина http://mystic2000.newmail.ru
Дата: 26.04.10 15:57
Оценка:
Здравствуйте, Воронков Василий, Вы писали:

M>>С другой стороны, что лично я готов пойти дальше, мне академичность Ada нравится куда больше.

ВВ>Дальше — это куда?

В сторону адского синтаксиса.
Re[6]: Про скобочки
От: Воронков Василий Россия  
Дата: 26.04.10 15:59
Оценка:
Здравствуйте, Temoto, Вы писали:

T>Добавлю, что в Go некоторые решения, в частности синтаксические, сделаны с упором на сверхбыстрый парсинг и компиляцию. А это далеко не всегда самые приоритетные причины. Если рассматривать Go как пример синтаксиса, то нужно учесть, что без заморочек про скорость компиляции, его синтаксис был бы другим. Неизвестно насколько другим, правда.


У меня возникли другие мысли, глядя на "бесскобочные" if-ы и for-ы в Go, особенно если учесть, что язык все равно же Си-подобный, поэтому вышеприведенный пример на Go можно записать и так, и он будет полностью валиден:

for (a < b) {
    a *= 2
}


Не уверен, насколько это все влияет на скорость парсинга, мне кажется не самый это значительный момент

А вообще я его как пример синтаксиса не рассматриваю, пример в данном случае скорее ML. Ну, естественно, касательно круглых скобочек только.
Re[6]: Про скобочки
От: Воронков Василий Россия  
Дата: 26.04.10 16:00
Оценка:
Здравствуйте, Mystic, Вы писали:

M>Здравствуйте, Воронков Василий, Вы писали:

M>>>С другой стороны, что лично я готов пойти дальше, мне академичность Ada нравится куда больше.
ВВ>>Дальше — это куда?
M>В сторону адского синтаксиса.

Т.е. begin/end и все такое?
Re[6]: Про скобочки
От: Воронков Василий Россия  
Дата: 26.04.10 16:04
Оценка:
Здравствуйте, Mystic, Вы писали:

M>Здравствуйте, Temoto, Вы писали:

T>>"академичность Ada" это что?
M>Несколько избыточный синтаксис, но проработанный таким образом, что ошибка/опечатка в одном символе почти никогда (кроме как в идентификаторах)

...и кроме как при группировках/вызовах, которые, если я не ошибаюсь, в Ada так же выражаются через круглые скобочки.
Я вот, например, не припомню ошибок, связанных с неправильно расставленными {} — надо сказать, тут и авто-формат в редакторе помогает, — а вот при группировках внутри вызовов и проч. ошибочки были.
Re[7]: Про скобочки
От: Mystic Украина http://mystic2000.newmail.ru
Дата: 26.04.10 16:21
Оценка: 10 (1)
Здравствуйте, Воронков Василий, Вы писали:

ВВ>Т.е. begin/end и все такое?


Да. Примерно так:

-- Пустая инструкция
null;

-- Присваивание
Result := Expression;

-- Блоки
Calculation_Of_Roots: -- Не обязательно
declare
  D: Float;
begin
  D := B*B - 4*a*C;
  exit Calculation_Of_Roots when D < 0;
  -- ...
end Calculation_Of_Roots; -- Если не указано имя блока, то можно не указывать

-- Условный оператор
if Something_Interesting then
  Do_Interesting_Job;
elsif Somethig_Groove
  Do_Groove_Job;
end if;

-- Выбор
case Letter is
  when 'a'..'z'| 'A'..'Z' => Put ("letter");
  when '0'..'9'           => Put ("digit! Value is"); Put (letter);
  when '''' | '"' | '`'   => Put ("quote mark");
  when '&'                => Put ("ampersand");
  when others             => Put ("something else");
end case;

-- Циклы
loop
  Inc_Counter;
end loop;

while I_am_alive loop
  Please_Kill_Me;
  exit when Reguest_Declined;
end loop;

for  I in Array'Range loop
  Process(Array[I]);
end loop;

Outer_Loop:
loop
  Do_Important_Job;
  loop
    Do_Important_Job;
    exit Outer_Loop when Am_I_Tired;
  end loop;
end loop Outer_Loop;

-- Исключения
declare
  Abort: exception;  
begin
  raise Abort;
exception
  when Abort => Put("Abort exception");
  when others => Put("General exeption");
end;
Re[5]: Про скобочки
От: FR  
Дата: 26.04.10 16:49
Оценка:
Здравствуйте, Воронков Василий, Вы писали:

ВВ>Дальше — это куда?


В пределе питон
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.