컴파일러 개발자가 들려주는 C 이야기

아무도 알려주지 않던 심오한 C의 비밀
$30.62
SKU
9788966263318
+ Wish
[Free shipping over $100]

Standard Shipping estimated by Fri 05/2 - Thu 05/8 (주문일로부 10-14 영업일)

Express Shipping estimated by Tue 04/29 - Thu 05/1 (주문일로부 7-9 영업일)

* 안내되는 배송 완료 예상일은 유통사/배송사의 상황에 따라 예고 없이 변동될 수 있습니다.
Publication Date 2022/01/14
Pages/Weight/Size 188*240*30mm
ISBN 9788966263318
Categories IT 모바일 > 프로그래밍 언어
Description
"이 책은 모든 프로그래머의 두 번째 C 책이어야 한다.“

『컴파일러 개발자가 들려주는 C 이야기』는 최고의 C 프로그래머들이 사용한 코딩 테크닉을 보여준다. 이러한 코딩 기법과 전략은 다른 프로그래밍 언어에도 적용할 수 있다. 저자는 썬 마이크로시스템즈의 컴파일러/운영 체제 커널 부문에서 근무한 실무 경험을 바탕으로 실용적인 사례들을 쉽고 재미있는 방식으로 풀어낸다. IBM PC와 유닉스 시스템 전문가들의 실전 노하우를 통해 재미와 교육적 요소를 모두 잡는다. C 언어의 유래부터 구현 및 실무에서의 활용까지, 깊은 곳에 숨어 있는 C 언어의 지식과 함께 뒷이야기가 궁금한 개발자라면 반드시 읽어야 할 필독서이다. 또한 C++ 개요도 포함되어 누구나 쉽게 C++에 대한 기본적인 지식을 얻을 수 있다.
Contents
1장 C가 지나온 길

-C의 초창기
-C 언어와 함께했던 초창기 경험
-표준 I/O 라이브러리 및 C 전처리기
-K&R C
-오늘날: 안시 C
-다 좋은데 정말 표준인가?
-컴파일 한도
-안시 C 표준 구조
-즐거움, 재미, 학습을 모두 잡을 수 있는 안시 C 표준 읽기
-어디까지가 ‘조용한 변경’인가?
-쉬어 가기: 구현 방법에 따라 정의된 pragma 효과

2장 버그가 아니라 언어의 기능이다

-언어의 기능이 중요한 이유: 포트란 버그를 실제로 일으킨 방법
-커미션 죄
-미션 죄
-오미션 죄
-쉬어 가기: 일부 기능은 실제로 버그다!

3장 C 선언문 해독

-컴파일러만이 사랑할 수 있는 문법
-선언문 구성 방법
-우선순위 규칙
-다이어그램을 이용하여 C 선언문 해석하기
-typedef를 친구로 만들자
-typedef int x[10]과 #define x int[10]의 차이
-typedef struct foo { ... foo; } foo;의 의미
-모든 파싱을 이해하는 코드 조각
-더 읽을거리
-쉬어 가기: 밀랍 올챙이 씹기 소프트웨어…

4장 충격적인 진실: C 배열과 포인터는 다르다

-배열은 포인터가 아니다
-내 코드가 동작하지 않는 이유
-선언이란 무엇인가? 정의란 무엇인가?
-배열과 포인터에 접근하는 방법
-선언을 정의와 일치시킬 것
-배열과 포인터의 차이점
-쉬어 가기: 회문으로 대동단결

5장 링킹에 대한 고찰

-라이브러리, 링킹, 로딩
-동적 링크의 이점
-라이브러리와 링크의 다섯 가지 특별한 비밀
-인터포지셔닝을 조심할 것
-링커 보고서 파일 생성
-쉬어 가기: ‘누구와 얘기하는지 맞히시오’ 튜링 테스트 도전
-더 읽을거리

6장 우아한 동작: 런타임 데이터 구조

-a.out과 a.out의 유래
-세그먼트
-운영 체제가 a.out을 이용하여 하는 일
-C 런타임이 a.out으로 하는 일
-함수 호출 시 일어나는 일: 프로시저 활성 레코드
-제어 스레드
-setjmp와 longjmp
-유닉스 스택 세그먼트
-마이크로소프트 도스 스택 세그먼트
-유용한 C 도구
-쉬어 가기: 카네기 멜런 대학의 프로그래밍 퍼즐

7장 고마운 메모리

-인텔 80x86 제품군
-인텔 80x86 메모리 모델 및 동작 방법
-가상 메모리
-캐시 메모리
-데이터 세그먼트와 힙
-메모리 누수
-버스가 고장 났다면 기차를 타라?
-쉬어 가기: 물건왕과 페이징 게임

8장 프로그래머가 크리스마스와 핼러윈을 구분하지 못하는 이유

-도량형 단위 포트셰비에 시스템
-비트 패턴으로 글리프 만들기
-모르는 사이에 타입이 바뀐다
-프로토타입 고통
-캐리지 리턴 없이 char 얻기
-C로 유한 상태 기계 구현하기
-소프트웨어가 하드웨어보다 더 어렵다!
-캐스트 방법과 이유
-쉬어 가기: 국제 난독 C 코드 대회

9장 배열에 대한 더 많은 이야기

-배열이 포인터가 될 때
-혼돈의 시작
-C가 배열 파라미터를 포인터로 취급하는 이유
-부분 인덱싱
-배열과 포인터의 상호 교환 가능성 요약
-C에도 다차원 배열이 있는데…
-…그러나 다른 모든 프로그래밍 언어는 그것을 ‘배열의 배열’이라고 한다
-다차원 배열 분해
-배열을 메모리에 배치하는 방법
-배열 초기화
-쉬어 가기: 하드웨어/소프트웨어의 절충

10장 포인터에 대한 더 많은 이야기

-다차원 배열 레이아웃
-포인터의 배열은 ‘일리프 벡터’
-비정형 배열을 위한 포인터
-일차원 배열을 함수에 전달하기
-포인터를 사용하여 다차원 배열을 함수에 전달하기
-포인터를 사용하여 함수에서 배열을 반환하기
-포인터를 사용하여 동적 배열을 만들고 사용하기
-쉬어 가기: 프로그램 증명의 한계
-더 읽을거리

11장 C를 알면 C++는 쉽다!

-전진, 객체 지향 프로그래밍!
-추상화: 사물의 본질적인 특성 추출
-캡슐화: 관련 있는 타입, 데이터, 함수를 함께 그룹화
-몇 가지 클래스 샘플: 미리 정의된 타입과 동일한 권한을 부여하는 사용자 정의 타입
-가용성
-선언
-메서드 호출 방법
-상속: 이미 정의된 작업의 재사용
-다중 상속: 두 개 이상의 기본 클래스에서 파생
-오버로딩: 한 가지 이름으로 서로 다른 타입의 동일 작업을 수행
-C++ 연산자 오버로딩
-C++ 입출력
-다형성: 런타임 바인딩
-설명
-C++에서 다형성을 수행하는 방법
-멋진 다형성
-C++의 다른 측면
-거기에 갈 생각이었다면 여기서 시작하지 않았을 것이다
-꽤나 복잡해서 손대고 싶지 않을 수도 있겠지만 그것은 마을에서 유일한 게임이다
-쉬어 가기: 죽은 컴퓨터 사회
-쉬어 가기 마지막: 수료증!
-더 읽을거리

부록 프로그래머 면접의 비밀
-실리콘 밸리 프로그래머 면접
-연결 리스트에서 사이클을 어떻게 찾을 수 있는가?
-C에서 증가문들이 의미하는 차이는 무엇인가?
-라이브러리 호출이 시스템 호출과 다른 점은 무엇인가?
-파일 기술자가 파일 포인터와 다른 점은 무엇인가?
-부호 있는 변수인지 아닌지 알아내는 코드를 작성하라
-이진트리에서 값을 인쇄할 때의 시간 복잡도는 얼마나 되는가?
-이 파일에서 임의의 문자열을 꺼내시오
-쉬어 가기: 기압계로 건물을 측정하는 방법
-더 읽을거리
Author
페터르 판데르린던,정기훈
썬 마이크로시스템즈에서 14년간 컴파일러와 커널 개발자로 근무했고 이후에 애플, 모토로라, 마스터카드 등을 거쳐 현재 실리콘 밸리에서 기술 컨설턴트로 활동 중이다.
썬 마이크로시스템즈에서 14년간 컴파일러와 커널 개발자로 근무했고 이후에 애플, 모토로라, 마스터카드 등을 거쳐 현재 실리콘 밸리에서 기술 컨설턴트로 활동 중이다.