생활코딩

egoing 님의 생활코딩 개론이란 글을 읽었다.

이 세상을 지배하는 것은 분명히 소프트웨어고, 우리가 새로운 이웃과 이웃하기 시작했다는 점은 변하지 않는다. 이 블로그의 방문자 중 10% 이상이 (검색엔진, RSS수집기와 같은) 로봇이고, 게중에는 천역덕스럽게 댓글이나 트랙백까지 걸고 가는 스팸로봇도 상당하다. 또 이들을 단속하는 필터링 로봇도 24시간 순찰중이다. 이른 바 The others의 시대에 살게 된 것이다. 싫건 좋건 우리는 이들을 이해해야 하고, 소통해야 한다. 이를 위한 제2 외국어가 바로 프로그래밍인 것이다. 그래서 사내에서 생활코딩 캠페인을 시작했다 1

본문 도중에 '코드 없이' 라는 말이 조금 신경쓰이긴 하는데, 생활코딩이라는 말이 매우 흥미롭다

비슷한 표현으로는 장혜식 님의 생활 속의 프로그래밍이라는 표현이나 김창준 님의 일상적 J 프로그래밍, 그냥 많이 쓰인다는 단어로는 영어권의 Life Hack도 있는데, 생활코딩이라는 말이 제일 와닿는 것 같다. 생활 속의 프로그래밍이나 일상적 프로그래밍은 기본적으로 '프로그래머'에 의한, 프로그래머를 위한 성향이 강한 반면에, 생활에는 그런 느낌이 없다. 그리고 Life Hack은 많은 부분이 '코딩'이 들어가지않는 이야기가 많다. 기본적으로는 카테고리의 차이인데, 생활코딩은 바로 그런 의미에서 비프로그래머를 위한 코딩을 통한 문제 해결이라는 느낌이 든다. 이런 면에서는 CS(컴퓨터 과학)도 SE(소트프웨어 공학)도 아니다. 라이프 핵이라는 단어도 그렇지만 좀 더 해킹에 가깝다. 내가 이해한 것과는 전혀 다른 의도로 말하신 걸지도 모르겠지만...

어쨌든 이런 것만 다루는 사이트 하나 만들어도 재미있을 것 같다. 생활코딩과 관련해서 생각나는 주제들.

    • 자바스크립트로 시작하는 프로그래밍 ( 자바스크립트 )
    • 그리스몽키와 함께하는 웹페이지 해킹 ( 자바스크립트, jquery, css, html )
    • sinatra로 만드는 홈페이지 ( ruby )
  • 매크로

    • 단축키 커스터마이징 ( 오토핫키 )
    • 게임 오토 프로그램 ( 오토핫키 )
  • 정보

    • 인터넷 사전 클립핑 ( ruby | python, webzip )
    • RSS 만들어 받아보기 ( ruby | python )
    • 만들면서 이해하는 스팸봇의 원리와 방어책 ( ruby | python )
    • 에로 이미지 자동수집기 ( perl )2
  • 통계

    • 엑셀과 프로그래밍 ( 엑셀, 비주얼 베이직 )
    • 직접 그려보면서 이해하는 주식 차트 ( 엑셀, R )
    • 직접 만들어보는 스타크래프트 랭킹 ( R )
    • 스덕을 위한 전적 분석 ( R )
    • 야구 매니아를 위한 sabermetrics ( R )
    • ggplot2로 배우는 그래프의 문법 ( R, ggplot2 )
  • 콘솔

    • 콘솔 환경의 이해 ( unix, shell, ruby, python )
    • 파이프와 유닉스 철학 ( unix, shell, pipe )
    • unix 三大보물 ( zsh, screen, emacs )
    • 패키지 관리자의 유혹 ( yum, cpan, cran, gem ...)
    • 윈도우 위에서 돌리는 리눅스 ( vmware, colinux, cygwin )
    • 해킹으로 다시 만난 iphone ( iphone, unix )
    • iphone으로 즐기는 괭이갈매기 울 적에 ( ihpone )
  • 텍스트

    • 정규표현식과 함께하는 텍스트 편집 ( regex, text editor, adobe indesign )
    • 마크다운으로 배우는 텍스트 문서 ( markdown, latex, mediawiki, moinmoin )
  • 기타

    • 라이브 코딩 ( ruby-processing )
    • robobuilder
    • Arduino
  • 리소스

소재들이 좀 현란할지도. 테마를 나눠보면 매크로, 텍스트, 통계, 정보가 제일 큰 주제들일 듯.

하나 같이 내가 좋아할 법한 주제들이다. 코딩이라는 데서는 역시 프로그래밍 언어가 있어야 된다. 비주얼 베이직(엑셀)이 어떻게 보면 제일 친근하고, 윈도우 환경에서라면 오토핫키도 빼놓을 수 없다. 웹브라우저에서는 javascript 이외엔 사용할 수 없고, 콘솔 환경으로 넘어가면 전통적으로 3대 스크립트 언어로 불려온 3p(perl, python, php)와 ruby를 빼놓을 순 없다. 일부에선 이 언어들을 웹 스크립트 언어로 이해하는데 이건 좀 아쉽다. 분명 웹 때문에 더 뜨긴 했지만, 이 언어들만큼 콘솔 환경을 유용하게 활용하는데 밀착되어있는 언어들은 없다. 진짜 문제라면 윈도우는 콘솔 환경이 실질적으로 금지된 환경이라는 점이지만. 워드프로세서에서는 잘 안 쓰지만 텍스트로 넘어가면 정규표현식은 정의다. 역으로 사실 윈도우 환경에서는 별로 써먹을 데가 없지만. 그 외에 통계 언어로는 역시 단연 벡터 기반의 R 그리고 좀 기묘하긴 하지만 역시 벡터 기반의 J도 재미있을 것 같다. R의 경우는 단순한 통계분석 뿐만이 아니라 그래프 생성에도 유능하고 그걸 위한 당장 쓸 수 있는 좋은 패키지들도 많이 마련되어있다.

여기에 자바가 끼어들 틈은 별로 없을 듯. 자바론 뭘 할 수 있을까? 움 뭐 다 할 수 있을 지도 모르지만, 정확히는 자바로 뭔가 할 필요가 있을까? C계열도 리버스 엔지니어링까지 가지 않는 한 필요가 없어보이는데, 리버스 엔지니어링은 이미 생활 코딩의 영역이 아닌 것 같다. 그런 부분은 가능한 한 오토핫키 선에서 해야한다. SE도 별로 중요하지 않아보이고. 자바가 압도적인 시장 비율을 차지하고 있는 걸 생각해보면 이 얘기는 꽤나 중요한 맥락을 함축하고 있다.

생활코딩은 써먹을 데가 없는 게 아니라, 배울 데가 없다.

오히려 여기선 자바스크립트나 php 발코딩의 미학을 보여주는 게 더 좋을지도 모른다. 실제로 홈페이지 열풍을 통해 프로그래밍과 전혀 상관없는 많은 사람들이 프로그래밍을 했다. 물론 그렇다고 첫번째에 올려놓은 '자바스크립트로 시작하는 프로그래밍'이 발코딩을 보여주는 주제는 아니다. 자바스크립트로 쉽게 배우는 하지만 제대로된 프로그래밍. 하지만 바로 그 제대로된 프로그래밍으로 유명한 자바스크립트 계의 요다(그랜드 마스터?) 더글러스 크록포드는 사악하다. 그가 말하는 건 전부 옳다는 의미에서...

그러니까 좀 더 필요한 건 발코딩이다. 게으르고 실용적인 맥락에서. 장기적으로는 프로그래머의 삼대덕목 게으름, 조급함, 오만함을 가질 필요가 있겠지만 발코딩하는 걸 두려워해서는 안 된다.3

랄까 누가 좀 저런 걸 알려주면 좋겠.....


  1. http://egoing.net/1311 

  2. perl은 이런 걸 위해서 만들어진 프로그래밍 언어.........? 

  3. 발코딩은 오만함을 위배하지만... 


Who am I?