Re[3]: Ошибка
От: Banch  
Дата: 09.06.05 10:24
Оценка: 4 (3) +3
Здравствуйте, Сергей Губанов, Вы писали:

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


Людей, которые пишут так вот в одну строчку я на работу не возьму.
Потому что прочесть этот код будет невозможно!
Re[2]: Ошибка 2
От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
Дата: 09.06.05 10:27
Оценка:
Здравствуйте, Sergey, Вы писали:

S> в паскалевском пиши


Синтаксис языка Паскаль устарел более чем 25 лет тому назад и он мало чем в этом смысле отличается от Си-образного сиснтаксиса "begin" = "{", "end" = "}". То есть синтаксис Си тоже устарел более чем 25 лет тому назад.

Приведенный мной синтаксис есть синтаксис языков Modula/Oberon (используется с середины 1970-тых годов).
Re[3]: Ошибка
От: WFrag США  
Дата: 09.06.05 10:27
Оценка: 3 (1)
Здравствуйте, Сергей Губанов, Вы писали:

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

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

СГ>Обратите внимание: слово "BEGIN" отсутствует вообще во всех инструкциях — оно лишнее.

Ну можно еще сократить:

(while a x y z)


Re[3]: Ошибка
От: Sergey Россия  
Дата: 09.06.05 10:28
Оценка:
Hello, Сергей!
You wrote on Thu, 09 Jun 2005 10:05:56 GMT:

СГ> Упомянутый Вами синтаксис устарел более чем двадцать пять лет тому

СГ> назад.

СГ> Где-то в середине 1970-тых годов был открыт реально необходимый и

СГ> достаточный синтаксис (Modula-2, 1979 год)
 СГ> WHILE a DO x; y; z END
 СГ>

СГ> Обратите внимание: слово "BEGIN" отсутствует вообще во всех инструкциях
СГ> — оно лишнее.

while (a) x, y, z;


With best regards, Sergey.
Posted via RSDN NNTP Server 1.9
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re: Синтаксический оверхед
От: tarkil Россия http://5209.copi.ru/
Дата: 09.06.05 10:29
Оценка: 15 (9) +4
Здравствуйте, Сергей Губанов, Вы писали:

СГ>1) Известно, что...


Анонимный источник, близкий к правительству сообщает...

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


Стандарты есть разные, Вы о каком их них?

СГ>синтаксический оверхед = a/b = c


Чтобы не возвращаться к этому впоследствии, скажу, что простой подсчёт количества лексем, включая сюда все скобочки, малоосмыслен. Фишка синтаксиса в удобном восприятии, а лишняя пара скобок практически никогда этому не мешает — они маленькие

  • Цикл с проверкой условия в начале итерации

    while(a) x();

    Я предпочитаю выносить x() на отдельную строку, чтобы было удобно ставить breakpoint. Для Виртовских языков это тоже актуально, кстати.

  • Цикл с проверкой условия в середине итерации
    Если уж мы взялись оптимизировать кол-во строчек (занятие почти бессмысленное, но тем не менее...), то никто ничего не теряет от помещения открывающей скобки на одну строку с предваряющей конструкцией.

    while(true) {
        x();
        if(a) {
            y();
            break;
        }
        z();
    }


    СГ>
    СГ>LOOP 
    СГ>  x;
    СГ>  IF a THEN y; EXIT END;
    СГ>  z
    СГ>END
    СГ>

    В Вашем синтаксисе неясно, что "y" это вызов функции. Если эта функция принимает параметры, то скобочки и в Обероне потребуются. Новые перерасходы считайте сами.

  • Цикл с проверкой условия в конце итерации

    do x(); while(a);

  • Инструкция выполнения по условию

    if(a) x();

  • Инструкция выполнения по условию с альтернативой

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

  • Сложная инструкция выполнения по условию

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

    Здесь я не стал вытягивать оператор в одну строку, но порекомендовал бы и d Обероне разбить его на три. Для наглядности.

  • Инструкция выбора варианта выполнения
    Реально необходимый и достаточный синтаксис:

    CASE n OF
      a: x |
      b: y
      ELSE z
    END

    Давайте всё-таки не будем громоздить спецсимволы один на другой и напишем красиво, тем более, что в реальном коде вместо x, y, z наверняка будет что-то помассивнее. А если записать в пять строк, явно видна асимметрия синтаксиса Оберона: каждая строка завершается по-своему.

    Я везде поубирал в примерах лишние {} и предвижу возражение: мол, если действия будут сложнее x(), y(), z(), то сишный синтаксис потребует лишних скобок, а обероновский — нет. На это я сразу отвечу, что тогда и в Обероне для наглядности потребуется перенос по строчкам, а пара скобочек в массе кода просто визуально потеряется. Пример (скопировал кусок отлаживаемого кода):

    "Сиобразный":

    if(a) {
        ItemIndex.Index = atoi( Buff.POSTINDEX );
        ItemIndex.IndexState = ItemIndex.Index == 0 ? INDEX_UNKNOWN : INDEX_EXACT;
        Syncronize( ItemIndex );
    }
    else {
        ItemIndex.IndexState =
            Buff.FLAGS & ADDR_FLAG_ACTUAL ? INDEXES_DIFFERENT : INDEX_UNKNOWN;
    }
    if( FirstItem ) //...

    "Оберонообразный" (сорри, выражения внутри я не преобразовал, не знаю, как; скажу спасибо, если кто-то это за меня сделает)

    IF a THEN
        ItemIndex.Index = atoi( Buff.POSTINDEX );
        ItemIndex.IndexState = ItemIndex.Index == 0 ? INDEX_UNKNOWN : INDEX_EXACT;
        Syncronize( ItemIndex );
    ELSE
        ItemIndex.IndexState =
            Buff.FLAGS & ADDR_FLAG_ACTUAL ? INDEXES_DIFFERENT : INDEX_UNKNOWN;
    END
    
    IF FirstItem THEN //...

    Что видим? Те же 10 строк.

    Ну и финальный плевок в Оберон — идентификаторы ЗАГЛАВНЫМИ буквами. Вот это напрягает втрое больше, чем все сишные скобочки вместе взятые — ну не ориентированы шрифты на то, чтоб подряд идущие заглавные хорошо читались! Те, кто рисуют шрифты добиваются того, чтобы строчные буквочки плавно взглядом воспринимались, а на заглавных взгляд чтобы наоборот — спотыкался.

    Резюме

    Синтаксис языка C++ (Java, C#...) возможно страдает некоторой избыточностью, но её масштабы сильно преувеличены в исходном сообщении. Вопрос удобочитаемости остаётся открытым — люди, уже знакомые с сишным синтаксисом как правило не испытывают ни малейших затруднений в чтении программ, данных про Оберон не имею, полагаю, ситуация та же. Компактность кода (измеряемая в количестве лексем или символов), как таковая, является сомнительным приоритетом, никак не обосновано то, что буквы надо экономить. Количество строк более обоснованный критерий, ибо когда функция/алгоритм занимаешь меньше места (а особенно, если целиком влазит на экран), он проще понимается, "охватывается одним взглядом". Однако для этого нужно брать какой-то реальный код и сравнивать его (как сделал я в примере выше и который не показал никаких преимуществ Оберона). Отдельные синтаксические конструкции тут роли не играют.

    Берёшься сравнивать — сравнивай добросовестно. Мы технари, а не рекламисты. Imho.
  • --
    wbr, Peter Taran
    Re[5]: Ошибка
    От: Privalov  
    Дата: 09.06.05 10:37
    Оценка: :)
    Здравствуйте, Сергей Губанов, Вы писали:


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


    WHILE a DO x; y; z END


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

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

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

    действительно необходимый и достаточный?
    Re[7]: Синтаксический оверхед
    От: Курилка Россия http://kirya.narod.ru/
    Дата: 09.06.05 10:59
    Оценка: :)))
    Здравствуйте, Сергей Губанов, Вы писали:

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


    К>>Т.е. на паскалеподобном языке не пишут промышленный код?


    СГ>1) Не на Паскале подобном (он устарел более чем двадцать пять лет назад), а на Modula/Oberon — подобном.

    СГ>2) Для разных языков общепринятые способы оформления текста — разные. Для Си-образного языка, я насчитал оверхед по оформлению в 700 процентов по сравнению с минимально возможным.

    Ну дак пиши на K тогда, что мозги-то компостировать?
    Re[7]: Синтаксический оверхед
    От: FDSC Россия consp11.github.io блог
    Дата: 09.06.05 11:08
    Оценка: 1 (1) +1
    Здравствуйте, Сергей Губанов, Вы писали:

    СГ>2) Для разных языков общепринятые способы оформления текста — разные. Для Си-образного языка, я насчитал оверхед по оформлению в 700 процентов по сравнению с минимально возможным.


    А причём тут СИ? Тогда речь идёт о общепринятых нормах оформления, но они почти во всех языках одинаковы — даже в ассемблере иногда можно сделать нечитаемой программу не поставив лишний cr (уж он то требует cr так же ка ";" Си)

    Давайте тогда беседовать о новой модели синтаксиса, ведь Си только один из сотен языков с такой избыточностью. Нужно ещё доказать, что избыточность плохо влияет на качество кода (легко читаемый код содержит меньше ошибок и гораздо легче отлаживается). Давайте тогда и от коментариев откажемся (особенно в ассемблере, ха-ха).
    Кострукции, которые Вы приводили, могут быть совершенно нечитаемы при длинных названиях.

    Проводя аналогию, можно сказать что Вы хотите создать тензорное исчисление когда все пользуются векторным.
    Re[2]: Синтаксический оверхед
    От: FDSC Россия consp11.github.io блог
    Дата: 09.06.05 11:14
    Оценка:
    Здравствуйте, tarkil, Вы писали:

    T>Берёшься сравнивать — сравнивай добросовестно. Мы технари, а не рекламисты. Imho.


    По моему, количество строчек не имеет значения — одно нажатие клавиши и схватывается код легче. Т.о. нужно сначала смотреть, что сравниваешь, а то и получаются рекламные приёмы.
    Re: Синтаксический оверхед: а смысл-то в чем?
    От: eao197 Беларусь http://eao197.blogspot.com
    Дата: 09.06.05 11:19
    Оценка: 7 (3) +5
    Здравствуйте, Сергей Губанов, Вы писали:

    <...прочитано по диагонали из-за невозможности серьезного восприятия...>

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


    Спрашивается, а в чем смысл данного стенания?



    ИМХО: подобная критика не конструктивна. Если тебе не нравится C/C++, то доказывай лучше реальные достоинства Modula/Oberon. Лично мне упертость в продвижении C# Влада (VladD2) импонирует гораздо больше, т.к. она очень часто конструктивна.
    ... << RSDN@Home 1.1.4 beta 7 rev. 447>>


    SObjectizer: <микро>Агентно-ориентированное программирование на C++.
    Re[6]: *
    От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
    Дата: 09.06.05 11:19
    Оценка:
    Здравствуйте, Privalov, Вы писали:

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



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


    P>

    P>

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


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


    1) Можно ответить: Да! Семантика этой инструкции: "Выполнить z и перейти к началу цикла WHILE".
    2) Можно ответить: END — это не инструкция, а часть составной инструкции WHILE DO END, ведь инструкции бывают как простыми так и составными.

    Выбирайте что Вам больше нравится.


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

    P>

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

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

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

    Вот смотрите, заменим все служебные слова на символ "*"
    REPEAT x UNTIL b                      = * x * b
    WHILE a DO x END                      = * a * x *
    IF a THEN x END                       = * a * x *
    IF a THEN x ELSE y END                = * a * x * y *
    IF a THEN x ELSIF b THEN y ELSE z END = * a * x * b * y * z *
    CASE n OF a: x | b: y ELSE z END      = * n * a * x * b * y * z *

    между каждой "пользовательской" лексемой стоит не более одной звездочки. Меньше одной звездочки поставить нельзя — мы договорились пробельные символы не перегружать. Значит минимум достигнут. А то что этого достаточно, следует из смысла рассматриваемых инструкций.
    Re: Синтаксический оверхед
    От: GlebZ Россия  
    Дата: 09.06.05 11:27
    Оценка: 2 (1) +2 :))) :))) :))) :))) :))
    Здравствуйте, Сергей Губанов, Вы писали:

    1. Спасибо Сергей. Объявляю от все общественности благодарность. Культуру в массу. Я только сейчас начал ощущать как надо писать на С++. Незнал, что обязательные фигурные скобки есть промышленный стандарт. Но теперь я прозрел. Теперь я просвещенный.
    2. Если мы не будем говорить о "промышленных" стандартах, то С++ программа вполне может записываться в одну строку. Как собственно и многие языки. Только пользы от этого мало. По сети ходят большое количество программ на С++ из раздела угадай что она делает. И во многом их путанность основана именно на этом свойстве языка.
    3. Джентельмены! Мы обсуждаем неправильные языки. Хлопая по клавишам, мы выполняем лишнюю работу. Истинный язык не С++ и даже не великий Оберон. Представляю наиболее гениальный язык. HQ9+. Например опишем в ней программу Hello World.
    H

    Видите насколько это изысканный язык. Как игра мысли! Какая великолепная структурированность. И ведь это не буква H (в переводе Х), это целая программа. Далее дам краткое описание языка:

    The H command prints out "Hello, world!"
    The Q command prints out a copy of the source code of the program (i.e., it's a quine).
    The 9 command prints out the lyrics for 99 Bottles of Beer on the Wall.
    The + command increments the accumulator.

    http://en.wikipedia.org/wiki/HQ9_Plus
    И по объему самого компилятора, он значительно меньше не только С++ с его либами, С# с его Framework. Он меньше чем даже Oberon.

    HQ9+ interpreters are extremely simple to write, so there have been many written. For example, this HQ9+ interpreter was written (in Python) in around five minutes and is only 18 lines long. And, this HQ9+ compiler written in C compiles HQ9+ programs to C code and is only about 40 lines long.


    Все на HQ9+!!! Серебрянная пуля есть!!!

    С уважением, Gleb.
    ЗЫ:
    ... << RSDN@Home 1.1.4 beta 4 rev. 358>>
    Re[2]: Синтаксический оверхед
    От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
    Дата: 09.06.05 11:39
    Оценка: :))) :))
    Здравствуйте, tarkil, Вы писали:

    T>В Вашем синтаксисе неясно, что "y" это вызов функции.


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

    "value := y()" — вот это вызов функции.
    "value := y" — вот это присвоение значения переменной value. В том случае если ее тип есть процедурный тип, то присваивается адрес процедуры y. А просто отдельно стоящее "y" безо всего однозначно обозначает только вызов процедуры.

    T>идентификаторы ЗАГЛАВНЫМИ буквами. Вот это напрягает втрое больше, чем все сишные скобочки вместе взятые — ну не ориентированы шрифты на то, чтоб подряд идущие заглавные хорошо читались! Те, кто рисуют шрифты добиваются того, чтобы строчные буквочки плавно взглядом воспринимались, а на заглавных взгляд чтобы наоборот — спотыкался.


    Совершенно согласен с тем, что шрифты семейсва Courier в заглавных буквах смотрятся не очень, а ведь именно они по умолчанию стоят в ряде популярных IDE. Однако, есть другие шрифты, например, Verdana — заглавные буквы выглядят очень красиво. Кстати, я у себя в MS Visual Studio 2003 поставил именно шрифт Verdana — совсем другой вид.

    T>Берёшься сравнивать — сравнивай добросовестно. Мы технари, а не рекламисты. Imho.


    Я добросовестно оформил текст примеров именно так как общепринято оформлять текст на языках Си и Modula/Oberon.
    Re[3]: Синтаксический оверхед
    От: tarkil Россия http://5209.copi.ru/
    Дата: 09.06.05 11:43
    Оценка: +2
    Здравствуйте, Сергей Губанов, Вы писали:

    СГ>Я добросовестно оформил текст примеров именно так как общепринято оформлять текст на языках Си и Modula/Oberon.


    Общепринятых стандартов в Сях не меньше трёх, Вы о каком? А по факту каждая компания собственный стандарт на код придумывает.

    Остальное видимо, проигнорировано? И что нужны реальные примеры кода и зачем понадобилось экономить буквы и как всё изменится, если у процедур/функций появлятся параметры, что их имена обычно длиннее и что блоки кода чаще состоят не из одного вызова...
    --
    wbr, Peter Taran
    Re[2]: Синтаксический оверхед: а смысл-то в чем?
    От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
    Дата: 09.06.05 11:45
    Оценка:
    Здравствуйте, eao197, Вы писали:

    E>ИМХО: подобная критика не конструктивна.


    Если бы я просто сказал, что вот, в Си-образном синтаксисе используется больше лексем чем нужно, это было бы одно, а тут я сказал, что их используется не просто больше, а от двух до трех раз больше чем нужно. Привел числа. Даже среднее число вывел 235 процентов получил.

    E> Если тебе не нравится C/C++


    О языках, это совсем другая история. Я тут исключительно о синтаксисе. А на счет языков этих, так даже если бы был бы в них правильный синтаксис, то ...(а хотя ладно)...
    Re[3]: Синтаксический оверхед
    От: tarkil Россия http://5209.copi.ru/
    Дата: 09.06.05 11:51
    Оценка:
    Здравствуйте, Сергей Губанов, Вы писали:

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


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

    Наверное, можно придумать особый шрифт для набора программ, где заглавные буквы будут иметь тот же вид, что и строчные, только крупнее... Но смысл?!
    --
    wbr, Peter Taran
    Re[6]: Синтаксический оверхед
    От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
    Дата: 09.06.05 11:52
    Оценка: 3 (1) -2 :))
    Здравствуйте, Cyberax, Вы писали:

    C>Кстати, если рассуждать о синтаксической избыточности, то зачем в

    C>Обероне/Паскале абсолютно ненужные лексемы:
    C>procedure
    C>function
    C>var
    C>do
    C>to, downto
    C>...
    C>А?

    В Modula/Oberon ни одно из указанных Вами слов не присутсвует. До Паскаля мне дела нет, он устарел давным давно.
    Re: Синтаксический оверхед
    От: Drago Россия  
    Дата: 09.06.05 12:00
    Оценка:
    Здравствуйте, Сергей Губанов, Вы писали:

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

    Rfr бы я ни любил Паскаль, и как бы я неприязненно не относился к С, должен сказать, что в данном примере Pascal-style код зря написан в одну строку. для читабельности это также разносится на несколько строк. имхо. в остальном — согласен. хотя это конечно дело вкуса
    Re[7]: *
    От: Privalov  
    Дата: 09.06.05 12:13
    Оценка:
    Здравствуйте, Сергей Губанов, Вы писали:

    P>>

    P>>

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


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


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

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

    x тоже часть составной инструкции, однако ";" после нее стоит.

    СГ>Выбирайте что Вам больше нравится.


    Мне нравится, когда ";" является частью инструкции, а не разделителем между ними.

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


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

    СГ>
    СГ>REPEAT x UNTIL b                      = * x * b
    СГ>WHILE a DO x END                      = * a * x *
    СГ>IF a THEN x END                       = * a * x *
    СГ>IF a THEN x ELSE y END                = * a * x * y *
    СГ>IF a THEN x ELSIF b THEN y ELSE z END = * a * x * b * y * z *
    СГ>CASE n OF a: x | b: y ELSE z END      = * n * a * x * b * y * z *
    СГ>

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

    Вместо REPEAT можно использовать WHILE, а вместо CASE — IF / ELSEIF / ELSE /END. Потому их можно выбросить => необходимость не доказана. О достаточности я пока молчу.
    Re[2]: Синтаксический оверхед
    От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
    Дата: 09.06.05 12:13
    Оценка:
    Здравствуйте, Drago, Вы писали:

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


    D>[кусь]

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

    D>Rfr бы я ни любил Паскаль, и как бы я неприязненно не относился к С, должен сказать, что в данном примере Pascal-style код зря написан в одну строку. для читабельности это также разносится на несколько строк. имхо. в остальном — согласен. хотя это конечно дело вкуса


    Не Паскаль это, а Modula/Oberon.
    Если текст короткий, то он пишется в одну строчку, а если длинный, то естественно в несколько строчек.

    Кроткий:
    IF a THEN x ELSE y END

    Длинный:
    IF aabababbabababababbaba THEN 
      xqwghcqhbwehqhgwbehjbdcqkjwbefkycgvrqe(wkjehfjke, kwfbwer, kwefb)
    ELSE
      yjwejhdbwjebdhwwhjebhbweb(wefbuiweicfuiuwbnceu, wibecibweibciwwe) 
    END
    Подождите ...
    Wait...
    Пока на собственное сообщение не было ответов, его можно удалить.