Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [General] Арифметический IF, ... холлеритовские строки, метки 
V
    Опции темы
regis
Дата 13.4.2006, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 232
Регистрация: 12.12.2005
Где: Москва, Россия

Репутация: нет
Всего: 7



Когда-то был даже "базисный Фортран". Насколько помню, нормальных операторов IF (с логическими условиями в нем) в базисном не было вообще -- был только вычисляемый арифметический IF:

IF (выр) метка1, метка2, метка3 => если выр<0, на метку1, если выр=0, на метку2, иначе на метку3.

А еще меня совершенно убивали "холлеритовские" строки:

13HHello, world!



Это сообщение отредактировал(а) regis - 13.4.2006, 13:34
--------------------
В. В чем разница между hardware и software?О. В отличие от второго, по первому можно двинуть кулаком или пнуть ногой.
PM MAIL WWW   Вверх
Cr@$h
Дата 13.4.2006, 19:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Исследователь
***


Профиль
Группа: Участник Клуба
Сообщений: 1693
Регистрация: 3.4.2005
Где: Санкт-Петербург, Россия

Репутация: 1
Всего: 41



Хорошо, обе конструкции исключены из языка. smile smile
PM MAIL ICQ   Вверх
Ignat
Дата 14.4.2006, 10:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

Репутация: нет
Всего: 73



Цитата(Cr@$h @ 13.4.2006, 20:00 Найти цитируемый пост)
Хорошо, обе конструкции исключены из языка

Арифметический IF исключили?!
Одна из немногих прелестей, которая нравилась в 77.



--------------------
Теперь при чем :P
PM   Вверх
Cr@$h
Дата 14.4.2006, 10:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Исследователь
***


Профиль
Группа: Участник Клуба
Сообщений: 1693
Регистрация: 3.4.2005
Где: Санкт-Петербург, Россия

Репутация: 1
Всего: 41



Цитата(Ignat @ 14.4.2006, 11:12 Найти цитируемый пост)
Арифметический IF исключили?!
Одна из немногих прелестей, которая нравилась в 77.

Прелесть, таящая в себе опасности. Давайте не забывать, что метки -- источник лапши в коде. Также компактно и более лаконично эта задача решается через if-then-else. Считаю, что метки нужно вообще убрать из языка. Для индустриальных технологий создания программного обеспечения такое вооружение вообще не подходит, я глубоко убежден.
PM MAIL ICQ   Вверх
Ignat
Дата 14.4.2006, 10:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

Репутация: нет
Всего: 73



Цитата(Cr@$h @ 14.4.2006, 11:49 Найти цитируемый пост)
Давайте не забывать, что метки -- источник лапши в коде.

Насчет меток согласен, но можно было бы заменить метки вызовами функций, а не убивать совсем.


--------------------
Теперь при чем :P
PM   Вверх
Cr@$h
Дата 16.4.2006, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Исследователь
***


Профиль
Группа: Участник Клуба
Сообщений: 1693
Регистрация: 3.4.2005
Где: Санкт-Петербург, Россия

Репутация: 1
Всего: 41



Цитата(Ignat @  14.4.2006,  11:57 Найти цитируемый пост)
Насчет меток согласен, но можно было бы заменить метки вызовами функций, а не убивать совсем.

А что толку -- источник ошибок все равно будет, а значит будут ошибки. Хотя я не совсем понял концепцию такой замены. 
PM MAIL ICQ   Вверх
Ignat
Дата 17.4.2006, 09:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

Репутация: нет
Всего: 73



IF (F(x)) PROC1, PROC2, PROC3

Т.е. не переход, а вызов процедуры... Как это в нынешнем стандарте выглядит не представляю. Надо попробовать. 


--------------------
Теперь при чем :P
PM   Вверх
regis
Дата 17.4.2006, 10:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 232
Регистрация: 12.12.2005
Где: Москва, Россия

Репутация: нет
Всего: 7



Так если это очень нужно, это легко реализовать самому (напишите процедуру, которая первым аргументом принимает выражение, а еще тремя -- ссылки на вызываемые функции).
 
--------------------
В. В чем разница между hardware и software?О. В отличие от второго, по первому можно двинуть кулаком или пнуть ногой.
PM MAIL WWW   Вверх
Ignat
Дата 17.4.2006, 10:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

Репутация: нет
Всего: 73



Цитата(regis @  17.4.2006,  11:46 Найти цитируемый пост)
ак если это очень нужно, это легко реализовать самому

Как два байта... Вот только посмотрев машинный код, мы увидим лишний переход. В принципе это должно решаться inline-функциями, но есть ли они в современном фортране? В 77 не было, как я помню. 


--------------------
Теперь при чем :P
PM   Вверх
FatalError
Дата 17.4.2006, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 11.4.2006

Репутация: нет
Всего: 1



regis
Цитата

А еще меня совершенно убивали "холлеритовские" строки:

13HHello, world!

Не знаю, мне казалось, довольно удобная штука. Но поддержку этого дела вырубили радикально и повсеместно. 
PM MAIL   Вверх
Cr@$h
Дата 19.4.2006, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Исследователь
***


Профиль
Группа: Участник Клуба
Сообщений: 1693
Регистрация: 3.4.2005
Где: Санкт-Петербург, Россия

Репутация: 1
Всего: 41



Цитата(Ignat @  17.4.2006,  10:42 Найти цитируемый пост)
IF (F(x)) PROC1, PROC2, PROC3

Т.е. не переход, а вызов процедуры... Как это в нынешнем стандарте выглядит не представляю. Надо попробовать.  

Да, выглядит практично. В последнем стандарте такой формы if нет ни в каком проявлении.
Цитата(regis @  17.4.2006,  11:46 Найти цитируемый пост)
Так если это очень нужно, это легко реализовать самому (напишите процедуру, которая первым аргументом принимает выражение, а еще тремя -- ссылки на вызываемые функции).

Будет много лишнего времени тратиться на вызов функций.
Цитата(Ignat @  17.4.2006,  11:51 Найти цитируемый пост)
Вот только посмотрев машинный код, мы увидим лишний переход. В принципе это должно решаться inline-функциями, но есть ли они в современном фортране? В 77 не было, как я помню.

inline-функции -- прерогатива компилятора. Устанавливается это дело директивами или опциями компиляции. Например, в Intel есть т.н. High Level Optimization, который смотрит в том числе, где бы эффективно заinlineить.
Цитата(XPEHOMETP @  17.4.2006,  14:00 Найти цитируемый пост)
Не знаю, мне казалось, довольно удобная штука.

Удобно? -- нужно же было считать число символов в строке, а если строку потом менять, то повторное использование совсем будет неэффективным. Я за их отмену. 
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Fortran | Следующая тема »


 




[ Время генерации скрипта: 0.0766 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.