1. 잡설: 개발 후기
늘 느끼는 거지만 코딩 작업은 머리를 짜내고 멘탈을 갈아넣을수록, 그 투입한 input에 비례해서 output은 늘 좋게 나온다.
이런 식의 개발 작업 살생부를 만들어 놓고, list에서 체크 표시가 하나씩 늘어 가는 게 내 인생의 기쁨이었다. 그럼 내가 마치 무슨 암살자가 된 듯한 느낌이랄까. 해치운 아이템들은 체크 표시를 하고 목록에서 지운다.
이제 자꾸 살생부에 살생 대상 아이템이 추가되지는 않았으면 좋겠다. 나도 이제 다른 연구도 하고 연애도 하고 결혼도 좀 해야지? ㄲㄲ
테트리스에는 수직 작대기가 있고 퀘이크 3 Arena에는 레일건이 있으며, 카트라이더에는 니트로 부스터와 드리프트가 있다.
그렇다면 프로그래밍에서 그런 카타르시스와 중독성을 선사하는 요소가 무엇일까? 바로, 공통된 코드 패턴을 한 클래스나 함수로 뽑아내고, 여러 클래스들 중에서도 공통된 요소를 템플릿이나 기반 클래스로 뽑아낼 때가 아닐까 싶다.
같은 기능을 더 적은 시간과 메모리로 수행하는 방법을 찾아내는 것도 좋긴 하지만, 본인은 그런 성능 최적화보다도 복잡함에서 질서를 찾아낼 때가 더 즐겁다. 프로그래밍이라는 건 정말로 극도의 복잡도를 제어하는 지적 노동이기 때문이다.
예전에도 했던 말이 또 반복되는 듯하지만, 한글 입력 패러다임의 관점에서 봤을 때 세벌식은 한글 본연의 성능을 올리고 최적화하는 데 적합하다. 그 반면 두벌식은 직관적이지 못하기 때문에 자동화 처리를 위한 프로그래밍의 관점에서 도전적인 과제가 많다.
두벌식에서는 세벌식처럼 초성 글쇠는 반드시 초성으로, 종성 글쇠는 반드시 종성으로 일대일, 필요충분관계로 대응하는 게 아니다. 문맥에 따라서 종성 글쇠가 초성 역할을 할 수 있고, 공유 옵션을 사용하면 초성의 결합 규칙이 종성을 조합하는 데 쓰일 수 있다.
이런 요소들 하나하나가 입력 순서 재연 알고리즘이나 각종 특수글쇠 조작을 꽤 복잡하게 만든다.
현재 한글 입력 스택에서 "초성만 지워라, 종성만 남겨라" 같은 명령을 수행하는데 세벌식은 초중종 직관적으로 대응해서 테이블이 3개만 있으면 되는 게, 두벌식은 저런 추가적인 상황을 고려하느라 4개가 되고 여러 예외 처리가 또 추가된다. 그래도 두벌식도 초성부용종성 원리에 따라 엄연히 한글을 활용하는 방식 중 하나이고, 속도와 능률보다는 글쇠 수가 더 중요한 환경에서는 의미가 있으니, 이 역시 단군의 후손들이 보유한 지적 재산이다. 단지 세벌식을 적용할 필요가 없는 곳에서 2순위로 적용되어야 할 방식일 뿐이다.
이번 7.5 이후로도 후속 개발 작업은 또 지체없이 계속된다. 최소한 내년 초까지 거의 7.8~8.0 정도에 도달할 때까지는.
난 지금까지 남들 안 하는 짓만 골라서 하면서 살아 왔으며 이것을 가능하게 해 주는 것이 '자유'라고 굳게 믿는 사람이다. 나는 자유를 극도로 사랑한다. 내가 정치적으로 북한에 대해 매우 민감한 것도 이 때문이다. 다른 사람들은 어느 환경에서나 머리 잘 굴려서 알아서 적응 잘 하고 요직을 잘 찾아갈지 모르겠지만, 난 자유가 없는 곳에서는 1분 1초도 못 견딘다. “자유가 아니면 죽음을 달라”라는 말을 적극 이해한다.
2. 공지: 늘 최신 버전을 사용할 것을 권장
내 한글 입력기는 자동 업데이트 기능이 없다 보니..
내게 메일로 버그나 오동작 문의를 하는 사용자 중엔 나로서는 상상도 못 할 까마득한 구버전을 사용하고 있는 경우가 종종 있었다.
그 문제는 이미 옛날 옛적에 해결되어 있기 때문에 그냥 최신 버전 업데이트만 해도 저절로 없어지는 경우가 90% 이상까지는 아니지만 그래도 과반은 됐다.
지난 여름엔 무려 4년 가까이 전에 만들어진 골동품인 5.8 버전을 쓰시던 분을 7.4로, 6.x도 건너뛰고 가히 시간 워프를 시켜 드렸다.
나도 강제 자동 업데이트 같은 걸 무진장 귀찮아하는 타입이고, 구버전의 이미 있는 기능만을 만족하고 잘 쓰고 있는 사용자에게 새 버전을 강요할 생각은 전혀 없다.
하지만 구버전에서 명백하게 불만족스러운 문제가 있다면.. 그 경우라면 최신 버전을 살펴보려는 노력을 사용자가 먼저 해야 하지 않겠는가? ㅎㅎ
<날개셋> 한글 입력기는 버전이 올라가면서 뭐 "종성 두벌식", 초종 공유 낱자 결합 규칙, 사용자 정의 후보 데이터, 특수 도깨비불 알고리즘 등등
헤비 유저들만 사용하는 안드로메다급의 복잡한 고급 기능만 추가되는 게 아니라.. 당장 사용자에게 와닿는 외부 모듈의 안정성 같은 것도 꾸준히 눈에 띌 정도로 개선되고 있다.
그렇기 때문에 굳이 모든 기능을 사용하지 않는 사용자라도 어지간해서는 반드시 최신 버전을 써야만 굳이 겪을 필요가 없는 버그 때문에 골치 아파할 일이 줄어든다.
그런데.. IME는 간단히 EXE 하나만 종료한다고 바로 구동을 중지하고 쉽게 업데이트가 가능한 물건이 아니며, 여러 모로 기술적으로 번거로운 요소가 있어서.. 내 프로그램은 부득이 자동 업데이트 같은 건 제공하지 않고 있다. 사용자가 스스로 내 홈페이지를 찾아와서 새 버전을 설치해야 한다.
3. 잡설: 날개셋 한글 입력기와 관련된 팩트들
이 프로그램의 연구 개발과 관련된 활동은 개발자의 대학교 학· 석사 시절에 일부 학점과 졸업 논문을 책임졌다. 그리고 정보 올림피아드를 포함한 소프트웨어 공모전 입상은 덤.
2014년 8월 현재 작업 중인 프로그램의 전체 코드는 6만 7천 줄 정도이지만, 개발자의 특이한 코딩 스타일을 감안했을 때 실제로는 10만 줄을 훨씬 넘는 분량일 것이라 추측되고 있다. (한 줄에 여러 statement를 100칼럼씩 꼭꼭 채워 집어넣기)
이 프로그램이 취급하는 모든 숫자들은 정수이다. 부동소수점 연산은 전혀 존재하지 않는다.
이 프로그램을 구성하는 모든 기계어 코드들은 100% 1인 자작이다. 내부에 타인의 작업물이나 오픈소스 프로젝트 같은 걸 인용한 것은 전혀 없다. 수식 해석, XML 파싱 등등도 전부 자체 제작이다.
이 프로그램은 웹브라우저조차 없는 Windows 95 / NT4 (물론 32비트 에디션 기준) 초창기 판에서도 바로 실행과 사용이 가능할 정도로 특수하게 빌드되었으며 API 최적화가 정밀하게 돼 있다.
한글이 굳이 최신판 컴퓨터과 OS에서야 활용 가능할 정도로 무겁고 복잡한 문자가 아니기 때문에, 이를 활용하는 프로그램도 최대한 가볍게 만들어졌다. 특히 편집기는 마치 기계식 타자기를 컴퓨터로 옮겨 놓은 듯한 아주 작고 가벼운 프로그램이 컨셉이다.
그러면서도 64비트 Windows 7/8이 제공하는 최신 문자 입력 프로토콜도 완벽하게 지원한다.
이 프로그램의 개발 목표는 한글로 무슨 공허한 마술을 부리거나 세계 정복을 하는 게 아니라, 그냥 지금 한글로 당연히 할 수 있는 모든 기술적 가능성을 열어 놓는 것이다. 그 당연한 일이 지금까지 별로 가능하지 않았기 때문에..;;
이 프로그램은 국내에서는 주로 (1) 세벌식 관련 고급 기능, (2) Shift+Space로 한영 전환, (3) 옛한글 처리 (4) 한글과 여타 외국/특수 문자 병행 입력의 목적으로 사용되나, 외국에서는 오로지 (5) 한글 로마자 입력 방식 때문에 입에서 입으로 소문이 퍼지며 사용되고 있다.
Posted by 사무엘