포트란
Fortran패러다임 | 다중 패러다임: 구조적, 명령적(절차적, 객체 지향적), 일반적, 배열 |
---|---|
설계자 | 존 배커스 |
개발자 | 존 백어스와 IBM |
처음 등장했습니다. | 1957년; | 1957)
안정적 방출 | Fortran 2023 (ISO/IEC 1539:2023) / 2023년 11월 17일 전 |
타이핑 종목 | 강한, 정적인, 명백한 |
파일 이름 확장자 | .f90 , .f , .for |
웹사이트 | fortran-lang |
주요 구현 | |
Absoft, Cray, GFortran, G95, IBM XL Fortran, Intel, Hitachi, Lahey/Fujitsu, 수치 알고리즘 그룹, OpenWatcom, PathScale, PGI, Silverfrost, Oracle Solaris Studio 등 | |
에 의해 영향을 받았습니다. | |
스피드코딩 | |
영향받은 | |
ALGOL 58, BASIC, C, 채플,[1] CMS-2, DOPE, Fortress, PL/I, PACTI, MUMPS, IDL, Ratfor |
포트란(/ˈ f ɔː rtr æ n/, 이전 이름은 FORTRAN)은 숫자 계산과 과학 컴퓨팅에 특히 적합한 3세대 컴파일된 명령형 프로그래밍 언어입니다.
포트란은 원래 IBM에서[2] 개발했습니다. 1958년에 처음으로 정확하게 편집되었습니다.[3] Fortran 컴퓨터 프로그램은 수치 기상 예측, 유한 요소 분석, 계산 유체 역학, 지구 물리학, 계산 물리학, 결정학 및 계산 화학과 같은 과학 및 공학 응용 프로그램을 지원하기 위해 작성되었습니다. 고성능 컴퓨팅에[4] 널리 사용되는 언어로 세계에서 가장 빠른 슈퍼컴퓨터를 벤치마킹하고 순위를 매기는 프로그램에 사용됩니다.[5][6]
포트란은 수많은 버전과 방언을 통해 진화해 왔습니다. 1966년 미국 표준 협회(ANSI)는 새로운 컴파일러가 구문을 약간 변경할 수 있기 때문에 포트란의 표준을 개발했습니다.[7] 그럼에도 불구하고, 연속적인 버전들은 문자열(Fortran 77), 구조화된 프로그래밍, 어레이 프로그래밍, 모듈형 프로그래밍, 일반 프로그래밍(Fortran 90), 병렬 컴퓨팅(Fortran 95), 객체 지향 프로그래밍(Fortran 2003) 및 동시 프로그래밍(Fortran 2008)에 대한 지원을 추가했습니다.
2021년 8월부터 Fortran은 프로그래밍 언어의 인기를 측정하는 TIOBE 지수에서 상위 15개 언어에 올랐습니다.[8]
명명
FORTRAN에 대한 첫 번째 매뉴얼은 Formula Translating System이라고 설명하고 이름을 작은 캡으로 인쇄했습니다. 포트란.[9]: p.2 [10] 다른 출처에 따르면 이 이름은 Formula Translator [11]또는 Formula Translation의 약자라고 합니다.[12] 초기 IBM 컴퓨터는 소문자를 지원하지 않았으며, FORTRAN 77을 통한 언어 버전의 이름은 보통 모두[13] 대문자로 표기되었습니다(FORTRAN 77은 포트란 문자 집합이 대문자로만[14] 구성된 마지막 버전이었습니다). Fortran의 공식 언어 표준은 Fortran 90 이후로 이 언어를 "Fortran"으로 시작했습니다.
오리진스
1953년 말, 존 W. 백커스(John W. Backus)는 IBM 704 메인프레임 컴퓨터를 프로그래밍하기 위한 어셈블리 언어에 대한 보다 실용적인 대안을 개발하라는 제안서를 IBM의 상급자에게 제출했습니다.[10]: 69 백어스의 역사적인 FORTRAN 팀은 프로그래머 Richard Goldberg, Sheldon F로 구성되었습니다. 베스트, 할란 헤릭, 피터 셰리던, 로이 넛, 로버트 넬슨,[15] 어빙 질러, 해롤드 스턴, 로이스 하이브트, 데이비드 세어. 이 개념에는 J. Halcombe Lanning이 개발하고 1952년 Lanning and Zierler 시스템에서 입증된 아이디어인 방정식을 컴퓨터에 쉽게 입력하는 것이 포함되었습니다.[16]
1954년 11월까지 IBM 수학 공식 번역 시스템에 대한 사양 초안이 완성되었습니다.[10]: 71 FORTRAN에 대한 최초의 매뉴얼은 1956년 10월에 나타났고,[9][10]: 72 1957년 4월에 최초의 FORTRAN 컴파일러가 제공되었습니다.[10]: 75 Fortran은 어셈블리어 프로그래머들이 높은 수준의 프로그래밍 언어를 대체할 수 있을 정도로 효율적인 코드를 만들어 냈습니다.[17]
존 백어스는 1979년 IBM 직원 잡지인 씽크와의 인터뷰에서 "제 일의 많은 부분이 게으른 것에서 비롯되었습니다. 저는 프로그램을 작성하는 것을 좋아하지 않았고, 그래서 IBM 701에서 미사일 궤적을 계산하는 프로그램을 작성할 때, 저는 프로그램 작성을 쉽게 하기 위해 프로그래밍 시스템 작업을 시작했습니다."[18]
이 언어는 과학자들이 수치 집약적인 프로그램을 작성하기 위해 널리 채택되었으며, 이는 컴파일러 작가들이 더 빠르고 효율적인 코드를 생성할 수 있는 컴파일러를 생산하도록 장려했습니다. 언어에 복잡한 숫자 데이터 유형이 포함됨으로써 Fortran은 전기 공학과 같은 기술 응용 분야에 특히 적합하게 되었습니다.[19]
1960년까지 FORTRAN 버전은 IBM 709, 650, 1620 및 7090 컴퓨터에서 사용할 수 있었습니다. 중요한 것은, FORTRAN의 인기가 높아짐에 따라 경쟁 컴퓨터 제조업체들이 자신들의 기계에 FORTRAN 컴파일러를 제공하게 되었고, 1963년까지 40개 이상의 FORTRAN 컴파일러가 존재하게 되었습니다.
FORTRAN은 혁신적인 63단계 컴파일러에 의해 IBM 1401 컴퓨터용으로 제공되었으며, 이 컴파일러는 8,000자(6비트)의 코어 메모리에서 완전히 실행되었습니다. 컴파일러는 테이프나 2200 카드 덱에서 실행할 수 있습니다. 더 이상의 테이프나 디스크 스토리지를 사용하지 않았습니다. 프로그램을 메모리에 저장하고 오버레이를 로드하여 헤인즈가 설명한 대로 점차 실행 가능한 형태로 변환했습니다.[20] 이 기사는 Anatomy of a 컴파일러와[21] IBM 매뉴얼 "Fortran Specifications and Operating Procedures, IBM 1401"에서 모두 재인쇄, 편집되었습니다.[22] 실행 가능한 형태는 완전히 기계어가 아니라 부동 소수점 산술, 서브스크립팅, 입출력 및 함수 참조가 해석되어 UCSD Pascal P-code보다 20년 앞서 있었습니다. "적어도 초기 IBM 1620 컴퓨터의 경우에는 로드 앤 고" 작업을 위한 단순화된 해석 버전의 FORTRANI(32개가 아닌 12개의 문만 있음)를 사용할 수 있었습니다.[23] 최신 Fortran 및 거의 모든 최신 버전은 다른 고성능 언어와 마찬가지로 완전히 컴파일됩니다.
Fortran의 개발은 컴파일러 기술의 초기 진화와 병행되었으며 컴파일러의 이론과 설계의 많은 발전은 특히 Fortran 프로그램을 위한 효율적인 코드를 생성해야 할 필요성에 의해 동기가 부여되었습니다.
포트란
IBM 704용[9] FORTRAN의 초기 릴리스에는 다음과 같은 32개의 문구가 포함되어 있습니다.
DIMENSION
그리고.EQUIVALENCE
진술들- 할당명세서
- 산술문의 결과가 음수인지, 0인지, 양수인지에 따라 프로그램의 세 위치 중 하나로 제어를 전달하는 삼자 산술문
IF
예외 확인을 위한 설명문(ACCUMULATOR OVERFLOW
,QUOTIENT OVERFLOW
,그리고.DIVIDE CHECK
); 그리고IF
감지 스위치와 감지 조명을 조작하기 위한 진술GO TO
, 계산된GO TO
,ASSIGN
, 그리고 할당된GO TO
DO
고리- 포맷된 I/O:
FORMAT
,READ
,READ INPUT TAPE
,WRITE
,WRITE OUTPUT TAPE
,PRINT
,그리고.PUNCH
- 포맷되지 않은 I/O:
READ TAPE
,READ DRUM
,WRITE TAPE
,그리고.WRITE DRUM
- 기타 I/O:
END FILE
,REWIND
,그리고.BACKSPACE
PAUSE
,STOP
,그리고.CONTINUE
FREQUENCY
( 컴파일러에 최적화 힌트를 제공하기 위한) 문.
산술. IF
진술은 704에서 사용할 수 있는 3방향 비교 지침(CAS-Compare Accumulator with Storage)을 연상시켰습니다. 이 성명서는 숫자의 차이를 테스트하여 오버플로 위험과 함께 비교할 수 있는 유일한 방법을 제공했습니다. 이러한 결함은 나중에 FORTRAN IV에 도입된 "논리적" 설비에 의해 극복되었습니다.
그 FREQUENCY
산술의 세 가지 분기 케이스에 대한 분기 확률을 제공하기 위해 원래(및 선택적으로) 문이 사용되었습니다. IF
진술. 최초의 FORTRAN 컴파일러는 컴파일 시 이 가중치를 사용하여 생성된 코드의 몬테카를로 시뮬레이션을 수행했으며, 그 결과는 메모리의 기본 블록 배치를 최적화하는 데 사용되었습니다. 이는 시간에 대한 매우 정교한 최적화입니다. Monte Carlo 기법은 Backus et al. 의 이 원래 구현에 대한 논문인 The FORTRAN Automatic Coding System에 문서화되어 있습니다.
프로그램의 기본 단위는 기본 블록이고, 기본 블록은 진입점과 종료점이 하나인 프로그램의 스트레치입니다. 제 4 항에 있어서, 상기 제 5 항에 있어서, 상기 각 기본 블록 링크의 절대 주파수와 함께, 유동 중인 각 기본 블록에 대한 기본 블록 및 리스트를 열거하는 선행 블록 테이블(PRED table)을 준비하는 것을 목적으로 하는 방법. 이 표는 Monte-Carlo 방식으로 프로그램을 한 번 실행함으로써 얻어지는데, IF-type 문과 계산된 GOTO에서 발생하는 조건부 전달의 결과는 제공된 주파수 문에 따라 적절하게 가중치가 부여된 난수 생성기에 의해 결정됩니다.[15]
첫 번째 FORTRAN 컴파일러는 오류가 발견되면 프로그램을 중지하고 콘솔에 오류 코드를 출력하여 진단 정보를 보고했습니다. 그 코드는 프로그래머가 작업자 설명서의 오류 메시지 테이블에서 검색하여 문제에 대한 간략한 설명을 제공할 수 있습니다.[9]: p.19–20 [24] 나중에 NASA가 개발한 [25]0으로 나누는 것과 같은 사용자 오류를 처리하는 오류 처리 서브루틴이 통합되어 어떤 코드 라인에 오류가 포함되어 있는지 알려줍니다.
고정 레이아웃 및 펀칭 카드
디스크 파일, 텍스트 편집기 및 단말기가 개발되기 전에 프로그램은 키 펀치 키보드에서 카드에 한 줄씩 80열 구멍이 뚫린 카드에 입력되는 경우가 가장 많았습니다. 결과적으로 생성된 카드 덱은 편집할 카드 판독기에 입력됩니다. 펀칭된 카드 코드에는 소문자나 많은 특수 문자가 포함되지 않았으며, FORTRAN에서 사용되는 용도 변경된 특수 문자를 올바르게 인쇄할 수 있는 IBM 026 키펀치의 특수 버전이 제공되었습니다.
펀칭 카드 입력 관행을 반영하여 포트란 프로그램은 원래 고정 열 형식으로 작성되었으며 처음 72개 열은 12개의 36비트 워드로 읽혔습니다.
열 1에 있는 문자 "C"가 전체 카드를 주석으로 처리하고 컴파일러가 무시하도록 만들었습니다. 그렇지 않으면 카드의 열은 4개의 필드로 나뉩니다.
- 1~5는 레이블 필드였습니다. 여기서 숫자 시퀀스는 GO TO 및 IF와 같은 DO 또는 제어 문에 사용하거나 WRITE 또는 READ 문에 언급된 FORMAT 문을 식별하기 위한 레이블로 사용되었습니다. 선행 0은 무시되며 0은 올바른 레이블 번호가 아닙니다.
- 6은 연속(continuation) 필드입니다. 여기서 공백 또는 0이 아닌 문자로 인해 카드가 이전 카드의 문장의 연속으로 간주됩니다. 연속 카드에는 보통 1, 2 등의 번호가 붙었고, 따라서 출발 카드는 연속 열에 0이 있을 수 있으며, 이는 이전 카드의 연속이 아닙니다.
- 7~72가 진술 필드 역할을 했습니다.
- 73~80개는 무시되었습니다(IBM 704의 카드 리더는 72개의 열만 사용했습니다).[26]
따라서 73~80열은 일련번호나 텍스트를 펀칭하는 것과 같은 식별 정보에 사용될 수 있으며, 카드 더미가 떨어졌을 때 카드를 다시 주문하는 데 사용될 수 있습니다. 그러나 실제로는 안정적인 생산 프로그램을 위해 예약되어 있었습니다. IBM 519는 프로그램 덱을 복사하고 시퀀스 번호를 추가하는 데 사용될 수 있습니다. IBM 650과 같은 일부 초기 컴파일러는 카드 판독기의 제한으로 인해 추가적인 제한이 있었습니다.[27] 키 펀치는 7번 열로 탭하고 72번 열 뒤에 생략하도록 프로그래밍할 수 있습니다. 이후 컴파일러들은 대부분의 고정 형식 제한을 완화하였고, Fortran 90 표준에서는 이 요구 사항이 사라졌습니다.
문 필드 내에서 텍스트 리터럴 외부에서 공백 문자(공백)가 무시되었습니다. 이를 통해 간결성을 위해 토큰 간의 공백을 생략하거나 명확성을 위해 식별자 내에 공백을 포함할 수 있습니다. 예를들면, AVG OF X
다음과 같은 유효한 식별자였습니다. AVGOFX
,그리고. 101010DO101I=1,101
다음과 같은 유효한 진술이었습니다. 10101 DO 101 I = 1, 101
6열의 0은 마치 공간인 것처럼 취급되기 때문에(!), 101010DO101I=1.101
대신에 10101 DO101I = 1.101
, 라는 변수에 1.101의 할당 DO101I
. 쉼표와 마침표 사이의 약간의 시각적 차이를 기록합니다.
원래 FORMAT 및 DATA 문에서만 허용되는 홀리스 문자열은 문자 수와 문자 H로 접두사가 붙었습니다(예: 26HTHIS IS ALPHANUMERIC DATA.
), 문자열 내에 빈칸을 유지할 수 있습니다. 실수가 문제였습니다.
진화
연도 | 비공식명 | ANSI 표준 | ISO/IEC 표준 |
---|---|---|---|
1957 | 포트란 | — | — |
1958 | 포트란 II | — | — |
1958 | 포트란 III | — | — |
1961 | 포트란 4 | — | — |
1966 | 포트란 66 | X3.9-1966 | — |
1978 | 포트란 77 | X3.9-1978 | — |
1991 | 포트란 90 | X3.198-1992 | 1539:1991 |
1997 | 포트란 95 | — | 1539-1:1997 |
2004 | 포트란 2003 | — | 1539-1:2004 |
2010 | 포트란 2008 | — | 1539-1:2010 |
2018 | 포트란 2018 | — | 1539-1:2018 |
2023 | 포트란 2023 | — | 1539-1:2023 |
포트란 II
IBM의 FORTRAN II는 1958년에 등장했습니다. 주요 향상된 기능은 사용자가 작성한 서브루틴과 참조로 전달된 매개변수로 값을 반환하는 함수를 허용함으로써 절차적 프로그래밍을 지원하는 것이었습니다. COMMON 문은 서브루틴이 공통(또는 글로벌) 변수에 액세스할 수 있는 방법을 제공했습니다. 6개의 새로운 진술이 도입되었습니다.[28]
SUBROUTINE
,FUNCTION
,그리고.END
CALL
그리고.RETURN
COMMON
이후 몇 년간 FORTRAN II는 다음과 같은 지원을 추가했습니다. DOUBLE PRECISION
그리고. COMPLEX
데이터 유형.
초기의 FORTRAN 컴파일러는 서브루틴에서 재귀를 지원하지 않았습니다. 초기 컴퓨터 아키텍처는 스택의 개념을 지원하지 않았으며, 서브루틴 호출을 직접 지원할 때 반환 위치는 서브루틴 코드(예: IBM 1130) 또는 특정 머신 레지스터(IBM 360 et seq)에 인접한 고정된 한 위치에 저장되는 경우가 많았습니다. 이는 스택이 소프트웨어에 의해 유지되고 콜이 실행되고 콜이 반환된 후에 복구되기 전에 반환 주소가 스택에 저장된 경우에만 재귀를 허용합니다. FORTRAN 77에는 명시되어 있지 않지만 많은 F77 컴파일러들이 옵션으로 재귀를 지원했고, 재귀 내장형으로 설계된 버로우즈 메인프레임은 기본적으로 재귀를 지원했습니다. RESCERT라는 새로운 키워드를 통해 Fortran 90의 표준이 되었습니다.[29]
간단한 FORTRAN II 프로그램
이 프로그램은 헤론 공식을 위해 5자리 정수 A, B, C 세 개를 입력으로 포함하는 테이프 릴에서 데이터를 읽습니다. 사용 가능한 "유형" 선언이 없습니다. I, J, K, L, M 또는 N으로 시작하는 변수는 "고정점"(즉, 정수)이고, 그렇지 않으면 부동 소수점입니다. 이 예제에서는 정수를 처리하기 때문에 변수의 이름은 문자 "I"로 시작합니다. 변수 이름은 문자로 시작해야 하며, FORTRAN II에서 최대 6자까지 문자와 숫자로 계속할 수 있습니다. A, B, C가 평면 기하학에서 삼각형의 변을 표현할 수 없는 경우 프로그램 실행은 "STOP 1" 오류 코드로 종료됩니다. 그렇지 않으면 A, B 및 C에 대한 입력 값을 보여주는 출력 라인이 인쇄되고, 출력 라인을 따라 10칸을 차지하고 소수점 다음에 2자리를 나타내는 부동 소수점 숫자로 삼각형의 계산된 AREA가 인쇄되며, 레이블이 601인 FORMAT 문의 F10.2에 .2가 표시됩니다.
표준제곱근함수를 갖는 삼각형의 면적 C 입력 - 테이프 리더 장치 5, 정수 입력 C 출력 - 라인 프린터 장치 6, 실제 출력 C 작업 제어 목록에 입력 오류 표시 오류 출력 코드 1 읽어주세요 입력 테이프 5, 501, IA, IB, IC 501 형식 (3I5) CIA, IB 및 IC는 음수 또는 0이 아닐 수 있습니다. C 더 나아가 삼각형의 두 변의 합 C는 세 번째 면보다 커야 합니다. 그래서 우리는 그것도 확인합니다. 한다면 (IA) 777, 777, 701 701 한다면 (IB) 777, 777, 702 702 한다면 (IC) 777, 777, 703 703 한다면 (IA+IB-IC) 777, 777, 704 704 한다면 (IA+IC-IB) 777, 777, 705 705 한다면 (IB+IC-IA) 777, 777, 799 777 일단멈춤 1 헤론의 공식을 사용해서 우리는 다음을 계산합니다. 삼각형의 영역 799 S = 플로트프 (IA + IB + IC) / 2.0 지역 = SQRTF( S * (S - 플로트프(IA)) * (S - 플로트프(IB)) * + (S - 플로트프(IC))) 쓰기 산출량 테이프 6, 601, IA, IB, IC, 지역 601 형식 (4H A= ,I5,5H B= ,I5,5H C= ,I5,8H 지역= ,F10.2, + 13H 광장 단위) 일단멈춤 끝.
포트란 III
IBM은 1958년에 다른 기능들 중에서도 인라인 어셈블리 코드를 허용하는 FORTRAN III를 개발했지만, 이 버전은 제품으로 출시되지 않았습니다. 704 FORTRAN 및 FORTRAN II와 마찬가지로, FORTRAN III에는 기계 의존적인 기능이 포함되어 있어 코드가 기계에서 기계로 이동할 수 없습니다.[10]: 76 다른 공급업체에서 제공하는 초기 버전의 FORTRAN도 동일한 단점을 겪었습니다.
포트란 4
IBM은 고객의 요구에 따라 1961년부터 FORTRAN IV의 개발을 시작했습니다. FORTRAN IV는 FORTRAN II의 기계에 의존하는 기능을 제거했습니다(예: READ INPUT TAPE
), 산술 IF 문에 대한 대안으로 데이터 유형, 논리 부울 식 및 논리 IF 문과 같은 새로운 기능을 추가합니다. FORTRAN IV는 1962년에 출시되었으며, 처음에는 IBM 7030 ("Stretch") 컴퓨터용으로 출시되었으며, 이후 IBM 7090, IBM 7094 및 나중에는 IBM 1401용으로 출시되었습니다.[30]
1965년까지 FORTRAN IV는 미국 표준 협회 X3.4.3 FORTRAN 워킹 그룹이 개발 중인 표준을 준수해야 했습니다.[31]
1966년에서 1968년 사이에 IBM은 System/360용으로 여러 개의 FORTRAN IV 컴파일러를 제공했는데, 각각의 이름은 컴파일러가 실행하는 데 필요한 최소 메모리 양을 나타내는 문자로 지정되었습니다. [32] 문자(F, G, H)는 메모리 크기를 나타내기 위해 시스템/360 모델 번호와 사용된 코드와 일치하며, 각 문자 증분은 2배 더 큽니다.[33]: p. 5
- 1966 : 도스/360용 FORTRAN IVF (64K 바이트)
- 1966 : OS/360용 FORTRAN IVG (128K 바이트)
- 1968 : OS/360용 FORTRAN IVH (256K 바이트)
Digital Equipment Corporation은 1967년부터 1975년까지 PDP-10용 DECSYSTEM-10 Fortran IV(F40)를 유지 관리했습니다.[34] 컴파일러는 UNIVAC 1100 시리즈와 Control Data 6000 시리즈 및 7000 시리즈 시스템에서도 사용할 수 있었습니다.[35]
이 시기에 FORTRAN IV는 중요한 교육 도구가 되기 시작했으며 WATFOR 및 WATFIV와 같은 구현은 이전 컴파일러의 복잡한 컴파일 및 연결 프로세스를 단순화하기 위해 만들어졌습니다.
FORTRAN IV 프로그래밍 및 컴파일러 개요
당시의 FORTRAN IV 프로그래밍 환경에서는 CDC(Control Data Corporation) 시스템에서 사용되는 것을 제외하고 한 줄에 하나의 명령어만 배치되었습니다. CDC 버전은 $(달러) 문자로 구분할 경우 한 줄당 여러 개의 명령어를 사용할 수 있습니다. FORTRAN 시트는 4개의 구역으로 나뉩니다.
- 참고문헌: 1열부터 5열까지
- 계속: 6열
- 변수 필드: 7열부터 72열까지
- 식별: 73~80열
일반적으로 루프 또는 시퀀스 중단의 경우 특정 명령을 식별하기 위해 1에서 99,999까지의 순서 번호를 1열에서 5열로 할당할 수 있습니다. 이 열 내의 빈칸은 무시되었습니다. 열 1은 "C"를 포함할 수도 있는데, 열 1~80의 전체 내용이 주석이었고, 실제 명령어를 만들지 않고 컴파일 중에 버바텀을 재현했음을 나타냅니다. 이것들은 "댓글 카드"라고 알려져 있습니다.
"계속 열"(열 6)은 이전 카드에서 시작된 공식 또는 선언이 현재 카드에서 계속되었음을 나타내기 위해 1과 9 사이의 숫자(0 제외)를 포함할 수 있습니다. 최대 19장의 연속 카드를 사용할 수 있으며, 이 카드의 숫자는 모든 순서로 사용할 수 있습니다.
변수 필드(열 7~72)에서는 프로그램의 기호적인 명령어를 작성하고 빈칸을 사용하여 명령어를 띄우는 옵션을 사용하여 컴파일러가 무시했습니다. 문자 O와 숫자 0 사이의 혼동을 피하기 위해 숫자 ZERO는 단일 0으로, 문자 O는 막대 O(Ø)로 표시했습니다.
컴파일러가 무시한 식별 영역은 짧은 코멘트나 프로그램 카드 번호를 매기는 데 사용되었습니다. 이는 카드의 자연스러운 순서가 실수로 중단된 경우에 특히 유용했습니다.
당시의 두 컴파일러인 IBM "G"와 UNIVAC는 명령어와 동일한 줄에 주석을 작성할 수 있도록 허용했습니다. UNIVAC의 경우 V(퍼포먼스 7과 8), IBM의 경우 퍼포레이션 12/11/0/7/8/9(16진수 FF)라는 특수 문자로 구분됩니다. 이 댓글들은 계속되는 카드 중간에 삽입되지 않았습니다.[34][35]
포트란 66
아마도 FORTRAN 초기 역사에서 가장 중요한 발전은 미국 표준 협회(현 미국 국가 표준 협회(ANSI))가 미국 표준 포트란을 개발하기 위해 비즈니스 장비 제조업체 협회(BEMA)의 후원을 받는 위원회를 구성하기로 결정한 것일 것입니다. 1966년 3월에 승인된 두 개의 표준은 두 개의 언어, 즉 FORTRAN(사실상의 표준 역할을 했던 FORTRAN IV 기반)과 기본 FORTRAN(FORTRAN II 기반이지만 기계에 의존하는 기능은 제거됨)을 정의했습니다. 공식적으로 X3.9-1966으로 표시된 첫 번째 표준에 의해 정의된 FORTRAN은 FORTRAN 66으로 알려지게 되었습니다(많은 사람들이 계속해서 FORTRAN IV라는 용어를 사용했지만). FORTRAN 66은 사실상 FORTRAN의 첫 번째 산업 표준 버전이 되었습니다. FORTRAN 66은 다음을 포함했습니다.
- 메인 프로그램,
SUBROUTINE
,FUNCTION
,그리고.BLOCK DATA
프로그램 단위 INTEGER
,REAL
,DOUBLE PRECISION
,COMPLEX
,그리고.LOGICAL
데이터 유형COMMON
,DIMENSION
,그리고.EQUIVALENCE
진술들DATA
초기값을 지정하기 위한 문- 고유 및
EXTERNAL
(예: 라이브러리) 함수 - 배정명세서
GO TO
, 계산된GO TO
,맡겨진GO TO
,그리고.ASSIGN
진술들- 논리적
IF
그리고 산술(3자)IF
진술들 DO
loop 문READ
,WRITE
,BACKSPACE
,REWIND
,그리고.ENDFILE
순차 I/O에 대한 문FORMAT
문 및 할당된 형식CALL
,RETURN
,PAUSE
,그리고.STOP
진술들- 홀리스 상수의 위치
DATA
그리고.FORMAT
진술 및 절차에 대한 논증으로서. - 최대 6자 길이의 식별자
- 주석 행
END
선
포트란 77
FORTRAN 66 표준이 출시된 후 컴파일러 공급업체들은 표준 포트란에 여러 확장 기능을 도입하여 1969년 ANSI 위원회 X3J3가 CBEMA(Computer Business Equipment Manufacturers Association)의 후원 하에 1966년 표준을 개정하는 작업을 시작했습니다. 이 개정 표준의 최종 초안은 1977년에 회람되었고, 1978년 4월에 새로운 FORTRAN 표준의 정식 승인으로 이어졌습니다. FORTRAN 77로 불리며 공식적으로 X3.9-1978로 표시된 새로운 표준은 FORTRAN 66의 많은 단점을 해결하기 위해 많은 중요한 기능을 추가했습니다.
- 블록
IF
그리고.END IF
문, 선택사항 포함ELSE
그리고.ELSE IF
절, 구조화된 프로그래밍을 위한 향상된 언어 지원 제공 DO
매개변수 식, 음수 증분 및 제로 트립 카운트를 포함한 루프 확장OPEN
,CLOSE
,그리고.INQUIRE
I/O 기능 향상을 위한 설명문- 직접 액세스 파일 I/O
IMPLICIT
문, 미신고 변수의 이름이 I, J, K, L, M 또는 N으로 시작하는 경우 INTEGER라는 암묵적인 규칙을 재정의합니다(및 그렇지 않으면 REAL).CHARACTER
데이터 유형, Hollerith 문자열을 문자 입력 및 출력 및 문자 기반 데이터 처리를 위한 광범위하게 확장된 기능으로 대체PARAMETER
상수를 지정하기 위한 문SAVE
지역 변수에 대한 설명문- 고유 함수의 일반 이름(예:
SQRT
또한 다음과 같은 다른 유형의 인수도 허용합니다.COMPLEX
또는REAL*16
). - 일련의 고유성(Intrinsic).
LGE, LGT, LLE, LLT
) ASCII 대조 시퀀스를 기반으로 문자열의 어휘 비교를 위한 것입니다. (이러한 ASCII 기능은 미국 국방부가 조건부 승인 투표에서 요구한 것입니다.)[citation needed]
이번 표준 개정에서는 이전의 표준 준수 프로그램을 무효화할 수 있는 방식으로 여러 기능이 제거되거나 변경되었습니다. (당시 ANSI 표준에 "저하" 개념이 아직 사용되지 않았기 때문에 제거가 X3J3의 유일한 허용 가능한 대안이었습니다.) 충돌 목록의 24개 항목 대부분(X3.9-1978 부록 A2 참조)은 이전 표준에서 허용했지만 거의 사용되지 않은 허점이나 병리학적 사례를 다루었지만 다음과 같은 소수의 특정 기능은 의도적으로 제거되었습니다.
- 홀리스 상수 및 홀리스 데이터(예:
GREET = 12HHELLO THERE!
- FORMAT 규격의 Holerith(홀리스 필드) 디스크립터로 읽기
- 첨자별 배열 경계의 오버인덱스화
치수 A(10,5) Y = A(11,1)
- DO 루프("Extended Range"라고도 함)의 범위를 벗어나 다시 제어권을 전송합니다.
ANSI 표준 포트란으로의 전환
표준화 프로세스가 컴퓨팅 및 프로그래밍 실무의 급격한 변화를 따라가지 못해 어려움을 겪으면서 FORTRAN 77의 뒤를 이을 개정된 표준의 개발이 반복적으로 지연되었습니다. 그 동안 거의 15년 동안 "표준 FORTRAN"으로서, FORTRAN 77은 역사적으로 가장 중요한 방언이 되었습니다.
FORTRAN 77의 중요한 실용적 확장은 1978년 MIL-STD-1753의 출시였습니다.[36] 미국 국방부가 개발한 이 규격은 대부분의 FORTRAN 77 컴파일러에서 구현한 여러 기능을 표준화했지만 ANSI FORTRAN 77 표준에는 포함되지 않았습니다. 이러한 기능들은 결국 Fortran 90 표준에 통합될 것입니다.
DO WHILE
,EXIT
,CYCLE
,그리고.END DO
진술들INCLUDE
진술IMPLICIT NONE
의 변형IMPLICIT
진술- Industrial Real-Time Fortran(ANSI/IS S61.1(1976))에 포함된 유사 기능을 기반으로 한 비트 조작 고유 기능
1991년에 발표된 IEEE 1003.9 POSIX 표준은 FORTRAN 77 프로그래머들이 POSIX 시스템 호출을 발행할 수 있는 간단한 수단을 제공했습니다.[37] POSIX 호환 프로세스 제어, 신호 처리, 파일 시스템 제어, 장치 제어, 프로시저 포인팅 및 스트림 I/O에 휴대용으로 액세스할 수 있는 100개 이상의 호출이 문서에 정의되었습니다.
포트란 90
Fortran 90(그리고 그 이전에는 Fortran 8X)으로 알려진 FORTRAN 77의 훨씬 지연된 후속 제품은 마침내 1991년 ISO/IEC 표준 1539:1991, 1992년 ANSI 표준으로 출시되었습니다. 이 주요 개정판은 공식 철자를 FORTRAN에서 Fortran으로 변경하는 것 외에도 1978년 표준 이후 발전해 온 프로그래밍 실무의 중요한 변화를 반영하기 위해 많은 새로운 기능을 추가했습니다.
- 자유 형식의 소스 입력으로 문을 입력하기 전에 처음 6자 위치를 생략할 필요가 없어졌습니다.
- 소문자 Fortran 키워드
- 최대 31자 길이의 식별자(이전 표준에서는 6자에 불과했습니다.
- 인라인 코멘트
- 어레이(또는 어레이 섹션)에서 전체적으로 작동할 수 있으므로 수학 및 엔지니어링 계산을 크게 단순화할 수 있습니다.
- 전체, 부분 및 마스킹된 배열 할당 문 및 배열 식(예:
X(1:N)=R(1:N)*COS(A(1:N))
WHERE
선택적 배열 할당에 대한 문- 배열 값 상수 및 식,
- 사용자 정의 배열 값 함수 및 배열 생성기.
- 전체, 부분 및 마스킹된 배열 할당 문 및 배열 식(예:
RECURSIVE
수속- 모듈은 관련 절차와 데이터를 함께 그룹화하고 모듈의 특정 부분에만 접근할 수 있도록 제한하는 기능을 포함하여 다른 프로그램 장치에서 사용할 수 있도록 합니다.
- 컴파일 시 인터페이스를 확인할 수 있는 대폭 개선된 인수 전달 메커니즘
- 일반 절차를 위한 사용자 작성 인터페이스
- 연산자오버로드
- 파생된(구조화된) 데이터 유형
- 변수의 데이터 유형 및 기타 속성을 지정하는 새 데이터 유형 선언 구문
- 다음을 통한 동적 메모리 할당
ALLOCATABLE
속성과ALLOCATE
그리고.DEALLOCATE
진술들 POINTER
속성, 포인터 할당 및NULLIFY
동적 데이터 구조의 생성 및 조작을 용이하게 하는 문- 구조화된 루프 구조(과 함께)
END DO
루프 종료에 대한 문 및EXIT
그리고.CYCLE
정상을 종료하기 위한 진술DO
순서대로 반복하기 SELECT
. . .CASE
다방향 선택을 위한 구성- 사용자 제어에 따른 수치 정밀도 휴대용 규격
- 새롭고 향상된 고유 절차입니다.
노후화 및 삭제
이전 개정과 달리 포트란 90은 기능을 제거하지 않았습니다.[38] 표준을 준수하는 FORTRAN 77 프로그램도 Fortran 90에 따라 표준을 준수했으며, 그 동작을 정의하기 위해 어느 하나의 표준을 사용해야 했습니다.
작은 특징들은 "집요성"으로 확인되었으며 향후 표준에서 제거될 것으로 예상되었습니다. 이러한 초기 버전 기능의 모든 기능은 최신 Fortran 기능에서 수행할 수 있습니다. 일부는 오래된 프로그램의 포팅을 단순화하기 위해 유지되지만 많은 것이 Fortran 95에서 삭제되었습니다.
노후화된 기능 | 현황 |
---|---|
산술 IF-문 | 삭제 |
정수가 아닌 DO 모수 또는 관리 변수 | 삭제 |
END DO 또는 CONTINUE 이외의 문과의 공유 DO-loop 종료 또는 종료 | 삭제 |
블록 외부에서 END IF로 분기 | 삭제 |
대체수익률 | 광택제 |
일시 중지 문 | 삭제 |
Assign 문과 할당된 GO to 문 | 삭제 |
할당된 문 번호 및 형식 지정자 | 삭제 |
설명자 편집 | 삭제 |
계산된 이동 문 | 광택제 |
문함수 | 광택제 |
실행문 중 DATA 문 | 광택제 |
문자* 형식의 문자 선언 | 광택제 |
가정된 문자 길이 함수 | 광택제 |
고정폼 소스코드 | 광택제 |
"Hello, World!" 예제
프로그램. 안녕 세계 활자로 인쇄하다 *, "안녕, 월드!" 종료 프로그램 안녕 세계
포트란 95
ISO/IEC 1539-1:1997로 공식 발표된 Fortran 95는 주로 Fortran 90 표준의 일부 미해결 문제를 해결하기 위한 사소한 개정이었습니다. 그럼에도 불구하고, Fortran 95는 특히 고성능 Fortran 사양에서 많은 확장 기능을 추가했습니다.
FORALL
중첩된WHERE
벡터화를 돕기 위한 구조- 사용자 정의
PURE
그리고.ELEMENTAL
절차들 - 포인터 초기화를 포함하여 파생된 유형 구성 요소의 기본 초기화
- 데이터 개체에 대한 초기화 식 사용 기능 확장
- 포인터 초기화
NULL()
- 명확하게 정의했습니다.
ALLOCATABLE
어레이가 범위를 벗어날 경우 자동으로 할당 해제됩니다.
여러 고유 함수가 확장되었습니다(예: a dim
에 인수가 추가되었습니다. maxloc
내재적)
Fortran 90에서 "만성"이라고 언급된 몇 가지 기능이 Fortran 95에서 제거되었습니다.
DO
문:사용REAL
그리고.DOUBLE PRECISION
인덱스 변수- 로 분기
END IF
블록 외부로부터의 진술 PAUSE
진술ASSIGN
그리고 할당된GO TO
문 및 할당된 형식 지정자H
홀리스 편집 설명자입니다.
Fortran 95의 중요한 보완 사항은 ISO 기술 보고서입니다.TR-15581: 향상된 데이터 유형 시설, 비공식적으로는 할당 가능한 TR. 이 규격은 향상된 사용을 정의했습니다. ALLOCATABLE
완전히 Fortran 2003 호환 Fortran 컴파일러를 사용하기 전의 어레이입니다. 이러한 용도는 다음과 같습니다. ALLOCATABLE
배열은 파생된 형식 구성요소, 프로시저 더미 인수 목록 및 함수 반환 값으로 사용됩니다. (ALLOCATABLE
배열이 더 좋습니다. POINTER
-기반 어레이는 다음과 같습니다. ALLOCATABLE
Fortran 95는 어레이가 범위를 벗어날 때 자동으로 할당 해제되도록 보장하므로 메모리가 누출될 가능성이 없습니다. 또한 할당 가능한 배열의 요소들은 연속적이며, 앨리어싱은 배열 참조의 최적화에 문제가 되지 않으므로 컴파일러는 포인터의 경우보다 더 빠른 코드를 생성할 수 있습니다.)[39]
포트란 95의 또 다른 중요한 보완 사항은 ISO 기술 보고서 TR-15580: 부동 소수점 예외 처리, 비공식적으로는 IEEE TR이라고 알려짐. 이 규격은 IEEE 부동 소수점 연산 및 부동 소수점 예외 처리에 대한 지원을 정의했습니다.
조건부 컴파일 및 다양한 길이 문자열
Fortran 95 언어는 필수 "Base language"(ISO/IEC 1539-1 : 1997에 정의됨) 이외에도 2개의 옵션 모듈을 포함합니다.
- 길이 문자열 변경(ISO/IEC 1539-2 : 2000)
- 조건부 컴파일(ISO/IEC 1539-3 : 1998)
이는 다부분 국제 표준(ISO/IEC 1539)을 함께 구성합니다.
표준 개발자들에 따르면, "선택적 부품은 상당한 수의 사용자 및/또는 구현자에 의해 요청되었지만, 모든 표준 준수 포트란 컴파일러에서 요구되기에 충분한 일반성이 없는 것으로 간주되는 자체 포함 기능을 설명합니다." 그럼에도 불구하고 표준을 준수하는 Fortran이 이러한 옵션을 제공하는 경우 "표준의 해당 부분에 있는 해당 시설에 대한 설명에 따라 제공해야 합니다."
모던 포트란
21세기 표준에 의해 정의된 언어는 특히 Object 지향 프로그래밍 지원과 그에 따른 Coarray Fortran의 통합으로 인해 종종 'Modern Fortran'이라고 불리며 문헌에서 점점 더 많이 사용되고 있습니다.[40]
포트란 2003
ISO/IEC 1539-1:2004로 공식 발표된 Fortran 2003은 많은 새로운 기능을 도입한 주요 개정판입니다.[41] Fortran 2003의 새로운 기능에 대한 포괄적인 요약은 Fortran Working Group(ISO/IEC JTC1/SC22/WG5) 공식 웹 사이트에서 확인할 수 있습니다.[42]
이 기사를 통해 본 개정의 주요 개선 사항은 다음과 같습니다.
- 파생형 강화: 매개변수화된 파생형, 접근성 제어 개선, 구조물 컨스트럭터 개선, 피니셔(finalizer)
- 객체 지향 프로그래밍 지원: 유형 확장 및 상속, 다형성, 동적 유형 할당 및 유형 경계 프로시저로 추상적인 데이터 유형을 완벽하게 지원합니다.
- 데이터 조작 향상: 할당 가능한 구성 요소(TR 15581 포함), 지연 유형 매개 변수, 속성, 배열 생성기의 명시적 유형 지정 및 할당 문, 포인터 향상, 확장 초기화 식 및 향상된 고유 절차
- 입력/출력 향상: 비동기 전송, 스트림 액세스, 파생된 유형에 대한 사용자 지정 전송 작업, 형식 변환 중 사용자 지정 반올림 제어, 사전 연결된 장치에 대한 명명된 상수,
FLUSH
키워드에 대한 설명, 정규화 및 오류 메시지에 대한 액세스 - 프로시저 포인터
- IEEE 부동 소수점 연산 및 부동 소수점 예외 처리 지원(TR 15580 포함)
- C 프로그래밍 언어와의 상호 운용성
- 국제적 사용 지원: ISO 10646 4바이트 문자에 대한 액세스 및 숫자 형식의 입출력에서 10진수 또는 쉼표 선택
- 호스트 운영 체제와의 통합 강화: 명령줄 인수, 환경 변수 및 프로세서 오류 메시지에 대한 액세스
Fortran 2003의 중요한 보완 사항은 ISO 기술 보고서 TR-19767: Fortran의 향상된 모듈 설비입니다. 이 보고서는 Fortran 모듈을 Modula-2 모듈과 더 유사하게 만드는 하위 모듈을 제공했습니다. 그들은 에이다 개인 자녀 하위 단위와 유사합니다. 이를 통해 모듈의 사양과 구현을 별도의 프로그램 단위로 표현할 수 있으며, 이를 통해 대형 라이브러리의 패키징을 개선하고, 확정 인터페이스를 게시하는 동안 영업 비밀을 보존할 수 있으며, 컴파일 캐스케이드를 방지할 수 있습니다.
포트란 2008
비공식적으로 Fortran 2008로 알려진 ISO/IEC 1539-1:2010은 2010년 9월에 승인되었습니다.[43][44] Fortran 95와 마찬가지로, 이는 Fortran 2003에 대한 설명과 수정을 통합하고 몇 가지 새로운 기능을 도입한 약간의 업그레이드입니다. 새로운 기능은 다음과 같습니다.
- 하위 모듈 – 모듈을 위한 추가 구조화 기능; ISO/IECTR 19767:2005를 대체합니다.
- Coarray Fortran – 병렬 실행 모델
- DO CONCERT 구조 – 상호의존성이 없는 루프 반복에 사용
- 연속 특성 – 스토리지 레이아웃 제한을 지정합니다.
- BLOCK 구조 – 구조 범위를 갖는 객체의 선언을 포함할 수 있습니다.
- 재귀적 할당 가능 구성 요소 – 파생된 유형의 재귀적 포인터에 대한 대안으로
FDIS(Final Draft International Standard)는 문서 N1830으로 제공됩니다.[45]
Fortran 2008에 대한 보완 사항은 2012년 5월 ISO에 승인을 위해 제출된 Fortran과 C의 추가 상호 운용성에 관한 국제 표준화 기구(ISO) 기술 규격(TS) 29113입니다.[46][47] 사양은 C에서 배열 설명자에 액세스할 수 있도록 지원을 추가하고 인수 유형 및 순위를 무시할 수 있습니다.
포트란 2018
언어의 최신 개정(Fortran 2018)은 이전에 Fortran 2015로 언급되었습니다.[48] 의미 있는 개정판으로 2018년 11월 28일에 출시되었습니다.[49]
Fortran 2018에는 이전에 발표된 두 가지 기술 사양이 통합되어 있습니다.
추가적인 변경 사항과 새로운 기능에는 ISO/IEC/IEEE 60559:2011(최신 마이너 리비전 IEEE 754–2019 이전의 IEEE 부동 소수점 표준 버전), 16진수 입출력, IMPLICENT NONE 향상 및 기타 변경 사항이 포함됩니다.[52][53][54][55]
포트란 2023
Fortran 2023(ISO/IEC 1539-1:2023)은 2023년 11월에 발행되었으며, ISO에서 구입할 수 있습니다.[56]
언어 기능
Fortran 95가 가져온 Fortran 언어 기능에 대한 전체 설명은 관련 기사인 Fortran 95 언어 기능에서 다룹니다. 이후 표준에 의해 정의된 언어 버전은 종종 'Modern Fortran'으로 통칭되며 문헌에 설명되어 있습니다.
이공계
BASIC의 저자들이 1968년에 작성한 저널 기사에서 이미 Fortran이 "구시대적"이라고 표현했지만,[57] 프로그램은 수십 년 동안 Fortran에서 작성되었으며 과학 및 엔지니어링 커뮤니티에서 일상적으로 사용되는 방대한 수의 Fortran 소프트웨어가 있습니다.[58] 제이 파사초프(Jay Pasachoff)는 1984년에 "물리학과 천문학 학생들은 단순히 FORTRAN을 배우기만 하면 됩니다. FORTRAN에는 너무 많은 것이 존재하기 때문에 과학자들이 파스칼(Pascal), 모듈라(Modula-2), 또는 다른 것으로 바뀔 것 같지 않습니다."라고 썼습니다.[59] 1993년에 세실 E. 리스는 FORTRAN을 "과학 컴퓨팅의 모국어"라고 불렀고, 다른 가능한 언어로 대체하는 것은 "쓸데없는 희망으로 남을 수 있다"고 덧붙였습니다.[60]
이것은 천문학, 기후 모델링, 계산 화학, 계산 경제학, 계산 유체 역학, 계산 물리학, 데이터 분석,[61] 수문 모델링, 수치 선형 대수학 및 수치 라이브러리(LAPACK, IMSL 및 NAG), 최적화와 같은 가장 집약적인 슈퍼 컴퓨팅 작업의 주요 언어입니다. 위성 시뮬레이션, 구조 공학 및 기상 예측.[62] SPEC 벤치마크의 부동 소수점 구성 요소(예: CFP2006, CFP2017)와 같이 새로운 컴퓨터 프로세서의 성능을 측정하기 위한 부동 소수점 벤치마크 중 많은 것이 Fortran으로 작성됩니다. 수학 알고리즘은 수치 레시피에 잘 기록되어 있습니다.
이 외에도 계산 과학의 보다 현대적인 코드는 일반적으로 그래프 분할을 위한 METIS, 선형 대수 기능을 위한 PETsc 또는 Trilinos와 같은 대형 프로그램 라이브러리를 사용합니다.메쉬 및 유한 요소 지원을 위한 II 또는 FEniCS 및 기타 일반 라이브러리. 2000년대 초반부터 널리 사용되는 지원 라이브러리 중 상당수는 C에서도 구현되었으며 최근에는 C++에서도 구현되었습니다. 반면에 볼프람 언어, MATLAB, Python, R과 같은 고급 언어는 컴퓨터 과학의 특정 분야에서 인기를 얻고 있습니다. 결과적으로 과학 프로그램의 점점 더 많은 부분이 이러한 상위 수준의 스크립팅 언어로 작성됩니다. 이러한 이유로, C와의 상호 운용을 위한 설비들이 Fortran 2003에 추가되었고 ISO/IEC 기술 규격 29113에 의해 향상되었으며, 이는 다른 프로그래밍 언어들과의 보다 유연한 상호 운용을 가능하게 하기 위해 Fortran 2018에 통합되었습니다.
NASA 탐사선 Voyager 1과 Voyager 2를 위한 소프트웨어는 원래 FORTRAN 5로 작성되었고, 나중에 FORTRAN 77로 이식되었습니다. 2013년[update] 9월 25일 현재, 일부 소프트웨어는 여전히 Fortran으로 작성되어 있고 일부는 C로 이식되었습니다.[63]
휴대성
초기에는 IBM의 참조 매뉴얼조차 합의된 표준이 없었기 때문에 휴대성이 문제였고, 컴퓨터 회사들은 호환되지 않는 기능을 제공함으로써 자사 제품을 다른 제품과 차별화하려고 경쟁했습니다. 표준은 휴대성을 향상시켰습니다. 1966년 표준은 참조 구문과 의미론을 제공했지만 공급업체는 호환되지 않는 확장을 계속 제공했습니다. 신중한 프로그래머들은 호환되지 않는 확장 기능을 사용하는 것이 고가의 휴대성 문제를 야기한다는 것을 깨달았고, 따라서 PFORT Verifier와 같은 프로그램을 사용하고 있었지만,[64][65] 1977년 미국 표준국(현재 NIST)이 FIPS PUB 69를 발표한 이후에야 프로세서가 미국에서 구입했습니다. 정부는 표준의 확장을 진단해야 했습니다. 기본적으로 모든 컴파일러는 두 개의 프로세서를 제공하는 대신 최소한 확장을 진단할 수 있는 옵션을 갖게 되었습니다.[66][67]
호환되지 않는 확장 기능만 있는 것은 아닙니다. 수치 계산을 위해서는 산술의 특성을 고려하는 것이 중요합니다. 이것은 FORT 라이브러리에 의해 1966년 표준의 맥락에서 Fox 등에 의해 해결되었습니다.[65] 그 안에 있는 아이디어는 널리 사용되었고, 결국 본질적인 탐구 기능을 통해 1990년 표준에 통합되었습니다. 이진 부동 소수점 산술을 위한 IEEE 754 표준의 광범위한 (현재 거의 보편적인) 채택은 본질적으로 이 문제를 제거했습니다.
컴퓨팅 환경에 대한 접근(예: 프로그램의 명령줄, 환경 변수, 오류 조건에 대한 텍스트 설명)은 2003년 표준에 의해 해결되기 전까지 문제로 남아 있었습니다.
그래픽 라이브러리와 같이 공학 및 과학 계산과 느슨하게 관련된 것으로 설명될 수 있는 라이브러리 소프트웨어의 대규모 모음은 C로 작성되었으며 따라서 이에 대한 액세스는 휴대성 문제를 나타냅니다. 이 문제는 2003년 표준에 C 상호 운용성을 통합함으로써 해결되었습니다.
이제는 전처리기에 의존하지 않아도 Fortran에서 완전히 휴대 가능한 프로그램을 작성하는 것이 가능합니다(비교적 쉽습니다).
더 이상 사용되지 않은 변형
Fortran 66 표준이 개발되기 전까지 각 컴파일러는 고유의 Fortran 변형을 지원했습니다. 일부는 다른 것보다 주류와 더 차이가 있었습니다.
최초의 포트란 컴파일러는 컴파일된 코드에 대해 높은 수준의 효율성을 설정했습니다. 이 목표는 컴파일러를 만드는 것을 어렵게 만들었기 때문에 일반적으로 컴퓨터 제조업체가 하드웨어 판매를 지원하기 위해 수행했습니다. 이것은 중요한 틈새를 남겼습니다: 프로그래머(종종 학생)에게 빠르고 좋은 진단을 제공하는 컴파일러. 예를 들어 Watfor, Watfiv, PUFT 및 소규모로는 FORGO, Wits Fortran 및 Kingston Fortran 2가 있습니다.
Fortran 5는 1970년대 초부터 1980년대 초까지 Nova, Eclipse 및 MV 제품군을 위해 Data General Corp에 의해 판매되었습니다. 당시 미니 컴퓨터에 적합한 최적화 컴파일러가 있었습니다. 이 언어는 FORTRAN 66과 가장 유사합니다.
FORTRANV는 1968년 Control Data Corporation에 의해 CDC 6600 시리즈용으로 배포되었습니다. 이 언어는 FORTRAN IV를 기반으로 했습니다.[68]
Univac은 또한 FORTRAN V로 알려진 1100 시리즈의 컴파일러를 제공했습니다. Univac Fortran V의 분사는 Athena FORTRAN이었습니다.
고성능 과학 컴퓨터 공급업체(예: Burroughs, Control Data Corporation(CDC), Cray, Honeywell, IBM, Texas Instruments 및 UNIVAC)에서 생산한 특정 변형은 명령어 캐시, CPU 파이프라인 및 벡터 어레이와 같은 특수 하드웨어 기능을 활용하기 위해 Fortran에 확장 기능을 추가했습니다. 예를 들어, IBM의 FORTRAN 컴파일러 중 하나(H Extended IUP)는 여러 내부 연산 장치를 동시에 사용하도록 머신 코드 명령을 재정렬한 최적화 수준을 가지고 있었습니다. 또 다른 예는 NASA의 Ames Research Center에서 실행되는 Illiac IV 슈퍼컴퓨터를 위해 특별히 설계된 FORTRAN의 특별한 변형인 CFD입니다. IBM Research Labs는 벡터 및 행렬 처리를 위한 확장된 FORTRAN 기반 언어인 VECTRAN도 개발했습니다.
Object-Oriented Fortran은 데이터 항목을 개체로 그룹화하여 인스턴스화하고 병렬로 실행할 수 있는 Fortran의 객체 지향 확장이었습니다. Sun, Iris, iPSC 및 nCUBE에서 사용할 수 있었지만 더 이상 지원되지 않습니다.
이러한 기계별 확장은 시간이 지남에 따라 사라지거나 주요 표준에 요소가 통합되었습니다. 현재 남아있는 주요 확장은 OpenMP로, 공유 메모리 프로그래밍을 위한 크로스 플랫폼 확장입니다. 하나의 새로운 확장인 Coarray Fortran은 병렬 프로그래밍을 지원하기 위한 것입니다.
FOR TRANS는 1950년대 후반 카네기에서 개발된 번역기 프로그램을 사용하여 IBM 650용으로 구현된 IBM 704 FORTRAN 언어의 축소판 이름이었습니다.[69] 다음 의견은 IBM 참조 매뉴얼(FOR TRANG 자동 코딩 시스템 C28-4038, Copyright 1957, 1959 by IBM)에 나와 있습니다.
FORTRAN 시스템은 650보다 더 복잡한 기계를 위해 설계되었으며, 결과적으로 FORTRAN 프로그래머 참조 설명서에 있는 32개의 문장 중 일부는 FORTRAN 시스템에서 허용되지 않습니다. 또한 FORTRAN 언어에 대한 특정 제한 사항이 추가되었습니다. 그러나 이러한 제한 사항으로 인해 FOR TRANS용으로 작성된 소스 프로그램이 704용 FORTRAN 시스템과 호환되지 않습니다.
허용되는 진술은 다음과 같습니다.
- 산술 할당 문(예:
a = b
GO to n
GO TO (n1, n2, ..., nm), i
IF (a) n1, n2, n3
PAUSE
STOP
DO n i = m1, m2
CONTINUE
END
READ n, list
PUNCH n, list
DIMENSION V, V, V, ...
EQUIVALENCE (a,b,c), (d,c), ...
하나의 프로그램에서 최대 10개의 서브루틴을 사용할 수 있습니다.
FOR TRANS 문은 7열에서 56열까지만 제한되었습니다. IBM 650에서 입력 및 출력을 위해 펀칭된 카드가 사용되었습니다. 소스 코드를 "IT" 언어로 변환한 다음 SOAP 어셈블리 언어로 컴파일하고 마지막으로 개체 프로그램을 생성하기 위해 세 번의 패스가 필요했습니다(데이터 입력을 위해 천공 카드를 사용하고 결과를 천공 카드에 출력).
2000 워드 메모리 드럼이 장착된 650년대에는 두 가지 버전이 존재했습니다: FOR TRANG I (S)와 FOR TRANG II. 후자는 인덱싱 레지스터와 자동 부동 소수점 (이진법) 산술을 장착한 기계를 위한 것입니다. 설명서의 부록 A에는 IBM 533 카드 리더/펀치 제어판의 배선 다이어그램이 포함되어 있습니다.
포트란 기반 언어
FORTRAN 77 이전에는 많은 전처리기가 더 친근한 언어를 제공하기 위해 일반적으로 사용되었으며, 전처리된 코드는 표준 FORTRAN 컴파일러와 함께 모든 기계에서 컴파일될 수 있다는 장점이 있습니다. 이러한 전처리기는 일반적으로 구조화된 프로그래밍, 6자보다 긴 변수 이름, 추가 데이터 유형, 조건부 컴파일 및 매크로 기능까지 지원합니다. 인기 있는 전처리기로는 EFL, FLCS, iftran, MORTRAN, SFtran, S-Fortran, Ratfor 및 Ratfiv가 있습니다. 예를 들어 Ratfor와 Ratfiv는 표준 FORTRAN 66에서 전처리된 코드를 출력하면서 C-like 언어를 구현했습니다. 포트란 언어의 발전에도 불구하고 조건부 컴파일 및 매크로 대체를 위해 전처리기가 계속 사용되고 있습니다.
60년대에 도입된 포트란의 초기 버전 중 하나는 대학에서 널리 사용되었습니다. WATFOR는 Waterloo 대학에서 개발, 지원 및 배포한 Fortran IV를 기반으로 합니다. WATFOR을 사용하는 학생은 배치 FORTRAN 작업을 제출할 수 있으며 구문 오류가 없으면 프로그램을 실행으로 바로 이동합니다. 이러한 단순화를 통해 학생들은 제출 작업 제어 언어(JCL), 컴파일/링크-편집/실행 연속 프로세스 또는 메인프레임/미니컴퓨터 환경의 기타 복잡성을 처리하는 대신 프로그램의 구문 및 의미론, 실행 로직 흐름에 집중할 수 있었습니다. 이러한 단순화된 환경의 단점은 호스트 프로세서의 확장된 기능을 필요로 하는 프로그래머들에게 WATFOR이 적합하지 않다는 것이었습니다. 예를 들어, WATFOR은 일반적으로 I/O 장치에 대한 액세스가 매우 제한적이었습니다. WATFOR는 WATFIV와 그 이후 버전에 의해 계승되었습니다.
프로그램.; s=0 i=1,n; s=s+1; 일단멈춤 i; s='ㅅ' 일단멈춤
(라인 프로그래밍)
LRLTRAN은 로렌스 방사선 연구소에서 벡터 산술 및 동적 저장을 지원하기 위해 개발되었으며, 그 외에도 시스템 프로그래밍을 지원하기 위한 확장 기능을 제공합니다. 배포에는 LTSS 운영 체제가 포함되었습니다.
Fortran-95 표준에는 선택적인 조건부 컴파일 기능을 정의하는 선택적인 Part 3이 포함되어 있습니다. 이 기능은 종종 "CoCo"라고 불립니다.
많은 Fortran 컴파일러는 C 전처리기의 하위 집합을 시스템에 통합했습니다.
SIMSCRIPT는 대규모 이산 시스템을 모델링하고 시뮬레이션하기 위한 애플리케이션 전용 Fortran 전처리기입니다.
F 프로그래밍 언어는 Fortran 95의 깨끗한 하위 집합으로 설계되었으며, Fortran의 중복, 비구조화 및 사용되지 않는 기능을 제거하려고 시도했습니다. EQUIVALENCE
진술. F는 Fortran 90에 추가된 배열 기능을 유지하며, Fortran 77 및 Fortran 90에 추가된 구조화된 프로그래밍 구조에 의해 더 이상 사용되지 않게 된 제어문을 제거합니다. F는 창작자들에 의해 "교육 및 과학 컴퓨팅에 특히 적합한 컴파일되고 구조화된 배열 프로그래밍 언어"로 묘사됩니다.[70] Essential Lahey Fortran 90(ELF90)도 비슷한 하위 집합이었습니다.
Lahey와 Fujitsu는 마이크로소프트를 위한 Fortran을 만들기 위해 협력했습니다.NET Framework.[71] 실버 프로스트 FTN95도 만들 수 있습니다.NET 코드.[72]
코드 예제
다음 프로그램은 Fortran 90에 도입된 두 가지 기능인 동적 메모리 할당 및 어레이 기반 작업을 보여줍니다. 특히 주목할 점은 의 부재입니다. DO
루프와 IF
/THEN
배열을 조작하는 문장; 배열 전체에 수학적 연산이 적용됩니다. 또한 현대 프로그래밍 스타일에 부합하는 설명 변수 이름과 일반 코드 형식을 사용하는 것도 분명합니다. 이 예제에서는 대화식으로 입력한 데이터에 대한 평균을 계산합니다.
프로그램. 평균 ! 일부 숫자를 읽고 평균을 취합니다. ! 기록된 바와 같이 데이터 포인트가 없는 경우 평균 0을 반환합니다. ! 원하는 동작이 아닐 수도 있지만 이 예제는 간단합니다. 암묵적인 없음 진짜, 치수(:), 할당 가능한 :: 점수 정수의 :: 점의 수_개 진짜 :: average_points, 양_평균, 음_평균 average_points = 0.0 양_평균 = 0.0 음_평균 = 0.0 글을 쓰다 (*,*) "평균에 대한 포인트 입력 수:" 읽어주세요 (*,*) 점의 수_개 할당하다 (점수(점의 수_개)) 글을 쓰다 (*,*) "평균할 점 입력:" 읽어주세요 (*,*) 점수 ! 점들을 합한 다음 _의 수_점들로 나누어 평균을 취합니다. 한다면 (점의 수_개 > 0) average_points = 합(점수) / 점의 수_개 ! 이제 양수 및 음수 점에 대해서만 평균을 형성합니다. 한다면 (세어보세요(점수 > 0.) > 0) 양_평균 = 합(점수, 점수 > 0.) / 세어보세요(점수 > 0.) 한다면 (세어보세요(점수 < 0.) > 0) 음_평균 = 합(점수, 점수 < 0.) / 세어보세요(점수 < 0.) ! 터미널 stdout unit 6으로 결과 인쇄 글을 쓰다 (*,'(a,g12.4)') '평균 =', average_points 글을 쓰다 (*,'(a,g12.4)') '긍정점의 평균 =', 양_평균 글을 쓰다 (*,'(a,g12.4)') '음의 점의 평균 =', 음_평균 할당을 해제하다 (점수) ! 빈 기억 종료 프로그램 평균
유머
"FORTRAN 77"이라는 이름이 선택된 같은 FORTRAN 표준 위원회 회의에서 풍자적인 기술 제안이 "유해로 간주된 편지 O"라는 제목을 가진 공식 배포판에 포함되었습니다. 이 제안은 허용 가능한 변수 이름에서 문자를 제거함으로써 문자 "O"와 숫자 0 사이에서 때때로 발생하는 혼란을 해결하기 위해 제안되었습니다. 그러나 제안된 방법은 문자 집합에서 문자를 완전히 제거하는 것이었습니다(따라서 결장이 49개로 증가한 어휘 문자의 수로서 48개를 유지합니다). 이것은 악명 높은 프로그램을 사용할 수 없게 함으로써 구조화된 프로그래밍을 촉진한다는 점에서 유익하다고 여겨졌습니다. GO TO
아까와 같은 진술. (고생스러운 일입니다. FORMAT
진술도 삭제될 것입니다.) 이는 "기존의 일부 프로그램을 무효화할 수도 있다"고 지적했지만, 이러한 프로그램들 중 대부분은 "어쨌든 부적합했을 가능성이 있다"고 지적했습니다.[73][unreliable source?][74]
X3J3가 DO 루프의 최소 트립 카운트가 포트란 77에서 0이 되어야 하는지 아니면 1이 되어야 하는지에 대해 논의했을 때, 로렌 마이스너는 2의 최소 트립 카운트를 제안했습니다. 2보다 작으면 루프를 할 이유가 없다는 추론(tongue-in-cheek).
가정된 길이 배열을 추가할 때 상한과 하한을 구분하기에 적절한 문자가 있는지에 대한 논쟁이 있었습니다. 이러한 주장을 검토하는 논평에서 월트 브레이너드는 "천문학 vs. 일부 지지자들은 별 또는 별표(*)를 사용할 것을 제안한 반면, 다른 지지자들은 결장(:)[citation needed]을 선호했기 때문에 소화기학.
I-N 문자로 시작하는 변수 이름은 정수의 기본 유형을 가지며, 다른 문자로 시작하는 변수는 real로 기본 설정되지만 프로그래머는 명시적인 선언으로 기본값을 재정의할 수 있습니다.[75] 이 때문에 "포트란에서 신은 진짜다(INTEGER라고 선언되지 않는 한)"라는 농담이 나왔습니다.
참고 항목
- f2c – Fortran 77을 C 페이지로 변환하는 프로그램으로, 합니다.
- F2PY – 수치 프로그래밍을 위한 Python 라이브러리
- FORMAC – FortranPage 기반의 컴퓨터 대수 시스템으로
- 포트란 컴파일러 목록
- 포트란 수치 라이브러리 목록
- 프로그래밍 언어 목록
- 매트릭스 표현 – 컴퓨터 메모리의 저장 방법 하는 페이지
- 스파게티 코드 – 불량한 구조의 소프트웨어 소스 코드
참고문헌
- ^ "Chapel spec (Acknowledgements)" (PDF). Cray Inc. October 1, 2015. Archived (PDF) from the original on February 5, 2016. Retrieved January 14, 2016.
- ^ John Backus. "The history of FORTRAN I, II and III" (PDF). Softwarepreservation.org. Archived (PDF) from the original on July 26, 2007. Retrieved November 19, 2014.
- ^ Wilson, Leslie B. (2001). Comparative Programming Languages, Third Edition. Addison-Wesley. p. 16. ISBN 0-201-71012-9.
The manual for Fortran I was released in 1956, but it was 1958 before successful compilers were running programs correctly.
- ^ Eugene Loh (June 18, 2010). "The Ideal HPC Programming Language". Queue. 8 (6).
- ^ "HPL – A Portable Implementation of the High-Performance Linpack Benchmark for Distributed-Memory Computers". Retrieved February 21, 2015.
- ^ "Q13. What are the benchmarks?". Overview – CPU 2017. SPEC. Retrieved November 13, 2019.
- ^ Wilson, Leslie B. (2001). Comparative Programming Languages, Third Edition. Addison-Wesley. p. 18. ISBN 0-201-71012-9.
Another problem was that there was no standard for Fortran and so slightly different versions ... would likely fail when used with a different compiler.
- ^ TIOBE Software BV (September 2022). "TIOBE Index". TIOBE.com. TIOBE. Retrieved September 23, 2022.
- ^ a b c d e Backus, John Warner; Beeber, R. J.; Best, Sheldon F.; Goldberg, Richard; Herrick, Harlan L.; Hughes, R. A.; Mitchell, L. B.; Nelson, Robert A.; Nutt, Roy; Sayre, David; Sheridan, Peter B.; Stern, Harold; Ziller, Irving (October 15, 1956). Sayre, David (ed.). The FORTRAN Automatic Coding System for the IBM 704 EDPM: Programmer's Reference Manual (PDF). New York, USA: Applied Science Division and Programming Research Department, International Business Machines Corporation. pp. 2, 19–20. Archived (PDF) from the original on July 4, 2022. Retrieved July 4, 2022. (2+51+1페이지)
- ^ a b c d e f Backus, John (October–December 1998). "The History of Fortran I, II, and III" (PDF). IEEE Annals of the History of Computing. 20 (4): 68–78. doi:10.1109/85.728232. Archived (PDF) from the original on March 3, 2016. Retrieved June 17, 2020. [1][2]
- ^ "FORTRAN: The Pioneering Programming Language". IBM. March 7, 2012. Retrieved July 19, 2017.
- ^ "FORTRAN". Encyclopedia Britannica. June 14, 2021. Retrieved July 19, 2021.
- ^ Chapman, Stephen J. (2018). Fortran for Scientists and Engineers (Fourth ed.). New York: McGraw-Hill Education. p. 13. ISBN 978-0-07-338589-1.
- ^ FORTRAN 77 표준에 의해 정의된 "포트란 문자 집합"은 표준 호환 컴파일러가 지원해야 하는 최소 문자 집합이었습니다. 실제로 많은 FORTRAN 77 컴파일러가 전체 ASCII 문자 집합을 지원했습니다.
- ^ a b J. W. Backus; R. J. Beeber; S. Best; R. Goldberg; L. M. Haibt; H. L. Herrick; R. A. Nelson; D. Sayre; P. B. Sheridan; H. Stern; L. Ziller; R. A. Hughes; R. Nutt (February 1957). The FORTRAN Automatic Coding System (PDF). Western Joint Computer Conference. pp. 188–198. doi:10.1145/1455567.1455599.
- ^ Mindell, David (2008). Digital Apollo. Cambridge, MA: MIT Press. p. 99. ISBN 978-0-262-13497-2. JSTOR j.ctt5hhn02. OCLC 228031739.
- ^ Padua, David (January–February 2000). "The Fortran I Compiler" (PDF). Computing in Science & Engineering. 2 (1): 70–75. Bibcode:2000CSE.....2a..70P. doi:10.1109/5992.814661. Archived from the original (PDF) on June 17, 2020.
The Fortran I compiler was the first major project in code optimization. It tackled problems of crucial importance whose general solution was an important research focus in compiler technology for several decades. Many classical techniques for compiler analysis and optimization can trace their origins and inspiration to the Fortran I compiler.
- ^ Brian Bergstein (May 20, 2007). "Fortran creator John Backus dies". MSNBC. Retrieved October 29, 2018.
- ^ "FORTRAN – The First Programming Language for Numeric Calculations". SciHi Blog. October 15, 2019.
- ^ Haines, L. H. (1965). "Serial compilation and the 1401 FORTRAN compiler". IBM Systems Journal. 4 (1): 73–80. doi:10.1147/sj.41.0073.
- ^ Lee, John A. N. (1967). Anatomy of a Compiler. Van Nostrand Reinhold.
- ^ Fortran Specifications and Operating Procedures, IBM 1401 (PDF). IBM. C24-1455-2. Archived (PDF) from the original on September 23, 2017.
- ^ "Subject: GOTRAN ON THE IBM 1316 DISK STORAGE PACK (Serial No. K7402)". Archived from the original on February 21, 2006. Retrieved March 3, 2006.
- ^ The FORTRAN Automatic Coding System for the IBM 704 EDPM : Preliminary Operator's Manual (PDF). Programming Research Department, International Business Machines Corporation. April 8, 1957. pp. 6–37. Archived (PDF) from the original on February 26, 2014.
- ^ Armstead, Betty Jo (January 21, 2015). "My Years at NASA" (PDF). Denver Museum of Nature & Science. Archived from the original (PDF) on December 24, 2019. Retrieved June 15, 2019.
- ^ Reference Manual, IBM 7090 Data Processing System (PDF). 1961. A22-6528-3. Archived (PDF) from the original on December 1, 2008.
- ^ Fortran II General Information Manual (PDF). 1963. Archived (PDF) from the original on April 26, 2005. Retrieved November 19, 2014.
- ^ Reference Manual, FORTRAN II for the IBM 704 Data Processing System (PDF). 1958. C28-6000-2. Archived (PDF) from the original on October 30, 2005.
- ^ "Ibibilio.org". Ibiblio.org. Retrieved September 15, 2014.
- ^ Fortran IV Language Specifications, Program Specifications, and Operating Procedures, IBM 1401, 1440, and 1460 (PDF). IBM. April 1966. C24-3322-2. Archived (PDF) from the original on September 23, 2017.
- ^ McCracken, Daniel D. (1965). "Preface". A Guide to FORTRAN IV Programming. New York: Wiley. p. v. ISBN 978-0-471-58281-6.
- ^ "List of FORTRAN Implementations 1957 – 1967". IEEE Annals. 2017. Retrieved October 17, 2017.
- ^ IBM System/360 Model 50 Functional Characteristics (PDF). IBM. 1967. A22-6898-1. Archived (PDF) from the original on October 29, 2021.
- ^ a b Digital Equipment Corp. "DECSYSTEM-10 FORTRAN IV (F40) Programmers Reference Manual" (PDF). Github. Digital Equipment Corporation. Retrieved April 15, 2022.
- ^ a b "FORTRAN IV WorldCat.org". search.worldcat.org. Retrieved December 10, 2023.
- ^ Mil-std-1753. DoD Supplement to X3.9-1978. United States Government Printing Office. Archived from the original on November 9, 2007. Retrieved December 13, 2007.
{{cite book}}
: CS1 메인트: 숫자 이름: 작성자 목록(링크) - ^ IEEE 1003.9-1992 – IEEE Standard for InformationTechnology – POSIX(R) FORTRAN 77 Language Interfaces – Part 1: Binding for System Application Program Interface (API). IEEE. Retrieved November 24, 2018.
- ^ 부록 B.1
- ^ "Fortran 95 Reference". Gnu.Org. Retrieved May 10, 2014.
- ^ Lionel, Steve (December 30, 2013). "Doctor Fortran in "It's a Modern Fortran World"". Intel (was DEC) Fortran forum discussion group. Intel. Retrieved April 11, 2022.
- ^ "Fortran 2003– Last Working Draft". Gnu.Org. Retrieved May 10, 2014.
- ^ "WG5 Completes Processing Fortran 2003 and the TR". nag.co.uk. May 14, 2004. Archived from the original on August 5, 2004. Retrieved April 3, 2023."WG5 Completes Processing Fortran 2003 and the TR". nag.co.uk. May 14, 2004. Archived from the original on August 5, 2004. Retrieved April 3, 2023.다음 주소에서 PDF 파일로 다운로드할 수도 있습니다.
- ^ "N1836, Summary of Voting/Table of Replies on ISO/IEC FDIS 1539-1, Information technology – Programming languages – Fortran – Part 1: Base language" (PDF). Archived (PDF) from the original on January 15, 2018.
- ^ "Fortran 2008 – Last Working Draft" (PDF). Gnu.Org. Archived (PDF) from the original on May 12, 2014. Retrieved May 10, 2014.
- ^ N1830, 정보 기술 – 프로그래밍 언어 – Fortran – Part 1: 기본 언어 [3][dead link]
- ^ ISO/IEC TS 29113:2012 – Information technology – Further interoperability of Fortran with C.
- ^ "Draft of the Technical Specification (TS) 29113" (PDF). wg5-fortran.org. Archived (PDF) from the original on January 15, 2018.
- ^ "Doctor Fortran in "Eighteen is the new Fifteen"". Software.intel.com. Retrieved November 20, 2017.
- ^ "Fortran 2018". ISO. Retrieved November 30, 2018.
- ^ "Further Interoperability with C" (PDF). ISO. Archived (PDF) from the original on December 1, 2017. Retrieved November 20, 2017.
- ^ "Additional Parallel Features in Fortran". ISO. Retrieved November 20, 2017.
- ^ "The New Features of Fortran 2015". ISO. Retrieved June 23, 2017.
- ^ "Doctor Fortran in "One Door Closes"". Software.intel.com. Retrieved September 21, 2015.
- ^ "Doctor Fortran Goes Dutch: Fortran 2015". Software.intel.com. Retrieved November 19, 2014.
- ^ Fortran 2018 Interpretation Document (PDF). October 9, 2018.
- ^ "Fortran 2023". wg5-fortran.org. Retrieved November 30, 2023.
- ^ Kemeny, John G.; Kurtz, Thomas E. (October 11, 1968). "Dartmouth Time-Sharing". Science. 162 (3850): 223–228. Bibcode:1968Sci...162..223K. doi:10.1126/science.162.3850.223. PMID 5675464.
- ^ Phillips, Lee (May 8, 2014). "Scientific computing's future: Can any coding language top a 1950s behemoth?". Ars Technica. Retrieved May 8, 2014.
- ^ Pasachoff, Jay M. (April 1984). "Scientists: FORTRAN vs. Modula-2". BYTE (letter). p. 404. Retrieved February 6, 2015.
- ^ Galperin, Boris (1993). "26". Large Eddy Simulation of Complex Engineering and Geophysical Flows. London: Cambridgey. p. 573. ISBN 978-0-521-43009-8.
- ^ Brandt, Siegmund (1970). Statistical and Computational Methods in Data Analysis. North-Holland Publishing Company. pp. Preface. ISBN 0-7204-2033-4.
- ^ Curcic, Milan (November 24, 2020). Modern Fortran: Building efficient parallel applications. Simon and Schuster. ISBN 978-1-61729-528-7.
- ^ "Interstellar 8-Track: How Voyager's Vintage Tech Keeps Running". WIRED. Retrieved December 23, 2017.
- ^ Gaffney, P W; Wooten, J W (May 1, 1980). Methods to ensure the standardization of FORTRAN software (Report). Oak Ridge National Laboratory. OSTI 5361454.
PFORT ... Library ...
- ^ a b P. A. Fox (1977). "Port — A portable mathematical subroutine library". A portable mathematical subroutine library. Lecture Notes in Computer Science. Vol. 57. pp. 165–177. doi:10.1007/3-540-08446-0_42. ISBN 978-3-540-08446-4.
PORT ... written in (PFORT) .. ANS Fortran
- ^ Whitten, Douglas E.; Demaine, Paul A. D. (1975). "A machine and configuration independent Fortran: Portable Fortran {PFortran}". IEEE Transactions on Software Engineering. Institute of Electrical and Electronics Engineers (IEEE). SE-1 (1): 111–124. doi:10.1109/tse.1975.6312825. ISSN 0098-5589. S2CID 16485156.
- ^ "Portability Issues".
.. discusses .. portability of .. Fortran
- ^ Healy, MJR (1968). "Towards FORTRAN VI". Advanced scientific Fortran by CDC. CDC. pp. 169–172. Archived from the original on July 5, 2009. Retrieved April 10, 2009.
- ^ Perlis, A. J.; Smith, J. W.; Van Zoeren, H. R. Internal Translator (IT) A Compiler for the IBM 650 (PDF). Computation Center, Carnegie Institute of Technology. Archived (PDF) from the original on October 2, 2012.
- ^ "F Programming Language Homepage". Fortran.com. Archived from the original on January 9, 2015. Retrieved November 19, 2014.
- ^ "Fortran for .NET Language System". Archived from the original on October 18, 2014.
- ^ "FTN95: Fortran 95 for Windows". Silverfrost.com. Retrieved November 19, 2014.
- ^ 1976년 11월 브룩헤이븐 국립 연구소에서 열린 회의를 위한 X3J3 회의 후 배포.
- ^ "The obliteration of O". Computer Weekly. March 3, 1977.
- ^ Rules for Data Typing (FORTRAN 77 Language Reference). Retrieved September 29, 2016.
추가읽기
- 언어표준
- ANSI x3.9-1966. USA Standard FORTRAN (PDF). American National Standards Institute. Archived from the original (PDF) on May 15, 2011. Retrieved May 5, 2010.ANSI x3.9-1966. USA Standard FORTRAN (PDF). American National Standards Institute. Archived from the original (PDF) on May 15, 2011. Retrieved May 5, 2010.
{{cite book}}
CS1 메인트: 숫자 이름: 작성자 목록(링크) 비공식적으로 FORTRAN 66으로 알려져 있습니다. - ANSI x3.9-1978. American National Standard – Programming Language FORTRAN. American National Standards Institute. Archived from the original on October 29, 2013. Retrieved December 11, 2007.ANSI x3.9-1978. American National Standard – Programming Language FORTRAN. American National Standards Institute. Archived from the original on October 29, 2013. Retrieved December 11, 2007.
{{cite book}}
CS1 메인트: 숫자 이름: 작성자 목록(링크) ISO 1539–1980, 비공식적으로는 FORTRAN 77로 알려져 있습니다. - ANSI X3.198-1992 (R1997) / ISO/IEC 1539:1991. American National Standard – Programming Language Fortran Extended. American National Standards Institute / ISO/IEC. Archived from the original on May 1, 2002.ANSI X3.198-1992 (R1997) / ISO/IEC 1539:1991. American National Standard – Programming Language Fortran Extended. American National Standards Institute / ISO/IEC. Archived from the original on May 1, 2002.
{{cite book}}
CS1 메인트: 숫자 이름: 작성자 목록(링크) 비공식적으로 Fortran 90으로 알려져 있습니다. - ISO/IEC 1539-1:1997. Information technology – Programming languages – Fortran – Part 1: Base language (PDF). Archived from the original (PDF) on August 18, 2011. Retrieved December 13, 2007.ISO/IEC 1539-1:1997. Information technology – Programming languages – Fortran – Part 1: Base language (PDF). Archived from the original (PDF) on August 18, 2011. Retrieved December 13, 2007.
{{cite book}}
CS1 메인트: 숫자 이름: 저자 목록(링크) 비공식적으로 Fortran 95로 알려져 있습니다. 이 표준에는 두 가지 부분이 더 있습니다. 파트 1은 ANSI에 의해 공식적으로 채택되었습니다. - ISO/IEC 1539-1:2004. Information technology – Programming languages – Fortran – Part 1: Base language (PDF).ISO/IEC 1539-1:2004. Information technology – Programming languages – Fortran – Part 1: Base language (PDF).
{{cite book}}
CS1 메인트: 숫자 이름: 저자 목록(링크) 비공식적으로 Fortran 2003으로 알려져 있습니다. - ISO/IEC 1539-1:2010 (Final Draft International Standard). Information technology – Programming languages – Fortran – Part 1: Base language (PDF).ISO/IEC 1539-1:2010 (Final Draft International Standard). Information technology – Programming languages – Fortran – Part 1: Base language (PDF).
{{cite book}}
CS1 메인트: 숫자 이름: 저자 목록(링크)[permanent dead link] 비공식적으로 Fortran 2008으로 알려짐.
- 관련기준
- Kneis, Wilfried (October 1981). "Draft standard Industrial Real-Time FORTRAN". ACM SIGPLAN Notices. 16 (7): 45–60. doi:10.1145/947864.947868. ISSN 0362-1340. S2CID 8662381.
- ISO 8651-1:1988 Information processing systems – Computer graphics – Graphical Kernel System (GKS) language bindings – Part 1: FORTRAN. Geneva, Switzerland: ISO. 1988.
- 기타 참고자료
- ECMA Standard on FORTRAN (PDF). European Computer Manufacturers Association. April 1965. Archived (PDF) from the original on May 10, 2008. Retrieved November 17, 2014.
- FORTRAN 77 4.0 Reference Manual (PDF). Sun Microsystems, Inc. 1995. Archived from the original (PDF) on January 5, 2012. Retrieved November 17, 2014.
- "FORTRAN Coding Form" (PDF). IBM. Archived from the original (PDF) on June 8, 2015. Retrieved November 17, 2014.
- IBM System/360 and System/370 Fortran IV Language (PDF). IBM. May 1974. Archived from the original (PDF) on April 6, 2011. Retrieved November 17, 2014.
- Goerz, Michael (2014). "Modern Fortran Reference Card" (PDF). Archived (PDF) from the original on December 14, 2014. Retrieved December 14, 2014.
- 책들
- Adams, Jeanne C.; Brainerd, Walter S.; Hendrickson, Richard A.; Maine, Richard E.; Martin, Jeanne T.; Smith, Brian T. (2009). The Fortran 2003 Handbook (1st ed.). Springer. ISBN 978-1-84628-378-9.
- Akin, J. E. (2003). Object-oriented programming via Fortran 90/95. Cambridge, New York: Cambridge University Press. ISBN 978-0-521-52408-7. OCLC 49906306.
- Arjen, Markus (2012), "Modern Fortran in Practice", Cambridge Univ. Press, ISBN 978-1-13908479-6.
- Brainerd, W.S.; Goldberg, C.H.; Adams, J.C. (1996). Programmer's Guide to Fortran 90 (3rd ed.). Springer. ISBN 978-0-387-94570-5.
- Brainerd, Walter (2015). Guide to Fortran 2008 programming. London: Springer. ISBN 978-1-4471-6758-7. OCLC 920530344.
- Chapman, Stephen J. (2018). Fortran for Scientists and Engineers (Fourth ed.). New York: McGraw-Hill Education. pp. xxiv + 1024. ISBN 978-0-07-338589-1.
- Chivers, Ian; Sleightholme, Jane (2018). Introduction to Programming with Fortran (4th ed.). Springer. ISBN 978-3-319-75501-4.
- Clerman, Norman (2012). Modern Fortran : style and usage. New York: Cambridge University Press. ISBN 978-0-521-51453-8. OCLC 776162717.
- Curcic, Milan (2020). Modern Fortran: building efficient parallel applications. Shelter Island, NY: Manning Publications Company. ISBN 978-1-61729-528-7. OCLC 1256806439.
- Ellis, T. M. R.; Phillips, Ivor R.; Lahey, Thomas M. (1994). Fortran 90 Programming (1st ed.). Addison Wesley. ISBN 978-0-201-54446-6.
- Etter, D. M. (1990). Structured FORTRAN 77 for Engineers and Scientists (3rd ed.). The Benjamin/Cummings Publishing Company, Inc. ISBN 978-0-8053-0051-2.
- Kerrigan, J. F. (1993). Migrating to Fortran 90 (1st ed.). O'Reilly & Associates, Inc. ISBN 1-56592-049-X.
- Kupferschmid, Michael (2002). Classical Fortran: Programming for Engineering and Scientific Applications. Marcel Dekker (CRC Press). ISBN 978-0-8247-0802-3.
- Lorenzo, Mark Jones (2019). Abstracting Away the Machine: The History of the FORTRAN Programming Language (FORmula TRANslation). Independently published. ISBN 978-1082395949.
- Loukides, Mike (1990). Unix for FORTRAN Programmers. Sebastopol, CA 95472: O'Reilly & Associates, Inc. ISBN 0-937175-51-X.
{{cite book}}
: CS1 maint : 위치(링크) - McCracken, Daniel D. (1961). A Guide to FORTRAN Programming. New York: Wiley. LCCN 61016618.
- Metcalf, Michael; Reid, John; Cohen, Malcolm; Bader, Reinhold (2023). Modern Fortran explained : incorporating Fortran 2023. Oxford England. ISBN 978-0-19-887657-1. OCLC 2023946356.
{{cite book}}
: CS1 maint: 위치 누락 게시자(링크) - Nyhoff, Larry; Sanford Leestma (1995). FORTRAN 77 for Engineers and Scientists with an Introduction to Fortran 90 (4th ed.). Prentice Hall. ISBN 978-0-13-363003-9.
- Page, Clive G. (1988). Professional Programmer's Guide to Fortran77 (June 7, 2005 ed.). London: Pitman. ISBN 978-0-273-02856-7. Retrieved May 4, 2010.
- Press, William H. (1996). Numerical Recipes in Fortran 90: The Art of Parallel Scientific Computing. Cambridge, UK: Cambridge University Press. ISBN 978-0-521-57439-6.
- Ruetsch, Gregory; Fatica, Massimiliano (2013). CUDA Fortran for Scientists and Engineers (1st ed.). Elsevier. p. 338. ISBN 9780124169708.
- Sleighthome, Jane; Chivers, Ian David (1990). Interactive Fortran 77: A Hands-On Approach. Computers and their applications (2nd ed.). Chichester: E. Horwood. ISBN 978-0-13-466764-5. Archived from the original on March 12, 2014. Retrieved March 12, 2014.
- 기사들
- Allen, F.E. (September 1981). "A History of Language Processor Technology in IBM". IBM Journal of Research and Development. 25 (5): 535–548. doi:10.1147/rd.255.0535. S2CID 14149353.
- J. W. Backus; R. J. Beeber; S. Best; R. Goldberg; L. M. Haibt; H. L. Herrick; R. A. Nelson; D. Sayre; P. B. Sheridan; H. Stern; L. Ziller; R. A. Hughes; R. Nutt (February 1957). The FORTRAN Automatic Coding System (PDF). Western Joint Computer Conference. pp. 188–198. doi:10.1145/1455567.1455599.
- Chivers, Ian D.; Sleightholme, Jane (2020). "Compiler support for Fortran 2008 & 2018 standards".
{{cite journal}}
: 저널 인용은 다음과 같습니다.journal=
(도움말) - Metcalf, Michael (2011). "The Seven Ages of Fortran". Journal of Computer Science & Technology. 11 (1): 1–8.
- Pigott, Diarmuid (2006). "FORTRAN – Backus et al high-level compiler (Computer Language)". The Encyclopedia of Computer Languages. Murdoch University. Archived from the original on October 8, 2009. Retrieved May 5, 2010.
- Roberts, Mark L.; Griffiths, Peter D. (1985). "Design Considerations for IBM Personal Computer Professional FORTRAN, an Optimizing Compiler". IBM Systems Journal. 24 (1): 49–60. doi:10.1147/sj.241.0049.
외부 링크
- ISO/IEC JTC1/SC22/WG5—Fortran 표준의 공식 홈
- 포트란 표준 문서:GFortran 표준
- fortran-lang.org (2020).
- 포트란과 포트란 II의 역사—컴퓨터 역사 박물관
- 발머 노로드 외: FORTRAN 프로그래밍의 독학 과정—제1권—교과서, 캘리포니아 주 컴퓨터 과학 회사 엘 세군도 (1970년 4월). NASA (N70-25287).
- 발머 노로드(Valmer Norrod), 셸돔 블레처(Sheldom Blecher), 마사 호튼(Martha Horton): FORTRAN 프로그래밍의 자율 학습 과정—제2권—워크북, NASA CR-1478(1970년 4월), NASA(N70-25288).
- 라인홀드 바더, 니사르그 파텔, 라이프니츠 슈퍼컴퓨팅 센터의 포트란 프로그래밍 언어 소개.
- 코어레이 튜토리얼
- 포트란 위키 : 객체 지향 프로그래밍
- Victor Eijkhout : C++17/Fortran2008 과학 프로그래밍 입문, The Art of HPC, 3권 (PDF)