Re[11]: Синтаксический оверхед
От: Mamut Швеция http://dmitriid.com
Дата: 24.06.05 06:44
Оценка:
M>>По Дискавери одной из самых сложных программ, работающих сегодня, назвали программу автоматического входа шаттла в атмосферу. С начала входа до -4 км до посадки люди к управлению даже не прикасаются. А там, как никак — управляемое падение (планированием это сложно назвать) на запредельных скоростях (13-25 Мах, что ли).

L>мне кажется программа управляющая взлетом и посадкой Бурана полностью в автоматическом режиме должна быть на порядок сложнее.


L>догадаешся на чем написана ?


Где-то здесь на форме пробегало сообщеие, что это был вообще како-то свой язык. Какой-нибудь Автокод Инжинера?


dmitriid.comGitHubLinkedIn
Re[7]: Синтаксический оверхед
От: faulx  
Дата: 24.06.05 07:09
Оценка: +1
Здравствуйте, Sergey J. A., Вы писали:

F>>Посмотрел в интернете, кажется, Паскаль действительно не запрещает. Позор! Интересно, как с этим в Аде и Обероне?


SJA>Оберон позволяет.


Позор и ему.
Re[5]: Синтаксический оверхед
От: Трурль  
Дата: 24.06.05 07:10
Оценка:
Здравствуйте, qwertyuiop, Вы писали:

F>>Программист — он тоже человек!


Q>Программист — он в первую очередь математик, а в математике первое число — 0!

Первое — 1!!!
Re[2]: Синтаксический оверхед
От: Amidlokos Россия  
Дата: 24.06.05 07:16
Оценка:
Здравствуйте, faulx, Вы писали:

F>
F>for i := 1 to n
F>     for j := 1 to m
F>        sum = sum + a[i][j]
F>


F>нагляднее выражает, что же мы имели в виду.


Ага, особенно если мы имели в виду цикл с шагом 2

Скажу только, что из всего Си-подобного семейства я больше всего восхищён реализацией цикла for. И сколько ни пишу, всё никак на него не нарадуюсь.

F>И еще к слову. Я все понимаю, я знаю все аргументы в пользу того, чтобы начинать индексацию массивов с 0, а не с 1. И все же я считаю это неестественным!


Жаль огорчать, но в большинстве (ИМХО, из личного опыта) практических задач удобнее индексация с 0. При работе с массивами часто требуется величина именно смещения.
... << RSDN@Home 1.1.4 beta 7 rev. 447>>
WARNING: expression "to_be || !to_be" is always true
Re[2]: FOR
От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
Дата: 24.06.05 07:20
Оценка:
Здравствуйте, faulx, Вы писали:

F> Это, конечно, цикл for.


Дело в том, что в Обероне (1987) цикла FOR нет вообще (вспомните: циклы бывают всего трех типов... и FOR-а среди них нет).

Под "давлением общественности", по "массовым просьбам трудящихся" или по каким-то иным не известным нам причинам в Обероне 2 (1992) цикл FOR всё-таки появился.

Но он есть самый настоящий синтаксический сахар:

Оператор

   FOR v := beg TO end BY step DO statements END

эквивалентен следующему
   temp := end; v := beg;
   IF step > 0 THEN
      WHILE v <= temp DO statements; v := v + step END
   ELSE
      WHILE v >= temp DO statements; v := v + step END
   END

Re[4]: Синтаксический оверхед
От: Amidlokos Россия  
Дата: 24.06.05 07:22
Оценка: +1
Здравствуйте, faulx, Вы писали:

F>Даже в Паскале можно указывать шаг изменения (или это только в Турбо-паскале с потомками?).


Вона как? Код в студию!

Как я помню, шаг там выбирается между 1 и -1 (соответственно, to и downto). И всё.

Q>>Для человека может и естественно с единиуы, но для программиста естественно с нуля.


F>Программист — он тоже человек!


Да. Но не юзер, а профессионал.

Простому человеку тоже понятнее в граммах, но ювелиры измеряют почему-то в каратах
... << RSDN@Home 1.1.4 beta 7 rev. 447>>
WARNING: expression "to_be || !to_be" is always true
Re[6]: Синтаксический оверхед
От: Amidlokos Россия  
Дата: 24.06.05 07:24
Оценка: :)))
Здравствуйте, Трурль, Вы писали:

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


F>>>Программист — он тоже человек!


Q>>Программист — он в первую очередь математик, а в математике первое число — 0!

Т>Первое — 1!!!

Трурль, а вы-то куда на своих наезжать вылезли? Напоминаю, в Обероне массив тоже начинается с нуля
Автор: Sergey J. A.
Дата: 24.06.05
... << RSDN@Home 1.1.4 beta 7 rev. 447>>
WARNING: expression "to_be || !to_be" is always true
Re[23]: Яркий пример
От: Sergey J. A. Беларусь  
Дата: 24.06.05 07:26
Оценка: 9 (3) :))
Здравствуйте, Пацак, Вы писали:

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


M>>Еще одно доказательство того, что LOOP — это инструкция, Оберону чуждая, привнесенная извне.


П>Тогда уж IF — тоже:


П>
П>IF a DO EXIT END;    =     * a * * * * 
П>


П>


Да что там !

        LOOP
            IF TRUE THEN EXIT END;
        END


* * * * * * *

Я — свихнувшееся сознание Джо.
Re[3]: Синтаксический оверхед
От: faulx  
Дата: 24.06.05 07:31
Оценка:
Здравствуйте, Amidlokos, Вы писали:

F>>
F>>for i := 1 to n
F>>     for j := 1 to m
F>>        sum = sum + a[i][j]
F>>


F>>нагляднее выражает, что же мы имели в виду.


A>Ага, особенно если мы имели в виду цикл с шагом 2


В исходном Сишном коде был цикл с шагом один. Но шутку я понял.

A>Скажу только, что из всего Си-подобного семейства я больше всего восхищён реализацией цикла for. И сколько ни пишу, всё никак на него не нарадуюсь.


Что такого особенного именно в реализации? Идея — да, красивая. Как и многое в Си. Но на практике натыкаться на ошибки вроде

for (int i = 0; i < n; ++i)
  for (int j = 0; j < m; ++j)


надоедает. Конечно, все это обходится. Мне в моем Емаксе не приходится вводить имя переменной три раза — у меня на этот случае есть шаблончик.

A>Жаль огорчать, но в большинстве (ИМХО, из личного опыта) практических задач удобнее индексация с 0. При работе с массивами часто требуется величина именно смещения.


С этим можно поспорить. Может, удобство проистекает именно из привычки?
Re[12]: Синтаксический оверхед
От: Трурль  
Дата: 24.06.05 07:32
Оценка:
Здравствуйте, Mamut, Вы писали:

M>Где-то здесь на форме пробегало сообщеие, что это был вообще како-то свой язык. Какой-нибудь Автокод Инжинера?

Слышал, там использовали Дракон, язык на основе блок-схем.
Re[8]: Синтаксический оверхед
От: Sinclair Россия https://github.com/evilguest/
Дата: 24.06.05 07:35
Оценка: +1
Здравствуйте, qwertyuiop, Вы писали:
Q>Большинство современных компиляторов выдают на такую строчку предупреждение
А большинство совремнных PM заставляют компилять с treat warnings as errors
... << RSDN@Home 1.1.4 beta 5 rev. 395>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[4]: Синтаксический оверхед
От: Amidlokos Россия  
Дата: 24.06.05 07:39
Оценка:
Здравствуйте, faulx, Вы писали:

A>>Скажу только, что из всего Си-подобного семейства я больше всего восхищён реализацией цикла for. И сколько ни пишу, всё никак на него не нарадуюсь.


F>Что такого особенного именно в реализации? Идея — да, красивая. Как и многое в Си. Но на практике натыкаться на ошибки вроде


F>
F>for (int i = 0; i < n; ++i)
F>  for (int j = 0; j < m; ++j)
F>


Где ошибка?

F>Мне в моем Емаксе не приходится вводить имя переменной три раза — у меня на этот случае есть шаблончик.


Ну вот и выход нашёлся

A>>Жаль огорчать, но в большинстве (ИМХО, из личного опыта) практических задач удобнее индексация с 0. При работе с массивами часто требуется величина именно смещения.


F>С этим можно поспорить. Может, удобство проистекает именно из привычки?


Нет. Во всяком случае, не думаю. При индексации с 1 в любом случае пришлось бы явно вычитать эту единицу для расчётов (например, расчёта смещения на n блоков в потоке). То, насколько органично чаще всего ложится 0 в задачу, позволяет не сомневаться в его уместности.
... << RSDN@Home 1.1.4 beta 7 rev. 447>>
WARNING: expression "to_be || !to_be" is always true
Re[5]: Синтаксический оверхед
От: faulx  
Дата: 24.06.05 07:40
Оценка:
Здравствуйте, Amidlokos, Вы писали:

F>>Даже в Паскале можно указывать шаг изменения (или это только в Турбо-паскале с потомками?).


A>Вона как? Код в студию!


Может, и ошибся, 10 лет не писал на Паскале. Но я имел в виду не конкретно язык Паскаль, а Паскалеобразный синтаксис (причем только для цикла for). Кстати, судя по этому сообщению
Автор: Сергей Губанов
Дата: 24.06.05
, в пресловутом Обероне шаг цикла можно указывать.

A>Как я помню, шаг там выбирается между 1 и -1 (соответственно, to и downto). И всё.


Да-да-да, что-то припоминаю. А для других шагов там, кажется, целочисленно делили верхнюю границу на величину шага. Давно все это было...

A>Да. Но не юзер, а профессионал.


A>Простому человеку тоже понятнее в граммах, но ювелиры измеряют почему-то в каратах


Может, на футы с милями перейдем? Что нам эти "юзерские" километры?
Re: Идеологически правильный мегарулез
От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
Дата: 24.06.05 07:48
Оценка: -1 :)))
Данное сообщение посвящено объяснению практической ценности существования EXIT-а только в LOOP, но не в WHILE/REPEAT.

Пацак здесь
Автор: Пацак
Дата: 24.06.05
сформулировал общее мнение на этот счет:

...в обероне вообще до LOOP докатимся, как выяснилось. Можно конечно это рассматривать как идеологически правильный мегарулез, но как-то не воодушевляет...


Не смотря на "идеологически правильный мегарулез", народ требует объяснить, какую из этого можно получить практическую выгоду.

А вот, например, хотя бы и такую:

Мы можем выйти из нескольких вложенных WHILE/REPEAT циклов. Внешний цикл делаем LOOP-ным, а все вложенные циклы делаем WHILE/REPEAT-ными. Тогда EXIT прервет все циклы сразу. А вот если бы EXIT прерывал бы не только LOOP-ные циклы, но и все остальные, то из нескольких вложенных циклов (без goto или RETURN) выйти было бы (по быстрому) нельзя.
LOOP
  ...
  WHILE...
    ...
    REPEAT... (* много вложенных WHILE/REPEAT циклов *)
      ...
      WHILE...
        ...
        IF c THEN EXIT END; (* выход из всех циклов, на конец текущей LOOP-ной итерации *)
        ...          |
      END;           |
      ...            |
    UNTIL...;        |
    ...              |
  END;               |
  ...                |
END                  |
...---<--------------+



Конечно, если вложенные циклы, тоже LOOP-ные, то описанный тут механизм работать не будет (EXIT выведет только на конец ближайшего LOOP-а).
Re[5]: Синтаксический оверхед
От: faulx  
Дата: 24.06.05 07:49
Оценка:
Здравствуйте, Amidlokos, Вы писали:

F>>
F>>for (int i = 0; i < n; ++i)
F>>  for (int j = 0; j < m; ++j)
F>>


A>Где ошибка?


Блин, а мне еще советовали больше программировать на Си (куда уж больше!). Уже автоматически исправляю. Я имел в виду, конечно, код из моего исходного сообщения
Автор: faulx
Дата: 24.06.05
:

for (int i = 0; i < n; ++i)
  for (int j = 0; j < m; ++i)


F>>Мне в моем Емаксе не приходится вводить имя переменной три раза — у меня на этот случае есть шаблончик.


A>Ну вот и выход нашёлся


Костыль.

A>Нет. Во всяком случае, не думаю. При индексации с 1 в любом случае пришлось бы явно вычитать эту единицу для расчётов (например, расчёта смещения на n блоков в потоке). То, насколько органично чаще всего ложится 0 в задачу, позволяет не сомневаться в его уместности.


Может, в этом и разница между массиво-подобными структурами и потоко-подобными (термины выдумал только что и сам)? Скажем, работать с матрицами удобнее при индексации с 1.
Re[6]: Синтаксический оверхед
От: Amidlokos Россия  
Дата: 24.06.05 07:51
Оценка:
Здравствуйте, faulx, Вы писали:

F>Да-да-да, что-то припоминаю. А для других шагов там, кажется, целочисленно делили верхнюю границу на величину шага. Давно все это было...


Ну, в общем, ручками считали. Что не есть удобство

Кстати, сишные for-ы позволяют в зависимости от условий крутиться как вперёд, так и назад:

int step = (condition)? 1 : -1;

for (int i = start; (i < count && i >= 0); i += step)
{
    blah_blah_blah(i);
}


Пусть один раз в жизни, но мне такое встречалось В паскале пришлось бы через while писать. Но это всё скорее просто к слову...

A>>Да. Но не юзер, а профессионал.


A>>Простому человеку тоже понятнее в граммах, но ювелиры измеряют почему-то в каратах


F>Может, на футы с милями перейдем? Что нам эти "юзерские" километры?


Ээээ, нет Не путайте национальные системы измерений и профессиональные Футы с милями тоже "юзерские".
... << RSDN@Home 1.1.4 beta 7 rev. 447>>
WARNING: expression "to_be || !to_be" is always true
Re[3]: FOR
От: faulx  
Дата: 24.06.05 07:52
Оценка:
Здравствуйте, Сергей Губанов, Вы писали:

СГ>Дело в том, что в Обероне (1987) цикла FOR нет вообще (вспомните: циклы бывают всего трех типов... и FOR-а среди них нет).


СГ>Под "давлением общественности", по "массовым просьбам трудящихся" или по каким-то иным не известным нам причинам в Обероне 2 (1992) цикл FOR всё-таки появился.


Любопытно было бы выслушать ваше мнение по поводу Лисповского мега-цикла.
Re[13]: Синтаксический оверхед
От: Трурль  
Дата: 24.06.05 07:54
Оценка: 1 (1)
Здравствуйте, Трурль, Вы писали:

Т>Слышал, там использовали Дракон, язык на основе блок-схем.

Впрочем, нет. Дракон -это учебный вариант того, что там использовалось.
Re[7]: Синтаксический оверхед
От: faulx  
Дата: 24.06.05 07:55
Оценка:
Здравствуйте, Amidlokos, Вы писали:

A>Ээээ, нет Не путайте национальные системы измерений и профессиональные Футы с милями тоже "юзерские".


А какие же профессиональные единицы измерения длины? Кабельтовы с теми же милями, как у моряков? Или мы, как программисты, считаем, что в одном километре 1024 метра?
Re[4]: FOR
От: Курилка Россия http://kirya.narod.ru/
Дата: 24.06.05 07:57
Оценка:
Здравствуйте, faulx, Вы писали:

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


СГ>>Дело в том, что в Обероне (1987) цикла FOR нет вообще (вспомните: циклы бывают всего трех типов... и FOR-а среди них нет).


СГ>>Под "давлением общественности", по "массовым просьбам трудящихся" или по каким-то иным не известным нам причинам в Обероне 2 (1992) цикл FOR всё-таки появился.


F>Любопытно было бы выслушать ваше мнение по поводу Лисповского мега-цикла.


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