Re: Синтаксический оверхед
От: Аноним  
Дата: 13.06.05 22:07
Оценка: :)
Здравствуйте, Сергей Губанов, Вы писали:

....

Вот теперь я знаю, что есть такой замечательный язык — Оберон!!!
Оказывается, я стоьлко лет зря потратил на изучение этого отстойного С++ ! Какой же ужасный код я до этого писал! Все, буду учить Оберон! Плевать на плюсы! Куплю новую клавиатуру, чтобы на ней всегда были читенькие клавиши с великими русскими буквами Х и Ъ ! Правда, с тех пор, как мне показали что такое Visual Assist, у меня чистенькая только Ъ, а Х... х... херня все это.... бред потомственного паскалиста
Re[7]: *
От: ol-lv СССР https://youtu.be/DQDoYs6wHoo
Дата: 14.06.05 06:31
Оценка:
Здравствуйте, Сергей Губанов, Вы писали:

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


P>>Здравствуйте, Сергей Губанов, Вы писали:



СГ>>>Путаницы не возникает ни когда — любые две инструкции всегда разделяются разделителем.


P>>

P>>

P>>WHILE a DO x; y; z END
P>>


P>>То есть здесь z и END — одна инструкция?


СГ>1) Можно ответить: Да! Семантика этой инструкции: "Выполнить z и перейти к началу цикла WHILE".

СГ>2) Можно ответить: END — это не инструкция, а часть составной инструкции WHILE DO END, ведь инструкции бывают как простыми так и составными.

Ой ладно, ребятки от конфликта "<>" (или <= не помню уже точно ) не могли избавиться в грамматике вот лупят контексты, для разрешения..
есть еще варианты для ткскть разрешения, end if, end loop и прочее,.. в данном случае конфликт разрешится сам собой ..
Compiler can be as trained AI but can't compose music.
Antheil piano jazz sonata. Я болен ПГМ.
Re[5]: Синтаксический оверхед
От: Кодёнок  
Дата: 14.06.05 08:05
Оценка: 6 (3)
СГ>А, ну, тут прошу прощения, в принципе ни чем. Просто оборот речи. Смысл оборота — гиперболизация масштаба, дескать отличается не на чуть-чуть, а сильно.

Сергей, а вы знакомы с языком Eiffel? Он декларирует почти те же принципы, что и Оберон, только более проработанный, и конечно, более читаемый. Все возможности оберона он покрывает, AFAIK. Распространён и поддерживается достаточно широко.

MODULE BottlesOfBeers; (* Andrejs Jansons 27.10.95 *)

      IMPORT Out;

      PROCEDURE Start*;
           VAR
                bottles: INTEGER;
           BEGIN
                bottles := 99;

                REPEAT
                    Out.Int(bottles, 2);
                    Out.String(" bottles of beer on the wall, ");
                    Out.Int(bottles, 2);
                    Out.String(" bottles of beer.");
                    Out.Ln;
                    Out.String("Take one down, pass it around, ");

                    DEC(bottles);

                    Out.Int(bottles, 2);
                    Out.String(" bottles of beer on the wall.");
                    Out.Ln
                UNTIL bottles = 1;

                Out.String("1 bottle of beer on the wall, one bottle of beer.");
                Out.Ln;
                Out.String("Take one down, pass it around,");
                Out.String(" no more bottles of beer on the wall");
                Out.Ln
           END Start;

END BottlesOfBeers.


Eiffel:

class BEERS

creation

    make

feature     -- Creation

    make is
        local
            i : INTEGER
            b : STRING;
        do
            from i := 99 variant i until i <= 0 loop
                if i = 1 then
                    b := " bottle";
                else
                    b := " bottles"
                end -- if
                io.put_integer(i);
                io.put_string(b);
                io.put_string(" of beer on the wall, ");
                io.put_integer(i);
                io.put_string(b);
                io.put_string(" of beer,");
                io.new_line;
                io.put_string("Take one down and pass it around, ");
                i := i - 1;
                io.put_integer(i);
                io.put_string(b);
                io.put_string(" bottles of beer on the wall.");
                io.new_line;
            end -- loop
            io.put_string("Go to the store and buy some more,");
            io.new_line;
            io.put_string("99 bottles of beer on the wall.");
            io.new_line;
        end;

end -- class BEERS


В Эйфеле, например, побольше возможностей для ОО и DBC, если бы вы боролись за Эйфель, вам было бы немного легче отбиваться от нападок С++-ников и можно было бы даже иногда нападать. А пока единственный серьезный аргумент, это "язык для встроенных или реал-тайм систем", этого недостаточно для потеснения С++
Re: Синтаксический оверхед
От: Mr. None Россия http://mrnone.blogspot.com
Дата: 14.06.05 08:18
Оценка: +1 :))) :)))
Здравствуйте, Сергей Губанов, Вы писали:

О да!!!! Предлагаю присвоить господину Губанову звание почётного Петросяна RSDN!
Вот только ваши научные умозаключения содержат ряд ошибок в том, что касается необходимости и достаточности конструкций Pascal`я... Вот вам гораздо более компактные конструкции:

  • Цикл с проверкой условия в начале итерации
    l1: call a ; a помещает результат в регистр cx: 0 - если false, 1 - если true
        jcxz l2
        call x
        jmp l1
    l2:


  • Цикл с проверкой условия в середине итерации
    l1: call x
        call a ; a помещает результат в регистр cx: 0 - если false, 1 - если true
        jcxz l2
        jmp l1
    l2:
        call y


  • Цикл с проверкой условия в конце итерации
    l1: call b ;a помещает результат в регистр cx: 1 - если false, 2 - если true
        call x
        loop l1


  • Инструкция выполнения по условию
        call a ;a помещает результат в регистр cx: 0 - если false, 1 - если true
        jcxz l1
        call x
    l1:


  • Инструкция выполнения по условию с альтернативой
        call a ;a помещает результат в регистр cx: 0 - если false, 1 - если true
        jcxz l1
        call x
        jmp l2
    l1: call y
    l2:


    Перерасход считайте сами, но если вы эти команды переведёте в бинарные коды, уверяю вас, они станут ещё компактнее и вообще будут записываться в одну строчку.

    Так что как видите паскаль, не самый компактный язык! Вот только с компонентностью в ассемблере вы малость... эээ как бы это по цензурнее выразиться... а вот: ЗАПАРИТЕСЬ!
  • Компьютер сделает всё, что вы ему скажете, но это может сильно отличаться от того, что вы имели в виду.
    Re[9]: Синтаксический оверхед
    От: Mr. None Россия http://mrnone.blogspot.com
    Дата: 14.06.05 08:22
    Оценка:
    Здравствуйте, Sheridan, Вы писали:

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


    К>>Ну дак пиши на K тогда, что мозги-то компостировать?


    S>Лучше на brainfuck или вообще на whitespace...


    perl адназначна... вот где никакого оверхеда ... вот только фиг прочтёшь, что написано...
    Компьютер сделает всё, что вы ему скажете, но это может сильно отличаться от того, что вы имели в виду.
    Re[4]: Синтаксический оверхед
    От: Mr. None Россия http://mrnone.blogspot.com
    Дата: 14.06.05 08:31
    Оценка: :)
    Здравствуйте, Слава Шевцов, Вы писали:

    СШ>Здравствуйте, Сергей Губанов, Вы писали:


    СШ>do x() while(b);

    Да как вы могли!!! Так расточительно использовать... эээ синтаксические конструкции... их же видать ограниченное число... вот как надо:
    while(x(), b);
    Компьютер сделает всё, что вы ему скажете, но это может сильно отличаться от того, что вы имели в виду.
    Re[2]: Синтаксический оверхед
    От: Demiurg  
    Дата: 14.06.05 09:04
    Оценка:
    Здравствуйте, Airat Burganov, Вы писали:

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


    Глупость это, а не шутка.
    ... << RSDN@Home 1.1.4 beta 7 rev. 463>>
    Re[3]: Синтаксический оверхед
    От: Аноним  
    Дата: 14.06.05 09:26
    Оценка:
    Здравствуйте, Demiurg, Вы писали:

    D> Глупость это, а не шутка.


    Скорее — весенне-летнее обострение.
    Re[5]: Синтаксический оверхед
    От: Кодт Россия  
    Дата: 14.06.05 09:59
    Оценка: :)
    Здравствуйте, Mr. None, Вы писали:

    СШ>>do x() while(b);

    MN>Да как вы могли!!! Так расточительно использовать... эээ синтаксические конструкции... их же видать ограниченное число... вот как надо:
    MN>
    while(x(), b);


    Надо вот так:
    dowhile x b

    Отдельные джигиты могут выразить функцию dowhile через комбинаторы SKI.
    Перекуём баги на фичи!
    Re[7]: *
    От: Mr. None Россия http://mrnone.blogspot.com
    Дата: 14.06.05 10:09
    Оценка:
    Здравствуйте, Сергей Губанов, Вы писали:

    P>>Да, а что там с доказательством того что

    P>>

    СГ>>>Где-то в середине 1970-тых годов был открыт реально необходимый и достаточный синтаксис (Modula-2, 1979 год)

    P>>действительно необходимый и достаточный?

    СГ>Это очень просто. При условии не наделять каким-либо дополнительным смыслом символы пробела, табуляции и новой строки кроме смысла и так натурально им присущим, все представленные в том сообщении отдельные инструкции являются минимально возможными.


    СГ>Вот смотрите, заменим все служебные слова на символ "*"

    СГ>
    СГ>REPEAT x UNTIL b                      = * x * b
    СГ>

    СГ>между каждой "пользовательской" лексемой стоит не более одной звездочки. Меньше одной звездочки поставить нельзя — мы договорились пробельные символы не перегружать. Значит минимум достигнут. А то что этого достаточно, следует из смысла рассматриваемых инструкций.


    Фигня! Вот пример:
        call x 
        call b ;b помещает результат в регистр cx: 0 - если false, 1 - если true
        jcxz $-4 ; не помню сколько байт занимает команда call, но смысл поняте

    Так как call x и call b семантически равны x() и b(), то расставляем ваши звёздочки:
    x b *
    о-па... не является ваш синтаксис минимальным...
    Компьютер сделает всё, что вы ему скажете, но это может сильно отличаться от того, что вы имели в виду.
    Re: Синтаксический оверхед
    От: jcukeng  
    Дата: 14.06.05 10:16
    Оценка:
    Здравствуйте, Сергей Губанов, Вы писали:
    СГ>Си-образный синтаксис:
    СГ>
    СГ>while(a)
    СГ>{
    СГ>     x();
    СГ>}
    СГ>

    СГ>Реально необходимый и достаточный синтаксис:
    СГ>[code]
    СГ>WHILE a DO x END

    вот как на си это написать:
    while(a) x();
    без всяких та DO END и прочего.

    PS. прежде, чем обгаживать Си, надо хотя бы его немного выучить
    Re[4]: Ошибка
    От: Mr. None Россия http://mrnone.blogspot.com
    Дата: 14.06.05 10:17
    Оценка:
    Здравствуйте, Banch, Вы писали:

    B>Здравствуйте, Сергей Губанов, Вы писали:


    СГ>>
    СГ>>WHILE a DO x; y; z END
    СГ>>


    B>Людей, которые пишут так вот в одну строчку я на работу не возьму.

    B>Потому что прочесть этот код будет невозможно!
    Прочесть-то может быть и можно, но вот отладчиком войти и посмотреть сколько итераций произойдёт и как функции будут вызываться — это проблематично... Но на оберонах новерно отладчики не нужны — баги сами отлавливаются и исправляются...
    Компьютер сделает всё, что вы ему скажете, но это может сильно отличаться от того, что вы имели в виду.
    Re[5]: Ошибка
    От: Кодт Россия  
    Дата: 14.06.05 11:02
    Оценка:
    Здравствуйте, Mr. None, Вы писали:

    СГ>>>
    СГ>>>WHILE a DO x; y; z END
    СГ>>>


    B>>Людей, которые пишут так вот в одну строчку я на работу не возьму.

    B>>Потому что прочесть этот код будет невозможно!
    MN>Прочесть-то может быть и можно, но вот отладчиком войти и посмотреть сколько итераций произойдёт и как функции будут вызываться — это проблематично... Но на оберонах новерно отладчики не нужны — баги сами отлавливаются и исправляются...

    А это беда большинства отладчиков, которые расставляют точки следования по строкам, а не по отдельным выражениям или хотя бы инструкциям.
    Контрпример — отладчик VB6. Он позволяет трассировать однострочные программы.
    Перекуём баги на фичи!
    Re: Синтаксический оверхед
    От: xBlackCat Россия  
    Дата: 14.06.05 11:46
    Оценка: :)))
    Люди, а куда делся сам, так сказать, "виновник торжества"? А то как-то флейм начинает затихать. Скучно становится...
    ... << RSDN@Home 1.1.4 beta 3 rev. 185>>
    Rojac &mdash; Rsdn Offline JAva Client
    Анонсы и обсуждение здесь
    Автор: xBlackCat
    Дата: 08.02.10
    Re[2]: Синтаксический оверхед
    От: ansi  
    Дата: 14.06.05 12:12
    Оценка: :)
    Здравствуйте, xBlackCat, Вы писали:

    BC>Люди, а куда делся сам, так сказать, "виновник торжества"? А то как-то флейм начинает затихать. Скучно становится...

    Во-во! А тут еще и Мораторий
    Автор: Amethyst
    Дата: 03.06.05
    ... Только-только мясо началось и на тебе!
    new RSDN@Home(1.1.4, 303) << new Message(); std::head::ear << "2 Unlimited — Hypnotised";
    Re[3]: Синтаксический оверхед
    От: Mamut Швеция http://dmitriid.com
    Дата: 14.06.05 15:15
    Оценка: :)
    BC>>Люди, а куда делся сам, так сказать, "виновник торжества"? А то как-то флейм начинает затихать. Скучно становится...
    A>Во-во! А тут еще и Мораторий
    Автор: Amethyst
    Дата: 03.06.05
    ... Только-только мясо началось и на тебе!


    Начать, что ли флэшмобы на темы "Оберон — вечная тема", "Свободу Колобку" и "Россия и Украина — друзья до гроба"? Боюсь, модераторы не поймут


    dmitriid.comGitHubLinkedIn
    Re[3]: Синтаксический оверхед
    От: AndreyFedotov Россия  
    Дата: 14.06.05 19:29
    Оценка: :))
    Здравствуйте, Сергей Губанов, Вы писали:

    СГ>Тогда не было интернета. Вот если бы все ковбои отметившиеся в этой ветке были бы собраны в одной комнате, то я бы конечно не рискнул войти в эту комнату запереть ее изнутри и сообщить присутсвующим что Си-образный синтаксис оказывается устарел 25 лет назад. А с интернетом, глядишь, по голове не настучат


    Ничего. Осталось пару постов и шерифы, построят ковбоев свиньёй и начнут просев интренета квадратно гнездовым методом... С последующим праздничным линчеванием и сожжением на костре.
    Re[2]: Синтаксический оверхед
    От: AndreyFedotov Россия  
    Дата: 14.06.05 19:31
    Оценка:
    Здравствуйте, xBlackCat, Вы писали:

    BC>Люди, а куда делся сам, так сказать, "виновник торжества"? А то как-то флейм начинает затихать. Скучно становится...


    Эх не берегли мы его...
    Re: Синтаксический оверхед
    От: Noobi Россия fff
    Дата: 14.06.05 20:05
    Оценка:
    Здравствуйте, Сергей Губанов, Вы писали:

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

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

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

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

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



    "Реально необходимо" — понятие субхективное. Например, мне на С писать гораздо удобнее, чем на Обероне, или что там у вас. Синтаксический оверхед не является самым важным параметром языка, от которого что-то зависит. Из этого исследования можно так же вывести, что языки с большим оверхедом более популярны, например
  • Re[2]: Синтаксический оверхед
    От: Аноним  
    Дата: 14.06.05 20:12
    Оценка: :)
    Здравствуйте, xBlackCat, Вы писали:

    BC>Люди, а куда делся сам, так сказать, "виновник торжества"? А то как-то флейм начинает затихать. Скучно становится...



    Если тут http://www.rsdn.ru/forum/?mid=1219402
    Автор: FDSC
    Дата: 13.06.05

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