포트란
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
포트란(Fortran)은 과학 기술 계산에 특화된 프로그래밍 언어이다. 1950년대에 개발되었으며, 초기에는 FORTRAN77과 같이 대문자로 표기되었으나, Fortran 90부터 첫 글자만 대문자로 표기한다. 미국 국립 표준 협회(ANSI)와 국제 표준화 기구(ISO)에서 표준을 제정하며, 존 배커스가 IBM 704 메인프레임 컴퓨터에서 어셈블리 언어의 대안으로 제안하여 시작되었다. FORTRAN 66, FORTRAN 77, Fortran 90, Fortran 95, Fortran 2003, Fortran 2008, Fortran 2018, Fortran 2023 등 여러 버전으로 발전해왔으며, 각 버전마다 구조적 프로그래밍 지원, 객체 지향 프로그래밍, 병렬 처리 기능 등이 추가되었다. 수치 예보, 기후 모델, 전산 유체 역학 등 대규모 계산이 필요한 분야에서 널리 사용되며, 현대 포트란은 수치 계산을 쉽고 간결하게 기술하도록 설계되어 프로그램 오류를 줄이고, 대규모 고속 연산에 적합하도록 지원한다.
더 읽어볼만한 페이지
- 포트란 - 존 배커스
존 배커스는 FORTRAN 프로그래밍 언어 설계 및 개발, ALGOL 60 개발 참여 및 바커스-나우르 표기법 고안 등 컴퓨터 과학에 기여한 미국의 과학자이다. - 포트란 - OpenMP
OpenMP는 공유 메모리 병렬 시스템에서 병렬 프로그래밍을 지원하는 API로, 컴파일러 지시문, 라이브러리 루틴, 환경 변수 등을 통해 병렬 영역 설정, 작업 분담, 데이터 관리, 스레드 동기화 등을 수행하며, 점진적인 병렬화가 가능하고 이식성이 높다. - 명령형 프로그래밍 언어 - 코틀린 (프로그래밍 언어)
코틀린은 젯브레인즈에서 개발한 정적 타입 언어로, 자바 가상 머신에서 동작하며 자바와의 호환성을 갖고, 안드로이드 공식 지원 언어로 채택되어 다양한 분야에서 활용되고 있으며, 이름은 러시아의 코틀린 섬에서 유래되었다. - 명령형 프로그래밍 언어 - 자바 (프로그래밍 언어)
자바는 제임스 고슬링 등에 의해 개발된 객체 지향 프로그래밍 언어로, 다양한 플랫폼에서 실행 가능하며 샌드박스 모델 기반의 보안 기능, 자동 메모리 관리, 멀티스레딩 등을 지원한다.
| 포트란 - [IT 관련 정보]에 관한 문서 | |
|---|---|
| 기본 정보 | |
| 이름 | 포트란 |
| 로마자 표기 | Poteuran |
| 유형 | 다중 패러다임: 구조적, 명령형 (절차적, 객체 지향), 제네릭, 배열 |
| 개발 시작 연도 | 1957년 |
| 설계자 | 존 배커스 |
| 개발자 | 존 배커스, IBM |
| 최신 버전 | 포트란 2023 (ISO/IEC 1539-1:2023) |
| 최신 버전 출시일 | 2023년 11월 17일 |
| 타이핑 | 강한, 정적, 명시적 |
| 구현체 | Absoft 크레이 GFortran G95 IBM XL 포트란 인텔 히타치 Lahey/Fujitsu Numerical Algorithms Group Open Watcom PathScale PGI Silverfrost 오라클 솔라리스 스튜디오 CUDA Fortran Builder Sun Visual Fortran |
| 영향을 받은 언어 | ALGOL 58 BASIC PL/I C |
| 영향을 준 언어 | Speedcoding 알골 58 베이직 C Chapel CMS-2 Fortress PL/I PACT I MUMPS IDL Ratfor |
| 운영 체제 | z/OS z/VM z/VSE MCP VOS3 ACOS GCOS VMS OS/400 UNIX Linux Windows Mac OS CP/M MS-DOS |
| 파일 확장자 | .f90 .f .for |
| 웹사이트 | 포트란 공식 웹사이트 |
2. 표기
FORTRAN77까지 초기 버전은 이름에 대문자를 사용하였으나, 현재는 Fortran으로 첫 문자만을 대문자로 표기한다.[14] Fortran90부터 현재까지 ISO, ANSI 모두 포트란에 대한 명칭은 "Fortran"을 사용한다.[78] 덧붙여, 대문자로 '''FORTRAN'''으로 표기한 경우에는 FORTRAN 77 이전을 가리키고, '''Fortran'''으로 표기한 경우에는 Fortran 90 이후를 가리키는 경우가 있다.
미국 국립 표준 협회(ANSI)의 J3 위원회와 국제 표준화 기구(ISO)의 ISO/IEC JTC1/SC22/WG5(WG5)가 포트란 표준화를 담당한다. J3는 WG5의 지시 하에 활동하며, WG5를 구성하는 가장 큰 부분이다.
1953년 존 배커스가 IBM 704[1] 메인프레임 머신용 프로그래밍 언어로 어셈블리어의 대안을 제시하면서 포트란의 역사가 시작되었다. 1956년 첫 포트란 매뉴얼이 발표되었고,[2] 1957년에는 첫 포트란 컴파일러가 등장하여 프로그래머들이 직접 어셈블리어를 작성해야 하는 수고를 덜게 되었다.[3]
3. 표준화 기구
4. 역사


배커스는 IBM에 재직하던 중 IBM 704 메인프레임 컴퓨터 프로그래밍을 위한 더 실용적인 어셈블리 언어 대안을 개발할 것을 제안했다.[4] 배커스의 FORTRAN 팀에는 리처드 골드버그, 셸던 F. 베스트, 할란 헤릭, 피터 셰리던, 로이 너트, 로버트 넬슨, 어빙 질러, 해럴드 스턴, 로이스 하이비트, 데이비드 세이어 등의 프로그래머들이 참여했다.[5] 이들은 컴퓨터에 방정식을 더 쉽게 입력하는 개념을 도입했는데, 이는 J. 할콤브 라닝이 개발하여 1952년 라닝과 지어러 시스템에서 시연된 아이디어였다.[6]
''IBM 수학 공식 번역 시스템'' 초안 사양은 1954년 11월에 완료되었고,[7] 1956년 10월에 FORTRAN 첫 매뉴얼이 등장했으며,[8][9] 1957년 4월에 첫 FORTRAN 컴파일러가 제공되었다.[10] Fortran은 어셈블리 언어 프로그래머가 고급 프로그래밍 언어를 대체하는 것을 받아들일 수 있을 정도로 효율적인 코드를 생성했다.[11]
존 배커스는 IBM 사보인 ''Think''와의 1979년 인터뷰에서 "게으름 때문에 제 작업의 많은 부분이 나왔습니다. 저는 프로그램을 작성하는 것을 좋아하지 않았고, 그래서 IBM 701에서 미사일 궤적을 계산하기 위한 프로그램을 작성할 때, 프로그램을 더 쉽게 작성할 수 있도록 프로그래밍 시스템에 대한 작업을 시작했습니다."라고 말했다.[12]
포트란은 수치 계산 중심 프로그램을 작성하는 과학자들에게 널리 채택되었고, 컴파일러 작성자들은 더 빠르고 효율적인 코드를 생성하는 컴파일러를 제작하게 되었다. 복소수 데이터 형식 포함은 포트란이 전기 공학과 같은 기술 응용 분야에 특히 적합하게 만들었다.[13]
1960년까지 FORTRAN 버전은 IBM 709, 650, 1620, 7090 컴퓨터에서 사용 가능했다. FORTRAN의 인기가 높아짐에 따라 경쟁 컴퓨터 제조업체들이 자사 기기에 대한 FORTRAN 컴파일러를 제공하게 되었고, 1963년까지 40개 이상의 FORTRAN 컴파일러가 존재했다.
Fortran 개발은 컴파일러 기술의 초기 진화와 병행되었으며, 컴파일러의 이론과 설계에 대한 많은 발전은 Fortran 프로그램에 대한 효율적인 코드를 생성해야 할 필요성에 의해 특별히 동기 부여되었다. 21세기 표준에 의해 정의된 이 언어는 특히 객체 지향 프로그래밍 지원의 통합과 이후 Coarray Fortran의 도입으로 인해 '모던 포트란'이라고 불리며, 이 용어는 문헌에서 점점 더 많이 사용되고 있다.[14]


BASIC의 저자들이 1968년에 쓴 학술 논문에서 이미 FORTRAN을 "구식"이라고 묘사했지만,[15] 포트란으로 작성된 프로그램은 수십 년 동안 존재해 왔으며 과학 및 엔지니어링 커뮤니티 전체에서 매일 사용되는 방대한 양의 포트란 소프트웨어가 있다.[16] 제이 파사초프는 1984년에 "물리학 및 천문학 학생들은 반드시 FORTRAN을 배워야 합니다. FORTRAN에는 너무 많은 자료가 있어서 과학자들이 파스칼, 모듈라-2 또는 다른 언어로 바꿀 것 같지 않습니다."라고 적었다.[17] 1993년 세실 E. 레이스는 FORTRAN을 "과학 컴퓨팅의 모국어"라고 부르며, 다른 가능한 언어로 대체하는 것은 "쓸쓸한 희망으로 남을 수 있다"라고 덧붙였다.[18]
포트란은 슈퍼컴퓨터와 같은 일부 가장 집중적인 작업, 예를 들어 천문학, 기후 모델링, 계산 화학, 계산 경제학, 전산 유체 역학, 전산 물리학, 데이터 분석,[19] 수문 모델링, 수치 선형 대수 및 수치 라이브러리(LAPACK, IMSL 및 NAG), 최적화, 위성 시뮬레이션, 구조 공학, 그리고 일기 예보의 주요 언어이다.[20] 새로운 컴퓨터 프로세서의 성능을 측정하는 많은 부동 소수점 벤치마크는 포트란으로 작성되었다. 수학 알고리즘은 수치 레시피에 잘 문서화되어 있다.
계산 과학의 보다 현대적인 코드는 일반적으로 그래프 분할을 위한 METIS, 선형 대수 기능을 위한 PETSc 또는 Trilinos, 메쉬 및 유한 요소 지원을 위한 deal.II 또는 FEniCS 및 기타 일반 라이브러리와 같은 대규모 프로그램 라이브러리를 사용한다. 2000년대 초반부터 널리 사용되는 많은 지원 라이브러리도 C로 구현되었으며 최근에는 C++로 구현되었다. 반면에 울프람 언어, MATLAB, 파이썬, R과 같은 고급 언어는 계산 과학의 특정 분야에서 인기를 얻었다. 결과적으로, 과학 프로그램의 점점 더 많은 부분이 그러한 고급 스크립트 언어로 작성되고 있다. 이러한 이유로 C와의 상호 운용성을 위한 기능이 포트란 2003에 추가되었으며 포트란 2018에 통합된 ISO/IEC 기술 사양 29113으로 향상되어 다른 프로그래밍 언어와의 보다 유연한 상호 운용성을 허용한다.
1956년에 최초의 매뉴얼이 출시되었고, 1957년에 IBM 704용 최초의 컴파일러가 출시되었다. 이름 '''Fortran'''은 '''for'''mula '''tran'''slation영어(수식 번역)에서 유래되었으며, FORTRAN 77이나 Fortran 90 등의 마지막 숫자는 규격이 제정된 연도를 나타낸다.
Fortran은 과학 기술 계산에 적합한 절차적 프로그래밍언어이며, 그 긴 역사 동안 개발된 매우 많은 수학 함수 및 서브루틴을 수치 해석 소프트웨어로 가지고 있다. 또한, 병렬 계산의 병렬성을 명시적으로 작성할 수 있어 최적화가 용이하고, 따라서 다른 언어보다 빠르다는 등의 이유로[21], 수치 예보 및 기후 모델, 구조 역학에서의 유한 요소법, 전산 유체 역학, 전산 물리학, 전산 화학, 계량 경제학, 동물과 식물의 품종 개량 등 대규모 계산을 수행하는 분야에서 슈퍼컴퓨터에 사용되고 있다.[22]
Fortran 90/Fortran 95의 언어 사양은 FORTRAN 77 시대에 비해 상당히 확장되고 발전했다. 최신 소스 코드는 초기의 것과 비교하면 거의 다른 언어처럼 보인다. 초창기에는 변수 이름이 대문자로 6자까지이며, 동적 기억 영역 확보가 불가능한 등 많은 제약이 있었지만, 이러한 제한은 없어졌고, Fortran 77부터 구조적 프로그래밍이 도입되었으며, Fortran 90부터 모듈러 프로그래밍, 배열 연산과 사용자 정의 총칭 함수가, Fortran 95부터 High Performance Fortran이, Fortran 2003부터 객체 지향이, Fortran 2008부터는 컨커런트 컴퓨팅(병렬 계산)이 도입되었다.
언어명은 대문자 FORTRAN이 아닌 '''Fortran'''으로 표기하는 것으로 1990년 ISO 회의에서 합의되었다.[23] 덧붙여, 대문자로 '''FORTRAN'''으로 표기한 경우에는 FORTRAN 77 이전의 FORTRAN을 가리키고, '''Fortran'''으로 표기한 경우에는 Fortran 90 이후를 가리키는 경우가 있다.
존 바커스는 1953년 말, 메인프레임 컴퓨터 IBM 704의 프로그램을 개발하면서 어셈블리 언어를 대체할 만한 것을 개발할 것을 IBM 상사에게 제안했다. FORTRAN 개발팀은 Richard Goldberg, Sheldon F. Best, Harlan Herrick, Peter Sheridan, 로이 너트, Robert Nelson, Irving Ziller, 로이스 하이빗, David Sayre라는 멤버로 구성되었다.[24]
''The IBM Mathematical Formula Translating System'' 의 초안 사양은 1954년 중순에 작성되었다. 1956년 10월에 Fortran의 첫 번째 매뉴얼이 작성되었고, 컴파일러는 1957년 4월에 완성되었다. 고객은 어셈블리 언어로 작성된 코드에 필적하는 성능을 얻지 못하면 고급 언어를 채택하지 않기 때문에 처음부터 최적화 컴파일러가 개발되었다.
이 새로운 방법이 핸드 어셈블보다 빠르게 동작할지 의심하는 시각도 있었지만, 프로그램 내 명령 수를 1/20으로 줄일 수 있어서 빠르게 받아들여졌다. 바커스는 1979년 인터뷰에서 "제가 이 일을 한 것은 귀찮았기 때문입니다. 저는 프로그램을 쓰는 것을 좋아하지 않아서, IBM 701에서 미사일 궤도 계산 프로그램을 개발했을 때, 프로그램 개발을 쉽게 하기 위해 프로그래밍 시스템을 만들기 시작했습니다."[25]라고 말했다.
Fortran은 과학자들 사이에서 수학을 응용한 프로그램 작성에 널리 사용되었고, 보다 빠르고 효율적인 코드를 출력하려는 원동력이 되었다. 또한, 라이브러리가 아닌 언어로서 복소수자료형을 지원한 것은 전기 전자 공학에서의 동적 특성 계산 등에 대표되는 과학 및 공학 분야의 프로그램을 작성하기 쉽게 했다.
1960년까지 다양한 버전의 FORTRAN이 IBM 709, IBM 650, IBM 1620, IBM 7090에서 작동했다. FORTRAN 사용자 수가 급증하고, 컴퓨터 제조사가 FORTRAN 컴파일러를 앞다투어 제공했기 때문에, 1963년까지 40개가 넘는 FORTRAN 컴파일러가 존재했다. 이로 인해 FORTRAN은 아키텍처가 다른 다양한 컴퓨터에서 널리 지원된 최초의 언어라고 할 수 있다.
Fortran 개발의 역사는 초기 컴파일러 기술의 역사 그 자체라고 할 수 있다. Fortran으로 효율적인 코드를 출력하려는 강력한 요구에서 컴파일러에 의한 최적화 기술이 크게 발전했다. FORTRAN 66 이후, ISO, ANSI, JIS에서 사양이 제정되었다. Fortran의 언어 사양은 연대별로 상당히 변화해 왔다. 다른 프로그래밍 언어에서 구현된 구조적 프로그래밍 기능 등이 계속해서 도입되었기 때문이다.
4. 1. 초창기 (FORTRAN, FORTRAN II, FORTRAN III, FORTRAN IV)
IBM 704용으로 개발된 최초의 FORTRAN은 32개의 명령을 가지고 있었다.
초기 FORTRAN에는 다음 명령문들이 포함되어 있었다:
704에서 숫자를 비교하는 유일한 방법은 산술 `IF` 문이었는데, 이는 차이를 테스트하고 오버플로의 위험이 있었다. 이 결함은 FORTRAN IV에서 도입된 "논리적" 기능을 통해 극복되었다.
`FREQUENCY` 문은 원래 산술 `IF` 문의 세 가지 분기 케이스에 대한 분기 확률을 제공하고, `DO` 루프 반복 횟수를 제안하는 데 사용되었다. 최초의 FORTRAN 컴파일러는 이 가중치를 사용하여 생성된 코드의 몬테카를로 시뮬레이션을 ''컴파일 시간에'' 수행하여 기본 블록 배치를 최적화했다.[15]
최초의 FORTRAN 컴파일러는 오류 발견 시 프로그램을 중지하고 콘솔에 오류 코드를 출력하여 진단 정보를 보고했다. 프로그래머는 운영자 매뉴얼의 오류 메시지 테이블에서 해당 코드를 찾아 문제에 대한 간략한 설명을 참조할 수 있었다.[24] 이후 NASA에서 개발한 오류 처리 서브루틴이 통합되어 사용자 오류를 처리하고 코드의 어느 줄에 오류가 있는지 알렸다.[25]
1958년, IBM은 FORTRAN II를 출시했다. 주요 개선 사항은 절차적 프로그래밍 지원으로, 사용자가 작성한 서브루틴과 함수를 통해 값을 반환하고 매개변수를 참조로 전달할 수 있게 되었다. `COMMON` 문은 서브루틴이 공통(또는 전역) 변수에 접근하는 방법을 제공했다. FORTRAN II에는 다음 여섯 개의 새로운 문이 도입되었다:[28]
이후 FORTRAN II는 `DOUBLE PRECISION` 및 `COMPLEX` 데이터 유형을 지원했다.
초기 FORTRAN 컴파일러는 서브루틴에서 재귀를 지원하지 않았다. 초기 컴퓨터 아키텍처는 스택 개념을 지원하지 않았고, 서브루틴 호출 시 반환 위치는 고정된 위치나 기계 레지스터에 저장되었다. FORTRAN 77에는 지정되지 않았지만, 많은 F77 컴파일러는 옵션으로 재귀를 지원했으며, Burroughs 메인프레임은 기본적으로 재귀를 지원했다. 이는 Fortran 90에서 표준이 되었다.[29]
IBM은 1958년에 인라인 어셈블리 코드를 포함한 기능을 제공하는 FORTRAN III를 개발했지만, 제품으로 출시되지는 않았다. FORTRAN III에는 기계 종속적인 기능이 포함되어 있어 이식성이 떨어졌다.[14]
IBM은 1961년에 고객의 요구에 따라 FORTRAN IV 개발을 시작했다. FORTRAN IV는 FORTRAN II의 기계 종속적 기능을 제거하고, `LOGICAL` 자료형, 논리적 부울 표현식, ''논리 IF 문''을 추가했다. FORTRAN IV는 1962년에 IBM 7030("Stretch") 컴퓨터용으로 처음 출시되었고, 이후 IBM 7090, IBM 7094, IBM 1401용 버전이 출시되었다.[30]
1965년까지 FORTRAN IV는 미국 표준 협회 X3.4.3 FORTRAN 워킹 그룹에서 개발 중인 ''표준''을 준수해야 했다.[31]
4. 2. FORTRAN 66
1966년 미국 국립 표준 협회(ANSI)에서 표준 X3.9-1966을 발표했는데, 이는 최초의 산업 표준 Fortran이다.[112] 이 표준은 IBM FORTRAN IV 컴파일러를 바탕으로 했으며, 널리 사용되면서 FORTRAN IV와 FORTRAN 66은 혼용되어 불렸다. 1972년에는 국제 표준화 기구(ISO)에서 ANSI FORTRAN 66을 그대로 받아들여 포트란 국제 표준(ISO R1539-1972)으로 채택했다.[111]
ANSI FORTRAN 66 표준은 다음과 같은 문법을 포함한다.[112]
JIS에서는 1967년에 FORTRAN 66 규격을 세 가지 수준(JIS C 6201, JIS C 6202, JIS C 6203)으로 나누어 제정했다. 각 수준별 주요 차이점은 다음과 같다.
| 항목 | JIS C 6201 (수준 7000) | JIS C 6202 (수준 5000) | JIS C 6203 (수준 3000) |
|---|---|---|---|
| 변수, 배열, 프로시저명 길이 | 최대 6자 | 최대 6자 | 최대 5자 |
| 복소수형, 배정밀도 실수형 | 있음 | 없음 | 없음 |
| DATA 문, 초기값 설정 부프로그램 | 있음 | 없음 | 없음 |
| FORMAT 문 필드 기술자 | D, G, A 정의 가능 | 일부 제한 | 일부 제한 |
| 논리형 데이터, 논리식, 관계식, 논리 IF 문 | 사용 가능 | 사용 가능 | 사용 불가 |
| 형 선언문 | 있음 | 있음 | 없음 |
| EXTERNAL 문 | 있음 | 있음 | 없음 |
| 3차원 배열 | 있음 | 없음 | 없음 |
| 이름 있는 COMMON 문 | 있음 | 없음 | 없음 |
| 문 번호 자릿수 | 4자리 | 4자리 | 4자리 |
| COMMON 문에 배열 선언 | 사용 가능 | 사용 가능 | 사용 불가 |
| 정합 배열 | 있음 | 있음 | 없음 |
4. 3. FORTRAN 77
1978년 4월, 미국 국립 표준 협회(ANSI)는 FORTRAN 77(X3.9-1978) 표준을 승인하였다.[113] 1980년에는 국제 표준화 기구(ISO) 표준(ISO 1539:1980)으로 채택되었다.[114] 이 표준은 구조적 프로그래밍 지원을 강화하고, I/O 기능을 개선하는 등 FORTRAN 66에 비해 여러 가지 중요한 기능을 추가했다.FORTRAN 77의 주요 특징은 다음과 같다.
- 구조적 프로그래밍 지원 강화: block IF, END IF 문, ELSE, ELSE IF 절 추가
- DO 루프 확장: 매개변수 확장, 음수 방향 증가, 0까지 이동 등
- I/O 개선: OPEN, CLOSE, INQUIRE 문 도입, 직접 접근 파일 I/O 지원
- 새로운 데이터 타입 및 구문: CHARACTER 형 데이터 타입, PARAMETER 문 (상수 정의), SAVE 문 (지역 변수 영구 보존) 추가
- 내장 함수: 일반명(generic) 접근, ASCII 문자 집합 기반 내장 함수 (LGE, LGT, LLE, LLT)
| 기능 | 설명 |
|---|---|
| 구조적 프로그래밍 | block IF, END IF, ELSE, ELSE IF |
| DO 루프 | 매개변수 확장, 음수 증가, 0까지 이동 |
| I/O | OPEN, CLOSE, INQUIRE, 직접 접근 파일 I/O |
| 데이터 타입 | CHARACTER 형 |
| 구문 | PARAMETER, SAVE |
| 내장 함수 | 일반명 접근, ASCII 기반 문자열 비교 함수 |
미국 국방부는 1978년에 MIL-STD-1753 표준을 발표하여 FORTRAN 77의 실용적 확장을 제공했다.[36] 이 표준은 ANSI FORTRAN 77 표준에는 포함되지 않았지만, 많은 FORTRAN 77 컴파일러에서 구현된 기능을 표준화했다. 주요 내용은 다음과 같다.
- DO WHILE, END DO 문
- INCLUDE 문
- IMPLICIT NONE 문 (IMPLICIT 문의 변형)
- 비트필드 연산 내장 함수
FORTRAN 77은 거의 15년 동안 "표준 FORTRAN"으로서 역사적으로 가장 중요한 방언이 되었다.
4. 4. Fortran 90
Fortran 90은 1991년에 ISO에서 ISO/IEC 1539:1991(E)로 승인되었고, 1992년에는 ANSI에서 승인되었다.[116] 이는 포트란을 현대화한 표준으로, Ada 등 다른 프로그래밍 언어의 많은 아이디어를 도입했다.주요 변경 사항은 다음과 같다.
- 공식 표기가 FORTRAN에서 Fortran으로 변경되었다.
- 자유 형식 도입 및 포트란 키워드에 소문자 허용.
- 식별자 길이를 31문자까지 허용.
- 인라인 주석문 추가.
- 배열 이름을 이용한 배열 전체 요소에 대한 연산 기능.
- `RECURSIVE` 키워드를 이용한 재귀 호출 프로시저.
- `MODULE`을 이용한 모듈화 프로그래밍.
- `INTERFACE` 문을 이용한 명시적 프로시저 선언.
- 연산자 오버로딩.
- 사용자 제너릭 프로시저.
- Derived type - 유도 타입 (다른 언어의 구조체(structure)).
- 속성을 부여한 타입 선언.
- 동적 메모리 할당.
- 포인터 속성을 이용한 자료구조와 동적 접근 알고리즘 지원.
- `EXIT`, `CYCLE` 문, `NAMED` 구조.
- `SELECT CASE` 문.
- 사용자 지정 정밀도 선언.
- `RANDOM_NUMBER`, `DATE_AND_TIME` 등 다양한 목적의 내장 프로시저 추가.
- 표준 문서에 Obsolescent(비권장 문법, 이후 삭제 예정)와 Deleted(삭제) 분류 문법 등장.
Fortran 90은 FORTRAN 77의 기존 문법 중 일부를 Obsolescent로 분류했지만, Deleted 항목은 없어 FORTRAN 77 코드가 Fortran 90 표준에 부합하도록 했다.
Obsolescent features는 다음과 같다.
| Obsolescent features |
|---|
| 산술 IF |
| 실수(Real) 및 배정도(double precision) DO 제어 변수 및 DO 루프 제어 표현식 |
| 공유 DO 종료 및 END DO 또는 CONTINUE 이외의 문장에서 종료 |
| IF 블록 외부에서 END IF 문으로 분기 |
| 대체 반환(Alternate return) |
| PAUSE 문 |
| ASSIGN 및 할당된 GO TO 문 |
| 할당된 FORMAT 지정자 |
| cH 편집 디스크립터 |
4. 5. Fortran 95
Fortran영어 95는 공식적으로 ISO/IEC 1539-1:1997로 발표되었으며, Fortran영어 90 표준에서 해결되지 않은 몇 가지 문제를 해결하기 위한 마이너 업데이트였다. Fortran영어 95는 병렬 프로그래밍 지원을 목적으로, 고성능 포트란의 영향을 받았다.[117]주요 추가 기능은 다음과 같다.
- 벡터화를 위한 FORALL영어 문[118]과 중첩 WHERE영어 구조
- 사용자 정의 PURE영어 및 ELEMENTAL영어 프로시저
- 포인터 초기화를 포함한 유도체 구성 요소의 초기화
- 데이터 객체에 대한 초기화 문 기능 확장
- 명시적 DEALLOCATION영어 없이 프로시저 종료 시 동적 할당 메모리 해제
Fortran영어 95에서는 Fortran영어 90에서 Obsolescent(구식)로 분류되었던 항목 중에서 몇몇 문법이 Deleted(삭제) 항목으로 변경되었다.
| 구식 기능 | 예 | 상태 / Fortran영어 95에서의 예정 |
|---|---|---|
| 비-정수형 DO 매개변수 또는 제어 변수 | 삭제 | |
| 블록 외부에서 END IF로의 분기 | 삭제 | |
| PAUSE 문 | 삭제 | |
| ASSIGN statement 와 assigned GO TO statement | 삭제 | |
| Assigned FORMAT 지정자 | 삭제 | |
| H 편집자 | 삭제 |
Fortran영어 95의 중요한 보충 자료는 ISO 기술 보고서 TR-15581: 향상된 데이터 유형 기능(일명 ''할당 가능 TR'')이다. 이 사양은 ALLOCATABLE영어 배열의 향상된 사용을 정의했다. ALLOCATABLE영어 배열은 메모리 누수 가능성을 제거하고, 컴파일러가 포인터보다 더 빠른 코드를 생성할 수 있도록 돕는다.[39]
또 다른 중요한 보충 자료는 ISO 기술 보고서 TR-15580: 부동 소수점 예외 처리(일명 ''IEEE TR'')이다. 이 사양은 IEEE 부동 소수점 산술 및 부동 소수점 예외 처리에 대한 지원을 정의했다.
4. 6. Fortran 2003
원래는 90에 대한 10년 단위 major update로 Fortran 2000이 계획되었으나[119], 합의가 늦어져 Fortran 2003으로 발표되었다.Fortran 2003의 공식 문서는 ISO/IEC 1539-1:2004이다.[120]
Fortran 2003은 객체 지향 프로그래밍(OOP)을 지원한다. 주요 내용은 다음과 같다.
- 상속과 다형성 객체 지원
- type-bound 프로시저 지원
- 추상 데이터형 지원
또한, 다음과 같은 기능들이 추가/개선되었다.
- IEEE 부동소수점 표준 내장 모듈
- 비동기 전송, 스트림 타입 I/O 도입에 따른 I/O 개선
- 명령행 인자에 대한 지원, 시스템 환경 변수 지원 등 사용자 환경에 대한 구성 추가
- 프로시저 포인터
- 데이터 조작성 강화
- C 언어와의 상호 호환성 BINDING
- 할당 특성에 대한 강화
- 기타 기능 강화
포트란 2003의 새로운 기능에 대한 자세한 내용은 Fortran Working Group (WG5)의 공식 웹사이트에서 확인할 수 있다.[82]
JIS X 3001:2009는 Fortran 2003으로 통칭되는 규격을 기술 내용 및 구성을 기술 언어 외에는 변경하지 않고 작성하였다. 해당 규격은 일부 예외를 제외하고 JIS X 3001-1:1998의 상위 호환 확장이다.[104]
4. 7. Fortran 2008
Fortran 2008은 2010년에 발표된 표준으로 ISO/IEC 1539-1:2010이 공식 문서이다[121]. Fortran 2003에 대한 minor revision으로 다음과 같은 기능의 추가를 특징으로 한다[122].- Do concurrent를 이용한 병렬 처리 지원 강화[123][124]
- Cray 포트란의 기능이었던 Coarray의 표준화[125]
- Submodule을 이용한 OOP 지원 강화
- 기타 기능 개선
Fortran 2008(ISO/IEC 1539-1:2010)은 Fortran 95의 마이너 업그레이드 버전으로, 2010년 9월에 승인되었다. Fortran 2003의 명확화 및 수정과 함께 다음과 같은 새로운 기능이 도입되었다.
- 모듈 구조 추가 (ISO/IEC TR 19767:2005를 대체하는 서브 모듈)
- 공동 배열 포트란(Co-array Fortran) - 병렬 계산 모델
- do concurrent - 상호 의존성이 없는 루프를 병렬로 실행하는 DO 루프
- 메모리 상의 레이아웃을 지정하기 위한 CONTIGUOUS(인접) 속성
- 컨스트럭트 범위가 있는 객체의 선언을 포함하는 블록 컨스트럭트
- 파생 타입에서 재귀적 포인터의 대안으로서의 재귀적 할당 가능 컴포넌트
최종 드래프트 표준(FDIS)은 문서 N1830으로 이용 가능하다.
Fortran 2008의 중요한 추가 사항은 ISO 기술 사양(TS) 29113의 Fortran에서의 C 언어와의 더 높은 상호 운용성이며[85], 2012년 5월 ISO의 승인을 위해 정리되었다. C 언어의 배열에 대한 Fortran 접근과 관련하여 타입과 랭크를 무시하는 사양이 추가되었다.
4. 8. Fortran 2018
Fortran 2018은 2018년에 발표된 포트란 표준으로, 공식 문서는 ISO/IEC 1539-1:2018이다.[48] Fortran 2008의 마이너 개정판에 해당하며, 이전에는 Fortran 2015로 불렸다.[48] 2018년 11월 28일에 출시되었다.[49]Fortran 2018은 다음 두 가지 기술 사양을 통합한다.
또한, 다음과 같은 변경 사항 및 새로운 기능이 포함되었다.
- ISO/IEC/IEEE 60559:2011 (최신 소규모 개정판인 IEEE 이전의 IEEE 부동 소수점 표준) 지원[52]
- 16진수 입출력[52]
- IMPLICIT NONE 개선[52]
- 기타 변경 사항[53][54][55]
Fortran 2018에서는 산술 IF 문과 비블록 DO 구문이 삭제되었다. COMMON 및 EQUIVALENCE 문, BLOCK DATA 프로그램 단위, 레이블이 지정된 DO 루프, 내장 함수의 특정 이름, FORALL 문 및 구문은 사용 중단되었다.
4. 9. Fortran 2023
Fortran 2023은 가장 최근의 포트란 국제 표준이며 2023년 11월 17일에 발표되었다. 공식 문서는 ISO/IEC 1539-1:2023이다.[48] Fortran 2023은 Fortran 2018의 오류와 누락을 수정하는 데 중점을 둔 Fortran 2018의 사소한 확장판이다.[56] 또한 열거형 기능을 포함하여 몇 가지 작은 기능이 추가되었다.[56] Fortran 2023 (ISO/IEC 1539-1:2023)은 2023년 11월에 발행되었다.[95]5. 언어 특징
포트란 95가 도입한 포트란 언어 기능에 대한 자세한 설명은 포트란 95 언어 기능 문서에 있다. 이후 표준에서 정의된 언어 버전은 종종 '현대 포트란'으로 통칭된다.
5. 1. Fortran 90/95의 특징
Fortran 90은 1991년에 ISO에서 먼저 승인(ISO/IEC 1539:1991(E))되었고, 1992년에 ANSI에서 승인되었다.[116] FORTRAN 77 표준에서 여러 기능이 추가되거나 개선되었다. 주요 특징은 다음과 같다.- 자유 형식 소스 입력: 프로그램 본문을 7번째 열부터 작성할 필요가 없고, 80열 제한도 없다. 소문자 Fortran 키워드도 허용된다.
- 긴 식별자: 최대 31자까지의 식별자를 사용할 수 있다.
- 인라인 주석: `!` 기호를 사용하여 코드 내에 주석을 추가할 수 있다.
- 배열 연산: 배열 전체 또는 부분 배열에 대한 연산을 지원하여 수학 및 엔지니어링 계산을 간결하게 표현할 수 있다.
- `x(1:n)=r(1:n)*cos(a(1:n))`와 같이 배열의 특정 범위에 대한 연산을 지정할 수 있다.
- `where` 문을 사용하여 조건에 따라 배열의 값을 선택적으로 할당할 수 있다.
- 모듈: 관련된 서브루틴과 데이터를 그룹화하고, 다른 프로그램에서 사용할 수 있도록 하는 모듈 개념이 도입되었다.
- 인터페이스: `interface` 문을 사용하여 컴파일 시점에 인수의 형(type) 일치와 데이터 입출력 방향을 검사할 수 있다.
- 사용자 정의 제네릭 프로시저: 동일한 함수 이름으로 인수의 수와 유형에 따라 다른 내부 함수를 호출하는 제네릭 프로시저를 정의할 수 있다.
- 연산자 오버로딩: `+`, `-` 등의 연산자를 다중 정의할 수 있다.
- 파생형 데이터 타입: 사용자가 새로운 데이터 타입을 정의할 수 있다.
- 동적 메모리 할당: `allocatable` 속성과 `allocate`, `deallocate` 문을 사용하여 동적으로 메모리를 할당하고 해제할 수 있다.
- 포인터: 포인터를 사용하여 동적 데이터 구조를 다룰 수 있다.
- 제어 구조 개선:
- `do` 문의 종료를 `end do`로 명시할 수 있다.
- `do while` 문이 추가되었다.
- `exit` 문으로 `do` 문을 종료하거나, `cycle` 문으로 다음 반복으로 건너뛸 수 있다.
- `select case` 문이 추가되었다.
- 수치 정밀도 제어: 사용자가 수치 정밀도를 제어할 수 있는 이식성 좋은 지정 방법이 제공된다.
- 새로운 내장 함수: 다양한 목적의 내장 함수가 추가되었다.
Fortran 95는 Fortran 90의 마이너 업데이트(ISO/IEC 1539-1:1997)로,[117] 병렬 프로그래밍 지원을 위한 기능이 추가되었다.
- FORALL 문: 벡터화를 위한 `FORALL` 문이 추가되었다.[118]
- PURE 및 ELEMENTAL 프로시저: 사용자 정의 프로시저를 `PURE` 또는 `ELEMENTAL`로 지정할 수 있다.
- 포인터 초기화: 유도체 구성 요소의 초기화 기능이 확장되었다.
- 자동 메모리 해제: 프로시저 종료 시 명시적인 `DEALLOCATION` 없이 동적 할당 메모리가 자동으로 해제된다.
Fortran 90/95는 수치 계산 프로그램을 간결하게 작성하고, 오류를 줄이며, 편리한 도구를 제공하고, 대규모 고속 연산을 지원하며, 무료 컴파일러를 사용할 수 있다는 장점이 있다.
5. 2. FORTRAN 77의 특징
FORTRAN 77은 수식 계산과 입출력을 간편하게 기술할 수 있도록 설계되었다. 또한, 정적 데이터 할당과 고정 형식의 프로그램 서식을 특징으로 한다.- 수식 계산의 간편한 기술: 수학 수식과 거의 동일하게 계산식을 표현할 수 있다. 이는 현대 프로그래밍 언어에서 표준 수식 표현의 시초로 평가받는다.
- 입출력의 용이함:
- `FORMAT` 문을 사용하여 출력 형식을 간단하게 정의할 수 있다.
- 실제 출력 장치를 고려하지 않아도 되는 입출력 문을 제공한다. 이는 C 언어의 표준 입출력과 유사한 개념이다.
- 정적 데이터 할당: `COMMON`, `BLOCK DATA`, `SAVE` 문 등을 사용하여 데이터를 정적으로 할당한다.
- 고정 형식: 프로그램 코드는 열 위치에 따라 작성되며, 일부 구현에서는 확장되었다.
FORTRAN 66 표준 발표 이후, 컴파일러 제작사들은 다양한 확장 기능을 추가했고, 이에 따라 1977년 ANSI 위원회 X3J3는 표준 개정 작업을 거쳐 1978년 4월에 FORTRAN 77을 발표했다. FORTRAN 77은 다음과 같은 주요 기능을 추가했다.
- 구조적 프로그래밍 지원: `IF` 블록 및 `END IF` 문, `ELSE IF` 및 `ELSE` 절을 추가.
- `DO` 루프 확장: 매개변수 표현식, 음수 증가, 0회 반복 허용.
- 입출력 개선: `OPEN`, `CLOSE`, `INQUIRE` 문 도입, 직접 접근 파일 I/O 지원.
- `IMPLICIT` 문: 변수 이름에 따라 형식을 지정하는 규칙 재정의.
- `CHARACTER` 형: 문자 기반 데이터 처리 기능 대폭 확장.
- `PARAMETER` 문: 상수 지정.
- `SAVE` 문: 지역 변수를 영구적으로 지정.
- 내장 함수의 총칭 함수: 예) `SQRT` 함수는 `COMPLEX`, `REAL*16` 등 다양한 형식의 인수를 허용.
- ASCII 코드 기반 문자열 비교 내장 함수: `LGE`, `LGT`, `LLE`, `LLT`.
이 과정에서 이전 표준과 호환되지 않는 일부 기능이 제거되거나 변경되었다. 제거된 주요 기능은 다음과 같다.
- 홀레리스 상수 및 홀레리스 데이터 표현.
- `FORMAT` 문에서 H 편집 디스크립터로 읽기.
- 배열 경계 초과 접근.
- `DO` 루프 범위를 벗어났다가 다시 제어 전송.
- 이전 규격에서는 문자형(`CHARACTER`형)이 없었기 때문에, 문자 데이터나 문자열 데이터를 정수나 실수 변수나 배열에 저장하는 것이 행해졌지만, Fortran77에서는 그것을 폐지했다.
6. 주요 응용 분야
포트란은 수치 예보, 기후 모델, 구조 역학에서의 유한 요소법, 전산 유체 역학, 전산 물리학, 전산 화학, 계량 경제학, 동물과 식물의 품종 개량 등 대규모 계산을 수행하는 과학 기술 분야에서 주로 사용된다.[77] 특히 슈퍼컴퓨터 프로그래밍에 널리 사용된다.[77]
1956년에 최초의 매뉴얼이 출시되었고, 1957년에 IBM 704용 최초의 컴파일러가 출시되었다.
포트란은 슈퍼컴퓨터와 같은 일부 가장 집중적인 작업, 예를 들어 천문학, 기후 모델링, 계산 화학, 계산 경제학, 전산 유체 역학, 전산 물리학, 데이터 분석,[61] 수문 모델링, 수치 선형 대수 및 수치 라이브러리(LAPACK, IMSL 및 NAG), 최적화, 위성 시뮬레이션, 구조 공학, 그리고 일기 예보의 주요 언어이다.[62]
새로운 컴퓨터 프로세서의 성능을 측정하는 많은 부동 소수점 벤치마크는 포트란으로 작성되었다.
7. 예제
다음은 포트란 90에서 도입된 동적 메모리 할당과 배열 기반 연산을 보여주는 프로그램 예제이다. 특히 배열을 조작하는 데 `DO` 루프와 `IF`/`THEN` 문이 없다는 점이 주목할 만하다. 수학적 연산은 배열 전체에 적용된다. 또한, 설명적인 변수 이름과 현대 프로그래밍 스타일에 맞는 일반적인 코드 형식을 사용하는 것도 볼 수 있다. 이 예제는 대화식으로 입력된 데이터의 평균을 계산한다.[1]
```fortran
program average
! 몇 개의 숫자를 읽어 평균을 구합니다.
! 작성된 대로, 데이터 포인트가 없으면 평균 0이 반환됩니다.
! 이것이 원하는 동작이 아닐 수 있지만, 이 예제를 간단하게 유지합니다.
implicit none
real, allocatable :: points(:)
integer :: number_of_points
real :: average_points, positive_average, negative_average
average_points = 0.
positive_average = 0.
negative_average = 0.
write (*,*) "평균을 낼 점의 개수를 입력하십시오:"
read (*,*) number_of_points
allocate (points(number_of_points))
write (*,*) "평균을 낼 점들을 입력하십시오:"
read (*,*) points
! 점들을 합하고 number_of_points로 나누어 평균을 구합니다.
if (number_of_points > 0) average_points = sum(points) / number_of_points
! 이제 양수 및 음수 점에 대해서만 평균을 구합니다.
if (count(points > 0.) > 0) positive_average = sum(points, points > 0.) / count(points > 0.)
if (count(points < 0.) > 0) negative_average = sum(points, points < 0.) / count(points < 0.)
! 터미널 stdout 장치 6에 결과 출력
write (*,'(a,g12.4)') '평균 = ', average_points
write (*,'(a,g12.4)') '양수 점의 평균 = ', positive_average
write (*,'(a,g12.4)') '음수 점의 평균 = ', negative_average
deallocate (points) ! 메모리 해제
end program average
```
```fortran
program helloworld
print *, "Hello, world."
end program helloworld
7. 1. FORTRAN II
다음은 천공 카드나 천공 테이프에서 삼각형의 세 변의 길이를 읽은 후, 헤론의 공식으로 넓이를 구하여 출력하는 예이다.```fortran
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
```
이 프로그램은 헤론의 공식을 사용하여, 입력으로 세 개의 5자리 정수 A, B, C가 담긴 테이프 릴에서 데이터를 읽는다. I, J, K, L, M 또는 N으로 시작하는 변수는 "고정 소수점"(즉, 정수)이고, 그렇지 않은 변수는 부동 소수점이다. 이 예제에서는 정수를 처리하므로 변수 이름은 문자 "I"로 시작한다. 변수 이름은 문자로 시작해야 하며 FORTRAN II에서 최대 6자까지 문자와 숫자를 모두 사용할 수 있다. A, B, C가 평면 기하학에서 삼각형의 변을 나타낼 수 없으면 프로그램 실행은 "STOP 1"이라는 오류 코드로 종료된다. 그렇지 않으면, A, B, C에 대한 입력 값을 보여주는 출력 줄이 인쇄되고, 이어서 삼각형의 계산된 면적(AREA)이 출력 줄을 따라 10개의 공간을 차지하고 소수점 뒤에 2자리를 표시하는 부동 소수점 숫자로 표시된다. 이는 레이블 601의 FORMAT 문에서 F10.2의 .2에 해당한다.
7. 2. 포트란 90
fortranprogram average
! 몇 개의 숫자를 읽어 평균을 구합니다.
! 작성된 대로, 데이터 포인트가 없으면 평균 0이 반환됩니다.
! 이것이 원하는 동작이 아닐 수 있지만, 이 예제를 간단하게 유지합니다.
implicit none
real, allocatable :: points(:)
integer :: number_of_points
real :: average_points, positive_average, negative_average
average_points = 0.
positive_average = 0.
negative_average = 0.
write (*,*) "평균을 낼 점의 개수를 입력하십시오:"
read (*,*) number_of_points
allocate (points(number_of_points))
write (*,*) "평균을 낼 점들을 입력하십시오:"
read (*,*) points
! 점들을 합하고 number_of_points로 나누어 평균을 구합니다.
if (number_of_points > 0) average_points = sum(points) / number_of_points
! 이제 양수 및 음수 점에 대해서만 평균을 구합니다.
if (count(points > 0.) > 0) positive_average = sum(points, points > 0.) / count(points > 0.)
if (count(points < 0.) > 0) negative_average = sum(points, points < 0.) / count(points < 0.)
! 터미널 stdout 장치 6에 결과 출력
write (*,'(a,g12.4)') '평균 = ', average_points
write (*,'(a,g12.4)') '양수 점의 평균 = ', positive_average
write (*,'(a,g12.4)') '음수 점의 평균 = ', negative_average
deallocate (points) ! 메모리 해제
end program average
```
이 프로그램은 포트란 90에서 도입된 동적 메모리 할당과 배열 기반 연산을 보여준다. 특히 배열을 조작하는 데 `DO` 루프와 `IF`/`THEN` 문이 없다는 점이 주목할 만하다. 수학적 연산은 배열 전체에 적용된다. 또한, 설명적인 변수 이름과 현대 프로그래밍 스타일에 맞는 일반적인 코드 형식을 사용하고 있다. 이 예제는 대화식으로 입력된 데이터의 평균을 계산한다.
8. 관련 언어
F영어는 포트란 95의 부분 집합으로 설계된 프로그래밍 언어이다. 특히 교육 및 과학 컴퓨팅에 적합하도록 불필요하거나 사용되지 않는 기능들을 제거하였다.[70]
OpenMP와 OpenACC는 병렬 프로그래밍을 위한 확장으로, 컴파일러 지시문을 통해 스레드 병렬화를 지원한다.
CUDA Fortran은 NVIDIA GPU 프로그래밍을 위한 확장으로, 포트란 언어 사양을 기반으로 독자적으로 확장되었다.[107]
9. 기타
FORTRAN 표준 위원회 회의에서 "O 문자 해로운 것으로 간주됨"이라는 제목의 풍자적인 기술 제안이 공식 배포본에 포함되었다. 이 제안은 "O" 문자와 숫자 0 사이에서 때때로 발생하는 혼란을 해결하기 위해 변수 이름에 문자를 사용하는 것을 금지하려 했다. 그러나 제안된 방법은 문자 집합에서 문자를 완전히 제거하는 것이었다. 이는 악명 높은 `GO TO` 문을 이전처럼 사용할 수 없게 함으로써 구조적 프로그래밍을 장려한다는 점에서 유익하다고 간주되었다. "일부 기존 프로그램의 유효성을 무효화할 수 있지만" 대부분 "어쨌든 표준을 따르지 않았을 것"이라고 언급되었다.[73]
X3J3에서 Fortran 77에서 DO 루프의 최소 반복 횟수가 0 또는 1이어야 하는지에 대해 논의할 때, 로렌 메이스너는 최소 반복 횟수를 2로 제안했는데, 이는 "두 횟수 미만이면 루프를 사용할 이유가 없기 때문"이었다.
가변 길이 배열이 추가될 때, 상한과 하한을 구분하는 적절한 문자에 대한 논쟁이 있었다. 이러한 논쟁을 검토하는 논평에서 월트 브레이너드는 "천문학 대 소화기내과"라는 제목의 기사를 썼는데, 이는 일부 지지자들이 별표("*")를 사용할 것을 제안한 반면, 다른 사람들은 콜론(":")을 선호했기 때문이었다.
문자 I–N으로 시작하는 변수 이름은 정수형을 기본으로 하고, 다른 문자로 시작하는 변수는 실수형을 기본으로 하지만, 프로그래머는 명시적 선언으로 기본값을 무시할 수 있었다.[75] 이는 "FORTRAN에서, GOD는 REAL(INTEGER로 선언되지 않는 한)."이라는 농담으로 이어졌다.
참조
[1]
웹사이트
Chapel spec (Acknowledgements)
http://chapel.cray.c[...]
Cray Inc
2015-10-01
[2]
문서
Report of a Visit to Discuss Common Programming Languages in Czechoslowakia and Poland
1963
[3]
웹사이트
The history of FORTRAN I, II and III
http://www.softwarep[...]
Softwarepreservation.org
2014-11-19
[4]
서적
Comparative Programming Languages, Third Edition
Addison-Wesley
[5]
간행물
The Ideal HPC Programming Language
https://queue.acm.or[...]
2010-06-18
[6]
웹사이트
HPL – A Portable Implementation of the High-Performance Linpack Benchmark for Distributed-Memory Computers
http://www.netlib.or[...]
2015-02-21
[7]
웹사이트
Q13. What are the benchmarks?
http://www.spec.org/[...]
SPEC
2019-11-13
[8]
서적
Comparative Programming Languages, Third Edition
Addison-Wesley
[9]
웹사이트
TIOBE Index
https://www.tiobe.co[...]
TIOBE
2024-05
[10]
웹사이트
FORTRAN: The Pioneering Programming Language
https://www.ibm.com/[...]
2012-03-07
[11]
백과사전
FORTRAN
https://www.britanni[...]
2021-06-14
[12]
서적
Fortran for Scientists and Engineers
https://www.mheducat[...]
McGraw-Hill Education
2018
[13]
문서
[14]
간행물
The History of Fortran I, II, and III
http://www.softwarep[...]
1998-10
[15]
conference
The FORTRAN Automatic Coding System
http://www.softwarep[...]
1957-02
[16]
서적
Digital Apollo
MIT Press
[17]
간행물
The Fortran I Compiler
http://polaris.cs.ui[...]
2000-01
[18]
뉴스
Fortran creator John Backus dies
https://www.nbcnews.[...]
MSNBC
2007-05-20
[19]
웹사이트
FORTRAN – The First Programming Language for Numeric Calculations
http://scihi.org/for[...]
2019-10-15
[20]
간행물
Serial compilation and the 1401 FORTRAN compiler
[21]
서적
Anatomy of a Compiler
Van Nostrand Reinhold
1967
[22]
매뉴얼
Fortran Specifications and Operating Procedures, IBM 1401
http://bitsavers.org[...]
IBM
[23]
웹사이트
Subject: GOTRAN ON THE IBM 1316 DISK STORAGE PACK (Serial No. K7402)
https://web.archive.[...]
2006-03-03
[24]
서적
The FORTRAN Automatic Coding System for the IBM 704 EDPM : Preliminary Operator's Manual
http://www.softwarep[...]
Programming Research Department, International Business Machines Corporation
1957-04-08
[25]
웹사이트
My Years at NASA
https://web.archive.[...]
2015-01-21
[26]
매뉴얼
Reference Manual, IBM 7090 Data Processing System
http://www.bitsavers[...]
1961
[27]
매뉴얼
Fortran II General Information Manual
http://www.bitsavers[...]
1963
[28]
매뉴얼
Reference Manual, FORTRAN II for the IBM 704 Data Processing System
http://bitsavers.org[...]
[29]
웹사이트
Ibibilio.org
http://www.ibiblio.o[...]
Ibiblio.org
2014-09-15
[30]
매뉴얼
Fortran IV Language Specifications, Program Specifications, and Operating Procedures, IBM 1401, 1440, and 1460
http://bitsavers.org[...]
IBM
1966-04
[31]
서적
A Guide to FORTRAN IV Programming
Wiley
[32]
웹사이트
List of FORTRAN Implementations 1957 – 1967
http://www.fortran.b[...]
IEEE Annals
2017-10-17
[33]
매뉴얼
IBM System/360 Model 50 Functional Characteristics
http://www.bitsavers[...]
IBM
[34]
웹사이트
DECSYSTEM-10 FORTRAN IV (F40) Programmers Reference Manual
https://github.com/P[...]
Digital Equipment Corporation
2022-04-15
[35]
웹사이트
FORTRAN IV
https://search.world[...]
2023-12-10
[36]
서적
MIL-STD 1753 - FORTRAN, DoD Supplement To American National Standard X3.9-1978
https://wg5-fortran.[...]
United States Government Printing Office
1978-11-09
[37]
서적
IEEE 1003.9-1992 – IEEE Standard for InformationTechnology – POSIX(R) FORTRAN 77 Language Interfaces – Part 1: Binding for System Application Program Interface (API)
https://standards.ie[...]
IEEE
2018-11-24
[38]
문서
Appendix B.1
[39]
웹사이트
Fortran 95 Reference
https://gcc.gnu.org/[...]
Gnu.Org
2014-05-10
[40]
웹사이트
Doctor Fortran in "It's a Modern Fortran World"
https://stevelionel.[...]
Intel
2013-12-30
[41]
웹사이트
Fortran 2003– Last Working Draft
http://www.j3-fortra[...]
Gnu.Org
2014-05-10
[42]
웹사이트
WG5 Completes Processing Fortran 2003 and the TR
http://www.nag.co.uk[...]
2004-05-14
[43]
웹사이트
N1836, Summary of Voting/Table of Replies on ISO/IEC FDIS 1539-1, Information technology – Programming languages – Fortran – Part 1: Base language
https://wg5-fortran.[...]
[44]
웹사이트
Fortran 2008 – Last Working Draft
http://www.j3-fortra[...]
Gnu.Org
2014-05-10
[45]
문서
N1830, Information technology – Programming languages – Fortran – Part 1: Base language
[46]
간행물
ISO/IEC TS 29113:2012 – Information technology – Further interoperability of Fortran with C
[47]
웹사이트
Draft of the Technical Specification (TS) 29113
https://wg5-fortran.[...]
[48]
웹사이트
Doctor Fortran in "Eighteen is the new Fifteen"
https://software.int[...]
Software.intel.com
2017-11-20
[49]
웹사이트
Fortran 2018
https://wg5-fortran.[...]
ISO
2018-11-30
[50]
웹사이트
Further Interoperability with C
https://wg5-fortran.[...]
ISO
2017-11-20
[51]
웹사이트
Additional Parallel Features in Fortran
http://isotc.iso.org[...]
ISO
2017-11-20
[52]
웹사이트
The New Features of Fortran 2015
http://isotc.iso.org[...]
ISO
2017-06-23
[53]
웹사이트
Doctor Fortran in "One Door Closes"
https://software.int[...]
Software.intel.com
2015-09-21
[54]
웹사이트
Doctor Fortran Goes Dutch: Fortran 2015
http://software.inte[...]
Software.intel.com
2014-11-19
[55]
manual
Fortran 2018 Interpretation Document
http://j3-fortran.or[...]
2018-10-09
[56]
웹사이트
Fortran 2023
https://wg5-fortran.[...]
2023-11-30
[57]
논문
Dartmouth Time-Sharing
http://dtss.dartmout[...]
1968-10-11
[58]
웹사이트
Scientific computing's future: Can any coding language top a 1950s behemoth?
https://arstechnica.[...]
2014-05-08
[59]
letter
Scientists: FORTRAN vs. Modula-2
https://archive.org/[...]
2015-02-06
[60]
서적
Large Eddy Simulation of Complex Engineering and Geophysical Flows
Cambridgey
[61]
서적
Statistical and Computational Methods in Data Analysis
North-Holland Publishing Company
1970
[62]
서적
Modern Fortran: Building efficient parallel applications
https://books.google[...]
Simon and Schuster
2020-11-24
[63]
보고서
Methods to ensure the standardization of FORTRAN software
Oak Ridge National Laboratory
1980-05-01
[64]
서적
A portable mathematical subroutine library
1977
[65]
논문
A machine and configuration independent Fortran: Portable Fortran {PFortran}
Institute of Electrical and Electronics Engineers (IEEE)
[66]
웹사이트
Portability Issues
https://www.gnu.org/[...]
[67]
웹사이트
Towards FORTRAN VI
http://hopl.murdoch.[...]
CDC
2009-04-10
[68]
manual
Internal Translator (IT) A Compiler for the IBM 650
http://bitsavers.tra[...]
Computation Center, Carnegie Institute of Technology
[69]
논문
On extending Fortran control structures to facilitate structured programming
https://dl.acm.org/d[...]
acm.org
1975-09-01
[70]
웹사이트
F Programming Language Homepage
http://www.fortran.c[...]
Fortran.com
2014-11-19
[71]
웹사이트
Fortran for .NET Language System
http://www.lahey.com[...]
[72]
웹사이트
FTN95: Fortran 95 for Windows
http://www.silverfro[...]
Silverfrost.com
2014-11-19
[73]
문서
X3J3 post-meeting distribution for meeting held at Brookhaven National Laboratory in November 1976.
[74]
간행물
The obliteration of O
1977-03-03
[75]
웹사이트
Rules for Data Typing (FORTRAN 77 Language Reference)
http://docs.oracle.c[...]
2016-09-29
[76]
웹사이트
陰山聡『Fortran90/95入門』、なぜFortran90/95か?
http://www.research.[...]
[77]
웹사이트
HPF推進協議会 (HPFPC)
http://www.hpfpc.org[...]
[78]
conference
Resolutions
https://wg5-fortran.[...]
ISO/IEC JTC 1/SC 22/WG 5
1990-03-02
[79]
웹사이트
History of FORTRAN and FORTRAN II — Software Preservation Group
http://www.softwarep[...]
[80]
뉴스
Fortranの開発者ジョン・バッカスが死亡 - Gadgets - MSNBC.com
http://www.msnbc.msn[...]
[81]
웹사이트
現代の我々がいう所の言語処理系のパスではない
https://ibm-1401.inf[...]
[82]
웹사이트
Fortran Working Group (WG5)
http://www.nag.co.uk[...]
[83]
문서
N1836, Summary of Voting/Table of Replies on ISO/IEC FDIS 1539-1, Information technology - Programming languages - Fortran - Part 1: Base language
[84]
문서
N1830, Information technology, Programming languages, Fortran, Part 1: Base language
[85]
웹사이트
ISO/IEC DTS 29113, Further Interoperability of Fortran with C
http://www.iso.org/i[...]
[86]
문서
Draft of the Technical Specification (TS) 29113
[87]
웹사이트
Doctor Fortran in "Eighteen is the new Fifteen"
https://software.int[...]
Software.intel.com
2017-11-20
[88]
웹사이트
Fortran 2018
https://wg5-fortran.[...]
ISO
2018-11-30
[89]
웹사이트
Further Interoperability with C
https://wg5-fortran.[...]
ISO
2017-11-20
[90]
웹사이트
Additional Parallel Features in Fortran
http://isotc.iso.org[...]
ISO
2017-11-20
[91]
웹사이트
The New Features of Fortran 2015
http://isotc.iso.org[...]
ISO
2017-06-23
[92]
웹사이트
Doctor Fortran in "One Door Closes"
https://software.int[...]
Software.intel.com
2015-09-21
[93]
웹사이트
Doctor Fortran Goes Dutch: Fortran 2015
http://software.inte[...]
Software.intel.com
2014-11-19
[94]
웹사이트
Fortran 2018 Interpretation Document
http://j3-fortran.or[...]
J3
2018-10-09
[95]
웹사이트
Fortran 2023
https://wg5-fortran.[...]
ISO
2024-02-28
[96]
서적
Modern Fortran explained : incorporating Fortran 2023
https://global.oup.c[...]
Oxford
[97]
웹사이트
Documents
https://wg5-fortran.[...]
ISO
2024-02-28
[98]
웹사이트
Fortran 202Y規格について議論しよう
https://github.com/F[...]
2024-01-24
[99]
간행물
Dartmouth Time-Sharing
http://dtss.dartmout[...]
1968-10-11
[100]
웹사이트
Scientific computing's future: Can any coding language top a 1950s behemoth?
https://arstechnica.[...]
Ars Technica
2014-05-08
[101]
letter
Scientists: FORTRAN vs. Modula-2
https://archive.org/[...]
1984-04
[102]
서적
Large Eddy Simulation of Complex Engineering and Geophysical Flows
Cambridgey
[103]
문서
ISO/IEC 1539 : 1991 (E) Fortran
https://wg5-fortran.[...]
ISO/IEC
1991-07-01
[104]
간행물
2009
[105]
간행물
2023
[106]
문서
F Programming Language Homepage
http://www.fortran.c[...]
[107]
문서
NVIDIA CUDA Fortran Programming Guide
https://docs.nvidia.[...]
[108]
웹인용
Chapel spec (Acknowledgements)
http://chapel.cray.c[...]
Cray Inc
2015-10-01
[109]
웹사이트
https://www.ibm.com/[...]
[110]
웹인용
보관된 사본
http://www.fh-jena.d[...]
2014-06-12
[111]
웹사이트
The Information Technology Industry Council
https://www.itic.org[...]
[112]
웹사이트
https://wg5-fortran.[...]
[113]
웹사이트
https://wg5-fortran.[...]
[114]
웹사이트
http://www.iso.org/i[...]
[115]
웹사이트
https://wg5-fortran.[...]
[116]
웹사이트
https://wg5-fortran.[...]
[117]
웹사이트
http://www.iso.org/i[...]
[118]
웹사이트
Forall 문법의 실패 : 2013 WG5 회의에서 UK(영국)측의 차기 표준에서 제외에 대한 제안
https://wg5-fortran.[...]
[119]
논문
International Fortran standards committee (WG5)
https://doi.org/10.1[...]
2001-12-01
[120]
웹사이트
https://wg5-fortran.[...]
[121]
웹사이트
http://www.iso.org/i[...]
[122]
웹사이트
https://wg5-fortran.[...]
[123]
문서
Forall을 대체 역할을 맡는 문법 Do Concurrent
http://j3-fortran.or[...]
[124]
문서
Parallel Programming Features in the Fortran Standard
http://software.inte[...]
2012-04-12
[125]
웹사이트
제안 문서
https://wg5-fortran.[...]
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com