수리수리연수리 코드얍

2. Fortran은 어떤 언어인가? 본문

즐거운 Fortran

2. Fortran은 어떤 언어인가?

ydduri 2023. 1. 29. 00:27

1. Fortran?

  • FORmula TRANslator(수식 변환기)의 약자, 과학 계산용으로 주로 사용되는 언어
  • 수학식을 그대로 표현 가능, 기초적인 수학함수(삼각함수, 지수함수 등) 바로 사용 가능
  • 1950년대에 개발되어 여러 버전 업그레이드가 이루어져 왔다(대표적으로 Fortran 77-90-95, 각각 2003-2008-2018년).
  • 대표적인 사용 분야가 필자의 전공이기도 한 대기과학! 위키피디아에 따르면 기후 및 기상 예측, 자원 탐사, 우주 항공, 유체 및 구조해석, 계산화학, 천문학 등에서 폭넓게 사용된다고 한다.
  • 현재 대기과학 분야 연구에서는 Fortran 90이 가장 보편적으로 쓰인다고 알고 있다. 본 튜토리얼 또한 Fortran 90 기준으로 진행된다.

2. Fortran을 왜 배우는가?

Fortran... 들어보신 분들보다 못 들어보신 분들이 더 많을 것 같은 언어... 코딩테스트에서 지원할리가 만무한 언어... 그런데도 Fortran이 잘 살아있는 이유, Fortran을 배우는 이유는 무엇일까?

  • 대기과학을 비롯하여 여러 과학 분야의 주요 연구 코드가 Fortran으로 짜여 있다. 대기과학 분야의 예를 들자면, 현업에서 사용되고 있는 모델 대부분이 Fortran 기반이다. 공백 없이 실시간으로 돌아가야 하는 대기 모델의 특성상 개편이 쉽지 않기도 하고, 과학 분야에서 Fortran이 갖는 어마어마한 강점이 있으니 바로...
  • 계산 속도가 빠르다. Python보다 약 10배 빠른 속도를 자랑하며, 널리 알려진 언어 중에서는 상당히 low한 축에 속하는 C언어보다도 빠르다. 그래서 방대한 양의 계산을 신속하게 해내야 하는 대기 모델의 경우 Fortran의 대체제를 찾기가 더더욱 힘들다.
  • 표준화가 잘 되어 있어 매우 유용한 Fortran program들을 쉽게 찾을 수 있다(Libraries of Fortran programs). 만국 공통인 원소 기호처럼, 약속과 표준화를 좋아하는 과학 분야에서 널리 쓰이는 언어인 만큼 표준화가 매우 잘 되어 있다는 장점도 있다.

하지만 뭐니뭐니해도 가장 중요한 이유는 간지가 아닐까... Programming Skills란에 당당히 적혀 있는 일곱 글자 FORTRAN, 생각만 해도 너무 멋지다... 농담입니다

3. Fortran 처리 순서

코딩(Coding) -> 컴파일링(Compiling) -> 실행(Execution) -> 디버깅(Debugging)

1) 코딩(Coding)

  • Fortran은 대소문자 및 띄어쓰기 구분이 없다(띄어쓰기 규칙은 없으나 가독성을 위해 띄어쓰기를 하는 편을 강력 권장).
  • 현재의 행 끝에 & 을 삽입하면 다음 줄에 코드를 이어서 작성할 수 있다.
  • 주석 처리에는 ! 을 사용한다. ! 뒤를 주석으로 인식한다.
  • 일반적인 Fortran 프로그램의 구조는 아래와 같다(이는 앞으로 튜토리얼을 진행하면서 차근차근 흡수하게 될 것이니 지금은 대략적인 구조를 맛보기만 하자).
Program 프로그램 이름
선언부(Declarations)
실행부(Statements)
stop
end program
  • 선언부: 프로그램에서 필요한 기억장소 확보, 실행부에서 필요한 정보 제공
  • 실행부: 선언부에 의해서 확보된 기억장소에 데이터를 기억시키고, 계산 및 처리 결과 출력 등을 함

2) 컴파일링(Compiling)

  • Fortran은 보편적으로 사용되는 Python, Java에 비해 low한 축에 속하지만, 기계어, 어셈블리어 수준의 low-level 언어는 아니다. 따라서 작성한 프로그램을 컴퓨터에서 수행하기 위해 컴퓨터가 직접 이해할 수 있는 언어로 번역하는 컴파일링 과정이 필요하다. 만약 코드가 여러 파일로 나누어져 있을 경우 이를 번역한 각각의 파일들을 링크하는 작업 또한 컴파일링 과정에서 거친다.
  • 컴파일러는 컴파일링을 해주는 프로그램을 말하며, 대표적인 컴파일러가 전 글에서 설치한 gfortran이다. 이외에도 Intel fortran 등의 컴파일러가 있다.

3) 실행(Execution)

  • 처리하고자 하는 데이터를 입력하고 실행하여 결과를 얻는다.

4) 디버깅(Debugging)

  • 컴파일링에서 에러나 경고 메시지를 출력했거나, 별다른 에러/경고가 없더라도 출력 결과가 옳지 않을 때 프로그램의 오류를 찾아서 수정하는 작업이다.
Comments