Re[9]: Синтаксический оверхед
От: Пацак Россия  
Дата: 24.06.05 12:25
Оценка:
Здравствуйте, Сергей Губанов, Вы писали:


СГ>Вы определили i внутри for, а надо было определить ее снаружи так как в Delphi, иначе смысл сравнения отсутствует.


Если неправ, то пусть в меня кинут помидором, но АФАИК по стандарту это совершенно эквивалентные определения, которые обязаны порождать одинаковый код.

СГ>Почему сишный for медленнее дельфийского я уже объяснил: 1) в Delphi значение переменной цикла for не определено после его завершения, 2) значение переменной цикла запрещено самому менять.


Не вижу тут поводов для ускорения.
Ку...
Re[23]: Яркий пример
От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
Дата: 24.06.05 12:30
Оценка: 3 (1) :)))
Здравствуйте, Sergey J. A., Вы писали:

SJA>Вопрос такой: Вы допустили ошибку и посетовали, что Оберон бы такого не допустил. Я взял да и написал аналог на обероне тут
Автор: Sergey J. A.
Дата: 23.06.05
, и допустил такую-же ошибку. Но "оберонистый оберон" не поправил меня. Вот это пожалста и прокоментируйте.


Чего я могу сказать. Фигово всё это...
Re[24]: Яркий пример
От: Sergey J. A. Беларусь  
Дата: 24.06.05 12:40
Оценка:
Здравствуйте, Сергей Губанов, Вы писали:

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


SJA>>Вопрос такой: Вы допустили ошибку и посетовали, что Оберон бы такого не допустил. Я взял да и написал аналог на обероне тут
Автор: Sergey J. A.
Дата: 23.06.05
, и допустил такую-же ошибку. Но "оберонистый оберон" не поправил меня. Вот это пожалста и прокоментируйте.


СГ>Чего я могу сказать. Фигово всё это...


Даааа. Этим ответом вы меня поставили в тупик
Я — свихнувшееся сознание Джо.
Re[4]: Неприятность
От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
Дата: 24.06.05 12:43
Оценка:
Здравствуйте, achp, Вы писали:

A>Что, опять Чубайс подгадил?


AMD Athlon перегрелся, я думаю.
Re[10]: Синтаксический оверхед
От: merlin.fs Украина  
Дата: 24.06.05 12:44
Оценка:
Здравствуйте, Пацак, Вы писали:

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



СГ>>Вы определили i внутри for, а надо было определить ее снаружи так как в Delphi, иначе смысл сравнения отсутствует.


П>Если неправ, то пусть в меня кинут помидором, но АФАИК по стандарту это совершенно эквивалентные определения, которые обязаны порождать одинаковый код.


СГ>>Почему сишный for медленнее дельфийского я уже объяснил: 1) в Delphi значение переменной цикла for не определено после его завершения, 2) значение переменной цикла запрещено самому менять.


П>Не вижу тут поводов для ускорения.


Повод есть, если переменная используется только как счетчик, то делфя создаст приблизительно такой вод код:

    mov edx, _count_
@@repeat:
    ...
    _чото_делаем_
    ...
    dec edx
    jne repeat
... << RSDN@Home 1.1.4 beta 7 rev. 447>>
Re[7]: Синтаксический оверхед
От: achp  
Дата: 24.06.05 12:47
Оценка: 1 (1)
Здравствуйте, Сергей Губанов, Вы писали:

СГ>В Ада — понятия не имею.


В Аде правила к циклу с переменной применяются очень строгие. Во-первых, имя переменной цикла вводится инструкцией FOR, за пределами цикла переменная не существует. Во-вторых, шаг приращения может быть равен только 1 или -1. В-третьих, внутри цикла переменная считается константой.
Re[5]: Определение циклов
От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
Дата: 24.06.05 12:50
Оценка:
Здравствуйте, Sergey J. A., Вы писали:

SJA>Ну, конкчно кроме случаев, когда из REPEAT ... UNTIL можно выйти по EXIT.


Выход выходу рознь. http://www.rsdn.ru/Forum/Message.aspx?mid=1239021&amp;only=1
Автор: Сергей Губанов
Дата: 24.06.05
Re[5]: Определение циклов
От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
Дата: 24.06.05 12:57
Оценка: :)
Здравствуйте, Mamut, Вы писали:

СГ>>В Си-образных языках, циклы while/do не удовлетворяют этим определениям так как могут быть завершены еще и по break и goto.


M>Не соглашусь.


Не соглашусь с несоглашением...
Re[6]: Определение циклов
От: Sergey J. A. Беларусь  
Дата: 24.06.05 13:03
Оценка:
Здравствуйте, Сергей Губанов, Вы писали:

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


SJA>>Ну, конкчно кроме случаев, когда из REPEAT ... UNTIL можно выйти по EXIT.


СГ>Выход выходу рознь. http://www.rsdn.ru/Forum/Message.aspx?mid=1239021&amp;only=1
Автор: Сергей Губанов
Дата: 24.06.05


Знаете, вчера проичитал чтатью в Википедии о структурном програмировании. Там ничего не говорится о разных типах выхода.
Вот как определяется структурное програмирование?

http://en.wikipedia.org/wiki/Structured_programming

1. Jackson Structured Programming, which is based on aligning data structures with program structures,
2. Dijkstra's structured programming, which is based on splitting programs into sub-sections, each with a single point of entry and of exit,
3. and a view derived from Dijkstra's which also advocates splitting programs into sub-section with a single point of entry, but is strongly opposed to the concept of a single point of exit.


Я так понимаю мы о втором определении говорим ? Один вход, один выход. Никаких "Выход выходу рознь", "те выходы более выходистые" и т.п. Так что, давайте не будем изобретать специальных версий структурного програмирования, которые удобно ложится под Оберон.

Скажем просто. Оберон не соответсвует принципам структурного програмирования.
Я — свихнувшееся сознание Джо.
Re[11]: Синтаксический оверхед
От: Sergey J. A. Беларусь  
Дата: 24.06.05 13:06
Оценка: +1
Здравствуйте, merlin.fs, Вы писали:

П>>Не вижу тут поводов для ускорения.


MF>Повод есть, если переменная используется только как счетчик, то делфя создаст приблизительно такой вод код:


MF>
MF>    mov edx, _count_
MF>@@repeat:
MF>    ...
MF>    _чото_делаем_
MF>    ...
MF>    dec edx
MF>    jne repeat
MF>


Ну, что-ж. Хоть кто-то возразил аргументированно.
Однако, вот во что превращается следующий код:

#include <stdio.h>
int f()
{
    int i;
    for(i=10;i>0;i--)
        puts("+");

    return 0;
}



_f    PROC NEAR                    ; COMDAT

; 6    : {

    push    esi

; 7    :     int i;
; 8    :     for(i=10;i>0;i--)

    mov    esi, 10                    ; 0000000aH
$L863:

; 9    :         puts("+");

    push    OFFSET FLAT:??_C@_01MIFGBAGJ@?$CL?$AA@
    call    _puts
    add    esp, 4
    dec    esi
    jne    SHORT $L863

; 10   : 
; 11   :     return 0;

    xor    eax, eax
    pop    esi

; 12   : }

    ret    0
_f    ENDP


Как видим — практически один в один.
Я — свихнувшееся сознание Джо.
Re[22]: Яркий пример
От: Пацак Россия  
Дата: 24.06.05 13:09
Оценка: +3
Здравствуйте, Сергей Губанов, Вы писали:

СГ>В одном случае есть выбор использовать блок BEGIN END или не использовать, а в другом случае этого блока просто нет.


Сериозно чтоль?

PROCEDURE Test*();
VAR  i: INTEGER; END
    {тело процедуры начинается здесь}
......
......
    {тело процедуры заканчивается здесь}
END Test;


И где здесь необходимость использования BEGIN? Нема таковой, окромя продиктованной желанием величественной виртовской левой пятки.

СГ>Сам по себе блок BEGIN END отсутсвуют напрочь.


Присутствует. В составе описания модулей и процедур. Про то, что "там без него нельзя" петь военных песен не надо — пример выше.

СГ>Стоило. В си-образном синтаксисе это невозможно даже на синтетических тестах.


Ибо программисты на C++ пишут программы, а не синтетические тесты. И программы-то, как это тут не раз показывалось, уделывают обероновские как по лексемному оверхеду, так и по банальной длине кода.

СГ>Кстати, а возможно ли, добиться того чтобы звездочное чередование всегда было бы правильным? Наверное нет


Ах какое озарение! Жаль, что оно не посетило автора перед тем, как он начал обгаживать C++.
Ку...
Re[7]: Определение циклов
От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
Дата: 24.06.05 13:11
Оценка: -1 :)
Здравствуйте, Sergey J. A., Вы писали:

SJA> Вот как определяется структурное програмирование?


Я его определяю буквально: структурное оно и значит структурное. Например, инструкция try ... finnaly ... end наверняка ведь у Дейкстры ни где не упоминается, а структурная. В будущем может быть еще какая-нибудь структурная инструкция появится которой у Дейкстры не было, и что, теперь?
Re[9]: Синтаксический оверхед
От: jazzer Россия Skype: enerjazzer
Дата: 24.06.05 13:12
Оценка:
Здравствуйте, Sinclair, Вы писали:

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

Q>>Большинство современных компиляторов выдают на такую строчку предупреждение
S>А большинство совремнных PM заставляют компилять с treat warnings as errors ;)

Правильно, но они же не знают про прагмы ;)
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[7]: Определение циклов
От: Mamut Швеция http://dmitriid.com
Дата: 24.06.05 13:14
Оценка: :)
Здравствуйте, Sergey J. A., Вы писали:

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


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


SJA>>>Ну, конкчно кроме случаев, когда из REPEAT ... UNTIL можно выйти по EXIT.


СГ>>Выход выходу рознь. http://www.rsdn.ru/Forum/Message.aspx?mid=1239021&amp;only=1
Автор: Сергей Губанов
Дата: 24.06.05


SJA>Знаете, вчера проичитал чтатью в Википедии о структурном програмировании.


О! Наконец-то! Хоть один человек!!! Я-то ссылку на эту статью уже, наверное, в четырех местах привожу

SJA>Я так понимаю мы о втором определении говорим ? Один вход, один выход. Никаких "Выход выходу рознь", "те выходы более выходистые" и т.п. Так что, давайте не будем изобретать специальных версий структурного програмирования, которые удобно ложится под Оберон.


SJA>Скажем просто. Оберон не соответсвует принципам структурного програмирования.


О!!! Я буду на вас молиться!! Конечно не соответствует. Но при этом заставляет циклы while и for соответствовать —


dmitriid.comGitHubLinkedIn
Re[6]: Определение циклов
От: Mamut Швеция http://dmitriid.com
Дата: 24.06.05 13:16
Оценка:
СГ>>>В Си-образных языках, циклы while/do не удовлетворяют этим определениям так как могут быть завершены еще и по break и goto.

M>>Не соглашусь.


СГ>Не соглашусь с несоглашением...




И все же, свою точку зрения я подтвердил фактами. Ваш ход


dmitriid.comGitHubLinkedIn
Re[12]: Синтаксический оверхед
От: merlin.fs Украина  
Дата: 24.06.05 13:18
Оценка:
Здравствуйте, Sergey J. A., Вы писали:

SJA>Ну, что-ж. Хоть кто-то возразил аргументированно.

SJA>Однако, вот во что превращается следующий код:

[skip]

SJA>
SJA>_f    PROC NEAR                    ; COMDAT

SJA>; 6    : {

SJA>    push    esi

SJA>; 7    :     int i;
SJA>; 8    :     for(i=10;i>0;i--)

SJA>    mov    esi, 10                    ; 0000000aH
SJA>$L863:

SJA>; 9    :         puts("+");

SJA>    push    OFFSET FLAT:??_C@_01MIFGBAGJ@?$CL?$AA@
SJA>    call    _puts
SJA>    add    esp, 4
SJA>    dec    esi
SJA>    jne    SHORT $L863

SJA>; 10   : 
SJA>; 11   :     return 0;

SJA>    xor    eax, eax
SJA>    pop    esi

SJA>; 12   : }

SJA>    ret    0
SJA>_f    ENDP
SJA>


SJA>Как видим — практически один в один.

Согласен, только почему esi? для счетчиков естественей edx использовать, моя информация наверно устарела
(давно не изучал эту тему), но на сколько я помню, проц inc/dec с edx, eax, ebx и ecx выполняет быстрее чем esi, edi.
... << RSDN@Home 1.1.4 beta 7 rev. 447>>
Re[5]: Неприятность
От: qwertyuiop Российская Империя  
Дата: 24.06.05 13:33
Оценка:
A>>Что, опять Чубайс подгадил?

СГ>AMD Athlon перегрелся, я думаю.


Да нет, просто всевышний намекнул ему, что пора заканчивать эту пустопорожнюю болтовню.
Я отвечаю за свои слова, а не за то как вы их интерпретируете!
Re[8]: Определение циклов
От: Sergey J. A. Беларусь  
Дата: 24.06.05 13:36
Оценка: +1 :)
Здравствуйте, Сергей Губанов, Вы писали:

SJA>> Вот как определяется структурное програмирование?


СГ>Я его определяю буквально: структурное оно и значит структурное.

Дайте догадатся. Не структурное оно и значит не структурное. Гм. Ну тогда ясно !
Оберон он структурный, потому что структурный.
Ну а С не структурный, потому что он не структурный. Буквально.

СГ>Например, инструкция try ... finnaly ... end наверняка ведь у Дейкстры ни где не упоминается, а структурная. В будущем может быть еще какая-нибудь структурная инструкция появится которой у Дейкстры не было, и что, теперь?


Оотлично. Ну, раскажите почему try ... finnaly ... end структурная конструкция, а С-шный while — нет.
Подсказка:
throw -> break.
А ?

И кстати, почему замечательно структурной try ... finnaly ... end нет в Обероне ?

З.Ы. Хотелось бы получить ответы на ОБА вопроса, а не на один по выбору.
Я — свихнувшееся сознание Джо.
Re[8]: Определение циклов
От: Sergey J. A. Беларусь  
Дата: 24.06.05 13:38
Оценка: :))) :)
Здравствуйте, Mamut, Вы писали:

SJA>>Знаете, вчера проичитал чтатью в Википедии о структурном програмировании.


M>О! Наконец-то! Хоть один человек!!! Я-то ссылку на эту статью уже, наверное, в четырех местах привожу

Не подумайте про меня хорошо. Я её почитал только из желания ввязаться в спор
Я — свихнувшееся сознание Джо.
Re[13]: Синтаксический оверхед
От: Sergey J. A. Беларусь  
Дата: 24.06.05 13:42
Оценка: +1
Здравствуйте, merlin.fs, Вы писали:

MF>Согласен, только почему esi? для счетчиков естественей edx использовать, моя информация наверно устарела

MF>(давно не изучал эту тему), но на сколько я помню, проц inc/dec с edx, eax, ebx и ecx выполняет быстрее чем esi, edi.

Я тож не очень в курсе, но мне казалось что новые процессоры большинство команд выполняют в 1 такт...
Но не столь важно. Думаю компиляторо-писатели знали, что делают...
Я — свихнувшееся сознание Джо.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.