오늘 시리즈/오늘의 프로그래밍 언어

[오늘의 프로그래밍 언어]계산을 위하여, Fortran

TigerShin 2021. 8. 7. 20:35

오늘은 오늘의 프로그래밍 언어 시리즈를 시작하기 위한 첫번재 시간인 Fortran에 대해서 소개를 해보겠습니다.

Fortran에 대한 간단한 정보

Fortran 로고

  • 이름: Fortran(Formula Translation, 수식 변환기)
  • 목적: 과학적 계산(수치 계산 등)
  • 설계자/개발자
    • 존 배커스(설계, 개발)
    • IBM(개발)
  • 현대에서의 이용: 현대에서도 예전에 비해 줄었으나, 과학적 계산에 주로 이용되는 중
  • 주요 구현체(컴파일러)
    • GFORTRAN(GCC)
    • IBM XL Fortran
    • Open Watcom
    • 기타 등등
  • 주요 버전
    • Fortran 66(1966)
    • Fortran 77(1977)
      • DoD(Department of Defense, 미국 국방성) Fortran
    • Fortran 90(1990)
    • Fortran 95(1995)
    • Fortran 2003(2003)
    • Fortran 2008(2008)
    • Fortran 2015 2018(2015? 2017?)

간단한 이야기 시~작!

위에서 간단하게 Fortran에 대한 설명을 해드렸습니다.
Fortran은 1954년에 존 배커스가 IBM 704라는 메인프레임에서 사용할 언어를 어셈블리어에서 대체를 하기위하여 제시하였습니다.

존 워너 배커스(John Wanner Backus): 1924~2007

왜 굳이 다른 언어도 있을텐데, 왜 어셈블리어를 대체한다고 한 것일까요?
사실 1954년 당시에는 메인프레임에 사용하는 언어가 어셈블리어를 제외하고 없었습니다.
간단하게 말해서, C언어와 같은 고급 프로그래밍 언어가 존재하지 않았습니다.

그동안 오래된 언어라고 아려진 COBOL 또한 1959년에 만들어졌다는 것을 설명드리면 놀라실 것입니다.

존 배커스는 당시, IBM 메인프레임 사용자들의 편의를 위하여, 포트란을 대안으로 제시한 것입니다.

IBM 704의 모습, Fortran외에도 LISP가 탄생하기도 했다.

이후 존 배커스의 제시로 인하여, 시작된 포트란 개발은 1956년에 첫번째로 Fortran에 대한 메뉴얼이 나왔습니다.

The Fortran Automatic Coding System for the IBM 704, 포트란 사용자들을 위한 최초의 메뉴얼

이후 시간이 흘러, 1957년에 대중에게 첫번째 Fortran 컴파일러가 공개가 되었습니다!

이렇게 Fortran이 최초의 고급 프로그래밍 언어가 되었습니다.
Fortran은 명령형 프로그래밍 언어의 시작을 알렸습니다.

이후 포트란은 C언어, 베이직등의 언어한테 많은 영향을 주었습니다.

주로 이용이 되는 곳

포트란은 위에서도 말씀을 드렸듯이, 과학계산에 엄청난 강점을 보여줍니다.

???: 파이썬이나, C언어도 있는데, 누가 그런 틀딱 언어를 씀? ㅋㅋㄹㅃㅃ!!

사실 틀린 말은 아닙니다.
실제로 현대에서는 이를 쓰는 인물은 일반적인 프로그래머보다는 물리학과와 같은 수치해석을 중심으로 하는 곳에서 주로 이용을 하는 편입니다.

???: 그니까 굳이 왜 그걸 쓰냐고욬ㅋㅋㅋㅋㅋㅋㅋㅋㅋ

우선 파이썬 같은 경우에는 인터프리터 언어입니다.
파이썬의 장점은 C언어나 자바와 달리 코드자체가 간결하고 이해하기가 쉽습니다.
그러나 단점 중에 하나는 바로 파이썬이 인터프리터 언어라는 이유도 있습니다.

인터프리터 언어는 소스코드를 바로 실행해주는 환경을 지원하는 언어입니다.
즉, 실행을 해야할 때에만, 그제서야 소스코드를 컴퓨터에게 번역해서 알려주는 겁니다.

다시 한번 말씀드리지만, 전부 다 번역을 하는 것이 아닌, 한줄마다 번역을 해서 알려주는 것입니다
이러한 인터프리터 언어의 특성임에도, AI에 사용이 되는 경우는 PyTorch나 Tensorflow에 개발하는 코어 프로그래밍 언어가 C++입니다


그렇기 때문에 기본적인 속도 차이는 발생하지 않습니다.
하지만, 온전히 파이썬을 이용하는 경우에는 애매할 수 있습니다. (뭐 나중에 속도 개선이 될 수 있습니다.)


포트란의 최대 속도는 약 C++의 2배 속도를 낼 수 있습니다.

기본적으로 Fortran 77이 2배 빠른 속도를 보여준다.

그렇기 때문에 대형 클러스터에서 이용하는 MPI(Message Passing Interface, 메시지 전달 인터페이스)에서는 C언어와 포트란을 지원합니다.
거기에 Nvidia에서는 CUDA를 지원하는 언어에 Fortran을 넣는 등, 계산 속도를 필요를 하는 곳에서는 아직까지도 사용을 하나, 일반적인 개발자들 한해서는....

이러한 계산 속도로 인해, 현재에도 이용을 하고 있으며, 우주항공, 기상예측 등 복잡한 계산이면서, 속도를 중요시 할 경우 이용을 하고 있습니다.
메스매티카가 더 좋고 편하기는 하나, 메스메티카는 유료이고, 포트란은 GNU에서 컴파일러를 배포해주고 있다.
현재 집에 있는 낡은 컴퓨터들에 FreeBSD 설치해서 만들어서 사용해볼 예정...

이야기를 마치며...

솔직히 저 같은 경우 Fortran과 같은 흥미로운 언어를 볼 때마다, 이를 어떻게 이용을 할 수 있을까, 재밌는 상상을 해봄과 동시에 이를 이용하여, 구시대 팜탑같은 경우에는 공학용 계산기로 마개조를 하는 경우도 존재합니다. 와 각인데??

거기에 아직까지도 개정은 나오나, C++보다도 버전에 대한 기능과 속도 차이가 존재하기에, 더욱 더 흥미를 유발하게 되더라고요.

나중에 직접 강좌같은 것도 작성해볼 예정이라, 기대해주십쇼!