-
-
C 기초 플러스 6판 - 최신 C11 버전 포함, 개정판
Stephen Prata 지음, 윤성일.이선민.조혜란 옮김 / 성안당 / 2017년 12월
평점 :
오타, 번역 상태가 뒷부분으로 갈수록 정말.. 실망스럽다.
단순한 오타라면 이해하고 넘어가겠는데, 치명적인 오타도 많다.
초반부의 깔끔한 번역에 비해 왜 그럴까 궁금해 하면서 나름대로 정오표를 작성하면서 읽다가
결국은 5판을 따로 구입해서 비교하면서 읽게 되었다.
6판은 5판의 윤성일씨 번역을 바탕으로 6판에서 추가된 부분만 부분적으로 덧붙인 걸로 보이는데
5판에서 문제 없었던 내용이 6판에서는 틀려지게 된 경우가 많았다. 예를 들자면,
p572 리스트 11.28에 보면 변수의 선언은 5판의 name, company 를 쓰고,
선언 하지도 않은 변수 first, last 를 6판에서는 사용하고 있는데
이렇게 하면 당연히 컴파일 에러만 발생할뿐 결과가 출력될리 없다.
그런데, 떡 하니 프로그램의 실행 결과는 다음과 같다. 라고 적혀있다.
6판 실행 예) "이, 선민 : $25000.00"
5판에서 윤성일 역자가 이름, 회사명을 변수로 선언하고 사용했던 것을
6판에서 이선민 역자가 이름, 성으로 선언안된 변수명으로 바꾼것이다.
5판 실행 예) "윤성일, TCL, : $2000.00"
이처럼 엉터리 내용이 자꾸 불거져 나와서 역자분의 이력을 살펴보게 되었는데,
미국 오하이오 주립대학 일어일문학과를 졸업, 현재 도서출판 ㈜성안당의 국제부 이사로 재직중.
역서로는 『특별한 장갑 뜨기』, 『아빠의 임신 일기』, 『현대 선교와 변증』, 『저염식 레시피』 등이 있다.
이 책의 전체 번역을 담당하였다. 이렇게 나와 있었다.
6판을 읽는 내내 역자가 C 언어에 대한 이해가 있는 분인지 궁금했는데 이해가 되었다.
6판의 번역은 중.후반부로 갈수록 정말 실망스러웠다.
지금은 졸지에 5판과 6판, 6판 원서까지 3권을 필요할때마다 비교해가면서 읽고 있는데,
이럴바엔 그냥 속 편하게 5판을 보거나 다른 책을 보는게 낫겠다 싶다.
C 언어를 배우고자 하는 독자에게 이렇게 혼란을 주는 책이라면, 더 읽을 필요가 있을까 싶다.
좋은 책을 망쳐 놓은 출판사는 반성하기 바란다.
지금까지 6판을 읽으면서 정리한 6판 정오표를 아래에 덧붙인다.
-=-=-=-=-=-=-=-=-=-
'C 기초 플러스' 6판 정오표 - (20180921. 6차 개정증보 1판 7쇄를 읽으면서 작성함)
(그런데 (2023년 2월 17일 기준) 9_10쇄, 11_12쇄 정오표에도 본인이 작성한 아래 내용이 빠져있음)
p227-5행: 검사 조건이 평가될 때에만 내려진다는 (것을) 알아야 한다. - '것을'이 빠졌다.
p237-14행: canoes == 5 ( 비교연산자가 '==' 아니라, 대입연산자 '=' 이 들어가야 맞다.)
p240-끝행: printf(" %d %d\n 다음에 겹따옴표(")가 빠졌다.
p345-17행: 2) 시간당 $10.00 3)이 맞다. 2)는 시간당 $9.33이다.
p362-7~9행: 리디렉션이 작동하지 않을 경우 ~ 리디렉션이 동작하지 않는다면,..... 같은 내용이다.
p363-17행: 중복된 결합 리디렉션, 스페이스 넣기의 설명이 중복되었다.
p397-3행: 일반적으로, 프로토타입은 합수 - 함수로 고쳐야 맞다. (5판에서 추가된 부분)
p409-3행: 두 개의 int가 매개변수 - 두 개의 int형 매개변수..... 가 자연스럽다.
p1037-22행: printf(...., response ---> res 가 맞다. (5판은 response가 맞다 )
p479-8행: *(ptr4 + 3) 은 *(ptr1 + 3) 으로 고쳐야 맞다.(5판은 올바르게 되어있다)
p479-끝행: *(ptr4 + 3) 은 *(ptr1 + 3) 으로 고쳐야 맞다.(5판은 맞게 되어있다)
p480-16행: 세 번째(이자 마지막) 원소인 - 괄호 친 부분을 삭제해야 맞다. 원소는 모두 5개다.
p480-아래에서 7행: 따라서 &pr1은 pt1을 가리키고 - &prt1은 prt1을 가리키고 (5판에서 추가된 부분)
p513-아래에서 10행: 3이 101이 되도록 초기화하라 - 3이 아니라 13이 맞다.(5판에서 추가된 부분)
p519-본문 5행 'an old-fashioned' 삭제해야 맞다. #define MSG 를 보라.
p528-아래에서 12행: mytalents[1][2]가 '1'인 것처럼 - 숫자 '1'이 아니라 소문자 'l' 이다.
p533-아래에서 10행: 다른 모든 컴파일러와 - 다른 모든 컴파일러가
p534-10행: 할당되지 않는 - 할당되지 않은
p534-아래에서 7행: 그것에 대해 행복할 필요가 없을 것이다. (원서 확인 요함) List 11.6
p545-아래에서 7행: 문자 'r'를 - 문자 'r'을
p545-아래에서 7행: 포인터)다. - 포인터)이다.
p554-아래에서 2행: i++ 끝에 세미콜론이 빠졌다.
p554-아래에서 6행: ret_val = fgets(st, n, stdin) 끝에 세미콜론이 빠졌다.
p555-본문 4행: Wonderflower(s) smell like old shoes. - s 가 빠졌다.
p559-6행: #define MAX 40 문장은 #define SIZE 40 으로 고쳐야 맞다.
p563-22행부터 끝까지의 s_gets 함수는 사용되지 않으므로 삭제해야 한다. (5판은 맞게 돼있다.)
p564-아래에서 9행 - #define LISTSIZE 값이 6 이어야 책 내용과 같은 결과가 나온다.
p564-배열 list 의 크기는 5인데, 배열의 원소는 6개다. (5판은 맞는데 6판은 추가했지만 엉터리다.)
p564-아래에서 8행 - int main() - int main(void)로 하라고 저자는 줄곧 말해왔다.
p565-본문 5행 - 단어를 3개 찾았다. (배열 크기 LISTSIZE가 5일때는 2개, 6일때 3개다)
p572-리스트 11.28 - "성를 입력하시오" - "성을 입력하시오"가 맞다.
p572-리스트 11.28 - name, company로 변수 선언하고 first, last를 사용하고 있다. (5판에서는 맞다)
p572-리스트 11.28은 변수명을 바르게 고치지 않고는 "이, 선민 : $25000.00"은 절대로 출력될 수 없다.
p601-16행: entiry - entity 가 맞다.
치명적인 오류가 점점 많아지고 있다. 이 책을 더 읽고 싶지가 않다.