컴파일러 특성(Compiler Characteristics)

컴파일러 특성(Compiler Characteristics)

GNU Fortran이 Fortran 표준에는 명시적으로 규정되지 않았지만, 실제 코드를 작성하다 보면 어느 순간 프로그래머에게 드러나게 되는 여러 가지 특성들을 모아놓은 문서예요. 어떤 동작이 표준에 없는, 컴파일러만의 방식으로 결정되어 있는지 미리 알아두면 낯선 결과를 만났을 때 당황하지 않을 수 있어요.

출처: Compiler Characteristics (The GNU Fortran Compiler)

본문

이 장은 GNU Fortran 컴파일러의 특정 특성들을 설명해요. 이 특성들은 Fortran 표준에 규정되어 있지 않지만, 어떤 식으로든 프로그래머에게 보일 수 있기 때문에 알아둘 필요가 있어요. 다시 말해, 같은 코드라도 컴파일러가 어떻게 처리할지가 표준만으로는 정해지지 않은 부분들인 거죠.

다루는 주제는 다음과 같아요.

  • KIND 형 매개변수(KIND type parameters) — 정수·실수 종류를 나타내는 KIND 값의 구체적 의미.
  • LOGICAL 변수의 내부 표현(Internal representation of LOGICAL variables) — 논리값이 메모리에 어떻게 저장되는지.
  • 논리식의 평가(Evaluation of logical expressions) — 논리식이 어떤 순서와 방식으로 평가되는지.
  • REAL NaN 인자를 가진 MAX/MIN 내장 함수 — NaN이 섞였을 때 MAX, MIN의 동작.
  • 런타임 라이브러리의 스레드 안전성(Thread-safety of the runtime library) — 병렬 실행에서의 안전성 보장 수준.
  • 데이터 일관성과 내구성(Data consistency and durability) — 파일 I/O의 일관성·내구성 보장.
  • 명시적 ACTION= 지정자 없이 열린 파일 — 기본 동작이 무엇인지.
  • 심볼릭 링크에 대한 파일 연산(File operations on symbolic links).
  • 비정형 순차 파일의 파일 형식(File format of unformatted sequential files).
  • 비동기 I/O(Asynchronous I/O).
  • 정수 오버플로우 시의 동작(Behavior on integer overflow) — 래핑할지, 오류로 볼지.

이 목록 자체가 한눈에 보기 좋게 정리된 지도라고 생각하면 돼요. 각 항목이 궁금할 때 그 주제의 문서로 들어가서 자세한 내용을 확인하면 돼요.

더 알아보기

  • Fortran 표준이 규정하지 않는 동작일수록 버전이 바뀌면서 달라질 수 있으니, 실제로 의존하게 된다면 실행 환경의 GNU Fortran 버전을 함께 확인해 두는 게 좋아요.
  • 정수 오버플로우나 논리식 평가처럼 실제 결과에 영향을 주는 항목은, 병렬·수치 코드를 작성할 때 특히 신경 써야 해요.
  • 위 주제 중 상당수는 -fcheck 같은 런타임 검사 옵션과 맞물려 있어서, 검사 옵션 문서도 함께 보면 이해가 빨라져요.