지은이 Steve McConnell/나윤석 출판사 높이깊이 | 발행일 2002년 11월 20일
도서소개 소프트웨어 컨스트럭션(코드구축)과 소프트웨어 개발 과정의 중요한 부분에 대한 백과사전적 처방을 담고 있다. 여기에는 약 500개의 예제 코드와 아키텍쳐, 설계방법, 모듈과 루틴 품질 등을 평가하기 위해 즉석에서 사용할 수 있는 체크리스트가 포함되어 있다. 이 책은 파스칼 C, C++, Ada, Basic, Fortran, COBOL, 기타 절차적 언어 등, 사용하는 언어에 관계 없이 적용할 수 있는 기술들을 설명한다.
목 차 제1장 소프트웨어 컨스트럭션에의 초대
제2장 프로그램의 이해를 돕는 비유
제3장 컨스트럭션의 필요조건
제4장 루틴의 작성 단계
제5장 고급 루틴의 특성
제6장 프로그래머들의 모듈 선호
제7장 컨스트럭션에서의 고급 설계
제8장 데이터 작성
제9장 데이터명의 효과
제10장 변수 사용시 일반적으로 주의할 사항
제11장 데이터의 기본형
제12장 복합 데이터 형
제13장 직렬형 코드의 구성
제14장 조건문의 사용
제15장 루프의 제어
제16장 특이한 제어 구조들
제17장 제어와 관련된 일반적 문제들
제18장 배치와 스타일
제19장 스스로 설명하는 코드
제20장 프로그래밍 도구
제21장 프로그램 크기가 컨스트럭션에 미치는 영향
제22장 컨스트럭션 관리
제23장 소프트웨어 품질 전망
제24장 재검토
제25장 단위 테스트
제26장 디버깅
제27장 시스템 통합
제28장 코드 조정 전략
제29장 코드 조정 기법
제30장 소프트웨어 진화론
제31장 개인 성격
제32장 소프트웨어 숙달의 문제
제33장 더 많은 정보를 얻으려면
생각하는 프로그래밍 [- 프로그래밍 본질에 관한 15가지 (원제 : Programming Pearls, 2nd Edition)]
지은이 Jon Bentley/윤성준 출판사 Insight (인사이트) | 발행일 2003년 02월 04일
도서소개
Programming Pearls(2/e)의 번역서!!
프로그래밍을 할 때 기계적이거나 수동적인 태도를 가지고 있지는 않은가? 필요한 기능이 동작할 정도의 상태만 되면 할 일이 끝났다고 여겨오지는 않았는가? 드러난 버그만 수정한 후에 코드를 내버려 두지는 않았는가?
이는 프로그래머의 올바른 자세가 아니다. 적극적인 태도로 조금만 더 생각하면 여러분의 프로그램을 더 우아하게 만들 수 있다. 같은 일을 더 짧은 코드로 더 멋지게 처리할 수 있다. 그리고 이렇게 프로그램의 질이 향상되는 것에 그치는 것이 아니라, 다시금 프로그래밍의 재미를 느낄 수 있을 것이다.
그러나 단순히 API 사용법을 익히는 것을 넘어서 깊은 생각을 통해 프로그램을 향상시키는 것이 쉽지는 않다. 어떻게 접근해야 하는지 그 방법 자체가 어려울 수 있다. 이런 어려움을 겪는 사람에게 "생각하는 프로그래밍(원제:Programming Pearls)"은 프로그래머로서 진일보하는 초석이 될 것이다.
"물고기를 잡아 주기 보다는, 낚시하는 방법을 가르친다"라는 진부한 표현처럼, "생각하는 프로그래밍"은 읽는 이에게 생각하는 방법을 알려준다. 보통의 알고리즘 책과는 달리, 여러 알고리즘과 데이터 구조를 장황하게 나열하기보다는, 몇 개의 간단한 알고리즘 및 데이터 구조를 통해 생각하는 방법의 전형을 보여준다.
이 책은 총 15개의 칼럼으로 구성되어 있고, 크게 다음과 같이 나뉜다.
1부 준비. 문제에 대한 정확한 정의를 강조하는 것을 시작으로, 알고리즘과 데이터 구조가 프로그램에 미치는 영향력을 보여주고, 정확한 코드 작성을 위한 검증 기법을 자세히 소개한다.
2부 퍼포먼스. 프로그램의 퍼포먼스와 알고리즘 및 데이터 구조 간의 관계를 설명하고, 속도 향상과 메모리 절감을 위해 디자인 과정에서 적용할 수 있는 여러 기법을 알려준다.
3부 프로덕트. 1, 2부에서 배운 내용을 기반으로 실질적이고 재밌는 프로그램들을 작성하면서, 책의 주제를 공고히 한다.
목 차
제1부 준비
칼럼1 조개껍질 깨기
대화 / 1.2 정확한 문제 기술 / 프로그램 디자인 / 구현 스케치 / 원리
연습문제 / 더 읽을거리
칼럼2 아하! 알고리즘
세 가지 문제 / 여기저기에서 쓰이는 이진 탐색(Binary Search)
기초적인 조작의 위력 / 정렬 / 원리 / 연습문제 / 더 읽을거리
sidebar : 전철어구 프로그램의 구현
칼럼3 프로그램의 구조를 결정하는 데이터
설문 조사 프로그램 / 폼 레터 프로그래밍 / 다른 예제들 / 데이터 구조화하기
특화된 데이터를 위한 강력한 도구 / 원리 / 연습문제
칼럼4 정확한 프로그램 작성
생각보다 어려운 이진 탐색 / 프로그램 작성 / 프로그램에 대한 이해
원리 / 프로그램 검증의 역할 / 연습문제 / 더 읽을거리
칼럼5 프로그래밍에서의 사소한 문제
가상코드로부터 C로 / 테스트 장치(harness) / 단정문(assertion)사용 요령
자동화된 테스트 / 시간측정 / 완전한 프로그램 / 원리 / 연습문제
더 읽을거리
sidebar : 디버깅
제2부 퍼포먼스
칼럼6 퍼포먼스에 대한 개관
사례 연구 / 디자인의 수준 / 원리 / 연습문제 / 더 읽을거리
칼럼7 봉투뒷면에 하는 간단한 계산
기초 기술 / 퍼포먼스 추정 / 안전계수(Safety Factors)/ Little의 법칙
원리 / 연습문제 / 더 읽을거리
sidebar : 일상생활에서의 간단한 계산
칼럼8 알고리즘 디자인 기법
문제 및 간단한 알고리즘 / O(n2) 알고리즘 두 가지 / 나누어 푸는 알고리즘
스캐닝(scanning) 알고리즘 / 무엇이 중요한가? / 원리 / 연습문제 / 더 읽을거리
칼럼9 코드 튜닝
전형적인 이야기 / 코드 튜닝의 몇 가지 예제 / 대수술-이진 탐색 / 원리
연습문제 / 더 읽을거리
칼럼10 메모리 절약
핵심-단순함 / 이해를 돕는 문제 / 데이터 공간을 위한 기법
코드 공간을 위한 기법 / 원리 / 연습문제 / 더 읽을거리
sidebar : 대규모 절감
칼럼11 정렬
삽입 정렬 / 간단한 퀵 정렬 / 개선된 퀵 정렬 / 원리 / 연습문제 / 더 읽을거리
칼럼12 표본 선정 문제
문제 / 솔루션 하나 / 디자인 공간 / 원리 / 연습문제 / 더 읽을거리
칼럼13 탐색
인터페이스 / 선형적 구조 / 이진 탐색 트리 / 정수를 위한 구조 / 원리
연습문제 / 더 읽을거리
sidebar : 실질적 탐색 문제
칼럼14 힙(Heaps)
데이터 구조 / 두 가지 중요한 함수 / 우선순위 큐 / 정렬 알고리즘 / 원리
연습문제 / 더 읽을거리
칼럼15 문자열 처리
단어 / 어구 / 텍스트 생성하기 / 원리 / 연습문제 / 더 읽을거리
1판에 대한 에필로그
2판에 대한 에필로그
부록1 알고리즘 카탈로그
부록2 추정퀴즈
부록3 시간과 공간에 대한 비용모델
부록4 코드 튜닝을 위한 규칙
부록5 탐색을 위한 C++ 클래스
연습문제 힌트
연습문제 해답
1권의 내용은 주로 프로그램을 작성할 때 많이 사용하게 되는 "자료구조"에 관한 것입니다. 기본적인 자료 구조라 할 수 있는 배열과 스택, 큐, 연결 리스트, 그리고 복잡한 자료 구조인 나무 구조, 우선 순위 큐 등을 다루고 있습니다. 이 1권의 내용은 주로 전산학과 2학년 과정에 포함되어 있는 "자료구조론"의 내용입니다.
이에 비해 2권 C로 배우는 알고리즘(2) - 활용 알고리즘 (이재규, 세화)의 내용은 프로그램의 다른 측면인 "알고리즘"에 대한 것입니다. 전산학과 3,4학년 과정에 해당하는 내용이지만 1권을 착실히 독파한 독자라면 2권의 독파에도 별 어려움이 없을 것으로 믿습니다. 그리고 1권에서 배운 자료구조가 어떻게 실제로 활용되는지 보여주는 좋은 예들이 많이 있습니다.
뛰어난 프로그래머가 되기 위해서는 알고리즘에 능숙해야 합니다. 알고리즘의 숙달은 프로그램을 한층더 세련되게 하고 효율을 높여줍니다. 이 책은 철저한 원리 이해와 완벽한 C 프로그램으로 다양한 알고리즘과 문제해결에 대한 창조적인 방법론을 제공합니다.
이 책의 주요 내용
*첫째 : 알고리즘의 기본 개념과 용어를 쉽게 풀이하였다.
*둘째 : 기본적인 자료구조에서 어려운 자료구조까지 그 원리와 C로 구현함에 있어서의 문제점을 상세히 소개하였다.
*셋째 : 애매하기만한 재귀호출에 대해 명확한 해석법과 나아가 재귀호출을 제거하는 방법을 체계적으로 제공하였다.
*넷째 : 프로그램 개발시 가장 많이 부딪치는 문제인 정렬과 검색에 대해서 상세하고 다양한 접근 방법을 소개하고, 곧바로 활용할 수 있는 라이브러리를 제공합니다.
C 문법책을 보았지만 어떻게 프로그램을 작성해야 할지 잘 모르는 초급자, 알고리즘의 벽을 넘지 못한 중급자에게 좋은 프로그래밍 지침이 될 것입니다.
목 차 001. 일러두기
002. 개요
003. C언어
004. 자료구조
005. 재귀호출
006. 정렬 알고리즘
007. 검색