본문 바로가기

리디 접속이 원활하지 않습니다.
강제 새로 고침(Ctrl + F5)이나 브라우저 캐시 삭제를 진행해주세요.
계속해서 문제가 발생한다면 리디 접속 테스트를 통해 원인을 파악하고 대응 방법을 안내드리겠습니다.
테스트 페이지로 이동하기

전문가를 위한 C 상세페이지

컴퓨터/IT 개발/프로그래밍

전문가를 위한 C

동시성, OOP부터 최신 C, 고급 기능까지! 극한의 C를 마주하려는 여행자를 위한 가이드북
소장종이책 정가55,000
전자책 정가20%44,000
판매가44,000
전문가를 위한 C 표지 이미지

전문가를 위한 C작품 소개

<전문가를 위한 C> C의 가능성을 믿는 이들에게 선사하는

가장 진보된 기능으로 떠나는 여행



오랜 역사를 자랑하는 C는 여전히 프로그래밍에서 가장 중요한 언어다. 특히 C는 임베디드 시스템과 고성능 하드웨어를 개발할 때 진면모를 발휘하며, 소프트웨어 엔지니어링, 항공우주 연구의 핵심 언어로 자리 잡았다. 무궁무진한 C의 가능성을 믿고, C의 심화 개념과 활용법을 알아보고 싶다면 이 책을 펼칠 차례다.



실제 애플리케이션 개발과 유지 보수에 필요한 기초와 고급 지식을 모두 담았다. C와 유닉스의 역사부터 객체지향, 커널, 스레드, 프로세스, 다른 언어와의 통합에 이르기까지 폭넓은 주제를 살펴본다. 이 책을 통해 여러분의 스킬을 한 단계 높여 배운 내용을 실질적으로 활용할 수 있는 C 전문가로 거듭나길 바란다.


출판사 서평

전문가로 발돋움하기 위한 C의 모든 것 파헤치기



C 전문가가 되고 싶은 개발자를 위해 실무에 유용한 예제와 실습을 모두 담았습니다. 프로그램을 작성할 때 유용한 C의 구성 요소부터 프로세스 메모리 구조, 스택과 힙, 유닉스의 역사, 최신 C의 새로운 기능, 테스트와 유지 보수 방법까지 설명합니다. C를 이용해 효율적인 프로그램을 작성하는 방법과 객체지향 원칙을 구현하는 방법, 프로세스 간 통신하는 방법도 소개합니다.



이 책은 C 개발자를 위한 훌륭한 책일 뿐만 아니라 컴퓨터가 실제로 어떻게 작동하는지 조금 더 깊이 파고들고 싶은 개발자에게도 유용합니다. 책을 읽으며 스스로 생각하고, 질문하고, 실습해보면서 탄탄한 기초를 가진 C 전문가로 성장해보세요. C의 가장 진보된 기능으로 떠나는 대장정을 마치고 나면, 소프트웨어 시스템을 더 넓은 관점에서 바라보는 더 나은 C 개발자가 될 것입니다.





대상 독자

C/C++ 프로그래밍 초급 과정을 이수한 학부생이나 주니어 엔지니어
현업에 C를 사용하는 개발자
공학이나 과학을 공부하는 학부생이나 연구원


필요 지식

컴퓨터 아키텍처 지식: 메모리, CPU, 주변 장치와 이들의 특성에 관한 내용
프로그래밍 기초 지식: 알고리듬, 이진수, 산술연산 등
프로그래밍 중급 지식: 조건문, 루프, 구조체, 클래스, 포인터, 함수에 관한 중급 지식
터미널과 셸 명령어 사용법
객체지향 프로그래밍 기초 지식(3부에서 객체지향을 자세히 다루지만 기초 지식이 있다면 내용을 이해하기가 수월합니다)


주요 내용

메모리 구조와 컴파일 파이프라인의 작동 방식과 최대 활용법
절차지향 C 코드에 객체지향 설계 원칙 적용하기
컴퓨터 시스템의 최대 성능을 끌어내는 저수준 코드 작성하기
동시성, 멀티프로세싱, 멀티프로세싱의 주요 개념
C++, 자바, 파이썬, 고(Go)에서 C 라이브러리 통합하기
유닛 테스트, 디버깅, 빌드 시스템으로 테스트 및 유지 보수하기


추천사



실무만으로 채울 수 없는 부분을 채워주는 책. 주니어에게 너무 좋은 책입니다.

강수연, 임베디드 소프트웨어 개발자



C의 기본 문법을 익힌 후에 C로 어떤 것을 할 수 있는지, 코드가 어떤 방식으로 작동하는지 자세히 안내하는 책입니다. 업무에 즉각적으로 도움이 되는 설명으로 가득 차 있습니다. 자세한 설명과 예제를 직접 실행해보며 코드가 작동 가능한 실행 파일로 생성되는 과정을 이해할 수 있었습니다. 특히 동시성을 다루는 5부에서는 단계별 작업을 코드 박스를 통해 세세하게 설명하고, 헷갈리는 용어와 개념도 자세히 설명해 명확하게 내용을 정리할 수 있었습니다. 또한 빌드 시스템에 대해서도 간략히 소개하며, 그 덕분에 실제로 프로젝트에 포함된 파일들이 어떤 역할을 하는지도 알 수 있었습니다. C 언어의 기본 문법을 익힌 후, 좀 더 빨리 이 책을 접했더라면 실력이 더 빨리 늘었을 거라 생각합니다.

권성민, 스마트레이더시스템 선임연구원



절차지향 프로그래밍 언어인 C 언어를 이용해 객체지향 프로그래밍을 시도하는 부분이 매우 흥미로웠습니다. C 언어는 객체지향이 될 수 없다는 것을 인정하고 시작하지만, 그럼에도 불구하고 이를 구현하기 위해 객체지향의 특성에서부터 세심하게 접근합니다. 그 결과 각 특성을 C 언어로 최대한 유사하게 구현했으며, 저 스스로도 객체지향 프로그래밍의 본질을 깊이 들여다볼 수 있는 기회였습니다. 그 외에도 C 언어를 이용해 심도 있는 다양한 주제를 제시하고 설명함으로써, 많은 C 언어 개발자에게 도전의 기회를 제공하는 책입니다.

박수빈, 엔씨소프트 개발자



C 프로그래밍 언어에 대한 매우 자세한 설명과 고급 활용법뿐만 아니라 컴파일 언어의 특징(컴파일러), 그리고 프로그램이 작성되는 운영체제를 포함해 광범위한 내용을 다루는 책입니다. 이 책에서 설명하는 내용은 다른 프로그래밍 언어를 사용할 때도 충분히 도움 되는 내용이며, 특히 C++을 주로 사용하고 있다면 반드시 읽어야 합니다.

사지원, 카카오모빌리티



C 언어를 오랫동안 사용한 개발자라도 이 책에서 다루는 다양한 지식을 익숙하게 사용하거나 모든 내용을 사용해본 개발자는 많지 않을 겁니다. 단순히 C 언어의 기능을 나열하는 것이 아닌, 실행 파일부터 메모리 구조, 테스트에 이르기까지 C 언어를 다루는 시니어 개발자에게 필요한 내용을 담았습니다. 그만큼 이 책은 전문성도 갖추고, 가독성도 훌륭한 완벽한 책입니다. 이 책은 C 언어 초중급 개발자를 전문가 수준으로 끌어올릴 수 있는 내용으로 가득 차 있습니다. 탄탄한 예제와 상세한 설명, 다양하지만 꼭 필요한 내용을 담아 C 언어 시니어 개발자가 될 수 있는 훌륭한 이정표 역할을 합니다. 지금까지 읽어본 많은 C 언어 도서 중 꼭 읽어야 할 필독서로 추천합니다.

손승하, 삼성전자



C++11만 사용하다가 이 책을 접하며 C 언어도 C11을 시작으로 모던(modern) C로 변화가 이루어지고 있다는 사실을 알게 되었습니다. 이 책을 읽으며 인상적이었던 부분은 C11 이후의 변화뿐만 아니라 C 언어의 특성과 활용을 좀 더 깊이 있게 다룬다는 점이었습니다. 예를 들면 C 언어를 C++과 비슷하게 사용하려면 어떻게 표현할 수 있는지, 소스 코드가 최종적으로 플랫폼에서 실행되기까지의 과정을 상세하게 설명합니다. C 언어는 다른 언어와 통합하기 쉬운 언어인데 이와 관련된 내용도 다루며 C 언어로 작성한 라이브러리를 다른 언어와 연동해보는 연습도 매우 유용했습니다. 모던 C뿐만 아니라 C 언어가 실행 파일로 변환되는 과정과 C++ 언어와의 비교 및 유사하게 사용하는 방법 그리고 표준 C 언어 등 다양한 주제를 생각해볼 수 있는 책이라 읽는 내내 도움이 많이 되었습니다.

이승표, 게임 서버 프로그래머



저자 소개

저자
캄란 아미니

임베디드 및 커널 전문 개발자. 이란의 여러 유명 회사에서 시니어 엔지니어, 아키텍트, 컨설턴트, CTO로 근무했습니다. 2017년에는 유럽으로 건너가 제퍼슨(Jeppesen), 아데코(Adecco), 톰톰(TomTom), 액티브비디오 네트웍스(ActiveVideo Networks)와 같은 명망 높은 회사에서 시니어 아키텍트 겸 엔지니어로 근무했습니다. 암스테르담에 머무르는 동안 이 책을 집필했으며 주된 관심 분야는 컴퓨터 이론, 분산 시스템, 머신러닝, 정보 이론, 양자 컴퓨터입니다. 직업적 커리어를 쌓으면서 천문학과 행성학도 공부합니다. 우주의 초기 발생, 블랙홀의 기하학, 양자장론, 끈 이론 분야에 학술적 관심을 두고 있습니다.

박지윤역자
박지윤

판교의 한 프런트엔드 개발자. C 언어에 관심이 있는 프런트엔드 개발자라니, 하나만 잘하기에도 벅찬 인생이지만 이 책의 저자만큼이나 관심사가 넓은 편입니다. 언젠가 웹 공간에 원하는 비주얼과 사운드를 펼쳐 놓을 수 있기를 희망하며 관련 공부를 하고 있습니다. C 언어에 대한 관심은 사운드/오디오 개발에서 비롯했습니다. 우주에 대해 캄란 아미니만큼 학술적 관심이 있지는 않지만, 블랙홀에 대한 최신 소식이 나오면 찾아보거나, 물리학자 카를로 로벨리(Carlo Rovelli)의 신간이 나오면 사서 읽어보곤 합니다.

목차

[PART I C 프로젝트 빌드]



CHAPTER 1 필수 요소

1.1 전처리기 지시자

1.2 포인터 변수

1.3 함수

1.4 함수 포인터

1.5 구조체

1.6 마무리



CHAPTER 2 소스 코드에서 이진 파일로

2.1 표준 컴파일 파이프라인

2.2 전처리기

2.3 컴파일러

2.4 어셈블러

2.5 링커

2.6 마무리



CHAPTER 3 목적 파일

3.1 ABI

3.2 목적 파일 형식

3.3 재배치 가능한 목적 파일

3.4 실행 가능한 목적 파일

3.5 정적 라이브러리

3.6 동적 라이브러리

3.7 마무리





[PART II 메모리]



CHAPTER 4 프로세스 메모리 구조

4.1 프로세스 메모리 레이아웃

4.2 메모리 구조 알아보기

4.3 정적 메모리 레이아웃 검사하기

4.4 동적 메모리 레이아웃 검사하기

4.5 마무리



CHAPTER 5 스택과 힙

5.1 스택

5.2 힙

5.3 제한된 환경에서의 메모리 관리

5.4 마무리





[PART III 객체지향]



CHAPTER 6 OOP와 캡슐화

6.1 객체지향적 사고

6.2 C가 객체지향이 아닌 이유

6.3 캡슐화

6.4 마무리



CHAPTER 7 합성과 집합

7.1 클래스 간의 관계

7.2 객체 대 클래스

7.3 합성

7.4 집합

7.5 마무리



CHAPTER 8 상속과 다형성

8.1 상속

8.2 다형성

8.3 마무리



CHAPTER 9 추상화와 C++의 OOP

9.1 추상화

9.2 C++의 객체지향 구성물

9.3 마무리





[PART IV 유닉스]



CHAPTER 10 유닉스의 역사와 아키텍처

10.1 유닉스의 역사

10.2 유닉스 아키텍처

10.3 사용자 응용프로그램에 대한 셸 인터페이스

10.4 셸 링에 대한 커널 인터페이스

10.5 커널

10.6 하드웨어

10.7 마무리



CHAPTER 11 시스템 호출과 커널

11.1 시스템 호출

11.2 유닉스 커널

11.3 마무리



CHAPTER 12 최신 C

12.1 C11

12.2 C 표준 지원 버전 찾기

12.3 gets 함수의 제거

12.4 fopen 함수로의 변화

12.5 경계 검사 함수

12.6 값을 반환하지 않는 함수

12.7 타입 제네릭 매크로

12.8 유니코드

12.9 익명 구조체와 익명 공용체

12.10 멀티스레딩

12.11 마무리





[PART V 동시성]



CHAPTER 13 동시성

13.1 동시성 소개

13.2 병렬성

13.3 동시성

13.4 작업 스케줄러 유닛

13.5 프로세스와 스레드

13.6 발생 전 제약

13.7 동시성을 사용해야 하는 경우

13.8 공유 상태

13.9 마무리



CHAPTER 14 동기화

14.1 동시성 문제

14.2 고유한 동시성 문제

14.3 동기화 이후 문제

14.4 동기화 기술

14.5 스핀락

14.6 POSIX의 동시성

14.7 멀티프로세싱

14.8 멀티스레딩

14.9 마무리



CHAPTER 15 스레드 실행

15.1 스레드

15.2 POSIX 스레드

15.3 POSIX 스레드 스폰하기

15.4 경쟁 상태에 대한 예제

15.5 데이터 경쟁에 대한 예

15.6 마무리



CHAPTER 16 스레드 동기화

16.1 POSIX 동시성 제어

16.2 POSIX 스레드와 메모리

16.3 마무리





[PART VI 프로세스 간 통신]



CHAPTER 17 프로세스 실행

17.1 프로세스 실행 API

17.2 프로세스 실행 단계

17.3 공유 상태

17.4 멀티스레딩 대 멀티프로세싱

17.5 마무리



CHAPTER 18 프로세스 동기화

18.1 싱글 호스트 동시성 제어

18.2 기명 POSIX 세마포어

18.3 기명 뮤텍스

18.4 기명 조건 변수

18.5 분산된 동시성 제어

18.6 마무리



CHAPTER 19 싱글 호스트 IPC와 소켓

19.1 IPC 기법

19.2 통신 프로토콜

19.3 싱글 호스트 통신

19.4 소켓 프로그래밍

19.5 마무리



CHAPTER 20 소켓 프로그래밍

20.1 소켓 프로그래밍 복습

20.2 계산기 프로젝트

20.3 유닉스 도메인 소켓

20.4 네트워크 소켓

20.5 마무리



CHAPTER 21 다른 언어와의 통합

21.1 통합이 가능한 이유

21.2 필수 자료 획득하기

21.3 스택 라이브러리

21.4 C++과 통합하기

21.5 자바와 통합하기

21.6 파이썬과 통합하기

21.7 고와 통합하기

21.8 마무리





[PART VII 테스트와 유지 보수]



CHAPTER 22 유닛 테스트와 디버깅

22.1 소프트웨어 테스트

22.2 유닛 테스트

22.3 컴포넌트 테스트

22.4 C의 테스트 라이브러리

22.5 디버깅

22.6 마무리



CHAPTER 23 빌드 시스템

23.1 빌드 시스템 소개

23.2 메이크

23.3 CMake: 빌드 시스템이 아닙니다

23.4 닌자

23.5 바젤

23.6 빌드 시스템 비교하기

23.7 마무리


리뷰

구매자 별점

0.0

점수비율
  • 5
  • 4
  • 3
  • 2
  • 1

0명이 평가함

리뷰 작성 영역

이 책을 평가해주세요!

내가 남긴 별점 0.0

별로예요

그저 그래요

보통이에요

좋아요

최고예요

별점 취소

구매자 표시 기준은 무엇인가요?

'구매자' 표시는 리디에서 유료도서 결제 후 다운로드 하시거나 리디셀렉트 도서를 다운로드하신 경우에만 표시됩니다.

무료 도서 (프로모션 등으로 무료로 전환된 도서 포함)
'구매자'로 표시되지 않습니다.
시리즈 도서 내 무료 도서
'구매자’로 표시되지 않습니다. 하지만 같은 시리즈의 유료 도서를 결제한 뒤 리뷰를 수정하거나 재등록하면 '구매자'로 표시됩니다.
영구 삭제
도서를 영구 삭제해도 ‘구매자’ 표시는 남아있습니다.
결제 취소
‘구매자’ 표시가 자동으로 사라집니다.

이 책과 함께 구매한 책


이 책과 함께 둘러본 책



본문 끝 최상단으로 돌아가기

spinner
모바일 버전