Kámoš mi říkal, že když se tohle naučím, tak mám do smrti vystaráno.
Dnes Fortran nemá žádné výhody oproti C(++), spíš nevýhody. Rozhodně (už) neplatí, že je rychlejší. Fyzici ho občas ještě používají, ale spíš jen ze setrvačnosti.
O něco rychlejší je pořád, práce s poli je v něm podstatně pohodlnější a komfortnější než v C++, což je u numerických algoritmů dost velká výhoda. V C++ se dá ledacos pomocí různých knihoven schovat za objekty (správa paměti, řada matematických operací), ale výkon jde pak do kytek. Při srovnání s klasickým C neexistuje opravdu vůbec žádný rozumný důvod, proč ho použít na numeriku místo Fortranu. Jediný důvod bývá, že celý program je v C(++), tak se to nekomplikuje moduly v jiném jazyce. Ale tvrdit, že Fortran má oproti C(++) spíš nevýhody, to může jedině člověk, který buď v životě nepsal numeriku, nebo jen s davem něco papouškuje. Ono se totiž ukazuje, že lidé, kteří Fortran kritizují, ho ve skutečnosti neznají vůbec ("sice nemám tušení, oč jde, ale prý je to nějaké prehistorické fuj"), nebo jen tak velmi povrchně. Takže například když jsem se kdysi jednoho kolegy ptal, proč danou věc řeší přes cykly, tak se ukázalo, že o těch vestavěných polních operacích nemá ani potuchy a vůbec ho nenapadlo, že by v tom jazyku něco takového mohlo být - prostě programoval ve Fortranu céčkovým stylem.
Že staří matadoři pořád jedou F77 style, to není zas tak překvapivé, starého psa novým kouskům nenaučíš. Ale že i ti mladší, to už je čistě jejich blbost nebo masochismus. Chyba není na straně Fortranu.
Řeč je o výkonu. V tom je Fortran na úrovni C. Takže jde jen o osobní preference.
To jako kvůli tomu, že výkonově za určitých situací vychází C a Fortran zhruba nastejno, tak se mám patlat s numerikou v C? Pořád mi uniká ta pointa, proč bych se měl za každou cenu vyhýbat použití nástroje, který je pro daný úkol nesporně vhodnější než C.
Navíc s tím výkonem to není tak docela pravda - Fortran obsahuje spoustu matematických a polních operací jako vnitřní funkce, ne knihovní. Což dává kompilátoru mnohem větší možnosti optimalizací. Takže pokud prostě prasecky přepíšu kód z C do Fortranu způsobem, o němž jsem mluvil v předešlém příspěvku, vychází to zhruba nastejno. Ale jakmile využiju vestavěných operací, tak začne C za Fortranem kulhat i ve výkonu - překladač má informaci o tom, kdy nezáleží na pořadí iterací, meze si může kontrolovat sám tam, kde to uzná za nejlepší, optimalizovat pořadí matematických operací pokud je to výhodnější z hlediska práce s FP, má od programátora informace o tom, které funkce jsou čisté, o směru toku dat, o sdílených datech, o charakteru dynamických dat atd.