1) Известно, что Си-образный синтаксис использует больше лексем чем это реально необходимо.
2) Известно, что стандарты оформления Си-образного кода требуют использования большего количества строчек чем это реально необходимо (чтобы читающему понятно стало где что написано).
Давайте посчитаем количественно этот перерасход?
Хочется понять на сколько он "минимален", так сказать.
Цикл с проверкой условия в начале итерации
a — условие выполнения итерации
x — выполняемое действие
Си-образный синтаксис:
Программа записанная в Си-образном синтаксисе содержит в разы, а не на проценты больше лексем и строчек кода чем это реально необходимо. Спрашивается, и как долго этот синтаксис еще будет существовать?
09.06.05 15:53: Перенесено из 'Философия программирования'
08.07.05 14:39: Перенесено модератором из 'Коллеги, улыбнитесь' — Хитрик Денис
08.07.05 15:12: Перенесено модератором из 'Коллеги, улыбнитесь' — Хитрик Денис
Здравствуйте, Сергей Губанов, Вы писали:
СГ>Программа записанная в Си-образном синтаксисе содержит в разы, а не на проценты больше лексем и строчек кода чем это реально необходимо. Спрашивается, и как долго этот синтаксис еще будет существовать?
Вообще говоря меня как прграммиста это очень мало волнует. Вот компилятор — он да, наверняка возмущается, когда столько лексем, бедняге, приходится обрабатывать.
Но компилятор — наш раб, а не наоборот, поэтому все ок.
Здравствуйте, Сергей Губанов, Вы писали:
СГ>Программа записанная в Си-образном синтаксисе содержит в разы, а не на проценты больше лексем и строчек кода чем это реально необходимо.
А в чем, собственно, проблема? Простое выражение я и в C так в одну строку записать могу.
А сложное — наверное, не стоит?
>Спрашивается, и как долго этот синтаксис еще будет существовать?
Вопрос, я так думаю, риторический.
Здравствуйте, Сергей Губанов, Вы писали:
СГ>Программа записанная в Си-образном синтаксисе содержит в разы, а не на проценты больше лексем и строчек кода чем это реально необходимо. Спрашивается, и как долго этот синтаксис еще будет существовать?
Автора в очередной раз подвело незнание предмета (С)
Здравствуйте, Курилка, Вы писали:
К>Вопрос с ходу — ты всегда будешь циклы и комлексные условия с операциями в 1 строчку писать? И что помешало на сишном синтаксисе сделать также?
Я соблюдал общепринятые стандарты кодирования. Хочешь верь, а хочешь нет, но инструкции навроде:
Здравствуйте, Сергей Губанов, Вы писали:
СГ>Здравствуйте, Курилка, Вы писали:
К>>Вопрос с ходу — ты всегда будешь циклы и комлексные условия с операциями в 1 строчку писать? И что помешало на сишном синтаксисе сделать также?
СГ>Я соблюдал общепринятые стандарты кодирования. Хочешь верь, а хочешь нет, но инструкции навроде:
СГ>WHILE a DO x END
СГ>REPEAT x UNTIL b
СГ>IF a THEN x ELSE y END
СГ>CASE n OF a: x | b: y ELSE z END
СГ>ну натурально принято писать в одну строчку.
У тебя всегда тело цикла состоит из вызова функции x?
И скобки обязательно в сишном стиле так ставить? И вообще обязательно? И строки переводить?
Напрашивающийся вопрос: ты вообще знаешь синтаксис Си?
Здравствуйте, Курилка, Вы писали:
К>У тебя всегда тело цикла состоит из вызова функции x?
Только тогда когда тело цикла большое, его можно написать на нескольких строчках.
К>И скобки обязательно в сишном стиле так ставить? И вообще обязательно? И строки переводить?
В принципе это не обязательно, но если писать промышленный код, то надо следовать стандартам оформления кода, а они таковы, что скобки {} надо писать всегда и на новой строчке.
Здравствуйте, Сергей Губанов, Вы писали:
СГ>Здравствуйте, Курилка, Вы писали:
К>>У тебя всегда тело цикла состоит из вызова функции x?
СГ>Только тогда когда тело цикла большое, его можно написать на нескольких строчках.
К>>И скобки обязательно в сишном стиле так ставить? И вообще обязательно? И строки переводить?
СГ>В принципе это не обязательно, но если писать промышленный код, то надо следовать стандартам оформления кода, а они таковы, что скобки {} надо писать всегда и на новой строчке.
Т.е. на паскалеподобном языке не пишут промышленный код?
Ой держите меня
Видимо это просто не возможно
Здравствуйте, Сергей Губанов, Вы писали:
СГ>Упомянутый Вами синтаксис устарел более чем двадцать пять лет тому назад.
СГ>Где-то в середине 1970-тых годов был открыт реально необходимый и достаточный синтаксис (Modula-2, 1979 год)
Есть математическое доказательство "необходимости и достаточности"?
СГ>
СГ>WHILE a DO x; y; z END
СГ>
СГ>Обратите внимание: слово "BEGIN" отсутствует вообще во всех инструкциях — оно лишнее.
Ну в одном слове ошибся. Это разве принципиально? Все равно, если вместо x, y, z что-нибудь реальное подставить, в одну строку вряд ли уложишься.
Опять же, углубляясь в детали, отметим, что ";" является разделителем между операторами, в результате возникает путаница, когда ее ставить, а когда нет. В литературе можно встретить довольно подробное обсуждение этой темы. Если найду дома книгу, сообщу название.
Здравствуйте, Сергей Губанов, Вы писали:
СГ>Здравствуйте, Oyster, Вы писали:
O>>Эх... не поленюсь
СГ>Дык, а лексический оверхед кто за Вас подсчитывать-то будет, Пушкин?
СГ>У меня получилось 235 процентов, а у Вас?
Hello, Сергей!
You wrote on Thu, 09 Jun 2005 09:33:38 GMT:
СГ> Цикл с проверкой условия в начале итерации СГ> a — условие выполнения итерации СГ> x — выполняемое действие СГ> Си-образный синтаксис: СГ>
СГ> while(a)
СГ> {
СГ> x();
СГ> }
СГ>
Никто так не пишет Пишут
while(a) x();
СГ> Реально необходимый и достаточный синтаксис: СГ>
Ты раз в сишном варианте скобки не по делу ставишь, в паскалевском пиши
BEGIN/END И подсчитай оверхед в буквах
СГ> Цикл с проверкой условия в середине итерации СГ> a — условие завершения СГ> x, y, z — выполняемые действия СГ> Си-образный синтаксис: СГ>
Буквы посчитай Их человек пишет, а лексемы компутер перемалывает, он
железный, не развалицца
СГ> Цикл с проверкой условия в конце итерации СГ> a — условие продолжения СГ> b — условие завершения СГ> x — выполняемое действие СГ> Си-образный синтаксис: СГ>
СГ> do
СГ> {
СГ> x();
СГ> }
СГ> while(a);
СГ>
СГ> Реально необходимый и достаточный синтаксис: СГ>
СГ> REPEAT x UNTIL b
СГ>
Ну это даже не смешно
СГ> Инструкция выполнения по условию СГ> a — условие СГ> x — выполняемое действие СГ> Си-образный синтаксис: СГ>
СГ> if(a)
СГ> {
СГ> x();
СГ> }
СГ>
СГ> Реально необходимый и достаточный синтаксис: СГ>
СГ> Инструкция выбора варианта выполнения СГ> n, a, b — параметры для определения варианта СГ> x, y, z — выполняемые действия СГ> Си-образный синтаксис: СГ>
Вот свичи в сях действительно дурацкие.
СГ> Усредненные результаты
СГ> Просто усреднённый синтаксический оверхед составляет: СГ> (2.00 + 2.00 + 3.00 + 2.00 + 2.43 + 2.73 + 2.31) / 7 = 2.35
СГ> Просто усреднённый перерасход строчек кода составляет: СГ> (4.00 + 2.00 + 5.00 + 4.00 + 8.00 + 15.0 + 11.0) / 7 = 7.00
СГ> Резюме
СГ> Программа записанная в Си-образном синтаксисе содержит в разы, а не на СГ> проценты больше лексем и строчек кода чем это реально необходимо. СГ> Спрашивается, и как долго этот синтаксис еще будет существовать?
Резюме: АМ/КГ. Перерасход лексем аффтаром — 10000%. Мог бы просто сказать —
ну не нравиццо мне си, си маст дай!
With best regards, Sergey.
Posted via RSDN NNTP Server 1.9
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Сергей Губанов wrote:
> К>У тебя всегда тело цикла состоит из вызова функции x? > Только тогда когда тело цикла большое, его можно написать на > нескольких строчках. >
> К>И скобки обязательно в сишном стиле так ставить? И вообще > обязательно? И строки переводить? > В принципе это не обязательно, но если писать промышленный код, то > надо следовать стандартам оформления кода, а они таковы, что скобки {} > надо писать всегда и на новой строчке.
Хахахахаххахахаха.... ROTFL.
Промышленных coding-standart'ов для С++ — как собак нерезанных. Причем в
большинстве из них НЕ РЕКОМЕНДУЕТСЯ ставить скобки вокруг одиноких
операторов.
Кстати, если рассуждать о синтаксической избыточности, то зачем в
Обероне/Паскале абсолютно ненужные лексемы:
procedure
function
var
do
to, downto
...
Здравствуйте, Курилка, Вы писали:
К>Т.е. на паскалеподобном языке не пишут промышленный код?
1) Не на Паскале подобном (он устарел более чем двадцать пять лет назад), а на Modula/Oberon — подобном.
2) Для разных языков общепринятые способы оформления текста — разные. Для Си-образного языка, я насчитал оверхед по оформлению в 700 процентов по сравнению с минимально возможным.
Здравствуйте, Privalov, Вы писали:
P>Опять же, углубляясь в детали, отметим, что ";" является разделителем между операторами, в результате возникает путаница, когда ее ставить, а когда нет.
Путаницы не возникает ни когда — любые две инструкции всегда разделяются разделителем.