Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы программирования на FORTRAN (ФОРТРАН)

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329

Открыть новую тему     Написать ответ в эту тему

akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Обсуждаются все вопросы, связанные с программированием на ФОРТРАН, как общего так и конкретного характера.
Постарайтесь дать как можно больше информации о возникшей проблеме -- это в конце концов в ваших же интересах чтобы вам помогли...

прежде чем просить помощи в задании
платное решение задач

ресурсы этого топика
ссылка на подборку ресурсов, собранных посетителями этого форума
 
то, чем мы решили поделиться
ссылка на страничку программ etc собственного изготовления, которыми любезно делятся наши форумчане


если вам вдруг не отвечают или ответ вас не устраивает
и вообще полезно прочитать всем спрашивающим
 
просьба к пишущим и отвечающим все большие листинги оформлять тегом more
и отключать графические смайлики при размещении фортран-кода

Всего записей: 24052 | Зарегистр. 06-12-2002 | Отправлено: 18:11 14-01-2007 | Исправлено: akaGM, 09:47 01-03-2020
Rock

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ognev

Цитата:
Которая размазывая по себе сопли и туш говорила мне на полном серьезе, что Луна ... она это ... летает ... где то .. в туманности ...

akaGM

Цитата:
я терпимее...  я терплю...  

Ognev, вот, берите пример с akaGM.
Я, вот, только на старости лет узнал, что одному из героев-панфиловцев его посмертная "Золотая Звезда" была тайно вручена после войны где-то на Алтае, второй добивался (безуспешно, поскольку после своей героической гибели он два раза во время войны попадал в плен и работал в полиции на оккупированных территориях) восстановления посмертного звания Героя Советского Союза до самой своей смерти 19 декабря 1996 года, что обороной дома Павлова командовал лейтенант Афанасьев, которого благодарные волгоградцы перечислили на мемориальной доске на доме в числе рядовых. Но хотя бы перечислили!!! Ведь одного из защитников дома Павлова, инвалида второй или даже первой группы, насильно переселили из родного калмыцкого аула (по причине уже забыл какой, но, типа, как чеченцев или дагестанцев) куда-то далеко, потом разрешили вернуться, но так и не признали защитником чертового дома (а он добивался этого, по крайней мере, до 2008-го года включительно). А вся хренота по поводу героизма людей, последовательности событий, описания подвигов и бытия этих людей отскакивала от моих зубов на протяжении всего моего детства! А Вы к бедной девочке по поводу Луны (даже забыл, надо ли ее писать с большой буквы забыл) прицепились...
Ну, вот, позволит ли Вам (далее, чисто, чтоб не забанили за off-topic), знание того, что Луна -- естественный спутник Земли, до которого, на самом деле, не так далеко и многие автомобили за время своей эксплуатации доезжают "туда", а некоторые и "обратно" (и не раз), определить, какие особенности Фортрана позволяют ему объективно быть быстрее С, и какие новые возможности С++ позволяют ему, опять-таки, объективно обогнать Фортран?

Всего записей: 1256 | Зарегистр. 10-04-2003 | Отправлено: 01:48 20-05-2018
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Rock

Цитата:
какие особенности Фортрана позволяют ему объективно быть быстрее С, и какие новые возможности С++ позволяют ему, опять-таки, объективно обогнать Фортран?
//заинтересованно
 
какие?

Всего записей: 24052 | Зарегистр. 06-12-2002 | Отправлено: 03:00 20-05-2018
FuzzyLogic



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
какие?

В общем-то никакие

Всего записей: 1920 | Зарегистр. 27-07-2002 | Отправлено: 03:20 20-05-2018
Rock

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
akaGM

Цитата:
//заинтересованно    какие?

Блин, спать собрался, так что коротенько. По сути одно -- pointer aliasing (ищите с programming или типа того, там будут полные разборы с ассемблерными листингами под разные архитектуры с разной организацией кэша). Фортран гарантирует его отсутствие на уровне языка. С -- нет, только с помощью расширений. Выигрыш сильно зависит от архитектуры вычислительной системы.
Я не вспомню, ввели ли решение aliasing в С++ (вроде, собирались), но туда точно ввели _гарантированные_ вычисления на этапе компиляции (если компилятор не может вычислить значение выражение на этапе компиляции, то выдается ошибка, а не генерируется runtime код). Сейчас язык шаблонов С++ является turing complete, так что посчитать можно реально все.
В принципе, для ответа на вопрос достаточно.
Сложно сказать, насколько эта информация полезна реальному программисту. Подавляющее большинство без нее прекрасно обходятся. Типа, как Луна для Вашей девочки -- просто бесполезная в ее ежедневной жизнедеятельности информация. Знание допустимых границ холестерина, креатинина или глюкозы куда важнее. Надо какие-то более-менее объективные показатели брать, вроде, средней продолжительности жизни или дохода. Не идеал, но позволяет грубо оценить, насколько одни люди умнее других.

Всего записей: 1256 | Зарегистр. 10-04-2003 | Отправлено: 05:06 20-05-2018
FuzzyLogic



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Rock
Я бы начал с того что компиляторы для конкретного языка ушли в прошлое, что gcc/gfortran что ifc/ifort это по сути разные фронтенды, а бэкэнд у них один. Разница конечно есть, но не так велика как кажется. Взять скажем simd - в сях у вас будут интринзики для разных архитектур, итд. В фортране вы тупо надеетесь на то что компилятор угадает чего вам хочется.
CUDA, OpenCL - всё крутится вокруг ядер сделанных на C. Да, определенная поддержка фортрана есть, но сравнивать развитость библиотек итд для C++ и фортрана имхо наивно. И даже такие штуки как OpenMP/MPI которым уже сто лет в обед - если хочется более тонкого управления процессами, итд - удачи вам с фортраном.
Имхо фортран это как раз язык для непрограммистов, ибо прост как 3 копейки. По сути если выучить объявление переменных и ещё пару штук, то перед вами этакий матлаб, но в сто раз быстрее.

Всего записей: 1920 | Зарегистр. 27-07-2002 | Отправлено: 07:28 20-05-2018
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Имхо фортран это как раз язык для непрограммистов, ибо прост как 3 копейки.
единственная мысль, кот. я понял и с которой согласен...
 
поначалу три копейки == три оператора (о которых я всегда говорил): if, goto и do,
что на Ф, что на тогдашних ассемблерах -- всё едино, просто, быстро и понятно инженерам/учёным. И трансляторы генерили эффективный код.
после того же, как стало возможным писать
 
res /= (double) (x++ - (*y-- & ++z^10) * *(p+1))) (ну понятно в общем)
 
[не]программисты и трансляторы призадумались, т.к. был негарантирован быстрый и не всегда эффективный код на всех платформах, например...
так родился С -- "ассемблер со структурами данных", с таким определением которого я не вполне согласен...
это всё способствовало и очень ускорило обособлению и выделению программиста в отдельную специальность...
 
о С++ я ничего не скажу, т.к. не в копенгагене...
 
FuzzyLogic

Цитата:
но сравнивать развитость библиотек итд для C++ и фортрана имхо наивно
и да и нет,
и как всегда исключения подтверждают... ну итд
 
вот именно на этой неделе (крутые крестоносцы :) попросили меня разобраться с Quantum Espresso (http://www.quantum-espresso.org/) пИсанной на Ф90 (ласт апдатед май 2018-ого)
слава богу, я не юниксоид, поэтому отмазка принята :)
кстати, отсюда мой вопрос выше об IOTK (это базовый сторонний пакет в/в для QE)...

Всего записей: 24052 | Зарегистр. 06-12-2002 | Отправлено: 13:17 20-05-2018 | Исправлено: akaGM, 17:17 20-05-2018
Rock

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
FuzzyLogic

Цитата:
Rock  Я бы начал с того что компиляторы для конкретного языка ушли в прошлое, что gcc/gfortran что ifc/ifort это по сути разные фронтенды, а бэкэнд у них один. Разница конечно есть, но не так велика как кажется. Взять скажем simd - в сях у вас будут интринзики для разных архитектур, итд. В фортране вы тупо надеетесь на то что компилятор угадает чего вам хочется.  

Там надо было очень внимательно отнестись к деталям беседы. Я специально подчеркнул, что речь идет об объективных характеристиках именно языков программирования, а не компиляторов. В компилятор Вы можете напихать что угодно, наделив его возможностями решать проблемы, которые никак не специфицированы стандартом языка. После этого смысл подобных разговоров теряется полностью -- люди никогда не договорятся. По своей сути Фортран быстрее, но не может выступать в роли языка системного программирования именно из-за отсутствия pointer aliasing -- некоторые вещи на нем нельзя написать в принципе. Вы можете добавить в компилятор С управление кодогенератором и административно указать, что какие-то данные не пересекаются и он с удовольствием сгенерирует оптимальный код. Но контролировать это придется именно Вам, компилятор можно будет "обмануть" и работать ничего не будет -- настолько разным будет код, даже несмотря на то, что кодогенератор будет один и тот же -- порочные мысли-то в алгоритме.
 
Это по делу. Но Вы попытались уйти вообще в другую сторону -- в архитектуру и дизайн компиляторов. Там вообще все сложно. Генерировать промежуточное представление (IL -- intermediate language) придумал Вирт в Паскале. Из коммерческих широкодоступных вещей на ум приходят продукты TopSpeed -- Кларион, С, С++, Паскаль там компилировались в один IL, который обрабатывался одним кодогенератовм. Сейчас так устроен LLVM. На самом деле, так все устроены, но с разной степенью выраженности. Даже Microsoft смогло преобразовать IL LLVM в свой IL и успешно запустить свой кодогенератор (С2) на результате этого безобразия. Это все хорошо, красиво, но до сих пор в ряде направлений практически бессмысленно -- очень дорого по времени или по памяти. Тот же ваш Intel Fortran еще году в 2000, ну, третьем, требовал для нормальной работы 1 Гб ОЗУ. Нонсенс. Так что, сейчас, когда оно все, наконец-то, появилось, мы все еще в начале пути.

Всего записей: 1256 | Зарегистр. 10-04-2003 | Отправлено: 17:08 20-05-2018
Ognev

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Rock,
 

Цитата:
А Вы к бедной девочке по поводу Луны ...

Да не я к ней, а она ко мне. Это она хотела мне сдать. А я вообще ничего не хотел. Ну разве, что больше не видеть всех этих персонажей )))
 
А по поводу высокой теории, которую вы тут втроем обсуждаете, и большая часть которой, мне, конечно, не понятна, я могу высказать только свой общий взгляд неспециалиста на подобные вещи.  
По мне, абсолютно наивно думать, что если кто-то построит "на бумажке" (в теории) Великий и Прекрасный Язык Суперского Программирования, то все сразу бросятся ему учиться и клепать на нем программы или что-то считать. Без его конкретной реализации он никому не будет нужен. А если реализация будет, но фиговая, то он тоже никому не будет нужен. С другой стороны, да, согласен с вами, что принципиальная невозможность каких-то "фитч" в определенном языке программирования **может** негативно сказываться на его развитии. А может и не сказываться, если эти "фитчи" можно реализовать в этом языке другими способами. Потом, никто не мешает тем, кто делает компиляторы, добавить самим эти полезные вещи. И только не надо здесь рассказывать про Стандарты и Спецификацию языка или т.п. вещи. Необходимость у пользователей конкретных вещей рождает спрос, а предложение можно и сразу в компилятор всунуть, если можешь. А можно ничего не делать и ссылаться на отсутствие в Стандарте.  
Но это все чисто imho.
 
И еще, для (около)научных целей, в принципе, не нужна даже компиляция в классический (как я себе это понимаю) машинный код. Вон тут писали про Matlab, например. Там ты получаешь ответ на экране или выгружаешь в файл для дальнейшей обработки, и этого более чем достаточно. Так что, все еще очень сильно зависит от конкретики решаемой задачи.  
 

Всего записей: 397 | Зарегистр. 07-09-2004 | Отправлено: 19:00 20-05-2018
FuzzyLogic



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Rock
Язык как абстракция мне не сильно интересен ибо вопрос в том "кто быстрее", а "быстроту", на мой взгляд, есть смысл оценивать только в решении каких-то задач и если вы посмотрите на бенчмарки всякой ерунды, то разница уже довольно давно снизилась до минимальных величин.
 
Ognev
Матлаб замечателен и чудесен, если не нужно считать чего-то объемного, но вследствие того что язык интерпретируемый, а не компилируемый - на больших счётных задачах скорость счёта легко может различаться на два порядка. Что для тех самых "больших" задач не есть хорошо ибо 2 недели и 200 недель это существенная разница.

Всего записей: 1920 | Зарегистр. 27-07-2002 | Отправлено: 20:07 20-05-2018
Rock

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Я вообще за девочку заступился, которая не знает, что такое Луна! Я потролить хотел!! Я Фортран приплел, чтоб не забанили!!!!
Ну а во всем остальном вы тут совершенно неправы. Если посмотреть на мир вокруг, то он реально устроен по-другому, чем вы тут все себе представляете.

Всего записей: 1256 | Зарегистр. 10-04-2003 | Отправлено: 20:35 20-05-2018
Ognev

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
FuzzyLogic,
 
я согласен про скорость. Хотя оценка "в два порядка" кажется мне несколько завышенной. Плюс я не знаю реальных людей, которые в системах типа Matlab считали какую-то задачу больше пары дней. Не сосчиталась за день, значит несчитабельна в таком виде. И дальше или серьезная оптимизация алгоритма, либо тупо кусок задачи, либо другими средствами на серьезных машинах пробуют (если владеют знанием других средств).
 
UPD
 
Rock,
 
ну, девочку тебе потролить удалось! )))
 
UPD2
 
FuzzyLogic,
 
на всякий случай, я не работал уже очень давно с Matlab - а то вдруг там есть чего-то, что задачу в фоне можно месяц крутить. А так все это было про Mathematica И Maple на обычных компах.

Всего записей: 397 | Зарегистр. 07-09-2004 | Отправлено: 20:42 20-05-2018 | Исправлено: Ognev, 20:46 20-05-2018
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Matlab - а то вдруг там есть чего-то, что задачу в фоне можно месяц крутить.
есть...
связь с фортраном :)
ну или с Сями...
счёт на языке высокого уровня, гуй-обвес и визуальная подача -- на матлабе...

Всего записей: 24052 | Зарегистр. 06-12-2002 | Отправлено: 02:30 24-05-2018
w10prs

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подробнее...

Всего записей: 15 | Зарегистр. 02-06-2018 | Отправлено: 06:14 02-06-2018
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
w10prs
 
кажется классическая структура данных -- структура, указатель на неё и массив таких указателей с набором операций create/delete/add/insert/search etc
100500 раз реализованная на других языках...
зачем на фортране? что тут счётного?

Всего записей: 24052 | Зарегистр. 06-12-2002 | Отправлено: 10:54 02-06-2018
w10prs

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Мне пришлось решать подобную задачу. Нужно было обработать группу объектов на предмет их пересечений в пространстве, а так же вычислений "объемов" их пересечений. Объектов может быть разное количество в зависимости от исходных данных, при этом каждый из объектов может пересекаться с одним или несколькими другими. Нельзя заранее сказать сколько таких пересечений получиться, это определялось по ходу решения. Я решил ту задачу просто создав огромный массив данных "на максимум", в который записывались результаты, но это потребовало много памяти. Ради плюсов стоит отметить, что решение получилось весьма простым. Однако при небольшом количестве исходных объектов и при их "удачном" расположении этот огромный массив использовался на 1-2 % от своего объема. Тогда я подумал, что было бы просто использовать динамически создаваемые структуры данных и использовать ровно столько памяти, сколько нужно в каждом конкретном случае.

Всего записей: 15 | Зарегистр. 02-06-2018 | Отправлено: 02:25 03-06-2018 | Исправлено: w10prs, 02:35 03-06-2018
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
w10prs
 
да это ладно, но почему на фортране-то, который только-только начал приспосабливаться к такого рода задачам?
 

Цитата:
Тогда я подумал, что было бы просто использовать динамически создаваемые структуры данных
ну тогда и смотри на allocatable-массивы своих структур...

Всего записей: 24052 | Зарегистр. 06-12-2002 | Отправлено: 03:12 03-06-2018
w10prs

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подробнее... [/more]
 
Добавлено:
Кстати, можно ли allocate массив динамически расширить уже после того, как в процессе выполнения программы был объявлен его размер? Т.е. расширить его дополнительно. Искал, но ответа на этот вопрос не нашел.

Всего записей: 15 | Зарегистр. 02-06-2018 | Отправлено: 08:39 03-06-2018 | Исправлено: w10prs, 08:42 03-06-2018
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Кстати, можно ли allocate массив динамически расширить уже после того
лично я на этот счёт в стандарте ничего не знаю, а у интелов вроде есть Realloc()...
с другой стороны, виндовым апи никто пользоваться не запрещает, но тут, удачи, короче...
 

Цитата:
использую так же С++
тут, как и в Сях, есть _всё_

Всего записей: 24052 | Зарегистр. 06-12-2002 | Отправлено: 10:10 03-06-2018
FuzzyLogic



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
w10prs
Ничего особенного нет, обычные allocatable типы, указатели. В общем-то все работает также как и в сях. Все те же самые механизмы. Realloc, как в общем-то и в других языках работает неэффективно, с той точки зрения что будет тупо выделять новый кусок памяти и копировать всё туда. Можно реализовать массив списком, тогда будет всё очень красиво с точки зрения памяти, но скорее всего не сильно удобно считать. Вообще, всё зависит, ибо задачи обычно счётные. А раскладывая элементы памяти по структурам вы разбиваете целостность массивов, следовательно всякие плюшки вроде кэша будут работать не сильно хорошо. Я делал штуки вроде - структуры состоящей из указателей на элементы массивов, т.е. с одной стороны можно работать с элементами структуры как с массивом, с другой стороны, есть структура которая описывает всё это хозяйство как объекты.

----------
Chase the dream, not the competition.

Всего записей: 1920 | Зарегистр. 27-07-2002 | Отправлено: 14:50 03-06-2018
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
господи, какие объекты? структура student -- запись максимум с 10-15-ю полями + 5-10 функций для манипуляций с этой записью...
да и массив указателей не нужен, сойдёт массив записей (если не надо в студенты записывать весь китай, конечно)...
и даже реаллок, которая "будет тупо выделять новый кусок памяти и копировать всё туда." -- всё равно довольно шустрая процедура на iКамнях (да и на АМД тоже) и на IF...

Всего записей: 24052 | Зарегистр. 06-12-2002 | Отправлено: 19:11 03-06-2018
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы программирования на FORTRAN (ФОРТРАН)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru