핵심 요약
- C 계열 언어들이 여전히 다중 루프 탈출이나 배열 처리 등에서 비효율적인 구문을 유지하는 반면, 포트란은 이러한 기능을 훨씬 우아하게 지원한다는 분석이 공유되었습니다.
- 포트란은 명명된 루프 탈출, switch문 범위 지정, 강력한 배열 슬라이싱 및 임의 인덱스 지정을 지원해 수치 계산과 알고리즘 작성을 한결 직관적으로 만들어 줍니다.
- 글쓴이는 포트란이 치명적 오류를 줄이고 배우기 쉬우며 계산 속도가 매우 빠르다고 평했고, 댓글에서는 goto문의 실효성과 디버깅 경험을 두고 활발한 토론이 이어졌습니다.
요약 현대 개발 환경에서 C, C++, 자바 같은 C 계열 언어가 널리 쓰이지만, 수십 년 동안 제어 구조나 문법적 불편함이 크게 개선되지 않은 영역이 있습니다. 반면 고대 언어로 취급받기 쉬운 포트란(Fortran)은 꾸준히 발전하며 특정 알고리즘 구현에서 C 계열보다 훨씬 깔끔하고 우수한 편의성을 제공하고 있습니다.
대표적으로 다중 중첩 루프 탈출(Nested Loop Exit) 기능이 있습니다. C 언어에서는 break를 사용해도 현재 속한 단일 루프만 빠져나갈 수 있어 플래그 변수를 쓰거나 기피되는 goto 문을 써야 하지만, 포트란은 루프마다 이름을 지정할 수 있어 'exit loop1' 형태로 원하는 상위 루프를 바로 빠져나올 수 있습니다. 또한 switch-case 문에서 범위를 지정하는 기능도 C 표준에는 없지만 포트란은 표준 문법 차원에서 'case (40:72)'처럼 간편하게 범위를 지원합니다.
배열 처리와 슬라이싱 역시 포트란의 강력한 강점입니다. C 언어와 달리 별도의 반복문 없이도 'vec(40:50:2)'와 같이 구간과 스텝 크기를 지정해 배열을 자르거나 특정 2차원 영역의 값을 일괄 변경할 수 있습니다. 인덱스 체계 또한 기본값인 1뿐만 아니라 -5:5처럼 음수를 포함해 원하는 임의 범위를 자유롭게 정의할 수 있어 알고리즘에 맞게 언어를 유연하게 맞출 수 있습니다.
이 밖에도 모든 제어문이 명확하게 종료되어 댕글링 엘스(dangling else) 문제를 원천 차단하고 중괄호({}) 남발을 방지합니다. 글쓴이는 포트란이 학습하기 쉽고 치명적인 실수를 저지르기 어려우며 수치 계산에서 여전히 최고 수준의 속도를 자랑한다며, 저수준 제어가 다소 부족할지라도 모든 언어가 C처럼 시스템에 밀착될 필요는 없다고 강조했습니다.
해외 반응 번역
'치명적인 실수를 하기 어렵다'는 부분에서 빵 터짐. 예전에 포트란 프로그램에서 1을 0으로 바꿨다가 디버깅하느라 지옥을 맛봤던 기억이 나네...
두 가지 사소한 점 지적: 두 번째 문단에 exit 대신 exist 오타가 있고, 첫 번째 포트란 코드에서 strong 태그가 제대로 렌더링되지 않았음. 그 외엔 흥미로운 글임. 80년대 이후로 포트란을 안 썼지만 오래됐다고 쓸모없는 건 아니라는 걸 짚어줘서 좋음. 당시 HP 컴퓨터 팔 때 같이 팔곤 했었는데.
좋은 글입니다. 다만 전형적인 'goto는 무조건 나쁘다'는 주장엔 이견이 있네요. C에서 루프를 빠져나오기 위해 goto를 쓰는 건 자바의 레이블 붙은 break와 다를 바 없습니다. 레이블만 제대로 붙이면 오히려 플래그 변수보다 goto가 낫습니다. 루프마다 플래그를 넣을 필요도 없고 최상위 루프로 바로 나갈 수도 있으니까요.
Sponsored · 광고