포트란

포트란
패러다임멀티 패러다임: 구조적, 명령형 (절차적, 객체 지향), 제네릭
설계자존 배커스
개발자존 배커스, IBM
발표일1957년(69년 전)(1957)
최근 버전포트란 2023 (ISO/IEC 1539-1:2023)
최근 버전 출시일2023년 11월 17일(2년 전)(2023-11-17)
자료형 체계strong, static, manifest
파일 확장자.f, .for, .f90
웹사이트https://wg5-fortran.org
주요 구현체
Absoft, 크레이, GFortran, G95, IBM XL 포트란, 인텔, 히타치, Lahey/Fujitsu, Numerical Algorithms Group, Open Watcom, PathScale, PGI, Silverfrost, 오라클 솔라리스 스튜디오 등
영향을 받은 언어
Speedcoding
영향을 준 언어
알골 58, 베이직, C, Chapel, CMS-2, Fortress, PL/I, PACT I, MUMPS, IDL, Ratfor
The Fortran Automatic Coding System for the IBM 704 (1956년 10월 15일): 포트란을 위한 최초의 프로그래머 참조 매뉴얼

포트란(Fortran, 이전 명칭 FORTRAN)은 1954년 IBM 704에서 과학적인 계산을 하기 위해 시작된 컴퓨터 프로그램 언어이다.

포트란은 알골과 함께 과학 계산용으로 주로 사용되는 언어이며, 당시 7명의 전문가가 약 2년 반 동안에 걸쳐 완성한 것이 포트란의 기본을 이루었고, 그 후 ANSI와 ISO에서 표준화하였다.

포트란은 산술 기호(+, -, *, / 등)를 그대로 사용할 수 있으며, 삼각함수·지수함수·대수함수 등과 같은 기초적인 수학 함수들을 자연스럽게 불러내어 쓸 수 있으며, 최근 첨단 과학계산에서 필수적인 벡터, 행렬계산기능 등이 내장되어 있는 과학 기술 전문언어이다. 포트란의 창시자 존 배커스는 1953년 말 IBM 상사에게 IBM 704 메인프레임 컴퓨터를 프로그래밍하기 위한 어셈블리 언어의 더 실용적인 대안을 개발하자는 제안을 제출했다.

FORTRAN은 수식(Formula) 변환기(Translation)의 약자이다.(IBM Mathematical Formula Translating System에서 유래.) 초기 IBM 컴퓨터는 소문자를 지원하지 않았기 때문에 FORTRAN 77까지의 언어 버전 이름은 모두 대문자로 표기되었다. 최초의 FORTRAN 매뉴얼에서는 이를 "Formula Translating System"으로 설명하며 Fortran이라는 이름을 소문자 대문자(small caps)로 인쇄했다. 포트란은 기후 및 기상예측, 자원탐사, 우주항공, 유체 및 구조해석, 계산화학, 양자 및 분자 동역학 계산, 천문학, 인공위성을 포함한 군사과학, 자동차 선박 설계, 반도체설계, 금융계산 등 거의 모든 산업분야의 초대형 과학계산 문제의 프로그래밍에 필수적인 언어이다. 위와 같이 특히 자연과학이나 공학에서의 중요한 거대한 계산문제들을 슈퍼컴퓨터들을 이용하여 해결하는 데 있어서 C언어와 같이 범용프로그래밍 언어에 속하는 프로그래밍언어들에 비해 탁월한 효율이 있는 과학계산 전문 언어이다. FORTRAN 66, FORTRAN 77, Fortran 90/95, Fortran 2003, Fortran 2008, Fortran 2018, Fortran 2023 으로 지속적으로 표준이 개정되고 있다.

전문적인 과학계산 문제를 풀기 위하여 프로그래밍하는 데 있어서 범용 프로그래밍 언어에 비해서 간단 명료하고 신속하게 프로그래밍을 작성할 수 있고 디버깅하는 데도 시간을 단축할 수 있으며 그 계산속도 또한 일반적으로 더 빠르다.

FORTRAN 77까지 초기의 버전은 그 이름에 대문자를 사용하였으나, 현재는 Fortran으로 첫 문자만을 대문자로 표기한다. 최초의 FORTRAN 매뉴얼에서는 이 언어를 "Formula Translating System"(공식 변환 시스템)으로 설명하며 Fortran이라는 이름을 소문자 대문자 혼용 형식으로 표기하였다. 다른 출처에서는 이 이름이 "Formula Translator"(공식 번역기) 또는 가장 일반적으로 "Formula Translation"(공식 변환)을 의미한다고 제안한다. 초기 IBM 컴퓨터는 소문자를 지원하지 않았으며, FORTRAN 77까지의 언어 버전 이름은 일반적으로 모두 대문자로 표기되었다. Fortran 90부터 현재에까지 ISO, ANSI 모두 포트란에 대한 명칭은 "Fortran"을 사용한다.

표준화 기구

다른 컴퓨터 프로그래밍 언어에서도 그렇듯이 ANSI (미국 국가표준 협회) 와 ISO (국제 표준화 기구)의 두 표준이 통용된다.
포트란에 대한 ANSI 표준을 담당하는 위원회는 INCITS PL22.3(과거 X3J3)으로 짧게 J3로 부른다.
포트란에 대한 ISO 국제 표준을 담당하는 실무그룹은 ISO/IEC JTC1/SC22/WG5 로 WG5로 부른다.
현재 J3는 WG5의 지시 하에 활동하고 있으며, WG5를 구성하는 가장 큰 부분이다.

다른 컴퓨터 프로그래밍 언어에서도 그렇듯이 ANSI (미국 국가표준 협회) 와 ISO (국제 표준화 기구)의 두 표준이 통용된다.
포트란에 대한 ANSI 표준을 담당하는 위원회는 INCITS PL22.3(과거 X3J3)으로 짧게 J3로 부른다.
포트란에 대한 ISO 국제 표준을 담당하는 실무그룹은 ISO/IEC JTC1/SC22/WG5 로 WG5로 부른다.
현재 J3는 WG5의 지시 하에 활동하고 있으며, WG5를 구성하는 가장 큰 부분이다. 포트란 표준의 최신 버전은 Fortran 2023(ISO/IEC 1539:2023)으로, 2023년 11월 17일에 공표되었다. 이 표준화 과정은 포트란 언어의 지속적인 발전과 현대 프로그래밍 요구사항을 반영하기 위해 규칙적으로 개정되고 있다.

예제

1953년 존 배커스(John Warner Backus) 가 IBM 704 메인프레임머신에 사용할 프로그래밍 언어로 어셈블리어에 대한 대안으로 제시하였다. 배커스가 이끄는 포트란 팀에는 Richard Goldberg, Sheldon F. Best, Harlan Herrick, Peter Sheridan, Roy Nutt, Robert Nelson, Irving Ziller, Harold Stern, Lois Haibt, David Sayre 등이 포함되어 있었다. 이후 1956년 첫 번째 포트란 매뉴얼이 발표되었고, 1957년 대중에 첫 포트란 컴파일러가 등장한다. 최초의 포트란은 32종류의 문장 유형을 포함했으며, DIMENSION, EQUIVALENCE, 산술 IF 문, DO 루프, 다양한 입출력 문장 등을 지원했다. 그 이전의 프로그래머들은 손수 어셈블리어를 이용해야 했다. 초기 포트란 프로그램은 천공 카드 시스템에 맞춰 고정 열 형식으로 작성되었으며, 첫 번째 열에 'C'가 오면 주석으로 처리되고, 1-5열은 레이블 필드, 6열은 연속 지시자, 7-72열은 명령문, 73-80열은 식별용으로 사용되었다.

포트란 90

다음은 대화형으로 사용자의 숫자 입력을 받아서 평균을 출력하는 프로그램이다.

  program average

  ! Read in some numbers and take the average
  ! As written, if there are no data points, an average of zero is returned
  ! While this may not be desired behavior, it keeps this example simple

  implicit none

  real, dimension(:), allocatable :: points
  integer                         :: number_of_points
  real                            :: average_points=0., positive_average=0., negative_average=0.

  write (*,*) "Input number of points to average:"
  read  (*,*) number_of_points

  allocate (points(number_of_points))

  write (*,*) "Enter the points to average:"
  read  (*,*) points

  ! Take the average by summing points and dividing by number_of_points
  if (number_of_points > 0) average_points = sum(points) / number_of_points

  ! Now form average over positive and negative points only
  if (count(points > 0.) > 0) then
     positive_average = sum(points, points > 0.) / count(points > 0.)
  end if

  if (count(points < 0.) > 0) then
     negative_average = sum(points, points < 0.) / count(points < 0.)
  end if

  deallocate (points)

  ! Print result to terminal
  write (*,'(a,g12.4)') 'Average = ', average_points
  write (*,'(a,g12.4)') 'Average of positive points = ', positive_average
  write (*,'(a,g12.4)') 'Average of negative points = ', negative_average

  end program average

IBM은 1958년 FORTRAN II, 1962년 FORTRAN IV를 출시하였다. 포트란은 존 배커스가 1953년 말 IBM에 제안하여 개발되었으며, IBM 704 메인프레임 컴퓨터를 위한 어셈블리 언어의 실용적인 대안으로 설계되었다. 초기 포트란은 32가지 유형의 문장을 포함했으며, DIMENSION, EQUIVALENCE, 산술 IF 문, DO 루프, 형식화된 입출력 문 등을 지원하였다. IBM이 포트란을 내놓자 다른 여러 벤더에서 포트란 컴파일러를 각자의 시스템에 맞게 제작하기 시작하였다. 프로그램은 80열 천공 카드에 입력되었으며, 고정 열 형식을 사용했다. 첫 번째 열에 'C'가 있으면 주석으로 처리되었고, 1-5열은 레이블 필드, 6열은 연속 지시자, 7-72열은 코드, 73-80열은 식별자로 사용되었다. 벤더들 각자의 이름을 가진 컴파일러를 개발하기도 하였지만 다수에서 IBM 포트란 버전과의 문법적 동일성을 강조하며 FORTRAN II, FORTRAN IV를 그 이름으로 컴파일러를 출시하였다. 하지만 각각의 기계 의존적 문법이 존재하였으며, 같은 코드로 여러 머신에서 동일한 동작과 결과를 얻고자 하는 사람들의 요구가 커졌다.

외부 링크

  1. ↑ “Chapel spec (Acknowledgements)” (PDF). Cray Inc. 2015년 10월 1일. 2016년 2월 5일에 원본 문서 (PDF)에서 보존된 문서. 2016년 1월 14일에 확인함.
  2. 1 2 Backus, John (1998년 10월). “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. 2024년 1월 20일에 확인함.
  3. ↑ Chapman, Stephen J. (2018). 《Fortran for Scientists and Engineers》 Four판. 뉴욕: McGraw-Hill Education. 13쪽. ISBN 978-0-07-338589-1.
  4. ↑ “FORTRAN: The Pioneering Programming Language”. 《IBM》. 2012년 3월 7일. 2017년 7월 19일에 확인함.
  5. ↑ 〈FORTRAN〉. 《Encyclopedia Britannica》. 2021년 6월 14일. 2021년 7월 19일에 확인함.
  6. ↑ Chapman, Stephen J. (2018). 《Fortran for Scientists and Engineers》 Four판. New York: McGraw-Hill Education. 13쪽. ISBN 978-0-07-338589-1.
  7. ↑ “ISO/IEC 1539-1:2023 Information technology — Programming languages — Fortran — Part 1: Base language”. 《International Organization for Standardization》. 2024년 7월 19일에 확인함.
  8. ↑ https://www.ibm.com/history/700
  9. ↑ Backus, J. W. 《The FORTRAN Automatic Coding System for the IBM 704》 (PDF).
  10. ↑ “보관된 사본” (PDF). 2013년 11월 24일에 원본 문서 (PDF)에서 보존된 문서. 2014년 6월 12일에 확인함.
  11. ↑ “The History of Fortran I, II, and III”. 《IEEE Annals of the History of Computing》 20 (4): 68–78. 1998.
  12. ↑ 《Fortran for Scientists and Engineers》. McGraw-Hill Education. 2018.
  13. ↑ Backus, John (1998년 10월~12월). “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.
  14. ↑ Sayre, David (1956). 《The FORTRAN Automatic Coding System for the IBM 704》. IBM.
  15. ↑ Chapman, Stephen J. (2018). 《Fortran for Scientists and Engineers》. McGraw-Hill Education. 13쪽. ISBN 978-0-07-338589-1.