TECH 으로 돌아가기
TECH HACKER NEWS 오늘 6분 읽기 37 READS

AI가 코볼을 자바로 바꿔줬는데, 겉만 멀쩡한 버그가 숨어 있었어요

AI가 코볼을 자바로 바꿔줬는데, 겉만 멀쩡한 버그가 숨어 있었어요
SOURCE IMAGE · HACKER NEWS
AI가 코볼을 자바로 바꿔줬는데, 겉만 멀쩡한 버그가 숨어 있었어요

60년 된 언어가 아직도 세상을 움직이고 있어요

코볼(COBOL)이라는 언어, 이름은 들어봤어도 실제로 본 적은 없는 분이 많을 거예요. 1959년에 만들어진 이 언어는 놀랍게도 지금도 전 세계 은행, 보험사, 정부 기관의 핵심 시스템에서 돌아가고 있거든요. 매일 어마어마한 규모의 금융 거래가 코볼 코드를 거쳐 처리되고 있어요. 문제는 이 코드를 이해하는 개발자들이 빠르게 은퇴하고 있다는 거예요. 그래서 수십 년째 '코볼을 현대 언어로 바꾸자'는 시도가 이어져 왔는데, 워낙 비용이 크고 위험해서 번번이 좌초되곤 했죠. 그러다 LLM이 등장하면서 'AI한테 변환을 맡기면 되지 않을까?'라는 기대가 커졌는데요. 최근 arXiv에 올라온 연구가 이 기대에 중요한 경고를 던졌어요. 실제 레거시 코볼 프로그램을 AI로 자바로 변환해봤더니, 겉보기엔 멀쩡한데 버그가 함께 딸려 왔다는 거예요.

왜 코볼 변환이 유독 어려운 걸까요

코볼과 자바는 단순히 문법만 다른 게 아니라 세계관 자체가 달라요. 대표적인 게 숫자 처리인데요. 코볼은 금융 계산을 위해 태어난 언어라 십진 고정소수점 연산이 기본이에요. 이게 뭐냐면, 0.1 + 0.2가 정확히 0.3이 나오는 방식이거든요. 반면 자바에서 무심코 double을 쓰면 0.30000000000000004 같은 값이 나와요. 컴퓨터가 소수를 이진수로 근사해서 저장하기 때문인데, 금융 시스템에서 이 미세한 오차는 재앙이 되죠. 자바에도 BigDecimal이라는 대안이 있지만, AI가 변환하면서 이걸 놓치면 컴파일도 잘 되고 대부분의 테스트도 통과하는데 특정 금액에서만 1원이 틀리는 코드가 만들어져요.

이런 함정이 한둘이 아니에요. 코볼의 PERFORM 문은 자바의 메서드 호출과 비슷해 보이지만 제어 흐름이 미묘하게 다르게 동작하는 경우가 있고요. 메인프레임의 문자 인코딩인 EBCDIC은 아스키와 정렬 순서가 달라서, 똑같아 보이는 정렬 코드를 옮겨도 결과 순서가 바뀔 수 있어요. 변수 자릿수를 넘는 값이 들어올 때 조용히 잘라버리는 코볼의 규칙도 자바엔 그대로 대응되는 게 없죠. 무서운 건 이런 버그들이 전부 '조용한 버그'라는 거예요. 예외도 안 터지고 에러 로그도 없이, 결과값만 슬쩍 달라지거든요.

LLM은 '그럴듯함'을 만들지, '동일함'을 보장하지 않아요

이 연구가 짚는 핵심이 바로 여기에 있어요. LLM은 통계적으로 그럴듯한 코드를 생성하는 도구지, 원본과 실행 의미가 동일하다는 걸 보장하는 도구가 아니거든요. 사람이 읽어봐도 자연스럽고 코드 리뷰에서도 통과할 만한 코드가 나오는데, 바로 그 '그럴듯함'이 함정이에요. 어색한 코드는 의심이라도 하게 되는데, 매끈한 코드는 그냥 믿게 되니까요.

업계에서는 이미 이 문제를 알고 대응책을 만들고 있어요. IBM은 메인프레임 코드 변환 제품에 AI 변환과 함께 검증 과정을 붙였고, 학계에서는 원본과 변환본에 같은 입력을 넣어 출력을 비교하는 차등 테스트(differential testing)나, 수학적으로 두 코드의 동등성을 증명하려는 형식 검증 연구가 활발해요. 결국 방향은 'AI가 변환하고, 기계적인 검증 체계가 확인하고, 사람이 최종 판단한다'는 3단 구조로 가고 있는 거죠.

한국 개발자에게는 남 얘기가 아니에요

국내 금융권도 코볼 기반 계정계 시스템을 현대화하는 차세대 프로젝트를 계속 진행하고 있잖아요. 앞으로 이런 프로젝트에 AI 변환 도구가 들어오는 건 시간문제인데, 이 연구는 도구 도입보다 검증 체계 구축이 먼저라는 걸 알려줘요. 변환 전후 시스템에 대량의 실거래 데이터를 흘려서 결과를 비교하는 파이프라인, 금액 계산 같은 핵심 로직에 대한 촘촘한 테스트가 없다면, AI 변환은 기술 부채를 옮기는 게 아니라 새 부채를 만드는 일이 될 수 있거든요. 개인 커리어 관점에서도 시사점이 있어요. AI가 코드를 쏟아내는 시대에는 '코드를 짜는 능력'만큼 'AI가 짠 코드의 미묘한 오류를 잡아내는 능력'이 값어치를 갖게 될 거예요.

정리하면, AI 코드 변환은 강력한 가속 장치지만 정확성의 보증서는 아니에요. 여러분이라면 AI가 변환한 수십만 줄의 코드를 어떻게 검증하시겠어요? 실무에서 쓸 만한 검증 전략이 있다면 의견 나눠주세요.


🔗 출처: Hacker News

SOURCE · HACKER NEWS
원문 전체 보기 → https://arxiv.org/abs/2607.28271
SHARE
처리 중...