Re[3]: Синтаксический оверхед
От: Аноним  
Дата: 09.06.05 12:18
Оценка: :)
Здравствуйте, Сергей Губанов, Вы писали:

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


К>>Вопрос с ходу — ты всегда будешь циклы и комлексные условия с операциями в 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


СГ>ну натурально принято писать в одну строчку.


Видимо идентификаторы у тебя тоже приняты только однобуквенные.
Ну максимум — двухбуквенные.
Re: Синтаксический оверхед
От: VladD2 Российская Империя www.nemerle.org
Дата: 09.06.05 12:21
Оценка: 7 (3) +10
Здравствуйте.

Некто С.Губанов спрашивает у нас:

СГ>и как долго этот синтаксис еще будет существовать?

Отвечаем — он значительно переживет вас и нас вместе взятых.


Если серьезно, то архи глупо измерять код в лексемах (точнее токенами) и даже строках. Они для человека ничего не значат. Человек воспринимает программы скорее ветками AST, т.е. логическими еденицами. Если измерить твои примеры в них, то разница исчезнет.

Если же начать считать по мелочи, то следует начать считать смволы. И в них твои примеры резко проиграют (особенно если записывать С-шный код без пробелов).
... << RSDN@Home 1.1.4 beta 7 rev. 466>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[8]: *
От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
Дата: 09.06.05 12:27
Оценка:
Здравствуйте, Privalov, Вы писали:

P>Вместо REPEAT можно использовать WHILE, а вместо CASE — IF / ELSEIF / ELSE /END. Потому их можно выбросить => необходимость не доказана. О достаточности я пока молчу.


Замена REPEAT на WHILE — семантика, а речь сейчас идет исключительно о синтаксисе.

В выражениях:
* x * b
* a * x *
* a * x *
* a * x * y *
* a * x * b * y * z *
* n * a * x * b * y * z *

ни какой семантики уже нет, только оголённый скелет синтаксиса. Так вот такой синтаксис является не обходимым — в том смысле, что меньше одной звездочки не поставишь, и достаточным — в том смысле что ставить больше одной звездочки уже не надо, хватит и одной.

Сравните с Си-образным синтаксисом:
if(a){x();}else{y();} = * * a * * x * * * * * * y * * * *

тут 10 лишних звездочек
Re[3]: Синтаксический оверхед
От: Drago Россия  
Дата: 09.06.05 12:28
Оценка: :)
Здравствуйте, Сергей Губанов, Вы писали:

D>>[кусь]

СГ>Не Паскаль это, а Modula/Oberon.
а какая разница, уважаемый? Modula — предтеча Pascal
Re: Синтаксический оверхед
От: Amon-RA  
Дата: 09.06.05 12:32
Оценка: 4 (2) +1
Да
Re[4]: Синтаксический оверхед
От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
Дата: 09.06.05 12:33
Оценка:
Здравствуйте, Drago, Вы писали:

D>Modula — предтеча Pascal


Скажете тоже

Pascal 1970 ---> Modula-2 1979 ---> Oberon 1987 ---> Oberon-2 1992 ---> ...
Re: Синтаксический оверхед
От: Аноним  
Дата: 09.06.05 12:59
Оценка: 6 (2) +1 :))
Здравствуйте, Сергей Губанов, Вы писали:

СГ>1) Известно, что Си-образный синтаксис использует больше лексем чем это реально необходимо.

СГ>2) Известно, что стандарты оформления Си-образного кода требуют использования большего количества строчек чем это реально необходимо (чтобы читающему понятно стало где что написано).


Очередная серия битвы пчёл против мёда вперемешку с лекцией о влиянии длины волос на брюхе блох на северное сияние.
Re: Синтаксический оверхед
От: Socrat Россия  
Дата: 09.06.05 13:31
Оценка: 2 (2) +1
Ради разнообразия попробуй на Обероне написать:

if (count < MAX_COUNT)
    array [count++] = x;


или

func (param1, param2, param3, param4, expr? param5: param6);
Re[9]: *
От: Privalov  
Дата: 09.06.05 13:39
Оценка: -1 :)
Здравствуйте, Сергей Губанов, Вы писали:

СГ>В выражениях:

СГ>
СГ>* n * a * x * b * y * z *
СГ>


IF a THEN x ELSIF b THEN y ELSE z END = * a * x * b * y * z *



А что, в Оберонах внутри IF только одиночный оператор ставится, даже функцию нельзя вызвать, а тем более параметры ей передать? Все веселее становится.
Re[3]: Синтаксический оверхед
От: Пацак Россия  
Дата: 09.06.05 13:43
Оценка: 5 (3) :))) :))) :))) :)))
Здравствуйте, Сергей Губанов, Вы писали:

СГ>Кроткий:

СГ>
СГ>IF a THEN x ELSE y END
СГ>

СГ>Длинный:
СГ>
СГ>IF aabababbabababababbaba THEN 
СГ>  xqwghcqhbwehqhgwbehjbdcqkjwbefkycgvrqe(wkjehfjke, kwfbwer, kwefb)
СГ>ELSE
СГ>  yjwejhdbwjebdhwwhjebhbweb(wefbuiweicfuiuwbnceu, wibecibweibciwwe) 
СГ>END
СГ>


Итого: overhead по строчкам оберона над обероном — 5:1, т.е. в пять раз. Жуткий ацтой этот оберон, с таким overhead'ом.
Ку...
Re[5]: Синтаксический оверхед
От: Drago Россия  
Дата: 09.06.05 13:49
Оценка:
Здравствуйте, Сергей Губанов, Вы писали:

СГ>Скажете тоже


СГ>Pascal 1970 ---> Modula-2 1979 ---> Oberon 1987 ---> Oberon-2 1992 ---> ...

ок, я ошибся. но результат (сиречь мое мненипе) от этого не поменялся. и вааще — предлагаю переместить это в Священные войны
Re: Синтаксический оверхед
От: viellsky  
Дата: 09.06.05 14:01
Оценка:
Здравствуйте, Сергей Губанов, Вы писали:

СГ>1) Известно, что Си-образный синтаксис использует больше лексем чем это реально необходимо.

СГ>2) Известно, что стандарты оформления Си-образного кода требуют использования большего количества строчек чем это реально необходимо (чтобы читающему понятно стало где что написано).

СГ>Давайте посчитаем количественно этот перерасход?

СГ>Хочется понять на сколько он "минимален", так сказать.

СГ>
  • Усредненные результаты

    СГ>Просто усреднённый синтаксический оверхед составляет:

    СГ>(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

    СГ>
  • Резюме

    СГ>Программа записанная в Си-образном синтаксисе содержит в разы, а не на проценты больше лексем и строчек кода чем это реально необходимо. Спрашивается, и как долго этот синтаксис еще будет существовать?


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


    А то, что Вы привели в качестве примера кода — жалкий академизм, не имеющий ничего общего с реальной программой, на которую вы ссылаетесь в "резюме".
  • Re[2]: Синтаксический оверхед
    От: Privalov  
    Дата: 09.06.05 14:10
    Оценка: 4 (2) +1 -2 :)))
    Здравствуйте, viellsky, Вы писали:

    СГ>>Программа записанная в Си-образном синтаксисе содержит в разы, а не на проценты больше лексем и строчек кода чем это реально необходимо. Спрашивается, и как долго этот синтаксис еще будет существовать?


    V>Так посчитано то в корне неверно — взяты примеры, находящиеся именно в крайней области избыточности (названия функций минимальны, прочий код отсутсвует). Если взять совокупность кода, составляющую работающую, да еще и продаваемую программу, то там вы получите именно небольшие проценты.



    V>А то, что Вы привели в качестве примера кода — жалкий академизм, не имеющий ничего общего с реальной программой, на которую вы ссылаетесь в "резюме".


    На самом деле академизмом, даже жалким, там и не пахнет. Это больше похоже вот на что:

    С точки зрения банальной эрудиции, каждый индивид способен абстрагироваться от идей материального индустриализма. Поскольку ратифицировать конвенцию о модернизации идентификационной изменчивости возможно при наличии ресурсообеспеченности, неизбежна ревальвация космогонической санации, а также консолидация психофизиологической формации.
    Обращаясь к рационально-апоплексическому анализу дисгармонии фазисов современного апогея, мы эфемерно субъективизируемся в радикально – трансцендентном апофеозе и симбиозе. Антроподинамическая тенденция стабилизации мутогенеза находится на стадии нуклеосинтеза, порождая в свою очередь фальсификацию люминистенции реквизита. Электрофорез и диффектоскопия эпиграфики показали наличие плюрализма и плебисцита в хронологии дидактики.
    Инсоляция биогеоциноза доказала диапозитивное существование питекантропа в мобилизированной модуляции палеозоя. Эпистолографический мораторий политэкономии и беллетристики прерогатива интермедии сепаратизма. Диссертация по вопросу примитивизма в термодинамике и сейсмоведении разрешила проблему глиссирования департамента селекции. Экспроприирование синхрофазотрона позволило завершить тотальной импровизацией аммонификацию и акклиматизацию объекта в арбитраже.
    Кульминацией апелляции является транскрипция неореализма в суппралитораль индуктивности дюраль алюминиевого резистора.


    (c) не мое.
    Re[10]: *
    От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
    Дата: 09.06.05 14:19
    Оценка:
    Здравствуйте, Privalov, Вы писали:

    P>

    P>

    P>IF a THEN x ELSIF b THEN y ELSE z END = * a * x * b * y * z *
    P>


    P>А что, в Оберонах внутри IF только одиночный оператор ставится, даже функцию нельзя вызвать, а тем более параметры ей передать? Все веселее становится.


    Представьте себе — можно!

    Более того, в процитированном Вами примере вызвается три процедуры x, y и z.
    Re[2]: Синтаксический оверхед
    От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
    Дата: 09.06.05 14:27
    Оценка:
    Здравствуйте, viellsky, Вы писали:

    V> небольшие проценты.


    Вопрос
    Сколько процентов можно считать небольшим числом?

    Правильный ответ
    Только ноль.
    Re: Синтаксический оверхед
    От: Анатолий Широков СССР  
    Дата: 09.06.05 14:38
    Оценка: 9 (5) +13 :)))
    Вы счастливый человек — у Вас хватает времени на подобную ерунду.
    Re[3]: Синтаксический оверхед
    От: Пацак Россия  
    Дата: 09.06.05 14:38
    Оценка:
    Здравствуйте, Сергей Губанов, Вы писали:

    СГ>Сколько процентов можно считать небольшим числом?

    СГ>Только ноль.

    Полностью согласен! Можно посмотреть на обероновский аналог этой строчки:

    while (x = a() ? b(k[i++]) : c(l[j--]) ) d(x);


    ... и сравнить оверхед?
    Ку...
    Re[9]: *
    От: Maniacal Россия  
    Дата: 09.06.05 14:43
    Оценка:
    Здравствуйте, Сергей Губанов, Вы писали:

    СГ>Сравните с Си-образным синтаксисом:

    СГ>
    СГ>if(a){x();}else{y();} = * * a * * x * * * * * * y * * * *
    СГ>

    СГ>тут 10 лишних звездочек

    А

    if (a) x(); else y();

    не устраивает?
    Re[10]: *
    От: Privalov  
    Дата: 09.06.05 14:56
    Оценка: 2 (1) :)
    Здравствуйте, Maniacal, Вы писали:

    M>А


    M>if (a) x(); else y();


    M>не устраивает?


    Конечно, нет!

    Если факты не подтверждают теорию, от них надо избавиться.

    (c) не помню.
    Re[3]: Синтаксический оверхед
    От: Oleg Volkov  
    Дата: 09.06.05 15:54
    Оценка: +3
    Здравствуйте, Сергей Губанов, Вы писали:

    СГ>Совершенно согласен с тем, что шрифты семейсва Courier в заглавных буквах смотрятся не очень, а ведь именно они по умолчанию стоят в ряде популярных IDE.


    Такое впечатление, что вы ничего в своей жизни сложнее сортировки на Си не написали. Шрифт Courier используется потому, что в нём буквы одинаковой ширины. Verdana же абсолютно нечитаема по сравнению с моноширинными шрифтами.
    Подождите ...
    Wait...
    Пока на собственное сообщение не было ответов, его можно удалить.