노무현 대통령 배너

오늘의 잡생각 – 프로그래머를 읽고 씁니다:

까놓고 말해서 블로그에서 진정한 OOP가 어쩌니, SOLID가 저쩌니, 패턴이 어떠니, Separation of Concern이 저떠니하고 추상적인 썰이나 풀고 놀면서, 용어가 중요하니, 책을 쓰니마니 하는 선수들을 보면 싹수가 노란것처럼 보이는데…

딱히 저를 두고 하신 말씀이야 아니겠지만(저는 듣보잡이니깐) 제가 마침 요즘 블로그에 위와 같은 얘기들을 자주 쓰던 참이라 좀 찔리지 말입니다. 그래서 나름의 변명해명을 해보려고 합니다.

프로그래밍을 배웠으면 일단 소프트웨어를 만들어 보기는 해야겠죠. 혹은 다른 누군가에게 프로그래밍 언어를 가르칠 수도 있겠습니다. 하지만 프로그래밍 언어를 다른 재미난 용도로 쓸 수도 있습니다. 프로그래밍 언어로 사고(thinking)도 합니다.

프로그래밍 언어를 사고의 도구로 쓰겠다는 생각은 물론 제 창작물이 아닙니다. 이를테면, SICP(Structure and Interpretation of Computer Programms)는 이러한 생각을 염두에 두고 쓰여졌습니다. 이 책의 저자들은 프로그래밍을 절차적 인식론(procedural epistemology)으로 취급합니다. 자세한 인용은 Programming language as a tool of thought 페이지를 참고하세요. 김창준님도 예전에 비슷한 생각을 잠깐 언급한 적이 있죠.

남 얘기 말고 제 얘기를 해보자면, 저는 최근 1년 가까이 프로그래밍을 안하고 있습니다. 그 대신 기획을 하고 있는데, 프로그래밍을 하면서 몸에 익힌 다양한 사고 방식으로부터 많은 도움을 받고 있고, 이러한 지식을 기획에 활용하기 위해 의도적으로 연결점을 찾는 노력을 하고 있는데 (자기가 한 일을 자기가 판단하는게 좀 웃기긴 하지만) 여러가지 성과가 있다고 생각합니다. 일하면서 느끼는 바를 조금씩 정리하고 있는데, 언젠가 기회가 되면 하나씩 정리해서 블로그에 올릴 생각입니다. (항상 하는 말이지만, 누군가에게는 도움이 되겠죠)

정리하자면 이렇습니다.

프로그래밍 혹은 프로그래밍 언어를 보는 입장은 사람마다 다양할 수 있습니다. 각자의 입장에 따라 무엇을 중요한 성과로 볼 것인지가 달라지겠죠. 아주 거대한 소프트웨어를 만들어서 돈을 많이 버는 것을 중요한 성과로 생각할 수도 있는 것이고, 기술적으로 별 볼일 없는 아주 작은 소프트웨어(이를테면 Perl로 몇 줄 끄적거린 오리지널 위키)이더라도 이를 통해 사회에 지대한 공헌을 했으면(이를테면 위키피디아의 탄생) 이를 중요한 성과로 생각할 수도 있는 것이죠.

다양한 입장을 서로 존중해주면 좋겠습니다.

PS: 요즘은 Masterminds of Programming이라는 책을 읽고 있습니다. 다양한 언어의 설계자들과 인터뷰한 내용을 모아놓은 책인데, 그야말로 프로그래밍 언어를 보는 엄청나게 다양한 입장들의 향연입니다 :-) 매 페이지마다 떡밥이 주렁주렁.

Trackback

http://alankang.tistory.com/trackback/252 관련글 쓰기

Comments

  1. 곰순이 at 2009/06/30 14:19  댓글주소  수정/삭제  댓글쓰기

    얼~~

  2. BlogIcon nokarma at 2009/07/01 16:17  댓글주소  수정/삭제  댓글쓰기

    님 보고 한 소리는 아니었고, 아카데믹한쪽의 가치를 부정할 생각은 없고...

    인터넷 보다보면 뭔 소린지도, 어디다 어떻게 적용하는지도 잘 모르는것 같고, 그저 문자를 화두로 삼고 노는 선수들이 의외로 많은것 같아서 해 본 소립니다.
    사례 드는걸 보면 대략 감이 오죠.

    • SE전공에개발15년차 2009/07/02 15:46  댓글주소  수정/삭제

      "아카데믹한쪽의 가치를 부정할 생각은 없고"라고 하셨는데(with a condescending tone), "진정한 OOP가 어쩌니, SOLID가 저쩌니, 패턴이 어떠니, Separation of Concern이 저떠니"를 아카데믹한 쪽이라고 보시는 건지요? 이상하네요. SOLID나 패턴은 되려 아카데미아에서는 아카데믹하다고 쳐주질 않습니다. 현장에서 나온 것들이죠. SoC는 파르나스가 유행시킨 개념인데, SE에서는 산업계에 가장 큰 영향을 끼친 페이퍼 중 하나로 쳐줍니다.

    • BlogIcon nokarma 2009/07/03 02:05  댓글주소  수정/삭제

      블로그 주인장이 언급한 SICP쪽 얘기한겁니다.

  3. BlogIcon 최재훈 at 2009/07/02 20:16  댓글주소  수정/삭제  댓글쓰기

    "SE전공에개발15년차"님 말씀대로 그리 학구적이라 치기 힘든 주제들 아닌가요? 한때 학구적인 주제였던 것도 지금 와선 좋은 연구꺼리는 아닐텐데......

    그리고 원래 글에선 마틴 파울러나 켄트 벡 등을 싸잡아 말씀하시던데, 적어도 제가 아는 한에선 마틴 파울러가 제안한 개념 중에는 현실에서 그 가치를 인정 받은 게 많습니다. 그냥 교육이나 시키며 먹고 사는 사람이 기술 리더로 수년간 일하며 회사를 키워놓진 못할 겁니다.

    • BlogIcon nokarma 2009/07/03 02:10  댓글주소  수정/삭제

      대략 교육, 컨설팅, SI로 먹고 사는것 같던데...
      거기서 만든 소프트웨어가 뭐가 있나요?
      셀레니움?

  1. alankang at

    댓글을 남겨주세요. 감사합니다. :-)

IF문 안쓰기 캠페인

얼마 전에 OOP란 조건문(if)을 줄이는 것이라는 글을 썼는데요, 그 이후로 몇몇 분들이 직/간접적으로(Google Reader의 공유 기능 혹은 이메일) 재미있는 사이트를 하나 알려주셨습니다. 바로 Anti-IF Compaign 입니다. IF를 쓰지 말고 서브타입 다형성을 쓰자는 캠페인입니다. 일부 페이지에 적힌 날짜를 보니 올해 4월 쯤 만들어진 것 같습니다.

캠페인 설명(what is the anti-if compaign) 부분을 대충 요약하자면: IF-반대 캠페인의 목적은 객체지향 패러다임에 대한 의식을 고양하기 위한 것이며, 이를 통해 더 좋은 설계(flexibility, comprehensibility, testability, ability to evolve)를 할 수 있도록 하기 위함이라고 하는군요.

IF를 객체지향적 코드로 대체하는 예시도 제공하고 있는데 뭐 그냥 전형적인 replace-conditional-with-polymorphism 사례입니다.

캠페인에 참여하고 싶은 사람은 사이트에 서명을 하고 본인의 홈페이지에 배너를 걸어달라고 하는데(Kent Beck 횽아가 1등으로 서명을 했군요 ㅋ), 글쎄요... 취지는 좋으나 이름을 잘못지은 캠페인의 또다른 사례(비슷한 사례로는 개발자 좀 살려주세요 캠페인이 있죠. 이건 그래도 취지에 심하게 공감하기 때문에 배너를 달긴 달았습니다)를 보는 것 같아서 거시기 합니다.

저작자 표시

Trackback

http://alankang.tistory.com/trackback/251 관련글 쓰기

Comments

  1. BlogIcon object at 2009/06/29 13:06  댓글주소  수정/삭제  댓글쓰기

    글 쓰신 분께서는 제가 드리는 말씀을 이미 잘 알고 계시리라 믿는데, 초보자분들에겐 약간 오해의 소지가 있어 보입니다. if문을 '줄인다' 혹은 '없앤다'라는 표현보다는, 전통적인 if/switch 같은 분기문을 다형성으로 '대체'하는 것이 더 정확한 표현입니다. 프로그램이 실행 시간에 동적으로 분기한다는 속성 자체는 알고리즘의 변화 없이는 없앨 수는 없겠죠. 다만 그 표현 방법이 if냐 아니면 다형성이냐라는 문제입니다. 프로그램 코드를 실행하는 프로세서 입장에서는 솔직히 큰 차이는 없겠죠 :) (오히려 성능이라는 관점에서는 가상함수 쪽이 보통 더 나쁩니다)

    • BlogIcon alankang 2009/06/29 18:07  댓글주소  수정/삭제

      동의합니다. if/switch/polymorphism은 모두 구조적프로그래밍정리(structured programming theorem)에서 말하는 selection을 나타내기 위한 수단들이죠.

      http://alankang.tistory.com/249 이 글에 이미 "제거 혹은 대체"라고 명확히 표현되어 있고, 설명도 그런 식으로 되어 있으니 제목만 읽고서 다 읽었다고 착각하는 사람이 아니라면 오해가 없을 것으로 봅니다. (그런데 생각보다 제목만 읽는 사람들이 많은 모양 ㄷㄷㄷ)

      또 한편으로는 "GOTO를 없애자"라는 논의도 정확히 동일한 이유에서 사실은 "GOTO를 대체하자"로 표현되어야 할텐데 이에 대해서는 별 다른 얘기가 없는 것을 보면 아마도 if와 polymorphism을 동일하게 취급할 수 있다는 생각 자체에 익숙하지 않은 것일 수도 있겠다는 생각이 듭니다.

  2. BlogIcon moova at 2009/06/29 22:35  댓글주소  수정/삭제  댓글쓰기

    IF문 안쓰기 캠페인 -- 심하게 공감합니다.

  1. alankang at

    댓글을 남겨주세요. 감사합니다. :-)

< Newer     Older >