메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

좋은 프로그램을 만드는 핵심 원리 25가지

좋은 프로그램을 만드는 핵심 원리 25가지

한빛미디어

집필서

절판

  • 저자 : 김종훈 , 김종진 , 정원희 , 정은영
  • 출간 : 2003-01-04
  • 페이지 : 536 쪽
  • ISBN : 897914220X
  • 물류코드 :1220
  • 초급 초중급 중급 중고급 고급
4.4점 (12명)
좋아요 : 23
         좋은 프로그램의 안쪽에는 핵심 원리가 살아있다

프로그래밍을 하기 위해 알아야 할 사항이 무엇인가? 물론 프로그래밍 언어를 알아야 한다. 그러면 언어만 알면 프로그래밍이 되는가? 아니다. 그러면 무엇을 더 알아야 할까? 이 책은 그러한 고민에서 출발한다.

프로그래밍에 꼭 필요한 전산수학, 데이터 구조, 알고리즘 등을 모두 다루고 있다. 특히 각 알고리즘이 동작하는 예를 그림을 통해 보여주므로 초보자도 쉽게 이해할 수 있다. 그리고 각 이론을 프로그램으로 직접 구현해볼 뿐만 아니라 실제 시스템에서 어떻게 적용되는지 그 예까지 제시한다.

또한 독자를 위해 저자의 홈페이지(http://www.jejue.ac.kr/~jkim)를 운영하고 있어, 사이버 학습 효과도 누릴 수 있다. [자료실] 코너에서 프로그램 소스를 제공하고, [좋은 프로그램을 만드는 핵심 원리 25가지] 코너에 올라온 질문에 대해 신속히 답변할 것이며, 프로그래밍과 관련해 다양한 정보도 계속 추가할 예정이다.

대상 독자층
  • 프로그래밍을 시작하는 초보자
  • 학교와 학원 등에서 프로그래밍, 전산수학, 데이터 구조, 알고리즘 등을 수강하는 학생
  • 전산 수학, 데이터 구조, 알고리즘 등을 강의하는 선생님
  • 프로그램을 개발하는 프로그래머
  • 정보올림피아드, 정보처리(산업)기사 등 프로그래밍 관련 경시 대회와 자격증 준비생
중요 내용
  • 퍼지 세탁기의 인공지능도 알고보면 집합 이론
  • 데이터 사이의 관계는 DBMS 구축과 관리의 핵심
  • 수학적 관점과 프로그래밍 관점의 함수에 대한 이해
  • 인간은 십진수, 기계는 이진수로 생각한다
  • 난공불락 암호화의 핵심 키워드는 소수
  • 간결한 프로그래밍을 위한 재귀호출의 원리는 수열
  • 수학자가 도박에 강한 이유는 순열과 조합에 밝기 때문
  • 대규모 과학기술계산 프로그램의 열쇠는 행렬 이론
  • 급수는 제논의 역설에 대한 프로그래머의 반격 무기
  • 시뮬레이션 프로그램의 이론적 기초는 통계
  • 제한적인 저장공간에서 정수와 실수를 처리하는 방법
  • 예측 불가능한 게임 캐릭터의 좌충우돌 동작 원리는 난수
  • 네트워크가 스스로 오류를 검출하고 정정하는 원리
  • 디지털 시스템의 기본은 논리회로
  • 배열은 데이터 구조의 핵심원리
  • 재귀호출은 알고리즘 공부의 기초
  • 혼란 속에서 규칙을 찾는 정렬 마법사
  • 디스크나 메모리 또는 인터넷의 탐색 알고리즘
  • 스택과 큐를 이용한 데이터 구조화의 동작 원리
  • 편리한 데이터 삽입과 삭제를 위한 연결 리스트
  • 데이터 모델 구축의 기본은 트리
  • 차량자동항법시스템의 기본 원리는 그래프 이론
  • 해싱을 이용한 컴파일러의 심볼 테이블 구현
  • 컴퓨터가 체스 챔피언을 이긴 비결은 인공지능 탐색
  • 시저 암호에서 DH 알고리즘까지 암호화의 기반 이론
추천사

컴퓨터 수학에 관심에 관심을 가져왔는데도 막상 프로그래밍을 할 때에는 어떻게 적용할 것인지 막막한 경우가 많았다. 수많은 도서를 구입해 읽었지만 "이론 따로, 실전 따로"의 한계를 벗어날 수 없었다. 이 책은 수학 이론을 프로그래밍에서 어떻게 써먹는지 가장 쉬우면서도 깊이 있게 가르쳐주었다. 읽을 때마다 새로운 응용을 위한 영감을 얻는다.

           정은옥 (교수, 건국대학교 수학과 응용수학전공)

프로그래밍을 직업으로 하는 제가 항상 곁에 두고 싶은 책입니다. 프로그래밍을 하다보면 벽에 부딪힐 때가 있는데 이 책은 그 문제를 해결함은 물론이고 새로운 아이디어까지 떠올리게 합니다. "이게 이렇구나!"라는 감탄이 절로 나옵니다.

           변석규 (프로그래머, (주)드림위즈 시스템 개발팀)

과학의 언어 수학과 컴퓨터의 언어 C가 만난 멋진 내용! 이산 수학에 대한 구체적인 입문을 원했던 사람에게도 그만일 듯 하다. 수학과를 나온 나도 꼭 써보고 싶었던 책, 그러나 이제 이렇게 나와주었으니 읽는 기쁨으로 대신 하련다. 혹 수학이 재미없었던 사람에게 "생각하는" 재미를 되살려줄 지도... 이제 연습장 대신 PC를 통해 문제를 풀고 과정을 이해하는 (자신의) 모습이 무척이나 흐뭇하게 느껴질 것이다.

           이아스(개발자, 티맥스 소프트 자바 테크놀러지 이벤절리스트)

자료 구조와 알고리즘 강의에 적합한 교재를 선정하기가 쉽지 않았는데 이제 그러한 염려를 할 필요가 없을 것 같네요. 이해하기 힘든 알고리즘에 대한 모든 동작 예를 그림을 통해 제공하고 있어 저는 물론이고 일반 학생들에게도 큰 도움이 될 것 같습니다.

           한금희 (교수, 가톨릭대학교 컴퓨터·전자공학부 컴퓨터공학전공)

컴퓨터나 수학을 전공하지 않은 사람들이 자칫 소홀히 하기 쉬운 프로그래밍에 있어서의 과학적 기초를 아주 쉽게 하나씩 설명해 주는 드물지만 소중한 시도의 책이다. 이미 튼튼한 기초를 갖추고 있는 사람들에게는 스스로를 재점검할 수 있는 복습의 기회를 제공해 주고, 기초가 부족했던 사람들에게는 매우 훌륭한 참고 서적이 되리라 생각한다.

           임백준(소프트웨어 엔지니어, 미국 루슨트 테크놀로지 광통신 그룹)
김종훈 저자

김종훈

제주대학교 교육대학 초등컴퓨터교육전공 교수로, 교육기부 프로그램인 ‘창의컴퓨터교실’과 국내 최대 규모의 소프트웨어 교육 관련 온라인 커뮤니티인 ‘소프트웨어 교육 카페(http://cafe.naver.com/scratchprogramming)’를 운영하고 있다. 2016년과 2018년에 세계인명사전인 ‘마르퀴즈 후즈후’(Marquis Who’s Who) 컴퓨터과학 분야에 이름이 등재되었다. 저서로는 『중학교 정보 교과서』, 『Scratch 』, 어린이와 청소년을 위한 ‘수프’ 시리즈인 『스크래치 알고리즘』, 『앱 인벤터』, 『IT 퍼즐』, 『프로그래밍 비타민』, 그리고 『컴퓨터 과학』, 『프로그래밍 언어론』 등 30여 권이 있다. 지금도 교육과 집필을 통해 소프트웨어 교육이 올바르게 정착하는 데 큰 힘을 쏟고 있다.
김종진 저자

김종진

홍익대학교 대학원 컴퓨터공학과 프로그래밍언어 연구실 박사과정과 (주)참좋은인터넷 연구원으로, 홍익대학교와 가톨릭대학교 등에서 강의를 진행하고 있다. 국민대학교 경영학과에서 경영정보 전공으로 학사와 석사 학위를 취득하였으며, 저서로 『컴퓨터 영재 C언어의 이해』 등이 있고, XML 관련 관련 논문을 발표하였다. 현재 인공위성 알고리즘 개발 프로젝트를 수행하고 있다.
정원희 저자

정원희

제주교육대학교 컴퓨터교육과를 졸업하고 현재 위미 초등학교 교사로 있다. 저서로 『ICT 활용 교육 이렇게 쉽네』가 있고, 논문으로 『GTK+로 구현한 리눅스용 학생관리 프로그램 개발』 등이 있으며, 리눅스 환경의 교육용 프로그램 개발과 컴퓨터를 이용한 교수학습 방법에 관심이 많다.
정은영 저자

정은영

현재 무릉초등학교 교사이며, 정보통신기술 교육과 컴퓨터 특기 적성 교육을 담당한다. 제주교육대학교 컴퓨터교육과를 졸업했으며, 논문으로 『활동중심의 초등과학지도를 위한 웹 코스웨어』 등이 있다. 이해하기 어려운 컴퓨터 이론을 쉽게 강의하는 방법에 관심이 많다.

1장. 집합 - 퍼지 세탁기의 인공지능도 알고보면 집합 이론
     01 집합이란?
     02 집합의 표시
     03 공집합, 유한집합, 무한집합
     04 부분집합
     05 집합의 연산
     06 원소의 개수
     07 퍼지 집합

2장. 관계 - 데이터 사이의 관계는 DBMS 구축과 관리의 핵심
     01 관계란?
     02 관계 그래프
     03 여러 가지 관계
     04 관계의 성질
     05 관계형 데이터베이스

3장. 함수 - 수학적 관점과 프로그래밍 관점의 함수에 대한 이해
     01 함수란?
     02 함수의 그래프와 상등
     03 일대일 함수와 일대일 대응
     04 여러 가지 함수
     05 C 언어에서의 함수

4장. 진법 - 인간은 십진수, 기계는 이진수로 생각한다
     01 진법이란?
     02 2진법
     03 그 외 진법

5장. 소수 - 난공불락 암호화의 핵심 키워드는 소수
     01 소수란?
     02 에라토스테네스의 체
     03 메르센 소수
     04 페르마 소수
     05 유클리드의 소수의 유한성
     06 소수를 판별하는 알고리즘

6장. 수열 - 간결한 프로그래밍을 위한 재귀호출의 원리는 수열
     01 수열이란?
     02 등차수열
     03 조화수열
     04 등비수열
     05 피보나치 수열
     06 C 언어에서의 문자열

7장. 순열과 조합 - 수학자가 도박에 강한 이유는 순열과 조합에 밝기 때문
     01 경우의 수
     02 순열이란?
     03 조합이란?
     04 이항정리

8장. 행렬 - 대규모 과학기술계산 프로그램의 열쇠는 행렬 이론
     01 행렬이란?
     02 다양한 크기의 행렬과 상등
     03 행렬의 조건과 특수행렬
     04 행렬의 덧셈, 뺄셈, 실수배
     05 행렬의 곱셈
     06 역행렬

9장. 급수 - 급수는 제논의 역설에 대한 프로그래머의 반격 무기
     01 급수란?
     02 급수의 종류
     03 제논의 역설
     04 테일러 급수를 이용한 제곱근

10장. 기초 통계 - 시뮬레이션 프로그램의 이론적 기초는 통계
     01 기초 통계량
     02 도수분포표

11장. 컴퓨터에서의 정수와 실수 - 제한적인 저장공간에서 정수와 실수를 처리하는 방법
     01 고정소수점 표현
     02 고정소수점 연산
     03 부동소수점 표현
     04 부동소수점 연산

12장. 난수 - 예측 불가능한 게임 캐릭터의 좌충우돌 동작 원리는 난수
     01 난수란?
     02 컴퓨터에서 난수 만들기
     03 난수 생성 방법
     04 C 언어에서의 난수

13장. 오류 검출과 정정 - 네트워크가 스스로 오류를 검출하고 정정하는 원리
     01 오류 검출
     02 오류 정정
     03 네트워크에서의 오류 검출

14장. 컴퓨터 논리 - 디지털 시스템의 기본은 논리회로
     01 논리회로
     02 부울 대수
     03 C 언어에서의 논리 연산

15장. 배열 - 배열은 데이터 구조의 핵심 원리
     01 배열이란?
     02 배열의 종류
     03 디스크 배열

16장. 재귀호출 - 재귀호출은 알고리즘 공부의 기초
     01 재귀호출이란?
     02 1부터 n까지의 합
     03 팩토리얼
     04 피보나치 수열
     05 하노이 탑

17장. 정렬 - 혼란 속에서 규칙을 찾는 정렬 마법사
     01 정렬이란?
     02 삽입 정렬
     03 셀 정렬
     04 버블 정렬
     05 선택 정렬
     06 퀵 정렬
     07 2원 합병 정렬
     08 기수 정렬
     09 히프 정렬

18장. 탐색 - 디스크나 메모리 또는 인터넷의 탐색 알고리즘
     01 탐색이란?
     02 선형 탐색
     03 이진 탐색
     04 피보나치 탐색
     05 보간 탐색
     06 이진 탐색 트리

19장. 스택과 큐 - 스택과 큐를 이용한 데이터 구조화의 동작 원리
     01 스택
     02 스택을 이용한 수식 계산
     03 스택을 활용하는 함수 호출
     04 큐
     05 원형 큐
     06 큐에서 기다리는 프로세스

20장. 연결 리스트 - 편리한 데이터 삽입과 삭제를 위한 연결 리스트
     01 순차 리스트의 문제점
     02 연결 리스트
     03 단순 연결 리스트
     04 이중 연결 리스트
     05 연결 리스트를 이용한 스택
     06 연결 리스트를 이용한 메모리 사용 관리
     07 연결 리스트를 이용한 디스크 할당

21장. 트리 - 데이터 모델 구축의 기본은 트리
     01 트리란?
     02 이진 트리
     03 이진 트리의 순회
     04 이진 탐색 트리
     05 히프
     06 파스 트리

22장. 그래프 - 차량자동항법시스템의 기본 원리는 그래프 이론
     01 그래프란?
     02 그래프의 표현
     03 그래프의 탐색
     04 최소 비용 신장 트리
     05 최단 경로

23장. 해싱 - 해싱을 이용한 컴파일러의 심볼 테이블 구현
     01 해싱과 해시 테이블
     02 해시함수
     03 충돌과 오버플로
     04 충돌의 해결
     05 컴파일러의 심볼테이블

24장. 인공지능 탐색 - 컴퓨터가 체스 챔피언을 이긴 비결은 인공지능 탐색
     01 휴리스틱 탐색
     02 게임용 탐색

25장. 암호화 알고리즘 - 시저 암호에서 DH 알고리즘까지 암호화의 기반 이론
     01 시저 암호
     02 비게네르 암호
     03 전치형 암호
     04 폴리비우스 암호
     05 DH 알고리즘

찾아보기

컴퓨터의 동작원리를 모르고 막연히 프로그래밍을 배우시는 분들에게 추천하고 싶은 생각이 드는 책입니다. 이 책을 읽고 나면, 프로그래밍을 하면서 프로그램이 어떻게 컴퓨터 내부에서 동작하는 지를 대략적이라도 상상할 수가 있습니다.

컴퓨터가 수를 어떻게 표현하는지, 메모리와 연산 처리기의 구조는 어떤지 등...

비록 자세하게는 아니지만, 쉽게 잘 설명해주고 있습니다.

프로그래밍을 처음 해보시는 분들에게 추천합니다.

얼마전에 읽어봤습니다.

제목 그대로 좋은 프로그램을 만드는 핵심 원리 25가지...



내용도 분명히 프로그래밍 하는데 있어 중요한 여러 원리들로 구성되어 있긴한데,

책 한권에 너무 많은 내용을 담으려다 보니 너무 원론적이 되버리지 않았나 싶습니다.

수박 겉핥기 까지는 아니지만 좀 더 깊이있는 접근이 이뤄졌으면 하는 바램입니다.

차라리 두권이나 세권으로 나눠서 출간하는것도 괜찮았을거 같네요.



하지만 그래도 이 분야에 처음 발을 들여놓으시는 분들이나 기초지식이 좀 부족하다고 느끼셨던 분들이 보기에는 확실히 좋은 책인거 같습니다.

성안당에서 나온 "성공과 실패를 좌우하는 1%의 프로그래밍 원리"와 비슷한 내용의 책이다. 컴퓨터의 내부 구조와 프로그래밍 언어를 함께 설명하여, 컴퓨터 및 프로그램의 동작 원리를 쉽게 설명하고 있다. 기본적인 원리를 충실히 함으로써 더욱 성숙한 프로그래머로 거듭날 수 있도록 도와주는 책이라고 생각한다.

프로그래밍 언어를 처음 배우기 시작했거나, 컴퓨터의 기본 구조를 모르는 초보 프로그래머들에게 권하고 싶은 책이다.

한동안 기초를 튼튼히~ 뭐, 이런 바람이 불 때 샀었는데, 그 때 한번 읽고는 그 뒤로 읽어본 적이 없군요. 특별히 뭘 하다가 찾아볼 일도 없고 말이죠.



제목 그대로 좋게 말하면 기초의 2%를 채워주는 책이라고 할 수 있고, 안 좋게 말하면 두고 두고 볼만한 류의 책은 아닌 듯 하군요.



그렇다면 2%를 채워주는 역할을 하는 책으로는 좋은 것이냐하면...그건 그때 그때 달라요 같군요.



개인적으로는 난이도가 저에게 적절하지는 않다는 느낌이었습니다. 전반부는 대부분의 내용이 아는 얘기들의 나열이었습니다. 가끔씩 모르는 내용들이 나오기도 했지만, 아주 중요한 2%를 채워주는 것은 아니었습니다.



그리고 가끔씩씩 제가 잘못 알고 있는 건지, 책의 내용이 잘못된 것인지, 아니면 설명이 잘못된 것인지, 좀 이상한 것들도 있더군요. (너무 오래전에 읽었던 것이라 어떤 내용이었는지 정확한 기억은 없지만, 아마 정렬쪽 얘기였던 것 같은데...)



혹 구입하실 분은 한번쯤 훑어보시고 자신의 수준에 맞는지 확인 하시고 구입하세요...

책 對 책

"좋은 프로그램을 만드는 핵심원리 25가지" (이후 핵심원리)

"성공과 실패를 결정하는 1%의 프로그래밍 원리" (이후 1% 원리)



< 대결 1장 >

- 핵심원리의 선제 공격 : 요즘 책들은 이름도 멋들어지게 짓습니다. "좋은 프로그램을

만드는 핵심원리 25가지"라..그러나, 저는 처음에 한 10 장 정도 읽고 나서 이 책이 이름을

잘못 지은 게 아닌가 하는 생각이 들었습니다.

분명히 프로그램을 만드는 핵심원리 25가지인데.. 왠 수학 이론만 자잘하게 나오는 거람..

"프로그래밍을 위한 수학적 원리"로 바꿔야 하는 게 아닌감?라는 생각을 했었죠. 고등학교때

배운 정석에나 나올만한 내용들이 비슷한 형식으로 나오기 시작해서, 처음엔 실망도 많이

했죠.

그러나, 핵심원리는 기본적인 수학적인 원리부터 시작해서, 프로그래밍을 할 때 중요한 말그대로

핵심원리가 매 과마다 군더더기 없이 소개된 점이 좋았습니다. 한 Chapter마다, 원리와 실례가

한문장으로 표현되어 있어서 요약 정리가 되었던 점도 좋았습니다.



" 이정도는 되야지 핵심 원리지.!!"



- 1% 원리의 반격 : 얼마전에 성공과 실패를 결정하는 1%의 프로그래밍의 원리로 히트를 친 이후로

계속해서, 1% 시리즈는 출간되고 있습니다. 그만큼 개발자들이 "원리", "기본"에 목말라 있던 건

아닌지 생각이 듭니다. 이 책의 구성은 하드웨어부터 시작하여, 소프트웨어 개발까지..단계적으로

짚어가며, 중요한 원리를, 보통때 같으면 그냥 넘어갈만한 숨어있는 원리를 재미있게 소개하고

있습니다.

이 책의 장점은 중요한 내용을 재미있고, 가볍게 소개하고 있다가 아닐까합니다. 컴퓨터 서적이

딱딱한 것이 아니라, 재미있는 백과사전같을 수가 있다는 생각이 들었습니다.

그리고, 책 디자인과 제본 상태..정말 고급스러워 보여 좋았습니다.



" 얇지만, 모든 것을 꽤뚫고 있는 프로그래밍 원리의 백과사전 "



< 대결 2장 >

- 핵심원리의 필살기 : 보통 컴퓨터 전공하는 사람들 또는, 전공하지 않은 개발자들은 대학 과정에서

수학을 접하는 과목이 이산수학, 확률 정도로 알고 있습니다. 어떻게 보면, 가장 밀접한 관계가 있을 것

같은 컴퓨터 분야와 수학은.. 실제로는 가까이 하기엔 너무 먼 당신이었던 것이었습니다.

이 책의 최대 장점은 실제로 우리가 알고 있는 응용 분야가 이러한 학문적 기초를 기본으로 세워졌다는

것을 알 수 있습니다. 퍼지 이론이 집합 이론에서 나왔고, 수학적인 관점에서의 함수가..

프로그래밍에서의 함수와는 어떻게 다르고...등등..

사실 수학적인 마인드가 기본이 되야, 프로그래밍적 마인드를 그위에 세울 수 있다고 생각합니다.

그 외에 자료구조 책에서 공부했던 내용들이나, 까마득한 내용들이 다시 복습할 수 있었고, 등등...

새로운 분야의 연구가 그냥 생겨나는 것이 아니라, 기존 연구들의 토대로 만들어진다는 생각도 들었습니다.



" 수학은 컴퓨터 과학의 어머니 "



- 1%의 필살기 : 사실 프로그래밍만 하다보면, 편협하게 자신의 분야에 대해서만 전문가가 되는 경우가

많습니다. 사실 업무에 필요한 비즈니스 로직만 알고, 언어와 툴을 다루는 법만 알고 있으면,

내부에서 어떻게 돌아가든지 상관이 없겠지요. 그러나, 프로그래밍 자체가 컴퓨터와 개발자간의 대화하기

위한, 의사소통을 위한 수단이라고 생각한다면...

좀더 컴퓨터를 이해하기 위해서는 내부적으로 어떻게 작동하고 있는 지...

좋아하는 사람일수록 좀더 많은 것..좀더 많은 것을 알고 싶은게 사람의 마음인 것 처럼...

컴퓨터를 이해하기 위해서..특히 프로그래밍을 이해하기 위해서...알아야할 최소한의 것들을 이 책은 소개

하고 있습니다.



" 컴퓨터 프로그래밍을 잘 이해하기 위한 첫걸음 "



< 대결 3장 >

- 핵심원리의 단점 : 처음에 말했듯이..처음에는 수학적인 내용이 소개가 되는데, 저는 (혹시 알지 모르지만,)

디딤돌 출판사에서 나온 개념원리를 보는 듯 했습니다. =_= (고등학교 졸업한지가 언젠데...)

그래서, 아직까지도 한 수학한다는 분은 처음에 지루할 수가 있습니다. 저자 분들 중에 선생님이 계셔서 그런가..



" 나는 개념원리가 아니다 "



- 1%의 단점 : 내용을 쉽게 소개하려고 보니.. 너무 가벼워 진게 아닌가 생각이 들었습니다. 좋은 내용이고,

좋은 책이긴 하지만, 너무 난이도가 낮아진 게 아닌가 생각이 들었습니다. (물론, 새로 배우는 내용도 많았습니다.)



" 날아갈 것 같다. "



< Final >

비슷한 주제를 가지고 서로 다른 방식으로 설명을 해놓은 책 같아서, 이렇게 비교 서평을 올리게 되었습니다.

뭐 여기서는 어떤 책이 좋다 나쁘다..그런 것을 따지기 위해서 글을 올린 게 아니니..

둘다 프로그래밍을 시작하려는 초급 개발자 분이나, 컴퓨터 과에 처음 입학하여 프리뷰를 하기 위해 좋은

책이 아닐까 생각이 듭니다.

1% 원리는 가볍게 읽을 수 있으니, 교양서적으로도 좋을 것 같구요.

핵심원리는 고등학교 때 배운 내용과 연계 가능하니...수학적 마인드 자체가..

프로그래밍 마인드로 옮겨갈 수있는 도움을 줄지도 모르겠군요.

둘다 좋은 책이고, 앞으로도 더욱더 좋은 책이 많이 나왔으면 하는 생각이 듭니다.

흠... 초보에겐 소스부분이 약간 어려울 수 있구 중급에겐 조금 쉬울 수 있네요...

개인적으론 "C로 구현한 알고리즘"과 비슷하다고 생각됩니다..

물론 점더 자세한 설명과 해법이 전개되어 있어 읽기 편하다는 장점이 있습니다..



초보에게 프로그램 안목을 높여 주는 책인 듯 싶고요..

중급자에게는 교양 정도의 수준인 듯 합니다..

즉 초보자에겐 어렵고 중급자가 보기엔 깊이가 없어서 아쉬운 책이라는 거죠...



초보에게 권해드리고 싶고요..

중급자인 경우는 개념 공부에만 도움이 될 겁니다..

좋은 것이 있을까 기대하고 이것을 사시는 중급자 이상의 프로그래머는 눈이 이렇게(ㅡㅡ*) 될 겁니다...^^;

책 자체는 잘 씌여져 있구 짜임새 있어서 좋습니다..

초보 프로그래머를 졸업하려구 하시는 분들께 권해드립니다...

대학교 2학년 때 전산수학(이산수학)을 배우던 때가 생각납니다. 중.고등학교 시절 머리가 나빴던지 수학시간만 되면 긴장이 되곤 했었습니다. 무슨 이론이니 하는 것들을 외우는 건 나름대로 자신이 있었는데, 그 이론을 문제에 적용하는 능력이 떨어졌었죠. 하지만, 전산수학은 참 재미가 있었습니다. 당시 같은 학부의 다른 전공에서 자료구조 수업을 듣는 친구가 있어 그 친구를 도와 자료구조를 같이 공부하게 되었는데, 전산수학 시간에 배운 것들을 자료구조에서도 활용하였습니다. 그래서 전산수학은 참 재미있었던 과목으로 기억됩니다. 학교를 휴학하고 병역특례로 취직을 해서 일을 하고 있는데 역시 이론과 실제는 다르다는 것을 느꼈습니다. 역시나 활용도가 떨어지더군요. (머 실제 거창한 작업을 하는 것은 아닙니다만… ^^; )



『좋은 프로그램을 만드는 핵심 원리 25가지』는 이런 전산수학(이산수학), 자료구조, 알고리즘에 관한 내용들을 다루고 있습니다.



각각의 장을 실제 사용할 수 있는 부분과 연관하여 설명하고 있기 때문에 내용이 쉽게 이해가 되는 것 같습니다. 특히 “1장. 집합”에서의 퍼지 세탁기, “2장. 관계”에서의 관계형 데이터베이스 관리 시스템(RDBMS), “24장. 인공지능 탐색”에서의 컴퓨터와 체스 챔피언과의 체스 대결 소개는 아주 흥미를 유발했던 부분이었습니다.



물론 다소 지루했던 부분도 있었습니다만, C를 이용하여 실제 코드를 보여줌으로써 이런 경우에는 이렇게 이용할 수 있다는 예를 들어 설명했기 때문에 이해하기가 쉽습니다. 역시 따분한 이론만으로 채워진 책보다 질리지 않아 좋았습니다. (우리나라에서 이론서 보다는 활용서가 많이 출판되는 이유가 바로 이런 것 때문일지도 모르겠네요…) 그리고 각 장의 첫 페이지에 수학이나 컴퓨터 등 각 장의 내용과 관계 깊은 유명인을 소개하며 상식을 넓힐 수 있게 해준 부분도 아주 재미있었습니다. 처음 그 부분을 보고 재미가 있어서 그 인물 소개만 다 읽어 버렸습니다. ㅡ.ㅡ;;;



물론 이 책이 좋은 점만 있는 것은 아닙니다. 이 책은 4명의 저자가 공동으로 집필한 책이어서 각 장 마다 구조가 조금 달라 약간의 혼란을 야기하기도 합니다. 그리고 전산수학, 자료구조, 알고리즘… 이 3가지 부분 모두 각각의 부분별로 따로 책을 한 권 이상 만들 수 있는 내용들입니다(실제 학부에서 하는 수업에도 각각의 교재들이 참 두껍다). 이 3가지 부분을 한 권의 책에서 다루기 위해 많은 부분을 자세하게 소개하지 못하였을 것입니다만(그 유명한 Donald E. Knuth 교수의 『The Art of Computer Programming』은 정렬과 탐색만으로 책을 한 권(Vol. 3) 만들 정도이다.) 어느 정도의 흥미 유발에는 아주 효과적일 듯 합니다.



실제로 전산에서는 수학적인 내용이 많이 필요하지만(벌써 아주 아주 많이 사용되고 있지만) 저는 많은 부분을 간과하고 대충대충 문제를 해결해 버리는 것 같습니다. 하지만 이 책을 읽게 되어 새로운 생각을 가지게 되었고, 앞으로 잘 활용하기 위해 노력해야 겠다는 생각을 가지게 되었습니다.



어떻게 구현하는 것이 가장 최상의 동작을 수행할 수 있는가? 정답은 없을지도 모르겠네요. ^^;

프로그래밍에 기본이 되는 이산 수학,자료구조,알고리즘의 기본을 배울수 있다고 생각되네요.

특히 소스는 간단하지만, 깊이가 있네요..

예를 들어..연결리스트의 소스는 구조체의 데이타형을 만들어,다시 포인터로 감싸고, 그 포인터에대한 데이터형을 만들어 포인터 변수를 이용하여, 각 노드를 연결하는 방법은 짧은 소스지만,

깊이가 있군요.

초보자나 자료구조의 개념이 확실히 잡히지 않는

전산 학도라면 권할만 합니다. 이책을 보시고 다시 자료구조나 알고리즘에 관련된 전문서적을 보신다면 좀더 쉽게 다가 설수 있다고 생각됩니다.

일단, 책 제목처럼 구성은 25가지의 원리를 각각의 챕터로 나누어서 설명하고 있다. 그리고 각 챕터는 그 주제와 관련된 인물에 대한 이야기로 시작하는데, 나름대로 흥미롭다. 뒤를 이어 그 챕터에서 다룰 내용이 어디에 어떻게 쓰이는지 설명하고, 그 챕터에서 다룰 내용을 요약해 설명한다. 그리고 각 원리의 정의와 내용 설명이 이어지는 형식이다.



이 책의 장점과 단점들을 살펴보자면, 다음과 같다.



장점

① 이산수학, 자료구조, 알고리즘, 컴퓨터공학개론, 논리회로 등과 같은 많은 내용을 다루고 있는데, “핵심 원리 25가지”로 부를 수 있을 만큼, 적절한 주제들을 선택해서 한 권의 책으로 담았다.

② 원리를 설명하는데 있어서, 보는 것만으로도 이해될 수 있을 만한 그림을 많이 사용했으며, 내용 설명도 또한 쉽게 되어 있다. 따라서 전산에 처음 발을 들여놓은 초보자도 쉽게 이해할 수 있다.



단점

① 예제 프로그램들이 너무 간단하고, 부실하며 가독성이 떨어진다. “좋은 프로그램”을 만드는 기본 중에 하나가 주석인데, 주석도 제대로 되어있지 않다. 그리고 예제 프로그램이 없는 챕터들도 있다.

② 수학을 다루는 몇 챕터의 내용이 고등학교 수준에 머무른다.

③ 홈페이지를 운영하고 있으나, 달랑 게시판 하나밖에 없다. 그리고 각 챕터와 관련된 과제를 올리고 있지만 거기에 대한 풀이나 설명이 없다.



책에서는 예상 독자층을 넓게 생각하고 있는데, 전반적인 내용과 수준으로 살펴봤을 때, 이 책의 독자층은 전산에 갓 입문한 사람들이 적당할 것 같다. 전산에 입문해서 앞으로 심도 있게 공부하게 될 자료구조나 알고리즘과 같은 다양한 주제들에 대해서 “부담 없이” 쉽게 접해볼 수 있을 것이다.



결론적으로, 역시 이 책의 가장 큰 장점은 자칫 딱딱하고 어렵게 느껴질 수 있는 각각의 주제들을 그림으로 쉽게 설명하고 있다는 것이다. 끝으로, 책에서 제공하고 있는 예제 프로그램들이 부실하다고 했는데... 이 책을 읽으면서, 예제 프로그램과 책에 나와 있는 원리들을 객체지향언어로 구현해보는 것도 좋을 것 같다.

이 책을 읽기 전에 한빛미디어 홈페이지에서 책의 간단한 소개와 함께 추천사를 읽었다. 거기에는 많은 독자들의 추천사가 있었는데, 책을 끝까지 읽어본 느낌으로는 임백준님의 추천사가 가장 적절할 것 같았다.

“컴퓨터나 수학을 전공하지 않은 사람들이 자칫 소홀히 하기 쉬운 프로그래밍에 있어서의 과학적 기초를 아주 쉽게 하나씩 설명해 주는 드물지만 소중한 시도의 책이다. 이미 튼튼한 기초를 갖추고 있는 사람들에게는 스스로를 재점검할 수 있는 복습의 기회를 제공해 주고, 기초가 부족했던 사람들에게는 매우 훌륭한 참고 서적이 되리라 생각한다.


책의 내용을 간단하게 정리하면 고등학교때 배웠던 수열, 순열, 조합, 행렬 등에 대한 내용과 컴퓨터공학과의 전공필수과목인 논리회로(또는 디지털 디자인 등등으로도 불린다)에 대한 내용들, 그리고 자료구조 정도의 내용을 담고 있다. 책의 뒤쪽부분에 인공지능과 암호화에 대해 다루고 있는데, 그냥 간단하게 훓고만 지나가는 정도이다.



이 책은 대학교 컴퓨터전공 교과과정을 이수한 사람들에게는 복습 이상의 의미는 없을거라는 생각이 든다. 논리회로에 대한 내용과 자료구조에 대해서는 설명도 꽤 괜찮았고 제공되는 C 소스코드도 있어서 만족스러워 보인다. 하지만 보기좋게 잘 정리해 놓은 그 이상의 뭔가는 없다. 책의 앞쪽에서 수열, 순열등에 대해 언급하고 있는데 내용이나 수준이 고등학교때 배운 정도의 수준이고 실제로 이산수학이라든가 응용수학, 또는 선형대수학과 같은 내용들은 다루고 있지 않다.



그렇다면 이런 내용을 모르는 독자들이 읽기에는 적절한 책인가라고 묻는다면 또 그렇지도 않다. 처음 접하는 사람들에게 설명은 지나치리만큼 간단명료하고 스스로 해볼 수 있는 간단한 연습문제 조차도 제공하고 있지 않다.



‘좋은 프로그램을 만드는 핵심원리 25가지’ 는 분명 괜찮은 책이지만 내용과 난이도 조절에는 실패했다고 본다. 처음부터 500 페이지 정도 분량의 책에 담기에는 좋은 프로그래밍을 만들기 위해 필요한 것들이 너무 많기 때문이 아닐까? 차라리 시리즈별로 책을 내는 것이 더 좋았을지도 모르겠다는 생각이 들었다. 또한 책 중간중간에 생각보다 오타들이 많이 보였는데, 좀 더 편집에 신중했었더라면 하는 아쉬움이 남았다.



그럼에도 불구하고 이 책이 번역서가 아닌 국내집필이라는 점, 그리고 테크닉이나 API 에 대해 장황하게 설명하는 도서들이 난무하고 있는 요즘에 이러한 기본원리를 다루는 보기 드문 국내서적이 출간되었다는 것은 큰 의미를 가진다고 본다. 앞으로 좀 더 전산학의 근간이 되는 많은 양서들이 출간되길 바라며, 또한 한빛미디어에서도 좀 더 다양한 이론서들의 출간에 힘써줬으면 하는 바람이다.

- 수 백개의 그림을 이용해 동작 과정을 설명하는 내용에 많은 점수를 드립니다. 기초가 없는 사람들에게는 더 없는 선물이라 생각됩니다.



- 또한 지리하지 않고 간결하면서 핵심을 설명하는 문체가 또 마음에 듭니다. 어떤 책들은 설명은 몇 페이지가 되는데 핵심은 얼마되지 않은 경우가 많은데 이 책은 그렇지 않습니다.



- 또 장점을 말한다면 홈페이지 운영입니다. 이용하지는 않았지만 방문해봤는데 책에는 없는 [과제]도 올리고 있더라구요. 질문도 올리라고 하고는 있습니다.



- 그러나 프로그램에 대한 설명이 조금은 부족한 듯 합니다. 소스에 대한 이해를 하려면 약간은 C언어를 알아야 할 것 같습니다.



- 컴퓨터에 관심을 두고 있는 분들과 자료구조, 프로그래밍 등을 공부하는 분들은 이 책을 곁에 두면 ~~~

프로그래밍에 대한 지식이 없는 초보자도 쉽게 접근할 수 있도록 구성된 프로그래밍 안내서. 프로그래밍에서 자칫 소홀히 하게 되는 과학적 기초를 하나씩 설명해나가는 점이 돋보인다. 또 실제 시스템에서 프로그래밍이 어떻게 적용되고 있으며 핵심원리는 무엇인지 명확하게 설명하고 있다. ‘퍼지 세탁기의 인공지능도 알고보면 집합이론’ ‘인간은 십진수, 기계는 이진수로 생각한다’ ‘수학자가 도박에 강한 이유는 순열과 조합에 밝기 때문’ 등 흥미로운 주제를 통해 함수, 소수, 수열, 행렬이론, 급수, 통계, 난수, 그래프 이론, 오류검출과 정정 등 총 25가지의 핵심 프로그램 원리들을 하나씩 탐구해나간다.



-전자신문 북서평 2003/01/18일자 류현정기자 dreamshot@etnews.co.kr

결제하기
• 문화비 소득공제 가능
• 배송료 : 2,000원배송료란?

배송료 안내

  • 20,000원 이상 구매시 도서 배송 무료
  • 브론즈, 실버, 골드회원이 주문하신 경우 무료배송

무료배송 상품을 포함하여 주문하신 경우에는 구매금액에 관계없이 무료로 배송해 드립니다.

닫기

리뷰쓰기

닫기
* 도서명 :
좋은 프로그램을 만드는 핵심 원리 25가지
* 제목 :
* 별점평가
* 내용 :

* 리뷰 작성시 유의사항

글이나 이미지/사진 저작권 등 다른 사람의 권리를 침해하거나 명예를 훼손하는 게시물은 이용약관 및 관련법률에 의해 제재를 받을 수 있습니다.

1. 특히 뉴스/언론사 기사를 전문 또는 부분적으로 '허락없이' 갖고 와서는 안됩니다 (출처를 밝히는 경우에도 안됨).
2. 저작권자의 허락을 받지 않은 콘텐츠의 무단 사용은 저작권자의 권리를 침해하는 행위로, 이에 대한 법적 책임을 지게 될 수 있습니다.

오탈자 등록

닫기
* 도서명 :
좋은 프로그램을 만드는 핵심 원리 25가지
* 구분 :
* 상품 버전
종이책 PDF ePub
* 페이지 :
* 위치정보 :
* 내용 :

도서 인증

닫기
도서명*
좋은 프로그램을 만드는 핵심 원리 25가지
구입처*
구입일*
부가기호*
부가기호 안내

* 온라인 또는 오프라인 서점에서 구입한 도서를 인증하면 마일리지 500점을 드립니다.

* 도서인증은 일 3권, 월 10권, 년 50권으로 제한되며 절판도서, eBook 등 일부 도서는 인증이 제한됩니다.

* 구입하지 않고, 허위로 도서 인증을 한 것으로 판단되면 웹사이트 이용이 제한될 수 있습니다.

닫기

해당 상품을 장바구니에 담았습니다.이미 장바구니에 추가된 상품입니다.
장바구니로 이동하시겠습니까?

자료실