A Fortran nyelv az 1957 óta létező és ma is aktívan létezik. Természetes, hogy az idő során, számos fő verzió, mint pl. a II, III, IV, 66, 77, 95, 2003, 2008 kialakult. De ezen fő irányvonaltól elszakadva számos más változat, módosítás, továbbgondolás, egyszerűsítés, más architektúrára való átírás is ugyanúgy napvilágot látott. Jelen írás célja a Fortran ezen fejlesztési ágai közül pár változat, megemlítése, rövid bemutatása.
A korai időkben, főleg amíg nem voltak a programozási nyelvek, így a Fortran sem, kellően szabványosítva, nem voltak kellően általános dokumentációk, minden architektúra, minden gyártó külön, sajátos értelmezésben készítette el a saját fordítóját.
Ez egyrészt probléma volt, mert különböző gépeken nem lehetett ugyanazt a programot futtatni, mert egyrészt nem feltétlenül fordult le. Másrészt a Fortran matematikai mivoltából adódóan különösen fontos volt a lebegőpontos számítások azonos kezelése, és hogy a program lehetőleg azonos eredményt adjon.
Ezért láthatunk számos különböző Fortran változatot, amely apró, de bosszantó különbségek mellett a készítőjében különbözik.
Leginkább a 66-os változathoz hasonlít leginkább, a Data General Corporation adta ki a Nova, Eclipse és MC számítógépekhez. Fő célja a miniszámítógépekhez való adaptációja a nyelvnek.
A Fortran IV-en alapul, a Control Data Corporation adta ki 1968-ban a saját CDC 6600-as mainframe géphez.
Vagy másnéven Visual Fortran 2001-ben készült a Compaq és a Microsoft együttműködésében, amely a Visual Studio 5-ös változatát használta.
Az IMB 650-es gépeihez készült 1957-59 között, célja a Fortran egy egyszerűbb változatának a létrehozása volt. Mivel a FOR TRANSIT alkotói úgy vélték, hogy a Fortran egy sokkal összetettebb és nagyobb architektúrára lett tervezve, így csak a leglényegesebb és gyakori utasításokat tartották meg, és hoztak létre egy csökkentett tartalmú nyelvet, korlátozásokkal.
A másik fő szempont, amelyben az alternatívák készültek, főként egy-egy preprocesszorral (előfeldolgozóval) vagy makrókkal dolgozó megoldásként ahol ugyanazt a kódot rövidebben, érthetőbben lehet leírni, esetleg olyan funkciókat vezet be, amelyek így egyszerűen, de magában a Fortranban nehézkesen írhatóak le.
Ilyen preprocesszorok többek között a FLECS, iftran, Sftran, S-Fortran, LRLTRAN nyelvek, amelyekről kevés leírás maradt online elérhetően fent, illetve a következő nyelvek, részletesebb információkkal, példákkal.
A MORe fORTRAN szavak összerántásából született meg ez a név, a nyelvet makró feldolgozók segítségével hozza létre a Fortran kódot. Természetesen, mint más hasonló nyelvnél, a Mortran sem végez teljes ellenőrzést a forráskódon.
Célja leginkább a forráskód egyszerűbbé, olvashatóbbá tétele. Többek között a következő egyszerűsítéseket és megkötéseket alkalmazza:
A RATional FORtran szavak kezdetéből, először a 77-es változatot egészítette ki modern vezérlőszerkezetekkel, ami a címkék és ugróutasítások csökkentésével egy átláthatóbb kódot eredményezett. A Ratfor egy preprocesszor, ami Fortran kódot állít elő.
A Ratfor különlegessége abban rejlik, hogy C-stílusú kifejezéseket lehet használni Fortran kódok írása közben és ezzel egy 25-30%-kal rövidebben fogalmazható meg a kód, emellett olvashatóbb is.
A blokkokat a { és } karakterek jelzik, de a ;-t C-vel ellentétben nem kötelező kitenni a sorvégén.
Használhatóak a C-ből jól ismert vezérlőszerkezetek,
Ezekkel a lehetőségekkel gyakorlatilag C-szerű kinézetet adhatunk Fortran programunknak, ahogy a mellékelt példa is mutatja:
Ez a Ratfor program az alábbi Fortran programra preprocesszálódik:
A Ratfor továbbfejlesztése, a neve egy egyszerű szójátékból ered: Ratfor → Ratfour → Ratfive → Ratfiv.
SIMSCRIPTEgy általános célú szimulációs nyelv, amely 1963-ban Fortran preprocesszorként látta meg a világot. Arra tervezték, hogy nagy diszkrét eseményszimulációs feladatokat lehessen vele megoldani, a nyelv hatással volt a későbbi Simula nyelvre.
A COnditional Compilation szavak kezdetéből, a CoCo preprocesszálást biztosít a Fortran Szabvány részeként (3. részben). Hasonlóan más nyelvek előfeldolgozóihoz a CoCo biztosítja
A Fortran forrásban, ahogy a példában látszik a CoConak fontos sorok a ?? karakterekkel kezdődnek, minden más sor az eredeti Fortran forráskódhoz tartozik. Ha megjegyzést szeretnénk írni, az a ??! kezdetű sorokban tehetjük meg.
A Fortran 90/95 részhalmaza, az eredeti Fortrannál valamivel szigorúbb. Tanítási céllal hozták létre, hogy F-ül könnyebben és gyorsabban el lehet sajátítani az alapokat, mint eredeti társában. Elviekben egy F program mindig le kell forduljon egy Fortran fordítóval, a fellelhető cikkek szerint a gyakorlatban sajnos ez nincs mindig így. Létezik természetesen F fordító is, így ez a probléma megkerülhető.
Pár fontosabb szigorítás:
A Lahey és a Fujitsu cégek elkészítették a Fortran nyelv használható változatát a Microsoft .NET keretrendszeréhez. Lehetőség nyílik bármely .NET kompatibilis nyelvvel való közös könyvtárak használatára, valamint létre lehet hozni mind Windows Forms, ASP.NET, ADO.NET alkalmazásokat, és sok mást segítségével.
A Fortran for .NET nem közvetlenül végrehajtható kódot állít elő, hanem úgynevezett köztes kódot, MSIL-t (ez a Microsoft Intermediate Language) és ez a kód bármely olyan gépen futtatható, ahol a CLR (Common Language Runtime) rendelkezésre áll a .NET keretrendszer keretei között. (Ez XP óta a legtöbb Windowsos gépen automatikusan megtalálható, Linuxon és Mac-en létezik hozzá a Mono .NET keretrendszer, mint alternatíva).
Mivel itt menedzselt alkalmazás és kód jön létre, ezzel bizonyos mennyiségű biztonsági előírás is jár, így a Fortran pár sajátosságát, mint a COMMON-t és az EQUIVALENCE-t csak adott korlátok között használhatjuk.
A 2003-as Visual Studioba integrálható a Fortran for .NET, ezáltal kihasználhatjuk a Studio által nyújtott előnyöket, mint a szintaxiskiemelés, a projektkezelés és a .NET által megvalósított egységes hibakezelés, és hibakeresés.
Láthatjuk, hogy a Fortran nyelv fája ezerfelé ágazik, remélem az írás kellő betekintést nyújt abba, hogy ebből pár példát kiragadjak, és felkeltsem ezzel az olvasó érdeklődését a témában további kutatásra, ismeretszerzésre.