소개
akicode의 'aki'는 일본어로 가을이라는 뜻이에요. 한자로는 秋라고 써요. 가을이 되면 떡갈나무에 도토리가 잔뜩 열립니다. 그리고 도토리 속에는 작은 벌레가 숨어 있을 때가 많아요. 바로 bug죠. 코드도 마찬가지예요. 어딘가에는 늘 bug가 있고, 그것을 찾아내고 이해하는 것이야말로 프로그래밍을 배우는 가장 재미있는 부분이에요. 그래서 우리 로고는 도토리랍니다.
akicode는 처음으로 프로그램을 짜는 사람을 위해 만들었어요.
프로그램을 막 시작한 사람이 가장 많이 막히는 건, 대개 문법이 아니라 시작하기 전의 준비였어요. 소프트웨어를 설치하고, 경로를 잡고, 설정을 바꾸고, 게다가 시스템마다 방식이 다 달라요. 그래서 akicode가 하려는 일은 간단해요. 그 번거로움을 없애는 거예요. 웹 주소를 열면 바로 쓰고, 바로 실행할 수 있어요. 가입도 설치도 필요 없어요. 간단하게만 만든 장난감이 아니라, 진짜 프로그래밍 환경이에요. 여기서 쓴 코드는 다른 데 가져가도 그대로 돌아가요.
처음엔 그저 브라우저 안에서 디버거를 돌리고 싶었을 뿐이에요. 프로그램이 어떻게 실행되는지 한 걸음씩 볼 수 있도록요. 그런데 디버거를 돌리려면 진짜 프로세스가 있어야 해요. 프로세스에는 가상 메모리와 페이지 테이블이 필요하고, 파일 시스템도 필요하고, Linux 호환도 필요하고…… '아직 이게 부족해'를 하나씩 따라가다 보니, 결국 바닥부터 완전한 운영체제를 써내고 말았어요. gcc, gdb처럼 원래 기계에 설치해서 쓰는 도구까지 돌아가요. 디버거 하나 때문이라면서, 꽤 먼 길을 돌아왔네요.
물론 진짜 Linux와는 아직 한참 멀어요. 어쨌든 우리가 다시 구현한 것이라, 동작이 진짜 Linux와 안 맞는 곳이 많아요. 아직 안 만든 시스템 콜도 있고, 만들었어도 세부가 다른 것도 있어요. 진짜 기계에서는 잘 돌아가는데 여기서는 이상하게 걸리는 프로그램도 있어요. 다 아직 못 잡은 버그들이고, 하나씩 고치고 있어요. 혹시 마주치면 꼭 알려 주세요.
이게 akicode예요. 아직 작고, 지금도 자라고 있는 도구예요. 여러분이 첫 줄을 술술 쓸 수 있기를 바라요.