최종 C 북 가이드 및 목록
이 질문에서는 커뮤니티에서 관리하는 다양한 스킬레벨을 대상으로 한 c프로그래밍 언어에 관한 고품질 서적 목록을 수집하려고 합니다.
C는 복잡한 프로그래밍 언어이며 온라인 튜토리얼을 읽으면 이동 중에 습득하기 어렵습니다.포괄적인 책은 종종 언어를 배우는 가장 좋은 방법이고, 좋은 책을 찾는 것이 첫 번째 단계이다.잘못 쓰여진 책들, 그리고 더 중요한 것은 심각한 기술적 오류가 있는 책들을 피하는 것이 중요하다.
각 책에 대한 대략적인 스킬 수준과 간단한 설명과 함께 양질의 책을 추가하기 위해 수락된 답변에 대한 편집을 제안해 주십시오.(질문은 잠겨 있기 때문에 새로운 답변은 받아들여지지 않습니다. 단일 답변이 목록과 함께 유지되고 있습니다.
책의 선택 사항, 품질, 제목, 요약, 기술 수준, 그리고 당신이 잘못되었다고 보는 것에 대해 자유롭게 토론하세요.C 커뮤니티에 의해 만족스러운 책들은 목록에 남아있을 것이고 나머지는 정기적으로 삭제될 것이다.
C 및 C++ 사용자 협회(ACCU)의 리뷰가 있는 책의 경우, 해당 리뷰에 대한 링크가 책과 함께 추가되어야 한다.
다음 항목도 참조하십시오.
- c 태그 Wiki의 기타 C 관련 리소스
- c++에서도 같은 리스트가 표시됩니다.최종판 C++ 북가이드와
이 질문은 삭제된 질문 감사 2018의 일환으로 Meta에서 논의되었습니다.
삭제되지 않은 상태로 유지하고 적극적으로 유지하기로 합의했습니다.
경고!
이것은 다양한 품질의 무작위 도서 목록입니다.몇몇 사람들의 견해에 따르면, 그것은 더 이상 추천 도서 목록이 아니다.목록에 있는 책들 중 일부는 노골적으로 잘못된 진술이 포함되어 있거나 잘못된/유해한 관행을 가르치고 있습니다.이러한 책을 알고 있는 사람들은 이 답을 수정하여 개선할 수 있습니다.'C북 리스트가 엉망이 되었다'를 참조하십시오. 어떻게 할 것인가? 그리고 2018년 질문감사 삭제.
레퍼런스(모든 레벨)
C 프로그래밍 언어 (제2판) - 브라이언 W. 커니건과 데니스 M.Ritchie(1988)C의 발명자가 작성한 C에 대한 훌륭하고 짧지만 완전한 소개(C90, C99 이후 버전이 아님)입니다.하지만 언어가 바뀌었고 지난 25년 동안 좋은 C스타일이 발달했고, 그 나이를 알 수 있는 부분들도 있습니다.
C: 레퍼런스 매뉴얼 (제5판) - Samuel P.하비슨과 가이 R. 스틸(2002년).C99까지를 포함한 C에 관한 훌륭한 참고서.이것은 튜토리얼이 아니기 때문에 아마 초보자에게는 적합하지 않을 것입니다.C용 컴파일러를 작성해야 한다면 작성자가 시작할 때 해야 했던 것처럼 매우 좋습니다.
Comp.lang.c FAQ - Steve Summit.C에 관한 많은 질문에 대한 답변이 있는 웹사이트.
새로운 C 표준 - 주석 참조(Free PDF) - Derek M. Jones(2009).언급되는 "새로운 표준"은 C11이 아닌 오래된 C99 표준입니다.
초급.
C프로그래밍: 모던 어프로치 (제2판) - K. N. King (2008)C를 배우기에 좋은 책.
C - Al Kelley / Ira Pohl (1998).
The C Book (무료 온라인) - 마이크 바나한, 데클란 브래디, 마크 도란(1991)
C: 프로그램 방법 (8판) - 폴 데이텔과 하비 M.Deitel (2015)초보자를 위한 좋은 팁과 베스트 프랙티스.이 지수는 매우 양호하고 적절한 참고 자료로 활용된다(완전하게 포괄적이지 않고 매우 얕다).
Head First C - David Griffiths and Dawn Griffiths (2012).
Begining C (제5판) - Ivor Horton (2013년)작지만 완전한 프로그램을 많이 사용하여 포인터에 대한 매우 좋은 설명.
샘스는 21일간의 독학 C - 브래들리 L. 존스와 피터 에이튼 (2002).아주 좋은 입문 자료입니다.
C In Easy Stepes (제5판) - Mike McGrath (2018년)그것은 C를 배우고 참조하기에 좋은 책이다.
유효 C - Robert C Seacord (2020).동적 메모리 할당, 프로그램 구조 및 디버깅, 테스트 및 분석에 대한 장을 포함하여 최신 C에 대한 좋은 소개입니다.C2x 기능에 대한 몇 가지 포인터가 있습니다.
중간의
현대 C - 옌스 구스테트(2017년 1차 EDN, 2020년 2차 EDN).C부터 상급 C까지 5가지 레벨(친분, 지인, 인지, 경험, 야망)로 C를 커버합니다.다른 책에서는 거의 다루지 않는 스레드와 원자적 접근을 포함하여 C11과 C17에 대해 다룹니다.모든 컴파일러가 모든 환경에서 이러한 기능을 인식하는 것은 아닙니다.
C 인터페이스 및 구현 - David R.핸슨(1997).C 의 인터페이스와 실장간의 경계를 범용적이고 재사용 가능한 방법으로 정의하는 방법에 대해 설명합니다.또한 이 원리를 목록, 세트, 예외, 문자열 조작, 메모리 할당자 등 C의 공통 메커니즘 및 데이터 구조 구현에 적용하여 설명합니다.기본적으로 Hanson은 Icon과 lcc를 빌드하는 과정에서 작성한 모든 코드를 가져와서 다른 사람들이 자신의 프로젝트에 재사용할 수 있는 형태로 최고의 부분을 추출했습니다.현대 설계 기술(Liskov의 데이터 추상화 포함)을 사용한 우수한 C 프로그래밍 모델이며, 큰 C 프로젝트를 유용한 라이브러리로 구성하는 방법을 보여줍니다.
C 퍼즐북 - 앨런 R.Feuer (1998)
스탠다드 C 라이브러리 - P.J. Plauger(1992)여기에는 C89 표준 라이브러리 구현에 대한 완전한 소스 코드와 설계 및 코드 설계 이유에 대한 광범위한 설명이 포함되어 있습니다.
21세기 C: 새로운 학교의 팁 - Ben Klemens (2012).이 책은 C 언어 외에도 gdb, valgrind, autotools, git에 대해 설명하고 있습니다.스타일에 대한 코멘트는 마지막 부분(6장 이후)에서 확인할 수 있습니다.
C - Robert Sedgewick(1997).C의 알고리즘을 실장하는 방법을 실제로 파악할 수 있습니다.매우 명료하고 명료하며, 다른 알고리즘 책자는 모두 버리고 이 알고리즘 책자는 보관하고 싶어질 것입니다.
- C - Kenneth Reeek(1997).
C (제6판)의 문제 해결 및 프로그램 설계 - Jeri R.핸리와 엘리엇 B.Koffman(2009년).
데이터 구조 - C - Jeffrey Esakov와 Tom Weiss(1989)를 이용한 고급 접근법.
C 언리쉬드 - 리처드 히스필드, 로렌스 커비 등(2000).이상적이지는 않지만, 중간 프로그래머들이 이 책에 적힌 문제를 연습하는 것은 가치가 있습니다.이것은 comp.lang.c 기고가들에 의해 제안된 훌륭한 요리책과 같은 접근법입니다.
- ANSI-C를 사용한 객체 지향 프로그래밍 - Axel-Tobias Schreiner (1993)코드가 좀 복잡해지네요.C++ 를 사용하는 경우는, C++ 를 사용합니다.물론 C90만 사용합니다.
전문가.
전문가 C 프로그래밍: Deep C Secrets - Peter van der Linden (1994년).Sun 컴파일러 팀의 많은 흥미로운 정보와 전쟁 이야기들이 있지만, 군데군데는 좀 낡았어요.
UNIX 환경에서의 고도의 프로그래밍 - Richard W.스티븐스와 스티븐 A.라고 (2013년)C 코드에서 Unix API를 사용하는 방법에 대한 포괄적인 설명이지만 C 코딩의 메커니즘에 대한 설명은 많지 않습니다.
미분류
Essential C (무료 PDF) - Nick Parlante (2003)이것은 몇 가지 점에서 C90 언어를 기술하는 것에 주의해 주십시오(예를 들어 설명 중).
//
코드의 임의의 포인트에 변수 선언을 배치하는 코멘트.따라서 주의가 필요합니다.C 프로그래밍에 관한 FAQ: FAQ - Steve Summit (1995)이것은 앞서 말한 웹사이트의 책입니다.C99 이후의 표준에는 적용되지 않습니다.
C in a Nutshell - Peter Prinz와 Tony Crawford(2005).C99에 대한 참고 자료가 필요하다면 훌륭한 책입니다.
기능 C - Pieter Hartel 및 Henk Muller(1997).동시성과 모듈성을 염두에 두고 낮은 수준의 프로그래밍에 매우 유용한 최신 사례를 가르칩니다.
프로그래밍의 실천 - Brian W. Kernighan과 Rob Pike(1999)K&R에 동반되는 매우 좋은 책입니다.C++와 Java도 사용합니다.
A에 의한 C 트랩과 트랩.코닉(1989년).좋아요, 하지만 C스타일은 표준 C보다 날짜가 앞서서 요즘은 별로 추천하지 않아요.
어떤 사람들은 이 리스트에서 '함정과 함정'을 삭제해야 한다고 주장해왔다. 왜냐하면 그것은 몇몇 사람들을 실수하도록 함정에 빠뜨렸기 때문이다.; 다른 사람들은 계속해서 그것을 포함시켜야 한다고 주장한다.아마도 그것은 출판된 이후 무엇이 바뀌었는지 이해하기 위해서는 C에 대한 어느 정도 폭넓은 지식이 필요하기 때문에 '전문가' 책으로 여겨져야 할 것이다.
MISRA-C - 자동차 산업 소프트웨어 신뢰성 협회에 의해 발행 및 유지되는 업계 표준.C89 및 C99에 대응합니다.
비록 이 책이 그런 책은 아니지만, 많은 프로그래머들은 가능한 한 많이 읽고 구현할 것을 추천한다.MISRA-C는 원래 안전이 중요한 어플리케이션의 가이드라인으로 의도되어 있었습니다만, 안정적이고 버그가 없는 C코드가 필요한 어플리케이션의 모든 영역에 적용됩니다(버그가 적은 것을 원하지 않는 것은 누구입니까).MISRA-C는 임베디드 업계 전체에서 사실상의 표준이 되고 있으며, 다른 프로그래밍 부문에서도 점점 더 인기를 끌고 있습니다.이 표준의 간행물은 (적어도) 세 개(1998, 2004 및 2012년부터의 최신 버전)이다.또한 2016년 MISRA 준수 지침 문서와 MISRA C:2012 수정안 1 - MISRA C:2012 추가 보안 지침(2016년 4월 발행)이 있다.
MISRA 규칙의 일부 제한은 모든 컨텍스트에 적합한 것은 아닙니다.예를 들어, 지침 4.12는 "동적 메모리 할당은 사용해서는 안 된다"고 명시하고 있다.이것은 MISRA 규칙이 설계되어 있는 임베디드 시스템에 적합합니다.어느 곳에나 적절한 것은 아닙니다.(예를 들어 컴파일러는 일반적으로 심볼 테이블과 같은 것에 동적 메모리 할당을 사용합니다.동적 메모리 할당은 터무니없지는 않더라도 어렵습니다.)
2007년부터 초급자 C(116개 타이틀) 및 2008년부터 어드밴스 C(76개 타이틀)에 관한 ACCU 리뷰 서적 목록.이들 대부분은 더 이상 메인 사이트에 없는 것으로 보이며, 제목별로 검색할 수도 없습니다.
경고.
ISO 9899 Wiki에는 주의해야 할 서적과 튜토리얼의 목록이 있습니다.ISO 9899:2011의 릴리스와 ISO 9899:2018의 릴리스에 대해서는 언급하지 않고 ISO 9899:2018의 릴리스에 대해서는 C 표준에 관한 정보가 포함되어 있습니다.
허버트 실트가 쓴 책을 조심하라.특히 C: The Complete Reference (제4판, 2000년판)를 멀리해야 합니다.C: The Complete Nonsence (C: The Complete Nonsence, 2000년판)라고 하는 서클도 있습니다.
또, 야슈완트 카네카르의 「렛 유스 C」(16판, 2017년)도th 사용하지 말아 주세요.많은 사람들이 이 책을 터보 C를 가르치는 시대에 뒤떨어진 책으로 보고 있으며, 쓸모없고, 오해의 소지가 있고, 부정확한 자료들이 많이 있습니다.예를 들어, 137페이지에서 예상되는 출력에 대해 설명합니다.printf("%d %d %d\n", a, ++a, a++)
정의되지 않은 동작으로 분류하지 않습니다.또, 휴대할 수 없는 코드나 버그가 많은 코드 작성(예를 들면,gets
,%[\n]s
에scanf
, 반환값 저장getchar
활자변수로char
또는 사용fflush
에stdin
.
Learn C The Hard Way (2015) by Zed Shaw.평가가 엇갈리는 책팀 헨테나르의 이 책에 대한 비평:
아래에 나와 있는 나의 견해를 요약하면, 저자는 자료를 지나치게 단순하고 오해의 소지가 많은 방식으로 제시하고 있으며, 전체 말뭉치는 엉망이며, 그가 제시한 의견과 분석 중 일부는 명백히 잘못된 것이다.나는 이 책을 초보자의 시선으로 보려고 했지만, 안타깝게도 다년간의 C 코드 작성 경험으로 인해 편견이 있다.필자는 C에 대해 잘못된 이해를 가지고 있거나, 실제로 독자를 오도하고 있을 정도로 의도적으로 지나치게 단순화하고 있는 것이 분명합니다(의도적이든 다른 것이든지요.
"Learn C The Hard Way"는 프로그래밍을 배우는 동시에 C를 배우는 사람에게 추천할 만한 책이 아닙니다.만약 당신이 이미 다른 관련 언어에서 유능한 프로그래머라면, 책의 일부에 대해서는 의구심을 가지고 있지만, 그것은 C에 대한 흥미롭고 특이한 설명을 나타낸다.Jonathan Leffler
구식
개정 이력에 반드시 인정되지 않는 기타 기여자는 다음과 같다.
Alex Lockwood, Ben Jackson, Bubbles, colledot, Dana Robinson, Dwc, Erci Hou, Garen, Haziz, Johan Bezem, Jonathan Leffler, Joshua Partogi, Lundin, Matt K, Motsieu, Motsieu, Matsieu, Mathieu, Mathieu, Mat.ATM
언급URL : https://stackoverflow.com/questions/562303/the-definitive-c-book-guide-and-list
'IT이야기' 카테고리의 다른 글
Vue + Vuetify + vue-router: 페이지를 기반으로 도구 모음 내용 변경 (0) | 2022.06.14 |
---|---|
Vue 라이프 사이클 훅 확장 (0) | 2022.06.13 |
Linux 공유 메모리: shmget() vs mmap()? (0) | 2022.06.13 |
(getter 없이) vuex 상태 속성에 직접 액세스하는 것은 잘못된 관행입니다. 그 이유는 무엇입니까? (0) | 2022.06.13 |
Vuex: 컴포넌트 내에서 액션을 사용하는 것과 처리를 사용하는 것의 차이점 (0) | 2022.06.13 |