간편결제, 신용카드 청구할인
인터파크 롯데카드 5% (29,930원)
(최대할인 10만원 / 전월실적 40만원)
북피니언 롯데카드 30% (22,050원)
(최대할인 3만원 / 3만원 이상 결제)
NH쇼핑&인터파크카드 20% (25,200원)
(최대할인 4만원 / 2만원 이상 결제)
Close

만들면서 배우는 리스프 프로그래밍

원제 : Land of LISP
소득공제

2013년 9월 9일 이후 누적수치입니다.

판매지수 48
?
판매지수란?
사이트의 판매량에 기반하여 판매량 추이를 반영한 인터파크 도서에서의 독립적인 판매 지수입니다. 현재 가장 잘 팔리는 상품에 가중치를 두었기 때문에 실제 누적 판매량과는 다소 차이가 있을 수 있습니다. 판매량 외에도 다양한 가중치로 구성되어 최근의 이슈도서 확인시 유용할 수 있습니다. 해당 지수는 매일 갱신됩니다.
Close
공유하기
정가

35,000원

  • 31,500 (10%할인)

    1,750P (5%적립)

할인혜택
적립혜택
  • I-Point 적립은 마이페이지에서 직접 구매확정하신 경우만 적립 됩니다.
추가혜택
  • 2/7(화) 이내 발송 예정  (서울시 강남구 삼성로 512)
  • 무료배송
  • 주문수량
    감소 증가
    • 이벤트/기획전

    • 연관도서

    • 상품권

    AD

    책소개

    게임을 만들면서 개념을 학습하는 리스프 입문서. 리스프와 함수형 언어는 현대 컴퓨터 과학에 많은 영향을 끼치고 있으며 그 영향력은 점차 확대되고 있다. 또한, 함수형 언어의 학습은 프로그래밍에 대한 사고를 확장하게 하는 장점이 있어 프로그래머의 관심이 높아지고 있다. 이 책에서는 게임을 만들고 여러 각도에서 개선하며, 웹 서버에 이르기까지 다양한 예제를 통해 리스프를 배울 수 있다. 인공지능, 기계 학습, 휴리스틱 같은 전문적인 개념도 익힐 수 있도록 구성했다.

    출판사 서평

    게임을 만들면서 개념을 학습하는 리스프 입문서

    1958년에 개발된 리스프는 현재까지 쓰이는 함수형 언어이다. 리스프 이후로 함수형 언어는 다양한 변종이 등장했으나 기본 개념은 리스프를 계승하고 있다. 현대 언어는 익명 함수, 람다 연산, 메타 프로그래밍 등의 고급 프로그래밍 기법을 채택하고 있는데, 이는 함수형 언어의 특징을 차용한 것이다. 함수형 언어는 멀티코어 환경, 병렬 실행 환경에 강점이 있으며, 대용량, 대규모 분산 처리에 용이하다는 장점이 있어 인기를 얻고 있다. 실제로 구글의 대규모 분산 처리가 가능한 맵리듀스 알고리즘의 맵과 리듀스라는 용어도 리스프에서 유래했다. 리스프와 함수형 언어는 현대 컴퓨터 과학에 많은 영향을 끼치고 있으며 그 영향력은 점차 확대되고 있다. 또한, 함수형 언어의 학습은 프로그래밍에 대한 사고를 확장하게 하는 장점이 있어 프로그래머의 관심이 높아지고 있다.이제 리스프로 함수형 프로그래밍을 경험해보자.

    [주요 내용]
    - 리스프 문법의 속성 완성 과정
    - 간결하고 우아한 함수형 프로그램 작성하기
    - 매크로 사용
    - DSL(Domain-Specific Language) 만들기
    - 웹 서버 개발
    - 개발한 웹 서버를 이용한 웹 브라우저 게임 만들기
    - 운명의 주사위 게임 개발
    - 오크 배틀 게임 개발

    역자의 말
    대학생 시절, 교수님께서 리스프를 소개해 주셨습니다. 괄호로 이루어진 너무도 간결한 문법이라 프로그램을 짜는 데 매우 짧은 시간이 걸렸습니다. 그 후 리스프에 대해 더 알고 싶었지만 리스프 관련 책이 모두 예전에 출간된 것뿐이어서 아쉬워하던 중 이 책이 출간되어 무척 반가웠습니다. 현대의 많은 언어가 리스프의 아이디어를 가져와 사용하는데, 가비지 컬렉션, 동적 타입과 인터프리터와 같은 개념이 그 중의 일부입니다.
    컴퓨터 과학계의 노벨상이라 불리는 “튜링 상”을 받은 과학자인 존 매카시가 창안한 언어이고, 많은 변종을 탄생시키며 오늘날에 이르렀습니다. 존 매카시는 인공지능 관련 논문을 많이 발표했는데, 컴퓨터 인공지능이 아이폰 4S에 탑재된 시리나 그 전신인 엘리자처럼 의미를 주고받을 수 있어야 한다고 생각했습니다. 인공지능 기술의 미래를 낙관적으로 바라보았죠. 2000년까지 스탠포드에 머무르며 관련 분야 활동을 지속했지만 안타깝게도 지난 2011년 10월 24일 숨을 거두었습니다(괄호 안에서 편히 쉬시길!). 최신 언어에 비하면 초라해 보이기도 하지만, 고차 함수를 사용하고 코드와 데이터를 자유자재로 넘나드는 고유의 특징은 여전히 빛을 발하는 리스프만의 색깔입니다(그 밖에 여러 가지가 있는데, 이 책을 보면서 배울 것입니다!).
    이 책은 게임을 만들고 여러 각도에서 개선하며, 웹 서버에 이르기까지 다양한 예제를 통해 리스프를 배울 수 있는 책입니다. 아울러 인공지능, 기계 학습, 휴리스틱 같은 전문적인 개념도 익힐 수 있죠. 루비나 파이썬, PHP, 자바 등과 같이 전문서가 많지도 않고 개발자 커뮤니티도 활발하지 않지만, 리스프 언어 자체가 가지고 있는 매력은 그 모든 문제를 극복하고도 남으리라 생각합니다.
    지난 몇 개월 동안 이 책을 번역하며 힘들 때도 있었지만 그보다는 즐거운 기억이 더 많았습니다. 내가 몰랐던 사실, 문제를 더 좋게 풀 수 있는 방법, 이것을 보며 독자가 느낄 재미 등을 상상하면서 즐겁게 번역했습니다. 번역을 마무리하는 시점에서 많은 분이 떠오릅니다. 먼저 리스프를 처음 소개해 주셨던 명지대학교 윤충화 교수님, 같은 연구실의 김상귀 박사님, 오랜 시간 같이 일했던 미국에 계신 양경호 박사님에게 감사 인사를 드립니다. 또한 고등학교 시절부터 컴퓨터 분야의 길을 응원해 주셨던 권종철 선생님, 대안 교육에 힘쓰고 계신 마리학교의 성국모 선생님, 늦은 시간까지 매일 연구에 매진하는 카이스트 웹사이언스 공학과 사람 모두에게 감사 인사를 드립니다. 그리고 한빛미디어 한동훈님의 배려 덕분에 더 수월하게 일할 수 있었습니다. 마지막으로 힘든 시기를 잘 참고 이해해 준 여자친구 K양에게도 고맙다는 말을 전합니다.
    옮긴이_ 조태훈

    목차

    머리말
    __ 어떤 점이 리스프를 그토록 멋지고 특이하게 만드는가?
    __ 리스프가 그렇게 좋다면 왜 더 많은 사람이 쓰지 않을까?
    __ 리스프는 어디에서 왔는가?
    __ 리스프의 힘은 어디에서 왔는가?

    SECTION I 리스프는 힘이다
    1 리스프 시작하기
    __리스프 변종
    ____두 리스프 이야기
    ____앞날이 기대되는 리스프
    ____스크립트 언어로 쓰이는 리스프
    ____안시 커먼 리스프
    __CLISP로 시작하기
    ____CLISP 설치하기
    ____CLISP 실행하기
    __이 장에서 배운 것
    2 첫 리스프 프로그램 만들기
    __내 숫자를 맞춰봐! 게임
    __리스프에서 전역변수 선언하기
    ____big과 small 변수 선언하기
    ____전역변수를 정의하는 다른 함수
    __리스프의 기본 수칙
    __리스프에서 전역함수 정의하기
    ____guess-my-number 함수 정의하기
    ____smaller와 bigger 함수 정의하기
    ____start-over 함수 정의하기
    __리스프에서 지역변수 정의하기
    __리스프에서 지역함수 정의하기
    __이 장에서 배운 것
    3 리스프 문법으로의 여행
    __문법과 의미
    __리스프 문법의 기초
    ____심볼
    ____숫자
    ____문자열
    __리스프는 코드와 데이터를 어떻게 구분하는가
    ____코드 모드
    ____데이터 모드
    __리스트
    ____콘셀
    ____리스트 함수
    ____중첩 리스트
    __이 장에서 배운 것

    SECTION II 리스프는 대칭이다
    4 조건에 따라 결정하기
    __nil과 ()의 대칭
    ____비었다는 것은 곧 False와 같다
    ____()의 네 가지 가면
    __조건문: if와 그 밖에 것
    ____한 걸음 나아가 if 이해하기
    ____if를 넘어서: 대안이 되는 when과 unless
    ____그 자체가 전부인 명령어: cond
    ____case로 분기하기
    __조건 절에서 쓰는 요령
    ____숨은 조건 and와 or 사용하기
    ____참과 함께 다른 값도 반환하는 함수 사용하기
    __비교하기: eq와 equal, 그리고 다른 것
    __이 장에서 배운 것
    5 텍스트 게임 엔진 만들기
    __마법사의 어드벤처 게임
    ____게임 세계
    ____기본 요구사항
    __관련 풍경 묘사하기
    __장소 묘사하기
    __경로 묘사하기
    ____유사인용 동작 원리
    ____한 번에 여러 경로 정의하기
    __특정 장소의 물건 설명하기
    ____눈에 보이는 물건 나열하기
    ____눈에 보이는 물건 묘사하기
    __전부 출력하기
    __게임 세계 둘러보기
    __물건 집기
    __보관함 확인하기
    __이 장에서 배운 것
    6 리스프에서의 상호 작용: 입력과 출력
    __글자의 출력과 입력
    ____화면에 출력하기
    ____사용자에게 Hello라고 말하기
    ____print와 read부터 시작하기
    ____사람의 방식으로 읽고 출력하기
    __리스프에서 코드와 데이터의 대칭
    __게임 엔진에 직접 만든 인터페이스 추가하기
    ____직접 만드는 REPL
    ____read 함수 직접 작성하기
    ____game-eval 함수 작성하기
    ____game-print 함수 작성하기
    __화려해진 새 게임 인터페이스 시험하기
    __read와 eval의 위험성
    __이 장에서 배운 것
    65 람다: 한 장을 차지할 만큼 중요한 함수
    __람다가 하는 일
    __람다가 왜 그토록 중요한가
    __이 장에서 배운 것
    7 기본 리스트 뛰어넘기
    __이상한 리스트
    ____점 리스트
    ____짝
    ____원형 리스트
    ____연관 리스트
    __복잡한 데이터 처리하기
    ____트리형 데이터 표현하기
    ____그래프 표현하기
    __그래프 생성하기
    ____DOT 정보 생성하기
    ____노드 식별자 변환하기
    ____그래픽 노드에 이름표 추가하기
    ____노드의 DOT 정보 생성하기
    ____DOT 파일을 그림으로 바꾸기
    ____그래프를 그림으로 만들기
    __무향 그래프 생성하기
    __이 장에서 배운 것
    8 예전의 웜퍼스는 잊어라
    __대도 웜퍼스 게임
    __‘배배 꼬인 도시’의 에지 정의하기
    ____무작위로 에지 생성하기
    ____loop 명령어로 반복문 만들기
    ____섬으로 고립되는 것 방지하기
    ____‘배배 꼬인 도시’의 마지막 에지 만들기
    __‘배배 꼬인 도시’의 노드 생성하기
    __대도둑 웜퍼스 게임 초기화하기
    __도시 지도 그리기
    ____부분적인 데이터로 도시 그리기
    ____도시 걸어다니기
    __웜퍼스를 사냥하자!
    __이 장에서 배운 것
    9 고급 데이터 타입과 제너릭 프로그래밍
    __배열
    ____배열 사용하기
    ____제너릭 할당문 사용하기
    ____배열 대 리스트
    __해시 테이블
    ____해시 테이블 사용하기
    ____여러 개의 값 반환하기
    ____해시 테이블의 성능
    ____해시 테이블로 더 빨라진 ‘대도둑 웜퍼스’ 만들기
    __커먼 리스프의 스트럭처
    ____스트럭처로 작업하기
    ____스트럭처를 언제 써야 하는가
    __포괄적으로 데이터 다루기
    ____차례로 나열된 값 다루기
    ____타입 단정 함수로 제너릭 함수 직접 작성하기
    __오크 대전 게임
    ____플레이어 전역변수와 몬스터 전역변수
    ____주요 게임 함수
    ____플레이어 관리 함수
    ____플레이어 공격에 대한 헬퍼 함수
    ____몬스터 관리 함수
    ____몬스터
    ____대전을 벌이자!
    __이 장에서 배운 것

    SECTION III 리스프는 해킹이다
    LOOP와 FORMAT: 리스프의 취약한 부분
    10 LOOP 명령어로 반복문 짜기
    __LOOP 매크로
    ____LOOP에 관련된 몇 가지 기법
    ____LOOP에서 궁금했던 모든 것
    __LOOP를 써서 진화하자!
    ____게임 세계 속 식물의 성장
    ____동물 생성하기
    ____게임 세계의 하루
    ____게임 세계 그리기
    ____사용자 인터페이스 만들기
    ____진화의 과정을 지켜보자!
    ____진화에 대해 설명하기
    __이 장에서 배운 것
    11 FORMAT 함수로 글자 출력하기
    __FORMAT 함수 해부하기
    ____목적지에 대한 매개변수
    ____제어 문자열 매개변수
    ____값에 대한 매개변수
    __리스프 값을 출력하기 위한 제어 부분
    __숫자의 출력 형식에 대한 제어 부분
    ____정수형 숫자를 출력하는 제어 부분
    ____실수형 숫자를 출력하는 제어 부분
    __여러 줄의 결과값 출력하기
    __출력 결과의 자리 맞추기
    __제어 부분을 사용하여 리스트 순회하기
    __데이터 테이블을 만드는 최고의 포맷 기법
    __로봇을 공격하라!
    __이 장에서 배운 것
    12 스트림으로 작업하기
    __스트림의 종류
    ____스트림의 종류
    ____스트림의 방향
    __파일로 작업하기
    __소켓으로 작업하기
    ____소켓 주소
    ____소켓 연결
    ____소켓을 통해 메시지 보내기
    ____자원 반환하기
    __문자열 스트림: 괴짜 타입
    ____스트림을 함수로 보내기
    ____긴 문자열로 작업하기
    ____읽기와 디버깅
    __이 장에서 배운 것
    13 웹 서버를 만들어 보자!
    __커먼 리스프에서 오류 처리하기
    ____예외 상황 만들기
    ____사용자 예외 상황 만들기
    ____특정 상황 가로채기
    ____예기치 못한 상황에서 자원 보호하기
    __맨손으로 웹 서버 만들기
    ____웹 서버 동작 원리
    ____요청의 매개변수
    ____요청의 헤더 해석하기
    ____문자열 스트림으로 get-header 함수 테스트하기
    ____요청의 본문 해석하기
    ____마무리 단계: serve 함수
    __동적 웹 사이트 만들기
    ____요청 처리기 테스트하기
    ____웹 사이트 열기
    __이 장에서 배운 것
    함수형 프로그래밍은 아름다워

    SECTION IV 리스프는 과학이다
    14 함수형 프로그래밍으로 리스프의 수준 높이기
    __함수형 프로그래밍은 무엇인가?
    __함수형 스타일로 작성된 코드 파헤치기
    __고차 프로그래밍
    ____절차형 코드와의 코드 구성
    ____함수형 스타일 사용하기
    ____고차 프로그래밍으로 구제하기
    __함수형 프로그래밍은 왜 안 되는가
    __함수형 프로그래밍이 왜 멋진가
    ____함수형 프로그래밍은 버그를 줄인다
    ____함수형 프로그램은 더 작다
    ____함수형 코드는 더 우아하다
    __이 장에서 배운 것
    15 함수형 스타일로 작성된 “운명의 주사위” 게임
    __운명의 주사위 게임 규칙
    __운명의 주사위 게임 예
    __운명의 주사위 게임 버전 1 구현하기
    ____전역변수 선언하기
    ____게임판 구현하기
    ____운명의 주사위 게임 규칙 분리하기
    ____게임 트리 생성하기
    ____차례 넘기기
    ____공격 이동 계산하기
    ____인접 영역 찾기
    ____공격
    ____병력 충원하기
    ____새로운 game-tree 함수 사용하기
    ____다른 사람과 맞붙기
    __지능을 갖춘 적 만들기
    ____미니맥스 알고리즘
    ____미니맥스 알고리즘을 실제 코드로 구현하기
    ____인공지능 플레이어와 함께 하는 게임 반복문 만들기
    ____사람 대 컴퓨터 게임하기
    __운명의 주사위 게임 속도 개선하기
    ____클로저
    ____메모이제이션
    ____꼬리 호출 최적화
    ____3×3 크기의 판에서 하는 게임의 예
    __이 장에서 배운 것
    16 리스프 매크로의 마법
    __간단한 리스프 매크로
    ____매크로 확장
    ____매크로는 어떻게 변환되는가
    ____단순한 매크로 사용하기
    __복잡한 매크로
    ____리스트를 나누는 매크로
    ____매크로 내 반복 실행 막기
    ____변수 충돌 방지하기
    ____재귀 매크로
    __매크로: 위험성과 그 대안
    __이 장에서 배운 것
    17 특정 도메인 언어
    __도메인이란 무엇인가?
    __SVG 파일 작성하기
    ____tag 매크로로 XML/HTML 생성하기
    ____SVG용 매크로와 함수 만들기
    ____더 복잡한 SVG 예제 만들기
    __마법사의 모험 게임을 위한 사용자 명령어 만들기
    ____새 게임 명령어 직접 만들기
    ____완성된 마법사의 모험 게임하기
    __이 장에서 배운 것
    18 지연 프로그래밍
    __리스프에 지연 평가 추가하기
    ____lazy와 force 명령 만들기
    ____지연 리스트 라이브러리 만들기
    ____일반 리스트와 지연 리스트 사이의 변환
    ____지연 리스트에 대해 매핑하고 검색하기
    __운명의 주사위 게임 버전 2 구현하기
    __더 큰 게임판에서 인공지능 플레이어 작동시키기
    ____게임 트리 다듬기
    ____휴리스틱 적용하기
    ____큰 차이로 이기는가 vs 작은 차이로 이기는가
    ____알파-베타 프루닝
    __이 장에서 배운 것
    19 그래픽을 입한 웹 기반의 운명적 주사위 게임
    __SVG 포맷으로 게임판 그리기
    ____주사위 그리기
    ____육각판 그리기
    ____게임판 그리기
    __웹 서버 인터페이스 만들기
    ____요청 처리기 작성하기
    ____게임 웹 서버의 제약 사항
    ____새로운 게임 초기화하기
    ____승자 발표
    ____사람 플레이어 처리하기
    ____컴퓨터 플레이어 처리하기
    ____HTML 내에서 SVG 게임판 그리기
    __운명의 주사위 버전 3 플레이하기
    __이 장에서 배운 것
    20 운명의 주사위 게임을 더 재미있게
    __플레이어 수 늘리기
    __주사위 굴리기
    ____기회 노드 만들기
    ____실제로 주사위 굴리기
    ____엔진에서 주사위 굴리기 코드 호출하기
    ____인공지능 개선하기
    __운명의 주사위 충원 규칙 개선하기
    __결론

    에필로그
    찾아보기

    저자소개

    콘래드 바스키 [저] 신작알림 SMS신청
    생년월일 -

    해당작가에 대한 소개가 없습니다.

    조태훈 [역] 신작알림 SMS신청
    생년월일 -

    해당작가에 대한 소개가 없습니다.

    컴퓨터/인터넷 분야에서 많은 회원이 구매한 책

      리뷰

      7.8 (총 0건)

      100자평

      작성시 유의사항

      평점
      0/100자
      등록하기

      100자평

      2.0
      (총 0건)

      판매자정보

      • 인터파크도서에 등록된 오픈마켓 상품은 그 내용과 책임이 모두 판매자에게 있으며, 인터파크도서는 해당 상품과 내용에 대해 책임지지 않습니다.

      상호

      (주)교보문고

      대표자명

      안병현

      사업자등록번호

      102-81-11670

      연락처

      1544-1900

      전자우편주소

      callcenter@kyobobook.co.kr

      통신판매업신고번호

      01-0653

      영업소재지

      서울특별시 종로구 종로 1(종로1가,교보빌딩)

      교환/환불

      반품/교환 방법

      ‘마이페이지 > 취소/반품/교환/환불’ 에서 신청 또는 1:1 문의 게시판 및 고객센터(1577-2555)에서 신청 가능

      반품/교환가능 기간

      변심 반품의 경우 출고완료 후 6일(영업일 기준) 이내까지만 가능
      단, 상품의 결함 및 계약내용과 다를 경우 문제점 발견 후 30일 이내

      반품/교환 비용

      변심 혹은 구매착오로 인한 반품/교환은 반송료 고객 부담
      상품이나 서비스 자체의 하자로 인한 교환/반품은 반송료 판매자 부담

      반품/교환 불가 사유

      ·소비자의 책임 있는 사유로 상품 등이 손실 또는 훼손된 경우
      (단지 확인을 위한 포장 훼손은 제외)

      ·소비자의 사용, 포장 개봉에 의해 상품 등의 가치가 현저히 감소한 경우
      예) 화장품, 식품, 가전제품(악세서리 포함) 등

      ·복제가 가능한 상품 등의 포장을 훼손한 경우
      예) 음반/DVD/비디오, 소프트웨어, 만화책, 잡지, 영상 화보집

      ·시간의 경과에 의해 재판매가 곤란한 정도로 가치가 현저히 감소한 경우

      ·전자상거래 등에서의 소비자보호에 관한 법률이 정하는 소비자 청약철회 제한 내용에 해당되는 경우

      상품 품절

      공급사(출판사) 재고 사정에 의해 품절/지연될 수 있음

      소비자 피해보상
      환불지연에 따른 배상

      ·상품의 불량에 의한 교환, A/S, 환불, 품질보증 및 피해보상 등에 관한 사항은 소비자분쟁해결 기준 (공정거래위원회 고시)에 준하여 처리됨

      ·대금 환불 및 환불지연에 따른 배상금 지급 조건, 절차 등은 전자상거래 등에서의 소비자 보호에 관한 법률에 따라 처리함

      (주) 인터파크 안전결제시스템 (에스크로) 안내

      (주)인터파크의 모든 상품은 판매자 및 결제 수단의 구분없이 회원님들의 구매안전을 위해 안전결제 시스템을 도입하여 서비스하고 있습니다.
      결제대금 예치업 등록 : 02-006-00064 서비스 가입사실 확인

      배송안내

      • 교보문고 상품은 택배로 배송되며, 출고완료 1~2일내 상품을 받아 보실 수 있습니다.

      • 출고가능 시간이 서로 다른 상품을 함께 주문할 경우 출고가능 시간이 가장 긴 상품을 기준으로 배송됩니다.

      • 군부대, 교도소 등 특정기관은 우체국 택배만 배송가능합니다.

      • 배송비는 업체 배송비 정책에 따릅니다.

      • - 도서 구매 시, 1만 원 이상 무료, 1만원 미만 2천 원 - 상품별 배송비가 있는 경우, 상품별 배송비 정책 적용