멍청한 추상화 하지 마라.

C++이 일반화되면서 아주 바보같은 관행이 생겼는데 나는 이걸 ‘멍청한 추상화’라고 부른다. 소켓 프로그래밍을 처음 시작하면…열에 아홉 정도는 CSocket이란 클래스를 만든다. 18년전에 나도 그랬다. 18년전에 내가 짠 코드는 똥이었다. 그리고 그 시절이나 지금이나 소켓 프로그래밍 초짜들이 만드는 CSocket은 십중팔구 똥이다. 단순히 소켓 디스크립터를 랩핑하고 관련 함수를 몇개 넣은 이 클래스는 대개 block mode에 싱글스레드를 기준으로 만들어진다. … More 멍청한 추상화 하지 마라.

코드 가지고 철학하는 것들.

내가 코드 가지고 철학하는 놈들을 극혐하는 이유는 현재까지 그 예술짓거리를 하면서 빠르고, 메모리 적게 먹고, 버그없이 잘 돌아가는 코드를 잘 짜는 인간을 못봤기 때문이다. 나도 한때 운동하던 사람이고 그래서 전통무술에 대한 환상이 0이다. 온갖 똥폼을 다 잡는데 결국 붙어보면 많이 맞고 많이 때려본 놈이 강하다. 그 차이가 너무 압도적이다. 온갖 똥폼 잡고 나오지만 펀치 한방,로우킥 … More 코드 가지고 철학하는 것들.

명시적 종료의 필요성 #2

네이티브 코드 체계에선 메모리(일반적인 메모리 , COM객체,Windows HANDLE 등등) 누수 탐지 기능이 반드시 필요하다. 컴파일 타임에서 논리적으로 아무리 완벽한 체계를 제공한다고 해도 말이다. 최근 MS는 COM을 사용하는 예제에서 CComPtr 사용을 적극 권장하고 있다. C++/CX에선 명시적으로 CComPtr을 사용할 필요없이 ^객체가 스마트포인터를 내장하고 있고 UWP프로젝트가 아닌 경우, 예를 들어 DX12샘플같은 경우 CComPtr을 사용하고 있다. CComPtr뿐 아니라 컴파일러 … More 명시적 종료의 필요성 #2

최적화 무용론에 대한 반박

많은 프로그래머들이 2:8 이론을 들어 최적화된 코드를 작성할 필요가 없다고 주장하곤 한다. 극히 일부의 코드가 전체 성능하락의 주요 원인이라는 얘기다. 틀린 얘긴 아니다. 그러나 바꿔 얘기하면 80%의 코드가 최적화되어 있다면 20%의 성능하락 요인을 수정하지 않아도 된다는 뜻도 된다. 게다가 전체적인 코드의 최적화여부는 날 잡아서 하는 최적화에 달려있지 않다. 습관과 기초지식에 달려있다. 기초지식을 잘 습득하고 습관만 … More 최적화 무용론에 대한 반박

메모리 사용과 성능에 대한 잡설.

픽셀단위나 벅텍스 단위 억세스에선 명령어 한클럭 줄이는것도 상당히 중요하다. 이건 성능에 있어 결코 무시할 수 없는 요소이다. 이런것들을 제외하고 보면 전체적으로 성능을 떨어뜨리는 가장 큰 요인은 메모리 동적할당이다. 그러니까 힙으로부터 메모리를 할당받는 malloc,free,new,delete가 되겠다. 당연히 단편화를 줄이기 위해 힙사용을 줄이면 할당/해제 속도가 빨라진다. 미리 메모리를 pool로 잡아두고 쓰는쪽이 메모리 낭비가 심할것 같지만 경험적으로 보면 메모리 … More 메모리 사용과 성능에 대한 잡설.

Surface Ergonomic vs Natural Ergonomic 4000

Surface Ergonomic 키보드 쓰면서 backspace 눌렀는데 insert 눌리고, F9 눌렀는데 F10눌리면 역시 프로그래밍할때는 MS Natural Ergonomic 4000이 짱이란 생각이 든다. 일반키 타이핑은 괜찮은데 insert, delete, home,end, pgup,pgdn구역이 일반 키 구간과 너무 가까움. 그래서 \누르려다 delete누르고 backspace누르려다 insert누르는 일이 비일비재. 펑션키 배열이 한칸씩 기존 키보드에 비해 왼쪽으로 이동해 있음. 그래서 습관대로 F5키를 누르면 F6이 눌림. 브레이크 … More Surface Ergonomic vs Natural Ergonomic 4000

서버 프로그래머 = 서버에 컨텐츠를 얹는 프로그래머???

상용 네트워크 엔진이 보급되면서 네트워크 모르는 네트워크 프로그래머, 서버에서 필요한 기술 모르는 서버 프로그래머가 생겨났다. 그런데 이게 꼭 네트워크 엔진의 보급 때문은 아니다. 상용 네트워크 엔진의 보급이 늘기 전에도 사실 서버 프로그래머라는 직군에 좀 웃기는 현상이 일어나긴 했다. 전에도 언급했지만 한국 온라인 게임(MO,MMO)들의 네트워크/서버 소스코드 상당 수가 거의 몇 안되는 사람들 손에서 나왔다. 이게 처음 … More 서버 프로그래머 = 서버에 컨텐츠를 얹는 프로그래머???