Media Log


좋은 프로그래머가 되려면 컴퓨터가 명령어를 실행시키는 데 걸리는 시간, 메모리에서 데이터를 가져오는 데 걸리는 시간(캐시 히트 또는 미스가 날 때를 각각), 디스크에서 데이터를 읽어오거나 탐색하는 데 걸리는 시간을 잘 알고 있어야 한다.
그 답은 아래 표에 나와있다. (출처 http://norvig.com/21-days.html#answers)

execute typical instruction

1/1,000,000,000 sec = 1 nanosec

fetch from L1 cache memory

0.5 nanosec

branch misprediction

5 nanosec

fetch from L2 cache memory

7 nanosec

Mutex lock/unlock

25 nanosec

fetch from main memory

100 nanosec

send 2K bytes over 1Gbps network

20,000 nanosec

read 1MB sequentially from memory

250,000 nanosec

fetch from new disk location (seek)

8,000,000 nanosec

read 1MB sequentially from disk

20,000,000 nanosec

send packet US to Europe and back

150 milliseconds = 150,000,000 nanosec


나는 도대체 나노초가 어느 정도인지 감도 잘 오지 않는다. 그래도 뭐 외우라면 외워야지.
저작자 표시 비영리 동일 조건 변경 허락
신고
  1. 초보 at 2012.03.25 11:46 신고 [edit/del]

    락 거는 게 메모리 접근 보다 빠르다는게 놀랍네요.
    저는 매우 느릴거라고 생각했는데...

    Reply
    • Favicon of http://www.benjaminlog.com BlogIcon 김재호 at 2012.03.26 12:07 신고 [edit/del]

      Mutex lock이 뭘 말하는건지 잘 모르겠지만 뮤텍스 커널 오브젝트를 생성하고 획득한다던지 하는 내용은 아닌 것 같습니다. CPU가 제공하는 LOCK 명령어를 저렇게 쓴 건 아닐까 싶네요.

submit

그는 결코 틀리는 법이 없어.
자신이 만났던 가장 위대한 해커이자 비아웹의 절친한 동료였던 로버트 모리스를 보고 하던 말.
저작자 표시 비영리 동일 조건 변경 허락
신고

submit
조엘 온 소프트웨어 - 10점
조엘 스폴스키 지음, 박재호.이해영 옮김/에이콘출판
2006년도에 이 책을 읽은 적이 있다. 사실 나는 그 때 조엘을 마이크로소프트에서 잠깐 일했던 평범한 엔지니어 정도로 알고 있어서 그랬는지 몰라도 이 책에서 별로 감동을 받지 못했다. 지금은 조엘이 얼마나 똑똑하고 대단한 사람인지 잘 아는데다가 얼마전에 레이몬드 첸의 블로그에서 링크된 조엘의 추상화의 함정에 대한 글을 따라가서 읽다가 예전에 이 책을 너무 대충 읽은 것이 아닌가하는 생각이 들어 다시 한번 읽기 시작했다.

책을 몇 페이지 읽은 순간부터 정말 그랬다는 것을 알았다. 당시에 나는 조엘의 프로그래밍과 소프트웨어 관리에 관한 철학, 농담 따먹기들을 이해하기에는 너무 햇병아리였다. 이번에 다시 읽을 때는 또 놓치고 지나가는 내용이 있을까봐 아주 주의 깊게 읽었다. 언젠가 조엘의 책 4권 중에 조엘이 엄선한 블로그 베스트 29선이 가장 재밌었다고 말한 적이 있는데 이제 그 말을 바꿔야겠다. 1등은 두말할 것도 없이 오리지날 조엘 온 소프트웨어라고 말하고 싶다.

이 책에 나오는 내용들은 10년쯤 전에 쓰여졌는데 모든 좋은 책들이 그렇지만 여전히 그 내용이 유효하다. 오히려 지금 다시 읽어보니 더욱 재미있는 것 같다. 어떤 기술들은 망한다 어떤 회사들은 망한다 했는데 지금 와서 보니 대부분 맞아 떨어졌으니 어찌 재미가 없겠는가.

조엘의 공격적인 성향에 대해서는 뭐라고 해야할지 모르겠다. 실명을 거론하면서 바보라고 말하는 것을 서슴치 않는데 상대방들은 얼마나 기분이 나쁠까. 그 바보들 중에는 진짜 stupid 들도 있겠지만 켄트 백이나 에릭 레이몬드 같은 유명하고 실력있는 해커들도 있다. 1,2년 전 쯤 언젠가는 조엘이 스택오버플로 팟캐스트에서 TDD 욕을 신나게 하다가 정말 켄트 백하고 심하게 싸움이 붙었던 적도 있다. 이런 성향을 좋다고 할 수는 없지만 이런 것들이 그의 책을 읽는 독자들을 더욱 즐겁게 해줬다는 것은 분명하다. 싸움 구경만큼 재밌는게 없다는 말이 있지 않는가.
저작자 표시 비영리 동일 조건 변경 허락
신고
  1. 후니 at 2012.02.12 22:29 신고 [edit/del]

    조엘이 그렇게 뛰어난 사람이었나요? ㅎ 재호님 글을 읽고나니 다시 한번 보고 싶어지네요 ^_^

    Reply
  2. Favicon of http://blog.naver.com/empty_wagon BlogIcon 주의사신 at 2012.05.14 09:07 신고 [edit/del]

    그 책에 "차세대 Windows API는 HTML입니다"라는 내용이 있는데, 처음 읽을 때 설마 그럴라고 하면서 읽었지만, 지금 Windows 8에 HTML5로 앱 개발이 가능한 세상이 되어서 참 놀랐습니다...

    사무엘님 블로그 타고 왔습니다. 반갑습니다.

    Reply

submit

그가 쓴 해커가 되는 방법이라는 글에서, 훌륭한 프로그래머가 되려면 얼마나 걸리냐는 질문에
얼마나 재능이 있고 열심히 공부하는지에 따라서 다르다. 만약 충분히 노력한다면 1년 반에서 2년 정도 사이에는 꽤 훌륭한 수준의 기술을 갖게 될 수 있다. 하지만 그게 끝이라고 생각해선 안된다. 훌륭한 프로그래머가 되기 위해서는 10년 정도가 걸린다.
만약 진정한 해커가 되고 싶다면 끊임없이 학습하고 기술을 다듬는데에 남은 인생 모두를 투자해야 한다.

저작자 표시 비영리 동일 조건 변경 허락
신고

submit


개발자들은 스타일에 관한 이야기를 하는 것을 좋아합니다. 이 문제는 마치 "무엇이 진정한 하나의 에디터일까"에 대한 이야기처럼 자주 입에 오르내립니다. 마치 이견이 있는 것처럼 말이죠. 답은 이맥스입니다. - Effective STL에서 컨테이너들의 범위 멤버 함수를 사용하는 것은 단일 요소 멤버 함수를 사용하는 것보다 모든 면에서 좋기 때문에 이견이 있을 수가 없다는 것을 설명하면서.
나는 비록 Vim을 더 좋아하지만 스캇 마이어스의 이 말을 듣고 이맥스를 배우고 싶다는 욕구가 미친듯이 몰려왔었던 때가 있었다. 비록 실패로 끝나고 말았지만.
저작자 표시 비영리 동일 조건 변경 허락
신고

submit

앤드류 타넨바움이 그에게 유닉스를 다시 만들 수 있다면 무엇을 다르게 만들고 싶으냐고 질문하자
creat를 create로 바꾸고 싶다.
책을 보면서 너무 웃기긴 했는데 한참 웃다가 무슨 뜻일까 곰곰히 생각을 해봤다.
유닉스 설계는 지금 다시 봐도 세련되어서 딱히 바꾸고 싶은 것이 없다는 뜻일까, 아니면 10년이 넘는 시간이 지나도록 creat라는 작명이 다른 결정들을 다 제쳐두고 후회할만큼 계속 가슴을 후벼파서 한 말일까.

아무래도 후자라고 생각한다.
저작자 표시 비영리 동일 조건 변경 허락
신고
  1. Favicon of http://barosl.com/ BlogIcon 랜덤여신 at 2011.12.19 00:29 신고 [edit/del]

    엌ㅋㅋ 전 creat가 특이해서 괜찮던데 말이죠. 이왕 굳어진 것 한 글자라도 절약할 수 있으니 더욱 좋고요. 아버지의 생각은 좀 달랐군요.

    Reply
  2. Favicon of http://talkprogram.tistory.com BlogIcon 로로님 at 2012.01.17 00:19 신고 [edit/del]

    ㅋㅋㅋㅋㅋㅋㅋ뿜엇네요 ㅋㅋㅋ

    Reply

submit


나는 TeX의 마지막 버그를 1985년 11월 27일 발견해서 제거했다고 믿는다. 그러나 아직도 코드 내에 약간의 버그라도 있다면 그것을 처음으로 발견해서 알려준 사람에게는 기꺼이 20.48 달러를 드리겠다. 이것은 이전 금액의 두 배이다. 나는 이 상금을 매년 두 배로 늘릴 계획이다. 나는 정말 자신이 있다.

저작자 표시 비영리 동일 조건 변경 허락
신고
  1. 크누스형님 at 2011.12.05 17:22 신고 [edit/del]

    캬아 정말 대단한 자심감이네요ㅋ 존경스럽습니다

    Reply

submit


훌륭한 프로그램을 짜려면 똑똑한 머리, 감각적인 눈, 그리고 묵직한 엉덩이가 있어야 한다. 이 규칙들은 눈과 머리만으로는 결코 이해할 수 없다. 직접 부딪혀 봐야 비로소 몸에 스며드는 것을 느낄 수 있을 것이다. - TCPL 특별판 67 페이지에서

저작자 표시 비영리 동일 조건 변경 허락
신고
  1. fullc0de at 2011.12.20 23:23 신고 [edit/del]

    오~ 이말 정말 와닿네요.. ㅎㅎ

    Reply

submit



그 해 여름 나는 단 두가지 일만 했다. '아무것도 하지 않는다.'와 '719페이지 분량의 '운영체제:디자인 및 실행'을 읽는다.' - 리눅스 그냥 재미로 에서
저작자 표시 비영리 동일 조건 변경 허락
신고
  1. kwon at 2011.12.05 20:50 신고 [edit/del]

    새로운 카테고리가 생겼네요~~~
    단 두가지만 했다니... 멋지네요.. 부럽고 존경스러운 토발즈씨(?)~~

    Reply

submit