검수요청.png검수요청.png

포트란

해시넷
kskim5223 (토론 | 기여)님의 2020년 8월 4일 (화) 10:28 판
이동: 둘러보기, 검색
포트란(Fortran) 로고
포트란(Fortran) 로고와 글자

포트란(Fortran)은 1954년에서 1957년경 미국 IBM에서 개발한 공학용 프로그래밍 언어 이다. 어셈블리어 를 자동화한다는 개념에서 발생된 포트란은 프로그래밍 작업을 쉽고 간편하게, 그리고 효율성을 높여 만들어졌다. 최초의 실용적인 고급 프로그래밍 언어였으며 이때 완성된 컴파일러는 IBM 704에서 처음 작동되었다. 포트란(Fortran)은 수식을 뜻하는 포뮬러(Formula)와 변환기라는 뜻의 트랜스레이터(Translator)를 합성하여 만든 말이다. 과학 알고리즘을 위해 설계되었으며 공학자와 수학자들이 고성능 계산 작업을 위해 대부분 사용한다. 최초의 제3세대 고급 언어였으나, 이후 C, Java 등의 언어로 대체되어 거의 사용되지 않고 있다.

개요

포트란(Fortran)은 1954년 IBM 704에서 과학적인 계산을 하기 위해 시작된 컴퓨터 프로그램 언어이다. FORTRAN은 수식(Formula) 변환기(Translation)의 약자이다.(IBM Mathematical Formula Translating System에서 유래.) 포트란은 알골과 함께 과학 계산용으로 주로 사용되는 언어이며, 당시 7명의 전문가가 약 2년 반 동안에 걸쳐 완성한 것이 포트란의 기본을 이루었고, 그 후 ANSI와 ISO에서 표준화하였다. 포트란은 산술 기호(+, -, *, / 등)를 그대로 사용할 수 있으며, 삼각함수·지수함수·대수함수 등과 같은 기초적인 수학 함수들을 자연스럽게 불러내어 쓸 수 있으며, 최근 첨단 과학계산에서 필수적인 벡터, 행렬계산기능 등이 내장되어 있는 과학 기술 전문언어이다. 포트란은 기후 및 기상예측, 자원탐사, 우주항공, 유체 및 구조해석, 계산화학, 양자 및 분자 동역학 계산, 천문학, 인공위성을 포함한 군사과학, 자동차 선박 설계, 반도체설계, 금융계산 등 거의 모든 산업분야의 초대형 과학계산 문제의 프로그래밍에 필수적인 언어이다. 위와 같이 특히 자연과학이나 공학에서의 중요한 거대한 계산문제들을 슈퍼컴퓨터들을 이용하여 해결하는 데 있어서 C언어와 같이 범용프로그래밍 언어에 속하는 프로그래밍언어들에 비해 탁월한 효율이 있는 과학계산 전문 언어이다. 1990년대까지 널리 사용되어 왔던 FORTRAN 77에서 현재 Fortran 90/95, Fortran 2003, Fortran 2008등으로 계속 진보하고 있다. 전문적인 과학계산 문제를 풀기 위하여 프로그래밍하는 데 있어서 C보다 포트란이 훨씬 간단 명료하고 신속하게 프로그래밍을 작성할 수 있으며, 디버깅하는 데도 시간이 현저하게 단축될 뿐만 아니라, 그 계산속도 또한 일반적으로 훨씬 빠르다.[1]

등장배경

존 배커스는 수학적 대수식을 컴퓨터 프로그래밍에 바로 사용하고 싶어 했고, 그 결과 30여명의 연구원과 함께 포트란컴파일러 개발에 들어갔다. 후에 메인프레임머신에 사용할 프로그래밍 언어로 어셈블리어에 대한 대체 언어였다. 최초의 테스팅은 웨스팅하우스 부설 원자력연구소에서 실시되었으며 포트란컴파일러는 미세한 프로그래밍 실수까지 검사하였으며 실행 시간이 길지 않았다. 이후 수정 사항을 거쳐 포트란2, 1958년에 포트란3, 1962년에는 포트란4까지 세상에 나오게 되었다. 이후 포트란의 성능은 알려지게 되었고 1997년, 포트란 언어의 표준화에 대해 국제회의가 열리게 되었다. 수정 사항을 거쳐 표준화된 포트란77이 나오게 되었고, 이러한 프로그램의 사용자들은 어셈블리어의 번거로운 과정을 거치지 않아도 되었다.[2]

  • 1966.03.07 - Fortran66 / ASA(현재의 ANSI)에 의한 표준화.
  • 1978.04.15 - Fortran77 / 고정된 양식.
  • 1991.06.15 - Fortran90 / 자유 형식 ISO 표준, 배열 연산.
  • 1997.06.15 - Fortran95 / 순수 및 원소 과정.
  • 2004.04.04 - Fortran2003 / 객체 지향 프로그래밍.
  • 2010.09.10 - Fortran2008 / 공동 배열 [3]

특징

산술 기호를 그대로 사용할 수 있으며, 삼각함수·지수함수·대수함수 등과 같은 기초적인 수학 함수들을 그대로 불러내어 쓸 수 있다. 또 실수만이 아니라 복소수를 그대로 변수 형으로 쓸 수 있다. 물론 이러한 장점은 현재의 각종 프로그래밍 언어에서는 표준 라이브러리 등을 통해서 기본적으로 제공되는 기능이지만, 당시에는 굉장히 획기적인 방법이었다. 배열에 대해서도 많이 지원해 줘서, 옛날에 나온 언어임에도 불구하고 MATLAB에서처럼 쉽게 배열을 다룰 수 있다. 기본적으로 절차적 프로그래밍(procedural programming)이지만 90, 2003을 거치면서 OOP의 요소를 많이 넣게 되었다. 하지만 하위호환을 유지해야 하므로 아무래도 C++에 비해서는 문법적/구조적으로 불편한 부분이 많다. C와의 큰 차이점 중 하나로 배열의 배치 순서가 서로 다르다. C는 Row-Major Order를 따르며, Fortran은 Column-Major Order를 따른다. C에서는 (1,1) 다음이 (1,2)이지만, 포트란에서는 (2,1)가 된다. 따라서 다른 언어와 함께 프로그래밍을 할 때는 변수를 넘겨줄 때 순서를 바꾸어 주어야 한다. 또한 반복 계산을 할 때 가장 처음 인수부터 돌려 줘야 성능의 저하가 없다. 또한, 배열의 시작 숫자가 0이 아닌 1부터 시작이다. 사용자가 배열의 인덱스를 조정하는 것이 가능한 것은 포트란의 특징 중 하나이다. 배열의 인덱스를 -100 ~ 100처럼 지정하는 것이 가능하다. 초기 버전은 대문자만 인정했기 때문에 가독성이 부족하다. 그 이유는 키보드가 없던 시절 천공 카드로 프로그램을 입력해야 했는데 여기엔 소문자가 없었기 때문이다. 학교 교육은 다음과 같다. 서울대학교 수리과학부나 통계학과, 연세대학교 이과대학, 경희대학교 우주과학과와 원자력공학과, 서울시립대학교 토목공학과, 부산대학교 조선해양공학과, 부경대학교 환경대기과학과, 한국항공대학교 항공우주 및 기계공학과, 한국해양대학교 공과대학, 홍익대학교 기계시스템 디자인공학과 수치해석과목, 경북대학교 토목공학과와 지구시스템과학부 천문대기과학전공, 안동대학교 기계공학과, 한양대학교 ERICA캠퍼스 소프트웨어학부 수치해석 과목 등이 존재한다.[4]

활용

1980년대 이후로 일반 목적의 개발에서는 거의 사용되지 않는다. 허나 수치해석에 특화해 개발하였고, 그에 맞춘 라이브러리를 가지고 있기에 많은 계산을 해야 하는 특정 분야(학술 또는 연구 용도)에는 중요한 언어로 아직 사용하고 있다. MATLAB, 매스매티카 같은 수치계산 프로그램이 있으나, 대기과학 분야에서는 많은 계산과 다른 언어보다 빠르고 간단한 포트란을 주요하게 사용하고 있다. 포트란은 산술 기호를 그대로 사용할 수 있으며 또한 기초적인 수학 함수 또한 사용 가능하기에 수학/과학적인 수치 계산을 하는 데에 적합한 프로그램 언어다. 주로 기후 예측 등 첨단 과학 계산을 다루는 과학 기술 전문언어다.[5]

전망

포트란은 당시 주목을 받았던 프로그래밍 언어다. 그 시대에 FACT코볼이라는 사무용 언어가 생겨났다. FACT포트란보다 문서 작성 능력이 우수했으며 대용량 데이터도 처리하기 수월했으나 코볼에 밀려 사라지게 되었다. 포트란코볼과 비교하여 매우 간결함을 예로 들 수 있다. 기상청과 같은 기후, 과학에 관련된 계산을 할 때는 아직 포트란을 사용중이다. 방대한 데이터를 빠르게 처리하고, 그만큼 라이브러리가 쌓인 포트란을 쉽게 바꾸지는 못할 것이다.

각주

  1. 포트란 위키백과 - https://ko.wikipedia.org/wiki/%ED%8F%AC%ED%8A%B8%EB%9E%80
  2. 조환규, 《컴퓨터 이야기》, 1992-04-01
  3. Fortran 시작하기, <{https://riptutorial.com/ko/fortran Fortran]> , 《?》 2015.00.00
  4. 포트란 나무위키 - https://namu.wiki/w/%ED%8F%AC%ED%8A%B8%EB%9E%80
  5. [1] 기상청날씨마루〉

참고 자료

같이 보기


  검수요청.png검수요청.png 이 포트란 문서는 프로그래밍에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.