나머지를 구하는 연산이다. 즉,
일 때,
이 된다.
bool is_odd(int n) {
return n % 2 == 1;
}
제대로 구현한 걸까?
새로운 언어를 배우고 있다. 바로 클로저(clojure). 2년 정도 꾸준히 공부해 볼 생각이다. 일 년에 새로운 언어 하나는 아무리 생각해봐도 무리. 그렇게 말한 아자씨들은 지금 실천하고 있을까?
그래서 대충 보고 묵혀놨던 프로그래밍 클로저를 최근에 다 봤다. 물론 최대한 코드를 많이 짜면서 책을 읽었다. github에 hello-clojure 프로젝트를 만들고 책에 나온 내용에 대한 unit test 코드를 짰다. 이제 조그만 장난감 프로젝트를 시작할 차례다. 현업에서 사용 안 하는 언어기 때문에 필수.
장난감 프로젝트를 하기 전 예열이 필요했다. 아직 클로저가 많이 낯설기도 하고. 심시티를 하려고 점심시간을 비워놨건만 서버가 개판이라서 점심시간에 할 놀이도 필요했고. 그래. 이럴 땐, 프로젝트 오일러 문제가 딱이지. 그러던 차에 4clojure 사이트를 알게 됐다.

컴퓨터 프로그램의 구조와 해석(SICP), 해커와 화가 책을 통해 Lisp에 대한 빠심을 계속 충전해왔다. 이제 그 막연한 빠심을 실체화해야 할 시기.
표현력이 강한 언어를 배우고 싶었다. 그래서 찍어 놨던 언어가 바로 Lisp. 제대로 공부하고 싶었으나 실용성 때문에 망설였다. 분명 언어와 그 철학을 배우면서 얻는 것도 많겠지만, 무엇보다 필요할 때 적극 활용할 수 있는 언어를 원했다. 그러던 중에 발견한 클로저. JVM 기반 언어다. Lisp dialect다. 이쯤 되면 망설일 이유가 없다.
C#을 다시 쓸 일이 생겼다. 주력으로 계속 안 쓰니깐 까먹게 된다. 그래서 다시 봤던 책을 보려고 했는데, 이런 생각이 들었다.
C# in Depth처럼 버전별 기능 정리를 하면 어떨까?
그래서 github에 csharp-features 프로젝트를 만들었다. 2.0에서 4.0까지 정리. unit test를 사용해서 피처를 확인했다. vs unit test 괜찮네. mock이 없는 거 빼고는 마음에 든다. 이것 좀 기본으로 넣어주지.
lua를 배울 때 project euler를 풀었는데, 이 방법도 괜찮다. 하지만 script 언어로 먼저 문제를 풀어봐서 그런지, C#으로는 풀 맛이 안 생기더라. 나중에 ruby를 배울 때, 다시 풀어볼 생각이다.

Java를 사용할 일이 있어서 고른 책. 이 책을 많이 추천하더라. 번역이 나쁘단 얘기가 있어서 원서로 구입. 중고장터에 싸게 한 권이 나왔길래 잽싸게 주문했다.
언어에 대해 이렇게 얘기할 게 많은가? 책이 1,500페이지야. 정말 구석구석 꼼꼼히 설명한다.
Lua답게 쓴다는 것은 무엇인가? Programming in Lua를 보면서 계속 머릿속에 맴돌았던 생각이다. 문법만을 익히는 건 언어를 배우는 게 아니다. 사실 이러면 1년에 새로운 언어 한 개를 배우는 것쯤이야 아무 일도 아니다. 하지만 그렇게 간단한 일이 아니지.

읽기를 잘했다. 큰 수확은 두 개. 첫째, Lua 장점을 살리는 방법에 대해 배울 수 있었다. 둘째, 언어 설계자는 왜 이런 결정을 했을까? 이런 질문을 하게 되고 내 나름대로 추측도 하게 됐다. 내 추측이 맞던 틀리든 별 상관은 없어. 이런 과정에서 언어에 대한 이해가 더 깊어지면 그걸로 충분한 거다
2판까지 나왔는데, 난 온라인으로 공개된 1판을 봤다.
wiki에 정리 - http://ohyecloudy.com/doku.php?id=public:lua

윈도우 하부구조를 알려주는 책. 프로세스, 스레드, 동기화 오브젝트, 메모리 관리, DLL, IOCP 등을 자세히 다룬다.
추천을 많이 하던데, 그런 추천을 받을만한 책이다. 주옥같은 책. '주옥같은'을 빠르게 읽으면 곤란. 뭐하나 떨어지는 내용이 없다. 그 중 메모리 관리 챕터가 가장 좋았다. 안 그래도 이쪽을 좀 자세히 봐야지 하고 있었는데, 딱 맞아떨어졌다.
정말 윈도우 지식이 부족했구나. 책에서 정말 많이 배웠다.
아꿈사에서 스터디로 진행했고 난 '4장 프로세스'를 발표했다.
글 주소는 http://www.viva64.com/en/l/
64비트 포팅 – 32비트 포인터들이여 안녕에서 소개한 20 issues of porting C++ code on the 64-bit platform보다 더 자세하게 설명한다.
설명도 자세하고 좋아 도움을 많이 받았다. 똑바로 일하라 (Rework)에서 다른 사람을 가르치는 걸 좋은 마케팅 방법으로 소개한다. 정말 그런 것 같다. 보고 있자니 PVS-Studio가 좋아져.
64bit 마이크로프로세서 아키텍처로는 IA64와 Intel 64가 유명. 당연히 서로 호환은 안 되고 담쌓고 지냄.
x86-64, AA-64, Hammer Architecture, AMD64, Yamhill Technology, EM64T, IA-32e, Intel 64, x64. 이거 다 같은 의미. 뭐 조금씩 다르거나 이렇게 된 역사나 이유가 있겠지만, 관심 없다. 귀찮아.
x86-64 아키텍처 주요 장점. x86 하위 호환성도 갖췄어요~
오예~ Win64에서는 호출규약(calling convention)이 하나밖에 없다. Win32에서는 많았지. __stdcall, __cdecl, __fastcal, ... 하지만 이거 때문에 32bit, 64bit 코드를 못 섞어 쓴다.