ããã°ã©ãã³ã°äžçã®èèãFORTRANã«ã€ããŠçæéã§åŠã³ããããžãã¹ããŒãœã³ã®çãããå¿ èŠã§ããFORTRANã®äžçã¯ãåãªãå€å žã§ã¯ãããŸããããã®èªçããçŸä»£ã«è³ããŸã§ã®æŽå²ãšç¹åŸŽãåºæ¬çãªã³ãŒãã£ã³ã°æè¡ããå®è·µå¿çšãŸã§ããã®èšèªã®å šè²ã端çã«ç解ããããšã¯ãç§åŠæè¡èšç®ã®ãã£ãŒã«ãã«ããã競äºåãé«ããåºç€ãšãªããŸããããã«ã¯ãç¶ç¶çãªåŠç¿ãšã³ãã¥ããã£ã§ã®æŽ»åãéããŠãšãã¹ããŒããžã®éãåãéãããã®ã¢ããã€ã¹ã玹ä»ã10åã§æŽããã®ã¬ã€ãããFORTRANãšãã貎éãªã¹ãã«ã身ã«ã€ããããžãã¹ã·ãŒã³ã§ã®æ°ããªäžæ©ãèžã¿åºãããã®ãã£ããã«ãªãã°å¹žãã§ãã
1. FORTRANãšã¯ïŒ – ããã°ã©ãã³ã°èšèªã®èµ·æºããç解ãã
FORTRANã¯ãçŸä»£ã®å€ãã®ããã°ã©ãã³ã°èšèªã«å éãã€ãããæ°å€èšç®ãç§åŠæè¡èšç®ã«ç¹åããããã°ã©ãã³ã°èšèªã§ãããã®æŽå²ã¯1950幎代ãŸã§é¡ããããã°ã©ãã³ã°èšèªã®éçºã«ãããŠç»æçãªåœ¹å²ãæãããŸããããã®èšèªã¯ãç¹ã«èšç®ãè€éãªå·¥åŠãç©çåŠã®åéã§å©çšãããŠããŸããã
FORTRANïŒFormula Translationã®ç¥ïŒãšããååã¯ãæ°åŒã®ç¿»èš³ãšããæå³ãæã¡ãæ°åŠçè¡šèšãã³ã³ãã¥ãŒã¿ãç解ã§ãã圢ã«å€æããããšãç®çãšããŠããŸãããã®èšèªã®æ®åã«ãããèšç®æ©ç§åŠã¯é£èºçãªçºå±ãéãã以éã®å€ãã®ããã°ã©ãã³ã°èšèªã®èšèšã«ã倧ããªåœ±é¿ãäžããŸããã
FORTRANã®èªç以æ¥ãæ§ã ãªããŒãžã§ã³ãçºè¡šãããä»æ¥ã«è³ã£ãŠããã®æ°ãã掟ç圢ã䜿çšããç¶ããŠããŸãããã®èšèªã¯ãé«æ§èœãªèšç®æ©èœãšãç 究è ããšã³ãžãã¢ã«ãšã£ãŠèªã¿ãããææ³ãå ŒãåããŠãããããç¹å®ã®å°éåéã§ã®äººæ°ãä¿ã£ãŠããŸãã
1.1 FORTRANã®èªçãšæŽå²
FORTRANã¯1957幎ãIBMã«ãã£ãŠéçºãããäžçåã®é«æ°Žæºããã°ã©ãã³ã°èšèªã§ããåœæã®ããã°ã©ã ã¯äž»ã«ã¢ã»ã³ããªèšèªã§èšè¿°ãããŠãããéåžžã«è€éã§æéããããäœæ¥ã§ãããFORTRANã®ç»å Žã«ãããããæœè±¡çãªèšæ³ã§ããã°ã©ã ãäœæããããšãå¯èœã«ãªããã³ã³ãã¥ãŒã¿ã®å©çšãæ¡å€§ããŸããã
以éãFORTRANã¯å€ãã®ããŒãžã§ã³ã¢ãããçµãŠãFORTRAN 77ãFORTRAN 90ãFORTRAN 95ãFORTRAN 2003ãFORTRAN 2008ãªã©ãããŸããŸãªæ¹åãšæ©èœè¿œå ãè¡ãããŸãããåããŒãžã§ã³ã§ã¯ããŠãŒã¶ããªãã£ã®åäžãæ°ããæ©èœã®å®è£ ãèšèªæšæºã®æŽåãªã©ãçŠç¹ã«ãªã£ãŠããŸãã
ãã®åŸãFORTRANã¯é²åãç¶ããèšç®æ©ã®ã¢ãŒããã¯ãã£ã«åãããŠæé©åããããã©ã¬ã«ã³ã³ãã¥ãŒãã£ã³ã°ã倧èŠæš¡ãªæ°å€èšç®ã«ã察å¿ããŠãããŸãããçŸåšã§ããæ¢åã®ã©ã€ãã©ãªãã³ãŒãã®èç©ãè±å¯ã§ãããããç§åŠæè¡èšç®ã§ã¯æ ¹åŒ·ãæ¯æãåŸãŠããŸãã
1.2 FORTRANã®ç¹åŸŽãšã¯äœã
FORTRANã®æ倧ã®ç¹åŸŽã¯ãæ°å€èšç®ãšé åæäœã«ç¹åããŠããç¹ã§ãããã®æ§æã¯æ°åŠçãªèšè¿°ã«è¿ããèšç®æ©ç§åŠä»¥å€ã®å°é家ã§ãæ±ãããããšãããŠããŸãããŸããå¹ççãªã³ãŒãçæãå¯èœã«ããåªããæé©åæ©èœãæã£ãŠããããšããé·ãã«ããã£ãŠæ¯æãããçç±ã§ãã
FORTRANã¯ãã³ã³ãã¯ããªã³ãŒãã§é«éãªå®è¡ãå®çŸããŸããããã¯ã倧èŠæš¡ãªæ°å€è§£æãã·ãã¥ã¬ãŒã·ã§ã³ãå¿ èŠãšããåéã§éå®ãããç 究éçºãç£æ¥çã§ã®å°äœã確ç«ããŠããŸãã
ãŸããFORTRANã¯åè¶ããäºææ§ãèªããŸããæ°ããªæšæºãåãå ¥ããããŠã以åã®ããŒãžã§ã³ã®ã³ãŒããç¶æãããããé·æéã«ããããããžã§ã¯ãã«ãããŠãã³ãŒãã®åå©çšãšã¡ã³ããã³ã¹ã容æã«ãªããŸãããã®æè»æ§ããããŸããŸãªé åã«ãããŠFORTRANã®äœ¿çšãåŸæŒãããŠããã®ã§ãã
1.3 FORTRANã«ãããããã°ã©ã ã®åºæ¬æ§é
FORTRANã®ããã°ã©ã ã¯ãç¹å®ã®æ§é ãæã£ãŠããŸããããã°ã©ã ã®åºæ¬çãªæ§æèŠçŽ ã¯ãããã°ã©ã ã¹ããŒãã¡ã³ããå€æ°å®£èšãå®è¡æããããŠãµãã«ãŒãã³ããæãç«ã£ãŠããŸãããããã®èŠçŽ ãé©åã«é 眮ããå®çŸ©ããããšã§æ©èœçãªããã°ã©ã ãäœæããããšãã§ããŸãã
å®è¡æã«ã¯ãç®è¡æäœãåå²ãã«ãŒããªã©ãå«ãŸããŠãããè€éãªæ°å€èšç®ãããŒã¿åŠçãå®çŸããããšãå¯èœã§ãããŸãããµãã«ãŒãã³ãé¢æ°ãå©çšããããšã§ãã³ãŒãã®åå©çšæ§ãšã¢ãžã¥ãŒã«æ§ãé«ãŸããŸãã
FORTRANã®ããã°ã©ã ã¯ãå€ãã®å ŽåãBEGINãšENDã¹ããŒãã¡ã³ãã§å²ãŸãããããã¯åœ¢åŒã§æžãããŸããããã«ãããããã°ã©ã ã®éå§ãšçµäºãæ確ã«ãªããèªã¿ããããšç®¡çã®å®¹æããæäŸãããŸããSIMPLEãDO-LOOPãGOTOã¹ããŒãã¡ã³ããªã©ã¯ãããã°ã©ã ã®å¶åŸ¡ãããŒãæ§æããããã®éèŠãªèŠçŽ ã§ãã
1.4 FORTRANãšä»ã®ããã°ã©ãã³ã°èšèªãšã®æ¯èŒ
FORTRANã¯ãç¹ã«æ°å€èšç®ã«åŒ·ãããã°ã©ãã³ã°èšèªãšããŠç¥ãããŠããŸãããä»ã®èšèªãšæ¯èŒãããšããã®ç¹åæ§ãéç«ã¡ãŸããäŸãã°ãCèšèªãJavaã¯ããæ±çšçãªçšéã«äœ¿ãããããšãå€ããæ§ã ãªã¢ããªã±ãŒã·ã§ã³éçºã«é©ããŠããŸãããFORTRANã¯ç§åŠèšç®ãšæ°å€ã·ãã¥ã¬ãŒã·ã§ã³ã®åéã§ã®å©çšãäžå¿ã§ãã
PythonãMATLABã¯æ°å€èšç®ã®åéã§ã人æ°ããããŸãããFORTRANãšæ¯ã¹ããšå®è¡é床ã§å£ãããšããããŸããFORTRANã¯ã³ã³ãã€ã©ã«ããæé©åãé²ãã§ããã倧èŠæš¡ãªèšç®ã¿ã¹ã¯ã«ãããŠã¯é«éãªåŠçãå¯èœã§ãã
ããã«ãFORTRANã¯ä»ã®èšèªã«ã¯ãªãåªããé åæäœèœåãæã£ãŠããŸãããã®ãããæ°è±¡äºæž¬ãç©çã·ãã¥ã¬ãŒã·ã§ã³ãå·¥åŠèšèšãªã©ã倧éã®ããŒã¿ãæ±ãå°éçãªåéã§åŒãç¶ãéå®ãããŸããä»èšèªã«æ £ããããã°ã©ãã«ãšã£ãŠã¯ãæ§æãçŽæçã§ãªããšæããããããšããããŸãããFORTRANã¯ãã®ç¹å®ã®é åã«ãããŠã¯éåžžã«åŒ·åãªããŒã«ã§ãã
2. FORTRANã®åºç€ç¥è – ã¯ããã®äžæ©
FORTRANïŒãã©ãŒãã©ã³ïŒã¯ãç§åŠæè¡èšç®ãåŸæãšããããã°ã©ãã³ã°èšèªã®äžã€ã§ãããã®å¹ççãªæ°å€èšç®èœåã¯ãä»æ¥ã§ãå€ãã®ç 究è ãæè¡è ã«å©çšãããŠããŸãã
æ¬èšäºã§ã¯ãFORTRANã®ããã°ã©ãã³ã°ã®åºæ¬ã«çŠç¹ãåœãŠãŠè§£èª¬ããŸãããã®èšèªã®é åãšå ±ã«ãåå¿è ããã®åºæ¬ãåŠã¶ããã®ãã³ããæäŸããŸãã
FORTRANããã°ã©ãã³ã°ã®æ ã«åºãåã«ããŸãã¯åºæ¬çãªæŠå¿µãç解ããŸãããããããããããŒã¿åã®å®çŸ©æ¹æ³ããå§ããåºæ¬çãªæŒç®ãå¶åŸ¡æ§é ããããŠé åã®æäœã«ã€ããŠèª¬æããŸãã
2.1 ããŒã¿åãšå€æ°ã®å®çŸ©æ¹æ³
FORTRANã§ã¯ãããã°ã©ã å ã§äœ¿çšããå€æ°ã«ã€ããŠãããŒã¿åãæ瀺çã«å®£èšããããšãæšå¥šãããŸããããããããšã§ãã³ã³ãã€ã©ã¯å¹ççã«ã³ãŒããåŠçã§ãããŸãããã°ã©ã ã®èªã¿ããããåäžããŸãã
äž»èŠãªããŒã¿åã«ã¯ãINTEGERãREALãCOMPLEXãCHARACTERãããã³LOGICALããããŸããäŸãã°ãæŽæ°ãæ ŒçŽããå€æ°ã¯INTEGERåã䜿çšããå®æ°ã¯REALåã§å®£èšãããŸãã
å€æ°ã®å®£èšã¯ãéåžžãããã°ã©ã ã®æåã®éšåã§è¡ããŸãã以äžã¯ãããã€ãã®å€æ°ã宣èšããäŸã§ãïŒãINTEGER :: countããREAL :: temperatureããCHARACTER(len=10) :: nameãã§ãã
2.2 åºæ¬çãªç®è¡æŒç®ãšé¢æ°ã®å©çš
FORTRANã§ã¯ãåºæ¬çãªååæŒç®ïŒè¶³ãç®ãåŒãç®ãæãç®ãå²ãç®ïŒãçŽæçã«äœ¿ããŸããç®è¡æŒç®åã¯ãä»ã®å€ãã®ããã°ã©ãã³ã°èšèªãšåæ§ã«ã+ (å ç®)ã- (æžç®)ã* (ä¹ç®)ã/ (é€ç®) ã䜿çšããŸãã
ãŸããæšæºçãªæ°åŠé¢æ°ãè±å¯ã«çšæãããŠããŸããäŸãã°ããSQRTãã¯å¹³æ¹æ ¹ãèšç®ãããSINããšãCOSãã¯ããããæ£åŒŠãšäœåŒŠãæ±ããŸããé¢æ°ã®å©çšã¯ç°¡åã§ãäŸãã°å€æ°xã®å¹³æ¹æ ¹ãèšç®ããã«ã¯ãy = SQRT(x)ãã®ããã«æžããŸãã
ãããã®æŒç®ãšé¢æ°ã¯ãç§åŠæè¡èšç®ã«ãããŠé »ç¹ã«äœ¿ããããã®ã§ãFORTRANã匷åãªããŒã«ã§ããçç±ã®äžã€ã§ãã
2.3 å¶åŸ¡æ§é ïŒæ¡ä»¶åå²ãšã«ãŒã
ããã°ã©ã ã®æµããã³ã³ãããŒã«ããããã«ã¯ãæ¡ä»¶åå²ãšã«ãŒããå¿ é ã§ããFORTRANã«ãããåºæ¬çãªæ¡ä»¶åå²ã«ã¯ãIFãã¹ããŒãã¡ã³ãããããè€éãªæ¡ä»¶ããELSEIFãããELSEãã䜿ã£ãŠè¡šçŸã§ããŸãã
ã«ãŒãã«é¢ããŠã¯ããDOãã«ãŒããåºã䜿ãããŸãããã®ã«ãŒãã䜿ããšãç¹å®ã®æ¡ä»¶ãæºãããããŸã§ããããã¯æå®ããç¹°ãè¿ãåæ°ã«éãããŸã§ãåãã»ããã®åœä»€ãå®è¡ã§ããŸãã
äŸãã°ããDO i = 1, 10ãã¯ãå€æ°iã1ãã10ãŸã§å€åããéãã«ãŒãå ã®åœä»€ã10åå®è¡ããããšãæå³ããŸããã«ãŒãã¯æ°å€èšç®ã§ç¹°ãè¿ãåŠçãããéã«éåžžã«æå¹ã§ãã
2.4 é åãšãã®æäœæ¹æ³
é åã¯æ°å€ãããŒã¿ã®éåã管çããã®ã«åœ¹ç«ã¡ãŸããFORTRANã«ãããé åã¯ãäžæ¬¡å ããå€æ¬¡å ãŸã§æ±ãããšãã§ãããã®æè»æ§ã¯é«åºŠãªæ°å€è§£æã«ãããŠç¹ã«éå®ãããŸãã
é åãå®çŸ©ããã«ã¯ãå宣èšæã«æ¬¡å ãæå®ããŸããäŸãã°ã10åã®èŠçŽ ãæã€äžæ¬¡å é åã¯ãREAL :: array(10)ããšå®£èšã§ããŸãããããŠãé åã®åèŠçŽ ãžã¯ã€ã³ããã¯ã¹ã䜿ã£ãŠã¢ã¯ã»ã¹ããŸãã
é åã®åŠçãè¡ãéã«ã¯ããã°ãã°ãDOãã«ãŒããçšããããŸããããã«ãã£ãŠåèŠçŽ ã«å¯ŸããŠèšç®ãæäœãç¹°ãè¿ãããšãã§ããå¹ççãªããã°ã©ãã³ã°ãå®çŸããŸãã
3. FORTRANã®ã³ãŒãã£ã³ã° – å®è·µç·š
3.1 FORTRANã«ãããæç¶ãåããã°ã©ãã³ã°ãšã¯
æç¶ãåããã°ã©ãã³ã°ãšã¯ãããã°ã©ã ãäžé£ã®èšç®æé ãšããŠæ§ç¯ããã¢ãããŒããæããŸããFORTRANã§ã¯ããã®æ¹æ³ã¯é·å¹Žã®åºç€ãšãªã£ãŠãããããã°ã©ããæ確ãªã¹ããããèšè¿°ããŠåé¡ã解決ã§ããããã«ããŸãã
FORTRANããã°ã©ã ã¯ãéåžžãããŒã¿ã®å®£èšãèšç®æé ããããŠçµæã®åºåãšãã£ãå ·äœçãªæé ã®ã·ãŒã±ã³ã¹ã«åŸããŸãããã®æµãã«æ²¿ã£ãŠãç§åŠèšç®ãå·¥åŠçãªåé¡ãå¹ççã«ã³ãŒãåãããŸãã
ãã®ããã°ã©ãã³ã°æ§åŒã¯ãã¢ã«ãŽãªãºã ãåçŽåãããããç¹ã«æ°åŠçã¢ãã«ãå埩èšç®ãå€çšããã¢ããªã±ãŒã·ã§ã³ã§åªããããã©ãŒãã³ã¹ãæäŸããŸãã
3.2 ã¢ãžã¥ãŒã«ãšãµãã«ãŒãã³ã®äœ¿ãæ¹
ã¢ãžã¥ãŒã«ã¯FORTRANã«ãããŠéèŠãªæŠå¿µã§ãé¢é£ããããŒã¿ãšæç¶ããã«ãã»ã«åããããã«çšããããŸããããããã®ã¢ãžã¥ãŒã«ã¯ããã°ã©ã ã®äžéšåãç¬ç«ããŠæ±ããåå©çšæ§ãšå¯èªæ§ãåäžãããŸãã
ãµãã«ãŒãã³ã¯ãç¹å®ã®ã¿ã¹ã¯ãå®è¡ããã³ãŒãã®ãããã¯ã§ãããããã¯å¿ èŠã«å¿ããŠããã°ã©ã å ã®ä»»æã®ç®æããåŒã³åºãããšãåºæ¥ããããã³ãŒãã®éè€ãé¿ããäžã§éåžžã«åœ¹ç«ã¡ãŸãã
ã¢ãžã¥ãŒã«ãšãµãã«ãŒãã³ãé©åã«äœ¿çšããããšã§ã倧èŠæš¡ã§è€éãªã³ãŒãã§ã管çãããããããšã©ãŒã®ãªã¹ã¯ãæå°éã«æããããšãã§ããŸãã
3.3 FORTRANã§ã®ãã¡ã€ã«å ¥åºå
ä¿¡é Œæ§ã®é«ããã¡ã€ã«å ¥åºåã¯FORTRANã®åŒ·ã¿ã®1ã€ã§ãããã¡ã€ã«ããããŒã¿ãèªã¿èŸŒãããšããèšç®çµæããã¡ã€ã«ã«æžãåºãããšã容æã«è¡ããŸãã
å ¥åºåã«ã¯æ§ã ãªãã©ãŒããããååšããåºå®ãã©ãŒããããèªç±ãã©ãŒããããšãã£ã圢åŒãé©å®å©çšããããšãå¯èœã§ããèªã¿æžãã®éã«ããçŽæçã«ç解ããããã³ãã³ãã§æäœãè¡ãããšãã§ããŸãã
ãšã©ãŒåŠçããã¡ã€ã«ç¶æ ã®ãã§ãã¯ãå«ããå ç¢ãªå ¥åºååŠçãå®è£ ããããšã§ãããŒã¿ã®æŽåæ§ãä¿ã¡ãªãããããã°ã©ã ã®ä¿¡é Œæ§ãé«ããããšãã§ããŸãã
3.4 ãããã°ãšãšã©ãŒåŠçã®åºæ¬
ãããã°ã¯ããã°ã©ã ã®ãšã©ãŒãæ€åºãä¿®æ£ããéçšã§ããFORTRANã§ã¯ããããã°ã®ããã®æ§ã ãªããŒã«ãšãã¯ããã¯ãå©çšå¯èœã§ãã
ãšã©ãŒåŠçã¯ãããã°ã©ã ãäºæãã¬ç¶æ³ã«ééããæã«ãé©åã«å¯Ÿå¿ããä»çµã¿ãæ§ç¯ããããšã§ããFORTRANã«ã¯ããšã©ãŒãçºçããéã«æ å ±ãåéãã察åŠããããã®å èµãããæ©èœãåãã£ãŠããŸãã
確å®ãªãšã©ãŒåŠçãšå¹ççãªãããã°ã¯ãããã°ã©ã ã®å®å®æ§ã«çŽçµããç¹ã«èšå€§ãªããŒã¿ãæ±ãå Žåãé·æé皌åãããå Žåã«ãããŠã¯äžå¯æ¬ ã§ãã
4. çŸä»£ã«ãããFORTRAN – 䜿ãããã·ãŒã³ãšã¯
FORTRANã¯ã幎代ãçµãŠããªããç§åŠèšç®ãå·¥åŠåéã§ä¿¡é Œãããããã°ã©ãã³ã°èšèªã§ããé·ãæŽå²ãæã€ãã®èšèªã¯ãæé©åãããæ°å€èšç®èœåãšãåŠçé床ã®éããããç¹ã«ç©çåŠãæ°è±¡åŠããšã³ãžãã¢ãªã³ã°ãªã©ã®åéã§çŸåšã§ãéå®ãããŠããŸãã
åæã®èšèšç®çã¯ç§åŠæè¡èšç®ã§ãã£ãããããã®çšéã§ã®å®çžŸãè±å¯ã«ãããŸãããŸããæ¢åã®ã³ãŒãããŒã¹ãã©ã€ãã©ãªãå å®ããŠããããšãããæ°ããªã·ã¹ãã ã«ãããŠãFORTRANãéžã°ããããšãå€ãã®ã§ãã
ããã«FORTRANã¯ãã®åçŽããããããã°ã©ã ã®å¯èªæ§ãä¿®æ£æ§ã«ãããŠãåªããŠãããçŸåšã®ããã°ã©ãã³ã°çŸå Žã«ãããŠãæçšæ§ãçºæ®ããŠããŸãã以äžã§ã¯ãå ·äœçãªäœ¿çšäŸãã³ãã¥ããã£ã®çŸç¶ãªã©ã«çŠç¹ãåœãŠãŠè§£èª¬ããŠãããŸãã
4.1 ç§åŠæè¡èšç®ã«ãããFORTRANã®åœ¹å²
çŸä»£ã«ãããŠãFORTRANã¯ãç§åŠæè¡åéã§ã®é«æ§èœèšç®(HPC)ã«åºã䜿çšãããŠããŸãã粟床ãèŠæ±ãããæ°å€è§£æããèšå€§ãªèšç®åŠçãå¿ èŠãšããã·ãã¥ã¬ãŒã·ã§ã³ããã°ã©ã ã«å¯ŸããŠããã®ããã©ãŒãã³ã¹ã¯å®è©ããããŸãã
èšç®ç©çåŠãã¯ãããšããçè«ç 究ã§ã¯ãè€éãªæ°åŠã¢ãã«ãæ±ããããFORTRANã®æäŸããè±å¯ãªæ°å€èšç®ã©ã€ãã©ãªãé Œãã«ãããŠããŸãããŸããæ¢ã«å€ãã®ã¬ã¬ã·ãŒã³ãŒããFORTRANã§æžãããŠãããããäºææ§ãä¿ã¡ãªããã®çºå±ãå¯èœã§ãã
倩æåŠãæ°åã¢ãã«ã®äœæã«ãããŠããçŸåšã§ãFORTRANã®ã³ãŒããç©æ¥µçã«å©çšãããŠãããæ°æ§ã®æè¡ãå ±åããæªæ¥ãžãšã€ãªãã£ãŠããã®ãèŠãŠåããŸãã
4.2 FORTRANã®çŸä»£çãªå©çšäŸ
FORTRANã¯åŸæ¥ã®åéã ãã§ãªããéèã¢ããªã³ã°ãçç©çµ±èšåŠãªã©ãæ°ããé åã«ãããŠãæ¡çšãããŠããŸããèšç®é床ã®éããšç²ŸåºŠãèŠããæ¥çã§ãFORTRANã¯æ°ããªè§£æ±ºçãšããŠç»å ŽããŠããã®ã§ãã
ããšãã°ã倧åã®ããŒã¿ã»ãããçšããçµ±èšåæã§ã¯ãFORTRANãçã¿åºãé«éãªçµæã¯ããªã¢ã«ã¿ã€ã ã§ã®ææ決å®ãèŠå®ããããžãã¹ã·ãŒã³ã§å©ç¹ãšãªã£ãŠããŸãããŸããèšç®ã³ã¹ããåæžãããããæ¢åã®FORTRANã³ãŒããåå©çšããåããèŠãããŸãã
ããã«ã¯ãšãã«ã®ãŒåéã«ãããŠããªãœãŒã¹ã®æé©åãç°å¢ã·ãã¥ã¬ãŒã·ã§ã³ã«FORTRANã䜿çšããããªã©ãäžçã®æç¶å¯èœãªçºå±ã«è²¢ç®ããŠããå®äŸããããŸãã
4.3 FORTRANã®ã³ãã¥ããã£ãšãµããŒã
é·ãã«ããã£ãŠæ ¹åŒ·ã人æ°ãèªãFORTRANã¯ãå šäžçã«ãããç®èº«çãªã³ãã¥ããã£ã«æ¯ããããŠããŸãããŠãŒã¶ãŒéã§ã®æ å ±äº€æãæ°ããæ©èœã®ææ¡ãªã©ã掻çºã«è¡ãããŠãããããã°ã©ãã³ã°ã®çµéšãæµ ã人ã§ã質åãçåãæããããããç°å¢ãæŽã£ãŠããŸãã
åçš®ãã©ãŒã©ã ãã¡ãŒãªã³ã°ãªã¹ããéããŠãæ°æ§ã®ããã°ã©ããŒã亀æµããç¥èå ±æããªãããŠããã»ãããã©ãã«ã·ã¥ãŒãã£ã³ã°ãå©ãåãããšãã§ããŸãããã®ãããªã³ãã¥ããã£ã®ååšããæªã FORTRANãçãé·ãããããŠããŸãã
ããã°ã©ãã³ã°èšèªãšããŠãçŸä»£ã®æµè¡ã«å·Šå³ãããã«å®è©ã®ããåžå°æ§ããFORTRANã®ã³ãã¥ããã£ãæãç«ã€äžå ã§ããã¢ã¯ãã£ããªãŠãŒã¶ãŒã¯ãããã°ã©ã ã®æ¹åããã°ã®ä¿®æ£ãããã«ã¯æ°èŠéçºã«è³ããŸã§å¹ åºãè²¢ç®ããŠããŸãã
4.4 FORTRANã«é¢ããè³æãšãªãœãŒã¹
FORTRANãåŠã³ããæ°ããããã°ã©ããŒããå®åã§ã®ç¥èãæ·±ãããçµéšè ã«ãšã£ãŠæçšãªå€ãã®è³æããæžç±ããªã³ã©ã€ã³ãªãœãŒã¹ãéããŠæäŸãããŠããŸããå€å žãšãªãæç§æžããæ°ãããã¥ãŒããªã¢ã«ãŸã§ãã¬ãã«ãçšéã«å¿ããåŠç¿ææãå å®ããŠããŸãã
ãŸããOpen Sourceã®FORTRANã³ã³ãã€ã©ãéçºç°å¢ãããã€ãååšãããããã¯ç¡æã§ã¢ã¯ã»ã¹ããããšãã§ããŸããGNU Fortran (gfortran) ã¯ãç¹ã«äººæ°ãé«ããå€ãã®FORTRANããã°ã©ããŒã«å©çšãããŠããŸãã
ãªã³ã©ã€ã³ãã©ãŒã©ã ããœãŒã·ã£ã«ã¡ãã£ã¢ã§ã¯ãFORTRANã«é¢ããææ°ã®æ å ±äº€æãè¡ãããŠãããã°ããŒãã«ãªèŠ³ç¹ããã®ææ°ã®ååãã€ããããšãå¯èœã§ãããã®ããã«ããŠãFORTRANã¯ä»æ¥ããªããæè¡ã®å é§ããšããŠãã®å°äœã確åºãããã®ãšããŠããŸãã
FORTRANãåŠã¶ããã®ãªãœãŒã¹ – åŠç°å¢ãç®æšã«å¿ããé©åãªåŠç¿ãªãœãŒã¹ãèŠã€ããããšãæåãžã®éµã§ãã以äžã®ã¬ã€ãã§ã¯ãFORTRANã®ããŒããããããã³ãã¥ããã£ãžã®åå æ¹æ³ãŸã§ãåŠç¿ãå¹ççã«é²ããããã®æ å ±ãæäŸããŸãã
5. FORTRANãåŠã¶ããã®ãªãœãŒã¹ – åŠç¿ã¬ã€ã
5.1 FORTRANåŠç¿ã®ããŒãããã
ããã°ã©ãã³ã°èšèªFORTRANãç¿åŸããã«ã¯ãæ確ãªåŠç¿ããŒãããããå¿ èŠã§ãããŸããåºæ¬çãªããã°ã©ã ã®æ§é ãšæ§æãç解ããŸããããããã«ã¯ãå€æ°ã®å®£èšãç®è¡æŒç®åãã³ã³ãããŒã«æ§é ãªã©ã®åºæ¬çãªæŠå¿µãå«ãŸããŸãã
次ã«ãé åããµãã«ãŒãã³ãªã©ã®äžçŽã¬ãã«ã®æŠå¿µãåŠã³ãããã°ã©ã ã®ã¢ãžã¥ãŒã«æ§ãé«ããæ¹æ³ãææ¡ããŸãããã®æ®µéã§ã¯ãç¹°ãè¿ãèŠçŽ ãæ¡ä»¶åå²ã«ã粟éããŠããããšãæ±ããããŸãã
äžçŽã¬ãã«ã«é²ããšãæé©åã䞊åèšç®ãªã©ã®é«åºŠãªæè¡ãç»å ŽããŸãããã®æ®µéã§ãFORTRANã䜿çšããç§åŠèšç®ãå·¥åŠèšç®ã®ãããžã§ã¯ãã«ææŠããŠãåŠãã ã¹ãã«ãå®è·µã§ç£šããŸãããã
5.2 åå¿è åãã®åŠç¿ãã¥ãŒããªã¢ã«ãšææ
FORTRANãåŠã³å§ããåå¿è ã¯ãåºæ¬ãã段éçã«åŠã¹ããã¥ãŒããªã¢ã«ãææãéèŠã§ããç°¡åãªããã°ã©ã ããå§ããŠãå ¥åºåã®æäœãåºæ¬çãªèšç®ãè¡ããŸããããã€ã³ã¿ã©ã¯ãã£ããªæè²ãã©ãããã©ãŒã ãå©çšãããšãå®éã®ã³ãŒããæžããªãããã®å Žã§ãã£ãŒãããã¯ãåŸãããšãã§ããŸãã
åå¿è åãã®æ¬ããç°¡åãªäŸã亀ããŠèª¬æããŠãããŠã§ããµã€ããå€ããããŸãããããã®ãªãœãŒã¹ã䜿çšããŠãèªåã®ããŒã¹ã§åºç€ããåŠã¶ããšãã§ããŸãããŸãããããªããªã³ã©ã€ã³ã³ãŒã¹ãæå¹ãªåŠç¿æ段ã§ãã
ãã¥ãŒããªã¢ã«ã§ã¯ãããã°ã©ã ã®ãããã°ããšã©ãŒã®èªã¿è§£ãæ¹ãåŠã¶ããšã倧åã§ãããããã®ã¹ãã«ã¯ãç¬åŠã§åŠãã§ããéã«çŽé¢ããåé¡ã解決ããã®ã«åœ¹ç«ã¡ãŸãã
5.3 FORTRANã«é¢ããæžç±ãšãªã³ã©ã€ã³è³æº
FORTRANã®ã¹ãã«ãæ·±ããããã«ã¯ãå°éçãªæžç±ã®èªã¿èŸŒã¿ãããããã§ããæŽå²ããããã°ã©ãã³ã°èšèªã§ããFORTRANã«ã¯ãè±å¯ãªæç®ãååšããŸããå€ãã®æžç±ã§åºæ¬æŠå¿µããé«åºŠãªãã¯ããã¯ãŸã§ç¶²çŸ çã«èª¬æãããŠããŸãã
ãŸãããªã³ã©ã€ã³ã§ã¯ãã©ãŒã©ã ãå°é家ã«ããããã°èšäºããœãŒã¹ã³ãŒãã®ãªããžããªãªã©ãå€æ§ãªè³æãç¡æã§ãŸãã¯äœã³ã¹ãã§å ¥æã§ããŸãããããã®è³æºã¯ãææ°ã®ããã°ã©ãã³ã°ç°å¢ã«åãããŠæŽæ°ãããããšããããæ代ã«å·Šå³ãããªãFORTRANã®åŠç¿ã«åœ¹ç«ã¡ãŸãã
ãªã³ã©ã€ã³ã§æäŸãããã³ãŒã¹ãéåžžã«æçã§ããåå¿è ããäžçŽè ãŸã§å¯Ÿå¿ããããã°ã©ã ããããèªåã®ã¬ãã«ã«å¿ããåŠã³æ¹ãéžã¶ããšãã§ããŸãã
5.4 ç©æ¥µçã«åå ãã¹ãFORTRANã³ãã¥ããã£
ç¬åŠã ãã§ã¯ãªããFORTRANã®ã³ãã¥ããã£ã«åå ããããšãåŠç¿ã«ã¯éèŠã§ãããŠãŒã¶ãŒã°ã«ãŒãããªã³ã©ã€ã³ãã©ãŒã©ã ã§ã¯ãåå¿è ããçç·Žããããã°ã©ããŒãŸã§å¹ åºãã¬ãã«ã®ã¡ã³ããŒãã¢ããã€ã¹ãæ å ±äº€æãè¡ã£ãŠããŸãã
ãªãŒãã³ãœãŒã¹ãããžã§ã¯ãã«åå ããããšã§ãå®éã®ã³ãŒãã«è²¢ç®ããããä»ã®ããã°ã©ããŒã®ã³ãŒããã¬ãã¥ãŒãããããããšãã§ããŸãããŸããå®æçã«éå¬ãããã³ã³ãã¡ã¬ã³ã¹ãããŒãã¢ããã«åºåžããŠãææ°ã®ç¥èãåŸãããåãé¢å¿ãæã€äººã ãšãããã¯ãŒãã³ã°ããããããã£ã³ã¹ããããŸãã
ããã«ãæè²æ©é¢ãç 究æãäž»å¬ããã¯ãŒã¯ã·ã§ãããã»ãããŒã«åå ããããšã§ãããå°éçãªç¥èãæ·±ããããšãã§ããŸãããããã®ã€ãã³ãã¯ãã°ãã°èåãªFORTRANã®å°é家ãæããŠãããäžæµã®ç¥èãçŽæ¥åŠã¶çµ¶å¥œã®æ©äŒãæäŸããŠããŸãã
ãFORTRANå ¥éã®æ¬¡ã®ã¹ããã – åé²ããããã®ã¢ããã€ã¹ãã§ã¯ãããã°ã©ãã³ã°èšèªFORTRANãããæ·±ãç解ãããã®ç¥èãå®è·µçã«äœ¿çšããŠããæ¹æ³ã«ã€ããŠè§£èª¬ããŸãããã®èšäºã¯ãFORTRANã®æç§æžãåºæ¬çãªç¥èãåŠãã æ¹ãããããªãã¹ããããžãšé²ãããã®ã¢ããã€ã¹ãæäŸããŸãã
6. FORTRANå ¥éã®æ¬¡ã®ã¹ããã – åé²ããããã®ã¢ããã€ã¹
6.1 å®è·µãéããŠFORTRANã®ã¹ãã«ã¢ãããå³ã
FORTRANãåŠã¶ã«ã¯å®è·µãäžå¯æ¬ ã§ããåã«çè«ãæ§æãèŠããã ãã§ã¯ãæ·±ãç解ãå¹æçãªäœ¿çšæ³ã身ã«ã€ããããšã¯ã§ããŸãããå®éã®èª²é¡ã解決ããªããFORTRANã§ããã°ã©ã ãæžãããšã§ãç¿åŸããã¹ãã«ãå®æŠã§åŠäœã«åœ¹ç«ã€ããäœæããããšãã§ããŸãã
å§ãã«ãå°ããªãããžã§ã¯ãããåãçµãããšããå§ãããŸããããšãã°ãæ°åŠçãªåé¡ã解ãããã°ã©ã ã®äœæããç§åŠçãªããŒã¿è§£æãè¡ãç°¡åãªã¢ããªã±ãŒã·ã§ã³ãéçºããŠã¿ãŸãããããã®ããã»ã¹ãéããŠãFORTRANã®åºæ¬çãªå ¥åºåãå€æ°ã®æ±ããã«ãŒããæ¡ä»¶åå²ãšãã£ãæŠå¿µã身ã«ä»ããŸãã
ããã«ãã³ãŒãã®æé©åããããã°æè¡ã®åäžãéèŠã§ããFORTRANã¯ç§åŠèšç®ãé«æ§èœèšç®ã§ã®äœ¿çšãå€ããããå¹çè¯ãããã°ã©ã ãæžãããšã¯éèŠãªèŠä»¶ãšãªããŸãããã®èœåã¯å®è·µãéããŠåŸã ã«ç²åŸããããã®ã§ããããšã©ãŒãä¿®æ£ããããã»ã¹ãããã©ãŒãã³ã¹åäžã®ããã®æ¹åäœæ¥ãããã®ã¹ãã«ã磚ãæ©äŒãšãªãã§ãããã
6.2 FORTRANã®ãšãã¹ããŒãã«ãªãããã®æŠç¥
FORTRANã®ãšãã¹ããŒãã«ãªãããã«ã¯ãåžžã«åŠç¿ãç¶ãã姿å¢ãæ±ããããŸããææ°ã®æè¡ååãè¿œããããããšã¯èšãããããªãFORTRANèªäœã®æ·±ãç解ãäžå¯æ¬ ã§ããå°éæžãèªãã ãã§ãªããå®éã®ãœãŒã¹ã³ãŒããèªã¿è§£ãããšã§ãçµéšè±ããªéçºè ã®ç¥èãããŠããŠãåžåããŠãããŸãããã
ã³ãã¥ããã£ãžã®åå ããéåžžã«æå¹ãªæŠç¥ã§ããFORTRANã䜿çšããç 究è ãéçºè ãšäº€æµãæã€ããšã§ãããŸããŸãªãŠãŒã¹ã±ãŒã¹ãç¥ãããšãã§ããŸãããŸããåé¡è§£æ±ºã®ãã³ããåŸãããã³ãŒãã®ã¬ãã¥ãŒããé¡ããããªã©ã®ååäœå¶ãç¯ãäºãã§ããŸãã
æçµçã«ã¯ãèªããç¥èãå ±æããã³ãã¥ããã£ã«è²¢ç®ããç«å Žã«ãªãããšãããšãã¹ããŒããžã®è¿éã§ããããã°ãæžããããè¬æŒãã»ãããŒãã¯ãŒã¯ã·ã§ããã§çºè¡šãè¡ãããšã§ãèªåèªèº«ã®ç¥èãæŽçããæ©äŒã«ããªããŸãããä»ã®äººã ãšç¥èŠãå ±æããããšã§ãããªãæé·ãä¿ãããŸãã
6.3 ãããžã§ã¯ãã§FORTRANã掻ãããã³ã
FORTRANããããžã§ã¯ãã§æŽ»ããããã«ã¯ããã®ç¹åŸŽããã£ãããšç解ããŠå©çšã·ãŒã³ãéžã¶ããšã倧åã§ããFORTRANã¯æ°å€èšç®ãç§åŠæè¡èšç®ã«åŒ·ã¿ãæã€èšèªã§ããããããã®ãããªé åã®ãããžã§ã¯ãã«ãããŠããã®èœåãæ倧éã«çºæ®ã§ããŸãã
äŸãã°ãç©çã·ãã¥ã¬ãŒã·ã§ã³ãæ°è±¡äºæž¬ãååŠåå¿ã®èšç®ãšãã£ããæ°å€ã®ç²ŸåºŠãèŠæ±ãããã¢ããªã±ãŒã·ã§ã³ã®éçºã«ã¯ãFORTRANãéžæããããšãéåžžã«æå©ã§ãããŸããã¬ã¬ã·ãŒã³ãŒãã®æ¹ä¿®ãæ¡åŒµã«ãããŠããFORTRANã§ã®äœæ¥ãå¿ èŠã«ãªãã±ãŒã¹ããããŸãã
ãããžã§ã¯ãå ã§ã®ã³ãŒãã®åå©çšãéµãšãªããŸããéå»ã«æžããã«ãŒãã³ãã©ã€ãã©ãªãæšæºåããæ°ããªãããžã§ã¯ãå ã§ã䜿çšããããšã§ãå¹ççãªéçºãé²ããããšãã§ããã§ããããããã«ãä»èšèªãšã®é£æºãèæ ®ã«å ¥ããããšã§ãFORTRANãæã€æ©èœãç°ãªãç°å¢ã§æŽ»çšããéãéããŸãã
6.4 ç¶ç¶çãªåŠç¿ãšã¢ããããŒããžã®é©å¿
ãã¯ãããžãŒã®é²æ©ã¯æ¢ãŸãããšãç¥ããŸãããFORTRANãäŸå€ã§ã¯ãªããæ°ããæ©èœãæ¹è¯ãé²ãã§ããŸãããã®ãããç¶ç¶çãªåŠç¿ã¯ããã°ã©ãã³ã°ã¹ãã«ãç¶æããäžã§æ¬ ãããªãèŠçŽ ã§ãã
å ¬åŒã®ããã¥ã¡ã³ãããã¥ãŒããªã¢ã«ããããŠãªã³ã©ã€ã³ãã©ãŒã©ã ãåŠè¡èªã«ç®ãéããFORTRANã«é¢ããææ°ã®æ å ±ããã£ããã¢ããããããšã倧åã§ãããŸããããŒãžã§ã³ã¢ããããŒããããã°ããã®å€æŽå 容ã確èªããèªèº«ã®ç¥èãã¢ããããŒãããããšãéèŠã§ãã
å®åã§ã®èª²é¡è§£æ±ºã ãã§ãªããå人çãªèå³ã«åºã¥ãå°ããªãããžã§ã¯ããéããŠæ°ããæè¡ãã¢ã€ãã¢ãè©Šãã®ãè¯ãã§ããããæ°ããèšèªæ©èœã®å®éšãã©ã€ãã©ãªã®å©çšãè©Šã¿ãããšã§ãæè»ãªæèãæç¶ãããããæ·±ãç解ãžãšå°ãããŸãã
7. ãŸãšã
FORTRANã¯æ°å€èšç®ã«åŒ·ãæŽå²ããããã°ã©ãã³ã°èšèªã§ãã1957幎ã«èªçããç§åŠæè¡èšç®ã®åéã§é·å¹Žã«ããã掻çšãããŠããŸãããããžãã¹ã®äžçã§ã粟床ãæ±ããããåéã§éå®ãããŸããç¬ç¹ãªææ³æ§é ãæã¡ãäžåºŠåºç€ãç解ããããšã§ä»ã®èšèªãžã®ç解ãæ·±ãŸããŸããããŒã¿åãå€æ°å®çŸ©ãç®è¡æŒç®ãå¶åŸ¡æ§é çãåºæ¬çãªæŠå¿µãæŒãããã°ãã¢ãžã¥ãŒã«ããµãã«ãŒãã³ã®å¹æçãªäœ¿çšæ¹æ³ãåŠã¹ãŸããæç®ããªã³ã©ã€ã³ãªãœãŒã¹ãã³ãã¥ããã£ã®ãµããŒããåŠç¿ãã¥ãŒããªã¢ã«ãå©çšããããšã§ãåå¿è ãããšãã¹ããŒããžã®éãæ©ãããšãã§ããŸããçŸä»£ã§ã¯é«æ§èœèšç®é åã«ãããŠãäŸç¶ãšããŠãã®äŸ¡å€ãçºæ®ããæ°ããæè¡ååã«å¯Ÿå¿ããªããé²åããŠããŸãã