Требования, которые вы выдвинули, фактически ставят Fortran на первое место в списке для таких проблем:
а)
сокращение чисел б) параллеллы
в) это был и остается языком де-факто, преподаваемым за пределами обучения CS (для инженеров, которые не являются профессиональными программистами).
d) имеет невероятную (!) отраслевую поддержку по количеству отраслевых компиляторов, и ни один из поставщиков не продемонстрировал ни малейших признаков отказа от этой отрасли. Не так давно один из представителей Intel сообщил, что продажи их продуктов Fortran выше, чем у других в их инструментах разработки.
Это также язык, который невероятно легко подобрать. Я не согласен с тем, что требуется время для того, чтобы привести научных сотрудников в курс дела. В моем первом учебнике было не больше, чем, о, я не знаю, 30 (?) Страниц разреженного печатного текста. Это язык, на котором после изучения 10 ключевых слов можно писать программы среднего размера. Я бы осмелился сказать, что эти 30 страниц, написанные в тексте Word по умолчанию, стали бы более чем исчерпывающим «Руководством по Фортрану» для большинства пользователей.
Если вы заинтересованы в CUDA, вы можете проверить компилятор Portland Group , который его поддерживает . Я не знаком с мельчайшими деталями, но люди обычно говорят об этом с похвалой.
Кроме того, для параллельных программ у вас есть OpenMP, MPI и теперь предстоящие (и долгожданные) совместные массивы, которые недавно внедрил компилятор Intel . Чтобы не тратить слова впустую, в Fortran есть очень хорошая гамма «библиотек» для распараллеливания программ.
Для этого прежде всего разрабатываются стандартные числовые библиотеки , другие языки более или менее следуют в портфеле функций / рутин.
Однако, несмотря на все сказанное, я ( однако, зависит от того, когда он был изначально написан) рекомендую, если это, скажем, код F77 или более старый, переписывая его частично во времени на более новые диалекты - по крайней мере, F90, если это возможно с функциями F2003. Бумага / диссертации по этой теме была недавно опубликована (средний размер PDF файла вперед). Это может не только обеспечить правильную переносимость между несколькими платформами, но также упростит дальнейшее обслуживание.
ps Что касается "будущего обслуживания", просто анегдот, который я иногда хотел бы упомянуть. Во время написания своей диссертации я повторно использовал код моего наставника, написанный 35 лет назад с момента написания. Скомпилировано только с одной ошибкой; в конце пропущена выписка из-за ошибки копирования-вставки :)
@DaveMateer (ответ на комментарий) - я собираюсь сделать следующий комментарий, который может быть немного невежливым, но, пожалуйста, не принимайте это неправильно, потому что это в добрых намерениях.
Мне кажется, вы решаете эту «проблему» неправильно. Что я имею в виду в нескольких коротких моментах (потому что здесь очень поздно, и моя способность составлять удобочитаемые (не говоря уже о понятных) предложениях оставляет меня после 22:00).
а) вы упомянули, что пытаетесь свести к минимуму дополнительное время кодирования, но при этом вы рассматриваете возможность переписать язык, специализированный для численных вычислений, на язык с ярким выбором языков , если вы простите мое выражение
- некоторые из которых не имеют поддержки многомерных массивов, среди прочего
- большинство из них непригодны для тяжелой числовой работы (я допускаю, что о возможностях параллельной обработки Haskell и Hadoop я ничего не знаю ... но никогда не слышал, чтобы они даже упоминались в этих кругах)
- возможно, это было опробовано, но я никогда не слышал о переписывании с Фортрана, языка для дискретных задач, на функциональный язык
- недавно было обсуждение на comp.lang.fortran (попробуйте поискать в группах Google) аспектов научных вычислений «в облаке»
(не хотел бы вас мотивировать, но, честно говоря, никто не был на самом деле Я уверен, что этот термин даже представляет, у менее одинокого был пример успешного применения. Большинство людей согласились с тем, что потенциал существует, но пока они довольны тем, как все работает сейчас.). Многие проблемы не подходят для такого рода распараллеливания.
б) какова будет стоимость такого переписывания? люди / час.
c) -правильные версии библиотек для компиляции ... - это проблема на любом языке, которую нельзя избежать, как ни крути.
d) Я слышал о Python (действительно хорошем языке), который несколько раз использовался в параллельных приложениях, но его проникновение на этот рынок все еще не растет, и его постоянно меняющаяся природа делает его очень плохим выбором для долгосрочный проект (подумайте о обратной совместимости). Некоторым людям это очень нравится как «клейкий» язык.
Тьфу, если я думаю о чем-то еще, добавлю это завтра. Должен немного поспать ...