알립니다. 언제 이 글을 올리나 고민했습니다. 마소 커뮤니티 노트 기사로 쓴 글이라 원칙대로라면 한달 뒤에나 공개했을텐데, 중요한 소식이다 보니 원칙을 깼습니다. 사실 3주 가까이 지난 시점이라 지금도 늦었다고 할 수 있을텐데요.
IBM 포트란 개발팀을 이끌었으며, Backus-Naur form (BNF)라는 형식언어문법을 제창했던 존 배커스씨가 작고했다. 고인은 지난 3월 17일 오리건 주, 애쉬랜드 자택에서 숨을 거두었다고 한다.
존 배커스씨가 창조한 포트란은 최초로 대중적인 인기를 얻은 고차원 프로그래밍 언어였다. IBM 메인프레임 머신에 펀치 카드로 프로그래밍하던 시절이었으니 필자 같은 20대에겐 빛 바랜 역사책 속의 이야기 같이 느껴질 뿐이다. 하지만 16년 전 컴퓨터 학원을 다니면서 GW-Basic과 포트란을 배운 기억은 아직도 어렴풋이 떠오른다. 오래 전 일이라 포트란의 문법 같은 것은 기억나지 않지만, GW-Basic을 떼고 드디어 포트란을 배우게 됐다며 기뻐했던 것만은 잊지 않고 있다. 마이크로소프트의 Visual C# .NET 팀의 프로그램 매니저인 에릭 거너슨은 존 배커스씨가 없었다면 우리는 아직도 토글 스위치나 사용하고 있을 것이라며 고인의 업적을 치켜세웠다. 그러면서 포트란이 어떤 의미를 갖는 지 지적해주었다.
우선 포트란은 컴퓨터 언어의 아버지라고 할 수 있다. Lisp, Algol에서 시작해서 C, SmallTalk, Java, Python에 이르기까지 포트란의 영향을 받지 않은 언어란 아마도 없을 것이다. 굳이 계보를 따지자면 코볼 정도만이 직접적인 영향을 받지 않았을 뿐이다. 오늘날 아무런 고민 없이 사용하는 루프, 변수 할당문, 데이터타입 등을 소개한 언어이기도 하다. 다익스트라가 논문 『Go To Statement Considered Harmful』에서 이의를 제기하기 전까지, goto 문을 널리 쓰게 한 언어였다. 물론 오늘날에 와선 goto 문을 악습으로 규정하는 게 일반적인 분위기이긴 하다.
[리스트 1] 포트란 IV으로 짠 Hello World 프로그램
C FORTRAN IV WAS ONE OF THE FIRST PROGRAMMING C LANGUAGES TO SUPPORT SOURCE COMMENTS WRITE (6,7) 7 FORMAT(13H HELLO, WORLD) STOP END
에릭 거너슨은 포트란이 개발자들이 코드 포맷팅에 신경 쓰게 만든 언어였다며, 쓴웃음을 짓기도 한다. 첫 1-5열은 숫자 라벨을 써 넣어야 하고, 한 줄은 72자를 넘을 수 없는 등 제약이 많았다. 그래서 프로그래머들은 자를 가지고 다니며 72자를 넘겼는지 확인하곤 했다. 에릭 거너슨의 추억담을 들으니 그제야 컴퓨터 학원 다닐 적 기억이 어슴푸레 떠올랐다. 한 행이 조금 길다 싶으면 모니터에 대고 자를 대고 재던 일이 생각났다. 어떻게 그렇게 웃기는 기억을 완전히 잊고 살았나 싶다.
여태까지 포트란이 마치 고생대의 프로그래밍 언어인양 말했다. 하지만 오늘날에도 수치연산이 중요한 과학기술 분야에선 포트란은 여전히 인기 있는 언어이다. 수학, 천문학, 기계공학, 항공 및 우주공학 등 다양한 분야에서 포트란이 널리 쓰이고 있다. 가장 최근엔 Fortran 2003이 출시됐고, Fortran 2008이 개발 중이다.
존 배커스씨는 포트란과 더불어 형식언어문법 발전에 크게 기여함으로써 1977년에 컴퓨터 과학 분야의 노벨상 격인 튜링상을 수상했다. 뿐만 아니라 함수형 언어 연구에 매진했으며, C와 같은 현대 명령형 프로그래밍 언어의 뼈대를 완성한 Algol 시리즈 개발에 참여하기도 했다. 현대 프로그래밍 언어의 두 기둥인 함수형 언어와 명령형 언어 모두에 영향을 크게 끼친 진정한 선구자였다.
존 배커스씨는 미래를 보는 안목도 뛰어났다. 1977년 튜링상 수상 강연에서 그는 프로그래밍 언어에서 가장 중요한 요소는 효율성이 아니라 가독성, 신뢰성과 같은 것이라 주장했다. 1977년이라고 하면 C 언어가 개발된 지 막 5년이 지났을 뿐이고, 최초의 퍼스널 컴퓨터 Xerox Alto가 4년이 됐을 무렵이었다. 낮은 수준의 컴퓨팅 능력 때문에 효율적인 프로그래밍 능력이 가장 중시되던 시기에 이미 오늘날의 컴퓨팅 기술 동향을 예측한 셈이다. 루비 온 레일스 등이 강력한 생산성을 무기로 세를 불리는 요즘에 와서 그의 예언이 실현된 셈이다.
컴퓨터 과학의 태생기부터 큰 기여를 한 1세대 학자가 세상을 떠났다. 한 세대가 지고 다음 세대가 그 자리를 이어받았다는 상징적인 사건이 아닐까 싶다. 우리 세대는 미래 전산학도에게 어떤 의미로 남을지 궁금해진다.
항공 우주분야에선 포트란의 위치가 확고하죠 ㅎㅎ
‘검증된’ 언어이니까요 ㅎㅎ
그래도 개인적으론 코딩하기 싫은 언어라는 ㅎㅎ
연산 속도도 상당히 뛰어나다고 들었는데.
하지만 예전 기억을 떠올려보면 goto를 남발했던 것 같은데 요즘 포트란도 그러나 몰라. -_-;;;
대학 시절에는 수치 연산용으로는 여전히 포트란을 많이 쓰고 있었습니다. 제가 학부 때 일하던 랩도 마찬가지였는데, 요즘은 또 C로 많이 포팅들 했다고 하더군요. 어쨌든 고인의 명복을~
비전산학과에서 자주 쓰는 언어라면 C, 포트란, 매트랩 정도인 것 같습니다. 산공과 등에선 비주얼 베이직이나 자바도 많이 쓰더라구요.