포트란: 두 판 사이의 차이

내용 삭제됨 내용 추가됨
Yeonpil (토론 | 기여)
→‎표준화 기구: WG5 외부링크 변경 (https://www.nag.co.uk/sc22wg5/index.html 에서 https://wg5-fortran.org/ 로 최근 도메인 정식 발급된 것 반영)
Yeonpil (토론 | 기여)
잔글 띄어쓰기, 대소문자 변경을 비롯한 사소한 편집
1번째 줄:
'''포트란'''(Fortran)은 1954년 [[IBM]] 704에서 과학적인 계산을 하기 위해 시작된 컴퓨터 프로그램 언어이다.
 
FORTRAN은 수식('''For'''mula) 변환기('''Tran'''slation)의 약자이다.(IBM Mathematical ''For''mula ''Tran''slating System에서 유래.) 포트란은 [[알골 (프로그래밍 언어)|알골]]과 함께 과학 계산용으로 주로 사용되는 언어이며, 당시 7명의 전문가가 약 2년 반 동안에 걸쳐 완성한 것이 포트란의 기본을 이루었고, 그 후 ANSI에서ANSI와 ISO에서 표준화하였다.
 
포트란은 산술 기호(+, -, *, / 등)를 그대로 사용할 수 있으며, 삼각함수·지수함수·대수함수 등과 같은 기초적인 수학 함수들을 자연스럽게 불러내어 쓸 수 있으며, 최근 첨단 과학계산에서 필수적인 벡터, 행렬계산기능 등이 내장되어 있는 과학 기술 전문언어이다.
21번째 줄:
 
== 역사 ==
1953년 [[존 배커스]](John Warner Backus) 가 IBM 704 <ref>http://www-03.ibm.com/ibm/history/exhibits/mainframe/mainframe_PP704.html</ref> 메인프레임머신에 사용할 프로그래밍 언어에언어로 어셈블리어에 대한 대안으로 제시하였다. 이후 1956년 첫 번째 포트란 매뉴얼이 발표되었고<ref>http://www.fh-jena.de/~kleine/history/languages/FortranAutomaticCodingSystemForTheIBM704.pdf</ref>, 1957년 대중에 첫 포트란 컴파일러가 등장한다. 이는 첫 번째 "고급 프로그래밍 언어"의 등장이었다. 그 이전엔 프로그래머들이 손수 어셈블리어를 이용해야 했다.
 
=== FORTRAN 66 ===
"최초의 고급 프로그래밍 언어"가 등장하게 되자, 여러 벤더에서 다양한 문법을 가진 포트란 컴파일러를 각자의 시스템에 맞게 제작하기 시작하였으며, 1960년대에도 40여가지의 포트란 컴파일러가 존재했다고 한다.
 
이에 Business Equipment Manufacturers Association(BEMA)<ref>현재 The Information Technology Industry Council([http://www.itic.org/about/ ITI])</ref>은 표준화에 대한 논의를 시작하며, ANSI에 표준 문법을 제출한다. 1966년 ANSI의 승인을 얻게 되며, 첫 미국 포트란 표준이 발표된다. IBM이 가장 영향력이 높았으므로 표준화는 FORTRAN IV 컴파일러를 바탕으로 진행되었으며, 대중에게 FORTRAN IV와 FORTRAN 66은 혼용되어 불리게 된다. 이 표준은 산업 표준으로 널리 받아들여지게 된다. <ref>ftp://ftp.nag.co.uk/sc22wg5/ARCHIVE/Fortran66.pdf</ref>
 
이후 ISO([[국제 표준화 기구]])에서는 1972년 이 ANSI FORTRAN 66을 그대로 받아들여 포트란 국제 표준으로 받아들인다. ISO R1539-1972
39번째 줄:
# Assignment 문
# GOTO, assigned GOTO, computed GOTO 문
# Logical IF 문, 산술Arithmatic(arithmatic산술) IF 문
# DO 루프 반복구조
# 순차 I/O를 위한 READ, WRITE, BACKSPACE, REWIND, ENDFILE 문
51번째 줄:
FORTRAN 66 표준이 발표된 이후에도, 각 컴파일러 벤더들은 표준에 포함되지 않는 각자의 부가적 확장 문법을 포함하는 포트란 컴파일러들을 출시하였으며, 이에 미 포트란 표준화 위원회([http://www.j3-fortran.org ANSI committee X3J3] - J3)가 1969년 결성되었으며, FORTRAN 66 표준에 대한 개정을 논의하기 시작했다.
 
최종 안이 1977년에 확정되었으며, 1978년 4월 ANSI의 승인을 얻게 된다. 이 ANSI표준은ANSI 표준은 FORTRAN 77 이란 이름으로 불리며, 그 공식 문서는 ANSI X3.9-1978 이다.<ref>http://www.fortran.com/fortran/F77_std/rjcnf.html</ref> FORTRAN 66에 비해서 FORTRAN 77표준은 다음과 같은 몇 가지 특징적인 기능을 포함하게 된다.
 
ISO는 이 ANSI FORTRAN 77 을77을 수용하여 포트란 국제표준으로국제 표준으로 받아들인다. ISO 1539:1980 <ref>http://www.iso.org/iso/iso_catalogue/catalogue_ics/catalogue_detail_ics.htm?csnumber=6127</ref>
 
FORTRAN 66에 비해서 FORTRAN 77표준은 다음과 같은 몇 가지 특징적인 기능을 포함하게 된다.
 
# 구조적 프로그래밍에 대한 지원을 향상 하기 위한 block IF 와 END IF 문, 추가적인 ELSE 와 ELSE IF 절
줄 62 ⟶ 65:
# PARAMETER 문
# SAVE 문
# 내장함수에내장 함수에 대한 일반명(generic)접근
# ASCII 문자집합을 기반에 둔 (LGE, LGT, LLE, LLT) 같은 내장 함수
 
==== 미 국방성 표준 ====
한편 ANSI FORTRAN 77에 몇 가지 문법이 추가된 미국 국방성(Department of Defence: DoD) 포트란 표준이 발표된다. 이 후 1980년대 이후에 전 미국에서 발표된 포트란 77 컴파일러 제품들은 대부분 ANSI 표준 뿐만 아니라, 이 국방성 표준을 지원하도록 설계되었다. MIL-STD-1753 in 1978.<ref>http://www.fortran.com/mil_std_1753.html</ref>
 
다음과 같은 사항이 ANSI FORTRAN 77에 비해 추가되었다.
줄 73 ⟶ 76:
# DO WHILE 문
# INCLUDE 문
# END-OF-FILE 레코드를 만난 이후에도 READ, WRITE수행WRITE 수행
# 비트필드 연산에 대한 내장함수들내장 함수들
 
위 사항 중에서 INCLUDE 문법을 제외한 기능들이 이후 Fortran 90 포트란 표준에 추가된다.
줄 84 ⟶ 87:
 
공식적인 표기가 FORTRAN에서 Fortran으로 바뀐 것을 포함하여, 다음과 같은 사항을 표준에 추가하였다.
# 자유형식도입자유 형식 도입. 포트란 키워드에 소문자 허용
# 식별자의 길이는 31문자까지 허용
# 인라인 형태의 주석문
# 배열이름을배열 이름을 이용한 배열 전체 요소에 대한 연산기능연산 기능
# RECURSIVE 키워드를 이용한 재귀호출 프로시저
# MODULE 을MODULE을 이용한 모듈화 프로그래밍
# INTERFACE 문을 이용한 명시적 프로시저 선언
# 연산자 오버로딩
줄 95 ⟶ 98:
# Derived type - 유도 타입(타 언어의 구조체 - structure)
# 속성을 부여한 타입 선언
# 동적 메모리 할당
# 동적메모리할당
# 포인터 속성을 이용한 자료구조와 동적 접근 알고리즘에 대응
# EXIT, CYCLE 문, NAMED 구조
줄 101 ⟶ 104:
# 사용자 지정 정밀도 선언
# RANDOM_NUMBER, DATE_AND_TIME 등 각종 다양한 목적의 내장 프로시저의 추가
# 표준 문서에 Obsolescent(비 권장 문법, 이후 삭제 예정 사항) 와 deletedDeleted(삭제) 분류 문법의 등장
 
Fortran 90 은 FORTRAN 77의 기존의 문법 중 몇 가지 사항을 Obsolescent 로Obsolescent로 분류하였다. 그에 비해 deleted항목은Deleted 항목은 0으로 FORTRAN 77문법 중 삭제가 일어난 것이 없게 된다. 즉, 모든 FORTRAN 77 표준 코드는코드가 Fortran 90에90 속하도록표준에 부합하도록 정의되었다.
정의되었다.
 
Obsolescent features
줄 118 ⟶ 120:
 
=== Fortran 95 ===
포트란 표준 위원회는 10년단위의 major update 와 5년 단기의 minor update를 계획하는데, Fortran 95는 Fortran 90에 대한 minor update로 계획된다. 공식 문서는 ISO/IEC 1539-1:1997이다. <ref>http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=26933</ref> 이는 Fortran 90에 대한 확장 기능을 제공하던 High Performance Fortran(HPFF) 프로젝트의 영향을 받아 병렬 프로그래밍에 대한 지원을 목적으로 한다.
 
다음의 추가적 기능을 특징으로 한다.
# 벡터화를 목적으로 한 FORALL 문<ref>Forall 문법의 실패 : 2013 WG5 회의에서 UK(영국)측의 차기 표준에서 제외에 대한 제안 - [ftp://ftp.nag.co.uk/sc22wg5/N1951-N2000/N1975.txt N1975]</ref>, 중첩 WHERE 구조
# PURE, ELEMENTAL 프로시저의 사용자 정의
# 포인터 초기화를 포함한 유도체 구성요소의구성 요소의 초기화
# 데이터 개체에 대한 초기화 문 기능 확장
# 명시적 DEALLOCATION 없이 프로시저의 종료 시 동적 할당 메모리 해제