← 최신 논문
💻 computer science

Neural Code Translation of Legacy Code: APL to C#

본 논문은 대규모 언어 모델을 활용하여 레거시 APL 코드를 C#으로 변환하는 새로운 프레임워크를 제시하며, 검색 증강 및 반복적 정제와 같은 안내 전략이 APL 의 희소 구문과 제한된 학습 데이터라는 어려움에도 불구하고 자동화된 평가 파이프라인과 결합될 때 번역 품질을 크게 향상시킨다는 것을 보여줍니다.

원저자: Abdulrahman Ramadan, Hanen Borchani, Iben Lilholm, Mikkel Almind, Allan Peter Engsig-Karup

게시일 2026-05-15
📖 4 분 읽기☕ 가벼운 읽기

원저자: Abdulrahman Ramadan, Hanen Borchani, Iben Lilholm, Mikkel Almind, Allan Peter Engsig-Karup

원본 논문은 CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) 라이선스로 제공됩니다. 이것은 아래 논문에 대한 AI 생성 설명입니다. 저자가 작성하거나 승인한 것이 아닙니다. 기술적 정확성을 위해서는 원본 논문을 참조하세요. 전체 면책 조항 읽기

당신에게 APL이라는 비밀스럽고 매우 압축된 코드로 작성된 거대하고 고대 도서관이 있다고 상상해 보세요. 이 코드는 수십 년 전 소수의 수학자와 엔지니어들이 사용한 속기 언어와 같습니다. 이 코드는 매우 강력하지만, 대부분의 현대 프로그래머가 읽을 수 없는 기괴한 기호들 (예: , , ) 의 뒤섞임처럼 보입니다.

이제 이 모든 책들을 오늘날의 소프트웨어 거인들이 사용하는 **C#**으로 작성된 현대 도서관으로 옮겨야 한다고 상상해 보세요. 문제는 두 언어가 완전히 다른 방언을 사용한다는 점입니다. APL 은 유동적인 수학 춤과 같아서 한 줄의 코드가 C#의 한 단락 분량의 작업을 수행할 수 있습니다. 반면 C#은 경직되고 구조화되어 있으며, 모든 단일 단계를 자세히 설명할 것을 요구합니다.

이 논문은 연구팀이 고대 APL 도서관의 책들을 자동으로 C# 도서관으로 옮기기 위해 로봇 번역기(인공지능을 활용) 를 구축하려 했던 시도에 대한 보고서입니다.

다음은 그들이 어떻게 했는지 간단히 설명한 것입니다:

문제: "번역 중 분실" 격차

연구자들은 표준 AI 번역기가 이 작업에서 자주 실패한다는 사실을 발견했습니다. 그 이유는 무엇일까요?

  1. 알파벳이 이상합니다: APL 은 대부분의 AI 모델이 본 적 없는 특수 기호를 사용합니다. 이는 로봇이 이해하지 못하는 이모지로 쓰인 언어를 읽도록 가르치려는 것과 같습니다.
  2. 논리가 다릅니다: APL 은 한 번에 숫자 전체 그룹 (물 한 통) 을 다루는 반면, C#은 보통 한 번에 하나의 숫자 (단일 물방울) 를 다룹니다. AI 는 논리를 흘리지 않고 "물통"을 "물방울"로 어떻게 분해할지 찾아내야 합니다.
  3. 사전이 없습니다: AI 가 학습할 수 있는 APL 코드와 C# 코드가 짝을 이룬 예시가 많지 않습니다. 이는 교과서 없이 새로운 언어를 배우려는 것과 같습니다.

해결책: 로봇을 위한 세 가지 "도움"

연구자들은 AI 번역기를 돕기 위해 네 가지 다른 방법을 테스트했습니다. 이를 어려운 시험을 치르는 학생을 위한 다양한 수준의 도움으로 생각하세요:

  1. "혼자" 시도 (기준선): AI 에게 APL 코드를 주고 "C# 코드만 작성해라"라고 말합니다.

    • 결과: AI 는 혼란을 겪습니다. 종종 괜찮아 보이지만 실제로 작동하지 않는 코드를 작성하거나, C# 규칙을 잊어버려 충돌이 발생합니다.
  2. "번역자의 메모" (자연어): 코드를 작성하기 전에 AI 에게 APL 코드가 무엇을 하는지 평범한 영어로 먼저 설명하도록 요청합니다 (요약문을 작성하는 인간 번역자와 같이). 그런 다음 그 요약문을 바탕으로 C# 코드를 작성합니다.

    • 결과: 이것이 큰 도움이 되었습니다. AI 가 먼저 영어로 의미를 "생각"하도록 강제함으로써 실수가 줄어듭니다.
  3. "요약 노트" (검색): AI 에게 APL 규칙과 예시가 담긴 참조 카드 뭉치 (데이터베이스) 를 주고 작성하기 전에 필요한 특정 규칙을 찾아보라고 합니다.

    • 결과: 이는 괜찮았지만, 때때로 AI 가 잘못된 참조 카드를 선택했기 때문에 "번역자의 메모"만큼 효과적이지는 않았습니다.
  4. "실전 연습" (반복적 정제): 이것이 승자였습니다. AI 가 코드를 작성하면 컴퓨터가 실행해 봅니다. 코드가 충돌하거나 잘못된 답을 내놓으면 컴퓨터가 "오류! 다시 시도해!"라고 외칩니다. AI 는 오류 메시지를 읽고 작업을 수정한 후 다시 시도합니다. 코드가 완벽하게 작동할 때까지 이 과정을 반복합니다.

    • 결과: 이것이 가장 좋은 결과를 낳았습니다. 이는 학생이 모의고사를 치르고 실수를 확인한 뒤 A 를 받기까지 재시험을 보는 것과 같습니다.

비결: "메서드 시그니처"

연구자들은 또한 중요한 트릭을 발견했습니다. C#은 타입에 대해 매우 엄격하기 때문에 (숫자가 정수인지 소수인지 알아야 함), 작성을 시작하기 전에 함수의 모양에 대한 "청사진"을 AI 에게 제공했습니다. 이는 AI 에게 "이 함수는 두 개의 숫자 목록을 받아 yes/no 답변 목록을 반환한다"라고 명시하는 템플릿을 제공하는 것과 같습니다. 이 청사진을 통해 AI 는 훨씬 더 정확한 코드를 작성했습니다.

그들이 발견한 것 (결과)

  • AI 는 가능하지만 도움이 필요합니다: 원시적인 AI 모델은 아직 이 작업에 능숙하지 않습니다. 하지만 "청사진"을 주고, 먼저 영어로 논리를 설명하게 하며, 스스로 오류를 수정하도록 연습하게 한다면 이 작업에 매우 능숙해집니다.
  • 더 많은 데이터 = 더 나은 결과: AI 에게 공급한 APL-to-C# 쌍의 예시가 많을수록 성능이 향상되었습니다. 그러나 상대적으로 적은 양의 데이터로도 "실전 연습" 방법이 놀라울 정도로 잘 작동한다는 사실을 발견했습니다.
  • 주요 적은 구문론이 아니라 논리입니다: 대부분의 경우 AI 는 컴파일되는 (충돌 없이 작동하는) 코드를 작성할 수 있었지만, 원래 APL 코드가 한 것과 정확히 같은 일을 하지는 못했습니다. 가장 어려운 부분은 코드의 철자법이 아니라 수학의 의도를 이해하는 것이었습니다.

결론

연구자들은 오래되고 신비로운 APL 코드를 현대적이고 유용한 C# 코드로 자동 변환할 수 있는 파이프라인을 성공적으로 구축했습니다. 그들은 파인튜닝(전문 훈련), 설명(영어 요약), 그리고 피드백 루프(오류 수정) 를 결합함으로써 AI 가 이 두 가지 매우 다른 세계 사이의 격차를 메울 수 있음을 증명했습니다. 이는 APL 로 작성된 오래된 중요 시스템을 가진 기업들이 마침내 희귀하고 비싼 전문가를 고용하여 모든 것을 수동으로 다시 작성할 필요 없이 현대화할 수 있음을 의미합니다.

연구 분야의 논문에 파묻히고 계신가요?

연구 키워드에 맞는 최신 논문의 일일 다이제스트를 받아보세요 — 기술 요약 포함, 당신의 언어로.

Digest 사용해 보기 →