Wymagania, które postawiłeś, tak naprawdę stawiają Fortran na szczycie listy, w przypadku takich problemów:
a) załamywanie liczb
b) dające się powiązać
c) było i nadal jest de facto językiem nauczanym poza studiami cs (dla inżynierów, którzy nie są profesjonalnymi programistami).
d) ma niesamowite (!) wsparcie w branży, pod względem liczby kompilatorów klasy przemysłowej, przy czym żaden z dostawców nie wykazuje najmniejszych oznak porzucenia tej gałęzi. Jeden z przedstawicieli Intela nie tak dawno ujawnił, że sprzedaż ich produktów Fortran jest wyższa niż w innych narzędziach programistycznych.
Jest to również język, który jest niezwykle łatwy do opanowania. Nie zgadzam się, że przyspieszenie asystentów badawczych zajmuje dużo czasu. Mój pierwszy podręcznik zawierał nie więcej niż, no nie wiem, 30 (?) Stron rzadkiego drukowanego tekstu. Jest to język, w którym po nauczeniu się 10 słów kluczowych można pisać programy średniej wielkości. Odważyłbym się powiedzieć, że te 30 stron napisanych domyślnym tekstem Worda byłoby dla większości użytkowników bardziej niż obszernym „podręcznikiem Fortran”.
Jeśli jesteś zainteresowany CUDA, możesz sprawdzić kompilator Portland Group , który go obsługuje . Nie znam dokładniejszych szczegółów, ale ludzie na ogół mówią o tym z pochwałą.
Poza tym w przypadku programów do łączenia równoległego dostępne są OpenMP, MPI, a teraz nadchodzące (i długo oczekiwane) współ-tablice, które niedawno wdrożył kompilator Intela . Aby nie marnować słów, Fortran ma bardzo dobrą gamę „bibliotek” do równoległych programów.
Opracowano przede wszystkim standardowe biblioteki numeryczne , inne języki są mniej więcej zgodne z portfolio funkcji / procedur.
Biorąc to wszystko pod uwagę, chciałbym jednak (w zależności od tego, kiedy został napisany) polecić, jeśli powiedzmy, kod F77 lub starszy, przepisując go częściowo z czasem do nowszych dialektów - przynajmniej F90, jeśli to możliwe z funkcjami F2003. Papier / praca na ten temat została niedawno opublikowana (średni rozmiar pliku PDF do przodu). Nie tylko to, jeśli zostanie wykonane prawidłowo, zapewni przenośność na wielu platformach, ale także ułatwi przyszłą konserwację.
ps Jeśli chodzi o „przyszłe utrzymanie”, to tylko anegdota, którą czasem lubię wspominać. Pisząc moją pracę magisterską, ponownie wykorzystałem kod mojego mentora, napisany 35 lat temu od momentu napisania. Skompilowano tylko z jednym błędem; na końcu brakuje instrukcji z powodu błędu wklejania kopii :)
@DaveMateer (odpowiedź na komentarz) - skomentuję to, co może być nieco niegrzeczne, ale proszę, nie bierz tego w niewłaściwy sposób, ponieważ jest to w uczciwych intencjach.
Wydaje mi się, że rozwiązujesz ten „problem” w niewłaściwy sposób. Co mam na myśli w kilku krótkich punktach (ponieważ jest tu bardzo późno, a moja zdolność do nadawania zdania czytelnych (nie mówiąc już zrozumiałych) opuszcza mnie po 22.00)
a) wspomniałeś, że próbujesz zminimalizować dodatkowy czas kodowania, ale zastanawiasz się nad przepisaniem z języka specjalizującego się w obliczeniach numerycznych na jeden z kolorowego wyboru języków , jeśli wybaczysz moje wyrażenie
- niektóre z nich nie obsługują między innymi tablic wielowymiarowych
- większość z nich nie nadaje się do ciężkiej pracy numerycznej (przyznaję, że możliwości przetwarzania równoległego Haskell i Hadoop nic nie wiem ... ale nigdy nie słyszałem o nich nawet w tych kręgach)
- prawdopodobnie próbowano, ale nigdy nie słyszałem o przepisaniu z Fortran, języka dla dyskretnych problemów, na język funkcjonalny
- ostatnio dyskutowano na temat comp.lang.fortran (spróbuj przeszukać grupy google) na temat aspektów nauki naukowej „w chmurze”
(nie chciałbym cię motywować, ale szczerze mówiąc, nikt tak naprawdę nie był pewnie, co ten termin nawet reprezentuje, mniej sam miał przykład udanego zastosowania. Większość ludzi zgodziła się, że istnieje potencjał, ale jak dotąd są zadowoleni z tego, jak teraz działa.). Wiele problemów nie nadaje się również do tego rodzaju równoległości.
b) jakie byłyby koszty takiego przepisania? osoby / godziny.
c) -poprawne wersje bibliotek do kompilacji ...- to problem w każdym języku, którego nie można uniknąć, bez względu na to, jak na to patrzysz.
d) Słyszałem o Pythonie (naprawdę fajnym języku) używanym w kilku aplikacjach równoległych kilka razy, ale penetracja tego rynku wciąż nie wydaje się rosnąć, a jego ciągle zmieniający się charakter sprawia, że jest to bardzo zły wybór dla projekt długoterminowy (pomyśl o kompatybilności wstecznej). Niektórym bardzo się podoba jako język „kleju”.
Ugh, jeśli pomyślę o czymś innym, dodam to jutro. Muszę się przespać ...