LINUX.ORG.RU
ФорумTalks

С фортраном всегда так?

 


0

0

Попросили тут на днях халтурку сделать небольшую. Переписать одну мини-утилитку (~ 250 строк кода) переписать с фортрана на плюсы.

Присылают код, действительно 250 строк. Но какой это код:

      WRITE(16,9)(NBC(I),NFIX(I),I=1,NB)
   9  FORMAT(2i8)
      call FRMEG(imax,nband,nszf,ne,ndfg,ncnm,
     *nop,estifm,nstm,a,nb,nfix,nbc,ndis,knul)
if(ncol.gt.nband) write(16,901)ncol,l,k,km,ncolb,nrowb,nop(n,kk)
     *,n,kk,ndfg
 901  format(1x,'NCOL=',10i9)
      a(im,ncol)=a(im,ncol)+estifm(i,nfx+k)
 322  continue
 320  continue
 321  continue
 360  continue
      if(ie.ne.n) read(8)

Продакшн код на фортране всегда так выглядит? Я когда-то книжку по нему листал, там всё приличнее было...

PS И предлагали в этом разбираться за 1000р =)

☆☆☆☆☆

Ответ на: комментарий от Evgueni

Отсутствие форматирования кода (там всё в один столбец), количество переменных с названиями из 1-2 букв, полное отсутствие комментариев.

Понятно, что разобраться можно, но это не заказ на 1000р. Если тебе так нужна 1000, могу дать контакт этого мужика ;-)

DELIRIUM ☆☆☆☆☆
() автор топика
Ответ на: комментарий от DELIRIUM

Как бы тебе следует учесть, что

а) размер строки в Fortran был ограничен размером перфокарты и кое-какие компиляторы это весьма строго соблюдали. Поэтому не до форматирования.

б) в некоторых опять же компиляторах до сих пор в именах переменных осмысленными были только первые 8, если не 6 символов.

А по поводу заказа — это ты его взял. Никто же не виноват, что ты не являешься квалифицированным программистом.

Evgueni ★★★★★
()
Последнее исправление: Evgueni (всего исправлений: 1)
Ответ на: комментарий от DELIRIUM

количество переменных с названиями из 1-2 букв

Это математика, бро.

полное отсутствие комментариев.

Это означает наличие технологической, методической или технической документации к программе.

pacify ★★★★★
()
Ответ на: комментарий от DELIRIUM

Это пустой оператор. Где-то есть переход на эти строчки. Это может быть выходом из цикла, условным переходом или циклом, если continue стоит до перехода.

Fortran действительно можно сильно запутать (см. переход по вычисляемой метке), но это не твой похоже случай.

Evgueni ★★★★★
()

Со старым фортраном (f77) зачастую так. Во-первых, сам язык тот ещё. Во-вторых, пишут на нём непрограммисты в основном.

С появлением фортрана 90 всё сильно изменилось в лучшую сторону.

yvv ★★☆
()
Ответ на: комментарий от Evgueni

я его и не взял. я попросил код посмотреть и отказался.

ты не являешься квалифицированным программистом

а что, квалифицированные программисты должны разгребать гогно по 1000р за заказ? у меня как-то сильно выше рейт почасовой.

Я взял код на посмотреть, думал, если работы на полчаса (250 строк же), то почему бы и нет, всё равно сидел дома и фигнёй страдал в этот момент.

DELIRIUM ☆☆☆☆☆
() автор топика
Ответ на: комментарий от DELIRIUM

ммм, фортран-77. Форматирование кода не помещается на перфокарту.

AptGet ★★★
()
Ответ на: комментарий от yvv

да, книжка, которую я листал, вроде была по fortran 90 (или 95, если такой есть, конечно).

Код на f77 до этого не видел.

DELIRIUM ☆☆☆☆☆
() автор топика

Продакшн код на фортране всегда так выглядит?

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

И предлагали в этом разбираться за 1000р =)

ИМХО 5000р. Ибо эти 250 строк эквивалентны ИМХО 2500 нормальных.

Что означают магические строки?

ничего не обозначают. NOP, нет операции. Нужно для меток. В эту точку 4 перехода указывают.

drBatty ★★
()
Ответ на: комментарий от DELIRIUM

или 95, если такой есть, конечно

Да, есть.

Код на f77 до этого не видел.

Очень много старого кода до сих пор используется. И даже есть индивиды, которые продолжают на нём писать, несмотря на то что уже фортран 2008 на дворе.

yvv ★★☆
()
Ответ на: комментарий от Evgueni

Ну мой основной работодатель так не считает, раз взяли =) Правда я там не на фортране пишу, а на крестах, с фортраном наверно бы не взяли =)

DELIRIUM ☆☆☆☆☆
() автор топика
Ответ на: комментарий от DELIRIUM

Отсутствие форматирования кода (там всё в один столбец), количество переменных с названиями из 1-2 букв, полное отсутствие комментариев.

Fortran 77?

LongLiveUbuntu ★★★★★
()

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

abraziv_whiskey ★★★★★
()
Ответ на: комментарий от drBatty

ИМХО 5000р

Ну я сначала сказал: «от 3к, точно скажу, когда посмотрю на код».

Он говорит: у нас только 1000р.

Я ответил, что пусть присылают, если будет понятно, что я уложусь меньше, чем в 1 час, то окей, если нет, то не возьмусь. Вот и не взялся.

DELIRIUM ☆☆☆☆☆
() автор топика
Ответ на: комментарий от DELIRIUM

а что, квалифицированные программисты должны разгребать гогно по 1000р за заказ? у меня как-то сильно выше рейт почасовой.

Где-то слышал фразу, что наивысшей квалификацией обладает не тот, кто что-то делает за деньги, а тот, кто может объяснить заказчику, что оно ему и вовсе не нужно делать :)

Конкретно по данной задаче, за 1000 рублей не надо отлаженный код переписывать на c++, а стоило бы поинтересоваться зачем его собрались переписать на c++? Подозреваю, что ради решения расчётной части какой-то задачи.

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

anonymous_incognito ★★★★★
()
Последнее исправление: anonymous_incognito (всего исправлений: 1)
Ответ на: комментарий от DELIRIUM

Вот и не взялся.

ну и правильно. Мне в таком говнокоде весь день ковыряться.

drBatty ★★
()
Ответ на: комментарий от anonymous_incognito

Тогда самое оптимальное - этот код не переписывать, а так и компилировать компилятором фортрана

тебе не кажется, что из небольшого куска тащить в проекте компилятор фортранна и Over9000 либ - не лучшая идея? Хотя... Если требуется вытянуть(распилить) как можно больше бабла...

drBatty ★★
()
Ответ на: комментарий от yvv

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

Как я понял, это утилита, которая на вход принимает данные в бинарном формате, как-то их обсчитывает и выдаёт результат.

DELIRIUM ☆☆☆☆☆
() автор топика
Ответ на: комментарий от drBatty

тебе не кажется, что из небольшого куска тащить в проекте компилятор фортранна и Over9000 либ - не лучшая идея? Хотя... Если требуется вытянуть(распилить) как можно больше бабла...

Вендопроблемы :-)

Если серьёзнее, то для большого жирного проекта, найти того, кто перепишет и оттестирует код не проблема. Просто предлагать надо не 1000 руб. А для проекта с ограниченным финансированием, ничего страшного нет сделать apt-get install gfortran и добавить в скрипт сборки вызов фортрана.

anonymous_incognito ★★★★★
()
Ответ на: комментарий от DELIRIUM

Как я понял, это утилита, которая на вход принимает данные в бинарном формате, как-то их обсчитывает и выдаёт результат.

Этими словами можно охарактеризовать 99.99999% утилит, написанных на фортране. Без понимания, что делает программа, пытаться её сконвертировать с фортрана 77 куда угодно - дохлый номер.

yvv ★★☆
()
Ответ на: комментарий от yvv

понятное дело, но желание дальше узнавать, что она делает, у меня не возникло.

DELIRIUM ☆☆☆☆☆
() автор топика
Ответ на: комментарий от yvv

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

Evgueni ★★★★★
()
Ответ на: комментарий от Evgueni

Без знания предметной области программист в одиночку бесполезен.

Да, это факт. Это, кстати, про любую профессию можно сказать.

yvv ★★☆
()
Ответ на: комментарий от yvv

На да, но у меня такое ощущение, что только для программистов данный факт является откровением.

Evgueni ★★★★★
()
Ответ на: комментарий от anonymous_incognito

Вендопроблемы

угу.

Если серьёзнее, то для большого жирного проекта, найти того, кто перепишет и оттестирует код не проблема. Просто предлагать надо не 1000 руб.

ну я про то и говорил. 1т.р. это очень мало.

А для проекта с ограниченным финансированием, ничего страшного нет сделать apt-get install gfortran и добавить в скрипт сборки вызов фортрана.

ты похоже с таким УГ не сталкивался: там 95% работы - разобраться что на входе, и что на выходе. И как. А сами формулы внутри можно чуть-ли не копипастить в C-код. Вот твоё предложение, этапа разбора форматов не отменяет...

drBatty ★★
()

Есть какие-то автоматические конвертеры из Фортрана в C++. Можешь попробовать их потестировать, а потом сказать заказчику, что за 1000 рублей ты только так можешь.

proud_anon ★★★★★
()

я как-то игрался с f2c, оно работало, но конечно нужно понимать что происходит в самой программе.

animal32
()
Ответ на: комментарий от Evgueni

А в чём проблема? Экономим место на диске?

нет конечно. между этими модулями (си<->фортран) нужно кучу костылей нагородить, по размеру - как сам модуль на фортране. Проще уж переписать с нуля. Да и вообще - проект на чистом C(C++) поддерживать на порядок проще.

ЗЫЖ это конечно предположения. Кода я не видел, в этом конкретном случае всё может быть иначе.

drBatty ★★
()
Ответ на: комментарий от animal32

f2c какой-то свой язык конвертирует, похожий на фортран. g77 и gfortran, они какие-то тоже странные.

Лучший способ использовать фортран - это купить нормальный коммерческий компилятор.

yvv ★★☆
()
Ответ на: комментарий от proud_anon

А вот это действительно нафиг, нафиг, нафиг.

Evgueni ★★★★★
()
Ответ на: комментарий от Evgueni

Без знания предметной области программист в одиночку бесполезен.

Согласен. Я когда работал кодером в банке, писали софт для анализа кредитных рисков. Так там никто из девелоперов, включая меня, вообще ни хрена не понимали, что этот код делает. Приходилось тормошить постоянно аналитиков, чтобы разжёвывали на пальцах все этих basel, типы сделок, рисков и прочую лабуду.

DELIRIUM ☆☆☆☆☆
() автор топика

не всегда. man fortran90, он он понятней C и читается как обычный текст.

thunar ★★★★★
()
Ответ на: комментарий от yvv

Ну нафига для Fortran77 коммерческий компилятор? Это же стандарт, которому, минутку, больше _30_ лет. Я вот понимаю если бы что-то с VaXов переносили, но в этом случае и коммерческие компиляторы не помогут, так как маловероятно что кто-то всерьёз тянет DECовские расширения.

Evgueni ★★★★★
()
Ответ на: комментарий от Evgueni

Я вот понимаю если бы что-то с VaXов переносили, но в этом случае и коммерческие компиляторы не помогут, так как маловероятно что кто-то всерьёз тянет DECовские расширения.

Не знаю как на самом деле обстоят дела, но учитывая генетические корни Intel Fortran, вполне мог бы и тянуть.

Dec Fortran --> Compaq Fortran --> Intel Fortran

anonymous_incognito ★★★★★
()
Ответ на: комментарий от Evgueni

Ну нафига для Fortran77 коммерческий компилятор?

Потому что он понимает все фортраны, от 66 до 2008, и очень хорошо оптимизирует код. Я пользовался разными, absoft, nag, intel. Сейчас intel в нагрузку с железом даёт компиляторы c/fortran, плюс математическую библиотеку под оба, плюс mpi, тоже под оба. Gfortran отдыхает.

yvv ★★☆
()
Ответ на: комментарий от Evgueni

Ну бред же собачий сочиняете. Хотя безусловно никто не требует от вас быть компетентным.

ага. мне такое уг один раз попалось. не показатель.

drBatty ★★
()
Ответ на: комментарий от drBatty

ты похоже с таким УГ не сталкивался: там 95% работы - разобраться что на входе, и что на выходе. И как. А сами формулы внутри можно чуть-ли не копипастить в C-код. Вот твоё предложение, этапа разбора форматов не отменяет...

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

anonymous_incognito ★★★★★
()
Ответ на: комментарий от yvv

плюс математическую библиотеку под оба

Причём сишный MKL, afaik, просто обёртка над фортрановским.

imtw
()
Ответ на: комментарий от yvv

Потому что он понимает все фортраны, от 66 до 2008, и очень хорошо оптимизирует код. Я пользовался разными, absoft, nag, intel.

Последние версии gfortran, где-то начиная с gcc v.4.6 не очень сильно уступают интеловскому (на 30-50%), явно была проведена серьёзная оптимизация и поддерживают от 66 до 95, а старше 95-ого редко когда нужно.

anonymous_incognito ★★★★★
()
Ответ на: комментарий от anonymous_incognito

Если бы у меня не было счастья в виде интеловского компилятора с библиотеками, я бы может попробовал. А так, верю на слово.

yvv ★★☆
()
Ответ на: комментарий от tailgunner

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

anonymous_incognito ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.