Vyplatí se začít ve fortranu?

Labrat

Re:Vyplatí se začít ve fortranu?
« Odpověď #30 kdy: 22. 02. 2018, 16:53:21 »
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.


Kiwi

Re:Vyplatí se začít ve fortranu?
« Odpověď #31 kdy: 22. 02. 2018, 18:32:03 »
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.

Radovan.

Re:Vyplatí se začít ve fortranu?
« Odpověď #32 kdy: 22. 02. 2018, 18:53:24 »
FORTRAN patří mezi jazyky, které je potřeba spálit a pohřbít na dně oceánu (spolu například s Matlabem)!
Před pár lety kámoš něco počítal v Matlabu, ale trvalo to strašně dlouho. Tak to přepsal do Fortranu 95, a dost se to zrychlilo. Nechtěl mi říct kolikrát, prý to číslo mělo pět nul :P

Osobně preferuji FORTRAN IV, ale je fakt že vícenásobné vstupy do funkcí, a zejména return na label, jsou ve F77 naprosto kulervoucí!

kolemjdouci

Re:Vyplatí se začít ve fortranu?
« Odpověď #33 kdy: 22. 02. 2018, 19:29:17 »
Je v nějakém jiném prograovacím jazyce datový typ komplexní číslo? A kombinace s nativními maticovými operacemi? 

atarist

Re:Vyplatí se začít ve fortranu?
« Odpověď #34 kdy: 22. 02. 2018, 19:58:09 »
Fortrani prekladace se normalne vyviji a prodavaji. Asi typickym predstavitelem je IFC:
https://software.intel.com/en-us/fortran-compilers

Jestli zacit ve fortranu? tyjo musis mit predstavu co bys chtel delat. Jestli na nejakem vyzkumu, neco z oblasti simulaci, jaderne fyziky atd., tak ho IMHO vyuzijes dost dobre. To je ovsem jinej svet, nez angularni frikulinsky weby(osobne jsem rad, ze se to neprolina :).

Jinak jestli se nepletu, tak i "Pythoni balicky pro numericke vypocty" ve skutecnosti stoji nad LAPACKem a BLASem, asi nejodladenejsimi knihovnami psanymi ve Fortranu.


gll

Re:Vyplatí se začít ve fortranu?
« Odpověď #35 kdy: 22. 02. 2018, 19:59:17 »
Je v nějakém jiném prograovacím jazyce datový typ komplexní číslo? A kombinace s nativními maticovými operacemi?

v pythonu, matlabu, julii.

MMN

Re:Vyplatí se začít ve fortranu?
« Odpověď #36 kdy: 22. 02. 2018, 21:36:17 »
Je v nějakém jiném prograovacím jazyce datový typ komplexní číslo?
V čemkoliv, co se běžně používá na numeriku. Céčko, python, cokoliv.

Je v nějakém jiném prograovacím jazyce datový typ komplexní číslo? A kombinace s nativními maticovými operacemi?

v pythonu, matlabu, julii.
Co se týče pythonu a matlabu, otázka je, co je myšleno „nativními maticovými operacemi“. Jsou to interpretované jazyky a v obou případech se k maticovým operacím volá nějaká céčková či jaká binární knihovna.

gll

Re:Vyplatí se začít ve fortranu?
« Odpověď #37 kdy: 22. 02. 2018, 22:05:45 »
Je v nějakém jiném prograovacím jazyce datový typ komplexní číslo? A kombinace s nativními maticovými operacemi?

v pythonu, matlabu, julii.
Co se týče pythonu a matlabu, otázka je, co je myšleno „nativními maticovými operacemi“. Jsou to interpretované jazyky a v obou případech se k maticovým operacím volá nějaká céčková či jaká binární knihovna.

V cpythonu není velký rozdíl mezi nativním typem a uživatelem vytvořeným v c extenzi. Komplexní čísla a maticové násobení mají podporu v syntaxi. Můžete psát 1j místo complex(0, 1).

MMN

Re:Vyplatí se začít ve fortranu?
« Odpověď #38 kdy: 22. 02. 2018, 23:06:17 »
V cpythonu není velký rozdíl mezi nativním typem a uživatelem vytvořeným v c extenzi. Komplexní čísla a maticové násobení mají podporu v syntaxi. Můžete psát 1j místo complex(0, 1).
Můžeš uvést, co myslíš v kontextu pythonu nativním maticovým typem? Možná mi něco uniká, ale já jsem obvykle „nucen“ používat numpy, abych měl k disposici nějakou supersnadnou manipulaci s maticami.

gll

Re:Vyplatí se začít ve fortranu?
« Odpověď #39 kdy: 23. 02. 2018, 01:21:21 »
V cpythonu není velký rozdíl mezi nativním typem a uživatelem vytvořeným v c extenzi. Komplexní čísla a maticové násobení mají podporu v syntaxi. Můžete psát 1j místo complex(0, 1).
Můžeš uvést, co myslíš v kontextu pythonu nativním maticovým typem? Možná mi něco uniká, ale já jsem obvykle „nucen“ používat numpy, abych měl k disposici nějakou supersnadnou manipulaci s maticami.

Nevím, čemu se v pythonu říká nativní typ. numpy je c extenze. Možná se pletu, ale myslím, že vestavěné typy jsou implementovány stejně jako numpy matice, jen pro některé existují speciální literaly. Součástí jazyka je operátor maticového násobení @, který není vázán na konkrétní typ.

Radovan.

Re:Vyplatí se začít ve fortranu?
« Odpověď #40 kdy: 23. 02. 2018, 04:57:54 »
Komplexní čísla jsou i v C99, kvůli tomu se nemusí učit nějaké mlamojoviny. Ale Fortran s nimi bude vždy pracovat lépe a rychleji. Třeba tisíckrát rychleji než Matlab.

MMN

Re:Vyplatí se začít ve fortranu?
« Odpověď #41 kdy: 23. 02. 2018, 08:26:39 »
Ale Fortran s nimi bude vždy pracovat lépe a rychleji.
I než C? A proč jako?

10xCoder

Re:Vyplatí se začít ve fortranu?
« Odpověď #42 kdy: 23. 02. 2018, 11:35:47 »
Ale Fortran s nimi bude vždy pracovat lépe a rychleji.
I než C? A proč jako?
Než C ne.

paja

Re:Vyplatí se začít ve fortranu?
« Odpověď #43 kdy: 23. 02. 2018, 14:40:19 »
Je v nějakém jiném prograovacím jazyce datový typ komplexní číslo? A kombinace s nativními maticovými operacemi?


V R. https://stat.ethz.ch/R-manual/R-devel/library/base/html/complex.html

Labrat

Re:Vyplatí se začít ve fortranu?
« Odpověď #44 kdy: 23. 02. 2018, 14:48:28 »
Je v nějakém jiném prograovacím jazyce datový typ komplexní číslo? A kombinace s nativními maticovými operacemi?
V Go třeba. Maticové operace jsou vždy záležitost knihovny, stejně jako operace na komplexními čísly, třeba logaritmus, obecná mocnina, odmocnina atd.