AI 시대에 Octave가 거꾸로 빛날 자리

자가 학습자와 교재 제작자를 위한 안내 — 왜 지금 GNU Octave를 다시 봐도 좋은가

도구의 운명은 보통 사용자 수가 결정합니다. 한때 잘나가던 언어와 환경도 더 편한 대안이 나오면 천천히 잊혀갑니다. Perl이 그랬고, 한때 강력했던 Lua도 비슷한 길을 걸었습니다. GNU Octave도 솔직히 이 명단 어딘가에 들어 있습니다. 요즘 수치 계산할 일이 생기면 다들 Python(NumPy/SciPy/Jupyter)으로 갑니다. Octave는 자연스럽게 “MATLAB 없는 사람이 임시로 쓰는 무료 대용품” 정도의 자리로 밀려나 있었습니다.

그런데 AI 시대가 본격적으로 열리면서 묘한 일이 생겼습니다. 잊혀가던 이 도구가 거꾸로 가치를 회복할 자리가 하나 보이는 겁니다. 그 자리가 교육입니다.

이 글은 두 종류의 독자를 떠올리며 썼습니다. 하나는 MATLAB 책이나 강의를 혼자 따라가는 자가 학습자, 다른 하나는 그런 사람을 위해 교재나 튜토리얼을 만들고 계신 제작자입니다. 어느 쪽이든 비슷한 지점에 닿게 되는데, 그게 오늘의 주제입니다.

뭐가 달라졌길래?

AI가 일반화되면서 “코드 도구”를 평가하는 기준이 하나 추가됐습니다. AI가 직접 실행할 수 있느냐입니다.

AI에게 “이 수치 계산 문제 좀 풀어줘”라고 하면 코드는 잘 짜줍니다. 문제는 그 코드가 진짜 맞는지입니다. AI가 코드를 직접 돌릴 수 있는 환경이 있으면, 답을 만든 다음 스스로 검증까지 해서 가져옵니다. 없으면? “이렇게 짜면 될 것 같습니다” 에서 끝입니다. 학습 도구로서 이 둘의 차이는 생각보다 큽니다.

이 기준으로 보면 MATLAB이 묘하게 불리해집니다. 환경은 강력한데 라이선스가 있어야 돌고, 학생도 학교 라이선스 안에서만 쓸 수 있고, AI 튜터가 학생 답안을 채점하겠다고 MATLAB을 띄울 수도 없습니다. 그래서 AI 튜터들은 자연스럽게 Python으로 가는데, 그러면 수십 년치 MATLAB 교재와 코드 자산이 통째로 옆으로 밀리는 일이 생깁니다.

Octave가 다시 보이는 자리가 바로 여기입니다. Octave는 무료고, MATLAB 문법을 거의 그대로 받아주고, AI가 어떤 환경에서든 띄워서 돌릴 수 있습니다. 학생이 깔든, AI 튜터가 백엔드에서 돌리든, 채점 도구가 자동으로 돌리든 — 라이선스 벽이 없습니다.

오해는 미리 정리해두겠습니다. “Octave가 MATLAB을 대체한다”는 이야기가 아닙니다. 산업 현장에서 누가 MATLAB을 버리고 갈아탄다는 이야기는 더더욱 아닙니다. 그저 교육·학습·검증이라는 좁은 영역에서, Octave의 자리가 AI 덕분에 오히려 새 의미를 갖는다는 관찰입니다.

구체적으로 어떤 그림이냐면요

추상적인 이야기니까 그림 셋으로 풀어보겠습니다.

1) AI가 풀이를 실제로 채점해 주는 자가 학습

선형대수 책을 혼자 보는 학생이 있다고 합시다. 책엔 “Ax = b 형태의 시스템을 풀어라” 같은 문제가 있고, 학생이 답을 짜오면 보통 책 뒷장의 정답과 비교하는 게 전부입니다.

그런데 AI에게 “내 풀이 검토해줘”라고 하면, AI가 학생 코드를 받아서 — 실제로 돌려보고 — “21번째 줄에서 차원이 거꾸로 됐어요. 이 줄을 이렇게 바꿔보세요”라고 답해줄 수 있습니다. 책 뒷장의 정답보다 학습자에게 훨씬 중요한 건 내 코드의 어디가 어떻게 어긋났는지니까요.

이 루프가 Octave가 있을 때와 없을 때의 차이입니다. 없으면 AI는 추측만 합니다. 있으면 같은 AI가 사실상 1:1 튜터가 됩니다.

2) AI가 만들어주는 “반응하는 책”

기존 튜토리얼은 정적입니다. 책에 “이렇게 하면 됩니다”라고 쓰여 있고, 우리는 그걸 따라 칩니다. AI가 들어오면 한 단계 위가 가능해집니다. “푸리에 변환을 처음 배워요”라고 하면 AI가 그 자리에서 5줄짜리 예제를 만들고, Octave로 돌려서 그래프를 보여주고, “주파수 50을 120으로 바꾸면 어떻게 될까요? 먼저 예측해 보세요”라고 되묻습니다.

학생이 답하면 AI가 또 돌려서 비교해 줍니다. 이건 책이 아니라 반응하는 책입니다. Python 세계에선 이미 비슷한 게 가능한데, MATLAB 교재의 세계에서는 Octave가 들어와야 비로소 가능해집니다.

3) 옛 MATLAB 코드를 살려서 배우기

대학 도서관과 인터넷에는 수십 년치 MATLAB 교재와 예제 코드가 쌓여 있습니다. “제어공학”, “디지털 신호 처리” 같은 책 부록에 붙은 코드들 말입니다. 상당수는 저자가 더 이상 관리하지 않고, 학교 라이선스 없이는 돌릴 수 없는 상태로 갇혀 있습니다.

Octave가 있으면 이 자산을 AI와 함께 살릴 수 있습니다. “이 책 코드를 같이 읽으면서 한 줄씩 설명해줘”라고 하고, 직접 돌려가며 변형도 해보는 겁니다. 옛 책이 갑자기 살아 있는 학습 자료가 됩니다. 그것도 공짜로요.

시작은 30분이면 됩니다

여기서부터는 따라 하실 수 있는 실전입니다. 짧게 끊어서 가겠습니다.

1단계 — Octave 설치

리눅스(Ubuntu/Debian):

sudo apt install octave octave-signal octave-control octave-statistics

맥(Homebrew):

brew install octave

윈도우는 octave.org에서 인스톨러를 받으면 됩니다.

설치 확인:

octave --version

버전 번호가 나오면 정상입니다. 같이 깐 신호처리·제어 패키지는 나중에 그래프 그릴 때 씁니다. 지금은 깔아만 두고 넘어갑시다.

2단계 — 가장 쉬운 AI 협업 환경: Jupyter + Octave 커널

Jupyter 노트북에 Octave 커널을 끼우면 노트북 안에서 Octave 코드를 셀 단위로 실행할 수 있습니다.

먼저 가상환경 하나 만들어 두시길 권합니다. 시스템 Python에 직접 깔면 패키지 충돌로 고생합니다.

python3 -m venv octave-ai
source octave-ai/bin/activate    # 윈도우는 octave-ai\Scripts\activate

필요한 패키지 설치:

pip install jupyterlab octave_kernel jupyter-ai

실행:

jupyter lab

브라우저가 열리면 New → Octave로 새 노트북을 만듭니다. 커널 목록에 Octave가 안 보이면 한 번 더 등록해 줍니다:

python -m octave_kernel install --user

그리고 AI 채팅 패널을 열어서 첫 메시지로 이걸 보냅니다. 의외로 이게 제일 중요한 단계인데, AI는 기본적으로 Python으로 답하도록 길들여져 있어서, 이 한 문단이 없으면 자꾸 Python 코드를 끼워 넣습니다.

“이 노트북은 Octave 커널을 쓴다. 모든 코드 셀은 Octave 문법으로만 작성한다. Python은 쓰지 마라. 외부 함수가 필요하면 pkg load <패키지명> 으로 명시한다.”

이 한 단락이 그 뒤 대화 품질을 크게 좌우합니다. 이제 자유롭게 요청해 봅시다.

“1초간의 100 Hz 정현파에 백색 잡음을 섞은 신호를 만들고, FFT로 주파수 스펙트럼을 그려줘.”

AI가 셀을 만들고 실행하면 그래프가 인라인으로 뜹니다. 보고 나서 “잡음을 두 배로 늘려봐”라고 다음 요청을 하고… 이 짧은 사이클이 아까 말씀드린 반응하는 책입니다.

3단계 — 더 가벼운 조합도 됩니다

Jupyter가 무겁게 느껴지면, 그냥 터미널에 Octave 띄우고 옆 창에 AI 채팅 열어서 손으로 복사해 가며 쓰셔도 충분합니다. 시작은 단순할수록 좋습니다. 익숙해진 다음 옮기면 됩니다.

갖고 있는 MATLAB 코드는 어떻게 가져오나요?

학습용으로 어디선가 가져온 MATLAB 코드는 보통 셋 중 하나입니다.

A. 그냥 됩니다. Octave는 MATLAB과 일부러 문법을 맞춘 도구라, 단순한 스크립트는 변환 없이 그대로 돕니다. 그러니 가장 먼저 할 일은 그냥 돌려보는 겁니다:

octave --no-gui original_script.m

에러 없이 결과가 나오면 축하드립니다, 90%는 끝났습니다. 이 케이스가 의외로 많습니다.

B. 패키지만 추가하면 됩니다. Signal Processing Toolbox 같은 MATLAB 툴박스가 쓰였다면, Octave에선 signal, control 같은 별도 패키지가 대응됩니다. 스크립트 맨 위에 한 줄 추가해 봅니다:

pkg load signal control statistics

그래도 안 되면 에러 메시지가 어떤 함수가 빠졌는지 알려줍니다. Octave Forge 사이트에서 함수 이름으로 검색하면 어느 패키지 소속인지 바로 나옵니다.

C. 일부 기능이 Octave에 없습니다. 최신 MATLAB의 table, string, datetime, Simulink 같은 것들입니다. 이때는 곧장 변환에 들어가지 말고 AI에게 진단부터 시키는 게 시간을 아낍니다. 이런 프롬프트가 잘 통했습니다:

“다음 MATLAB 코드를 Octave에서 돌리려고 합니다. 아직 코드를 바꾸지는 마시고, 다음 세 가지만 먼저 알려주세요:
1. 그대로 돌 가능성이 높은 부분
2. 안 되거나 다르게 동작할 위험이 있는 부분
3. 필요한 pkg load
진단을 본 다음 변환을 부탁드릴 거예요.”

“아직 바꾸지는 마시고”를 꼭 넣으셔야 합니다. 안 그러면 AI가 곧장 변환된 코드를 와르르 토해냅니다. 진단을 보고 나서 변환을 시키면 훨씬 깔끔한 결과를 받습니다.

정직한 한계도 말씀드려야죠

만능은 아닙니다. 시작 전에 알아두시면 좋을 것들:

  • GUI/Simulink/App Designer를 다루는 교재는 못 옮깁니다. 블록 다이어그램 시뮬레이션이 책의 절반이라면, 솔직히 그 책은 어렵습니다.
  • table, categorical, datetime을 본격적으로 쓰는 책도 부담됩니다. 다행히 교육용 책 다수는 행렬과 함수 위주라 영향이 적지만, 데이터 분석 특화 책이면 차라리 Python+pandas로 가는 게 자연스럽습니다.
  • Octave가 MATLAB보다 느릴 수 있습니다. 학습용 예제에선 차이가 거의 없지만, 큰 시뮬레이션을 매일 돌릴 거라면 다른 도구도 같이 검토하세요.
  • AI가 종종 MATLAB과 Octave를 헷갈립니다. 위의 “첫 메시지 못박기”가 필요한 이유입니다. 이 습관 하나가 디버깅 시간을 크게 줄여줍니다.

이 한계를 안고 가는 한, Octave는 교육과 검증의 자리에서 충분히 제 몫을 합니다. 그 이상을 약속하는 글은 아닙니다.

그래서, 두 달 뒤에 직접 해봤습니다

여기까지가 초안을 쓸 때의 “이런 그림이 가능할 것”이라는 관찰이었습니다. 두 달 뒤에 실제로 돌려봤습니다. 구성은 본문의 Jupyter 조합보다 더 단순한 쪽 — 터미널의 AI 에이전트(Claude Code)가 octave --no-gui를 직접 실행하는 방식입니다.

이틀 동안 에이전트와 함께 학습 노트 실습, 칼만 필터·SVD 이미지 압축·PID 제어·FFT 오디오 워크스루 네 편, 확장 실험까지 스크립트 19개를 쓰고 돌렸습니다. 루프는 기대보다 잘 돌았습니다. 에이전트는 코드를 짜고, 돌리고, 에러를 읽고, 스스로 고쳤습니다. 좁은 대역소거 필터가 수치 불안정으로 NaN을 뱉는 문제를 만나서는 전용 함수로 갈아끼우는 것까지 혼자 해냈습니다.

배운 것 하나만 옮기겠습니다. 핵심은 실행 권한이 아니라 검증 출력이었습니다. “각 단계마다 기대값과 실제값을 함께 출력해라”라고 요구하면, 사람은 출력만 훑어도 맞았는지 압니다. 이게 없으면 “돌아가는 코드”와 “맞는 코드”를 구분할 수가 없습니다. 이 과정에서 밟은 함정들은 따로 글 한 편으로 정리했습니다.

작지만 진짜 있는 자리

도구의 가치는 시대마다 다르게 매겨집니다. Octave는 오랫동안 “MATLAB 없는 사람의 임시 대용품”이라는 좁은 정체성에 갇혀 있었는데, AI 시대가 거기에 새 줄을 하나 달아주는 것 같습니다 — “AI가 직접 다룰 수 있는, 라이선스 벽 없는 MATLAB 호환 환경.”

작은 자리지만 진짜 있는 자리입니다. 자가 학습자에게는 공짜의 좋은 동료가 되고, 교재 제작자에게는 반응하는 교재를 만들 인프라가 됩니다. 옛 MATLAB 코드를 가진 모든 책과 강의는 살아남을 다리를 하나 갖게 되고요.

모든 분이 다시 Octave를 쓰실 필요는 없습니다. 다만 자가 학습이나 교재 제작에 발을 담그고 계신 분이라면, 한 시간쯤 들여 위 2단계대로 환경을 만들어 보시길 권합니다. 그 한 시간 안에 이 글이 무슨 그림을 가리키고 있었는지 감이 오실 겁니다. 안 맞으면 안 쓰면 그만입니다.


 

댓글 남기기

이 사이트는 Akismet을 사용하여 스팸을 줄입니다. 댓글 데이터가 어떻게 처리되는지 알아보세요.