1977년, 미국항공우주국(NASA) 과학자들은 목성, 토성, 천왕성과 해왕성 탐사를 목적으로 두 대의 보이저 탐사선을 우주로 쏘아 올렸다. 그리고 약 50년이 지난 지금, 여전히 태양계 바깥을 날아가는 보이저만큼 오래된 것이 있다. 보이저를 둘러싼 모든 수학 및 과학 계산을 담당한 프로그래밍 언어, ‘포트란’이다.
금융권에서 쓰이는 ‘코볼’도 둘째가라면 서러울 정도로 오래된 프로그래밍 언어다. 인공지능(AI) 시대에 아직도 포트란, 코볼처럼 오래된 언어가 현역으로 남은 이유는 뭘까.
1977년 발사된 미국항공우주국(NASA)의 보이저 1호와 2호 미션은 원래 5년으로 계획됐다. 하지만 수명이 계속 연장됐다. 2015년, NASA 제트추진연구소(JPL) 엔지니어 래리 조타렐리가 은퇴했다. 그는 보이저 미션의 오리지널 멤버 중 가장 마지막까지 남아있던 사람이었다. 그의 은퇴를 조명하며 미국의 공학잡지인 ‘파퓰러 메카닉스’는 “NASA의 신입 개발자는 보이저 미션을 위해 포트란과 어셈블리어를 배워야 한다”고 보도했다.
1960년대 후반부터 설계 및 개발된 보이저호가 포트란과 어셈블리어로 구성된 것은 임무 특성과 시대적 배경이 정확히 맞물린 결과다. 당시 포트란은 고급언어 중 사실상 표준이었고, 수식 계산에 특화된 언어였다. 모든 계산에 포트란이 사용됐다. 탐사선의 궤도를 계산하고 자세를 제어할 수식을 만들 때도 포트란이 쓰였다. 반면 실시간으로 보이저호를 제어하는 데는 어셈블리어가 사용됐다. 보이저호 컴퓨터의 메모리는 수 KB(킬로바이트) 수준이었고 처리 속도도 매우 느렸다. 때문에 한 줄의 코드가 어떤 동작을 하는지 완벽히 통제할 수 있는 어셈블리어가 필수였다. 보이저호에 내장된 컴퓨터 CPU를 ‘업데이트’하는 것은 불가능하다. 어셈블리어와 포트란을 아는 사람이 보이저호를 유지하고 보수하는 데 필요할 수밖에 없었다. 그런데 이런 오래된 언어가 필요한 곳은 비단 보이저 미션만이 아니다.
빠르고 정확한 계산, 날씨 예보의 포트란
“대학원에서부터 썼으니 25년 정도 포트란을 써오고 있어요.” 2026년 1월 14일 화상으로 만난 박세영 기상청 수치예보센터 수치예보기획과 연구관이 말했다. 박 연구관은 학부 시절 대기과학을 전공하고 수치예보모델을 활용한 연구로 석박사 학위를 취득했다. 현재는 관측값과 모델 예측값을 비교해 수치예보모델이 ‘얼마나 좋은지’를 정량적으로 판단하는 검증팀을 이끌고 있다.
수치예보모델은 대기를 지배하는 물리·역학 방정식을 풀어 미래 상태를 예측하는 시스템이다. 전지구를 아우르는 기상청 수치예보모델은 무려 7억 개가 넘는 격자로 구성돼 있다. 가로세로 각각 8km의 격자를 이용해 지구로부터 80km 까지의 상층을 91개로 나눈 후 15초 간격으로 시간을 ‘적분’하며 미래를 계산한다. 이 모델은 ‘오늘’을 기준으로 앞으로 15일까지 예측한다. 시간을 더한 4차원의 배열 연산은 보통 3시간 이내에 완료된다.
한 번의 계산이 끝나면 그 다음 계산이 곧바로 이어진다. 현재 기상 상태가 조금이라도 바뀌면 미래가 달라지기 때문에, 현재 정보를 고려한 새로운 예측을 실시간으로 만들어내야 한다. 그러다보니 기상 예측은 정확성과 동시에 속도 싸움이다. “내일 예보가 내일 완료되면 그건 예보가 아니죠.” 박 연구관이 웃으며 말했다.
이처럼 연산 속도가 중요하기 때문에 수치예보모델의 핵심 계산 코어는 대부분 계산에 특화된 포트란으로 작성돼 있다. “사용자 입장에서 포트란은 편하고 유용한 언어예요.” 기상 모델은 유체역학 기반의 대기지배 방정식과, 강수와 구름, 복사 등 복잡한 물리 과정을 포함하고 있다. 박 연구관은 “이런 방정식을 코드로 구현하기에, 포트란은 구조적으로 잘 맞는 언어”라고 설명했다. 또 포트란이 처음부터 대규모 수치 계산과 행렬 연산을 편하게 하기 위해 설계된 언어라는 장점도 있다.
포트란은 1957년에 미국 IBM 연구팀이 개발했다. 연구팀은 사람이 수식 형태로 작성한 계산을 컴퓨터가 자동으로 빠르게 수행하도록 만들고자 했다. 당시 과학·공학 계산은 어셈블리어로 직접 작성해야 했는데, 이는 생산성이 낮고 오류가 많았다. 포트란은 고급언어임에도 불구하고 어셈블리어에 필적하는 실행 성능을 내는 컴파일러를 함께 제시해 혁신으로 평가받았다. 컴파일러는 사람이 작성한 프로그램 코드를 컴퓨터가 직접 실행할 수 있는 형태로 변환해 주는 소프트웨어다.
“전 세계적으로 가장 뛰어난 수치예보기관으로 평가받는 유럽중기예보센터(ECMWF)의 모델 역시 포트란 기반이에요.” 박 연구관이 설명을 이어갔다. 현재 기상청에서 쓰는 전지구 모델, 지역 모델, 초단기예보 모델 등 대부분의 전통적 수치예보모델은 포트란을 중심으로 구성돼 있다. 기상청 내에서 포트란 프로그래밍 교육 과정이 매년 열리고 있다. 기상청과 산하 기관 직원들, 기상학과 학생들을 대상으로 한다.
그런데 최근에는 개발에서의 유연성과 생산성이 뛰어난 언어, 파이썬이 수치예보 분야의 강력한 파트너로 떠오르고 있다. 물리와 역학 과정 등 계산량이 매우 큰 핵심 연산은 포트란으로 처리하고, 이들의 실행을 제어하거나 데이터 후처리, 검증, 시각화하는 작업은 파이썬이 담당하는 방식이다.
최근 하드웨어의 변화와 인공지능(AI)의 빠른 확산도 변화를 재촉하고 있다. “그동안 슈퍼컴퓨터는 CPU 중심이었지만 최근에는 병렬 연산에 최적화된 GPU 비중이 급격히 늘고 있어요. 또 AI 기반 예측 모델이 등장하면서 변화의 흐름이 더 분명해졌습니다.” AI 모델은 대체로 파이썬으로 개발되고 GPU에서 구동되는 구조다.
언젠가는 포트란이 기상학 분야에서 사라질까? 박 연구관은 “수십 년간 검증된 수치예보 분야에서 포트란의 강점은 여전히 유효하다”며 “앞으로도 지금과 같이 언어 간의 경계를 넘어 기술이 융합되는 방향으로 진화할 것”이라 전망했다.
여전히 활약하는 낡은 프로그래밍 언어

금융 업무에 제격, 65살 맞은 코볼
“2007년 KB국민은행에 입행해서 20년간 코볼을 사용하고 있어요.” 최미라 아키텍처부 팀장은 현재 KB국민은행에서 어플리케이션의 전체 그림을 그리는 업무를 이끌고 있다. 아키텍처란 수많은 프로그램들이 충돌없이 유기적으로 작동하도록 설계한 전체 구조를 뜻한다.
은행 전산 시스템에서 가장 중요한 부분은 코어뱅킹 시스템이다. 예금, 대출, 계좌이체, 이자 계산, 외환 거래처럼 돈이 실제로 움직이는 모든 핵심 업무가 이 시스템에서 처리된다. 최 팀장은 “친구에게 돈을 이체하면, 실제로는 채널 시스템이 고객의 요청을 받아 코어뱅킹 시스템으로 전달하고, 코어뱅킹이 잔액을 계산하고 돈을 이동시킨 뒤 그 결과를 다시 앱으로 알려주는 방식으로 처리한다”고 설명했다. 때문에 코어뱅킹 시스템에 문제가 생기면 모든 은행 서비스가 중단될 수 있다. 이 중요한 코어뱅킹 시스템의 기반이 되는 프로그래밍 언어가 70년이 다 되어가는 ‘코볼(COBOL)’이다.
“코볼은 은행의 기초 체력을 담당해 온 프로그래밍 언어예요.” 코볼은 미국 정부와 산업계의 요구에 따라 기업용 데이터 처리에 특화된 언어로 1960년대 개발됐다. 코볼 개발에는 IBM을 포함한 여러 컴퓨터 제조사와 학계, 미 국방부가 함께 참여했다. 목표는 은행·보험·행정기관에서 사용하는 대규모 업무 처리를 사람이 읽고 이해하기 쉬운 형태로 작성하는 것이었다. 당시 금융·행정 시스템은 급격히 복잡해지고 있었지만, 프로그램이 어셈블리어로 작성돼 수정과 유지보수가 매우 어려웠다. 코볼은 영어 문장에 가까운 문법을 채택해 거래 처리, 계정 계산, 파일 입출력 같은 비즈니스 로직을 명확하게 표현할 수 있도록 설계됐다.
코볼의 또 다른 장점은 금융 업무 특화 언어라는 점이다. 일반적인 프로그래밍 언어들은 숫자를 컴퓨터가 계산하기 쉬운 2진수 기반으로 처리한다. 이 방식은 빠르지만 0.1과 같은 소숫점 값을 정확히 표현하지 못해 아주 작은 오차가 누적될 수 있다. 돈을 다루는 금융 업무에서는 작은 오차가 심각한 문제로 이어질 수 있다.
하지만 코볼은 처음부터 돈 계산을 전제로 만들어진 언어라 숫자를 10진수 형식으로 다루고 소수점의 위치와 자릿수를 명확하게 정의한다. 최 팀장은 “코볼은 실수를 구조적으로 줄여주는 언어이며 계산 결과가 항상 동일하고 예측 가능하며 개발자의 숙련도 차이로 인한 편차가 거의 없다”고 강조했다. 그 결과 코볼은 수십 년이 지난 지금도 은행·금융권 핵심 전산 시스템에서 안정성과 신뢰성을 이유로 살아남아 있다. 최 팀장은 “오래된 낡은 기술처럼 보이지만, 은행이라는 환경에서는 이 오래됨이 큰 장점”이라고 설명했다.
1월 9일 서울대에서 만난 이광근 컴퓨터과학과 교수도 “처음부터 특정 문제를 가장 잘 풀기 위해 의도적으로 설계된 도구라는 점이 ‘낡은 프로그래밍 언어’가 지금도 유용하게 사용되는 이유”라고 설명했다. 언어는 추상적으로 태어나는 것이 아니라, 무엇을 잘 수행할 것인가라는 질문에서 출발하며, 목적에 가장 잘 맞도록 문법, 자료구조, 추상화 수준이 정해졌다는 것이다.
하루에만 처리되는 거래가 수 억 건에 이르고, 월급 이체부터 대출 상환까지 한 번이라도 절대 틀리면 안 되는 일이 업무의 대부분을 차지하고 있는 은행의 특성상, 많은 거래가 순서대로, 빠짐없이, 추적할 수 있게 수행되고 또 기록되는 코볼 시스템은 여전히 ‘매우 잘 맞는’ 언어다. “국민은행에서 코볼을 직접적으로 다루는 개발자들은 총 몇 명이냐”는 기자의 질문에 최 팀장은 “170여 명 정도”라고 답했다. 대부분의 인력이 코어뱅킹 시스템 담당 업무팀에 집중돼 있다.
다만 KB국민은행도 최근 자바(Java)로 시스템 전환을 검토하고 있다. IT환경이 빠르게 변하고 있기 때문이다. 최 팀장은 “AI, 자동화, 클라우드와 같은 신기술을 기존 시스템과 연결하려면 최신 언어 기반 구조가 유리한 측면이 있기 때문”이라고 설명했다.
오랜 C 계열 언어, 안보 문제가 된다?
꾸준히 쓰이는 프로그래밍 언어가 있는가 하면, ‘오래된 언어를 그만 쓰라’는 권고가 정부 차원에서 나오기도 한다. 2024년 2월, 미국 백악관의 국가 사이버 디렉터실(Office of the National Cyber Director)은 기술 보고서에서 임베디드 시스템과 중요 인프라 소프트웨어 개발에서 C 및 C++ 사용을 중단할 것을 공식 권고했다. C는 1970년대부터 운영체제, 임베디드 시스템, 네트워크 장비 등 핵심 소프트웨어를 구현하는 데 많이 사용되는 언어다. C++는 1980년대에 C 언어를 기반으로 객체지향 개념과 추상화 기능을 확장해, 대규모 시스템 소프트웨어, 게임 엔진, 실시간 애플리케이션을 구현하는 데 사용되고 있다.
백악관의 권고는 메모리 안전성 때문이었다. 메모리 안전성이란 프로그램이 사용하는 메모리를 정해진 규칙 안에서만 접근하도록 보장해, 잘못된 메모리 접근으로 오류나 보안 문제를 방지하는 성질이다. 메모리를 직접 제어하는 C 계열 언어의 자율성이 보안 취약점을 만들 수 있다는 점이 보고서의 핵심 지적이었다. 메모리 안전성을 본질적으로 보장하는 언어로 전환해야 한다는 것이다.
C와 C++처럼 수십 년 동안 시스템 소프트웨어의 기반이 돼 온 언어에 대해 정부기관이 공식적으로 사용 중단을 권장한 것은 이례적이다. “국가가 특정 프로그래밍 언어를 쓰지 말라고 말하는 건 거의 전무후무한 사례죠.” 1월 12일 대전 KAIST에서 만난 류석영 전산학부 교수가 말했다.
미 국방고등연구계획국(DARPA)은 이러한 정책 흐름과 맞물려 ‘TRACTOR(Translating All C to Rust)’라는 프로그램을 추진하고 있다. 이 프로젝트는 C 코드를 러스트(Rust) 코드로 자동 변환하는 기술을 개발하는 것을 목표로 한다. 홍재민 KAIST 전산학부 연수연구원은 “수십 년 동안 안전성 문제가 있는 C를 대체하기 위한 다양한 언어가 개발됐지만 모두 실패했다”며 “러스트는 그런 실패한 사례를 분석해 설계된 언어”라고 설명했다.
자동 변환 도구는 새로운 언어가 오래된 언어를 대체할 가능성을 높여준다. 개발자가 수백, 수천만 줄의 코드를 새로 작성하는 게 아니라서 실수 위험을 최소화하기 때문이다. 미국 예일대, 워싱턴대, 위스콘신대 등 학계는 물론 인텔, 갈루아 등 총 6개 연구팀이 C코드를 러스트로 변환하는 도구를 개발하고 있고, 매사추세츠공대(MIT)가 번역 성능을 평가하기 위한 벤치마크를 만드는 중이다.
류 교수팀은 그보다 앞선 2023년부터 C 프로그램을 러스트 코드로 자동 변환하는 기술을 연구해 성과를 내고 있다. 기술은 단순한 문법 변환이 아니라, C 코드의 의미를 보존하면서 러스트의 규칙을 만족하도록 구조를 재작성하는 데 있다. 특히 C의 위험 요소를 분석해 안전한 러스트 표현으로 옮기는 알고리즘을 개발했으며, 변환 결과가 기존 프로그램과 동일하게 동작한다는 것을 수학적으로 검증했다. 해당 연구는 2024년 국제학술지 ‘CACM’에서 표지 논문으로 선정됐다. doi: 10.1145/3737696
언어는 바뀌어도 원리는 그대로
프로그래밍 언어는 ‘기계와 소통하기 위해 무엇이 가장 합리적인 선택인가’에 대한 당대의 사회적·기술적 합의에 의해 결정된다. CPU 중심 시대에는 포트란과 C가, 대규모 서비스와 복잡한 소프트웨어가 등장하면서는 C++과 같은 언어가 선택된 것처럼, 언어의 선택은 시대별 하드웨어, 산업 구조, 요구 조건과 맞물려 왔다.
“앞으로 시대는 더 빠르게 변할 것 같은데 어떤 프로그래밍 언어를 배워야 하는지 혼란스러운 사람들이 많아요.” 기자의 질문에 이 교수는 “중요한 것은 프로그래밍 언어의 원리를 이해하는 것”이라고 답했다. 프로그래밍 언어가 어떻게 설계되고, 어떻게 번역되며, 어떤 원리로 동작하는지를 이해하면 된다는 것이다. 실제로 컴파일러, 타입 시스템 같은 원리를 이해하면, 언어별 문법은 표면적인 차이에 불과해진다. 때문에 원리를 익힌 사람은 새 프로그래밍 언어가 등장해도 이미 알고 있는 개념을 새로운 문법에 대응시키는 과정으로 빠르게 적응할 수 있다.
용어 설명
어셈블리어(assembly) : 컴퓨터의 CPU 명령어와 거의 일대일로 대응하는 저급 프로그래밍 언어.

