
월스트리트에서 비밀스럽게 쓰이는 언어
k라는 언어, 처음 들어보셨을 분도 많을 것 같아요. 한 줄로 설명하면 "월스트리트에서 비밀스럽게 쓰이는 초고속 배열 언어"예요. APL이라는 1960년대 언어에서 갈라져 나온 가족 중 하나인데요, Arthur Whitney라는 전설적인 프로그래머가 만들었어요. 이분이 만든 또 다른 언어로 q와 kdb+가 있는데, 이건 금융권에서 시계열 데이터 처리할 때 표준급으로 쓰이는 도구거든요.
최근에 ERufian이라는 개발자가 GitHub에 ksharp(혹은 kharp)라는 프로젝트를 올렸어요. k 버전 3을 C#으로 구현한 인터프리터예요. .NET 생태계에 이 신비로운 언어를 들여오겠다는 시도인 거죠.
k는 왜 이렇게 짧고 빠를까
k가 왜 신기한지 먼저 얘기해볼게요. k 코드는 진짜 짧아요. 정말로 한 줄에 모든 게 들어있는 경우가 많거든요. 예를 들어 0부터 100까지의 합을 구하는 코드가 +/!101 이런 식이에요. 풀어보면 !101은 0부터 100까지의 정수 배열을 만들고, +/는 그걸 다 더하는 reduce 연산이에요. 사람이 처음 보면 외계어 같지만, 익숙해지면 한 눈에 알고리즘이 보인다는 게 매력이에요.
k는 또 미친듯이 빨라요. 모든 게 배열 단위로 처리되니까 CPU의 SIMD 같은 벡터 연산을 자연스럽게 활용할 수 있고, 인터프리터 오버헤드가 거의 없거든요. 데이터 분석에서 NumPy가 빠른 이유와 비슷한데, k는 그게 언어 자체의 본질이에요.
ksharp의 특징
ksharp는 이 k 버전 3을 C#으로 한 줄 한 줄 구현한 프로젝트예요. .NET 진영에서는 그동안 APL 가족 언어를 제대로 다루는 도구가 거의 없었거든요. 이 프로젝트의 특징을 정리하면 이래요.
순수 C# 구현 이라는 게 첫 번째예요. 외부 의존성을 최소화하고 .NET 표준 라이브러리만으로 동작하게 했어요. 그래서 윈도우, 리눅스, 맥 어디서든 .NET이 깔려있으면 돌아가요.
k v3 시맨틱을 정확히 따른다 는 점도 중요해요. k는 버전마다 문법이 조금씩 달라요. ksharp는 그중에서 v3을 정확히 따라가는 걸 목표로 해요. 원본 k와 같은 결과를 내도록 테스트를 짜둔 게 강점이에요.
학습용 코드 베이스로 좋다 는 것도 빼놓을 수 없어요. 정통 k 인터프리터들은 보통 매우 압축된 C 코드로 작성돼서 읽기가 거의 불가능해요. Arthur Whitney의 원본 k 인터프리터는 한 줄짜리 줄들이 빽빽한 걸로 유명하거든요. 반면 ksharp는 C#으로 풀어서 썼기 때문에 "k 인터프리터가 어떻게 동작하는지" 공부하는 데 좋아요.
배열 언어 가족의 부활
배열 언어 가족이 최근 다시 주목받고 있어요. BQN, Uiua, April 같은 새 언어들이 등장하면서 "APL은 죽지 않았다"는 분위기가 만들어지고 있거든요. 데이터 처리와 머신러닝의 시대에 "벡터 연산 중심 사고"가 다시 필요해지면서 이런 현상이 나타나는 거예요.
특히 금융권에서 kdb+/q는 여전히 압도적이에요. Bloomberg, JP Morgan, Goldman Sachs 같은 곳에서 실시간 시장 데이터 처리에 쓰거든요. 라이선스 비용이 비싸기로 유명한데도 대체가 안 되는 이유는 그 압도적인 속도 때문이에요. ksharp 같은 오픈소스 구현체들이 늘어나면, 일반 개발자도 이 패러다임을 공부할 길이 열려요. ngn/k, kona 같은 오픈소스 k 구현도 있었지만, .NET 생태계에 있는 사람들에게는 ksharp가 더 친숙할 거예요.
한국 개발자에게는
솔직히 말하면 한국에서 k를 업무로 쓸 일은 거의 없을 거예요. 헤지펀드나 일부 증권사 정도가 아니면요. 그래도 이런 언어를 한 번 만져보는 건 의미가 있어요.
첫째, "벡터 사고"가 NumPy, pandas, JAX 같은 도구를 더 잘 쓰는 데 도움이 돼요. for 루프 안 돌리고 한 번에 처리하는 사고방식의 극단이 k거든요. 둘째, 인터프리터를 공부하고 싶은 분에게 ksharp 소스 코드는 좋은 교재예요. 기존 k 인터프리터는 너무 압축적이라 읽기 힘든데, 이건 C#으로 풀어 쓴 거니까 따라가기가 훨씬 수월해요. 셋째, 사이드 프로젝트 아이디어로도 매력적이에요. 본인이 좋아하는 언어로 k를 구현해보면 언어 설계와 평가 전략에 대해 깊이 이해할 수 있어요.
마무리
ksharp는 작은 프로젝트지만, 잊혀가던 강력한 언어 패러다임을 .NET 세계로 가져온다는 의미가 있어요. 모두가 같은 언어만 쓰는 게 아니라, 이런 다양성이 살아있다는 게 프로그래밍 세계의 매력 아닐까요.
여러분은 평소에 잘 안 쓰지만 "있는지 알고는 있는" 언어가 있나요? 한 번쯤 시간 내서 만져보고 싶은 언어가 있다면 어떤 거예요?
🔗 출처: Hacker News
"비전공 직장인인데 반년 만에 수익 파이프라인을 여러 개 만들었습니다"
실제 수강생 후기- 비전공자도 6개월이면 첫 수익
- 20년 경력 개발자 직강
- 자동화 프로그램 + 소스코드 제공