해외주문/바로드림/제휴사주문/업체배송건의 경우 1+1 증정상품이 발송되지 않습니다.
패키지
북카드
키워드 Pick
키워드 Pick 안내
관심 키워드를 주제로 다른 연관 도서를 다양하게 찾아 볼 수 있는 서비스로, 클릭 시 관심 키워드를 주제로 한 다양한 책으로 이동할 수 있습니다.
키워드는 최근 많이 찾는 순으로 정렬됩니다.
저자가 노팅엄 대학에서 하스켈에 대해 강의하면서 다듬은 교재의 내용을 바탕으로 삼은 이 책은, 어지러운 프로그래밍 작업과 코딩 수정에 고단함을 느끼는 개발자들을 위해 저술된 것이다. 컴파일 언어처럼 효율성이 높으면서도 스크립트 언어처럼 빠를 뿐 아니라, 메커니즘을 파악하기에 쉬워 프로그래밍 언어 연구자들에게 사랑받는 하스켈을 통해 프로그램을 단순하면서도 명확하고 우아아게 짜는 방법을 배울 수 있다
특히 프로그램의 성질을 증명하는 방법을 익히기 유용한 함수형 프로그래밍과 만나게 된다. 장마다 연습문제를 수록하여 학습한 내용을 점검할 수 있도록 꾸몄다. 하스켈 98을 중점적으로 다룬다.
☞ CP Say!
『하스켈로 배우는 프로그래밍』을 학습하실 때 홈페이지를 통해 참조하시면 유용한 자료를 얻을 수 있습니다.
작가정보
저자(글) GRAHAM HUTTON
그라함 허튼 교수는 함수형 프로그래밍에 대한 선도적인 연구와 교육을 하는 네 곳의 연구 중심 대학에서 일하였다. 그는 15년 이상 함수형 프로그래밍을 연구하며 30여 편의 연구 논문을 냈으며, 하스켈 워크샵(현재 하스켈 심포지움) 학회장과 함수형 프로그래밍 저널(Journal of Functional Programming)의 하스켈 특별 이슈에 대한 편집장을 역임하기도 하였다.
2009년에 곧 스코틀랜드에서 개최될 ACM SIGPLAN 국제 함수형 프로그래밍 학회(International Conference of Functional Programming)의 학회장을 역임하고 있다. 또한 그는 10년 이상 하스켈로 강의하며 대학 교과과정에서 함수형 프로그래밍을 소개하는 데 노력하고 있다.
2002년 KAIST 전산학과 졸업 후 (주)그래텍에서 팝폴더, 파일뱅크(2005년 일본) 등의 분산 네트웍 스토리지 서버 개발 및 유지보수를 하였고, 2005년부터 포틀랜드 주립대학에서 Tim Sheard 교수의 Omega 프로그래밍 언어 연구팀에서 박사과정을 밟고 있다. 박사과정 재학 중 한국인 최초로 2008 하스켈 심포지움(예전 하스켈 워크샵)에 논문을 발표하였고, Credit Suisse 2008 QSI 여름 인턴과 NASA Ames 연구소에서 2009년 여름 인턴 연구원으로 일하며 Haskell과 F#등의 함수형 프로그래밍 기술을 금융파생상품 및 항공우주 SW 분석에 활용하였다.
번역 박정훈
대학 휴학 중 인천광역시 정보화 사업 및 대전광역시 전자 회의록 구축 사업에 참여 하였으며(2000-2001), 국회의원 웹사이트 구축 및 전산화 업무(2003), ATCIS 육군전술지휘정보체계 서버 및 데이터베이스 유지보수(2004-2006) 등을 비롯한 다양한 공공 프로젝트에 참여하였다. 2008년 동아대학교에서 컴퓨터 공학과를 졸업한 후 그 동안 경험을 바탕으로 Sun Microsystems Solaris Network Administrator, Microsoft SQL SERVER 공인 엔지니어로 미국에서 일하고 있으며, 주요 관심 분야는 함수형 프로그래밍 패러다임을 실제 업무에 적용하는 것이며 현재 VSTS 2010에 들어갈 차기 F#에 대해 연구 중이다.
감수 우균
우균 교수는 KAIST 전산학과 학사(1991), 석사(1993), 박사(2003)를 취득하고, 2000년부터 2004년까지 동아대학교 조교수로, 2004년부터는 부산대학교 정보컴퓨터공학부 부교수로 학생들을 가르치고 있다. 박사학위 연구 주제는 함수형 언어(functional languages)였으며, 현재는 프로그래밍 언어 및 컴파일러 구현, 소프트웨어 공학, 프로그램 분석 및 시각화, 로봇 프로그래밍 등을 연구하는 프로그래밍 언어 연구실을 이끌고 있다.
목차
- 머리말
옮긴이 머리말
추천사
1 소개
함수
함수형 프로그래밍functional programming
하스켈의 특징
역사적 배경
하스켈 맛보기
[살펴보기]
[연습문제]
2 첫걸음 떼기
Hugs 시스템
표준 서막standard prelude
함수
하스켈 스크립트
[살펴보기]
[연습문제]
3 타입과 클래스
기본 개념
기본 타입
리스트 타입
순서쌍 타입
함수 타입
커리된curried 함수
여러 모양polymorphic 타입
여러 의미overloaded 타입
기본 클래스
[살펴보기]
[연습문제]
4 함수 정의
새것을 옛것으로부터
조건식conditional expression
보초선 등식guarded equation
패턴 매칭pattern matching
람다식lambda expression
잘린식section
[살펴보기]
[연습문제]
5 리스트 조건제시식comprehension
생성원generator
보초guard
Zip 함수
글줄string 조건제시식comprehension
카이사르 암호Caesar cipher
[살펴보기]
[연습문제]
6 되도는 함수recursive function
기본 개념
리스트로 되돌기
인자가 여럿일 때
여러 갈래로 되돌기
서로 부르며 되돌기mutual recursion
되도는 함수 정의를 위한 도움말
[살펴보기]
[연습문제]
7 함수를 주고받는higher-order 함수
기본 개념
리스트 다루기
foldr 함수
foldl 함수
함수 합성 연산자
글줄string 전송기
[살펴보기]
[연습문제]
8 함수형 문법 분석기 functional parser
문법 분석기parser
문법 분석기 타입
기본 문법 분석기
순서대로 엮기sequencing
선택choice
간단한 문법 분석기 이끌어내기
빈칸 처리
산술식 문법 분석하기
[살펴보기]
[연습문제]
9 대화식interactive 프로그램
대화interaction
입출력 타입
기본 동작basic action
순서대로 엮기sequencing
간단한 동작 이끌어내기
계산기
생명 게임game of life
[살펴보기]
[연습문제]
10 타입과 클래스 선언
타입 선언
데이터 선언
되도는 타입
늘 참tautology 검사기
추상 기계abstract machine
클래스와 인스턴스 선언
[살펴보기]
[연습문제]
11 카운트다운 문제 countdown problem
소개
문제를 수식으로 정리하기
짐승같이 무식한brute-force 풀이
생성generation하면서 계산evaluation하기
대수적 성질을 이용하기
[살펴보기]
[연습문제]
12 느긋한 계산법lazy evaluation
소개
계산 방식evaluation strategy
끝남termination
줄이기reduction 횟수
무한 구조infinite structure
모듈 방식modular 프로그래밍
깐깐한 적용strict application
[살펴보기]
[연습문제]
13 프로그램에 대한 논리적 증명
등식 바탕의 논증equational reasoning
하스켈 프로그램에 대한 논증
간단한 보기들
자연수에 대한 귀납법
리스트에 대한 귀납법
이어붙이기 연산자 없애기
번역기 정확성compiler correctness
[살펴보기]
[연습문제]
[부록] A 표준 서막standard prelude
클래스class
논리값logical value
글자character와 글줄string
수number
순서쌍tuples
아마도Maybe
리스트list
함수function
입출력input/output
[부록] B 기호표 및 Hugs 명령어
[부록] C 번역 용례
[참고문헌]
[Index]
출판사 서평
이 입문서는 처음 프로그래밍을 배우는 사람에게 가장 적합한 책이다.
프로그래밍 경험이 전혀 없는 사람도 이해할 수 있도록 모든 개념을 기초부터 차근차근 엄선된 예제를 곁들여 설명한다. 각 장에는 아주 간단한 문제부터 책에서 다루는 프로젝트를 확장하는 데 이르기까지 다양한 난이도의 연습문제를 제공할 뿐 아니라, 고급 주제에 대한 더 읽을거리도 추천하고 있다. 저자는 여러 해 동안 강의한 경험을 바탕으로 분명하고 간결하게 내용을 표현하고 있다.
이 책의 특징은 다음과 같다.
NO1. 강사와 학생들을 위해 PPT 슬라이드 및 연습문제 모범답안을 하스켈 홈페이지에서 제공한다.
NO2. 강사들은 이 책으로 진행하는 수업의 시험문제 샘플을 (모범답안과 함께) 요청할 수 있다.
NO3. 책에서 다루는 코드는 모두 최근 하스켈 구현에서 잘 동작하며 홈페이지에서 받을 수 있다.
NO4. 강의 능력이 검증된 저명한 하스켈 연구자이자 강사인 그라함 허튼 교수가 직접 집필하였다.
☞ 옥스포드 대학의 리처드 버드(Richard Bird) 교수는 이 책을 다음과 같이 극찬하고 있다.
"이 책은 초심자를 위한 입문서로 하스켈로 함수형 프로그래밍에 대해 아주 잘 소개하는 책입니다. 일류 강사이자 연구자가 저술한 책답게 책의 내용이 독자들의 시선을 확 잡아끌면서도 군더더기가 없이 가벼운 구성으로 대학 1학년 신입생에게도 무리가 없을 만큼 대학생들의 수준에 눈높이를 잘 맞추었습니다. 이 책을 전적으로 추천합니다."
서평
이 책은 Haskell이란 언어로 프로그램 짜는 법을 일러주는 책이다.
Haskell은 그 내용이 비교적 적지만 의미가 명료하면서도 비할 데 드문 표현력을 갖춘 돋보이는 언어이다. 외서를 번역한 책이지만 다양한 실무예제를 추가로 작성해 넣었으며, 문제에 대한 해답 및 해설 또한 책에서 설명하고 있는 하스켈 홈페이지에서 무료로 사용이 가능하다.
또한 이 프로그래밍 방법은 간결한 함수형 프로그램을 기초로 하기 때문에 전체적인 메커니즘을 한눈에 파악하면서 코드를 작성하고 수정하기에 편리하다.
이런 강점 때문에 해외의 대학에서는 기본 수업 과정으로 교육되고 있다.
따라서 어지러운 프로그래밍 작업에 고단함을 느끼거나, 좀 더 쉽고 간결한 프로그래밍 작업을 선호하는 개발자라면 적극 추천하는 프로그래밍 언어이다.
추천사
“Haskell로 프로그램 짜보니까 어떤 느낌 들어요?”
안기영씨에게 짤막한 서평 부탁을 몇 달 전에 받았지만, 이런 프로그래밍을 해온지도 벌써 스무 해가 다 되어 가는지라 왜 Haskell 같은 언어로 프로그램 짜는 법을 다시 배워야 하는지에 대해 가슴 벅차게 전할만한 신선한 감정이 좀처럼 일어나질 않았다. 고민 끝에 같은 부서에서 일하는 김부장에게 물었다. 내 꾐에 넘어가서 처음으로 F#이나 M같은 언어를 쓰고 있고, 그 가운데 자연스럽게 Scheme이나 Haskell 프로그래밍도 맛보게 된 사람인데다, 지금까지 C#, Java, C/C++ 같은 언어로 십 수 년 동안 프로그램 잘만 짜던 사람이라 그 견해나 평가가 궁금하던 차이기도 했다. 전화기 너머로 한참 뜸들이는 기척이 느껴지더니, 아주 간단한 답으로 이야기를 시작했다.
“아주 또렷하죠.” 맞다. 그랬다.
“그러니까, 풀려는 문제와 답을 쓰는 일이 아주 가깝다는 느낌이 들어요. 그런데도 자연스럽게 어떤 틀이 잡혀간다는 점이 달라요.”
“여태 쓰시던 프로그래밍 언어로도 표현력이나…….
특히 그저 어떻게 돌아가는 코드를 짜기보다 좋은 설계를 강조한다고 볼 수 있지 않을까요?”
“네, 뭐 그렇긴 하죠. 그런데 다른 점이 뭐냐면, 제가 전체 프로그램 틀을 한눈에 파악하면서 일하기 좋아하는데, 이 경우는 그게 훨씬 자연스럽다고 할까……. 보통 튼튼한 구조를 갖추려면 문제의 해답을 드러내기보다 구조를 짜 맞추는 코드가 늘어나는 일이 다반사인데, 이 경우는 그렇지 않아서 문제 푸는 방법을 표현하려고 애쓰다 보면 좋은 구조를 갖출 수 있게 된다는 게 참 즐거운 경험이랄까……. 그러니까 예전에는 잘 설계된 프로그램을 짜려면 설계 패턴(Design Pattern)도 정확히 이해하고 문제도 정확히 이해해야 하는데, 그 둘이 완전히 나뉘어져 있어서 적잖이 부담이 되거든요. 시간이 촉박할 때는 뭐가 옳은지 알아도 실천하기 쉽지 않은데, 이번에는 문제 푸는 방식 그대로를 충실히 표현하는데 신경을 쓰고, 작든 크든 나눌 수 있는 것은 나누고 불필요한 제약을 차근차근 없애기만 하면, 틀이 잘 잡힌 프로그램을 이끌어낼 수가 있다는 거죠.”
이 대답에 마치 모르던 것을 알게 된 것처럼 연거푸 “그렇구나!”하는 추임새를 넣어가며 얘기를 듣다가, 맨 처음 이런 언어로 프로그램을 배우게 되었을 때 느꼈을 법한 옛 느낌이 가물가물해서 뻔하다 싶은 질문을 이어 던졌다.
“처음 만져 봤을 때는 어땠어요? 받아들이기가 쉬웠어요?”
“에이, 아니죠. 처음에는 엄청 충격이었죠, 이건 뭐, 줄곧 상태를 바꿔가며 프로그램 짜던 게 몸에 배인 사람인데, 일부 가능하다고는 하지만, 변수 값 그러니까 상태를 아예 바꾸지 않는 것이 이런 방식의 기본이라 하니까……. 그런 이상한 (웃음) 생각으로 프로그램을 짜려니까 처음에는 참…….”
“이런 프로그래밍 방식을 처음 익히는 사람에게 어떤 얘기를 해주고 싶어요?”
왜 난데없이 밤에 전화를 걸어 이런 질문을 던지는지 앞뒤 연유를 찬찬히 설명한 다음 마지막으로 던진 질문이다.
“간단하죠. 알던 것은 잊어라. 그 편이 배우기 쉽다. 뭐 그런 말? (웃음)”
그럴 법도 하다. 나도 처음에는 그랬다. 하지만, 모두는 곧 알게 될 것이다. 이런 낯선 과정이 지나고 나면, 끝내 프로그램이란 것은 문제 푸는 방법을 옮겨 담는 일이요, 언어의 표현력이란 그 방법 그 자체를 있는 그대로 표현하는데 얼마나 큰 공을 들이느냐로 판단할 수 있다는 사실을. 그에 이르면 문제를 보고 언어를 고르는 법이지, 문제를 언어에 맞추지 말아야 한다는데 동의할 수밖에 없다. 그리고 어느 순간 모든 게 같아진다. 알던 것이나 알게 된 것이나 모두 같게 보이는 때가 온다. 공부를 멈추지 않는다면 반드시.
[중략]
본디 처음 이 글을 풀어낼 적에는, 현재 산업에서 즐겨 쓰고 있는 기술 속에 벌써부터 이 책에서 집중하는 기술과 경험들이 오래 전부터 녹아들어 있었고, 앞으로 병행/병렬 아키텍처가 일반화되고, 소프트웨어 품질이 산업의 성패를 가늠할 만치 중요해지는 마당에서는, 이렇듯 작고 견고한 언어로 튼튼할 뿐더러 되쓰임새(재사용성)가 뛰어난 소프트웨어 개발 기술이 중요하다는 증거를 요목조목 들이대려고도 하였다. 헌데, 그런 논리는 솔직히 나조차 지겹다. 더욱 속내를 털어 놓자면, 앞으로 이 나라 이 땅의 소프트웨어 기술자들이 실력만큼 대접을 받고 오랜 경험과 안목을 쌓아 ‘대목’으로 우러름 받는 세상은 쉽사리 오기 어려울 것 같다. 이게 한참 딴 세상을 기웃거리다 다시 한 해 남짓 산업을 둘러본 뒤 느낀 감정의 요약이다. 따라서 이 책으로 뭔가 배우고자 마음먹는다면 그것은 오로지 재미 때문이어야 한다. 이 책을 옮겨 쓴 두 사람이 모두 나와 특별한 인연을 맺고 있는 것도, 또 이런 일을 벌이고 마무리할 수 있었던 것도, 바로 이런 프로그래밍 방식에 대한 즐거움을 같이하기 때문일 것이다. 내가 몇 해 앞서, “프로그램의 구조와 해석”이란 책을 옮겨 쓴데 용기를 얻어, 이런 일을 벌였다고 말하기는 하였지만, 나는 안다. 이런 일은 용기로 마무리하기에는 너무 번거롭다. 용감한 자도 부지런한 자도 재미있어서 일하는 자를 넘어서지 못하는 법이다. 재미 말고 감히 다른 어떤 까닭으로 이런 공부를 해야 할 이유를 댈 수 있겠는가? 그 말고 그 어떤 다른 이유로 젊은 피에게 뜻을 같이 하자 소리칠 수 있겠는가? 다행히, Haskell로 프로그램을 짜면 재미있다. 처음 얼마쯤 낯설어 헤매는 시간을 넘기고 나면 갈수록 깊은 맛이 우러나오는 재미가 있다. 내가 아직도 틈나는 대로 프로그램을 짜고, 기술을 공부하고, 생각을 멈추지 않으며, 소프트웨어 기술을 떠들고 다니는 이유도 그 때문이다. 오로지 그 뿐이다.
기본정보
ISBN | 9788972808183 | ||
---|---|---|---|
발행(출시)일자 | 2009년 07월 24일 | ||
쪽수 | 368쪽 | ||
총권수 | 1권 | ||
원서명/저자명 | Programming in Haskell/Hutton, Graham |
Klover
e교환권은 적립 일로부터 180일 동안 사용 가능합니다.
리워드는 작성 후 다음 날 제공되며, 발송 전 작성 시 발송 완료 후 익일 제공됩니다.
리워드는 리뷰 종류별로 구매한 아이디당 한 상품에 최초 1회 작성 건들에 대해서만 제공됩니다.
판매가 1,000원 미만 도서의 경우 리워드 지급 대상에서 제외됩니다.
일부 타인의 권리를 침해하거나 불편을 끼치는 것을 방지하기 위해 아래에 해당하는 Klover 리뷰는 별도의 통보 없이 삭제될 수 있습니다.
- 도서나 타인에 대해 근거 없이 비방을 하거나 타인의 명예를 훼손할 수 있는 리뷰
- 도서와 무관한 내용의 리뷰
- 인신공격이나 욕설, 비속어, 혐오발언이 개재된 리뷰
- 의성어나 의태어 등 내용의 의미가 없는 리뷰
리뷰는 1인이 중복으로 작성하실 수는 있지만, 평점계산은 가장 최근에 남긴 1건의 리뷰만 반영됩니다.
구매 후 리뷰 작성 시, e교환권 200원 적립
문장수집
e교환권은 적립 일로부터 180일 동안 사용 가능합니다. 리워드는 작성 후 다음 날 제공되며, 발송 전 작성 시 발송 완료 후 익일 제공됩니다.
리워드는 한 상품에 최초 1회만 제공됩니다.
주문취소/반품/절판/품절 시 리워드 대상에서 제외됩니다.
구매 후 리뷰 작성 시, e교환권 100원 적립