어떻게 우수한 C 프로그래머 가 됩 니까?

문제 의 제기
시간 이 지나 면 나 는 프로그래머 들 이 보 내 는 이메일 을 받는다. 그들 은 나 에 게 어떤 프로 그래 밍 언어 로 자신의 게임 을 만 들 었 는 지, 그리고 내 가 이런 프로 그래 밍 언어 를 어떻게 배 웠 는 지 물 을 것 이다.그래서 나 는 이 블 로그 에 C 언어 와 관련 된 가장 좋 은 도 서 를 열거 하면 많은 사람들 이 도움 이 될 것 이 라 고 생각한다.다른 우수한 도 서 를 알 고 있다 면 메 일 을 보 내 거나 댓 글 창 에 직접 알려 주세요.
문제 의 해답.
나 는 이전의 블 로그 에서 이미 언급 한 적 이 있다. 지금까지 내 가 작성 한 모든 상업 3D 엔진 의 95% 는 C89 (표준 C 또는 ANSI C 라 고도 부른다) 이다.내 가 C99 가 아 닌 C89 를 선택 한 이 유 는 일부 컴 파일 러 들 이 여전히 C99 기준 을 완벽 하 게 지원 하지 못 하기 때문이다.그리고 첫날 부터 저 는 게임 을 iOS, Windows, Xbox 360 플랫폼 에서 모두 컴 파일 할 수 있 도록 강제 적 으로 규 정 했 습 니 다.제 가 선택 한 컴 파일 플랫폼 에 따 르 면 나머지 5% 의 코드 는 Objective - C (iOS) 나 C + + (Windows, Mac OS X) 입 니 다. 이것 은 엔진 을 원생 의 입 출력 장치 에 연결 하기 위 한 것 입 니 다.C 를 선택 할 지 C + + 를 선택 할 지 생각 지도 못 한 이 주 제 는 reddit 에서 큰 논란 을 일 으 켰 다.내 가 C 를 선택 한 두 가지 진짜 이 유 는:
● 나 는 엔진 을 쓸 때 C + + 에 대해 잘 알 지 못 한다.플랫폼 자원 이 매우 제한 되 어 있 습 니 다 (아이 폰 2G). 그리고 저 는 제 도구 (프로 그래 밍 언어) 에 대해 잘 알 아야 게임 이 초당 60 프레임 의 속도 에 이 를 수 있다 는 것 을 알 고 있 습 니 다.
● 저 는 id Software (유명한 게임 제작 사, Doom 시리즈, Quake 시 리 즈 는 그의 대표작 이 고 FPS 유형의 게임 의 선두 주자) 가 발표 한 소스 코드 를 연 구 했 기 때문에 순수 C 로 상업 게임 을 완성 하 는 것 이 제 꿈 입 니 다.
이게 '좋 은' 선택 인가요?마지막 까지 유일한 합 리 적 인 문 제 는 "당신 의 게임 이 발표 되 었 습 니까?" 와 "그것 이 충분히 빨리 달 렸 습 니까?" 라 는 믿 을 수 없 는 프레임 속 도 를 보 세 요.
형 편 없 는 C 도서 (이 단락 을 무시 하지 마 세 요)
나 는 인터넷 튜 토리 얼, 블 로그, 그리고 대부분의 구 글 에서 얻 은 것 을 모두 계산 할 것 이다 (맞 아, 나 도 포함).일반적으로 나 는 이 자료 들 의 출처 가 믿 을 수 없고 잠재 적 인 위해 가 있다 고 생각한다.이 줄 의 대부분의 사람들 과 마찬가지 로 저 는 Google 검색 사용 자 를 중시 한 적 이 있 습 니 다.시간 이 지나 자 정확 하지 않 은 답 은 오히려 생산력 향상 에 역효과 가 있다 는 것 을 알 게 되 었 다.이것 은 나 로 하여 금 답 을 빨리 찾 을 수록 일 을 느리게 한 다 는 속도 상의 착각 을 하 게 했다.좋 은 책 보다 더 가치 있 는 사 이 트 는 없고, 어 셈 블 리 출력 보다 더 가치 있 는 책 은 없다.
우수한 C 도서
1. < C 프로 그래 밍 언어 >
'C 프로 그래 밍 언어' 는 K & R C 라 고도 부른다.이것 은 네가 먼저 가서 보아 야 할 C 언어 프로 그래 밍 에 관 한 명작 이다.이 책 을 읽 는 것 은 272 페이지, 386 폭 의 삽화 밖 에 없 을 것 이다.C 언어의 아버지 Kernighan 과 Ritchie 가 직접 작성 한 짧 고 명확 하 게 해 석 된 코드 예제 가 책 곳곳에 널 려 있다.처음 몇 주 동안 당신 이 알 아야 할 C 언어 에 관 한 모든 지식 이 여기에 있 습 니 다.이 책 은 읽 기 에 매우 재 미 있 고, 주제 가 비교적 짧 으 며, 또한 너 로 하여 금 매우 빨리 착수 하 게 할 수 있다.부록 A (C 언어 에서 비교적 어 려 운 어두 운 구석, 예 를 들 어 유형 향상, 유형 전환, 형태 퇴화 및 기타 쓸모없는 것들) 와 C 표준 라 이브 러 리 에 관 한 부록 B 를 뛰 어 넘 을 수 있 습 니 다.나 는 C 언어 를 처음 배 웠 을 때 이것 만으로 도 충분 하 다 고 생각한다.이 책 은 C 를 작고 간결 하 게 보이 게 하기 때문에 이 책 을 배 우 는 것 을 강력 추천 합 니 다.
만약 에 네가 계속 공부 하고 연습 을 한다 면 곧 이상 한 상황 을 만 날 것 이다. 예 를 들 어 다음 의 예 를 들 어:
1
2
3
4
5
6
7
8
9
10
11
12 unsigned int ui_one         = 1; signed int i_one            = 1; signed short s_minus_one    = -1; if (s_minus_one > ui_one)      printf (“-1 > 1
”);
if (s_minus_one < i_one)      printf (“-1 < 1
”);

  #./run # # -1 > 1 # -1 < 1
위의 코드 예시 에서 정형 이 향상 되 었 기 때문에 - 1 은 먼저 1 보다 크 고 그 다음 에 1 보다 작 게 계산 된다.C 언어 에는 이런 어두 운 면 이 많이 있 는데 이때 부정 확 한 결과 가 나 올 것 이다.
여기 에는 아직도 많은 세부 적 인 부분 이 있다.
1
2
3
4
5
6 extern void foo( void ); void (*f)(); f = &foo;     // f = foo;      // !( ) f();          // f (*f)();       // f( )
또는 배열 / 포인터 / 유형 퇴화 에 관 한 예:
1
2
3
4
5
6
7
8
9
10
11 int array[] = {0, 1, 2, 3, 4}; int *pointer = array;
  if ( sizeof array == sizeof pointer)      printf (“This will never be printed!!”);
  if ( sizeof ( int *) == sizeof &array[0])      printf (“This will be printed!!
”);

  if (&array[2] - &array[0] == 8 )      printf (“This will never be printed either, result is 2 not 8!!”);
C 언어 에 대한 이해 가 부족 하 다 는 것 을 알 았 을 때 (부록 A 는 정말 경량급 이다) 두 번 째 책 을 들 때 다.
2. 《 C 전문가 프로 그래 밍 》.
이 책 은 코드 뒤에 무슨 일이 일 어 났 는 지 매우 오락 적 인 방식 으로 알려 주기 때문에 신기 한 책 이다.몇 개의 유명한 bug 의 기이 한 소문 (대부분 NASA 와 관련) 을 소개 한 후에 독자 들 은 정형 향상, 하 표, 유형 퇴화 와 많은 다른 C 언어 뿔 을 다시 맛 볼 것 이다.이 책 은 이렇게 매력 적 입 니 다. 당신 은 밤새 353 페이지 를 읽 고 실망 하 며 왜 이렇게 짧 습 니까? 라 고 말 할 수 있 습 니 다.
지금 당신 은 좀 더 깊이 파고 우수한 C 프로그래머 가 되 고 싶 습 니 다. 당신 이 필요 로 하 는 마지막 C 언어 서적 을 들 어야 합 니 다.
3. 《 C 언어 참고 수첩 》.
 
 
이 책 은 C / C89 / C99 기준 을 전면적으로 포함한다.오늘 이후로 네가 직면 한 것 은 바로 이런 차 갑 고 무료 한 언어 기준 들이다.K & R 과 C 전문 가 를 책꽂이 에 프로 그래 밍 하고 C 언어 참고 매 뉴 얼 을 모니터 옆 에 놓 으 면 알 고 싶 은 C 언어 지식 이 모두 여기에 있다.
추가 읽 기
1. id 소프트웨어 코드 라 이브 러 리
 
책 만 읽 는 것 으로 는 당연히 부족 하 다.우수한 오픈 소스 코드 를 읽 는 것 은 큰 도움 이 될 것 이다.제 가 가장 좋아 하 는 것 은 id Software 의 3D 엔진 코드 라 이브 러 리 입 니 다. Doom, Quake, Quake 2, Quake 3, Wolfenstein 3D iPhone 과 Doom iPhone 입 니 다.내 가 이 코드 들 을 읽 을 때, 나 는 스스로 메모 로 그 를 쓸 것 이다.그 다음 에 저 는 이 로 그 를 정리 해서 기술 문장 (Doom, Quake, Wolfenstein 3D iPhone) 으로 쓰 겠 습 니 다. 그리고 Doom iPhone)。
2.  《Sh*t My Dad Says》
 
건강 한 생활 을 유지 하고 변 화 를 주 며 재 미 있 는 것 을 읽 어 보 세 요.)
주석.
원문 평론 란 에서 추천 하 는 보충 도서 목록:
1. C Interfaces and Implementations: Techniques for Creating Reusable Software (C 언어 인터페이스 와 구현: 재사 용 가능 한 소프트웨어 를 만 드 는 기술)
 
2. Object-Oriented Programming With ANSI-C
 
3. 《 Code Complete 2nd edition / 코드 대전 제2판
 

좋은 웹페이지 즐겨찾기