Názory k článku
Fortran: chroustání čísel pro všechny
Skvěle
celé vláknoČlánek
celé vláknobez Fortranu ani ránu
celé vláknoRe: bez Fortranu ani ránu
celé vláknoi ta numerická jádra do C či C++.
Re: bez Fortranu ani ránu
celé vláknoi ta numerická jádra do C či C++."
Ne, to se mýlíte - tohle tvrzení zdaleka není pravdivé. Téměř pravdivým se stane (a to jste možná měl na mysli), pokud místo programů napíšete "komerčních programů".
Je to skutečně tak, a na jedné nedávné konferenci v Itálii jsem o tom diskutoval s pár kolegy -
moderní Fortran stále docela dost "žije", ale převážně v tzv. in-house kódech, tedy programech,
(FEM,FVM i jiných), které si napíše firma,instituce (nebo několik institucí) pro sebe. Z komerčních numerických produktů - fluent,ansys atd. Fortran prakticky vymizel. Proč, to je asi na delší diskuzi - sám pořádně nevím.
O vymření Fortranu se zas tak neobávám - mladých Fortranistů je překvapivé množství, a ti starší,
jak jsem ostatně napsal do článku, už stejně dožijí s Fortranem 77.
Re: bez Fortranu ani ránu
celé vláknoRe: bez Fortranu ani ránu
celé vláknoRe: bez Fortranu ani ránu + Python
celé vláknoJinak k tomu Pythonu, nechtel jsem o nem psat abych to nezkomplikoval. Ale ten pan dole ma pravdu. Ted je trend slozitych programu a spoluprace vice programu. A skriptovaci programy typu Python jsou na to idealni. Tim padem uz nikoho moc netrapi v cem je napsano vykonne jadro a tim drive podlehnou programatori tlaku okoli a prejdou na C/C++. Uvedomte si ze pracovnici s MKP nejsou primarne programatori ale vedci. A ti proste pouziji takovy programovaci nastroj ktery bude "jednodussi" a to je C/C++ protoze s tim jim kazdy poradi...
Jinak me osobne je to jedno esli F nebo C, je to prast jak uhod.
Re: bez Fortranu ani ránu + Python
celé vlákno(hlavně starší) nebo C a s trochou snahy je lze volat z obou jazyků.
Souhlasím s tím, že větší programové systémy už jso uspíše záležitostí několika jazyků. Python je dobrý jako "glue language", slovy samotného Rossuma, proto ho používám. Moje programy ve Fortranu
mají obvykle schéma: načti data ze souborů - udělej hromadu výpočtů - zapiš data do souborů. Díky tomu, že dělám v Linuxu, není problém místo souboru strčit rouru, a používat tak program jako výpočetní "server" a podobně.
Ano, správně, uživatelé Fortranu jsou hlavně vědci. A všimněte si, jak jsem psal výše, že Fortran "žije" hlavně uvnitř akademických a poloakademických pracovišť - tedy tam, kde je svoboda volby programovacího jazyka. A velká část z nich volí moderní Fortran protože jim přijde jednodušší.
Překladač toho spoustu dělá za vás. Někdy pomalu a blbě, ale udělá to.
Re: bez Fortranu ani ránu
celé vláknoMně osobně připadá o něco příjemnější Fortran, ale to je pořád spíš názor.
Je pravda, že C/C++ je mnohem rozšířenější, překladače dostupnější a většinou vyspělejší atd.
Proč je Fortran pořád tady? Proč jej C++ nenahradilo?
Odpověď je (podle mého názoru) prostá a zároveň hluboká. Není a nebyl tu úspěšný jazyk, který by jej chtěl nahradit. A to "chtěl" je důležité. C++ není jazyk zaměřený na vědecko-technické výpočty, a ani nebude, podle samotného Bjarna Stroustrupa.
Otázka, zda C++ nahradí Fortran, se tak redukuje na to, zda je lepší jazyk, který se aktivně zaměřuje na oblast VT výpočtů, a bude se přizpůsobovat novým trendům v této oblasti, nebo mocnější jazyk vystavěný na lepším základě, který je zaměřen jinam, ale je natolik flexibilní, že je pomocí knihoven schopen většinu vlastností prvního jazyka "dodělat".
Já na základě svých zkušeností a mnohých debat na toto téma věřím tomu, že vědecko-inženýrská komunita _potřebuje_ speciální jazyk. Já používal několik knihoven v C++, které simulovaly "array language" aka Fortran/Matlab, a ve všech je vidět, že narážejí na omezenou rozšířitelnost jazyka. Narozdíl od Fortranu, tvoří v C "numerická lobby" menšinu a v C++ dokonce malou menšinu.
Pokud někdy někdo vytvoří jazyk, založený na C++, a zaměřený na numerické výpočty, budu určitě mezi prvními, kdo ho vyzkouší. Bohužel, to se zatím nestalo.
Re: bez Fortranu ani ránu
celé vláknoA co rikate na to spojeni Python + vykonne mensi programy (vypocetni jadra), neresi to nektere problemy ?
Re: bez Fortranu ani ránu
celé vláknokteré jsou užitečné pro softwarové inženýry, nepoužíváte, zato byste ocenil nějaká numerická rozšíření - vicedimenzionální pole, aritmetiku s poli apod.
C++ v podstatě skoro žádné numerické vlastnosti nemá, ale hodně jich lze dodělat pomocí
knihoven - to díky veliké rozšířitelnosti jazyka (na kompilovaný jazyk, Python je samozřejmě jinde). Jenže to pořád není ono. Když si to dělám sám, tak to třeba ještě jde, a s nedostatky
se vyrovnám. Ale pokud já dělám v C++ pole s FLENS, kolega používá uBLAS, další kolega Blitz++,
a další používá std::valarray, a chceme dělat na něčem spolu, máme velký problém.
Ve Fortranu ten problém není, protože ta pole jsou prostě standardizovaná.
Mě se Python taky moc líbí, jen mi někdy přijde až příliš průkopnický, a některá specifika
se prostě neshodují s tím, jak já přemýšlím - například že defaultně přiřazení vytváří
mělkou kopii.
root.cern.ch
celé vláknoUmi pole, matice 4-vektory, 1-2-3D histogramy (s propagaci chyb), grafy, symbolicke funkce, fitovani parametrickych funkci, vselijake generovani nahodnych cisel z histogramu, GUI, ma C++ interpret a mnoho dalsiho :)
Navic je GNU/GPL
Re: root.cern.ch
celé vláknoNástrojů s podobnými schopnostmi samozřejmě existuje celá řada. Já používám kromě Fortranu ještě
C++ + FLENS, Python + NumPy, Octave, gnuplot, Maple, Yacas, dříve i Mathematicu, FreeFEM++ a zkoušel jsem pár dalších věciček.
Re: root.cern.ch
celé vláknoRe: bez Fortranu ani ránu
celé vláknoNeni jim nahodou ROOT (http://root.cern.ch/)? Mozna se mylim ...
Re: bez Fortranu ani ránu
celé vláknoroot, Re: bez Fortranu ani ránu
celé vláknoRe: bez Fortranu ani ránu
celé vláknoI když ta diskuse je už prastará, tak nemohu nereagovat.
Dlouho jsem pracoval v různých klonech Fortranu a vyzkoušel jsem celou řadu jeho překladačů a vždy se mi pracovalo dobře. A nevadilo mi ani to, co Fortranu vyčítají zastánci C, C++ a pod. a sice to, že "to není strukturované" - představte si tu hrůzu jako GOTO !!! Vadila mi jen taková ta jistá rozvláčnost. A pak jsem měl příležitost přičuchnout trochu k Matlabu a to se mi zalíbilo: místo několika "loops" napíši v Matlabu c=a*b a skalární součin vypadne jak vymalovaný. Prostě ta vektorizace (obecně práce s maticemi) je fantastická a k tomu spooousta knihoven pro nejrůznější technické a vědecké problémy. I dokonce symbolický výpočet integrálů a derivací (jen je třeba trochu učesat výsledek). Matlab má však bohužel jednu nevýhodu - pro soukromníka je nepřiměřeně drahý, ale kdyby byla nějaká dosti osekaná verze za rozumný peníz, tak do toho jdu.
Re: bez Fortranu ani ránu
celé vláknoMatlab se pro běžné použití dá nahradit programem Octave.
Pro redakci: Dala by se do ReCaptcha zadat alespoň česká slova? Musím několikrát překlikávat, než najdu něco čitelného.
Re: bez Fortranu ani ránu
celé vláknoRe: bez Fortranu ani ránu
celé vláknoHoneywell (nutná angličtina)
http://www.prace.cz/pd/3081947
jinak můžu s klidným svědomím doporučit:
Škoda - Auto, a.s.
Ricardo
pokud máš zájem o zahraničí, pak můžu doporučit AVL v Rakousku, pokud mluvíš německy
------------------------------------------------------------------------------------
můj blog (už jsem tam ale dlouho nepřispíval)
http://fea.blog.auto.cz/
Re: bez Fortranu ani ránu
celé vláknohodne stesti Vam obema
fortran + python je mocná kombinace
celé vláknohttp://cens.ioc.ee/projects/f2py2e/
V debianu v balíku python-numpy. Projekt se nyní rozvíjí pod hlavičkou SciPy:
http://www.scipy.org/F2py
Tím pádem je úplně jedno, jestli je modul do Pythonu psaný v C/C++/fortranu, stejně používám jen Python. Ale výhoda fortranu oproti C/C++ je ta, že f2py se hrozně snadno používá a funguje, zatímco SWIG je dost těžkopádný (což je dáno jednoduchostí fortranu, oproti C/C++).
Re: fortran + python je mocná kombinace
celé vláknoA Fortran Colouring Book
celé vláknohttp://www.abebooks.com/servlet/SearchResults?&isbn=0262610264&nsa=1
Je to krasna kniha, na zadnou zabavnejsi, z kterou by byla takova radost se ucit, jsem pozdeji uz nenarazil.
Parni pocitace
celé vláknoPocitac ve stylu parniho veku: http://www.flickr.com/photos/jwhilde/sets/72157594363814399/
Mys ve stylu veku pary: http://www.boingboing.net/2007/04/30/steampunk_mouse.html
Klavesnice ve stylu veku pary: http://steampunkworkshop.com/keyboard.shtml
Tady je pocitac ktery je parou primo pohaneny: http://blog.scifi.com/tech/archives/2006/07/11/steampowered_co.html
Vyhody
celé vláknoNiekde na webe som cital, ze v niektorych veciach je az 10 krat pomalsi ako C.
Co si o tom mysliet ???
Re: Vyhody
celé vláknoA to je tak všechno.
Re: Vyhody
celé vláknoRe: Vyhody
celé vláknoRe: Vyhody
celé vláknoŘekl bych, že pokud jde o C jako o jazyk technických a vědeckých výpočtů, tak o něm platí, že pro samé stromy v něm není vidět les. Pro technika který chce počítač použít k usnadnění svých výpočtů je programovací jazyk jen nástrojem k těmto výpočtům, on nechce ztrácet čas nějakými obskurnostmi ohledně datových typů, objektů, správně strukturovaného programování... Chce jazyk, kterému nemusí nic dlouze vysvětlovat, kam prostě napíše postup výpočtu tak jak mu technický zobák narost a ten jazyk mu rozumí. A z tohoto pohledu Fortran skutečně nemá a myslím, že ještě dlouho mít nebude, konkurenci. No a nejrozsáhlejší "knihovní fond" ze všech existujících jazyků je také nemalá devíza. Ty numerické postupy přeci jen nepodléhají takové módě, jako prostá výpočetní technika, takže i 30 let stará, ale za to dobře odladěná knihovna je stále užitečná věc.
Re: Vyhody
celé vlákno(Basicu,Pascalu,Ady atd.) někomu přijde jako výhoda (oproti C,C++,C#), jinému jako nevýhoda.
Chtěl jsem to když tak udělat až později, aby se na některé věci dalo odkázat.
Srovnávat rychlostí jazyků je v podstatě nesmysl. Pokud specifikujeme i překladač, už to jakýs takýs smysl dává, ale pořád nic moc - je těžké rozhodnout, kdy jsou kódy ekvivalentní (kromě
triviálních případů). Ze svého nejlepšího svědomí vám můžu doporučit taková obecná tvrzení
o rychlostech jazyků ignorovat - je to něco podobného, jako když řeknu že velká auta jsou rychlejší než malá.
fortran rulez
celé vláknodoufam ze ten hle serialek nezustane u zakladnich veci a ukaze naky pokrocily veci, treba grafiku ve fortranu apod.
Re: fortran rulez
celé vláknoRe: fortran rulez
celé vláknoRe: fortran rulez
celé vláknolol
celé vláknoPěkný článek
celé vláknoPřed třiceti roky jsem v tom dělal první program na prvočísla. A ve fortranu jsem dělal kondiciogram. :-)
GPU/GPGPU
celé vláknoRe: GPU/GPGPU
celé vláknoRe: GPU/GPGPU
celé vláknoPGI ma CUDA FORTRAN kompiler
Diky
celé vláknofortress
celé vláknoRe: fortress
celé vláknoZatím jsem to odložil se slibem, že když to uvedou do nějaké kompletnější a snáze použitelné podoby, zkusím v tom některé věci začít zpracovávat.
Je nepochybné, že Sun umí s jazykem prorazit (Java), ale zatím bych si ještě na Fortress nevsadil - považuju za velmi pravděpodobné, že dojede na příliš velké ambice prvotní specifikace.
Nazor
celé vláknozkusim pridat par nazoru k clanku a nazorum.
Nejsem typicky programator. Venuji se vyvoji algoritmu pro nektere
oblasti numerickeho pocitani. Ve FTN programuji cca 20-25 let.
Myslim, ze u neho vydrzim. Duvody asi nejsou tolik v me zkostnatelosti, ale
spis v tom, ze chci aby me programy zily a jejich udrzba mi dala minimum prace.
Neco z mych programu zije i komercne a pouziva se to rutinne v balicich, ktere nejdou prilis snadno menit. Neco z meho vyvoje jsou programy sirene
v me komunite a nehodlam je zpomalovat. Pro vyvoj pouzivam sem tam jeste
Matlab jako kalkulacku, nektere Ceckove kody tretich stran si pripojuji; cilova platforma je tradicne balik v unixu, ale vyvoj
provozuji pod Win. Hlavnim duvodem pro Win je asi to, ze v nem mam dobre debuggery,
ale jinak i pod Win pro vyvoj pouzivam porty nekterych procedur z unixu jako make.
Proc hovorim o zpomalovani:
Prace na programovani komplikovanejsich vypocetnich jader numeriky je v zasade stejna pro velkou mnozinu programovacich jazyku. Zadny jazyk za nas nedokaze zmensit namahu na implementaci matematicke ideje. V tom ohledu je rada modernich jazyku podobne dobra. Fortran navic nabizi extremni prenositelnost mezi systemy a i v case. Jeho jednoduchost implikuje to, ze i nepripraveny uzivatel toho nema
pro pametove nenarocne programy moc co zkazit. Je-li nas program jen trochu delsi nez kratky a ma-li v sobe jen trosku slozitejsi smesku matic, vektoru a grafu (a to moderni numerika casto ma), je velmi obtizne s podobnou namahou vytvorit kod, ktery je stejne rychly i v C (napriklad, kdyz porovnate rychlost nativniho FTN a C na nejake unixove stanici). Dalsi aspekt je, ze moderni pocitacove architektury pro sve dobre vyuziti v numerice (maticova algebra,
mnoho operaci ve FEM, FVM) vyzaduji bezpodminecne sledovani
lokality a regularity dat, se kterymi se pracuje. Jednoduchost jazyka primo
implikuje snadnost techto ukolu. Jde to i jinde, ale je to narocnejsi.
Hlidat lokalitu zpracovavanych dat neni obzvlaste sranda napr. u programu
s explicitni paralelni komunikaci v MPI.
Ukazka toho, ze jednoduchost ma smysl je videt na vyvoji baliku LAPACK, ktery je
jednou ze zakladnich knihoven pro operace s hustymi maticemi a je k dispozici
prakticky na vsech pocitacich. Po experimentech s Lapackem v ruznych jazykovych
mutacich (C, C++, F90) je jeho dalsi vyvoj (a ten je pomerne bourlivy) provozovan
opet uz jen ve F77 (situace je trochu slozitejsi - vanilla source bude takto; samozrejme knihovny na pocitacovych architekturach jsou domestifikovany bud
prepisem do jeste nizsich jazyku nebo predzvykanim automatickych optimalizatoru). Nemyslim si, ze ale vyvoj speje k prepisovani jader do C a C++. FTN jadra jsou dnes spise doplnena assemblerovskou optimalizaci.
Je-li tvoreny soft veliky, vsechny moderni jazyky nekde ukryvaji slozitost zachazeni s daty a procedurami. Nekde vse zapouzdrujeme, nekde jinde to sypeme do parametru volani, ukladame do modulu, ale slozitost baliku nekde skryvame.
Je to vec zvyku, kde ji chceme mit.
Tradice
Fortran je zalozen na tom, ze ctime tradici a velmi pozvolna ji menime.
Dynamicke alokace jsem pouzival uz pred temi xx lety, ale nebyly univerzalne
prenositelne. Ja je generoval do kodu pomoci fortranskych preprocesoru. Na nekterych masinach fungovaly Cray-pointery, Na HP byla trochu jina rozsireni,
pomerne brzy zavedl velmi dobre fungujici rozsireni i MS (vlastni implementace
byla zalozena na SW treti strany). Ani ted nejsou rozsireni univerzalni. Chci-li
mit zivy SW, FTN 2003 mne bude zajimat tak v roce 2013 (bude-li mne jeste
programovani vubec zajimat).
Opousteni tradice
Bohuzel, FTN ve sve velkolepe norme F8X, F90 zavedl nektere koncepty, ktere sly
proti jeho duchu a jsou spis ukazkou urcite nerozmyslenosti. Koncepty ukazatele,
hlavicky pole i castecne syntaxe celych poli patri do teto kategorie. Ukazatel
zavedl nekompatibilitu s C, hlavicky (nekterych) poli nabizi napriklad moznost fragmentace pole na casti operacnim systemem. Jak ale mohu neco takoveho jako je fragmentace mych dat sverovat OS? Chci-li programovat efektivne, musim o svych datech vedet.
V pripade, ze se spolehnu na syntaxi pomoci poli a nevim, jak se chova muj kompilator, mohu snadno narazit na neefektivitu z duvodu, ze
kompilator v nekterych pripadech vytvari kopii pole pro volanou proceduru.
Je-li pole velke, pro vykon je to tragedie. Podobnou namitku mam proti syntaxi prace s poli. Ta primo nevadi, ale svadi predstavou o sve uzitecnosti. Jsou-li pole velmi velka a operace, ktere s nimi vykonavam jsou napriklad maticove, musim se urcite zabyvat tim, abych pracoval pouze s jejich castmi tak, abych plnil CPU bloky dat. V pripade, ze matice jsou huste, udela to za mne nekdy software tretich stran, napr. BLAS nebo LAPACK. V pripade, ze jsou matice ridke, musim to zabezpecit sam a syntaxe mi nepomuze.
Budoucnost
Nemyslim si, ze jazyk v dohledne dobe vymre. Kdyby nemel realne vyhody, ktere
vyvazuji nektere jeho nevyhody, nikdy by neprezil. To, ze numericke vypocty tvori mensi a mensi cast celosvetoveho pocitani neznamena, ze se lze bez nich obejit. V teto oblasti je to porad jazyk volby. Jako jeden z duvodu pro nej se casto uvadi
nashromazdeny soft, ale nemyslim si, ze toto je tak podstatne. Kriticky soft na jadra numerickych vypoctu se meni extremne rychle. Napriklad, moderni algoritmy pro jadra vypoctu okrajovych uloh parcialnich diferencalnich rovnic jsou uplne
jina nez byla pred deseti lety (hovorim o vyvoji ve svete). Presto je znacna cast noveho softu (universitniho i firemniho, ale vice firemniho) zase ve FTN.

