요약
Julia 코드를 직접 돌려 보며 미적분 개념을 익히는 무료 온라인 교재입니다.
존 버재니가 2022년부터 써 온 Quarto 책(글과 실행 코드를 함께 엮어 웹과 PDF로 펴내는 형식)으로, 지금은 0.27판입니다. 저자는 프로그래밍 자체보다 기술을 빌려 개념에 다가가는 것이 진짜 목표라고 밝혔습니다.
왜 중요한가
- 손계산은 컴퓨터에 맡기고, 학생은 그래프와 수치, 식을 오가며 개념을 확인하는 데 집중하게 하려는 교재입니다.
- 무료 언어인 Julia 하나로 미적분 이전의 기초부터 벡터 미적분까지 한 흐름으로 배울 수 있습니다.
핵심 내용
- 수 체계와 함수에서 시작해 극한, 미분, 적분, 상미분방정식, 벡터 미적분까지 다룹니다.
- 많은 계산을 '동작(함수, 인수)'라는 한 가지 꼴의 함수 호출로 표현해 문법 부담을 줄였습니다.
- 전용 패키지 CalculusWithJulia가 자주 쓰는 함수와 Plots 같은 필요한 패키지를 한 번에 불러옵니다.
- 각 절 끝에는 스스로 채점해 볼 수 있는 연습 문제가 붙어 있습니다.
- Symbolics.jl, Makie 같은 대안 패키지는 따로 한 장을 두어 소개합니다.
HN 반응
- 선형대수가 섞인 응용수학을 가르치기엔 문법이 칠판 표기와 가까운 Julia가 가장 낫다는 의견과, 대학 DSP 수업에서 Julia를 쓴다는 경험담이 나왔습니다.
- 반면 미분 장부터 Python 라이브러리 SymPy를 함께 써야 해서 개념에 집중하자는 목표와 어긋난다는 지적도 있었습니다.
(응용) 수학을 가르칠 언어로 Julia보다 나은 건 생각나지 않습니다. 증명이 들어가는 건 Lean이 단연 최고이지만, 선형대수가 들어가는 내용을 가르칠 때는 문법만으로도 Julia를 택할 이유가 충분합니다.
최적화, 특히 JuMP이 다루는 종류의 최적화도 다른 어떤 언어보다 Julia로 가르치는 편이 아마 더 쉬울 겁니다.
2024년에 HN에 Julia의 현황에 대한 글을 쓰셨으니, 아시는 게 많고 설명해 주실 의향도 있으시리라 생각합니다. 2022년에 Yuri Vishnevsky가 길게 정리한 문제들(1)에 비해 Julia가 얼마나 나아졌는지 알려 주실 수 있을까요?
어쨌든 제가 보기에 문제는 다른 언어와 도구도 같이 좋아지고 있다는 점입니다. 예를 들어 이 글(2)을 쓴 사람은 "Symbolics로 옮기기가 망설여집니다. 미적분 쪽(극한과 적분)은 경쟁력이 그만큼 못 되거든요"라고 했습니다.
(1) https://discourse.julialang.org/t/discussion-on-why-i-no-longer-recommend-julia-by-yuri-vishnevsky/81151
(2) https://github.com/jverzani/CalculusWithJulia.jl/issues/50
문법과 맞춤법을 고쳐 다시 올렸습니다.
(1)에 대해 말씀드리면, Yuri가 올린 버그는 https://github.com/JuliaLang/julia/issues/39385 하나만 빼고 전부 고쳐진 것 같습니다. 그 하나는 꽤 큰 PR이 아직 머지되는 중입니다.
그가 "다른 사람이 올린 것"으로 꼽은 버그들도 https://github.com/JuliaLang/julia/issues/36069 하나만 빼고 전부 고쳐진 듯합니다.
(2)로 무슨 말씀을 하려는 건지는 잘 모르겠습니다.
(2)를 보고 제가 갖는 의문은 이겁니다. Symbolics가 아직도 SymPy 수준에는 못 미치는 건가요?
APL이나 BQN은 살펴보신 적 있으세요?
BQN은 이런 용도로 만든 게 아니에요!
https://mlochbaum.github.io/BQN/commentary/math.html
칠판에 쓰는 수식과 너무 달라서요. 저도 그 언어들은 정말 좋아하지만요.
봤죠. Julia에 비하면 둘 다 전반적으로 너무 느립니다. K, Uiua, Matlab도 마찬가지고요.
적분이나 도함수를 가르치는 데 성능이 진짜로 필요하다고요?
원문이 미적분에 한정된 글이라는 건 압니다. 하지만 상위 댓글은 Julia를 쓰는 범위를 "선형대수가 들어가는 모든 것"으로 잡았으니, 그렇다면 선형대수에 실용적인 언어를 가르쳐야 한다고 봅니다. Matlab을 같이 깎아내린 건 대체로 느리고(조금 더 최적화할 방법이 있긴 하지만) 비싸기 때문인데, 그래도 APL이나 BQN보다는 Matlab이나 Julia를 가르치겠습니다. 게다가 BQN은 아주 새로운 언어라서 수업에서 가르치는 용도로 쓸 만큼 준비되지 않았습니다.
"kind"가 아니라 best*라고 쓰려던 건데, 오타가 났네요.
Google 같은 곳에서 수치 계산과 ML에 Julia를 채택했어야 했습니다.
그쪽은 Python을 택했는데, Python은 너무 범용적이고 장황합니다.
그러지 않아서 정말 다행이에요. 아마 그쪽도 그렇게 생각할걸요.
대학 DSP 수업 때문에 이제 막 Julia를 시작했는데, 이 입문 자료를 발견했습니다. 프로그래밍을 처음 접하는 사람에게 맞는 속도로 아주 잘 짜여 있습니다!
그 수업에서 Julia를 가르치나요? 제가 들은 대학 DSP 과목은 Matlab에서 클릭만 하는 실습이었어요.
Julia DSP 모듈은 배우기에 꽤 좋습니다. 기본 객체들이 예상하는 모습 그대로이고, 필터를 영점과 극점으로 지정할 수도 있습니다.
설계 알고리즘의 일부는 안쪽에 숨겨져 있지만, DSP 첫 강의에서 Parks-McClellan 같은 최적화 세부 사항까지 다룰 필요는 없다고 생각합니다.
이 글의 목표는 컴퓨터 언어나 그 사용이 부담이 되지 않게 하면서 수학 개념을 소개하는 것이라고 합니다. 그런데 미분 장을 잠깐 훑어보니 맨 위에 "using Sympy"가 있더군요. Julia만 쓰는 게 아니라 sympy도 같이 쓰는 겁니다. 학생에게 무료 라이선스가 제공되는 대학 환경이라면 Mathematica와 Matlab이 대안인데, 수치 계산과 기호 계산 능력이 모두 강력합니다. Julia는 사랑스러운 언어라고 생각하지만, Julia에 Sympy까지 더한 방식은 내세운 목표를 이루기에 어려운 제안일 수 있습니다. sympy의 S.Rational(1) + S.Rational(1,3) 같은 것들은 소화하기 어렵습니다.
추가로 적습니다. Julia로 미적분을 가르치는 걸 정말 좋아하는 분이라면, 그 열정이 전해져서 Julia에 Sympy까지 써야 하는 부담을 덜어 줄 수도 있겠다고 생각합니다.
그리고 SymPy(Symbolic Python) 대신 Julia 네이티브인 Symbolics.jl( https://github.com/JuliaSymbolics/Symbolics.jl )을 쓰면 안 되는 이유가 있나요?
인기 있는 라이브러리의 Julia 네이티브 대체재가 다 그렇듯, 종속(vendor lock-in)이 심해요.
대학 밖에서 Julia를 쓰는 분 계신가요? 5년쯤 전에 배워 보려 했는데 느낌도 좋았고 개념적으로도 흥미로웠지만, 학계 밖에서 도입된 사례나 발표는 어디서도 본 적이 없습니다.
네, 여러 회사에서 쓰고 있습니다. 프로덕션에서도 아무 문제 없이 잘 돌아가고, 앱 어딘가에 수학적 최적화가 들어가거나 성능이 중요한 커스텀 알고리즘을 써야 할 때 특히 유용합니다. 꽤 유연해서 Python 스크립트처럼 동적인 코드로도 쓸 수 있고, 최적화된 데이터 파이프라인도 짤 수 있고, 꽤 괜찮은 서버 역할까지 합니다(요즘은 비동기 쪽도 잘 돌아갑니다). 도입이 얼마나 되는지는 모르겠지만, 제대로 돌아간다는 것만큼은 분명합니다.
예전에 일하던 뉴스페이스 스타트업에서 위성(군집) 분석 작업에 썼습니다. 기계, 전력, 운용 개념(ConOps) 같은 것들이요. MATLAB은 너무 비쌌고 우리에겐 과하기도 했습니다. 툴박스가 딱히 필요하지 않았거든요.
몇 년째 매일 쓰고 있고, 회사에서도 씁니다. 요즘은 라이브러리로 컴파일해서 다른 언어와 공유할 수도 있습니다.
언어 자체가 (양방향 모두) 연결하기 아주 좋아서, 지금 상호운용성은 손꼽히게 좋은 언어라고 생각합니다.
Julia의 상호운용성은 정말 대단합니다. 저는 AI로 cuBLASLt를 호출하는 Julia 코드를 만들어서 효율적인 텐서 FP8 연산을 돌렸습니다. 전부 Julia로 짠 워크플로에서 GPU 이론 최대 성능의 90% 정도가 나옵니다.
훌륭한 자료네요. Julia는 MIT에서 나온 최고의 프로그래밍 언어 중 하나입니다.
요즘 Julia 개발 환경은 어떤가요? 실험적인 느낌이 들지 않는 IDE, 정적 분석, 디버거가 있나요?
상황에 따라 다릅니다. 정적 분석, 디버거, 본격적인 IDE 같은 전통적인 도구는 일반적인 정적 타입 언어에 비하면 다소 부족합니다. 정적 분석 쪽은 JETLS가 아주 잘 발전하고 있고, VSCode 확장은 매우 성숙했습니다.
하지만 반대로 Julia에서는 그런 도구가 필요한 일이 드뭅니다. 대부분 Julia의 REPL과 Revise만 있으면 충분합니다. 실행 중인 코드에 디버거처럼 들어가 보고 싶다면 Infiltrator.jl이 있습니다.
그리고 주님의 해 2026년 현재, 에이전트가 Julia 디버깅에 아주 효과적이라고 말씀드리겠습니다. 특히 DaemonicCabal.jl이나 JuliaDaemon.jl 같은 지속 세션이나 데몬과 함께 쓰면 그렇습니다.
에이전트가 코딩을 거의 다 해 줄 수 있다는 건 동의하지만, 그래도 저는 이 언어를 직접 다루는 법을 배우고 싶습니다. Julia는 우아한 문법 등을 갖춘, 사람 친화적이고 사람을 먼저 생각한 프로그래밍 언어를 표방했으니, 사람 프로그래머로서 써 보지 않으면 아쉬울 것 같아요.
아, 당연하죠. 제가 에이전트와 일하는 방식 중 하나는 공유 환경에서 저와 에이전트가 둘 다 명령을 실행할 수 있는 대화형 세션을 띄우는 겁니다. 예를 들어 에이전트에게 최소 재현 예제(MWE)를 만들어 달라고 한 뒤, REPL에서 직접 가지고 놀면서 더 파고들 수 있어요.
취미 프로젝트 몇 개를 VSCode에서 Julia로 만들어 봤습니다. 100% 매끄럽지는 않았어요. 예를 들어 단축키 하나로 컴파일하고 실행하는 건 못 했습니다. VSCode에서 그래프를 보여 주는 것도 가능하다고는 하는데, 저는 되게 만들지 못했습니다.
디버깅은 꽤 잘 됐습니다. 정적 분석은 찾아보지 않았습니다.
그런데 저는 어떤 언어든 VSCode에서 프로그래밍하면 덜 다듬어진 느낌이 듭니다. 예를 들어 Visual Studio로 C++을 짜면 별다른 설정 없이도 바로 되는 것과 비교하면요.