* 추가 하는 코드에 대해 명확히 이해하라 -> 코드를 추가할 때, 그 코드가 어떤 기능을 하는지 간단한 테스트라도 해라. 처음 시도, 사용하는 알고리즘이나 라이브러리 사용시에는 특히 주의하라. 그 기능을 명확히 이해하지 못하고 사용한다면, 그 것은 우연에 맡기는 프로그래밍을 하는 것이다. * 적은 조건을 만족해도 잘 돌아가는 코드를 작성해라 (복잡도를 줄여라) -> 다른 코드나 외부 데이터에 적게 영향 받는 코드를 만들어라. * 가정 하지 마라. 코드에서 직접 제약을 걸어라. -> 어떤 처리에 대한 클라이언트와의 규약 (예를 들면, 비번 방 지정은 방장만 할 수 있다던가, 게임 방에서만 가능하다던가 하는 가정)은 반드시 지켜질 수 있도록 코드에서 그 동작이 불가능 하도록 만들어라. * 자료구조에서 넣는..
C 프로그래머가 알아야 할 것들 - Chapter 7 어셈블리 김성훈 (sunghun84@nate.com) (1) 어셈블리 언어 C언어는 다른 언어들 보다 어셈블리에 근접한 언어입니다. 인라인 어셈블리가 가능한 데다가, 메모리를 직접 다루는 것이 가능하며, C언어는 어셈블리어와 1:1대응까진 아니지만 대응 되는 언어이기 때문입니다. C언어로 작성한 코드는 컴파일러를 통해서 어셈블리어와 대응되는 오브젝트 파일로 반드시 변환이 되어야 해당 코드가 실행 될 수 있습니다. 어셈블리 언어는 그 코드가 어떤 일을 할지를 추상적이 아니라, 직접적으로 보여줍니다. 논리상의 오류나, 수행 속도, 수행 과정에 대해 명확히 해준다는 점에서 직관적인 언어입니다. 어셈블리 언어를 사용하면 메모리에 대한 이해도도 높아집니다. 우..
C 프로그래머가 알아야 할 것들 - Chapter 6 자료 구조 김성훈 (sunghun84@nate.com) (1) 자료 구조란? 프로그램이 어떤 일을 할 때에는, 그 일을 하기 위해 필요한 데이터가 존재 합니다. 예를 들어, 비디오 대여점 관리 프로그램을 작성한다고 생각해 봅시다. 우선 비디오 정보들이 필요합니다. 비디오의 정보에는, 비디오에 담긴 미디어의 작품 명, 감독, 출연진 (혹은 성우) 등과, 비디오의 위치, 대여료, 대여기일 등의 정보를 포함합니다. 그리고, 회원 정보도 필요합니다. 회원 정보에는, 회원의 이름, 나이, 주소, 전화번호, 대여한 비디오 정보가 포함 될 것입니다. 이 정보들이 있어야만, 비디오 대여 관리를 프로그램으로 처리 할 수 있습니다. 이런 정보들을 어떻게 저장하고 관리 ..
C 프로그래머가 알아야 할 것들 - Chapter 5 메모리와 포인터 김성훈 (sunghun84@nate.com) (1) 메모리를 알자 우리가 계산을 할 때에 일반적으로 데이터와 연산자가 필요합니다. 예를 들어, 1 + 2 라는 식을 계산 하기 위해선, 1과 2라는 데이터가 필요하고, + 라는 연산자가 필요하죠. 우리가 노트에 계산을 할 때에는 계산 결과를 노트에 표기 합니다. 계산 결과를 기록해 두는 이유는 그 계산 결과를 가지고 다른 연산을 해야 하거나, 그 결과 자체가 의미를 갖기 때문입니다. 컴퓨터에서 계산된 결과를 위해서 어떻게 해야 할까요? 바로 변수에 저장하면 됩니다. int a = 1 + 2; 이렇게 하면, 1 + 2 의 결과가 변수 a에 저장 됩니다. 아쉽게도(?) 변수 a도 결국 어딘가..
C 프로그래머가 알아야 할 것들 - Chapter 4 프로그램 언어 김성훈 (sunghun84@nate.com) (1) 왜 문법을 배워야 하는가? 한국어를 할 줄 모르는 독일인과, 독일어를 할 줄 모르는 한국인과 대화가 가능할까요? 바디 랭귀지로 하면 되지 않느냐는 분도 계시겠지만 그것도 어느 정도 한계가 있기에, 제대로 된 의사소통은 불가능할겁니다. 컴퓨터는 0과 1 (2진수)밖에 인식하지 못한다고 배웠습니다. 컴퓨터에게 명령을 내릴 때, 00001110 01010101 이런 식으로 모든 명령을 내려야 한다면 프로그램을 만드는 데에 드는 시간이 막대할 것입니다. 그래서, 기계어에서는 16진수 (2진수를 4개씩 묶어서) 표현하고 있습니다. 00001110 01010101 -> 0x0E55 2진수일 때보다..
C 프로그래머가 알아야 할 것들 - Chapter 3 운영체제와 컴퓨터 원리 김성훈 (sunghun84@nate.com) (1) 운영체제란? 초기에 컴퓨터는 컴퓨터를 키자마자 프로그램이 담겨 있는 디스크를 삽입해야만 했습니다. 그리고 특별한 경우를 제외하고는 다른 프로그램 사용시에는 재 부팅 시켜야만 했습니다. 이 방법은 매우 불편했습니다. (비디오 게임기들은 이 방식을 채용하고 있는 경우가 많습니다) 그래서 유닉스, MS-DOS등의 운영체제가 나오게 됐습니다. (참고로 MDIR은 운영체제가 아닙니다. 인터페이스를 제공해주는 프로그램이죠) 각 운영체제하에 프로그램을 구동시킨 후, 프로그램 종료 시에는 그 운영체제로 돌아오게끔 하는 방식을 취한 것이죠. 이전에는 그래픽 카드나 프린터, 사운드 카드마다 출력..
C 프로그래머가 알아야 할 것들 - Chapter 2 비트의 법칙 김성훈 (sunghun84@nate.com) (1) 비트가 뭐지? 비트란 이진수(Binary Digit )의 약자로써 컴퓨터에서 제어 가능한 데이터의 최소단위입니다. 하지만, 컴퓨터에서 입 출력할 때 사용하는 최소 단위는 바이트죠. 둘 다 최소단위라는 건 알겠는데 정확한 차이가 뭐냐고요? 비트란 저번 강좌에서 배웠던 2진수 10 (10진수 2)을 2비트(2진수 2자리 수이기에)로 표현 가능하고 제어 가능하단 의미고, 바이트는 비트 8개가 모여서 구성된 것이 1바이트로, 파일이나 데이터 형의 최소단위로 쓰입니다. (2) 프로그래밍과 비트는 무슨 상관일까? 비트가 2진수를 의미한다는 건 알겠는데 도대체 프로그래밍에서 비트가 무슨 의미가 있는 ..
C 프로그래머가 알아야 할 것들 - Chapter 1 진법 김성훈 (sunghun84@nate.com) (1) 왜 진법에 대하여 배워야 하는가? 진법이란, 수를 세는 방법을 의미합니다. 수를 셀 때, 0부터 몇까지 세는지를 의미한다고 생각하시면 됩니다. 우리가 수를 셀 때, 0~9까지 세지요? 이 것을 10진법이라고 부릅니다. 시간에서 분, 초 등을 셀 때 쓰이는 0~59까지 세는 방법을 60진법이라고 합니다. 이와 달리 컴퓨터는 전류가 흐를 때(1)와, 아닐 때(0) 밖에 구분하지 못하기 때문에, 0과 1로써 수를 세는데 이를 2진법이라고 부릅니다. 게임과 메신저, 음악 재생과 같은 것들이 0과 1만으로 된다는 게 말이나 되냐며 못 믿으실 분들도 계실 텐데요, 이 것은 챕터2 비트의 법칙에서 자세히 설..
- Total
- Today
- Yesterday
- SDL
- perfmon
- c언어
- SQLite Spy
- TraceRoute
- ruby
- EzShortcut
- EasyExec
- Ruby on Rails
- CppSQLite
- 리버스 엔지니어링
- 디자인 패턴
- 게임개발포에버
- Rails
- ftp
- TDD
- NDC2013
- 게임데브포에버
- RoR
- 루비 온 레일즈
- 임백준
- MS-SQL
- 루비
- 멀티스레드
- 디버깅
- 엘키
- 조엘 온 소프트웨어
- svn
- 좋은 프로그래머
- 바로가기 프로그램
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |