한글 코딩 도구 비지니스 피칭

평소 한글로 코딩하자는 주장을 하다가, 우연한 기회에 관련한 내용으로, 제주 창조경제 혁신센터에서 사업 아이디어를 발표하고 심사자/참가자분들께 좋은 의견을 들을 수 있는 "피칭 데이"에 발표자로 나섰습니다. 7분짜리 발표와 10분 질의응답 포맷으로 진행했고, 준비하는 과정에서 제 머릿속 생각이 한판 정리되는 효과에 더불어 기대하지 못했던 청중의 긍정적 피드백을 듣게 돼 유익한 시간이었습니다. 투자나 지원을 전제로 한 피칭이 아니고, 아주 관대하면서 좋은 아이디어를 폭넓게 확장해 주고 네트워킹하는 것이 촛점이기에 부담 없이 발표할 수 있었습니다.
사실 기술적 흥미야 충만한 내용이지만, 사업성이 있으리라는 기대는 안 한 발표였는데, 의외로 감사한 조언을 들을 수 있었습니다. 아래 발표 슬라이드와 전문 공유합니다. 혹시 좋은 피드백이 있다면 댓글이나 맨 아래에 적은 이메일 주소로 보내주시면 감사하겠습니다.

안녕하세요, 취미도 개발도 프로그래밍인 프리랜서 개발자, 김대현입니다. 개발자들이 소프트웨어를 만드는 과정에 쓰는 프로그래밍 언어와 도구를 한글로 쓸 수 있게 만들어서 팔아보자는 아이디어를 발표하겠습니다.

누구나 스마트폰 갖고 다니시면서 유용한 앱을 깔아서 쓰시고, 노트북으로는 페이스북이나 구글 같은 웹서비스 많이 쓰시는데요, 그런 앱이나 웹 서비스를 개발자들이 만들 때, 열심히 머릿속으로 논리적으로 생각한 내용을 자바, 파이썬, 스위프트 같은 프로그래밍 언어로 소스 코드를 작성해 만들거든요. 그런데 지금은 이 소스 코드라는 것을 영문으로만 영작하듯 작성하고 있습니다.

예를 들어서, 우리가 자동차를 새로 샀고, 주행 연비를 계산하는 코드를 작성하겠다는 상황을 설정해 볼게요.

그걸 파이썬이라는 프로그래밍 언어로 코딩해 본 화면입니다. 파이썬은 배우기 쉬우면서도 강력해서 아주 널리 쓰이는 프로그래밍 언어입니다. 그런데 말입니다. 안 그래도 파이썬이라는 언어가 생소한데, 저 영어 단어들까지 소화하려니 더 어려운 것 같습니다. 사실 파이썬을 쓰더라도 한글로 코딩할 수 있습니다.

한글로 쓰면, 적어도 제 생각에는, 영문보다 읽기 쉽고 작성하기도 쉽다고 생각합니다. 하지만, 다수 기존 프로그래머들은 이런 시도를 꺼리는데, 그 이유 중 하나는 “한글과 영문을 섞어 쓰니 오히려 이상하다”는 점도 있습니다. 그래서, 여기서 좀 너무 나간 게 아닌가 걱정입니다만, 아예 “한글로 프로그래밍 언어까지 만들면 어떨까?”하는 생각이 들었습니다.

최근 학생뿐 아니라 일반 성인도 새로 코딩을 배우려는 사람이 많은데, 그분들께 걸림돌 중 하나가 어렵게 영어로 써야 하는 점이 아닌가요? 한글로 된 프로그래밍 언어를 쓸 수 있다면, 처음 프로그래밍을 배우려는 사람들에게, 한결 쉽지 않을까 합니다. 이 화면이 앞서 보인 파이썬 코드와 같은 일을 하는 걸, 나름의 한글 프로그래밍 언어로 다시 쓴 코드입니다.

개발 과정에 있어 코딩은 글쓰기와 꽤 비슷합니다. 머릿속 생각을 텍스트로 표현하고, 반복해서 읽고 고칩니다. 프로그래밍 언어와 생각하는 사고도 서로 영향을 주고받습니다. 그리고 개발이라는 게 결국 “우리 주변의 문제를 프로그래밍 언어로 기술해서 해결하겠다”는 건데 우리 일상은 한국어 중심이고, 생각도 한국어로 한단 말이죠. 그런데도 굳이 코딩할 때는 애써 콩글리시 영작을 해가며 개발한다는 게 이상하다는 거죠. (혹시 일기를 영어로 쓰시는 분 계신가요?)

한편, 새로운 프로그래밍 언어, 게다가 한글 언어라는 점이 생소해서 당장 널리 쓰이기는 어려울 텐데요, 대신 쉽게 접근해 부담 없이 써보기 좋게끔, 웹 브라우저에서 곧바로 쓸 수 있게 하면 좋겠습니다. 한글 프로그래밍 환경을 내 컴퓨터에 설치하고 준비하는 과정 자체를 없애는 거죠.

이 아이디어로 기대하는 점은, 장기적으로는 직업 개발자들이 실무 개발 일을 하는 데 더 효과적이 되고, 새로 배우는 분에게는 개발의 문턱을 낮추는 것입니다.

그리고, 이를 웹 브라우저에서 바로 쓰는 온라인 플랫폼으로 만들면, 개발 환경을 설치하는 번잡한 사전 작업을 건너뛰고, 학습과 구현 자체 본질에 집중하기 좋겠고요. 그러면 더 많은 분들이 코딩 개념을 가볍고 빠르게 익히기 좋을 것 같습니다.

그럼 이제 이걸로 어떻게 돈을 벌 거냐? 우선 프리미엄(freemium) 모델로 약간의 수익을 낼 수 있습니다. 오픈 소스 프로젝트는 무료로 마음껏 쓰게 하고, 비공개 프로젝트를 진행하려면 월 이용료를 받습니다. 그리고, 교육단체나 기업에 특화한 유료 서비스를 제공합니다. 개발 교육 과정에 아무래도 코딩 실습과 과제는 필수일 텐데요, 그 과정을 온라인 개발 플랫폼에서 쉽게 다루게 하고, 이용료를 교육 단체나 기업으로부터 받는 거죠. 학생들은 무료로 쓰고요. 그 외에도 몇 가지 유료 부가서비스를 제공할 수 있겠습니다.

다음, 이걸 어떻게 만들 것인가? 우선, 프로그래밍 언어를 만들겠다는 일이 말처럼 쉬운 일은 아닙니다. 과거에 한글로 프로그래밍 언어를 만든 시도가 더러 있습니다만, 이내 잊히고 말았습니다.

프로그래밍 언어를 만드는 일은 언어의 문법을 정의하고 최소한의 기본 컴파일러를 만드는 것만으로도 매우 어려운 일인 데다, 그 언어를 사용하는 충분한 사용자층을 확보하고, 각종 빌드 툴과 에디터 플러그인 등을 갖추는 데 매우 많은 노력이 필요합니다. 게다가 쓸모 있는 앱을 만들려면 써드파티 라이브러리도 많이 필요한데, 이걸 일일이 직접 만들기는 거의 불가능합니다.

그래서 현실적인 접근 방법으로, 이미 잘 갖춰진 오픈소스 거인들의 어깨에 사뿐히 올라타는 방법이 있습니다. 이미 잘 갖춰진 자바라는 프로그래밍 언어 생태계를 그대로 써서 새로운 언어를 만드는 경우가 많습니다. 스칼라라는 언어나, 최근 안드로이드 개발 표준으로 채택된 코틀린이 그런 방식입니다. 클로저라는 함수형 프로그래밍 언어도 자바라는 거인의 어깨에 올라타서 신생 언어의 어려운 문제들을 쉽게 해결했는데요, 저는 이 클로저의 어깨 위에 한글 언어를 올렸습니다. 초대형 거인 자바에 올라탄 작은 거인 클로저 위에, 살짝 한글로 올라탄 꼬맹이가 되는 겁니다. 한글 프로그래밍 언어 코드 자체는 사소해 보이지만, 그 아래 클로저나 자바라는 거인은 무시할 수 없습니다.

그 외에도, 웹 브라우저용 코딩 에디터를 만들고, 서버사이드에 돌릴 리소스를 확보하는 것도, 이미 나와있는 훌륭한 오픈 소스 제품을 활용해서, 직접 만들어야 할 부분을 최소화합니다. 창작이라기보다 이미 잘 나와있는 것들을 잘 조합하는 코디네이터 역할을 하는 거죠.

기본 접근 방향은 “제 개인 흥미와 동기를 최적으로 유지하면서, 국내 개발자 환경에 공헌하며 사업성을 검토”하는 것입니다. 첫 번째로 우선 무료 서비스 단계에서는 사용자 층을 충분히 확보하고, 두 번째 단계로, 비공개 프로젝트에 대한 프리미엄 유료 서비스 모델을 추가합니다. 프리미엄 모델까지 간다면 우선 서버 운영비 등을 충당하고 남을 수익이 발생할 테고요, 세 번째 단계로 기업이나 교육 단체를 대상으로 본격적인 사업을 벌이면 될 것 같습니다.

이상, 한글 코딩이라는 주제로부터 출발한 언어와 플랫폼 아이디어를 말씀드렸습니다. 아마 사업적 가치와 상관없이, 제 나름 꼬물꼬물 계속할 프로젝트지만, 여러분들의 관심과 도움이 있다면 더욱 재미있을 것 같습니다. 각종 의견이나 질문, 응원, 비판 환영하겠습니다. 귀한 시간 내어 경청해 주셔서 감사합니다.

시스템구조도

이상이 발표자료였구요, "피칭데이" 발표 시간의 질의응답만으로도 큰 도움이 되었고, 발표후 네트워킹으로 주고받은 소중한 조언들도 큰 힘이 될 것 같습니다. 과연 실질적인 사업화로 이어질지, 그저 머릿속 생각으로 끝날지는 모르겠지만, 우선은 꽤 흥미로운 경험이고 공부가 되었습니다.

감사합니다!

이하, 부록으로, 한글 코딩 언어로 작성해 본 실행 가능한 예제를 마구 늘어놓아보겠습니다.

병합정렬(merge sort)구현 예

병합 정렬은 주어진 원소들을 두 부분으로 나누어 각 부분의 첫째 요소끼리 비교하기 시작해서 더 작은 값을 추출해가며 합쳐서 원하는 정렬 결과를 얻습니다. 이때, 필연적으로 "양분", "합치기" 같은 용어가 등장하는데, 영어로 작성할 때 보다 더 설명하고 이해하기 쉽지 않을까요?

피보나치수열을 구하는 세 가지 방법 데모 코드입니다. 단순 재귀(recursion)로 구할 수도 있고, 함수형 언어의 'memoize’를 활용해 그 성능을 대폭 향상할 수 있습니다. 지연 평가(lazy evaluation) 기능을 활용해도 같은 효과를 얻을 수 있습니다.

단순한 예로, 1부터 n까지의 수를 모두 더하는 코드입니다. 역시 단순한 방법도 있고, 분할 정복(divide-and-conquer) 버전도 있습니다.

그래프 알고리즘의 간판 예제, "도시를 여행하는 외판원 문제"(Traveling Salesperson Problem) 풀이 방법 중 하나입니다. 여러 도시와 도시 간 거리가 있을 때, 모든 도시를 순회하되, 최단 거리로 이동하는 방법을 계산합니다. 역시 코드 곳곳에 한글 단어가 친숙하게 보이기에, 별도의 주석이나 머릿속 영단어 해석 과정 없이도 (상대적으로) 쉽게 이해할 수 있습니다.

인사이트 출판사의 "알고리즘 문제 해결 전략" 책의 문제 하나를 풀어보았습니다.

이 코드는, 한글 언어에서 자바 코드를 그대로 불러서 쓰는 모습입니다. 웹사이트 가입한 사용자의 패스워드를 데이터베이스에 저장할 때, 안전한 해시 알고리즘을 써야 하는데, 그런 특이한 영역에 있지만, 필수적인 코드들이 있다면, 직접 구현한 코드가 없더라도, 기존 자바 코드를 그대로 불러서 쓸 수 있습니다. 한마디로, 어떤 분야든 실용적으로 쓸 수도 있다는 주장의 예제입니다.


이상 읽어보시고, 의견 주시고 싶으신 분들은 댓글로 남겨주시거나 아래 메일로 편하게 연락주세요. 각종 의견, 질문, 비판 환영하겠습니다.

hatemogi at gmail.com

감사합니다.

- 끝 -

발표 후 배운 점도 따로 글로 정리했습니다. -- https://goo.gl/zKoTs4

Show your support

Clapping shows how much you appreciated 김대현’s story.