പ്രോഗ്രാമിങ് ഭാഷ From Wikipedia, the free encyclopedia
ഒരു വിവിധോദ്ദേശ്യ പ്രോഗ്രാമിങ് ഭാഷയാണ് ഫോർട്രാൻ (ഇംഗ്ലീഷിൽ മുൻപ് FORTRAN എന്ന് മുഴുവൻ വലിയ അക്ഷരത്തിലെഴുതിയിരുന്നെങ്കിലും ഇപ്പോൾ Fortran എന്നാണ് ഉപയോഗിക്കുന്നത്). പലതരം കമ്പ്യൂട്ടർ രൂപകൽപ്പനകളിൽ വ്യാപകമായി ഉപയോഗിക്കപ്പെട്ട ആദ്യത്തെ ഹൈലെവൽ പ്രോഗ്രാമിങ് ഭാഷയാണ് ഫോർട്രാൻ[അവലംബം ആവശ്യമാണ്]. ഗണിതക്രിയകൾക്കും ഗവേഷണകാര്യങ്ങൾക്കുമാണ് ഇത് കൂടുതൽ യോജിക്കുന്നത്. ശാസ്ത്രസാങ്കേതികരംഗത്തെ ഉപയോഗങ്ങൾക്കായി 1950-കളിൽ ഐ.ബി.എം. ആണ് കാലിഫോർണിയയിലെ തെക്കൻ സാൻ ഹോസെയിൽ വച്ച് ഈ ഭാഷ വികസിപ്പിച്ചത്.[1] പ്രോഗ്രാമിങ്ങിന്റെ മേൽപ്പറഞ്ഞ മേഖലകളിൽ തുടക്കം മുതലേ ആധിപത്യം സ്ഥാപിച്ച ഈ ഭാഷ കഴിഞ്ഞ അരനൂറ്റാണ്ടുകാലമായി കാലാവസ്ഥാപ്രവചനം, ഫൈനൈറ്റ് എലെമെന്റ് അനാലിസിസ്, കമ്പ്യൂട്ടേഷണൽ ഫ്ലൂയിഡ് ഡൈനമിക്സ്, കമ്പ്യൂട്ടേഷണൽ ഫിസിക്സ്, കമ്പ്യൂട്ടേഷണൽ കെമിസ്ട്രി തുടങ്ങിയ തീക്ഷ്ണമേഖലകളിൽ ഉപയോഗിക്കപ്പെട്ടുവരുന്നു. മികച്ച കമ്പ്യൂട്ടിങ് പ്രകടനം ആവശ്യമായ മേഖലകളിലെ ഏറ്റവും പ്രശസ്തമായ ഭാഷകളിലൊന്നാണിത്[2] ലോകത്തെ ഏറ്റവും വേഗതയേറിയ സൂപ്പർ കമ്പ്യൂട്ടറുകളെ നിർണ്ണയിക്കുന്നതിനും മറ്റുമുള്ള പ്രോഗ്രാമുകൾ എഴുതുന്നതിനും ഫോർട്രാൻ ഉപയോഗിക്കപ്പെടുന്നു. ദ് ഐ.ബി.എം. മാത്തെമറ്റിക്കൽ ഫോർമുല ട്രാൻസ്ലേറ്റിങ് സിസ്റ്റം എന്നതിൽ നിന്നാണ് ഫോർട്രാൻ എന്ന പേരുണ്ടായത്.
![]() ദ് ഫോർട്രാൻ ആട്ടോമാറ്റിക് കോഡിങ് സിസ്റ്റം ഫോർ ദ് ഐ.ബി.എം. 704 (1956 ഒക്ടോബർ 15), ഫോർട്രാൻ പ്രോഗ്രാമർമാർക്കുള്ള ആദ്യത്തെ റെഫറൻസ് കൈപ്പുസ്തകം | |
ശൈലി: | വിവിധശൈലികൾ: ഘടനാപരം, ഇംപരേറ്റീവ് (പ്രോസീജറൽ, ഓബ്ജക്റ്റ് ഓറിയെന്റഡ്), ജെനറിക് |
---|---|
പുറത്തുവന്ന വർഷം: | 1957 |
രൂപകൽപ്പന ചെയ്തത്: | ജോൺ ബാക്കസ് |
വികസിപ്പിച്ചത്: | ജോൺ ബാക്കസ് & ഐ.ബി.എം. |
ഡാറ്റാടൈപ്പ് ചിട്ട: | strong, static, manifest |
പ്രധാന രൂപങ്ങൾ: | ആബ്സോഫ്റ്റ്, ക്രേ, ജി.ഫോർട്രാൻ, ജി.95, ഐ.ബി.എം., ഇന്റൽ, ലാഹി/ഫ്യൂജിത്സു, ഓപ്പൺ വാട്ട്കോം, പാത്ത്സ്കേൽ, പി.ജി.ഐ., സിൽവർഫ്രോസ്റ്റ്, ഒറക്കിൾ, എക്സ്.എൽ. ഫോർട്രാൻ, വിഷ്വൽ ഫോർട്രാൻ തുടങ്ങിയവ |
സ്വാധീനിക്കപ്പെട്ടത്: | സ്പീഡ്കോഡിങ് |
സ്വാധീനിച്ചത്: | അൽഗോൾ 58, ബേസിക്, സി, പി.എൽ./`, പാക്റ്റ് I, മംപ്സ്, റാറ്റ്ഫോർ |
ഫോർട്രാന് പതിപ്പുകളുടെ വിപുലമായ പരമ്പരയുണ്ട്. ഓരോ പതിപ്പും ഭാഷയിൽ കൂടുതൽ സൗകര്യങ്ങൾ ചേർത്തുകൊണ്ടും ഒപ്പം മുൻപതിപ്പുകളുമായി യോജിപ്പ് നിലനിർത്തിയുമാണ് വികസിച്ചുവന്നത്. ഘടനാപരമായ പ്രോഗ്രാമിങ്, അക്ഷരരൂപത്തിലുള്ള വിവരങ്ങളുടെ സംസ്കരണം (ഫോർട്രാൻ77), അരേ പ്രോഗ്രാമിങ്, മോഡുലർ പ്രോഗ്രാമിങ്, ജെനറിക് പ്രോഗ്രാമിങ് (ഫോർട്രാൻ 90), ഹൈ പെർഫോമൻസ് ഫോർട്രാൻ (ഫോർട്രാൻ 95), ഓബ്ജക്റ്റ് ഓറിയെന്റഡ് പ്രോഗ്രാമിങ് (ഫോർട്രാൻ 2003), കൺകറണ്ട് പ്രോഗ്രാമിങ് (ഫോർട്രാൻ 2008) തുടങ്ങിയവ ഫോർട്രാൻ പതിപ്പുകളിൽ കാലക്രമേണ കൂട്ടിച്ചേർക്കപ്പെട്ട സൗകര്യങ്ങളാണ്.
ഫോർട്രാൻ 77 വരെയുള്ള ആദ്യകാല ഫോർട്രാൻ പതിപ്പുകളുടെ പേര് ഇംഗ്ലീഷിൽ മുഴുവൻ വലിയക്ഷരത്തിലായിരുന്നു (FORTRAN) എഴുതിയിരുന്നത്. (പ്രോഗ്രാമിനകത്തുപയോഗിക്കുന്ന കീവേഡുകൾക്ക് ചെറിയക്ഷരം ഉപയോഗിക്കുന്നത് ഫോർട്രാൻ 77 പതിപ്പിന്റെ മാനകപ്രകാരം ഒട്ടും അനുവദനീയവുമല്ല). പേരിൽ മൊത്തം വലിയക്ഷരം ഉപയോഗിക്കുന്ന രീതി ഫോർട്രാൻ 90 പതിപ്പോടെ ഉപേക്ഷിക്കപ്പെട്ടു. ഔദ്യോഗികമാനകങ്ങളിൽ ഇപ്പോൾ ഈ ഭാഷയെ Fortran എന്നാണ് പരാമർശിക്കുന്നത്. അതുകൊണ്ട് ഇപ്പോൾ ഫോർട്രാൻ 77 വരെയുള്ള പതിപ്പുകളെ സൂചിപ്പിക്കുന്നതിന് FORTRAN എന്നും അതിനുശേഷമുള്ള പതിപ്പുകളെ (ഫോർട്രാൻ 90 മുതലുള്ളവ) പരാമർശിക്കുന്നതിന് Fortran എന്നും എഴുതുന്ന രീതി പതിവുണ്ട്. വിവിധ ആൻസി, ഐ.എസ്.ഒ./ഐ.ഇ.സി. മാനകപ്രമാണങ്ങളും ഈ രീതി പിന്തുടരുന്നുണ്ട്.
1953-ന്റെ അവസാനം ഐ.ബി.എമ്മിലെ ജീവനക്കാരനായിരുന്ന ജോൺ ബാക്കസ്, ഐ.ബി.എം. 704 മെയിൻഫ്രെയിം കമ്പ്യൂട്ടറിനുവേണ്ടി പ്രോഗ്രാമുകൾ തയ്യാറാക്കുന്നതിനായി അസെംബ്ലി ഭാഷക്കു പകരമായി കൂടുതൽ പ്രായോഗികമായ ഒരു ബദൽ വികസിപ്പിക്കാനുള്ള നിർദ്ദേശം തന്റെ മേലുദ്യോഗസ്ഥർക്ക് സമർപ്പിച്ചു. ചരിത്രമായി മാറിയ ഈ ദൗത്യത്തിൽ ബാക്കസിനോടൊപ്പം പ്രോഗ്രാമർമാരായ റിച്ചാഡ് ഗോൾഡ്ബെർഗ്, ഷെൽഡൻ എഫ്. ബെസ്റ്റ്, ഹാർലാൻ ഹെറിക്, പീറ്റർ ഷെറിഡൻ, റോയ് നട്ട്, റോബർട്ട് നെൽസൻ, ഇർവിങ് സില്ലെർ, ലോയിസ് ഹൈബ്, ഡേവിഡ് സൈർ എന്നിവരും പങ്കുചേർന്നു.[3] സമവാക്യങ്ങളെ എളുപ്പത്തിൽ കമ്പ്യൂട്ടറിലേക്ക് കയറ്റുക എന്ന ജെ. ഹാൾകോമ്പ് ലേനിങ് വികസിപ്പിക്കുകയും 1952-ൽ അദ്ദേഹം തന്നെ ജോർജ് എന്ന കമ്പൈലറിൽ അവതരിപ്പിച്ചതുമായ ആശയമാണ് ഈ പദ്ധതിയുടെയും അടിസ്ഥാന ആശയങ്ങളിലൊന്നായിരുന്നത്.[4]
ദ് ഐ.ബി.എം. മാത്തമറ്റിക്കൽ ഫോർമുല ട്രാൻസ്ലേറ്റിങ് സിസ്റ്റം എന്ന ഫോർട്രാന്റെ കരടുരൂപം 1954-ന്റെ പകുതിയോടെ പൂർത്തിയായി. 1956 ഒക്ടോബറിൽ ഫോർട്രാന്റെ ആദ്യ കൈപ്പുസ്തകം (മാനുവൽ) പുറത്തിറക്കി. 1957 ഏപ്രിലിൽ ആദ്യത്തെ ഫോർട്രാൻ കമ്പൈലറും തയ്യാറായി. കോഡ് ഓപ്റ്റിമൈസേഷൻ പിന്തുണയുള്ള ആദ്യത്തെ കമ്പൈലർ ആയിരുന്നു ഇത്. അസെംബ്ലി ഭാഷയിൽ നേരിട്ടെഴുതുന്ന പ്രോഗ്രാമിനെ അപേക്ഷിച്ച് മെച്ചപ്പെട്ട മെഷീൻ കോഡ് കമ്പൈലർ തരാതിരുന്നാൽ ഹൈലെവൽ ഭാഷ തന്നെ ഉപയോക്താക്കൾ ഉപയോഗിക്കുകയില്ലായിരുന്നുവെന്നതിനാൽ ഓപ്റ്റിമൈസേഷൻ വളരെ പ്രധാനപ്പെട്ട കാര്യമായിരുന്നു.[5]
അസെംബ്ലി ഭാഷയിൽ നേരിട്ടെഴുതുന്ന കോഡിനെ വെല്ലാൻ ഈ കമ്പൈലറിനാകുമോ എന്ന ഉപയോക്തൃസമൂഹത്തിന്റെ ആശങ്കക്കിടയിലും, ഒരു പ്രോഗ്രാമിലുപയോഗിക്കുന്ന നിർദ്ദേശങ്ങളുടെ എണ്ണം ഏതാണ്ട് ഇരുപതിലൊന്നായി കുറച്ചുകൊണ്ട് ഫോർട്രാൻ കമ്പൈലർ പെട്ടെന്നുതന്നെ അവർക്കിടയിൽ സ്വീകാര്യത നേടി. ഐ.ബി.എം. ജീവനക്കാരുടെ തിങ്ക് എന്ന ആനുകാലികത്തിന് 1979-ൽ നൽകിയ ഒരു അഭിമുഖത്തിൽ ജോൺ ബാക്കസ് ഇങ്ങനെ പറയുന്നു: "എന്റെ പണിയുടെ കൂടുതൽ ഭാഗവും മടി മൂലം ഉടലെടുത്തതാണ്. പ്രോഗ്രാമുകളും മറ്റും എഴുതുന്നത് ഞാൻ ഇഷ്ടപ്പെട്ടിരുന്നില്ല. ഐ.ബി.എം. 701-ൽ മിസൈലുകളുടെ സഞ്ചാരപഥം കണ്ടെത്തുന്നതിനുള്ള പ്രോഗ്രാം എഴുതുമ്പോഴാണ് പ്രോഗ്രാം എഴുത്ത് ലളിതമാക്കുന്നതിനായുള്ള സംവിധാനത്തിനുവേണ്ടിയുള്ള ശ്രമമാരംഭിച്ചത്."[6]
സങ്കീർണ്ണമായ കണക്കുകളുൾപ്പെട്ട പ്രോഗ്രാമുകൾക്കായി ശാസ്ത്രജ്ഞരും മറ്റും ഈ ഭാഷ വ്യാപകമായി ഉപയോഗിക്കാനാരംഭിച്ചു. കൂടുതൽ വേഗതയേറിയതും മെച്ചപ്പെട്ടതുമായ മെഷീൻ കോഡ് തയ്യാറാക്കുന്ന കമ്പൈലറുകൾ നിർമ്മിക്കാൻ ഇത് കമ്പൈലർ നിർമ്മാതാക്കളെ പ്രേരിപ്പിച്ചു. മിശ്രസംഖ്യകളെ കൈകാര്യം ചെയ്യാനുള്ള ഡാറ്റാടൈപ്പ് ഉൾപ്പെടുത്തിയതോടെ ഇലക്ടിക്കൽ എഞ്ചിനീയറിങ് പോലെയുള്ള സാങ്കേതികമേഖലയിലെ ആവശ്യങ്ങൾക്ക് യോജിച്ച ഭാഷയായി ഫോർട്രാൻ മാറി.
1960-ഓടെ ഐ.ബി.എം. 709, 650, 1620, 7090 എന്നീ കമ്പ്യൂട്ടറുകൾക്കുവേണ്ടിയുള്ള ഫോർട്രാൻ പതിപ്പുകൾ ലഭ്യമായി. ഫോർട്രാന്റെ ജനപ്രീതി കണക്കിലെടുത്ത് ഐ.ബി.എമ്മിന്റെ എതിരാളികളും അവരവരുടെ കമ്പ്യൂട്ടറുകളിൽ ഫോർട്രാൻ കമ്പൈലർ ഉൾപ്പെടുത്താനാരംഭിച്ചു. അങ്ങനെ 1963-ഓടെ നാൽപതിലധകം ഫോർട്രാൻ കമ്പൈലറുകൾ രംഗത്തുണ്ടായിരുന്നു. ഇക്കാരണം കൊണ്ട് പലതരം കമ്പ്യൂട്ടർ രൂപകൽപനകളെ പിന്തുണക്കുന്നതും വ്യാപകമായി ഉപയോഗിക്കപ്പെട്ടതുമായ ആദ്യത്തെ പ്രോഗ്രാമിങ് ഭാഷയായി ഫോർട്രാൻ കണക്കാക്കപ്പെടുന്നു.
ഫോർട്രാന്റെ വികാസവും ആദ്യകാല കമ്പൈലറുകളുടെ വികാസവും സമാന്തരമായാണ് സംഭവിച്ചതെന്നു പറയാം. ഫോർട്രാൻ പ്രോഗ്രാമുകൾക്കുവേണ്ടി മികച്ച മെഷീൻകോഡ് തയ്യാറാക്കുക എന്ന ആവശ്യമാണ് കമ്പൈലർ രൂപകൽപ്പനയിലെ ഒട്ടേറെ മുന്നേറ്റങ്ങൾക്ക് പ്രേരകഘടകമായി വർത്തിച്ചത്.
ഐ.ബി.എം. 704-നു വേണ്ടിയുള്ള ആദ്യത്തെ ഫോർട്രാൻ പതിപ്പിൽ 32 നിർദ്ദേശങ്ങളുണ്ടായിരുന്നു, താഴെയുള്ളവ അവയിൽച്ചിലതാണ്:
DIMENSION
, EQUIVALENCE
നിർദ്ദേശങ്ങൾIF
നിർദ്ദേശം (Three-way arithmetic IF
statement)ACCUMULATOR OVERFLOW
, QUOTIENT OVERFLOW
, and DIVIDE CHECK
) കണ്ടെത്തുന്നതിനുള്ള IF
നിർദ്ദേശങ്ങളും (statements for checking exceptions) മുൻകാല കമ്പ്യൂട്ടറുകളിലെ ഫ്രണ്ട്പാനലിലുണ്ടായിരുന്ന സെൻസ് സ്വിച്ചുകളും സെൻസ് ലൈറ്റുകളും കൈകാര്യം ചെയ്യുന്നതിനുള്ള IF
നിർദ്ദേശങ്ങളും.GOTO
, കമ്പ്യൂട്ടെഡ് GOTO
, ASSIGN
, അസൈൻഡ് GOTO
DO
ലൂപ്പുകൾFORMAT
, READ
, READ INPUT TAPE
, WRITE
, WRITE OUTPUT TAPE
, PRINT
, PUNCH
READ TAPE
, READ DRUM
, WRITE TAPE
, WRITE DRUM
END FILE
, REWIND
, BACKSPACE
PAUSE
, STOP
, CONTINUE
നിർദ്ദേശങ്ഹൾFREQUENCY
നിർദ്ദേശം.ഫോർട്രാൻ ഭാഷയിലെ ഒരു നിർദ്ദേശത്തെ മെഷീൻ ഭാഷയിലെ വിവിധ നിർദ്ദേശങ്ങളുപയോഗിച്ച് പല രീതിയിൽ സാക്ഷാത്കരിക്കാനാകും. കോഡ് ഓപ്റ്റിമൈസ് ചെയ്യുന്ന ഫോർട്രാൻ കമ്പൈലർ ഏറ്റവും ചുരുങ്ങിയ എണ്ണം നിർദ്ദേശങ്ങളും ഏറ്റവും വേഗത്തിൽ പ്രവർത്തിച്ചു തീരുന്ന രീതിയിലുമുള്ള മെഷീൻ കോഡ് ആയിരിക്കും സാധാരണ തയ്യാറാക്കുക. എങ്കിലും ഗണിതപരമായുള്ള IF
പോലുള്ള ബ്രാഞ്ചിങ് നിർദ്ദേശങ്ങളിൽ ഏതു വഴിയിലൂടെയാണ് പ്രോഗ്രാം പ്രവർത്തനം കൂടുതലായും നടക്കാനുള്ള സാധ്യത എന്നു കണ്ടെത്തിയാൽ അതിനു ഏറ്റവും അനുയോജ്യമായ മെഷീൻ കോഡ് നിർദ്ദേശം ഉപയോഗിച്ചുകൊണ്ടുള്ള ഫലം നിർമ്മിക്കാനാകും. ബ്രാഞ്ചിങ് നിർദ്ദേശങ്ങളിൽ ഏതു വഴിയാണ് തിരഞ്ഞെടുക്കാനുള്ള സാധ്യത കൂടുതലുള്ളത് എന്ന് കമ്പൈലറിന് സൂചന നൽകുന്നതിനാണ് FREQUENCY
എന്ന നിർദ്ദേശം ഫോർട്രാനിൽ ഉപയോഗിച്ചത്.
ഡിസ്ക് ഫയലുകളുടെയും ടെക്സ്റ്റ് എഡിറ്ററുകളുടെയും ടെർമിനലുകളുടെയും ആവിർഭാവത്തിനുമുമ്പ് ഒരു കീപഞ്ച് കീബോഡ് ഉപയോഗിച്ച് 80 നിരയുള്ള പഞ്ച്ഡ് കാർഡുകളിലായിരുന്നു (ഓരോ നിർദ്ദേശങ്ങളും ഓരോരോ കാർഡിൽ എന്ന കണക്കിൽ) ഫോർട്രാൻ പ്രോഗ്രാമുകൾ രേഖപ്പെടുത്തിയിരുന്നത്. ഇത്തരത്തിലുള്ള കാർഡുകളുടെ അടുക്ക് കമ്പൈൽ ചെയ്യാനായി കാർഡ് റീഡറിൽ കയറ്റുകയുമായിരുന്നു പതിവ്.
പ്രോഗ്രാമിന്റെ ഭാഗങ്ങൾ ഇന്നയിന്ന നിരയിൽത്തന്നെ എഴുതണമെന്ന് നിഷ്കർഷിക്കപ്പെട്ടിട്ടുള്ള ഒരു ദൃഢമായ വിന്യാസരീതിയാണ് ഫോർട്രാൻ തുടക്കത്തിൽ ഉപയോഗിച്ചിരുന്നത്. ഉദാഹരണത്തിന് ആദ്യത്തെ നിരയിൽ "C" എന്ന അക്ഷരം വന്നാൽ അതൊരു അഭിപ്രായം (comment) ആണെന്നു കണക്കാക്കുകയും ആ കാർഡിനെത്തന്നെ കമ്പൈലർ അവഗണിക്കുകയും ചെയ്യും. അല്ലാത്ത പക്ഷം കാർഡിലെ 1 മുതൽ 5 വരെയുള്ള നിരകൾ ലേബൽ മേഖലയയാണ്. GOTO നിർദ്ദേശത്തിനു പുറമേ WRITE, READ നിർദ്ദേശങ്ങളും FORMAT അനുബന്ധത്തിനായി ഫോർട്രാനിൽ ലേബലുകൾ ഉപയോഗിക്കുന്നു. ആറാമത്തെ നിര തുടർച്ചയെ സൂചിപ്പിക്കുന്നതാണ്; ഈ നിര ശൂന്യമല്ലെങ്കിൽ ആ കാർഡിലെ നിർദ്ദേശം തൊട്ടുമുമ്പത്തെ കാർഡിലെ നിർദ്ദേശത്തിന്റെ തുടർച്ചയാണെന്നു കണക്കാക്കുന്നു. 7 മുതൽ 72 വരെയുള്ള നിരകളാണ് നിർദ്ദേശങ്ങൾക്കുപയോഗിക്കുന്നത്. 73 മുതൽ 80 വരെയുള്ള നിരകളും കമ്പൈലർ അവഗണിക്കും; അതുകൊണ്ട് തിരിച്ചറിയാനുള്ള വിവരങ്ങൾ ഇവിടെ രേഖപ്പെടുത്താനുപയോഗിക്കാറുണ്ട്. ഈ ഭാഗത്ത് ക്രമസംഖ്യ പഞ്ച് ചെയ്ത് രേഖപ്പെടുത്തിയാൽ വീണുപോയോ മറ്റോ ക്രമം തെറ്റിയ അടുക്കുകളെ ക്രമീകരിക്കാൻ ഉപയോഗിക്കാം. ക്രമസംഖ്യയിടുന്ന രീതി പ്രൊഡക്ഷൻ പ്രോഗ്രാമുകളിൽ മാനകമായിത്തന്നെ അവലംബിച്ചുവന്നിരുന്നു. ഐ.ബി.എം. 519 എന്ന യന്ത്രം ഒരു അടുക്ക് കാർഡുകളെ മറ്റൊന്നിലേക്കു പകർത്തുന്നതിനും കാർഡുകളിൽ ക്രമസംഖ്യ രേഖപ്പെടുത്തുന്നതിനും ഉപയോഗിച്ചുവന്നിരുന്ന ഒന്നാണ്. മേൽപ്പറഞ്ഞ നിബന്ധനകൾക്കു പുറമേ ചില വിന്യാസനിബന്ധനകളും ചില കമ്പൈലറുകൾക്കുണ്ടായിരുന്നു, ഐ.ബി.എം. 650 കമ്പ്യൂട്ടറിനോടൊപ്പമുള്ള കമ്പൈലർ ഇത്തരത്തിലൊന്നാണ്.[7]
പഞ്ച്ഡ്കാർഡുകളുടെ കാലം കഴിഞ്ഞ് ഡിസ്ക്ഫയലുകളും മറ്റും പ്രോഗ്രാം ശേഖരിക്കാൻ ഉപയോഗിക്കപ്പെട്ടതിനു ശേഷവും ഫോർട്രാൻ കമ്പൈലറുകളിൽ വിന്യാസനിബന്ധനകൾ നിലനിന്നിരുന്നു. ഫോർട്രാൻ 90 മാനകരൂപത്തിലാണ് വിന്യാസനിയന്ത്രണം ഒഴിവായത്. എന്നിരുന്നാലും പഴയ പ്രോഗ്രാമുകളെ പിന്തുണക്കുന്നതിന് ആധുനിക കമ്പൈലറുകൾ പോലും ദൃഢവിന്യാസരീതിയിലെഴുതിയ സോഴ്സ്കോഡ് പിന്തുണക്കുകയും ചെയ്യുന്നുണ്ട്.[8]
നിർദ്ദേശങ്ങൾക്കായുള്ള മേഖലയിൽ ഇടവിട്ടാലും പൊതുവേ അത് കമ്പൈലർ അവഗണിക്കുമായിരുന്നു; അതായത് വരിയുടെ നീളം ചുരുക്കുന്നതിന് പ്രോഗ്രാമർക്കു വേണമെങ്കിൽ ഇടവിടാതിരിക്കുകയോ, വ്യക്തതക്കുവേണ്ടി ഇടവിടുകയോ ചെയ്യാം. ഉദാഹരണമായി AVG OF X
എന്നത് ഫോർട്രാൻ പ്രോഗ്രാമിൽ സാധുവായ ഒരു നാമമാണ് (idenfifier) അത് AVGOFX
എന്നതിന് തത്തുല്യവുമാണ്.
ആദ്യകാല ഫോർട്രാൻ കമ്പൈലറുകൾ സബ്റൂട്ടീനുകൾക്കകത്ത് റിക്കർഷൻ (ഒരു സബ്റൂട്ടീനിൽ നിന്ന് അതിനെത്തന്നെ വിളിക്കുന്ന രീതി) പിന്തുണച്ചിരുന്നില്ല. ആദ്യകാല കമ്പ്യുട്ടർ രൂപകൽപ്പനകളിൽ റിക്കർഷനെ സാധ്യമാക്കുന്നതിനുള്ള സ്റ്റാക്ക് എന്ന പരികൽപ്പനയേയുണ്ടായിരുന്നില്ല എന്നത് ഇതിനൊരു കാരണമാണ്. ഫോർട്രാനിൽ സബ്റൂട്ടീൻ വിളികൾ പിന്തുണക്കാനാരംഭിച്ചപ്പോൾ തിരിച്ചെത്താനുള്ള വിലാസം സബ്റൂട്ടിന്റെ കോഡ് ശേഖരിച്ചിട്ടുള്ളയിടത്തുതന്നെയുള്ള ഒരു നിശ്ചിതസ്ഥാനത്താണ് രേഖപ്പെടുത്തിവക്കുക. അതുകൊണ്ട് ഒരു തവണ സബ്റൂട്ടീൻ വിളിക്കപ്പെട്ടാൽ അത് പൂർത്തിയാക്കി തിരിച്ചെത്താതെ അതേ സബ്റൂട്ടീൻ തന്നെ വിളിക്കുക സാധ്യമല്ല. ഫോർട്രാൻ 77-ന്റെ മാനകങ്ങളിൽ ഉൾപ്പെടുത്തപ്പെട്ടിരുന്നില്ലെങ്കിലും നിരവധി ഫോർട്രാൻ 77 കമ്പൈലറുകൾ, റിക്കർഷൻ പിന്തുണ നൽകിയിരുന്നു. ഫോർട്രാൻ 90-ലാണ് റിക്കർഷൻ സൗകര്യം മാനകമായി മാറിയത്.[9]
1958-ലാണ് ഐ.ബി.എം., ഫോർട്രാൻ II അവതരിപ്പിച്ചത്. പ്രൊസീജറൽ പ്രോഗ്രാമിങ്ങിനുള്ള പിന്തുണയായിരുന്നു ഇതിലെ എറ്റവും പ്രധാനപ്പെട്ട പുതുമ. ഫലം തിരിച്ചുതരുന്ന സബ്റൂട്ടീനുകൾ, ഫങ്ഷനുകൾ, പരാമീറ്ററുകളുപോഗിച്ച് അവയിലേക്ക് റെഫറൻസ് രീതിയിൽ വിലകൾ കൈമാറുക തുടങ്ങിയ സൗകര്യങ്ങൾ ഫോർട്രാൻ രണ്ടിലുണ്ടായിരുന്നു. പുതിയതായി ഉൾപ്പെടുത്തിയ COMMON
എന്ന നിർദ്ദേശം ഉപയോഗിച്ച് സബ്റൂട്ടീനുകൾക്ക് ആഗോളചരങ്ങൾ ഉപയോഗിക്കാമായിരുന്നു. താഴെക്കാണുന്ന ആറ് പുതിയ നിർദ്ദേശങ്ങൾ ഫോർട്രാൻ രണ്ടിൽ ഉൾക്കൊള്ളിച്ചിരുന്നു:
SUBROUTINE
, FUNCTION
, END
CALL
, RETURN
COMMON
കുറച്ചുവർഷങ്ങൾക്കുള്ളിൽത്തന്നെ ഡബിൾ പ്രിസിഷൻ (DOUBLE PRECISION
), കോംപ്ലക്സ് (COMPLEX
) ഡാറ്റാടൈപ്പുകൾക്കുള്ള പിന്തുണയും ഫോർട്രാൻ രണ്ടിൽ ഉൾപ്പെടുത്തി.
ഹെറോണിന്റെ ഫോർമുല ഉപയോഗിച്ച് ത്രികോണത്തിന്റെ വിസ്തീർണ്ണം കാണുന്നതിനുള്ള ഈ പ്രോഗ്രാം, ഡാറ്റാ കാർഡിലെ A,B,C എന്ന മുന്ന് അഞ്ചക്കസംഖ്യകൾ വായിക്കുന്നു. ഇവ മൂന്നും ഒരു ജ്യാമിതീയതലത്തിലുള്ള ഒരു ത്രികോണത്തിന്റെ വശങ്ങളെ പ്രതിനിധാനം ചെയ്യുന്നില്ലെങ്കിൽ 1 എന്ന പിഴസന്ദേശത്തോടെ പ്രോഗ്രാം പ്രവർത്തനം നിർത്തുന്നു. (പ്രോഗ്രാമിലെ STOP 1 എന്ന നിർദ്ദേശം കാണുക). അല്ലാത്തപക്ഷം A,B,C എന്നിവയുടെ വിലകളും ത്രികോണത്തിന്റെ വിസ്തീർണ്ണവും (രണ്ടു ദശാംശസ്ഥാനങ്ങളുള്ള സംഖ്യയായി) അച്ചടിക്കുന്നു.
C AREA OF A TRIANGLE WITH A STANDARD SQUARE ROOT FUNCTION
C INPUT - CARD READER UNIT 5, INTEGER INPUT
C OUTPUT - LINE PRINTER UNIT 6, REAL OUTPUT
C INPUT ERROR DISPLAY ERROR OUTPUT CODE 1 IN JOB CONTROL LISTING
READ INPUT TAPE 5, 501, IA, IB, IC
501 FORMAT (3I5)
C IA, IB, AND IC MAY NOT BE NEGATIVE
C FURTHERMORE, THE SUM OF TWO SIDES OF A TRIANGLE
C IS GREATER THAN THE THIRD SIDE, SO WE CHECK FOR THAT, TOO
IF (IA) 777, 777, 701
701 IF (IB) 777, 777, 702
702 IF (IC) 777, 777, 703
703 IF (IA+IB-IC) 777,777,704
704 IF (IA+IC-IB) 777,777,705
705 IF (IB+IC-IA) 777,777,799
777 STOP 1
C USING HERON'S FORMULA WE CALCULATE THE
C AREA OF THE TRIANGLE
799 S = FLOATF (IA + IB + IC) / 2.0
AREA = SQRT( S * (S - FLOATF(IA)) * (S - FLOATF(IB)) *
+ (S - FLOATF(IC)))
WRITE OUTPUT TAPE 6, 601, IA, IB, IC, AREA
601 FORMAT (4H A= ,I5,5H B= ,I5,5H C= ,I5,8H AREA= ,F10.2,
+ 13H SQUARE UNITS)
STOP
END
1958-ൽ ഫോർട്രാൻ III എന്ന പതിപ്പും ഐ.ബി.എം. വികസിപ്പിച്ചിരുന്നു. മറ്റു പല സവിശേഷതകൾക്കു പുറമേ, ഫോർട്രാൻ നിർദ്ദേശങ്ങൾക്കൊപ്പം അസെംബ്ലർ നിർദ്ദേശങ്ങളും ഇതിൽ ഉപയോഗിക്കാമായിരുന്നു. എങ്കിലും ഈ പതിപ്പ് ഒരു ഉൽപ്പന്നമായി പുറത്തിറക്കിയില്ല. മെഷീൻ-ആശ്രിത സവിശേഷതകൾ മൂലം ഒരു മെഷീനു വേണ്ടി എഴുതുന്ന പ്രോഗ്രാം മറ്റൊന്നിൽ പ്രവർത്തിക്കാത്തതാണ് ഇതിനു കാരണം. ഫോർട്രാന്റെ ആദ്യകാല പതിപ്പുകൾക്കെല്ലാം ഈയൊരു പോരായ്മയുണ്ടായിരുന്നു.
ഐ.ബി.എം. 1401-നു വേണ്ടി ലഭ്യമാക്കിയ ഫോർട്രാൻ പതിപ്പ് നൂതനമായ 63-പാസ് കമ്പൈലറായിരുന്നു ഉപയോഗിച്ചിരുന്നത്. വെറും 8 കെ.ബി. മാഗ്നറ്റിക് കോർ മെമ്മറിയിലാണ് ഇത് പ്രവർത്തിച്ചിരുന്നത്. ഇതിൽ മെമ്മറിയിലേക്കെടുക്കുന്ന ഫോർട്രാൻ പ്രോഗ്രാമിനെ ഓവർലേ രീതിയിൽ പലതവണയായി അവിടെവച്ചുതന്നെ ക്രമേണ പരിവർത്തനം നടത്തി എക്സിക്യൂട്ടബിൾ രൂപത്തിലാക്കുകയായിരുന്നു.[10] എക്സിക്യൂട്ടബിൾ രൂപം യന്ത്രഭാഷയിലായിരുന്നില്ല മറിച്ച് അത് ഇന്റർപ്രെട്ട് ചെയ്തായിരുന്നു പ്രവർത്തിച്ചിരുന്നത്.
ഉപയോക്താക്കളുടെ ആവശ്യങ്ങൾ കണക്കിലെടുത്ത് 1961 മുതൽ ഐ.ബി.എം., ഫോർട്രാൻ നാലിന്റെ വികസനം ആരംഭിച്ചു. ഫോർട്രാൻ രണ്ടിലെ യന്ത്രബന്ധിതമായ പ്രത്യേകതകളെല്ലാം (ഉദാഹരണമായി READ INPUT TAPE
പോലുള്ള നിർദ്ദേശങ്ങൾ) ഇതിൽ ഒഴിവാക്കുകയും പുതിയ സവിശേഷതകളായി ബൂളിയൻ ഡാറ്റാടൈപ്പ് (LOGICAL
), ലോജിക്കൽ ബൂളിയൻ എക്സ്പെഷനുകൾ, ലോജിക്കൽ IF നിർദ്ദേശം തുടങ്ങിയവ ഉൾപ്പെടുത്തുകയും ചെയ്തു. 1962-ൽ ഐ.ബി.എം. 7030 സ്ട്രെച്ച് കമ്പ്യൂട്ടറിനോടൊപ്പമാണ് ഫോർട്രാൻ IV പുറത്തിറക്കിയത്. ഐ.ബി.എം. 7090, 7094 കമ്പ്യൂട്ടറുകൾക്കുള്ള ഫോർട്രാൻ IV പതിപ്പുകളും ഇതിനെപ്പിന്തുടർന്നുവന്നു.
1965-ഓടെ അമേരിക്കൻ നാഷണൽ സ്റ്റാൻഡേഡ്സ് ഇൻസ്റ്റിറ്റ്യൂട്ടിന്റെ (ആൻസി) X3.4.3 ഫോർട്രാൻ വർക്കിങ് ഗ്രൂപ്പ്, ഫോർട്രാനുവേണ്ടി മാനകരൂപം ക്രോഡീകരിക്കുകയും അങ്ങനെ ഫോർട്രാൻ IV-ന് ഒരു മാനകരൂപം കൈവരുകയും ചെയ്തു.[11]
ഇക്കാലത്തുതന്നെ ഫോർട്രാൻ IV ഒരു പ്രധാനപ്പെട്ട വിദ്യാഭ്യാസോപാധിയായി മാറുകയും, വാട്ടർലൂ സർവകലാശാലയുടെ വാട്ട്ഫോർ, വാട്ട്ഫൈവ് പോലെയുള്ള കമ്പൈലറുകളിലൂടെ ആദ്യകാല കമ്പൈലറുകളിലെ സങ്കീർണ്ണമായ കമ്പൈലിങ്, ലിങ്കിങ് പ്രക്രിയകൾ ഒട്ടേറെ ലഘൂകരിക്കപ്പെടുകയും ചെയ്തു.
ഫോർട്രാന്റെ ആദ്യകാലചരിത്രത്തിലെ പ്രധാന നാഴികക്കല്ലാണ് അതിനൊരു മാനകരൂപമുണ്ടാക്കാനുള്ള അമേരിക്കൻ സ്റ്റാൻഡേഡ്സ് അസോസിയേഷന്റെ (ഇപ്പോൾ ആൻസി) തീരുമാനം. ഇതിൻഫലമായി രണ്ടു മാനകഭാഷകൾ ഉടലെടുക്കുകയും ഇവ 1966 മാർച്ചിൽ അംഗീകരിക്കപ്പെടുകയും ചെയ്തു. പ്രഥമദൃഷ്ട്യാലുള്ള മാനകമായി കണക്കാക്കുന്ന ഫോർട്രാൻ IV ആധാരമായുള്ള ഫോർട്രാൻ മാനകമാണ് ഇവയിൽ പ്രധാനം. ഫോർട്രാൻ II ആധാരമാക്കിയുള്ളതും അതിലെ യന്ത്രബന്ധിതസവിശേഷതകൾ ഒഴിവാക്കിയതുമായ അടിസ്ഥാന ഫോർട്രാൻ (Basic FORTRAN) ആണ് രണ്ടാമത്തേത്. ആദ്യം പറഞ്ഞ ഫോർട്രാൻ മാനകപ്രകാരമുള്ള നിർവചിക്കപ്പെട്ട ഭാഷ ഫോർട്രാൻ 66 എന്നറിയപ്പെട്ടു. മാനകരൂപത്തിലുള്ള മിക്കവാറും കാര്യങ്ങളും ഫോർട്രാൻ IV ആധാരമാക്കിയുള്ളതാകയാൽ പലരും ഇതിനെ ഫോർട്രാൻ IV എന്നുതന്നെ വിളിച്ചുപോന്നു. ഫലത്തിൽ ഫോർട്രാന്റെ ആദ്യത്തെ അംഗീകൃതമാനകരൂപമായി ഫോർട്രാൻ 66 മാറി. ഫോർട്രാൻ 66-ൽ താഴെപ്പറയുന്ന സവിശേഷതകളുണ്ട്:
SUBROUTINE
), ഫങ്ഷൻ (FUNCTION
), ബ്ലോക്ക് ഡാറ്റ (BLOCK DATA
) എന്നീ പ്രോഗ്രാം വിഭാഗങ്ങൾINTEGER
), റിയൽ (REAL
), ഡബിൾ പ്രിസിഷൻ (DOUBLE PRECISION
), കോംപ്ലക്സ് (COMPLEX
), ലോജിക്കൽ (LOGICAL
) എന്നീ ഡാറ്റാടൈപ്പുകൾCOMMON
, DIMENSION
, EQUIVALENCE
നിർദ്ദേശങ്ങൾDATA
എന്ന നിർദ്ദേശംEXTERNAL
) (ഉദാഹരണം. ലൈബ്രറി) ഫങ്ഷനുകൾGOTO
, അസൈൻഡ് GOTO
, കമ്പ്യൂട്ടെഡ് GOTO
നിർദ്ദേശങ്ങൾIF
, ത്രിപഥ അരിത്മെറ്റിക് IF
നിർദ്ദേശങ്ങൾDO
ലൂപ്പുകൾREAD
, WRITE
, BACKSPACE
, REWIND
, ENDFILE
എന്നീ അനുക്രമ ഇൻപുട്ട് ഔട്ട്പുട്ട് നിർദ്ദേശങ്ങൾFORMAT
നിർദ്ദേശംCALL
, RETURN
, PAUSE
, STOP
നിർദ്ദേശങ്ങൾDATA
, FORMAT
നിർദ്ദേശങ്ങളിലും പ്രോസീജ്യറുകളിലേക്കുള്ള പരാമീറ്ററായുമുള്ള ഹോളറിത്ത് സ്ഥിരാങ്കങ്ങളുടെ ഉപയോഗം.ഫോർട്രാൻ 66 മാനകരൂപം പുറത്തിറങ്ങിയതിനു ശേഷം, വിവിധ കമ്പൈലർ നിർമ്മാതാക്കൾ നിരവധി സവിശേഷതകൾ അവരവരുടെ കമ്പൈലറുകളിൽ കൂട്ടിച്ചേർത്തു. 1969-ൽ ഫോർട്രാൻ 66 മാനദണ്ഡങ്ങൾ പുതുക്കാനുള്ള നടപടികൾ ആൻസി ആരംഭിച്ചു. പുതുക്കിയ പതിപ്പിന്റെ കരടുരൂപം 1977-ലാണ് വിതരണം ചെയ്യപ്പെട്ടത് 1978 ഏപ്രിലിൽ ഇതിന് ഔദ്യോഗിക അംഗീകാരവും ലഭിച്ചു. പുതിയ മാനകരൂപം, ഫോർട്രാൻ 77 എന്നറിയപ്പെട്ടു. ഫോർട്രാൻ 66-ലെ കുറവുകൾ പരിഹരിച്ചുകൊണ്ടുള്ള നിരവധി സുപ്രധാനസവിശേഷതകൾ ഇതിൽ കൂട്ടിച്ചേർത്തിരുന്നു:
IF
- END IF
നിർദ്ദേശഖണ്ഡങ്ങൾ. ഇതിനോടൊപ്പം ELSE
, ELSE IF
എന്നീ ഉപവാക്യങ്ങൾ വേണമെങ്കിൽ ഉപയോഗിക്കുകയുമാകാം.OPEN
, CLOSE
, INQUIRE
നിർദ്ദേശങ്ങൾIMPLICIT
നിർദ്ദേശംCHARACTER
) ഡാറ്റാടൈപ്പിനു പുറമേ അക്ഷരരൂപത്തിലുള്ള വിവരങ്ങളുടെ ഇൻപുട്ട്, ഔട്ട്പുട്ട്, സംസ്കരണം തുടങ്ങിയവക്കുള്ള വിപുലമായ സൗകര്യങ്ങൾPARAMETER
നിർദ്ദേശംSAVE
നിർദ്ദേശംAMOD
, ഡബിൾ പ്രിസിഷൻ ഡാറ്റാടൈപ്പ് സ്വീകരിക്കുന്ന DMOD
എന്നീ ഫങ്ഷനുകൾക്ക് പകരമായി MOD
എന്ന ഒറ്റ സാമാന്യനാമം. സാമാന്യനാമമുപയോഗിക്കുമ്പോൾ, പരാമീറ്ററായി കൊടുക്കുന്ന ഡാറ്റാടൈപ്പിനനുസരിക്ക് അനുയോജ്യമായ ആന്തരിക ഫങ്ഷൻ വിളിക്കപ്പെടുന്നു.[12] )LGE, LGT, LLE, LLT
) എന്നീ വാക്യങ്ങൾ. ഈ സൗകര്യം യു.എസ്. പ്രതിരോധവകുപ്പിന്റെ ആവശ്യപ്രകാരമാണ് ഉൾക്കൊള്ളിക്കപ്പെട്ടത്.മുൻ മാനകരൂപത്തിലുണ്ടായിരുന്ന നിരവധി കാര്യങ്ങൾ ഈ പതിപ്പിൽ ഒഴിവാക്കുകയും മാറ്റത്തിനു വിധേയമാകുയും ചെയ്തു. ഒഴിവാക്കപ്പെട്ടവയിൽ ചിലവ താഴെക്കാണിച്ചിരിക്കുന്നു:
DIMENSION A(10,5)
Y= A(11,1)
കണ്ട്രോൾ ഡാറ്റാ കോർപ്പറേഷന്റെ കമ്പ്യൂട്ടറുകളിൽ മിനെസോറ്റ ഫോർട്രാൻ (എം.എൻ.എഫ്.) എന്നറിയപ്പെടുന്ന ഫോർട്രാൻ 77-ന്റെ ഒരു പതിപ്പുണ്ടായിരുന്നു. വിദ്യാർത്ഥികൾക്കായി പ്രത്യേകം തയ്യാറാക്കിയതായിരുന്നു ഇത്. ഔട്ട്പുട്ട് നിർദ്ദേശഘടനയിലെ മാറ്റങ്ങൾ, COMMON
, DATA
എന്നീ നിർദ്ദേശങ്ങളുടെ പ്രത്യേകതരത്തിലുള്ള ഉപയോഗം, കമ്പൈലിങ് ഓപ്റ്റിമൈസേഷനുള്ള കോഡ് ലെവലുകൽ, വിശദമായ പിഴസന്ദേശങ്ങൾ, വിപുലമായ മുന്നറിയിപ്പ്-ഡീബഗ് സന്ദേശങ്ങൾ തുടങ്ങിയവയൊക്കെ ഈ പതിപ്പിന്റെ പ്രത്യേകതയായിരുന്നു[13]
കമ്പ്യൂട്ടിങ്ങിലും പ്രോഗ്രാമിങ് രീതികളിലും വരുന്ന വളരെവേഗത്തിലുള്ള മാറ്റങ്ങൾ മൂലം ഫോർട്രാൻ 77-നു ശേഷം മാനകരൂപം പുതുക്കുന്നതിനായുള്ള നടപടികൾ തുടർച്ചയായി തടസ്സപ്പെട്ടു. അതുകൊണ്ട് പതിനഞ്ചുവർത്തോളം നിലവിലിരുന്ന മാനകഫോർട്രാൻ ആയ ഫോർട്രാൻ 77, ചരിത്രപരമായി ഫോർട്രാന്റെ ഏറ്റവും പ്രധാന വകഭേദമായി മാറി.
ഫോർട്രാൻ 77-ന്റെ ഒരു പ്രധാന പ്രായോഗിക വികസിതവകഭേദമാണ് 1978-ൽ പുറത്തിറങ്ങിയ എം.ഐ.എൽ.-എസ്.റ്റി.ഡി.-1753.[14] യു.എസ്. പ്രതിരോധവകുപ്പാണ് ഈ മാനകനിർദ്ദേശം വികസിപ്പിച്ചത്. ആൻസി ഫോർട്രാൻ 77-ൽ ഉൾപ്പെടുത്തിയിട്ടില്ലാത്തതും നിരവധി ഫോർട്രാൻ 77 കമ്പൈലറുകളിൽ നിലവിലുണ്ടായിരുന്നതുമായ നിരവധി സവിശേഷതകൾ ഇതിൽ ഉൾക്കൊള്ളിച്ചു. ഈ സവിശേഷതകൾ പിൽക്കാലത്ത് ഫോർട്രാൻ 90 മാനകരൂപത്തിന്റെ ഭാഗമാകുകയും ചെയ്തു.
DO WHILE
, END DO
നിർദ്ദേശങ്ങൾINCLUDE
നിർദ്ദേശംIMPLICIT
നിർദ്ദേശത്തിന്റെ വകഭേദമായ IMPLICIT NONE
നിർദ്ദേശംഫോർട്രാൻ 77 പ്രോഗ്രാമർമാർക്ക് സിസ്റ്റം കോളുകൾ ലളിതമാക്കുന്നതിനുള്ള ഐ.ട്രിപ്പിൾ ഇയുടെ 1003.9 പോസിക്സ് മാനകരൂപം, 1991-ൽ പുറത്തിറക്കി.[15] പ്രോസസ് നിർവഹണം, സിഗ്നൽ കൈകാര്യം ചെയ്യൽ, ഫയൽ സിസ്റ്റം നിയന്ത്രണം, ഉപകരണനിയന്ത്രണം, പ്രോസീജ്യർ പോയിന്റിങ്, പോർട്ടബിൾ ആയ സ്ട്രിം ഐ./ഒ. തുടങ്ങിയ കാര്യങ്ങൾക്കുള്ള നൂറിലധികം പോസിക്സ് അനുരൂപമായ സിസ്റ്റം കോളുകൾ ഈ മാനകരൂപത്തിൽ നിർവചിച്ചിട്ടുണ്ടായിരുന്നു.
വളരെ വൈകിയാണ് അനൗദ്യോഗികമായി ഫോർട്രാൻ 90 എന്നറിയപ്പെടുന്ന (മുൻപ് ഇത് ഫോർട്രാൻ 8X എന്നാണ് അറിയപ്പെട്ടിരുന്നത്) ഫോർട്രാൻ 77-ന്റെ പിൻഗാമി പുറത്തിറങ്ങിയത്. ഇതിന്റെ ഐ.എസ്.ഒ. മാനകരൂപം 1991-ലും ആൻസി മാനകം 1992-ലും പുറത്തിറങ്ങി. 1978-ലെ മാനകരൂപം പുറത്തിറങ്ങിയതിനു ശേഷം പ്രോഗ്രാമിങ് രീതികളിൽ വന്നുചേർന്ന പ്രധാനമാറ്റങ്ങളെല്ലാം ഉൾക്കൊണ്ടുകൊണ്ടുള്ള പതിപ്പായിരുന്നു ഇത്.
X(1:N)=R(1:N)*COS(A(1:N))
- ഇവിടെ R എന്ന അരേയിലെ 1 മുതൽ N വരെയുള്ള സ്ഥാനങ്ങളിലെ വിലയെ യഥാക്രമം A എന്ന അരേയിലെ 1 മുതൽ N വരെയുള്ള സ്ഥാനങ്ങളിലെ വിലയുടെ കോസൈൻ ഉപയോഗിച്ച് ഗുണിച്ച് X എന്ന അരേയിലെ സമാനസ്ഥാനങ്ങളിൽ നിശ്ചയിക്കുന്നു.)WHERE
നിർദ്ദേശം ഉപയോഗിച്ച് ഉപാധിയോടെ തിരഞ്ഞെടുക്കപ്പെട്ട അരേ സ്ഥാനങ്ങളിൽ മാത്രം വില ആരോപിക്കാം. (ഉദാഹരണം: WHERE(X /= 0) X = 1.0/X
- ഇവിടെ X എന്ന അരേയിലെ പൂജ്യമല്ലാത്ത വിലകളുടെ വ്യുൽക്രമം അതിലേക്കുതന്നെ എഴുതുന്നു.[16])RECURSIVE
നിർദ്ദേശം ഉപയോഗിച്ച്)ALLOCATABLE
ആട്രിബ്യൂട്ട്, ALLOCATE
, DEALLOCATE
എന്നീ നിർദ്ദേശങ്ങൾ എന്നിവ ഉപയോഗിച്ച് ആവശ്യാനുസരണം മെമ്മറി ഉപയോഗിക്കുക.POINTER
, NULLIFY
തുടങ്ങിയ നിർദ്ദേശങ്ങൾ ഉപയോഗിക്കുന്നു.END DO
നിർദ്ദേശം. DO
ലൂപ്പിന്റെ സാധാരണഗതിയിലുള്ള പ്രയാണം നിയന്ത്രിക്കുന്നതിനുള്ള EXIT
, CYCLE
നിർദ്ദേശങ്ങൾSELECT
. . . CASE
നിർദ്ദേശങ്ങൾമുൻകാല ഫോർട്രാൻ മാനകനവീകരണങ്ങളിൽ നിന്ന് വ്യത്യസ്തമായി, നിലനിന്നിരുന്ന പതിപ്പിലെ സവിശേഷതകൾ ഒന്നുംതന്നെ ഫോർട്രാൻ 90-ൽ ഒഴിവാക്കിയില്ല. (മാനകപ്രമാണത്തിന്റെ ബി.1 അനുബന്ധത്തിൽ "ഈ മാനകരൂപമനുസരിച്ച് നീക്കം ചെയ്യപ്പെട്ട സവിശേഷതകൾ ഒന്നുമില്ല" എന്ന് പ്രസ്താവിച്ചിട്ടുണ്ട്.). അതായത് ഫോർട്രാൻ 77 മാനകരൂപമനുസരിച്ചുള്ള ഏതൊരു പ്രോഗ്രാമും ഫോർട്രാൻ 90 മാനകവും അനുസരിക്കുന്നു എന്നു ചുരുക്കം.
എന്നാൽ ചുരുക്കം ചില സവിശേഷതകൾ കാലഹരണപ്പെട്ടതാണെന്നും അവ ഭാവിമാനകങ്ങളിൽ ഒഴിവാക്കപ്പെടുമെന്നും കരുതുന്നു.
കാലഹരണപ്പെട്ട സവിശേഷത | ഉദാഹരണം | നില / ഫോർട്രാൻ 95-ൽ സംഭവിച്ചത് |
---|---|---|
ഗണിതപരമായ (അരിത്മെറ്റിക്) IF നിർദ്ദേശം | IF (X) 10, 20, 30 |
|
DO നിർദ്ദേശത്തിന്റെ പൂർണ്ണസംഖ്യയല്ലാത്ത പരാമീറ്ററുകളും നിയന്ത്രണചരങ്ങളും | DO 9 X= 1.7, 1.6, -0.1 |
നീക്കം ചെയ്തു |
ഒന്നിലധികം DO ലൂപ്പുകൾ ഒരേ വരിയിൽ അവസാനിക്കുക, END DO, CONTINUE എന്നിവയല്ലാതെയുള്ള നിർദ്ദേശങ്ങൾ വഴിയുള്ള DO ലൂപ്പിന്റെ പൂർത്തീകരണം |
DO 9 J= 1, 10
|
|
END IF നിർദ്ദേശത്തിന്റെ വരിയിലേക്ക് ആ ഖണ്ഡത്തിന് പുറത്തുനിന്നുള്ള തിരിച്ചുവിടൽ |
66 GO TO 77 ; . . .
|
നീക്കം ചെയ്തു |
സബ്റുട്ടീൻ വിളിച്ചയിടത്തേക്കല്ലാതെ മറ്റു പ്രോഗ്രാം ഭാഗങ്ങളിലേക്ക് തിരിച്ചെത്തൽ (Alternate return) | CALL SUBR( X, Y *100, *200 ) |
|
PAUSE നിർദ്ദേശം | PAUSE 600 |
നീക്കം ചെയ്തു |
ASSIGN നിർദ്ദേശവും അസൈൻഡ് GO TO നിർദ്ദേശവും |
100 . . .
|
നീക്കം ചെയ്തു |
ഫോർമാറ്റ് കുറിപ്പുകൾ ആരോപിക്കൽ | ASSIGN F TO 100 PRINT F, NUM |
നീക്കം ചെയ്തു |
H എന്ന ഹോളറിത്ത് എഡിറ്റ് ഡിസ്ക്രിപ്റ്റർ | 100 FORMAT ( 9H1GOODBYE. ) |
നീക്കം ചെയ്തു |
കമ്പ്യൂട്ടെഡ് GO TO നിർദ്ദേശം | GO TO (10, 20, 30, 40), index |
(കാലഹരണപ്പെട്ടു) |
നിർദ്ദേശരൂപത്തിലുള്ള ഫങ്ഷനുകൾ | FOIL( X, Y )= X**2 + 2*X*Y + Y**2 |
(കാലഹരണപ്പെട്ടു) |
നിർവഹണനിർദ്ദേശങ്ങൾക്കിടയിലെ (executable statements) DATA നിർദ്ദേശങ്ങൾ |
X= 27.3
|
(കാലഹരണപ്പെട്ടു) |
CHARACTER നിർവചനത്തിനുപയോഗിക്കുന്ന CHARACTER* രൂപം | CHARACTER*8 STRING |
(കാലഹരണപ്പെട്ടു) |
ക്യാരക്റ്റർ നീളം അനിശ്ചിതമായി പ്രസ്താവിക്കുന്ന ഫങ്ഷനുകൾ | CHARACTER*(*) STRING |
(കാലഹരണപ്പെട്ടു)[18] |
ദൃഢവിന്യാസത്തിലുള്ള സോഴ്സ് കോഡ് | ഒന്നാം നിരയിൽ *, !, C എന്നിവയിലേതെങ്കിലും വന്നാൽ അഭിപ്രായമായി കണക്കാക്കുക. ആറാം നിര, വരിയുടെ തുടർച്ചയെ സൂചിപ്പിക്കാനുപയോഗിക്കുക. തുടങ്ങിയവ |
program helloworld
print *, "Hello, world."
end program helloworld
പ്രധാനമായും ഫോർട്രാൻ 90 മാനകരൂപത്തിൽ നിലനിന്നിരുന്ന ചില തകരാറുകൾ പരിഹരിച്ചുകൊണ്ടുള്ള നിസ്സാരമായ പതിപ്പായിരുന്നു ഫോർട്രാൻ 95. ഇതിനുപുറമേ കുറേ കൂട്ടിച്ചേർക്കലുകളും ഈ മാനകത്തിൽ വരുത്തിയിട്ടുണ്ട്. ഇവയിൽ ഹൈ പെർഫോമൻസ് ഫോർട്രാനിൽ നിന്നുൾക്കൊണ്ട സവിശേഷതകൾ ശ്രദ്ധേയമാണ്.
FORALL
, WHERE
എന്നീ പ്രോഗ്രാംഘടകങ്ങളും അതിലെ നെസ്റ്റിങ് സൗകര്യവും.PURE
, ELEMENTAL
പ്രൊസീജ്യറുകൾ. ഇത്തരം പ്രോസീജ്യറുകൾ സമാന്തര പ്രോസസിങ്ങിന് സഹായകമാണ്.[19]ALLOCATABLE
ഉപയോഗിച്ച് നിർവചിക്കുന്നതും ആവശ്യാനുസാരണം വലിപ്പം നിർണ്ണയിക്കാവുന്നതുമായ അരേകൾ ഉപയോഗിച്ച മെമ്മറി, അവയുടെ പ്രഭാവപരിധിക്കുശേഷം (scope) തനിയേ സ്വതന്ത്രമാക്കപ്പെടുന്നു.ഫോർട്രാൻ ഭാഷയിലെ നിരവധി ആന്തരികഫങ്ഷനുകൾ ഈ മാനകത്തിൽ വിപുലീകരിക്കപ്പെട്ടിട്ടുണ്ട്. ഉദാഹരണമായി അരേയിലെ ഏറ്റവും വലിയ അംഗത്തെ കണ്ടെത്തുന്നതിനുള്ള maxloc
എന്ന ആന്തരികഫങ്ഷനെ നിയന്ത്രിക്കുന്നതിനായി dim
എന്ന ആർഗ്യുമെന്റ് കൂട്ടിച്ചേർത്തു.
ഫോർട്രാൻ 90-ൽ കാലഹരണപ്പെട്ടതായി കണക്കാക്കിയ പല സൗകര്യങ്ങളും ഫോർട്രാൻ 95ൽ ഒഴിവാക്കപ്പെട്ടു. ഉദാഹരണങ്ങൾ:
DO
നിർദ്ദേശത്തോടൊപ്പമുള്ള REAL
, DOUBLE PRECISION
ചരങ്ങളുടെ ഉപയോഗംEND IF
നിർദ്ദേശത്തിന്റെ വരിയിലേക്ക് അതിന്റെ ഖണ്ഡത്തിനു പുറത്തുനിന്നുള്ള തിരിച്ചുവിടൽPAUSE
നിർദ്ദേശംASSIGN
, അസൈൻഡ് GOTO
നിർദ്ദേശങ്ങൾ, ഫോർമാറ്റ് വിവരണങ്ങളുടെ ആരോപണംH
എന്ന എഡിറ്റ് സൂചകം.ഫോർട്രാൻ 95-ന്റെ ഒരു പ്രധാനപ്പെട്ട അനുബന്ധമാണ്, ഐ.എസ്.ഓയുടെ സാങ്കേതികറിപ്പോർട്ടായ ടി.ആർ.-15581 എൻഹാൻസ്ഡ് ഡാറ്റാടൈപ്പ് ഫെസിലിറ്റീസ്; അനൗദ്യോഗികമായി ഇത് അലോക്കേറ്റബിൾ ടി.ആർ. എന്നറിയപ്പെടുന്നു. ഈ നിർദ്ദേശപ്രമാണത്തിൽ ALLOCATABLE
ഉപയോഗിച്ചുള്ള അരേകളുടെ വിപുലമായ ഉപയോഗം ഫോർട്രാൻ 2003 അനുരൂപ കമ്പൈലറുകളുടെ ആവിർഭാവത്തിനു മുമ്പുതന്നെ നിർവചിച്ചിരുന്നു. ഡിറൈവ്ഡ് ഡാറ്റാടൈപ്പുകളുടെ ഘടകമായും പ്രോസീജ്യർ ഡമ്മി ആർഗ്യുമെന്റ് ലിസ്റ്റുകളായും ഫങ്ഷൻ ഫലങ്ങളായും ഉള്ള ALLOCATABLE
അരേകളുടെ ഉപയോഗങ്ങൾ ഉദാഹരണങ്ങളാണ്. ഫോർട്രാൻ 95 മാനകപ്രമാണമനുസരിച്ച് പ്രഭാവപരിധി കഴിഞ്ഞാൽ അലോക്കേറ്റബിൾ അരേകൾ സ്വയം സ്വതന്ത്രമാകുമെന്നതിനാൽ മെമ്മറി പാഴാകൽ സാധ്യത ഒഴിവാകുന്നു. ഇക്കാരണത്താൽ ഇവ പോയിന്റർ ആധാരമാക്കിയുള്ള അരേകളേക്കാൾ മെച്ചപ്പെട്ടതുമാണ്. അരേകളെ വിളിക്കുമ്പോൾ പോയിന്ററുകളിലെപ്പോലെ അലിയാസിങ് ഒരു പ്രശ്നമല്ലാത്തതിനാൽ കമ്പൈലറുകൾക്ക് കൂടുതൽ വേഗതയേറിയ കോഡ് നിർമ്മിക്കാൻ സാധിക്കുന്നു എന്നതും ഈ രീതിയുടെ മറ്റൊരു മേന്മയാണ്.
ഫോർട്രാൻ 95-ന്റെ മറ്റൊരു പ്രധാന അനുബന്ധമാണ് ഐ.എസ്.ഒയുടെ ടി.ആർ.-15580: ഫ്ലോട്ടിങ്-പോയിന്റ് എക്സെപ്ഷൻ ഹാൻഡ്ലിങ് എന്ന സാങ്കേതികറിപ്പോർട്ട്. ഐട്രിപ്പിൾഇ ടി.ആർ. (IEEE TR) എന്ന് ഇത് അനൗദ്യോഗികമായി അറിയപ്പെടുന്നു. ഐട്രിപ്പിൾഇ ഫ്ലോട്ടിങ്-പോയിന്റ് ക്രിയകളും ഫ്ലോട്ടിങ്-പോയിന്റ് എക്സെപ്ഷൻ കൈകാര്യം ചെയ്യലുമാണ് ഈ പ്രമാണത്തിൽ നിർവചിച്ചിരിക്കുന്നത്.
ഐ.എസ്.ഒ./ഐ.ഇ.സി. 1539-1: 1997 നിർവചനപ്രകാരമുള്ള നിർബന്ധമായും നടപ്പിലാക്കേണ്ടുന്ന "ആധാരഭാഷ"ക്കുപുറമേ താഴെക്കാണുന്ന രണ്ട് ഐച്ഛികഘടകങ്ങളും ഫോർട്രാൻ 95-നുണ്ട്:
ഇവയെല്ലാം ചേർന്നതാണ് ഫോർട്രാൻ 95-ന്റെ ഐ.എസ്.ഒ./ഐ.ഇ.സി. 1539 എന്ന സമസ്ത അന്താരാഷ്ട്രമാനകം. മാനകകർത്താക്കളുടെ അഭിപ്രായപ്രകാരം, നിരവധി ഉപയോക്താക്കളും കമ്പൈലർ നിർമ്മാതാക്കളുടെയും ആവശ്യപ്രകാരമുള്ള സ്വയംപര്യാപ്തമായ സവിശേഷതകളാണ് ഈ ഐച്ഛികഘടകങ്ങളിലുള്ളത്. പക്ഷേ എല്ലാ മാനക ഫോർട്രാൻ കമ്പൈലറുകളിലും ഉൾപ്പെടുത്താനുള്ള അവശ്യം സാമാന്യസ്വഭാവം ഇവക്കില്ല. എന്നിരുന്നാലും ഏതെങ്കിലും മാനകഫോർട്രാൻ കമ്പൈലർ ഈ സൗകര്യങ്ങൾ ലഭ്യമാക്കുന്നുണ്ടെങ്കിൽ അവ മാനകപ്രമാണത്തിലെ ബന്ധപ്പെട്ട ഭാഗത്ത് വിശദീകരിച്ചിരിക്കുന്ന രീതിയിലായിരിക്കണം.
നിരവധി പുതിയ സവിശേഷതകൾ ഉൾക്കൊള്ളിച്ചുകൊണ്ടുള്ള മുഖ്യമായ ഒരു പതിപ്പുതന്നെയായിരുന്നു ഫോർട്രാൻ 2003.[20] പ്രധാനപ്പെട്ട സവിശേഷതകൾ താഴെക്കൊടുത്തിരിക്കുന്നു:
VOLATILE
ആട്രിബ്യൂട്ട്, അരേ കൺസ്ട്രക്റ്ററുകളിലും അലോക്കേറ്റ് നിർദ്ദേശങ്ങളിലും പ്രത്യേകം ടൈപ്പ് നൽകാനുള്ള സൗകര്യം, പോയിന്ററുകളിലെ മെച്ചപ്പെടുത്തലുകൾ, ആന്തരിക പ്രൊസീജ്യറുകളുടെ നവീകരണം.FLUSH
നിർദ്ദേശം, കീവേഡുകളുടെ ചിട്ടപ്പെടുത്തൽഫോർട്രാൻ 2003-ന്റെ ഒരു പ്രധാന അനുബന്ധമാണ്, ഐ.എസ്.ഒയുടെ ടി.ആർ.-19767: എൻഹാൻസ്ഡ് മൊഡ്യൂൾ ഫെസിലിറ്റീസ് ഇൻ ഫോർട്രാൻ എന്ന ടെക്നിക്കൽ റിപ്പോർട്ട്. ഫോർട്രാൻ പ്രോഗ്രാം ഘടകങ്ങളെ, മൊഡ്യുള-2 മൊഡ്യൂളുകളോട് സാമ്യമുള്ള ഉപഘടകങ്ങളാക്കി മാറ്റുന്നതിനുള്ള നിർദ്ദേശമാണ് ഇതിലുൾക്കൊള്ളുന്നത്. ഈ ഉപഘടകങ്ങൾ അഡ പ്രോഗ്രാമിങ് ഭാഷയിലെ പ്രൈവറ്റ് ചൈൽഡ് സബ്യൂണിറ്റുകൾക്ക് സമാനമാണ്. ഇതുവഴി മൊഡ്യൂളുകളുടെ വിവരണവും സാക്ഷാത്കാരവും പ്രത്യേകം പ്രത്യേകം പ്രോഗ്രാംഖണ്ഡങ്ങളാക്കി മാറ്റാൻ സാധിക്കുകയും അതുവഴി വലിയ ലൈബ്രറികളുടെ പാക്കേജിങ് എളുപ്പമാകുകയും ചെയ്യുന്നു. മാത്രമല്ല മൊഡ്യൂളുകളുടെ വിവരണവും ഇന്റർഫേസുമടങ്ങിയ ഉപമോഡ്യൂൾ മാത്രം പ്രസിദ്ധപ്പെടുത്താനും അവയുടെ സാക്ഷാത്കാരം അടങ്ങുന്ന ഉപഘടകം ഒളിപ്പിച്ചുവെച്ച് വാണിജ്യരഹസ്യങ്ങൾ സൂക്ഷിക്കാൻ സഹായകമാകുന്നു. പ്രോഗ്രാം എഴുതി കമ്പൈൽ ചെയ്യുന്ന സമയത്ത് മാറ്റം വന്ന മൊഡ്യൂളുകൾ മാത്രം കമ്പൈൽ ചെയ്താൽ മതിയെന്നുള്ളതുകൊണ്ട് കമ്പൈലിങ് പ്രക്രിയയും വേഗത്തിൽ പൂർത്തിയാകുന്നു.[21]
ഫോർട്രാന്റെ ഏറ്റവും പുതിയ മാനകരൂപമാണ് ഫോർട്രാൻ 2008 എന്ന് അനൗദ്യോഗികമായി അറിയപ്പെടുന്ന ഐ.എസ്.ഒ./ഐ.ഇ.സി. 1539-1:2010. ഇത് അംഗീകരിക്കപ്പെട്ടത് 2010 സെപ്റ്റംബറിലാണ്.[22] ഫോർട്രാൻ 2003-ലെ ചില സവിശേഷതകൾക്ക് വ്യക്തത നൽകിയും നിസ്സാരം ചില പുതിയ സൗകര്യങ്ങൾ ഉൾപ്പെടുത്തിയും കൊണ്ടുള്ള ഈ പതിപ്പ് ഫോർട്രാൻ 2003-മായി താരതമ്യപ്പെടുത്തിയാൽ ചെറിയൊരു നവീകരണം മാത്രമാണ്. പുതിയ സവിശേഷതകളിൽച്ചിലത് താഴെപ്പറയുന്നു:[൧]
ഫോർട്രാനും സിയുമായി കൂടുതൽ യോജിച്ചപ്രവർത്തനത്തിനുവേണ്ടിയുള്ള ഐ.എസ്.ഒയുടെ സാങ്കേതികനിർദ്ദേശമായ ടി.എസ്. 29113 ഈ മാനകത്തിന്റെ ഒരു പ്രധാന അനുബന്ധമാണ്.[25][26] ഇതിന്റെ കരട് 2012 മേയ് മാസത്തിൽ അംഗീകാരത്തിനായി സമർപ്പിച്ചിട്ടുണ്ട്.
അരനൂറ്റാണ്ടിലധികമായി ഉപയോഗത്തിലിക്കുന്നതിനാൽ ഫോർട്രാനിൽ തയ്യാറാക്കിയ അനേകം പ്രോഗ്രാമുകൾ ശാസ്ത്ര-സാങ്കേതികരംഗത്ത് ഇപ്പോഴും സ്ഥിരമായി ഉപയോഗിക്കപ്പെട്ടുവരുന്നു. കാലാവസ്ഥാപ്രവചനം-മോഡലിങ്, കമ്പ്യൂട്ടേഷണൽ ഫ്ലൂയിഡ് ഡൈനമിക്സ്, കമ്പ്യൂട്ടേഷണൽ കെമിസ്ട്രി, കമ്പ്യൂട്ടേഷണൽ എക്കണോമിക്സ്, സങ്കരയിനം മൃഗങ്ങളുടെയും സസ്യങ്ങളുടെയും തയ്യാറാക്കൽ, കമ്പ്യൂട്ടേഷണൽ ഫിസിക്സ് തുടങ്ങിയ അതിതീക്ഷ്ണമായ സൂപ്പർകമ്പ്യൂട്ടിങ് ആവശ്യങ്ങൾക്ക് ഉപയോഗിക്കുന്ന പ്രഥമ പ്രോഗ്രാമിങ് ഭാഷയാണ് ഫോർട്രാൻ. ആദ്യകാലംമുതലേ പുതിയ കമ്പ്യൂട്ടർ പ്രോസസറുകളുടെ പ്രവർത്തനമികവ് കണക്കാക്കുന്നതിനുള്ള ഫ്ലോട്ടിങ്-പോയിന്റ് ബെഞ്ച്മാർക്ക് പ്രോഗ്രാമുകൾ ഫോർട്രാനിലാണ് എഴുതാറുള്ളത്. അരനൂറ്റാണ്ടിനുശേഷം ഇന്നും ഇത് തുടരുന്നു. (ഉദാരഹണമായി എസ്.ഇ.പി.സിയുടെ സി.പി.യു.2006 ബെഞ്ച്മാർക്കിലെ സി.എഫ്.പി.2006 എന്ന ഫ്ലോട്ടിങ്-പോയിന്റ് ഘടകം കാണുക)
ഫോർട്രാന്റെ ആദ്യകാലങ്ങളിൽ പോർട്ടബിലിറ്റി അഥവാ വഹനീയത ഒരു പ്രധാനപ്രശ്നമായിരുന്നു. പരസ്പരം അംഗീകരിക്കപ്പെട്ട ഒരു മാനകരൂപത്തിന്റെ അഭാവത്തിൽ (ഐ.ബി.എമ്മിനു പോലും അന്നൊരു റെഫറൻസ് മാനുവൽ ഉണ്ടായിരുന്നില്ല) വിവിധ കമ്പ്യൂട്ടർ കമ്പനികൾ അവരവരുടെ കമ്പൈലറുകളിൽ പരസ്പരാനുരൂപമല്ലാത്ത പുതിയപുതിയ സവിശേഷതകൾ കൂട്ടിച്ചേർത്ത് മൽസരിക്കുകയും ചെയ്തു.
മാനകങ്ങളുടെ ആവിർഭാവത്തോടെ വഹനീയത ഗണ്യമായി മെച്ചപ്പെട്ടു. 1966-ലെ മാനകരൂപത്തിൽ വാക്യഘടനയിലും സെമാന്റിക്സിലും ഐക്യരൂപം നിർദ്ദേശിക്കപ്പെട്ടെങ്കിലും നിർമ്മാതാക്കൾ പരസ്പരാനുരൂപമല്ലാത്ത സവിശേഷതകൾ ചേർത്ത് കമ്പൈലറുകൾ പുറത്തിറക്കുന്നത് തുടർന്നുപോന്നു. മാനദണ്ഡപ്രകാരമല്ലാത്ത സവിശേഷതകൾ പ്രോഗ്രാമുകളിൽ ഉപയോഗപ്പെടുത്തുന്നതുവഴി വഹനീയതാപ്രശ്നങ്ങൾ അഭിമുഖീകരിക്കേണ്ടിവരുമെന്ന് ശ്രദ്ധാലുക്കളായ പ്രോഗ്രാമർമാർ മനസ്സിലാക്കുകയും, പ്രോഗ്രാമുകളുടെ വഹനീയത പരിശോധിക്കുന്നതിനുള്ള പിഫോർട്ട് വെരിഫയർ[27] പോലുള്ള പ്രോഗ്രാമുകൾ അവർ ഉപയോഗിക്കാനാരംഭിക്കുകയും ചെയ്തു. 1977-ൽ അമേരിക്കയിലെ നാഷണൽ ബ്യൂറോ ഓഫ് സ്റ്റാൻഡേഡ്സ് (ഇന്നത്തെ നാഷണൽ ഇൻസ്റ്റിറ്റ്യൂട്ട് ഓഫ് സ്റ്റാൻഡേഡ്സ് ആൻഡ് ടെക്നോളജി) ഫിപ്സ് പബ് 69 എന്നൊരു മാനകം പുറത്തിറക്കുകയും യു.സ്. സർക്കാർ ഉപയോഗിക്കുന്ന ഫോർട്രാൻ കോഡും കമ്പൈലറുകളും അവയുടെ ചേർപ്പുകളടക്കം ഈ മാനദണ്ഡം പാലിക്കണമെന്ന് നിഷ്കർഷിക്കുകയും ചെയ്തത് ഈ രംഗത്തെ മികച്ച കാൽവെപ്പായിരുന്നു. ഇതോടെ മിക്ക കമ്പൈലറുകൾക്കും അവയുടെ എക്സ്റ്റൻഷനുകൾ, മാനകങ്ങൾക്കനുസരിച്ചാണോ എന്നു പരിശോധിക്കാനുള്ള സൗകര്യം ലഭ്യമായി.
മാനദണ്ഡങ്ങൾക്കനുരൂപമല്ലാത്ത ചേർപ്പുകൾ മാത്രമായിരുന്നില്ല, മെഷീൻ ആശ്രിതമായ ഗണിതക്രിയകളും ഒരു പ്രധാന വഹനീയതാപ്രശ്നമായിരുന്നു. ഫോർട്രാൻ 66 മാനകമനുസരിച്ചുള്ള പി.എ. ഫോക്സിന്റെയും കുട്ടരുടേയും പോർട്ട് ലൈബ്രറി ഇതിനൊരു പരിഹാരമായിരുന്നു. ഇതിലവതരിപ്പിക്കപ്പെട്ട ആശയങ്ങൾ പിന്നീട് വ്യാപകമായി ഉപയോഗിക്കപ്പെടുകയും, 1990 ലെ ഫോർട്രാൻ മാനകത്തിൽ ആന്തരിക ഇൻക്വയറി ഫങ്ഷനുകളായി ഉൾപ്പെടുത്തപ്പെടുകയും ചെയ്തു. ബൈനറി ഫ്ലോട്ടിങ്-പോയിന്റ് ക്രിയകൾക്കായി ഇന്ന് സർവവ്യാപിയായി ഉപയോഗിക്കപ്പെടുന്ന ഐട്രിപ്പിൾഇ 754 മാനകരൂപത്തിന്റെ സ്വാംശീകരണത്തോടെ ഈ പ്രശ്നം ഗണ്യമായി പരിഹരിക്കപ്പെട്ടു.
പ്രോഗ്രാമിന്റെ കമാൻഡ്ലൈൻ (അതായത് പ്രോഗ്രാം പ്രവർത്തിപ്പിക്കാൻ നൽകുന്ന നിർദ്ദേശത്തോടൊപ്പം നൽകുന്ന ആർഗ്യുമെന്റുകളും മറ്റും), എൻവയോൺമെന്റ് ചരങ്ങൾ, എറർ നിലകളെക്കുറിച്ചുള്ള വിശദീകരണങ്ങൾ തുടങ്ങിയ കമ്പ്യൂട്ടിങ്/ഓപ്പറേറ്റിങ് സിസ്റ്റം പരിതഃസ്ഥിതികൾ പ്രോഗ്രാമിനകത്ത് ലഭ്യമാകുക എന്നതും 2003-ലെ മാനകരൂപത്തിൽ പരിഗണിക്കപ്പെടും വരെ പ്രശ്നമായിത്തുടർന്നിരുന്നു.
സിയിൽ എഴുതപ്പെട്ടിട്ടുള്ളതും ശാസ്ത്രസാങ്കേതിക കണക്കുകൂട്ടലുകളുമായി കാര്യമായ ബന്ധമില്ലാത്തതുമായ വലിയ ലൈബ്രറികൾ (ഉദാഹരണമായി ഗ്രാഫിക്സ് ലൈബ്രറികൾ) ഫോർട്രാൻ പ്രോഗ്രാമുകൾക്ക് ലഭ്യമാക്കുന്നതുമായി വഹനീയതാപ്രശ്നം നിലനിന്നിരുന്നു. ഈ പ്രശ്നം പരിഹരിക്കുന്നതിന് സിയുമായി യോജിച്ചുപ്രവർത്തിക്കുന്നതിനുള്ള ഘടകങ്ങൾ ഫോർട്രാൻ 2003 മാനകത്തിൽ ഉൾപ്പെടുത്തി.
ഇന്നത്തെ അവസ്ഥയിൽ പ്രീപ്രോസസറുകളുടെയും മറ്റും സഹായമില്ലാതെ, തികച്ചും വഹനീയമായ ഫോർട്രാൻ പ്രോഗ്രം നിർമ്മിക്കുക എന്നത് താരതമ്യേന എളുപ്പമുള്ള കാര്യമാണ്.
1970-കളുടെ അവസാനും 80-കളുടെ തുടക്കത്തിലുമായി, ഡേറ്റ ജനറൽ കോർപ്പറേഷൻ, അവരുടെ നോവ, എക്ലിപ്സ്, എം.വി. ശ്രേണിയിലുള്ള കമ്പ്യൂട്ടറുകൾക്കുവേണ്ടി വിപണിയിലിറക്കിയ പ്രോഗ്രാമിങ് ഭാഷയായിരുന്നു ഫോർട്രാൻ 5. അക്കാലത്തെ മിനി കമ്പ്യൂട്ടറുകൾക്ക് യോജിച്ച ഒപ്റ്റിമൈസിങ് കമ്പൈലർ ഇതിനുണ്ടായിരുന്നു. ഫോർട്രാൻ 66 മാനകവുമായി ഏറെ സാമ്യമുള്ള ഭാഷയായിരുന്നു ഇത്. ഫോർട്രാൻ നാലാം പതിപ്പിന്റെ തുടർച്ചയെന്ന് തെറ്റിദ്ധരിപ്പിക്കുന്ന പേരാണ് ഇതിനുള്ളത്.
സി.ഡി.സി. 6600 ശ്രേണിയിലുള്ള കമ്പ്യൂട്ടറുകൾക്കായി കൺട്രോൾ ഡേറ്റ കോർപ്പറേഷൻ 1968-ൽ വിതരണം ചെയ്തതാണ് ഫോർട്രാൻ V. ഫോർട്രാൻ IV അടിസ്ഥാനമാക്കിയുള്ള ഭാഷയായിരുന്നു ഇത്.[28]
ഫോർട്രാൻ V എന്ന പേരിൽ 1100 ശ്രേണിയിലുള്ള കമ്പ്യൂട്ടറുകൾക്കായി യൂനിവാക്കും ഒരു കമ്പൈലർ പുറത്തിറക്കിയിരുന്നു. ഇതിന്റെതന്നെ ബ്രാൻഡ് ചെയ്ത പേരാണ് അഥീന ഫോർട്രാൻ
ഫോർട്രാൻ 6 അഥവാ വിഷ്വൽ ഫോർട്രാൻ 2001 മൈക്രോസോഫ്റ്റ് വികസിപ്പിച്ച് കോംപാക്കിന് വിപണനാനുമതി നൽകിയ ഒരു ഫോർട്രാൻ വകഭേദമാണ്. കോംപാക് വിഷ്വൽ ഫോർട്രാൻ എന്ന പേരിലിറക്കിയ ഈ ഉൽപ്പന്നത്തിന്റെ 6, 6.1 പതിപ്പുകൾക്ക് വിഷ്വൽ സ്റ്റുഡിയോ 5-ന്റെ സംയോജിതസമ്പർക്കമുഖമാണ് ഉപയോഗിച്ചിരുന്നത്.[29]
ശാസ്ത്രീയാവശ്യങ്ങൾക്കുള്ള അതീവശേഷിയുള്ള കമ്പ്യൂട്ടറുകളുടെ നിർമ്മാതാക്കൾ (ഉദാഹരണമായി, ബറോസ്, സി.ഡി.സി., ക്രേ, ഹണിവെൽ, ഐ.ബി.എം., ടെക്സസ് ഇൻസ്ട്രുമെന്റ്സ്, യൂനിവാക്) ഇൻസ്ട്രക്ഷൻ കാഷി, സി.പി.യു. പൈപ്പ്ലൈനിങ്, വെക്റ്റർ അരേകൾ തുടങ്ങിയ അവരുടെ പ്രത്യേക ഹാർഡ്വെയർ സവിശേഷതകൾ പൂർണ്ണമായി ഉപയോഗപ്പെടുത്തുന്നതിനായി അവശ്യമായ ചേർപ്പുകൾ ഫോർട്രാനിൽ ഉൾപ്പെടുത്തുന്നു. ഉദാഹരണത്തിന് ഐ.ബി.എമ്മിന്റെ ഒരു ഫോർട്രാൻ കമ്പൈലറിൽ (എച്ച്. എക്സ്റ്റെൻഡെഡ് ഐ.യു.പി.), പ്രോസസറിലുള്ള അനേകം ഗണിതക്രിയാവിഭാഗങ്ങളെ ഒരുമിച്ച് പ്രവർത്തനനിരതമാക്കിവെക്കുന്നതിനായി മെഷീൻകോഡ് നിർദ്ദേശങ്ങളെ ക്രമീകരിക്കുന്നതിനുള്ള ഒരു ഒപ്റ്റിമൈസേഷൻ നിലയുണ്ട്. നാസയുടെ ഏംസ് ഗവേഷണകേന്ദ്രത്തിൽ പ്രവർത്തിക്കുന്ന ഇല്ലിയാക് IV സൂപ്പർകമ്പ്യൂട്ടറിനുവേണ്ടി പ്രത്യേകം തയ്യാറാക്കിയ ഫോർട്രാൻ വകഭേദമായ സി.എഫ്.ഡി. ഇതുപോലെയുള്ള മറ്റൊന്നാണ്. സദിശങ്ങളെയും മാട്രിക്സുകളുടെയും സംസ്കരണത്തിന് വേണ്ടി ഐ.ബി.എം. റിസേർച്ച് ലാബ്സ് വികസിപ്പിച്ച ഫോർട്രാൻ ആധാരമാക്കി വിപുലീകരിച്ച ഭാഷയാണ് വെക്ട്രാൻ.
ഒബ്ജക്റ്റ് ഓറിയെന്റഡ് ഫോർട്രാൻ, ഫോർട്രാന്റെ ഒരു ഓബ്ജ്ക്റ്റ് ഓറിയെന്റഡ് വകഭേദമാണ്. ഡേറ്റാഘടകങ്ങളെ ഒബ്ജക്റ്റുകളായി യോജിപ്പിക്കാനും ഇത്തരം ഒബ്ജക്റ്റുകളെ സമാന്തരമായി ഇൻസ്റ്റൻഷ്യേറ്റ് ചെയ്യാനും പ്രവർത്തിപ്പിക്കാനും ഇതിൽ സാധിക്കും. ഈ വകഭേദം സൺ, ഐറിസ്, ഐ.പി.എസ്.സി., എൻക്യൂബ് എന്നീ കമ്പ്യൂട്ടറുകൾക്കായി ലഭ്യമാണെങ്കിലും നിലവിൽ വികസനപിന്തുണയില്ല.
ഇത്തരം യന്ത്രബന്ധിത വകഭേദങ്ങൾ കാലാന്തരത്തിൽ മറയുകയോ അവയുടെ സവിശേഷതകൾ പ്രധാനമാനകത്തിൽ ഉൾപ്പെടുത്തപ്പെടുകയോ ചെയ്യപ്പെട്ടു. ഷെയേഡ് മെമ്മറി പ്രോഗ്രാമിങ്ങിനു വേണ്ടിയുള്ള ഓപ്പൺ എം.പി., ഇത്തരത്തിൽ നിലവിലുള്ള വകഭേദങ്ങളിൽ പ്രധാനപ്പെട്ടതാണ്. സമാന്തരപ്രോസസിങ്ങിനെ പിന്തുണണണകുന്നതിനുള്ള കോ അരേ ഫോർട്രാൻ പുതിയൊരു വകഭേദമാണ്.
ഐ.ബി.എം. 704 കമ്പ്യൂട്ടറിനുവേണ്ടിയുള്ള ഫോർട്രാൻ ഭാഷയുടെ ഒരു ചുരുക്കിയ പതിപ്പായിരുന്നു ഫോർ ട്രാൻസിറ്റ് (FOR TRANSIT). ഐ.ബി.എം. 650 കമ്പ്യൂട്ടറിൽ ഉൾപ്പെടുത്തിയിരുന്ന ഇത്, 1950-കളുടെ അവസാനം, കാർനെയ്ജ് ഇൻസ്റ്റിറ്റ്യൂട്ട് ഓഫ് ടെക്നോളജിയിൽ വികസിപ്പിച്ചെടുത്ത ഒരു പ്രോഗ്രാം ഉപയോഗിച്ച് ഇന്റർപ്രെട്ട് ചെയ്താണ് പ്രവർത്തിച്ചിരുന്നത്.[30] സാധാരണ ഫോർട്രാൻ, ഐ.ബി.എം. 650-നെ അപേക്ഷിച്ച് കൂടുതൽ സങ്കീർണ്ണമായ കമ്പ്യൂട്ടറുകൾക്കു വേണ്ടിയുള്ളതാണെന്നും അതിനാൽ ഫോർട്രാനിലുള്ള 32 നിർദ്ദേശങ്ങളിൽ പലതും ഫോർ ട്രാൻസിറ്റിൽ ആവശ്യമില്ലെന്നുമായിരുന്നു ഐ.ബി.എമ്മിന്റെ വിലയിരുത്തൽ. അതുകൊണ്ട് ഫോർ ട്രാൻസിറ്റിലെ ചില നിർദ്ദേശങ്ങൾ ഒഴിവാക്കുകയും ഇതിനുവേണ്ടിയുള്ള പ്രോഗ്രാം എഴുത്തിൽ ചില നിബന്ധനകൾ ഉൾക്കൊള്ളിക്കുകയും ചെയ്തു. എന്നാൽ ഈ നിബന്ധനകളുണ്ടെങ്കിലും ഫോർ ട്രാൻസിറ്റ് പ്രോഗ്രാമുകൾ ഐ.ബി.എം. 704-നുവേണ്ടിയുള്ള ഫോർട്രാന് അനുരൂപവുമായിരുന്നു. [31]
ഫോർ ട്രാൻസിറ്റിൽ അനുവദനീയമായിരുന്ന നിർദ്ദേശങ്ങൾ താഴെപ്പറയുന്നു.
ഒരു ഫോർ ട്രാൻസിറ്റ് പ്രോഗ്രാമിൽ പരമാവധി പത്ത് സബ്റൂട്ടിനുകൾ വരെ ഉപയോഗിക്കാനുമാകും. പ്രോഗ്രാം നിർദ്ദേശങ്ങൾ 7 മുതൽ 56 വരെയുള്ള നിരകളിൽ ഒതുക്കണമെന്ന നിബന്ധനയുമുണ്ട്.
ഐ.ബി.എം. 650 കമ്പ്യൂട്ടറുകളിൽ ഇൻപുട്ടിനും ഔട്ട്പുട്ടിനും പഞ്ച്ഡ് കാർഡുകളായിരുന്നു ഉപയോഗിച്ചിരുന്നത്. 3 ഘട്ടങ്ങളായാണ് ഇതിൽ സോഴ്സ്കോഡ് യന്ത്രഭാഷയായി പരിവർത്തനം ചെയ്തിരുന്നത്: ആദ്യം ഐ.ടി. ഭാഷ എന്ന ഒരു ഇടനിലഭാഷയിലേക്കും തുടർന്ന് സോപ് അസെംബ്ലി ഭാഷയിലേക്കും അവസാനം യന്ത്രഭാഷയിലേക്കും.
ഫോർ ട്രാൻസിറ്റ് I (എസ്), ഫോർ ട്രാൻസിറ്റ് II എന്നീ പേരുകളിലുള്ള രണ്ട് പതിപ്പുകൾ ഇതിനുണ്ടായിരുന്നു. ഇൻഡെക്സിങ് രെജിസ്റ്ററുകളും ഓട്ടോമാറ്റിക് ഫ്ലോട്ടിങ് പോയിന്റ് ഡെസിമൽ (ബൈ-ക്വൈനറി) ക്രിയാശേഷിയും ഉള്ള കമ്പ്യൂട്ടറുകൾക്കാണ് രണ്ടാംപതിപ്പ് ഉപയോഗിച്ചിരുന്നത്.
ഫോർട്രാൻ 77 മാനകത്തിന്റെ ആവിർഭാവത്തിനു മുൻപ്, സൗകര്യപ്രദമായ ഭാഷയിൽ പ്രോഗ്രാം എഴുതാവുന്ന അനേകം പ്രീപ്രോസസറുകളുടെ ഉപയോഗം സാധാരണമായിരുന്നു. ഇത്തരം പ്രോഗ്രാമുകളെ പ്രീപ്രൊസസർ ഉപയോഗിച്ച് സംസ്കരിച്ച് മാനകരൂപത്തിലുള്ള ഏതൊരു ഫോർട്രാൻ കമ്പൈലറിനും പ്രവർത്തിപ്പിക്കാവുന്ന രൂപത്തിലേക്ക് മാറ്റുകയായിരുന്നു പതിവ്. ഈ പ്രീപ്രോസസറുകൾ, ഘടനാപരമായ പ്രോഗ്രാമിങ്, ആറക്ഷരത്തിലധികമുള്ള ചരനാമങ്ങൾ, കൂടുതൽ ഡേറ്റാടൈപ്പുകൾ, കണ്ടീഷണൽ കമ്പൈലേഷൻ തുടങ്ങിയവക്കുപുറമേ മാക്രോ സൗകര്യം പോലും പിന്തുണച്ചിരുന്നു. ഫ്ലെക്സ്, ഇഫ്ട്രാൻ, മോർട്രാൻ, എസ്.എഫ്.ട്രാൻ, എസ്.-ഫോർട്രാൻ, റാറ്റ്ഫോർ, റാറ്റ്ഫൈവ് തുടങ്ങിയവ പേരുകേട്ട പ്രീപ്രോസസറുകളാണ്. ഉദാഹരണത്തിന്, സിയോടു സമാനമായ ഭാഷയിലെഴുതുന്ന പ്രോഗ്രാമാണ് റാറ്റ്ഫോറും റാറ്റ്ഫൈവും പ്രീപ്രോസസ് ചെയ്ത് ഫോർട്രാൻ 66 മാനകരൂപത്തിലേക്ക് മാറ്റിയെടുക്കുന്നത്.
ഫോർട്രാൻ ഭാഷയിൽ നിരവധി മുന്നേറ്റങ്ങൾ വന്നെങ്കിലും കണ്ടീഷണൽ കമ്പൈലിങ്, മാക്രോ സബ്സ്റ്റിറ്റ്യൂഷൻ എന്നീ ആവശ്യങ്ങൾക്ക് ആളുകൾ പ്രീപ്രോസസറുകൾ ഉപയോഗിക്കുന്നത് തുടർന്നുവന്നു. പല ഫോർട്രാൻ കമ്പൈലറുകളിലും സി പ്രീപ്രോസസർ കൂടി ഉൾക്കൊള്ളിച്ചിട്ടുണ്ട്. കണ്ടീഷണൽ കമ്പൈലിങ്ങിനുള്ള ശേഷി, ഫോർട്രാൻ 95 മാനകത്തോടൊപ്പം ഐച്ഛികസവിശേഷതയായി ഉൾപ്പെടുത്തിയിട്ടുണ്ട്; ഇത് കൊക്കോ (CoCo) എന്നപേരിലാണ് സാധാരണ അറിയപ്പെടുന്നത്.
സദിശക്രിയകളും ഡൈനമിക് സ്റ്റോറേജും പോലുള്ള സിസ്റ്റം പ്രോഗ്രാമിങ് പിന്തുണക്കായുള്ള ചേർപ്പുകൾ ഉൾപ്പെടുത്തി ലോറെൻസ് റേഡിയേഷൻ ലബോറട്ടറി വികസിപ്പിച്ച ഒരു പ്രീപ്രോസസറാണ് എൽ.ആർ.എൽ.ട്രാൻ. ഈ പതിപ്പ് എൽ.ടി.എസ്.എസ്. ഓപ്പറേറ്റിങ് സിസ്റ്റത്തോടൊപ്പം വിതരണം ചെയ്തിരുന്നു.
വലിയ ഡിസ്ക്രീറ്റ് വ്യൂഹങ്ങളുടെ മോഡലിങ്ങിനും സിമുലേഷനും വേണ്ടിയുള്ള ഒരു ഫോർട്രാൻ പ്രീപ്രോസസറാണ് സിംസ്ക്രിപ്റ്റ്
ആവർത്തനസ്വഭാവമുള്ളതും ഘടനാപരമല്ലാത്തതും കാലഹരണപ്പെട്ടതുമായ (ഉദാഹരണം EQUIVALENCE
നിർദ്ദേശം) സവിശേഷതകൾ ഒഴിവാക്കുന്നതിനുദ്ദേശിച്ചുള്ള ഫോർട്രാൻ 95-ന്റെ ശുചീകരിച്ച പതിപ്പാണ് എഫ്. ഘടനാപരമായ പ്രോഗ്രാമിങ്ങിനു വേണ്ടി പുതിയ നിർദ്ദേശങ്ങൾ ഫോർട്രാൻ 77, 90 മാനകങ്ങളിൽ ഉൾപ്പെടുത്തിയതിനെത്തുടർന്ന് ഉപയോഗശൂന്യമായ പഴയ നിർദ്ദേശങ്ങൾ എഫ്. ഭാഷയിൽനിന്ന് ഒഴിവാക്കിയിരുന്നു. ഫോർട്രാൻ 90-ൽ ഉൾപ്പെടുത്തിയിരുന്ന അരേ പ്രോഗ്രാമിങ് സവിശേഷതകൾ ഇതിൽ നിലനിർത്തുകയും ചെയ്തു. പ്രത്യേകിച്ചും വിദ്യാഭ്യാസത്തിനും ശാസ്ത്രീയകമ്പ്യൂട്ടിങ്ങിനും അനുയോജ്യമായ കമ്പൈൽഡും ഘടനാപരവുമായ ഒരു അരേ പ്രോഗ്രാമിങ് ഭാഷ എന്നാണ് എഫ്. പ്രോഗ്രാമിങ് ഭാഷയെ അതിന്റെ നിർമ്മാതാക്കൾ നിർവചിക്കുന്നത്.[32]
ഫോർട്രാൻ 90 മാനകത്തിൽ പുതുതായി ഉൾപ്പെടുത്തിയ രണ്ട് സവിശേഷതകളായ ഡൈനമിക് മെമ്മറി അലോക്കേഷനും അരേ ആധാരമാക്കിയുള്ള ക്രിയകളുമാണ് താഴെക്കാണുന്ന പ്രോഗ്രാമിൽ അവതരിപ്പിച്ചിരിക്കുന്നത്. അരേകൾ കൈകാര്യം ചെയ്യുന്നതിൽ DO
ലൂപ്പുകളുടെയും IF
/THEN
നിർദ്ദേശങ്ങളുടെയും അഭാവവും അരേകൾക്ക് മൊത്തത്തിൽ ബാധകമാകുന്ന ഗണിതക്രിയകളും പ്രത്യേകം ശ്രദ്ധിക്കുക. ഇക്കാലത്തെ പ്രോഗ്രാമിങ് ശൈലിയനുസരിച്ചുള്ള വിവരണാത്മകമായ ചരനാമങ്ങളും സാമാന്യമായ പ്രോഗ്രാം രൂപവും ശ്രദ്ധേയമാണ്. നൽകുന്ന സംഖ്യകളുടെ ശരാശരി കണക്കാക്കുന്നതിനുള്ള പ്രോഗ്രാമാണിത്.
program average
! Read in some numbers and take the average
! As written, if there are no data points, an average of zero is returned
! While this may not be desired behavior, it keeps this example simple
implicit none
real, dimension(:), allocatable :: points
integer :: number_of_points
real :: average_points=0., positive_average=0., negative_average=0.
write (*,*) "Input number of points to average:"
read (*,*) number_of_points
allocate (points(number_of_points))
write (*,*) "Enter the points to average:"
read (*,*) points
! Take the average by summing points and dividing by number_of_points
if (number_of_points > 0) average_points = sum(points) / number_of_points
! Now form average over positive and negative points only
if (count(points > 0.) > 0) then
positive_average = sum(points, points > 0.) / count(points > 0.)
end if
if (count(points < 0.) > 0) then
negative_average = sum(points, points < 0.) / count(points < 0.)
end if
deallocate (points)
! Print result to terminal
write (*,'(a,g12.4)') 'Average = ', average_points
write (*,'(a,g12.4)') 'Average of positive points = ', positive_average
write (*,'(a,g12.4)') 'Average of negative points = ', negative_average
end program average
ഫോർട്രാൻ 77 എന്ന പേര് തിരഞ്ഞെടുത്ത സ്റ്റാൻഡേഡ് കമ്മിറ്റി യോഗത്തിൽത്തന്നെ "ലെറ്റർ ഒ കൺസിഡേഡ് ഹാംഫുൾ" (Letter O considered harmful) എന്ന തലക്കെട്ടിൽ ഒരു സാങ്കേതികനിർദ്ദേശം കൂടി പരിഗണിക്കപ്പെട്ടിരുന്നു. ചരനാമങ്ങൾക്കു പേരുനൽകുന്നതിൽ നിന്ന് O എന്ന അക്ഷരത്തെ ഒഴിവാക്കി, ഈ അക്ഷരവും പൂജ്യവും തമ്മിലുള്ള ആശയക്കുഴപ്പത്തെ പരിഹരിക്കാനുദ്ദേശിച്ചുള്ള നിർദ്ദേശമായിരുന്നു ഇത്. എന്നാൽ പ്രോഗ്രാം എഴുതാനുപയോഗിക്കുന്ന അക്ഷരസഞ്ചയത്തിൽനിന്നുതന്നെ O ഒഴിവാക്കുക എന്ന നിർദ്ദേശമായിരുന്നു ഇത്. GO TO
നിർദ്ദേശമൊന്നും ഉപയോഗിക്കാനാവില്ല എന്നതിനാൽ ഇത് ഘടനാപരമായ പ്രോഗ്രാമിങ് രീതിയിലേക്ക് മാറാൻ സഹായിക്കുമെന്നും, പ്രശ്നസങ്കീർണ്ണമായ FORMAT
നിർദ്ദേശത്തെയും പ്രോഗ്രാമിൽ നിന്ന് ഒഴിവാക്കാമെന്നും വിലയിരുത്തപ്പെട്ടിരുന്നു. എന്നാൽ നിലവിലുള്ള പ്രോഗ്രാമുകളെ അസാധുവാക്കുമെന്ന കാരണത്താൽ ഈ നിർദ്ദേശം കണക്കിലെടുക്കാതിരിക്കുകയായിരുന്നു.[33][34]
DO
നിർദ്ദേശത്തിന്റെ പ്രവർത്തനം, കുറഞ്ഞത് എത്ര തവണയായിരിക്കണം എന്നതിനെച്ചൊല്ലിയും ഫോർട്രാൻ 77-ന്റെ മാനകരൂപീകരണസമിതിയിൽ തർക്കങ്ങളുണ്ടായിരുന്നു. കുറഞ്ഞ തവണ പൂജ്യമായിരിക്കണമെന്നും (അതായത് ആ ഖണ്ഡം ഒരിക്കൽപ്പോലും പ്രവർത്തിക്കാതിരിക്കുക) അതല്ല ഒന്നായിരിക്കണമെന്നും (ഒരുതവണയെങ്കിലും നിർബന്ധമായും പ്രവർത്തിക്കും) വാദങ്ങളുണ്ടായിരുന്നു. ഈ വിഷയത്തിൽ ലോറൻ മെയ്സ്നർ മുന്നോട്ടുവച്ച വാദം വളരെ രസകരമായിരുന്നു. ഒറ്റത്തവണ മാത്രം പ്രവർത്തിക്കാനാണെങ്കിൽ ലൂപ്പ് തന്നെ എന്തിനാണെന്നും കുറഞ്ഞ തവണ രണ്ടായിരിക്കണം എന്നുമായിരുന്നു അദ്ദേഹത്തിന്റെ വാദം.
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.