์ด ๋ฌธ์์ ์๋ณธ์ ์ธ๋ถ ์ํค์์ ๊ฐ์ ธ์์ต๋๋ค.
FORTRAN์์ ๋์ด์ด
1. ๊ฐ์[ํธ์ง]
1950๋
๋ ๋ง์ IBM์ ์กด ๋ฐฐ์ปค์ค(John Backus) ์ธ 6๋ช
์ ์ ๋ฌธ๊ฐ๊ฐ ์์ฑํ ์ต์ด์ ๊ณ ๊ธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ์ค ํ๋์ด๋ค. ์๊ณจ๊ณผ ํจ๊ป ๊ณผํ ๊ณ์ฐ์ฉ์ผ๋ก ์ฃผ๋ก ์ฌ์ฉ๋๊ณ ๋งค์ฐ ๊ฐ๊ฒฐํ๊ณ ์๊ฒฉํ ๊ตฌ๋ฌธ ํ์์ ๊ฐ์ง๊ณ ์๋ค. ANSI์ ISO์์ ํ์คํ๋์๋ค. ์ด๋ฆ์ ์์ ๋ณํ๊ธฐ(FORmula TRANslator)๋ผ๋ ๋ป์ผ๋ก, ์ด๋ฆ ๊ทธ๋๋ก ์์์ ๊ณ์ฐํ๋ ๋ฐ ํนํ๋์ด ์๋ค. ์์ ๊ณ์ฐ์ ํนํ๋์ด ์๋ค๋ ๊ฒ์
- ์์์ ๊ฐ๋จํ๊ฒ ํํํ ์ ์๋ค.
- ์์น ๊ณ์ฐ์ด ๋น ๋ฅด๊ฒ ์ํ๋๋ค.
๋ผ๋ ์ด๋ ์ ๊ฐ์ง๊ณ ์ค๊ณ๋์ด ์๋ค๋ ๊ฒ์ด๋ค. ์ปดํจํฐ ๊ณตํ์์๋ ์ฃฝ์ ์ธ์ด๋ก ์ธ์ํ๊ณ ์์ง๋ง ๊ณ์ฐ์ํ์์๋ ์์ง๋ C์ ๋๋ถ์ด ํ๋ฐํ๊ฒ ์ฐ์ธ๋ค. ๋น์ ์ด ์ญ์ฌ๊ฐ ์ค๋๋ ๊ฒ์ ์ฐ๊ตฌํ๋ ์ ๊ณต์ ๊ณต๋๋ ์์ฐ๋ ๋ํ์ ํ๊ณผ์ ์งํํ ๊ฒฝ์ฐ ๋ง๋ฅ๋จ๋ฆด ์ ์๋ ์ธ์ด์ด๋ฉฐ ์ํผ์ปดํจํฐ๋ก ๋ญ๊ฐ๋ฅผ ํด์ผ ํ ์ผ์ด ์๊ธธ ๊ฒฝ์ฐ ๋์ ํ๋ฅ ๋ก ์ฌ์ฉํ๊ฒ ๋ ์ธ์ด์ด๋ค.
ํฌํธ๋์ ์ธ ์ ์๋ IDE์ ๋ํด์๋ ์ํคํผ๋์์ ์ ์ ๋ฆฌ๋์ด ์์ผ๋ ์ฐธ๊ณ ํ๋๋ก ํ์.
2. ํ์คํ์ ์งํ[ํธ์ง]
WG5๋ก ๋ถ๋ฆฌ๋ ISO ํฌํธ๋ ์์ํ์์ ISOํ์ค ๋
ผ์๊ฐ ์งํ๋๋ฉฐ[1] J3๋ก ๋ถ๋ฆฌ๋ US Fortran committee ์์ ANSI ํ์ค์ด ๋
ผ์๋๋ค.[2]
๋์ฒด์ ์ผ๋ก ANSI ํ์ค์ ๊ฑฐ์ ๋ณํ ์์ด ISO ํ์ค์ผ๋ก ๋ฐ์๋ค์ฌ ์ง๋ค. ํ์ฌ์ WG5์ ๊ตฌ์ฑ์์ J3์ ๋๋์์ดํ๋ฉฐ, J3๋ ํ์ฌ WG5์ ๋ถ๋ถ์ผ๋ก ํ๋ํ๊ณ ์๋ค.
1956๋ ๊ฐ๋ฐ, 1957๋ IBM์์ "THE FORTRAN AUTOMATIC CODING SYSTEM FOR THE IBM 704 EPDM"์ด๋ ์ด๋ฆ์ผ๋ก ๋ฐํํ ์ดํ์ ์ฝ 10์ฌ๋ ๊ฐ์ ํฌํธ๋๊ณ์ ์ถ์ถ์ ๊ตญ์๋์๋ค. ๋ค์ํ ๋ฒค๋์์ ๊ทธ๋ค๋ง์ ์ธ์ด์ ํน์ง๊ณผ, ์์ด๋์ด, ๋ฌธ๋ฒ์ ๊ฐ์ง๋ฉฐ ์ด๋ฐ ์ ๋ฐ ํฌํธ๋์ ๋ง๋ค์๊ธฐ ๋๋ฌธ์ด๋ค. FORTRAN II ๋ FORTRAN D ๋ ํ๋ ๋ ์๋ค๋ ์์๋ค. ๊ทธ ์์ ์๋ 40์ฌ ๊ฐ์ง์ ์ปดํ์ผ๋ฌ๋ค์ด ์์๋ค ํ๋ค.
1966๋ ์ "Business Equipment Manufacturers Association"์ ์ฃผ๋ํ์ ์ฒซ ANSI ํ์ค์ด ์ง์ ๋์์ผ๋ฉฐ, ์ด ํ์ค์ 36ํ์ด์ง ์ง๋ฆฌ ๋ฌธ์๋ก ๋ฐ๊ฐ๋์๊ณ FORTRAN66 ๋๋ FORTRAN IV ๋ผ๊ณ ๋ ๋ถ๋ฆฌ๋ฉฐ(์ด๋ FORTRAN IV ์ปดํ์ผ๋ฌ๋ฅผ ๊ทธ ๊ธฐ๋ฐ์ผ๋ก ํ์คํ๊ฐ ์งํ๋์๊ธฐ ๋๋ฌธ์ด๋ค.) ์ ํํ ๋ช ์นญ์ ANSI 3.9-1966์ด๋ค. ์ต์ด์ ANSIํ์ค์ด ๋ฑ์ฅํ๋ฉด์ ๊ธฐ์กด์ ๋ํดํ ์ํฉ์ ์ฝ๊ฐ ์ ๋ฆฌ๊ฐ ๋์๋ค. FREQUENCY๋ฌธ, SENSE๋ฌธ ๊ฐ์ ์ฌ๋ฌ ๋ฒค๋์์ ์์์ ์ผ๋ก ์ฌ์ฉํ๋ ๋ฌธ๋ฒ๋ค์ด ์ฌ๋ผ์ง๊ธฐ ์์ํ๊ธฐ ๋๋ฌธ์ด๋ค. ISO R1539:1972๋ FORTRAN66์ ๋์ํ๋ ISO ํ์ค์ ํด๋นํ๋ค.(ํด๋น ํ์ค์ ISO์ ์น์ธ์ 1972๋ ์ ๋์๋ค.)
์ดํ ๊ฐ์ฅ ๋๋ฆฌ ์๋ ค์ง๊ณ ์ ๋ช ํด์ง ํ์ค์ 1978๋ ์ ANSI์ ์ํด ์น์ธ๋ FORTRAN 77์ผ๋ก ๊ทธ ๋ฌธ๋ฒ ๋ง์ผ๋ก๋ 260์ฌ ํ์ด์ง๊ฐ ๋์๋ค. ํ์ฌ ๋๋๋ก ๋ด๋ ค์ค๊ณ ์๋ ๋ง์ ์์นํด์ ์ฝ๋๋ค์ ์ด ํ์ค์ ๋ฐ๋ผ ์์ฑ๋ ์๊ฐ ๋ง๋ค. FORTRAN77์ ์ฒ์์ผ๋ก ๊ณต์์ ์ผ๋ก OPEN๋ฌธ, CHARACTER ํ ์ ์ธ์ด ์ถ๊ฐ๋์๋ค. CHARACTERํ์ด ์ถ๊ฐ๋๊ธฐ ์ด์ ์ ๊ฐ ์ปดํ์ผ๋ฌ ์์์ ์ผ๋ก ์ฌ์ฉํ๊ณ ์๊ฑฐ๋, Hollerith ์์์ ์ฌ์ฉํ๋ค.[3] ISO 1539:1980 ์ด ISO FORTRAN77์ ํด๋น์ด๋๋ค.
ํํธ, ๋ฏธ ๊ตญ๋ฐฉ๋ถ์์๋ ์ด ANSI FORTRAN 77 ์ ์ถ๊ฐ์ ์ธ ๊ธฐ๋ฅ์ด ํฌํจ๋ ํ์ค์ ๋ฐํํ๋ค. [4] ์ด ๋ฏธ๊ตญ๋ฐฉ๋ถ 77ํ์ค์๋ ๋ค์๊ณผ ๊ฐ์ ๋ฌธ๋ฒ์ด ์ ์ฉ๋์๋ค.
๋์ฒด์ ์ผ๋ก ANSI ํ์ค์ ๊ฑฐ์ ๋ณํ ์์ด ISO ํ์ค์ผ๋ก ๋ฐ์๋ค์ฌ ์ง๋ค. ํ์ฌ์ WG5์ ๊ตฌ์ฑ์์ J3์ ๋๋์์ดํ๋ฉฐ, J3๋ ํ์ฌ WG5์ ๋ถ๋ถ์ผ๋ก ํ๋ํ๊ณ ์๋ค.
1956๋ ๊ฐ๋ฐ, 1957๋ IBM์์ "THE FORTRAN AUTOMATIC CODING SYSTEM FOR THE IBM 704 EPDM"์ด๋ ์ด๋ฆ์ผ๋ก ๋ฐํํ ์ดํ์ ์ฝ 10์ฌ๋ ๊ฐ์ ํฌํธ๋๊ณ์ ์ถ์ถ์ ๊ตญ์๋์๋ค. ๋ค์ํ ๋ฒค๋์์ ๊ทธ๋ค๋ง์ ์ธ์ด์ ํน์ง๊ณผ, ์์ด๋์ด, ๋ฌธ๋ฒ์ ๊ฐ์ง๋ฉฐ ์ด๋ฐ ์ ๋ฐ ํฌํธ๋์ ๋ง๋ค์๊ธฐ ๋๋ฌธ์ด๋ค. FORTRAN II ๋ FORTRAN D ๋ ํ๋ ๋ ์๋ค๋ ์์๋ค. ๊ทธ ์์ ์๋ 40์ฌ ๊ฐ์ง์ ์ปดํ์ผ๋ฌ๋ค์ด ์์๋ค ํ๋ค.
1966๋ ์ "Business Equipment Manufacturers Association"์ ์ฃผ๋ํ์ ์ฒซ ANSI ํ์ค์ด ์ง์ ๋์์ผ๋ฉฐ, ์ด ํ์ค์ 36ํ์ด์ง ์ง๋ฆฌ ๋ฌธ์๋ก ๋ฐ๊ฐ๋์๊ณ FORTRAN66 ๋๋ FORTRAN IV ๋ผ๊ณ ๋ ๋ถ๋ฆฌ๋ฉฐ(์ด๋ FORTRAN IV ์ปดํ์ผ๋ฌ๋ฅผ ๊ทธ ๊ธฐ๋ฐ์ผ๋ก ํ์คํ๊ฐ ์งํ๋์๊ธฐ ๋๋ฌธ์ด๋ค.) ์ ํํ ๋ช ์นญ์ ANSI 3.9-1966์ด๋ค. ์ต์ด์ ANSIํ์ค์ด ๋ฑ์ฅํ๋ฉด์ ๊ธฐ์กด์ ๋ํดํ ์ํฉ์ ์ฝ๊ฐ ์ ๋ฆฌ๊ฐ ๋์๋ค. FREQUENCY๋ฌธ, SENSE๋ฌธ ๊ฐ์ ์ฌ๋ฌ ๋ฒค๋์์ ์์์ ์ผ๋ก ์ฌ์ฉํ๋ ๋ฌธ๋ฒ๋ค์ด ์ฌ๋ผ์ง๊ธฐ ์์ํ๊ธฐ ๋๋ฌธ์ด๋ค. ISO R1539:1972๋ FORTRAN66์ ๋์ํ๋ ISO ํ์ค์ ํด๋นํ๋ค.(ํด๋น ํ์ค์ ISO์ ์น์ธ์ 1972๋ ์ ๋์๋ค.)
์ดํ ๊ฐ์ฅ ๋๋ฆฌ ์๋ ค์ง๊ณ ์ ๋ช ํด์ง ํ์ค์ 1978๋ ์ ANSI์ ์ํด ์น์ธ๋ FORTRAN 77์ผ๋ก ๊ทธ ๋ฌธ๋ฒ ๋ง์ผ๋ก๋ 260์ฌ ํ์ด์ง๊ฐ ๋์๋ค. ํ์ฌ ๋๋๋ก ๋ด๋ ค์ค๊ณ ์๋ ๋ง์ ์์นํด์ ์ฝ๋๋ค์ ์ด ํ์ค์ ๋ฐ๋ผ ์์ฑ๋ ์๊ฐ ๋ง๋ค. FORTRAN77์ ์ฒ์์ผ๋ก ๊ณต์์ ์ผ๋ก OPEN๋ฌธ, CHARACTER ํ ์ ์ธ์ด ์ถ๊ฐ๋์๋ค. CHARACTERํ์ด ์ถ๊ฐ๋๊ธฐ ์ด์ ์ ๊ฐ ์ปดํ์ผ๋ฌ ์์์ ์ผ๋ก ์ฌ์ฉํ๊ณ ์๊ฑฐ๋, Hollerith ์์์ ์ฌ์ฉํ๋ค.[3] ISO 1539:1980 ์ด ISO FORTRAN77์ ํด๋น์ด๋๋ค.
ํํธ, ๋ฏธ ๊ตญ๋ฐฉ๋ถ์์๋ ์ด ANSI FORTRAN 77 ์ ์ถ๊ฐ์ ์ธ ๊ธฐ๋ฅ์ด ํฌํจ๋ ํ์ค์ ๋ฐํํ๋ค. [4] ์ด ๋ฏธ๊ตญ๋ฐฉ๋ถ 77ํ์ค์๋ ๋ค์๊ณผ ๊ฐ์ ๋ฌธ๋ฒ์ด ์ ์ฉ๋์๋ค.
- END DO ๋ฌธ
- IMPLICIT NONE ๋ฌธ
- INCLUDE ๋ฌธ
- ์ ์์ฐ์ฐ์ ๋ํ ๋นํธ์ฐ์ฐ ๋ด์ฅํจ์ ์ถ๊ฐ
- DO WHILE ๋ฃจํ ๋ฌธ
์ด ์ค์์ INCLUDE๋ฌธ์ ์ ์ธํ ๋ฌธ๋ฒ ์ฌํญ์ Fortran 90 ํ์ค์ ๊ณต์์ ์ผ๋ก ํฌํจ์ด ๋๋ค. (ํ์ฌ๋ INCLUDE๋ฌธ์ ํ์ค๋ฌธ๋ฒ์ด ์๋๋ค.)
์ฐจ๊ธฐ ํฌํธ๋ ํ์ค์ ๋ชจ์ํ๋ ํฌํธ๋ ์์ํ์ ๊ตฌ์์ FORTRAN88 ์ด์์ผ๋(66,77,88.. ์ด๋ฐ ๊ท์น์ ๊ฐ์ง๋ ค๊ณ ๋ ธ๋ ฅํ์๋ ๊ฒ ๊ฐ๋ค) ๋ช ๊ฐ์ง ๋ฌธ๋ฒ์ฌํญ์ด ์ถ๊ฐ๋๋ฉฐ ๊ฒฐ๊ตญ Fortran 90์ผ๋ก ๋ฐํ๋๋ค. ISO/IEC 1539 : 1991 (E) ๊ฐ ISO Fortran90์ ๊ณต์ ๋ฌธ์๊ฐ ๋๋ค. ๋ถ๋์ 388์ชฝ์ ๋ฌํ๋ค. ์ด ๋ฒ์ ์์ Modernํ ์ธ์ด๋ก์ ํฌํธ๋์ด ๊ฐ์ ธ์ผ ํ ํน์ง๋ค์ด ๋๋์ ์ผ๋ก ์ ์๋์๊ณ , ๊ธฐํ ๋น ๋ฅด๊ฒ ๋ณํ๊ณ ์๋ ์ปดํจํ ์ ๊ณ์ ํ๋ฆ์ ๋ฐ๋ผ์ก๊ธฐ ์ํ ์๋๊ฐ ๋ฐ์๋์๋ค. FORTRAN โ Fortran์ผ๋ก ์ด๋ ํ์ค์ ์ด๋ฆ์ ์๋ฌธ์๊ฐ ์ฐ์ด๊ธฐ ์์ํ๋ค.
Fortran95๋ Fortran90์ ์ถ๊ฐ์ ์ธ ๊ธฐ๋ฅ์ ํ์์ฑ์ด ์์ด์ ๋ฐํ๋ ๋ง์ด๋ ์ ๋ฐ์ดํธ๋ค. ๋ณ๋ ฌ์ปดํจํ ์ ์ง์ํ๊ธฐ ์ํ FORALL๋ฌธ ๊ฐ์ ๊ฒ(์ด ๋ฌธ๋ฒ์ ์คํจํ ๊ธฐ๋ฅ์ด๋ค.)[5]์ด ์ถ๊ฐ๋์๊ณ , ๊ธฐ์กด์ Non-Modern ํ ๋ฌธ๋ฒ์ผ๋ก ์ฌ๊ฒจ์ง๋ ํ์ค์ด Obsolescent ์์ Deleted๋ก ๋ฐ๋์ผ๋ก, ๊ธฐ์กด ๋ช ๊ฐ์ ๋ฌธ๋ฒ์ ๋ํ ์ญ์ ๊ฐ ์ผ์ด๋ ํ์ค์ด๋ค. ํฌํธ๋ ์์ํ๋ ์ด๋๋ถํฐ 10๋ ๊ธฐ์ค์ ๋ฉ์ด์ ์ ๋ฐ์ดํธ์, ์ค๊ฐ 5๋ ๋จ์์ ๋ง์ด๋ ์ ๋ฐ์ดํธ๋ฅผ ๊ธฐํํ๊ธฐ ์์ํ๋ค.[6]
10๋ ๋จ์ ๋ฉ์ด์ ์ ๋ฐ์ดํธ๋ก Fortran2000์ด ๊ธฐํ๋์์ผ๋, ์ญ์๋ ํฉ์๊ฐ ๋ฆ์ถฐ์ง๊ณ Fortran2003์ผ๋ก ๋ฐํ๋๋ค. ISO/IEC 1539-1:2004(E) ๊ฐ ๊ณต์ ISO Fortran 2003์ ๋ฌธ์๊ฐ ๋๋ค. ๋ฌธ์์ ์์ 585์ชฝ์ผ๋ก ๋์ด๋ฌ๋ค. C์ธ์ด ๋ฐ์ธ๋ฉ ๊ณต์ ์ง์, ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ, IEEE ๋ถ๋์์์ ์ฐ์ฐ ์์ธ ์ฒ๋ฆฌ ๋ชจ๋ ์ง์๋ฑ์ ํฐ ํน์ง์ผ๋ก ํ๋ค. ์ฌ์ค ์ฌ์ฉ์๋ค์ด ํ์ค์ ์ผ๋ก ๊ฐ์ฅ ์ฒด๊ฐํ๋ ๊ฐ์ฅ ํฐ ๊ธฐ๋ฅ์ ISO_C_BINDING ๋ด์ฅ ๋ชจ๋์ด๋ฉฐ, C์ธ์ด์ Mixing์ ๋ํ ๋ฐฉ๋ฒ๋ก ์ ํ๋๋ก ํต์ผ ์ํจ ํ์ ์ ์ธ ํ์ค์ด๋ค.
Fortran2008์ ์ญ์ ๋ง์ด๋ ์ ๋ฐ์ดํธ์ ํด๋นํ๋ค. ๊ธฐ์กด Forall ๊ตฌ๋ฌธ์ด ๋ณ๋ ฌํ๋ฅผ ์ ๋๋ก ์ง์ํ์ง ๋ชปํ๋๋ฐ, ์ด๋ ๋ฌธ๋ฒ์ ์ ์ฝ์ ๋ชจํธํ ๋ถ๋ถ์ ์ํด, ์ ํํ ๊ณ ๋ ค๊ฐ ์๋ค๋ฉด ๊ฑฐ์ ๋ชจ๋ ์ปดํ์ผ๋ฌ์์ ๊ทธ๋ฅ Do Loop๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๊ณผ ๋น๊ตํด ํผํฌ๋จผ์ค์์ ์ด๋์ด ๋ฐ์ํ์ง ์๋ ํํ๋ก ๊ตฌํ๋์ด ๋ฒ๋ ธ๋ค. ์ด๋ฅผ ๋ณด์ํ๊ธฐ ์ํด์ Do concurrent๋ฅผ ์ถ๊ฐํ์๊ณ , 95๋์ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ณ๋ ฌ ํ๋ก๊ทธ๋๋ฐ์ ๋ํ ์ง์์ผ๋ก HPF(High performance fortran)ํ๋ก์ ํธ ์ ๊ธฐ๋ฅ๋ค์ด ๋๊ฑฐ ์ถ๊ฐ๋์์ผ๋ฉฐ, Cray ํฌํธ๋์ ๊ธฐ๋ฅ์ด์๋ Coarray ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋์๋ค.
์ฐจ๊ธฐ ํฌํธ๋ ํ์ค์ Fortran2015๋ก ์์๋๊ณ ์๋ค(๊ธฐํ๋๋ก ๋ ์ ์ด ์์ด์.. ๊ทธ๋ฆฌ ๋ ์ง๋ ์ ์ ์์ง๋ง). ๋ฉ์ด์ ์ ๋ฐ์ดํธ๊ฐ ์์ด์ผ ํ ์ฐจ๋ก์ด์ง๋ง, ๋ง์ด๋ ์ ๋ฐ์ดํธ๋ก ๊ธฐํ๋๊ณ ์๋ค. C์ธ์ด์ ํค๋ํ์ผ์ ์ฌ์ฉํ๋ ๊ฒ๊ณผ ๊ฐ์ C ๋ฐ์ธ๋ฉ์ ๋ํ ํ์ฅ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ๊ฒ์ ์ฃผ์ ๊ณจ์๋ก ํ๋ค.
ํ์ฌ ๋๋ถ๋ถ์ "์ปดํ์ผ๋ฌ"๋ ๋ ๊ฑฐ์(ํ์ ํธํ)๋ฅผ ๊ธฐ๋ณธ์ผ๋ก ์ ์งํด ์ฃผ๋ฉฐ, ๊ธฐ๋ณธ์ ์ผ๋ก ์๊ธฐ๋ค๋ง์ ํ์ฅ๊ธฐ๋ฅ์ ์ถ๊ฐ์ ์ผ๋ก ์ ๊ณตํ๋ค. ์ด๊ธฐ ์๋์ ๊ฐ ์ปดํ์ผ๋ฌ๋ง๋ค ์ ๊ฐ๊ฐ ์ง์ํ๋ ๊ธฐ๋ฅ๋ค์ ๊ณ์ ์ง์ํ๋ฉฐ, ์ปดํจํฐ ํ๊ฒฝ์ ์ถ๊ฐ์ ์๊ตฌ๋ค์ ํ์ค๋ณด๋ค ๋จผ์ ์ ๊ณตํ๋ ๊ฒ์ ์ปดํ์ผ๋ฌ๋ฅผ ํ๋งคํ๋ ์์ ํ์ฌ์ ๊ธฐ๋ณธ์ ํ๋์ด๋ค. ํ์ค์ ์๋์ง๋ง ์ฌ๋ฌ ์ปดํ์ผ๋ฌ์์ ๋น์ทํ๊ฒ ์ง์ํ๋ ๋ฌธ๋ฒ์ ํนํ ์ฌ์ฉ์์๊ฒ ์ฐฉ๊ฐ์ ์ผ์ผํค๊ธฐ๋ ํ๋ค. ์ด๋ค ํ์ฌ์์ ํน์ง์ ์ผ๋ก ์ ๊ณตํ๋ ๋ฌธ๋ฒ์ด ํ์ค์ผ๋ก ๋ค์ด๊ฐ ์๋ ์๊ณ ์๋ ์๋ ์๋ค. ์ฌ๋ฌ ์ปดํ์ผ๋ฌ์์ ์ง์ํ์ง๋ง, ํ์ค์ ์๋ ๋ฌธ๋ฒ/๋ด์ฅํ๋ก์์ ๋ค์ด ๋ค์ ์กด์ฌํ๋ค. ์ด๊ฒ์ ๋ณธ์ง์ ์ผ๋ก ๊ฐ ์ฝ๋์ ์ด์์ฑ์ ์ ์ง์ ์ด๋ ค์์ ๋ง๋ค๋ฉฐ, ๊ฐ ์ปดํ์ผ๋ฌ์ ๋ํ ์์กด์ฑ์ ๋ฎ์ถ๊ธฐ ์ํด์๋ ํ์ค์ ๋ถํฉํ๋ ์ฝ๋๋ฅผ ์์ฑํด์ผ ํ๋ค.
ํ์ค์ด ๊ณ์ ๋์ค๋ฉด์ obsolescent[7], deleted[8]๋ก ๊ตฌ๋ณ๋๋ ๋ฌธ๋ฒ ์ฌํญ๋ค์ด ๋์จ๋ค.
์ดํ๋ 90์์ obsolescent๋ก ๋ถ๋ฅ๋์๋ ๋ฌธ๋ฒ์ด๋ค.
- Arithmetic IF
- Real and double precision DO control variables and DO loop control expressions
- Shared DO termination and termination on a statement other than END DO or CONTINUE statement.
- Branching to an END IF statement from outside its IF block
- Alternate return
- PAUSE statement
- ASSIGN statement and assigned GO TO statements
- Assigned FORMAT specifiers
- H edit descriptor (์ผ๋ช ํ๋ฌ๋ฆฌ์ค ๋ฌธ์์ด)
90์์ obsolescent๋ก ๋ถ๋ฅ๋ ํญ๋ชฉ์ ์์ง๋ง, 77์ ๋ฌธ๋ฒ ์ค์์ deleted ๋ ๊ฒ์ด ์๋ค. ์ดํ 95์์ ์ด์ค 6๊ฐ์ง๊ฐ deleted ๋์๋ค. ๋๋จธ์ง๋ ํ์ฌ์ ํ์ค๊น์ง๋ obsolescent๋ก ๋ชฉ์จ์ ๋ถ์งํ๊ณ ์๋ค.
์ดํ๋ 95์์ ์ญ์ (deleted)๋ ๋ฌธ๋ฒ์ด๋ค. ๋ฐ๋ผ์ ํ์ฌ(2008์ด ๊ฐ์ฅ ์ต๊ทผ์ด๋ฉฐ ์์ผ๋ก 2015๊ฐ ๋ฐํ๋ ๊ฒ์ผ๋ก ์์๋๋ ์์ )๋ ํฌํธ๋ ํ์ค์ด ์๋ ๋ฌธ๋ฒ์ด๋ค.
- ASSIGN and assigned GO TO statements (ํ ๋นํ GO TO)
- Assigned FORMAT specifier ( ํ ๋นํ FORMAT)
- Branching to an END IF statement from outside its IF block (IF ๋ธ๋ก์ ์ธ๋ถ์์ END IF ๋ฌธ์ผ๋ก ๋ถ๊ธฐ)
- H edit descriptor (ํ๋ฌ๋ฆฌ์ค ๋ฌธ์์ด)
- PAUSE statement (PAUSE๋ฅผ ์ด์ฉํ ๋ฉ์ถค)
- Real and double precision DO control variables and DO loop control expressions ( DO ๋ฃจํ ์ ์ด๋ฅผ ์ค์ํ ๋ณ์๋ก ํ๋ ๊ฒ)
๊ฐ์ฅ ์ต๊ทผ์ธ 2008์์ obsolescent๋ ๋ค์๊ณผ ๊ฐ๋ค.
- Arithmetic IF
- Shared DO termination and termination on a statement other than END DO or CONTINUE
- Alternate return
- Computed GO TO
- Statement functions
- DATA statements amongst executable statements
- Assumed length character functions
- Fixed form source
- CHARACTER* form of CHARACTER declaration
- ENTRY statements
character์ ์ธ์ * ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ, ๊ณ ์ ํ์์์ค ํ์ ๋ฑ๋ฑ์ด ๋ชจ๋ obsolescent ์ธ ์ ์ ๋์ฌ๊ฒจ ๋ด์ผ ํ๋ค.
2008 ํ์ฌ ๋ค์์ ์ถ๊ฐ์ ํญ๋ชฉ์ deleted๊ฐ ์๋ค.
- Vertical format control.
2.1. ํ์ค์ ๋ํ ์คํด๋ค[ํธ์ง]
ํฌํธ๋์ ์ ๋
77, 90์ ๋ ๋ฒ๋ฆฌ๊ธฐ๋ฅผ ์ข์ํ๋ค. 77, 90 ํ์ค์ ์ ๋๋ก ๊ตฌ๋ณํ ์ค ์๋ฉด์.. ์ ๋๋ก ์ฐ์ธ ๋ฌธ์๊ฐ ๋ณ๋ก ์๋ค(โํนํ, ํ๊ธ๋ก ๋โ) ์ฌ์ง์ด ๋ง์ ์ฑ
๋ค๋ ๊ทธ๋ฌํ์ง ๋ชปํ๋ค. 72๋
์ ํ์ํ C์ธ์ด๋ ์ฌ๋ฟ ํ์ค์ ๊ฐ์ ํด๊ฐ๊ณ ์๊ณ ๋ฐ๋์ด ๊ฐ๊ณ ์์์๋, ์ ๋
ํฌํธ๋์ ๊ณ ๋์ด๋ผ๊ณ ์น๋ถํ๋ ์น๊ธฐ์ด๋ฆฐ ์คํด๋ค์ด ๋์น๋ค.
1. Fortran90์ FORTRAN77์ ์์ ํ ํฌํจํ๋ ํ์ค์ด๋ค. (deleted ๋ ํญ๋ชฉ์ด ์กด์ฌํ์ง ์๋๋ค.) ๋ชจ๋ "ํ์ค" FORTRAN77 ์ฝ๋๋ ์์ ํ๊ฒ Fortran90์ด๋ค. ์ฝ๋์ "๋ชจ์"์ด๋ ํ์ฅ์๋ช ์ 77์ด๋ 90์ด๋๋ฅผ ๋๋๋ ๊ธฐ์ค์ด ์๋๋ค.
2. Fixed form์ด๋ Free form ์ด๋๋ ์ฝ๋ฉ ์คํ์ผ ๋ฌธ์ ์ด๋ค. ๋ฌผ๋ก 77์์ Fixed form ๋ฐ์ ์๋ค. (90 ์ดํ์ ๊ธฐ์ค์ผ๋ก๋ ๊ทธ์ ์ ํ์ ๋ฌธ์ ์ด๋ค) ๋๋ถ๋ถ์ ์ปดํ์ผ๋ฌ์์ fixed, free form์ ํ์ฅ์๋ก ์ฒดํฌํ๋ค.ํ์ฅ์์ ํ์ค์ ์๋ฏธ๋ ๋ด๊ฒจ์์ง ์๋ค.
3. 77์ ์ด๋ฆ์ ๋ฌ๊ณ ์๋ ์ปดํ์ผ๋ฌ๋ค๋ 90์์์ผ ํ์ค์ธ ๊ธฐ๋ฅ๋ค์ ๋ค์ "ํ์ฅ ๊ธฐ๋ฅ"์ผ๋ก ์ง์ํ๋ค. 77ํ์ค๋ง ๋ฑ ์ง์ํ๋ ๊ฒ์ด ์๋๋ค. 80๋ ๋ ํ๋ฐ์ด๋ 90๋ ๋์ดํ ๋ง๋ค์ด์ง 77์ด๋ฆ์ ๋จ ์ปดํ์ผ๋ฌ๋ค์ ๋๋ค์๊ฐ (END DO, IMPLICIT NONE ๋ฌธ ๊ฐ์ - ANSI ํ์ค์ด ์๋ ๋ฏธ๊ตญ ๊ตญ๋ฐฉ๋ถ๋ฒ์ ์ ํ์ฅ77๋ถํฐ ์ถ๊ฐ๋ ๊ธฐ๋ฅ. ๊ณต์์ ์ผ๋ก 90์ด์์ ๋ฌธ๋ฒ์ผ๋ก ๋ถ๋ ค์ผ ํ๋ค.) ์ดํ์ ํ์คํ๋ ๋ฌธ๋ฒ์ ํ์ฅ๊ธฐ๋ฅ์ผ๋ก ์ง์ํ๋ค.
1. Fortran90์ FORTRAN77์ ์์ ํ ํฌํจํ๋ ํ์ค์ด๋ค. (deleted ๋ ํญ๋ชฉ์ด ์กด์ฌํ์ง ์๋๋ค.) ๋ชจ๋ "ํ์ค" FORTRAN77 ์ฝ๋๋ ์์ ํ๊ฒ Fortran90์ด๋ค. ์ฝ๋์ "๋ชจ์"์ด๋ ํ์ฅ์๋ช ์ 77์ด๋ 90์ด๋๋ฅผ ๋๋๋ ๊ธฐ์ค์ด ์๋๋ค.
2. Fixed form์ด๋ Free form ์ด๋๋ ์ฝ๋ฉ ์คํ์ผ ๋ฌธ์ ์ด๋ค. ๋ฌผ๋ก 77์์ Fixed form ๋ฐ์ ์๋ค. (90 ์ดํ์ ๊ธฐ์ค์ผ๋ก๋ ๊ทธ์ ์ ํ์ ๋ฌธ์ ์ด๋ค) ๋๋ถ๋ถ์ ์ปดํ์ผ๋ฌ์์ fixed, free form์ ํ์ฅ์๋ก ์ฒดํฌํ๋ค.ํ์ฅ์์ ํ์ค์ ์๋ฏธ๋ ๋ด๊ฒจ์์ง ์๋ค.
3. 77์ ์ด๋ฆ์ ๋ฌ๊ณ ์๋ ์ปดํ์ผ๋ฌ๋ค๋ 90์์์ผ ํ์ค์ธ ๊ธฐ๋ฅ๋ค์ ๋ค์ "ํ์ฅ ๊ธฐ๋ฅ"์ผ๋ก ์ง์ํ๋ค. 77ํ์ค๋ง ๋ฑ ์ง์ํ๋ ๊ฒ์ด ์๋๋ค. 80๋ ๋ ํ๋ฐ์ด๋ 90๋ ๋์ดํ ๋ง๋ค์ด์ง 77์ด๋ฆ์ ๋จ ์ปดํ์ผ๋ฌ๋ค์ ๋๋ค์๊ฐ (END DO, IMPLICIT NONE ๋ฌธ ๊ฐ์ - ANSI ํ์ค์ด ์๋ ๋ฏธ๊ตญ ๊ตญ๋ฐฉ๋ถ๋ฒ์ ์ ํ์ฅ77๋ถํฐ ์ถ๊ฐ๋ ๊ธฐ๋ฅ. ๊ณต์์ ์ผ๋ก 90์ด์์ ๋ฌธ๋ฒ์ผ๋ก ๋ถ๋ ค์ผ ํ๋ค.) ์ดํ์ ํ์คํ๋ ๋ฌธ๋ฒ์ ํ์ฅ๊ธฐ๋ฅ์ผ๋ก ์ง์ํ๋ค.
3. ํน์ง[ํธ์ง]
์ฐ์ ๊ธฐํธ๋ฅผ ๊ทธ๋๋ก ์ฌ์ฉํ ์ ์์ผ๋ฉฐ, ์ผ๊ฐํจ์ยท์ง์ํจ์ยท๋์ํจ์ ๋ฑ๊ณผ ๊ฐ์ ๊ธฐ์ด์ ์ธ ์ํ ํจ์๋ค์ ๊ทธ๋๋ก ๋ถ๋ฌ๋ด์ด ์ธ ์ ์๋ค. ๋ ์ค์๋ง์ด ์๋๋ผ ๋ณต์์๋ฅผ ๊ทธ๋๋ก ๋ณ์ ํ์ผ๋ก ์ธ ์ ์๋ค. ๋ฌผ๋ก ์ด๋ฌํ ์ฅ์ ์ ํ์ฌ์ ๊ฐ์ข
ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์๋ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฑ์ ํตํด์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณต๋๋ ๊ธฐ๋ฅ์ด์ง๋ง, ๋น์์๋ ๊ต์ฅํ ํ๊ธฐ์ ์ธ ๋ฐฉ๋ฒ์ด์๋ค. ๋ฐฐ์ด์ ๋ํด์๋ ๋ง์ด ์ง์ํด ์ค์, ์๋ ์ ๋์จ ์ธ์ด์์๋ ๋ถ๊ตฌํ๊ณ MATLAB์์์ฒ๋ผ ์ฝ๊ฒ ๋ฐฐ์ด์ ๋ค๋ฃฐ ์ ์๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ์ ์ฐจ์ ํ๋ก๊ทธ๋๋ฐ(procedural programming)์ด์ง๋ง 90, 2003์ ๊ฑฐ์น๋ฉด์ OOP์ ์์๋ฅผ ๋ง์ด ๋ฃ๊ฒ ๋์๋ค. ํ์ง๋ง ํ์ํธํ์ ์ ์งํด์ผ ํ๋ฏ๋ก ์๋ฌด๋๋ C++[9]์ ๋นํด์๋ ๋ฌธ๋ฒ์ /๊ตฌ์กฐ์ ์ผ๋ก ๋ถํธํ ๋ถ๋ถ์ด ๋ง๋ค.
C์์ ํฐ ์ฐจ์ด์ ์ค ํ๋๋ก ๋ฐฐ์ด์ ๋ฐฐ์น ์์๊ฐ ์๋ก ๋ค๋ฅด๋ค. C๋ Row-Major Order๋ฅผ ๋ฐ๋ฅด๋ฉฐ, Fortran์ Column-Major Order๋ฅผ ๋ฐ๋ฅธ๋ค. C์์๋ (1,1) ๋ค์์ด (1,2)์ด์ง๋ง, ํฌํธ๋์์๋ (2,1)๊ฐ ๋๋ค. ๋ฐ๋ผ์ ๋ค๋ฅธ ์ธ์ด์ ํจ๊ป ํ๋ก๊ทธ๋๋ฐ์ ํ ๋๋ ๋ณ์๋ฅผ ๋๊ฒจ์ค ๋ ์์๋ฅผ ๋ฐ๊พธ์ด ์ฃผ์ด์ผ ํ๋ค. ๋ํ ๋ฐ๋ณต ๊ณ์ฐ์ ํ ๋ ๊ฐ์ฅ ์ฒ์ ์ธ์๋ถํฐ ๋๋ ค ์ค์ผ ์ฑ๋ฅ์ ์ ํ๊ฐ ์๋ค. ๋ํ, ๋ฐฐ์ด์ ์์ ์ซ์๊ฐ 0์ด ์๋ 1๋ถํฐ ์์์ด๋ค. ์ฌ์ฉ์๊ฐ ๋ฐฐ์ด์ ์ธ๋ฑ์ค๋ฅผ ์กฐ์ ํ๋ ๊ฒ์ด ๊ฐ๋ฅํ ๊ฒ์ ํฌํธ๋์ ํน์ง ์ค ํ๋์ด๋ค. ๋ฐฐ์ด์ ์ธ๋ฑ์ค๋ฅผ -100 ~ 100์ฒ๋ผ ์ง์ ํ๋ ๊ฒ์ด ๊ฐ๋ฅํ๋ค.
์ด๊ธฐ ๋ฒ์ ์ ๋๋ฌธ์๋ง ์ธ์ ํ๊ธฐ ๋๋ฌธ์ ๊ฐ๋ ์ฑ์ด ๋ธ๋ฆฐ๋ค. ๊ทธ ์ด์ ๋ ํค๋ณด๋๊ฐ ์๋ ์์ ์ฒ๊ณต ์นด๋๋ก ํ๋ก๊ทธ๋จ์ ์ ๋ ฅํด์ผ ํ๋๋ฐ ์ฌ๊ธฐ์ ์๋ฌธ์๊ฐ ์์๊ธฐ ๋๋ฌธ.
ํ๊ต ๊ต์ก์ ๋ค์๊ณผ ๊ฐ๋ค. ์์ธ๋ํ๊ต ์๋ฆฌ๊ณผํ๋ถ๋ ํต๊ณํ๊ณผ, ์ฐ์ธ๋ํ๊ต ์ด๊ณผ๋ํ, ๊ฒฝํฌ๋ํ๊ต ์ฐ์ฃผ๊ณผํ๊ณผ์ ์์๋ ฅ๊ณตํ๊ณผ, ์์ธ์๋ฆฝ๋ํ๊ต ํ ๋ชฉ๊ณตํ๊ณผ, ๋ถ์ฐ๋ํ๊ต ์กฐ์ ํด์๊ณตํ๊ณผ, ๋ถ๊ฒฝ๋ํ๊ต ํ๊ฒฝ๋๊ธฐ๊ณผํ๊ณผ, ํ๊ตญํญ๊ณต๋ํ๊ต ํญ๊ณต์ฐ์ฃผ ๋ฐ ๊ธฐ๊ณ๊ณตํ๊ณผ, ํ๊ตญํด์๋ํ๊ต ๊ณต๊ณผ๋ํ, ํ์ต๋ํ๊ต ๊ธฐ๊ณ์์คํ ๋์์ธ๊ณตํ๊ณผ ์์นํด์๊ณผ๋ชฉ, ๊ฒฝ๋ถ๋ํ๊ต ํ ๋ชฉ๊ณตํ๊ณผ์ ์ง๊ตฌ์์คํ ๊ณผํ๋ถ ์ฒ๋ฌธ๋๊ธฐ๊ณผํ์ ๊ณต, ์๋๋ํ๊ต ๊ธฐ๊ณ๊ณตํ๊ณผ, ํ์๋ํ๊ต ERICA์บ ํผ์ค ์ํํธ์จ์ดํ๋ถ ์์นํด์ ๊ณผ๋ชฉ.
๊ธฐ๋ณธ์ ์ผ๋ก ์ ์ฐจ์ ํ๋ก๊ทธ๋๋ฐ(procedural programming)์ด์ง๋ง 90, 2003์ ๊ฑฐ์น๋ฉด์ OOP์ ์์๋ฅผ ๋ง์ด ๋ฃ๊ฒ ๋์๋ค. ํ์ง๋ง ํ์ํธํ์ ์ ์งํด์ผ ํ๋ฏ๋ก ์๋ฌด๋๋ C++[9]์ ๋นํด์๋ ๋ฌธ๋ฒ์ /๊ตฌ์กฐ์ ์ผ๋ก ๋ถํธํ ๋ถ๋ถ์ด ๋ง๋ค.
C์์ ํฐ ์ฐจ์ด์ ์ค ํ๋๋ก ๋ฐฐ์ด์ ๋ฐฐ์น ์์๊ฐ ์๋ก ๋ค๋ฅด๋ค. C๋ Row-Major Order๋ฅผ ๋ฐ๋ฅด๋ฉฐ, Fortran์ Column-Major Order๋ฅผ ๋ฐ๋ฅธ๋ค. C์์๋ (1,1) ๋ค์์ด (1,2)์ด์ง๋ง, ํฌํธ๋์์๋ (2,1)๊ฐ ๋๋ค. ๋ฐ๋ผ์ ๋ค๋ฅธ ์ธ์ด์ ํจ๊ป ํ๋ก๊ทธ๋๋ฐ์ ํ ๋๋ ๋ณ์๋ฅผ ๋๊ฒจ์ค ๋ ์์๋ฅผ ๋ฐ๊พธ์ด ์ฃผ์ด์ผ ํ๋ค. ๋ํ ๋ฐ๋ณต ๊ณ์ฐ์ ํ ๋ ๊ฐ์ฅ ์ฒ์ ์ธ์๋ถํฐ ๋๋ ค ์ค์ผ ์ฑ๋ฅ์ ์ ํ๊ฐ ์๋ค. ๋ํ, ๋ฐฐ์ด์ ์์ ์ซ์๊ฐ 0์ด ์๋ 1๋ถํฐ ์์์ด๋ค. ์ฌ์ฉ์๊ฐ ๋ฐฐ์ด์ ์ธ๋ฑ์ค๋ฅผ ์กฐ์ ํ๋ ๊ฒ์ด ๊ฐ๋ฅํ ๊ฒ์ ํฌํธ๋์ ํน์ง ์ค ํ๋์ด๋ค. ๋ฐฐ์ด์ ์ธ๋ฑ์ค๋ฅผ -100 ~ 100์ฒ๋ผ ์ง์ ํ๋ ๊ฒ์ด ๊ฐ๋ฅํ๋ค.
์ด๊ธฐ ๋ฒ์ ์ ๋๋ฌธ์๋ง ์ธ์ ํ๊ธฐ ๋๋ฌธ์ ๊ฐ๋ ์ฑ์ด ๋ธ๋ฆฐ๋ค. ๊ทธ ์ด์ ๋ ํค๋ณด๋๊ฐ ์๋ ์์ ์ฒ๊ณต ์นด๋๋ก ํ๋ก๊ทธ๋จ์ ์ ๋ ฅํด์ผ ํ๋๋ฐ ์ฌ๊ธฐ์ ์๋ฌธ์๊ฐ ์์๊ธฐ ๋๋ฌธ.
ํ๊ต ๊ต์ก์ ๋ค์๊ณผ ๊ฐ๋ค. ์์ธ๋ํ๊ต ์๋ฆฌ๊ณผํ๋ถ๋ ํต๊ณํ๊ณผ, ์ฐ์ธ๋ํ๊ต ์ด๊ณผ๋ํ, ๊ฒฝํฌ๋ํ๊ต ์ฐ์ฃผ๊ณผํ๊ณผ์ ์์๋ ฅ๊ณตํ๊ณผ, ์์ธ์๋ฆฝ๋ํ๊ต ํ ๋ชฉ๊ณตํ๊ณผ, ๋ถ์ฐ๋ํ๊ต ์กฐ์ ํด์๊ณตํ๊ณผ, ๋ถ๊ฒฝ๋ํ๊ต ํ๊ฒฝ๋๊ธฐ๊ณผํ๊ณผ, ํ๊ตญํญ๊ณต๋ํ๊ต ํญ๊ณต์ฐ์ฃผ ๋ฐ ๊ธฐ๊ณ๊ณตํ๊ณผ, ํ๊ตญํด์๋ํ๊ต ๊ณต๊ณผ๋ํ, ํ์ต๋ํ๊ต ๊ธฐ๊ณ์์คํ ๋์์ธ๊ณตํ๊ณผ ์์นํด์๊ณผ๋ชฉ, ๊ฒฝ๋ถ๋ํ๊ต ํ ๋ชฉ๊ณตํ๊ณผ์ ์ง๊ตฌ์์คํ ๊ณผํ๋ถ ์ฒ๋ฌธ๋๊ธฐ๊ณผํ์ ๊ณต, ์๋๋ํ๊ต ๊ธฐ๊ณ๊ณตํ๊ณผ, ํ์๋ํ๊ต ERICA์บ ํผ์ค ์ํํธ์จ์ดํ๋ถ ์์นํด์ ๊ณผ๋ชฉ.
3.1. ์๋ ๋ ผ์[ํธ์ง]
๋ฌผ๋ฆฌํ ์ปค๋ฎค๋ํฐ์์ ์ข
์ข
๋ณผ์ ์๋ ๋ง๋
๋ก๋ฐฅ. ์์นํด์์ ์์ด์ ํฌํธ๋์ ์ฌ์ฉํ๋ ๊ฒ์ด ํญ์ ์ข๋ค๋ ์ด์ผ๊ธฐ๋ ์๋์ง๋ง, Fortran 77์ ์ญ๋์ ๋ง๊ป ๋ฐํํ ์ ์๋ ์๊ณ ๋ฆฌ์ฆ์ ๋๋ฆด ๊ฒฝ์ฐ C++์ 2๋ฐฐ ์ ๋์ ์๋๋ฅผ ๋ธ๋ค. ์ฐธ์กฐ
์ญ๋์ ๋ฐํํ ์ ์๋ ์๋ก๋ ์ฌ๊ท์ ํธ์ถ์ ์ฐ์ง ์๊ณ ํด๊ฒฐํ ์ ์๋ ์ข ๋ฅ๊ฐ ์๋ค. ํฌํธ๋์ ์๋ ํจ์์ ์ฌ๊ท์ ํธ์ถ์ ์ง์ํ์ง ์์๋ค. ์ฌ๊ทํจ์๋ฅผ ํธ์ถํ๋ฉด ๊ทธ๋๋ง๋ค ํ์ํ ์ค๋ฒํค๋๋ฅผ ์ํํด์ผ ํ๊ณ , ์คํ์ ์๋ ๋ณ์๋ฅผ ์ฐธ์กฐํ ๋ ํ๋ค๋ฆฌ ๊ฑด๋ ๊ฐ์ ์ ์ผ๋ก ์ ๊ทผํด์ผ ํ๋ ๋ฑ ์๋์ ๋ถ๋ฆฌํ ์ ์ด ์๋ค. ํฌํธ๋์ ์๋๊ฐ ๋น ๋ฅธ ์ด์ ๊ฐ ๋ฐ๋ก ์ด๊ฒ. 90 ํ์ค์์๋ ์ฌ๊ทํจ์๋ฅผ ์ง์ํ์ง๋ง, ์ฌ์ฉ์ ์ฃผ์๋ฅผ ์ํ๋ค.
๋ฌผ๋ก ๋ณต์กํ ์๋ฃ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง ์๊ณ ๋ฆฌ์ฆ์ ์ง์ผ ํ ๊ฒฝ์ฐ, ํฌํธ๋77๋ก ์ง๋ค๊ฐ ๋์๋ฒ๋ฆด์ง๋ ๋ชจ๋ฅธ๋ค.
์๋ ์ฐจ์ด๊ฐ ์๊ธฐ๋ ์์ธ์ ์ธ์ด์ ์ปดํ์ผ๋ฌ์ ํ๋ก๊ทธ๋จ ์ต์ ํ, ๋๋ Application ํ๋ก๊ทธ๋๋จธ์ ํ๋ก๊ทธ๋๋ฐ ์ต์ ํ ๋ฌธ์ ๋ค. ์ด๋ค ์ปดํ์ผ๋ฌ๊ฐ ์ด๋ค ๋ฌธ๋ฒ์ ์ด๋ค Architecture์ ๋ง๊ฒ ์ต์ ํ ํด๋ด๋๊ฐ๋ฅผ ๊ณ ๊ธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋ ๋ฒจ์์ ๊ฒฐ์ ๋ ์ ์๋ค. C์ Fortran ๋ ์ธ์ด ๋ชจ๋ ๊ณ ๊ธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ์ปดํ์ผ๋ฌ์ ์ํด ๋ฐ์ด๋๋ฆฌ ์ฝ๋๋ก ๋ณํ๋์ด์ผ ํ๋ค. ์ฆ, ์๋ฐํ ๋งํ์๋ฉด C๊ฐ ํฌํธ๋๋ณด๋ค ๋น ๋ฅธ ๊ฒ ์๋๋ผ C ์ปดํ์ผ๋ฌ๋ฅผ ๊ฑฐ์น ํ๋ก๊ทธ๋จ์ด ํฌํธ๋ ์ปดํ์ผ๋ฌ๋ฅผ ๊ฑฐ์น ํ๋ก๊ทธ๋จ๋ณด๋ค ๋น ๋ฅธ ๊ฑฐ๋ค.
C99 ํ์ค ๋ฐํ ์ด์ ์ ํฌํธ๋์ด (C์ ๋ํด ์๋์ ์ผ๋ก)๊ฐ์ง ์ต์ ํ์ ์ ์ผํ ์ด์ ์ ํ๋ก์์ ์ ์ธ์๊ฐ (pointer ๋๋ target ์์ฑ์ ๊ฐ์ง์ง ์๋๋ค๋ฉด) ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ค๋ฒ๋ฉ๋์ง ์์์ ๊ฐ์ ํ๋ฏ๋ก ์ปดํ์ผ๋ฌ์ ์ ์ฅ์์ ์ต์ ํ๋ ์ฝ๋๋ฅผ ์์ฑํ๋๋ฐ ์ ํฉํ๋ค๋ ๊ฒ์ด๋ค. C์ธ์ด์์ C99 ํ์ค๋ถํฐ๋ restrict keyword๋ฅผ ํ๋ก๊ทธ๋๋จธ๊ฐ ๋ช ์ํ์ฌ ํฌ์ธํฐ๊ฐ ๊ฐ๋ฆฌํค๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ด ์ค๋ฒ๋ฉ ๋ ์ ์๋์ง ๊ทธ๋ ์ง ์์ ์ง๋ฅผ ์ปดํ์ผ๋ฌ์๊ฒ ๋ช ์์ , ์ ํ์ ์ผ๋ก ์๋ ค์ค ์ ์๋๋ก ํ์ฌ ํด๊ฒฐํ์๋ค.[10][11][12] ์ฆ, ํฌ์ธํฐ ์จ๋ฆฌ์ด์ฑ์ ์ ํ์ ๊ณผ๊ฑฐ์๋ ๊ฐ ์ปดํ์ผ๋ฌ์์ ์ปดํ์ผ ์ ์ต์ ํ ์ต์ ์ ํตํด ๊ฒฐ์ ํ์์ผ๋ ํ์ฌ๋ ์ธ์ด์ ๋ฌธ๋ฒ ํ์ค์ผ๋ก ํฌํจํ๋๋ก ํ์๋ค.
์ญ๋์ ๋ฐํํ ์ ์๋ ์๋ก๋ ์ฌ๊ท์ ํธ์ถ์ ์ฐ์ง ์๊ณ ํด๊ฒฐํ ์ ์๋ ์ข ๋ฅ๊ฐ ์๋ค. ํฌํธ๋์ ์๋ ํจ์์ ์ฌ๊ท์ ํธ์ถ์ ์ง์ํ์ง ์์๋ค. ์ฌ๊ทํจ์๋ฅผ ํธ์ถํ๋ฉด ๊ทธ๋๋ง๋ค ํ์ํ ์ค๋ฒํค๋๋ฅผ ์ํํด์ผ ํ๊ณ , ์คํ์ ์๋ ๋ณ์๋ฅผ ์ฐธ์กฐํ ๋ ํ๋ค๋ฆฌ ๊ฑด๋ ๊ฐ์ ์ ์ผ๋ก ์ ๊ทผํด์ผ ํ๋ ๋ฑ ์๋์ ๋ถ๋ฆฌํ ์ ์ด ์๋ค. ํฌํธ๋์ ์๋๊ฐ ๋น ๋ฅธ ์ด์ ๊ฐ ๋ฐ๋ก ์ด๊ฒ. 90 ํ์ค์์๋ ์ฌ๊ทํจ์๋ฅผ ์ง์ํ์ง๋ง, ์ฌ์ฉ์ ์ฃผ์๋ฅผ ์ํ๋ค.
๋ฌผ๋ก ๋ณต์กํ ์๋ฃ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง ์๊ณ ๋ฆฌ์ฆ์ ์ง์ผ ํ ๊ฒฝ์ฐ, ํฌํธ๋77๋ก ์ง๋ค๊ฐ ๋์๋ฒ๋ฆด์ง๋ ๋ชจ๋ฅธ๋ค.
์๋ ์ฐจ์ด๊ฐ ์๊ธฐ๋ ์์ธ์ ์ธ์ด์ ์ปดํ์ผ๋ฌ์ ํ๋ก๊ทธ๋จ ์ต์ ํ, ๋๋ Application ํ๋ก๊ทธ๋๋จธ์ ํ๋ก๊ทธ๋๋ฐ ์ต์ ํ ๋ฌธ์ ๋ค. ์ด๋ค ์ปดํ์ผ๋ฌ๊ฐ ์ด๋ค ๋ฌธ๋ฒ์ ์ด๋ค Architecture์ ๋ง๊ฒ ์ต์ ํ ํด๋ด๋๊ฐ๋ฅผ ๊ณ ๊ธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋ ๋ฒจ์์ ๊ฒฐ์ ๋ ์ ์๋ค. C์ Fortran ๋ ์ธ์ด ๋ชจ๋ ๊ณ ๊ธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ์ปดํ์ผ๋ฌ์ ์ํด ๋ฐ์ด๋๋ฆฌ ์ฝ๋๋ก ๋ณํ๋์ด์ผ ํ๋ค. ์ฆ, ์๋ฐํ ๋งํ์๋ฉด C๊ฐ ํฌํธ๋๋ณด๋ค ๋น ๋ฅธ ๊ฒ ์๋๋ผ C ์ปดํ์ผ๋ฌ๋ฅผ ๊ฑฐ์น ํ๋ก๊ทธ๋จ์ด ํฌํธ๋ ์ปดํ์ผ๋ฌ๋ฅผ ๊ฑฐ์น ํ๋ก๊ทธ๋จ๋ณด๋ค ๋น ๋ฅธ ๊ฑฐ๋ค.
C99 ํ์ค ๋ฐํ ์ด์ ์ ํฌํธ๋์ด (C์ ๋ํด ์๋์ ์ผ๋ก)๊ฐ์ง ์ต์ ํ์ ์ ์ผํ ์ด์ ์ ํ๋ก์์ ์ ์ธ์๊ฐ (pointer ๋๋ target ์์ฑ์ ๊ฐ์ง์ง ์๋๋ค๋ฉด) ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ค๋ฒ๋ฉ๋์ง ์์์ ๊ฐ์ ํ๋ฏ๋ก ์ปดํ์ผ๋ฌ์ ์ ์ฅ์์ ์ต์ ํ๋ ์ฝ๋๋ฅผ ์์ฑํ๋๋ฐ ์ ํฉํ๋ค๋ ๊ฒ์ด๋ค. C์ธ์ด์์ C99 ํ์ค๋ถํฐ๋ restrict keyword๋ฅผ ํ๋ก๊ทธ๋๋จธ๊ฐ ๋ช ์ํ์ฌ ํฌ์ธํฐ๊ฐ ๊ฐ๋ฆฌํค๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ด ์ค๋ฒ๋ฉ ๋ ์ ์๋์ง ๊ทธ๋ ์ง ์์ ์ง๋ฅผ ์ปดํ์ผ๋ฌ์๊ฒ ๋ช ์์ , ์ ํ์ ์ผ๋ก ์๋ ค์ค ์ ์๋๋ก ํ์ฌ ํด๊ฒฐํ์๋ค.[10][11][12] ์ฆ, ํฌ์ธํฐ ์จ๋ฆฌ์ด์ฑ์ ์ ํ์ ๊ณผ๊ฑฐ์๋ ๊ฐ ์ปดํ์ผ๋ฌ์์ ์ปดํ์ผ ์ ์ต์ ํ ์ต์ ์ ํตํด ๊ฒฐ์ ํ์์ผ๋ ํ์ฌ๋ ์ธ์ด์ ๋ฌธ๋ฒ ํ์ค์ผ๋ก ํฌํจํ๋๋ก ํ์๋ค.
3.2. ํฌํธ๋์ด ์ฌ์ฉ๋๋ ์[ํธ์ง]
ํฌํธ๋์ ๊ณผํ ๊ณ์ฐ์ฉ ์ธ์ด๋ฅผ ๋ชฉํ๋ก IBM์ด 1950๋
๋ ๊ฐ๋ฐํ ์ธ์ด๋ค. ๋ค๋ง, ์ธ๋งํ ๋ฒ์ฉ ๊ฐ๋ฐ์ธ์ด๊ฐ ๋ถ์กฑํ๋ ์๊ธฐ์๊ณ ์ธ์ด ์ฌ์ฉ์์ธต์ด ๋๊บผ์ ๋ ๋งํผ ๋ฒ์ฉ์ ์ธ ์ฉ๋๋ก๋ ์ธ์ด๊ฐ ์ฌ์ฉ๋๊ธด ํ์๋ค. ๊ณผํ๊ธฐ์ ์ฉ ์ธ์ด๋ก๋ ํฌํธ๋, ์์
์ฉ ์ธ์ด๋ก๋ ์ฝ๋ณผ์ด๋ผ๊ณ ํ ๋งํผ ๋ํ์ ์ธ ์ 3์ธ๋ ์ธ์ด์์ง๋ง 1980๋
๋ ์ดํ๋ก ๋ณด๋ค ์ฌ์ฉํ๊ธฐ ์ฌ์ด ์ 4์ธ๋ ์ธ์ด์ ์ถํ์ผ๋ก ์ด์ ๋ ๋ฒ์ฉ ๋ชฉ์ ์ผ๋ก๋ ๊ฑฐ์ ์ฐ์ด์ง ์๊ฒ ๋์์ผ๋ฉฐ, ๋๋ถ๋ถ C ์ธ์ด๋ก ๊ต์ฒด๋์๋ค. ํ์ง๋ง ์ ๋น์ด ์์นํด์์ฉ์ ํนํ์์ผ ๊ฐ๋ฐ๋์๊ณ , ๋ฐฉ๋ํ ์์นํด์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์ ๋๋์ ๊ณ์ฐ์ ํด์ผ ํ๋ ํน์ ๋ถ์ผ์์๋ ์ค์ํ ์ธ์ด๋ก ๋ช
๋งฅ์ ์ด์ด๊ฐ๊ณ ์๋ค.
์์น๊ณ์ฐ๋ถ์ผ๋ก ์ฐ๊ตฌ๊ด๋ จ ์ฝ๋๋ฅผ ์ฐพ์ผ๋ฉด ํฌํธ๋ ์ฝ๋๋ก๋ ๊ฑฐ์ ๋ชจ๋ ๋ถ์ผ๊ฐ ๋ค ์๋ค. ๊ทธ๊ฒ๋ ์์ ๋ฃ๋ณด์ก๋ค์ด ๋ง๋ ๊ฒ ์๋๋ผ ๊ต๊ณผ์์ ์ด๋ฆ์ด ์ค๋ฆด๋งํ ์ ๋ช ํ ์ฌ๋๋ค์ด ๋ง๋ค์ด์ ์ ๋์์ ์ค๋ ธ๊ณ ์์ญ๋ ๊ฐ ์ฌ์ฉ๋๊ณ ์๋ ์์ด ๊ฒ์ฆ๋๋ค.
์๋ฅผ ๋ค์ด, ์ํผ์ปดํจํฐ ๋ฑ์ ํด๋ฌ์คํฐ๋ฅผ ์ด์ฉํ ๋๋์ ๊ณ์ฐ์ ์ํ MPI(Message passing interface)์ ๊ฒฝ์ฐ, ํฌํธ๋๊ณผ C ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก๋ง ๋์จ๋ค. ์ฆ ์ํผ์ปดํจํฐ์์๋ ๋ฌด์กฐ๊ฑด C ์๋๋ฉด ํฌํธ๋์ ์ฌ์ฉํด์ผ ํ๋ ๊ฒ. ์์ฒญ๋ ์์ ์์น๊ณ์ฐ์ด ํ์ํ ๋ถ์ผ์ ๊ฒฝ์ฐ ์ํผ์ปดํจํฐ๋ฅผ ์ฌ์ฉํ๋๋ฐ ์ํผ์ปดํจํฐ๋ ๊ฐ๊ฒฉ์ด ์์ฃผ ๋น์ธ๊ณ ์ ์ง๋น๊ฐ ๋ง์ด ๋ค๊ธฐ ๋๋ฌธ์ ์ข ๋์ ์ฒ๋ผ ๋์ ๋ฐ์์ ์ด์ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค. ๋์ ๋ฐ๋ ๋ฐ์ง์๋ ์ค์ ์์ ์ด ์์๋ ์ฐ๊ตฌ์๋ ํ์ฌ ์์ ์ ์ํผ์ปดํจํฐ๋ผ๋ ์ง๊ธ์ด๋ ์์์ ๋ฐ๋ผ์ ์ํผ์ปดํจํฐ ์ฌ์ฉ์๊ฐ๊ณผ ์ฌ์ฉ๋ฒ์๊ฐ ์ ์ฝ๋๋ค. ๊ทธ๋์ ์ฐ๊ตฌ์๋ค์ ์ํผ์ปดํจํฐ๋ฅผ ์ฌ์ฉํ ๋ ์์ ์ ์ปดํจํฐ์์ ์ต๋ํ ์ฝ๋๋ฅผ ์์ฑํ๊ณ ์ํผ์ปดํจํฐ์ ์ ๋ก๋ํด์ ์คํ ์์ผ๋ณธํ ์์ ํ๊ณ ๋ ์์ ํ๋์ผ์ ๋ฐ๋ณตํ๋ค. ๋ฌผ๋ก ํ๋ฒ์ ์คํ๋๊ธธ ์์ํ๋ฉด์. ์๊ธฐ์ ์ํผ์ปดํจํฐ ์ฌ์ฉ์๊ฐ์ ์กฐ๊ธ์ด๋ผ๋ ์ ์ฝํ๊ธธ ๋ฐ๋ผ๋ ๊ฑด ๋ชจ๋ ์ํผ์ปดํจํฐ ์ฌ์ฉ์์ ์๋ง์ด๋ค. ์ด๋ฐ ์ด์ ๋ก ์ํผ์ปดํจํฐ์์ ๊ฐ์ฅ ๋จ๊ธฐ๊ฐ์ ์ฑ๊ณผ๋ฅผ ๋ด๊ณ ๊ฐ์ฅ ๋ง์ด ์ ์ฆ๋ ์ํผ์ปดํจํฐ ๊ด๋ จ ํ๋ก๊ทธ๋จ ์ฝ๋๊ฐ ๋ฐ๋ก ํฌํธ๋์ผ๋ก ๋ง๋ค์ด์ง ์ฝ๋์ด๋ค. ์ด๊ฒ ํ์ฌ ํฌํธ๋์ ์์ฃผ ๊ฐ๋ ฅํ ์ฅ์ ์ธ ๊ฒ.
๋ฌผ๋ฆฌํ๊ณผ์์ ์ฌ์ฉํ๋ ์์๋ก๋, ๋ค์๊ณผ ๊ฐ์ ๊ฒ๋ค์ด ์๋ค. ์์ํต๋ด ์ฝ๋ ฅ์ ์ํ ํต์๊ฐ ์ํธ์์ฉ์ ๊ตฌํ๋ ๊ฒ์ ๊ต์ฅํ ์ฐ์ฐ์ ํ์๋ก ํ๋๋ฐ ์ต๋ํ ํจ์จ์ ์ฌ๋ฆฌ๊ธฐ ์ํด์ ํฌํธ๋์ผ๋ก ํ๋ก๊ทธ๋๋ฐ์ ํ๋ค. ๋ค์ ์๊ณ ์๊ฐ์ ์์กดํ๋ ์ญ๋์ ๊ตฌํ๋ ค๋ฉด ์์น๊ณ์ฐ๋ฐ์ ์๋๋ฐ ๋ง๋ํ ๊ณ์ฐ์๋ ์๊ฐ์ด ๊ฑธ๋ฆฌ๋ ๊ฑฐ๊ธฐ์ ํฌํธ๋์ด ๋ค์ ๋ฑ์ฅํ๋ ๊ฒ์ด๋ค.
์์๊ณ์ฐ, ํํ ์ ์ผ์๋ฆฌ๊ณ์ฐ์ด๋ผ๊ณ ๋ถ๋ฆฌ๋ ๋ถ์ผ์์๋ ํฌํธ๋์ผ๋ก ์ง์ฌ์ ธ ์๋ ํ๋ก๊ทธ๋จ๋ค์ ๋ง์ด ๋ณผ ์ ์๋ค. ์ด๋ฌํ ํ๋ก๊ทธ๋จ๋ค์ ๋ฌผ์ง ๋ด๋ถ์ ์์์ ์ ์ ๊ตฌ์กฐ๋ฅผ ๊ณ์ฐํ๊ณ ํด์ํ ๋ ์ฌ์ฉ๋๋ฉฐ, ์ญ์ ๋ง๋ํ ๊ณ์ฐ์ ํจ์จ์ ์ผ๋ก ์ํํ๊ธฐ ์ํด ํฌํธ๋์ผ๋ก ์ง์ฌ์ ธ ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.
๋๊ธฐ๊ณผํ๊ณผ ํด์ํ์ ๊ฒฝ์ฐ, ์ผ๊ธฐ์๋ณด์ ์ฐ์ด๋ ํด์๋ชจ๋ธ๊ณผ ์์น๋ชจ๋ธ๋ถ์ผ์ ์์น๋ชจ๋ธ์ด ๊ฑฐ์ 100% ํฌํธ๋์ผ๋ก ์ง์ฌ์ ธ์๋ค. ์์์ ์ธ๊ธํ๋ฏ์ด ๊ต์ฅํ ๊ณ์ฐ์ ํด์ผํ๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ ์ธ์ด๋ณด๋ค ๋น ๋ฅด๊ณ ๊ฐ๊ฒฐํ ํฌํธ๋์ ๊ณ์ ์ฌ์ฉํด์ค๊ณ ์๋ค(ํฌํธ๋์ผ๋ก๋ง ์ง๋ฌ์ ๋ค๋ฅธ ์ธ์ด๋ก ๋ณํํ๊ธฐ ์ด๋ ต๋ค). ๋๊ธฐ๊ณผํ์ด ์ธ๊ณ ์ํผ์ปดํจํฐ ์ฌ์ฉ๋์ 2์๋ฅผ ์ฐจ์งํ๋ค๋ ์ ์ ๊ณ ๋ คํ๋ฉด ์์ผ๋ก๋ ํฌํธ๋์ด ์ํ์ง์ง๋ ์์ ๊ฒ ๊ฐ๋ค.
X-ray๋ฅผ ๋ค๋ฃจ๋ ์๋ฎฌ๋ ์ด์ ์๋ ์ฌ์ฉ๋๋๋ฐ, PENELOPE๋ผ๋ ๋ชฌํ ์นด๋ฅผ๋ก ์๋ฎฌ๋ ์ดํฐ๊ฐ ์ด ์ธ์ด๋ก ์ง์ฌ์ ธ ์๋ค. ๋ชฌํ ์นด๋ฅผ๋ก ์๋ฎฌ๋ ์ด์ ์ด๋ ํด์์ ์ผ๋ก ์ผ์ ๋ชจ๋ธ์ ๋์ ํด์ ๊ณ์ฐํ๋ ๊ฒ ์๋๊ณ , ๋ฌด์์ ๋ค์์ ์ ์(์ด ๊ฒฝ์ฐ์ X-ray ๊ด์)๋ฅผ ๋ฟ๋ ค์ ๊ฐ์ฒด ํ๋ํ๋๋น ๋๋คํ๊ฒ ๊ฒฝ์ฐ์ ์๋ฅผ ์ ์ฉํด ๊ณ์ฐํ๋ ๊ฒ์ด๋ผ ์ญ์ ๋ฌด์ง๋ง์งํ ๊ณ์ฐ๋์ด ํ์ํ๋ค. ๋๋ฌธ์ ํฌํธ๋์ ์ฌ์ฉํ๋ค. ๋ฐ๋์ฒด ๋ฌผ์ฑ ์๋ฎฌ๋ ์ด์ ์ ํ๋ TCAD๋ ๋ง์ฐฌ๊ฐ์ง. ์คํ ํฌ๋์์ ์ต์ด๋ก ์ถํ(?)๋ PISCES ๋ถํฐ ๋ค ์ด ์ธ์ด๋ก ๋์ด ์๋ค.
์ ๋ฌธ๋ถ์ผ์์๋ ๋งค์ฐ ๋ง์ ๊ณ์ฐ ์๊ณ ๋ฆฌ์ฆ์ด ํฌํธ๋ ํ์์ผ๋ก ๋์ด ์๋ค. ์ด๋ค ์ฝ๋๋ฅผ ๋ค๋ฅธ ์ธ์ด๋ก ํฌํ ํ์ฌ ์ฌ์ฉํ๋ ๊ฒ ๋ณด๋ค๋ ํฌํธ๋์ ๋ฐฐ์์ ์ฐ๋ ๊ฒ์ด ๋ ๋น ๋ฅด๊ณ ๊ณ์ฐ๋ ํจ์จ์ ์ด๊ธฐ ๋๋ฌธ์ ์ค๋๋ ์์ฐ๊ณผํ/๊ณตํ์ ๊ณ์ฐ ์ฝ๋๋ ํฌํธ๋์ผ๋ก ๋ ๊ฒ์ด ๋ง๋ค. ์ผํ ๋ด์ C๋ก ์งฐ๋ค๊ณ ์๊ฐ๋๋ ํ๋ก๊ทธ๋จ์ด๋ ์๋ฌด๋ฆฌ ๋ด๋ ๋น์ฃผ์ผ ์คํ๋์ค์์ ์๋์ฐ ๊ธฐ๋ณธ ํจ์๋ฅผ ๋ฌด์ง๋ง์งํ๊ฒ ๊ฐ๋ค ์ด ๊ฒ์ฒ๋ผ ๋ณด์ด๋ ํ๋ก๊ทธ๋จ๋ ๋์ค์ ์๊ณ ๋ณด๋ฉด 10MB๋ ์๋๋ ์คํํ์ผ ํ๋, ํน์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ์ผ์ด ํต์ฌ ๊ณ์ฐ ๋ชจ๋์ด๊ณ ์ ๊ฒ์ ํฌํธ๋์ผ๋ก ๋ง๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค. ์๋ฅผ ๋ค์ด ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ํ์ด์ ์ ๋ํ์ ์ธ ๊ณผํ๊ณ์ฐ์ฉ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ SciPy์ ํต์ฌ์ฝ๋๋ ํฌํธ๋์ด๋ C๋ก ๋ง๋ค์ด์ ธ ์๋ค. #
์ด์ฒ๋ผ ํ์ ๋๋ ์ฐ๊ตฌ ์ฉ๋์ ์ฝ๋์๋ ์์ง๊น์ง ํฌํธ๋์ด ๋ง์ด ์ ์ฉ๋๋๋ฐ, ์ฌ๊ธฐ์๋ ํจ์จ์ฑ ์ธก๋ฉด ์ด์ธ์๋ ๊ตณ์ด ๋ค๋ฅธ ์ธ์ด๋ก ๋ค์ ๋ง๋ค ์ ์ธ์ด ์๋ค๋ ์ฌ์ค ๋ํ ์์ฉํ๋ค. ์ฐ๊ตฌ์ ์ฌ์ฉ๋๋ ์ฝ๋์ ์ฝ์ด ๋ถ๋ถ์ ์ ์๊น๊ณ ์ค๋๋ ๊ฒ๋ค์ด ๋ง์ผ๋ฉฐ, ์ด๋ค ๊ฒ์ ์ง๋ ๊ต์์ ์ง๋ ๊ต์์ ์ง๋ ๊ต์๋ก๋ถํฐ ๋ด๋ ค์จ ๊ฒ๋ค๋ ์๋ค(...). ์ด๋ฌํ ์ฝ๋๋ ๋น์ฐํ ํฌํธ๋์ผ๋ก ์ง์ฌ์ ธ ์๋๋ฐ, ์ด ๊ฒฝ์ฐ์๋ ์ฝ๋๊ฐ ํ์ฅ๋๊ณ ๋ฉ์น๊ฐ ์ปค์ ธ๋ ์ฝ์ด์์ ํธํ์ ์ํด ํฌํธ๋์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค. ์ด ๊ฒฝ์ฐ ์ ์ ์ ์ธ ์ฌ์ฉ์๋ ์ฐ๊ตฌ์ ๋ด์ง๋ ๋ํ์์์ด ๋๋๋ฐ, ์ด๋ค์๊ฒ ์์ด์ ๋ฌธ๋ฒ์ด ๋จ์ํ ํฌํธ๋์ ์ตํ๋ ๊ฒ์ ํฌ๊ฒ ๋ถ๋ด์ด ๋์ง ์๋๋ค. ๊ฒฐ๊ตญ ํฌํธ๋์ ์ตํ๋ฉด ๋ ์ผ์ ๊ตณ์ด ์๋๊ฐ ๋ ๋๋ฆฐ ๋ค๋ฅธ ์ธ์ด๋ก ์ฎ๊ธฐ๋ ๊ฒ ์์ฒด๊ฐ ์๊ฐ ๋ญ๋น, ์ธ๋ ฅ ๋ญ๋น๊ฐ ๋๋ ์ . ๊ทธ๋ ๊ณ ๋ฆฌ ๋งจํ๋ ํ๋ถ์ 1ํ๋ ๋๋ถํฐ ํฌํธ๋์ ๋งค์ฐ ์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์(...) ํ๋ฆฐ์คํด์์ ์ฐ๊ตฌ ์กฐ๊ต๋ก ์ฌ๋ฆ ์ธํด์ด ๊ฐ๋ฅํ๋ค.
์ ์ฐ๊ณ ์๋ ํฌํธ๋ legacy code๋ฅผ ๊ตณ์ด ์๋ฌ๋ฅผ ๋ฌด๋ฆ ์จ๊ฐ๋ฉฐ ๋ค๋ฅธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ๋ณํํ ํ์๋ ์๋ค. ๊ทธ๋ฐ ํ๋์ ํ๋ ค๊ณ ์๊ฐ์ ์ฐ๋ค๊ฐ ์ง๋๊ต์ํํ ๊ฑธ๋ฆฌ๋ฉด ๋ฐ๋ก "๊ทธ๋ฅ ๊ธฐ์กด์ ์๋ ํฌํธ๋ ๊ฐ์ ธ๋ค ์จ" ๋ ๋ง์ ๋ฃ๊ธฐ ์ญ์์ด๋ค. ์์ ์ด ํฌํธ๋๊ณผ ๋ค๋ฅธ ์ธ์ด ๋ ๋ค ์์ฃผ ์ ํ๋ค๋ฉด ์ง๋๊ต์์๊ฒ ์ ๊ฑธ๋ฆฌ๊ฒ ๋ณํํด๋ณด๋ผ. ๋ฌผ๋ก ์๋ฌ๊ฐ ๋๋ฉด ์ง๋๊ต์ ์ ์์ ๋์ค๋ ์ฒซ๋ง์ "๊ทธ๋ฅ ํฌํธ๋ ์ฐ์ง ์ธ๋ฐ์๋ ์ง ํ๋ค๊ฐ ๋ ผ๋ฌธ ์ธ์ ์ธ๋". ์ด ๋ง์ ๋ฃ๊ณ ์ฐ๊ตฌ์ค ๋ถ์๊ธฐ๋ ๊ธ๋ฝ.
๊ฐ๋ ์ค๋๋ ํํ PC (ํด๋ ํฉ์ปค๋์ 200LX๋ IBM์ PC110๊ฐ์...)์๋ค๊ฐ ํฌํธ๋ ์ปดํ์ผ๋ฌ ๊น๊ณ ๊ณตํ์ฉ ๊ณ์ฐ๊ธฐ ๋์ ์ผ๋ก ์ฐ๋ ๊ดด์ธ๋ค๋ ์กด์ฌํ๋ค.
๋ค๋ง ์์ฆ์ ๋ํ๊ต์์๋ ํ์์์๋ ํฌํธ๋์ ๊ฐ๋ฅด์น๋ ๊ณณ์ด ๊ฑฐ์ ์๊ธฐ ๋๋ฌธ์ (์ฌ์ง์ด ์ฑ ๋ ๊ฑฐ์ ์๋ค) ์ ์ด๋ ํ๊ตญ์์๋ ์ํ์ง ์ธ์ด ์ทจ๊ธ์ ๋ฐ๊ฒ๋ ๋ ์ด ๋ฉ์ง ์์๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ๋ก๊ทธ๋จ์ด ์ฝ๋ณผ์ ๋์ฒดํ๋ฏ์ด ํฌํธ๋ ์ญ์ ๋๋ถ๋ถ์ ๊ฒฝ์ฐ์๋ MATLAB, ๋งค์ค๋งคํฐ์นด ๊ฐ์ ๊ฐ๋ ฅํ ์์น๊ณ์ฐ ํ๋ก๊ทธ๋จ๋ค์๊ฒ ์๋ฆฌ๋ฅผ ๋ด์ฃผ๊ณ ์๋ค.[13] ํ์ง๋ง ํฌํธ๋ ์ปดํ์ผ๋ฌ๋ gnu ์์ ๋ฌด๋ฃ๋ก ๋ฐฐํฌํ๋ ๋์ ๋งคํ๋ฉ, ๋งค์ค๋งคํฐ์นด๋ ์์ฉ ํ๋ก๊ทธ๋จ์ด๋ผ ์๋ฒฝํ๊ฒ ๋์ฒดํ๊ธฐ๋ ํ๋ค๋ค. ์ค์ ๋ก ๋ฌผ๋ฆฌํ ์ ๊ณต์๊ฐ ์ปดํจํฐ๊ณตํ ์ ๊ณต์์๊ฒ ์ด ์ธ์ด์ ๋ํด์ ์ด์ผ๊ธฐํ๋ฉด ์ปดํจํฐ๊ณตํ ์ ๊ณต์๋ '์ญ์ฌ ์์ผ๋ก ์ฌ๋ผ์ง ์ค ์์๋ ์ธ์ด๊ฐ ์์ง๋ ํ๋ฐํ ์ฐ์ด๊ณ ์๋ค๋!'ํ๋ฉด์ ๋๋ผ๋ ๊ฒฝ์ฐ๊ฐ ์๋ค.
์์น๊ณ์ฐ๋ถ์ผ๋ก ์ฐ๊ตฌ๊ด๋ จ ์ฝ๋๋ฅผ ์ฐพ์ผ๋ฉด ํฌํธ๋ ์ฝ๋๋ก๋ ๊ฑฐ์ ๋ชจ๋ ๋ถ์ผ๊ฐ ๋ค ์๋ค. ๊ทธ๊ฒ๋ ์์ ๋ฃ๋ณด์ก๋ค์ด ๋ง๋ ๊ฒ ์๋๋ผ ๊ต๊ณผ์์ ์ด๋ฆ์ด ์ค๋ฆด๋งํ ์ ๋ช ํ ์ฌ๋๋ค์ด ๋ง๋ค์ด์ ์ ๋์์ ์ค๋ ธ๊ณ ์์ญ๋ ๊ฐ ์ฌ์ฉ๋๊ณ ์๋ ์์ด ๊ฒ์ฆ๋๋ค.
์๋ฅผ ๋ค์ด, ์ํผ์ปดํจํฐ ๋ฑ์ ํด๋ฌ์คํฐ๋ฅผ ์ด์ฉํ ๋๋์ ๊ณ์ฐ์ ์ํ MPI(Message passing interface)์ ๊ฒฝ์ฐ, ํฌํธ๋๊ณผ C ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก๋ง ๋์จ๋ค. ์ฆ ์ํผ์ปดํจํฐ์์๋ ๋ฌด์กฐ๊ฑด C ์๋๋ฉด ํฌํธ๋์ ์ฌ์ฉํด์ผ ํ๋ ๊ฒ. ์์ฒญ๋ ์์ ์์น๊ณ์ฐ์ด ํ์ํ ๋ถ์ผ์ ๊ฒฝ์ฐ ์ํผ์ปดํจํฐ๋ฅผ ์ฌ์ฉํ๋๋ฐ ์ํผ์ปดํจํฐ๋ ๊ฐ๊ฒฉ์ด ์์ฃผ ๋น์ธ๊ณ ์ ์ง๋น๊ฐ ๋ง์ด ๋ค๊ธฐ ๋๋ฌธ์ ์ข ๋์ ์ฒ๋ผ ๋์ ๋ฐ์์ ์ด์ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค. ๋์ ๋ฐ๋ ๋ฐ์ง์๋ ์ค์ ์์ ์ด ์์๋ ์ฐ๊ตฌ์๋ ํ์ฌ ์์ ์ ์ํผ์ปดํจํฐ๋ผ๋ ์ง๊ธ์ด๋ ์์์ ๋ฐ๋ผ์ ์ํผ์ปดํจํฐ ์ฌ์ฉ์๊ฐ๊ณผ ์ฌ์ฉ๋ฒ์๊ฐ ์ ์ฝ๋๋ค. ๊ทธ๋์ ์ฐ๊ตฌ์๋ค์ ์ํผ์ปดํจํฐ๋ฅผ ์ฌ์ฉํ ๋ ์์ ์ ์ปดํจํฐ์์ ์ต๋ํ ์ฝ๋๋ฅผ ์์ฑํ๊ณ ์ํผ์ปดํจํฐ์ ์ ๋ก๋ํด์ ์คํ ์์ผ๋ณธํ ์์ ํ๊ณ ๋ ์์ ํ๋์ผ์ ๋ฐ๋ณตํ๋ค. ๋ฌผ๋ก ํ๋ฒ์ ์คํ๋๊ธธ ์์ํ๋ฉด์. ์๊ธฐ์ ์ํผ์ปดํจํฐ ์ฌ์ฉ์๊ฐ์ ์กฐ๊ธ์ด๋ผ๋ ์ ์ฝํ๊ธธ ๋ฐ๋ผ๋ ๊ฑด ๋ชจ๋ ์ํผ์ปดํจํฐ ์ฌ์ฉ์์ ์๋ง์ด๋ค. ์ด๋ฐ ์ด์ ๋ก ์ํผ์ปดํจํฐ์์ ๊ฐ์ฅ ๋จ๊ธฐ๊ฐ์ ์ฑ๊ณผ๋ฅผ ๋ด๊ณ ๊ฐ์ฅ ๋ง์ด ์ ์ฆ๋ ์ํผ์ปดํจํฐ ๊ด๋ จ ํ๋ก๊ทธ๋จ ์ฝ๋๊ฐ ๋ฐ๋ก ํฌํธ๋์ผ๋ก ๋ง๋ค์ด์ง ์ฝ๋์ด๋ค. ์ด๊ฒ ํ์ฌ ํฌํธ๋์ ์์ฃผ ๊ฐ๋ ฅํ ์ฅ์ ์ธ ๊ฒ.
๋ฌผ๋ฆฌํ๊ณผ์์ ์ฌ์ฉํ๋ ์์๋ก๋, ๋ค์๊ณผ ๊ฐ์ ๊ฒ๋ค์ด ์๋ค. ์์ํต๋ด ์ฝ๋ ฅ์ ์ํ ํต์๊ฐ ์ํธ์์ฉ์ ๊ตฌํ๋ ๊ฒ์ ๊ต์ฅํ ์ฐ์ฐ์ ํ์๋ก ํ๋๋ฐ ์ต๋ํ ํจ์จ์ ์ฌ๋ฆฌ๊ธฐ ์ํด์ ํฌํธ๋์ผ๋ก ํ๋ก๊ทธ๋๋ฐ์ ํ๋ค. ๋ค์ ์๊ณ ์๊ฐ์ ์์กดํ๋ ์ญ๋์ ๊ตฌํ๋ ค๋ฉด ์์น๊ณ์ฐ๋ฐ์ ์๋๋ฐ ๋ง๋ํ ๊ณ์ฐ์๋ ์๊ฐ์ด ๊ฑธ๋ฆฌ๋ ๊ฑฐ๊ธฐ์ ํฌํธ๋์ด ๋ค์ ๋ฑ์ฅํ๋ ๊ฒ์ด๋ค.
์์๊ณ์ฐ, ํํ ์ ์ผ์๋ฆฌ๊ณ์ฐ์ด๋ผ๊ณ ๋ถ๋ฆฌ๋ ๋ถ์ผ์์๋ ํฌํธ๋์ผ๋ก ์ง์ฌ์ ธ ์๋ ํ๋ก๊ทธ๋จ๋ค์ ๋ง์ด ๋ณผ ์ ์๋ค. ์ด๋ฌํ ํ๋ก๊ทธ๋จ๋ค์ ๋ฌผ์ง ๋ด๋ถ์ ์์์ ์ ์ ๊ตฌ์กฐ๋ฅผ ๊ณ์ฐํ๊ณ ํด์ํ ๋ ์ฌ์ฉ๋๋ฉฐ, ์ญ์ ๋ง๋ํ ๊ณ์ฐ์ ํจ์จ์ ์ผ๋ก ์ํํ๊ธฐ ์ํด ํฌํธ๋์ผ๋ก ์ง์ฌ์ ธ ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.
๋๊ธฐ๊ณผํ๊ณผ ํด์ํ์ ๊ฒฝ์ฐ, ์ผ๊ธฐ์๋ณด์ ์ฐ์ด๋ ํด์๋ชจ๋ธ๊ณผ ์์น๋ชจ๋ธ๋ถ์ผ์ ์์น๋ชจ๋ธ์ด ๊ฑฐ์ 100% ํฌํธ๋์ผ๋ก ์ง์ฌ์ ธ์๋ค. ์์์ ์ธ๊ธํ๋ฏ์ด ๊ต์ฅํ ๊ณ์ฐ์ ํด์ผํ๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ ์ธ์ด๋ณด๋ค ๋น ๋ฅด๊ณ ๊ฐ๊ฒฐํ ํฌํธ๋์ ๊ณ์ ์ฌ์ฉํด์ค๊ณ ์๋ค(ํฌํธ๋์ผ๋ก๋ง ์ง๋ฌ์ ๋ค๋ฅธ ์ธ์ด๋ก ๋ณํํ๊ธฐ ์ด๋ ต๋ค). ๋๊ธฐ๊ณผํ์ด ์ธ๊ณ ์ํผ์ปดํจํฐ ์ฌ์ฉ๋์ 2์๋ฅผ ์ฐจ์งํ๋ค๋ ์ ์ ๊ณ ๋ คํ๋ฉด ์์ผ๋ก๋ ํฌํธ๋์ด ์ํ์ง์ง๋ ์์ ๊ฒ ๊ฐ๋ค.
X-ray๋ฅผ ๋ค๋ฃจ๋ ์๋ฎฌ๋ ์ด์ ์๋ ์ฌ์ฉ๋๋๋ฐ, PENELOPE๋ผ๋ ๋ชฌํ ์นด๋ฅผ๋ก ์๋ฎฌ๋ ์ดํฐ๊ฐ ์ด ์ธ์ด๋ก ์ง์ฌ์ ธ ์๋ค. ๋ชฌํ ์นด๋ฅผ๋ก ์๋ฎฌ๋ ์ด์ ์ด๋ ํด์์ ์ผ๋ก ์ผ์ ๋ชจ๋ธ์ ๋์ ํด์ ๊ณ์ฐํ๋ ๊ฒ ์๋๊ณ , ๋ฌด์์ ๋ค์์ ์ ์(์ด ๊ฒฝ์ฐ์ X-ray ๊ด์)๋ฅผ ๋ฟ๋ ค์ ๊ฐ์ฒด ํ๋ํ๋๋น ๋๋คํ๊ฒ ๊ฒฝ์ฐ์ ์๋ฅผ ์ ์ฉํด ๊ณ์ฐํ๋ ๊ฒ์ด๋ผ ์ญ์ ๋ฌด์ง๋ง์งํ ๊ณ์ฐ๋์ด ํ์ํ๋ค. ๋๋ฌธ์ ํฌํธ๋์ ์ฌ์ฉํ๋ค. ๋ฐ๋์ฒด ๋ฌผ์ฑ ์๋ฎฌ๋ ์ด์ ์ ํ๋ TCAD๋ ๋ง์ฐฌ๊ฐ์ง. ์คํ ํฌ๋์์ ์ต์ด๋ก ์ถํ(?)๋ PISCES ๋ถํฐ ๋ค ์ด ์ธ์ด๋ก ๋์ด ์๋ค.
์ ๋ฌธ๋ถ์ผ์์๋ ๋งค์ฐ ๋ง์ ๊ณ์ฐ ์๊ณ ๋ฆฌ์ฆ์ด ํฌํธ๋ ํ์์ผ๋ก ๋์ด ์๋ค. ์ด๋ค ์ฝ๋๋ฅผ ๋ค๋ฅธ ์ธ์ด๋ก ํฌํ ํ์ฌ ์ฌ์ฉํ๋ ๊ฒ ๋ณด๋ค๋ ํฌํธ๋์ ๋ฐฐ์์ ์ฐ๋ ๊ฒ์ด ๋ ๋น ๋ฅด๊ณ ๊ณ์ฐ๋ ํจ์จ์ ์ด๊ธฐ ๋๋ฌธ์ ์ค๋๋ ์์ฐ๊ณผํ/๊ณตํ์ ๊ณ์ฐ ์ฝ๋๋ ํฌํธ๋์ผ๋ก ๋ ๊ฒ์ด ๋ง๋ค. ์ผํ ๋ด์ C๋ก ์งฐ๋ค๊ณ ์๊ฐ๋๋ ํ๋ก๊ทธ๋จ์ด๋ ์๋ฌด๋ฆฌ ๋ด๋ ๋น์ฃผ์ผ ์คํ๋์ค์์ ์๋์ฐ ๊ธฐ๋ณธ ํจ์๋ฅผ ๋ฌด์ง๋ง์งํ๊ฒ ๊ฐ๋ค ์ด ๊ฒ์ฒ๋ผ ๋ณด์ด๋ ํ๋ก๊ทธ๋จ๋ ๋์ค์ ์๊ณ ๋ณด๋ฉด 10MB๋ ์๋๋ ์คํํ์ผ ํ๋, ํน์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ์ผ์ด ํต์ฌ ๊ณ์ฐ ๋ชจ๋์ด๊ณ ์ ๊ฒ์ ํฌํธ๋์ผ๋ก ๋ง๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค. ์๋ฅผ ๋ค์ด ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ํ์ด์ ์ ๋ํ์ ์ธ ๊ณผํ๊ณ์ฐ์ฉ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ SciPy์ ํต์ฌ์ฝ๋๋ ํฌํธ๋์ด๋ C๋ก ๋ง๋ค์ด์ ธ ์๋ค. #
์ด์ฒ๋ผ ํ์ ๋๋ ์ฐ๊ตฌ ์ฉ๋์ ์ฝ๋์๋ ์์ง๊น์ง ํฌํธ๋์ด ๋ง์ด ์ ์ฉ๋๋๋ฐ, ์ฌ๊ธฐ์๋ ํจ์จ์ฑ ์ธก๋ฉด ์ด์ธ์๋ ๊ตณ์ด ๋ค๋ฅธ ์ธ์ด๋ก ๋ค์ ๋ง๋ค ์ ์ธ์ด ์๋ค๋ ์ฌ์ค ๋ํ ์์ฉํ๋ค. ์ฐ๊ตฌ์ ์ฌ์ฉ๋๋ ์ฝ๋์ ์ฝ์ด ๋ถ๋ถ์ ์ ์๊น๊ณ ์ค๋๋ ๊ฒ๋ค์ด ๋ง์ผ๋ฉฐ, ์ด๋ค ๊ฒ์ ์ง๋ ๊ต์์ ์ง๋ ๊ต์์ ์ง๋ ๊ต์๋ก๋ถํฐ ๋ด๋ ค์จ ๊ฒ๋ค๋ ์๋ค(...). ์ด๋ฌํ ์ฝ๋๋ ๋น์ฐํ ํฌํธ๋์ผ๋ก ์ง์ฌ์ ธ ์๋๋ฐ, ์ด ๊ฒฝ์ฐ์๋ ์ฝ๋๊ฐ ํ์ฅ๋๊ณ ๋ฉ์น๊ฐ ์ปค์ ธ๋ ์ฝ์ด์์ ํธํ์ ์ํด ํฌํธ๋์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค. ์ด ๊ฒฝ์ฐ ์ ์ ์ ์ธ ์ฌ์ฉ์๋ ์ฐ๊ตฌ์ ๋ด์ง๋ ๋ํ์์์ด ๋๋๋ฐ, ์ด๋ค์๊ฒ ์์ด์ ๋ฌธ๋ฒ์ด ๋จ์ํ ํฌํธ๋์ ์ตํ๋ ๊ฒ์ ํฌ๊ฒ ๋ถ๋ด์ด ๋์ง ์๋๋ค. ๊ฒฐ๊ตญ ํฌํธ๋์ ์ตํ๋ฉด ๋ ์ผ์ ๊ตณ์ด ์๋๊ฐ ๋ ๋๋ฆฐ ๋ค๋ฅธ ์ธ์ด๋ก ์ฎ๊ธฐ๋ ๊ฒ ์์ฒด๊ฐ ์๊ฐ ๋ญ๋น, ์ธ๋ ฅ ๋ญ๋น๊ฐ ๋๋ ์ . ๊ทธ๋ ๊ณ ๋ฆฌ ๋งจํ๋ ํ๋ถ์ 1ํ๋ ๋๋ถํฐ ํฌํธ๋์ ๋งค์ฐ ์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์(...) ํ๋ฆฐ์คํด์์ ์ฐ๊ตฌ ์กฐ๊ต๋ก ์ฌ๋ฆ ์ธํด์ด ๊ฐ๋ฅํ๋ค.
์ ์ฐ๊ณ ์๋ ํฌํธ๋ legacy code๋ฅผ ๊ตณ์ด ์๋ฌ๋ฅผ ๋ฌด๋ฆ ์จ๊ฐ๋ฉฐ ๋ค๋ฅธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ๋ณํํ ํ์๋ ์๋ค. ๊ทธ๋ฐ ํ๋์ ํ๋ ค๊ณ ์๊ฐ์ ์ฐ๋ค๊ฐ ์ง๋๊ต์ํํ ๊ฑธ๋ฆฌ๋ฉด ๋ฐ๋ก "๊ทธ๋ฅ ๊ธฐ์กด์ ์๋ ํฌํธ๋ ๊ฐ์ ธ๋ค ์จ" ๋ ๋ง์ ๋ฃ๊ธฐ ์ญ์์ด๋ค. ์์ ์ด ํฌํธ๋๊ณผ ๋ค๋ฅธ ์ธ์ด ๋ ๋ค ์์ฃผ ์ ํ๋ค๋ฉด ์ง๋๊ต์์๊ฒ ์ ๊ฑธ๋ฆฌ๊ฒ ๋ณํํด๋ณด๋ผ. ๋ฌผ๋ก ์๋ฌ๊ฐ ๋๋ฉด ์ง๋๊ต์ ์ ์์ ๋์ค๋ ์ฒซ๋ง์ "๊ทธ๋ฅ ํฌํธ๋ ์ฐ์ง ์ธ๋ฐ์๋ ์ง ํ๋ค๊ฐ ๋ ผ๋ฌธ ์ธ์ ์ธ๋". ์ด ๋ง์ ๋ฃ๊ณ ์ฐ๊ตฌ์ค ๋ถ์๊ธฐ๋ ๊ธ๋ฝ.
๊ฐ๋ ์ค๋๋ ํํ PC (ํด๋ ํฉ์ปค๋์ 200LX๋ IBM์ PC110๊ฐ์...)์๋ค๊ฐ ํฌํธ๋ ์ปดํ์ผ๋ฌ ๊น๊ณ ๊ณตํ์ฉ ๊ณ์ฐ๊ธฐ ๋์ ์ผ๋ก ์ฐ๋ ๊ดด์ธ๋ค๋ ์กด์ฌํ๋ค.
๋ค๋ง ์์ฆ์ ๋ํ๊ต์์๋ ํ์์์๋ ํฌํธ๋์ ๊ฐ๋ฅด์น๋ ๊ณณ์ด ๊ฑฐ์ ์๊ธฐ ๋๋ฌธ์ (์ฌ์ง์ด ์ฑ ๋ ๊ฑฐ์ ์๋ค) ์ ์ด๋ ํ๊ตญ์์๋ ์ํ์ง ์ธ์ด ์ทจ๊ธ์ ๋ฐ๊ฒ๋ ๋ ์ด ๋ฉ์ง ์์๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ๋ก๊ทธ๋จ์ด ์ฝ๋ณผ์ ๋์ฒดํ๋ฏ์ด ํฌํธ๋ ์ญ์ ๋๋ถ๋ถ์ ๊ฒฝ์ฐ์๋ MATLAB, ๋งค์ค๋งคํฐ์นด ๊ฐ์ ๊ฐ๋ ฅํ ์์น๊ณ์ฐ ํ๋ก๊ทธ๋จ๋ค์๊ฒ ์๋ฆฌ๋ฅผ ๋ด์ฃผ๊ณ ์๋ค.[13] ํ์ง๋ง ํฌํธ๋ ์ปดํ์ผ๋ฌ๋ gnu ์์ ๋ฌด๋ฃ๋ก ๋ฐฐํฌํ๋ ๋์ ๋งคํ๋ฉ, ๋งค์ค๋งคํฐ์นด๋ ์์ฉ ํ๋ก๊ทธ๋จ์ด๋ผ ์๋ฒฝํ๊ฒ ๋์ฒดํ๊ธฐ๋ ํ๋ค๋ค. ์ค์ ๋ก ๋ฌผ๋ฆฌํ ์ ๊ณต์๊ฐ ์ปดํจํฐ๊ณตํ ์ ๊ณต์์๊ฒ ์ด ์ธ์ด์ ๋ํด์ ์ด์ผ๊ธฐํ๋ฉด ์ปดํจํฐ๊ณตํ ์ ๊ณต์๋ '์ญ์ฌ ์์ผ๋ก ์ฌ๋ผ์ง ์ค ์์๋ ์ธ์ด๊ฐ ์์ง๋ ํ๋ฐํ ์ฐ์ด๊ณ ์๋ค๋!'ํ๋ฉด์ ๋๋ผ๋ ๊ฒฝ์ฐ๊ฐ ์๋ค.
4. ๊ธฐํ[ํธ์ง]
์ ํฌ๊ธฐ ์ํํธ์จ์ด๋ก ์ฌ์ฉ๋ ์ ์ ์ด ์๋ค. F-15S์ ์์ค์ฝ๋๊ฐ ํฌํธ๋์ผ๋ก ์ฝ๋ฉ๋์ด์๋ ๊ฒ. ์ด ๋ฐ๋ฅ์ FORTRAN๋ณด๋ค ๋ ์์์ (?)์ธ ์ด์
๋ธ๋ฆฌ์ด๋ฅผ ์ฃผ๋ก ์ฌ์ฉํ๋ค.[14]
์ฐ์ฃผ๊ฐ๋ฐ ์ญ์ฌ์ ํ ๊ธฐ๋ฅ์ด์๋ ์ธ์ด์ด๊ธฐ๋ ํ๋ค. ์๋ฅผ ๋ค์ด ํ์๊ณ๋ฅผ ๋ฒ์ด๋ ํ์ฌ์ ์ธ ๋ณด์ด์ ๋ ์๋ ํฌํธ๋ 5๋ก ์ฝ๋๊ฐ ์ง์ฌ์ก๋ค. ๋์ค์ ์ ๋ก์๋ ์๊ฒฉ ๋ฆฌํ๋ก๊ทธ๋๋ฐ์ ํตํด ํฌํธ๋ 77์ ์ด์ํ๋ค๊ฐ, ํ์ฌ๋ ๋๋ถ๋ถ์ ์ฝ๋๋ฅผ C ๊ณ์ด ์ธ์ด๋ก ์ ๊ทธ๋ ์ด๋ํ ์ํ์ด์ง๋ง ๊ณ์ฐ ํจ์จ ๋ฑ์ ์ด์ ๋ก ์ผ๋ถ ์ฝ๋์๋ ํฌํธ๋ 77์ด ๊ณ์ ์ฌ์ฉ๋๊ณ ์๋ค.
ํํธ, ํฌํธ๋์ผ๋ก ๋์จ ๊ฒ์๋ ์๋ค. ์ธ๊ณ ์ต์ด์ ์ด๋๋ฒค์ฒ ๊ฒ์์ด๋ผ๊ณ ๋ณผ ์ ์๋ Colossal Cave Adventure๋ผ๋ ๊ฒ์์ผ๋ก, ํ์ฌ๋ ์์ค ์ฝ๋๋ฅผ ๋ฐ์์ ์ปดํ์ผํด๋ณผ ์ ์๋ค.
๋์ด์ฐ๊ธฐ๋ฅผ ๋ฌด์ํ๋ค. ๊ทธ๋์ ๋ณ์ ๋ฑ์ ์๋ณ์์ ๊ณต๋ฐฑ ๋ฌธ์๋ฅผ ํฌํจํด์ ์จ๋ ๋๋ค. CNT X ๋ผ๊ณ ์ ์ด๋ ์ ๋์ํ๋ค๋ ์๋ฆฌ.[15] ๋ฐ๋ฉด ์ค๋ฐ๊ฟ์ ์๋ฏธ๋ฅผ ๊ฐ์ง๋ค.
๋ฃจํ์ ์ฌ์ฉํ๋ int i ์ ๊ธฐ์์ด๊ธฐ๋ ํ๋ค. ํฌํธ๋์ ๋ฏธ๋ฆฌ ๋ณ์๋ค์ ์ ์ธํด ๋์๋๋ฐ, ์ด๋ i ๋ถํฐ N ๊น์ง int ํ ์ด์๋ค. ( ๋๋จธ์ง๋ ์ค์ํ ) ๊ทธ๋์ int ํ์ ์ฒซ๋ฒ์งธ ์ค๋ i ๊ฐ ๋ฃจํ์ ์ธ๋ฑ์ค๋ก ์ฐ์ด๊ธฐ ์์ํ ๊ฒ์ด๋ค.
์ต์ IDE ์ค์์๋ CLion์ด ํ๋ฌ๊ทธ์ธ์ ํตํด Fortran์ ์ ์ง์ํ๋ค.
์ฐ์ฃผ๊ฐ๋ฐ ์ญ์ฌ์ ํ ๊ธฐ๋ฅ์ด์๋ ์ธ์ด์ด๊ธฐ๋ ํ๋ค. ์๋ฅผ ๋ค์ด ํ์๊ณ๋ฅผ ๋ฒ์ด๋ ํ์ฌ์ ์ธ ๋ณด์ด์ ๋ ์๋ ํฌํธ๋ 5๋ก ์ฝ๋๊ฐ ์ง์ฌ์ก๋ค. ๋์ค์ ์ ๋ก์๋ ์๊ฒฉ ๋ฆฌํ๋ก๊ทธ๋๋ฐ์ ํตํด ํฌํธ๋ 77์ ์ด์ํ๋ค๊ฐ, ํ์ฌ๋ ๋๋ถ๋ถ์ ์ฝ๋๋ฅผ C ๊ณ์ด ์ธ์ด๋ก ์ ๊ทธ๋ ์ด๋ํ ์ํ์ด์ง๋ง ๊ณ์ฐ ํจ์จ ๋ฑ์ ์ด์ ๋ก ์ผ๋ถ ์ฝ๋์๋ ํฌํธ๋ 77์ด ๊ณ์ ์ฌ์ฉ๋๊ณ ์๋ค.
ํํธ, ํฌํธ๋์ผ๋ก ๋์จ ๊ฒ์๋ ์๋ค. ์ธ๊ณ ์ต์ด์ ์ด๋๋ฒค์ฒ ๊ฒ์์ด๋ผ๊ณ ๋ณผ ์ ์๋ Colossal Cave Adventure๋ผ๋ ๊ฒ์์ผ๋ก, ํ์ฌ๋ ์์ค ์ฝ๋๋ฅผ ๋ฐ์์ ์ปดํ์ผํด๋ณผ ์ ์๋ค.
๋์ด์ฐ๊ธฐ๋ฅผ ๋ฌด์ํ๋ค. ๊ทธ๋์ ๋ณ์ ๋ฑ์ ์๋ณ์์ ๊ณต๋ฐฑ ๋ฌธ์๋ฅผ ํฌํจํด์ ์จ๋ ๋๋ค. CNT X ๋ผ๊ณ ์ ์ด๋ ์ ๋์ํ๋ค๋ ์๋ฆฌ.[15] ๋ฐ๋ฉด ์ค๋ฐ๊ฟ์ ์๋ฏธ๋ฅผ ๊ฐ์ง๋ค.
๋ฃจํ์ ์ฌ์ฉํ๋ int i ์ ๊ธฐ์์ด๊ธฐ๋ ํ๋ค. ํฌํธ๋์ ๋ฏธ๋ฆฌ ๋ณ์๋ค์ ์ ์ธํด ๋์๋๋ฐ, ์ด๋ i ๋ถํฐ N ๊น์ง int ํ ์ด์๋ค. ( ๋๋จธ์ง๋ ์ค์ํ ) ๊ทธ๋์ int ํ์ ์ฒซ๋ฒ์งธ ์ค๋ i ๊ฐ ๋ฃจํ์ ์ธ๋ฑ์ค๋ก ์ฐ์ด๊ธฐ ์์ํ ๊ฒ์ด๋ค.
์ต์ IDE ์ค์์๋ CLion์ด ํ๋ฌ๊ทธ์ธ์ ํตํด Fortran์ ์ ์ง์ํ๋ค.
[1] http://www.nag.co.uk/sc22wg5
[2] http://www.j3-fortran.org
[3] ํ๋ฌ๋ฆฌ์ค์์ FORMAT ๋ฌธ๊ณผ ๋ฌธ์์ด์์์ Hํ์๋ฅผ ์ด์ฉํ ๊ธฐ๋ฒ์ด๋ค. ํ๋จผ ํ๋ฌ๋ฆฌ์ค์ ์ด๋ฆ์ ๋๋ค. ํ์ฌ ์ด ํ๋ฌ๋ฆฌ์ค ํํ์ ์๋ฏธ๊ฐ ์์ง๋ง.. ์์ง๋ ๋ฉ ๋ชจ๋ฅด๊ณ ์ฌ์ฉํ๋ ์ต๊ด์ ๊ฐ์ง๊ณ ์๋ ์ฌ๋๋ค์ด ๋ง์ด ์๊ณ , ๊ทธ๋ฐ ์ค๋๋ ์ฝ๋๋ค๊ณผ ์ ์ ์ ๊ต๊ฐ์ ๋๋๋ฉฐ ์ฝ๋ฉ ๊ณ ๊ณ ํ์ ์งํฅํ๋ ์ผ๋ค์ด ๋ฒ์ด์ง๊ณ ์๋ค. ์๋ฌธ ์ํค๋ฐฑ๊ณผ ์ฐธ์กฐ.
[4] ftp://ftp.nag.co.uk/sc22wg5/ARCHIVE/mil_std_1753.html
[5] Fortran2008์ ์ถ๊ฐ๋ Do Concurent๋ฅผ "์ ๋๋ก ๋ Forall"๋ก ์ฌ๊ธฐ๋ฉด ๋๋ค.
[7] ์์ง ํ์ค์ด์ง๋ง, ์์ผ๋ก์ ํ์ค์์ ์ญ์ ๋ ๊ฒ์ ๋ฏธ๋ฆฌ ์๋ฆฌ๋ ๊ฒ. ๋ค๋ฅธ ์ธ์ด์ deprecated๋ฅผ ์๋ฏธ
[8] ๊ณผ๊ฑฐ์ ํ์ค์ด์์ง๋ง, ํ์ฌ๋ ์ง์์ง ํ์ค
[9] ํฌํธ๋์ ๋ง์ด ์ฌ์ฉํ๋ ์ฌ์ฉ์๋ค์๊ฒ ๋์์ ์๋ ๋ฌธ์ ๋ก C๋ C++๋ฐ์ ์๋ค.
[13] ํด์ธ๋ ์์นํด์, ์ํผ์ปดํจํฐ ๋ถ์ผ์์ ํฌํธ๋์ด ์ฌ์ ํ ํ๋ค๋ฆผ์ด ์๋ ๊ฐ์์ ์์น์ ์๋ค.
[15] ๋๋ถ์ ์ปดํ์ผ๋ฌ ๋ง๋ค๊ธฐ๊ฐ ํ๋ค์ด์ง๋ค.