Code Metaphor

Programming, Writing, Reading, Thoughts…

Readown: Mac용 Markdown 리더

심심해서 저번주부터 틈틈히 집에서 Cocoa 공부를 해봤다. Cocoa는 Mac OS X의 어플리케이션 개발 프레임워크다. Windows의 MFC 같은 거라고 보면 된다. 첫 연습 프로그램으로 뭐가 좋을까 하다가, 전부터 필요하다고 생각했던 Markdown 리더를 떠올렸다. 간단한 프로그램이지만 벌써 몇가지 기술을 습득할 수 있는 좋은 예제였다.

일주일밖에 안된 시간이었지만 꽤나 많은 것을 느낄 수 있는 기회였다.

  1. Objective-C는 생각보다 나쁜 언어는 아니다. 그렇지만 요즘 시대와 비교하면 “동적이고 생산성이 높다”는 것을 특징으로 삼기엔 민망한 정도다. C#과는 비교할만하다고 생각한다.

  2. 생산성을 올리는 데에는 언어보다 프레임워크가 중요하다. 다만 프레임워크는 언어의 특성에 강한 영향을 받을 뿐이다. Cocoa는 매우 훌륭하고 친절한 프레임워크다. 모든 것들이 직관적이다. Objective-C 뿐만 아니라, Cocoa 역시 Smalltalk의 영향을 강하게 받았다.

  3. 긴 메서드 이름들은 짜증이 났다. 다음 코드는 Objective-C + Cocoa로 특정 URL의 내용을 문자열로 받아오는 내용이다. 그 내용의 인코딩이 UTF-8이라고 가정하고 있다.

    NSString *string;
    NSURL *url;
    NSError **outError;
    
    url = [NSURL URLWithString: @"http://vlaah.com/"];
    string = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error: outError];
    

    사실 위 내용을 Python으로 옮기면 아래처럼 된다.

    import urlopen from urllib
    string = urlopen('http://vlaah.com/').read().decode('UTF-8')
    

    코드에 들어있는 식별자(identifier)들의 이름은 매우 중요하다. 그렇지만 더 중요한 것은 친절한 예제가 첨부되어 있는 문서다. 길 필요는 없고, 친절하기만 하면 된다. 실제 코드의 식별자는 문서를 읽은 사람이 그 내용을 떠올리는데 도움을 줄 정도면 충분하다.

  4. 처음에는 내가 쓰는 C 컨벤션—정확히 말하면 C++를 하다가 굳은 컨벤션—을 사용하다가, 그냥 Apple이 문서와 각종 Cocoa 사이트에서 예제에 쓰이는 컨벤션을 따랐다. 어차피 수많은 사람들이 사용하는 컨벤션이면 불편할 리는 없다. 컨벤션이 없는 것은 문제지만, 일단 있으면 그 문화에 적응하는 것이 편한 것 같다. 실제로 나는 개인 프로젝트의 PHP 코드들에서는 들여쓰기를 탭 한 칸으로 하지만, 회사의 PHP 코드에서는 스페이스 네 번을 사용하고, Ruby로 무언가를 할 때는 스페이스 두 칸을 사용한다.

아무튼 작성한 어플리케이션의 이름은 Readown으로 정했고, 아래 페이지에서 좀더 자세한 정보를 얻을 수 있다.

http://readown.googlecode.com/

약간 어설픈 아이콘은 후배 이흥섭 군이 만들어줬다.

Readown 화면

This entry was posted on April 13, 2008 at 11:34 PM. You can follow any responses to this entry through the RSS 2.0 feed. Both comments and pings are currently closed.

Comments are closed.

Powered by WordPress. Styled by Hong, MinHee. XML Feed, Comments XML Feed.