한국어 English

서론

Introduction

클로저 선문답은 여러분에게 클로저 언어의 신비를 전수하는 연습 문제 모음입니다.여러분은 앞에 펼쳐진 길을 따라가며, 간단한 데이터형에서 매크로까지, 꼬리재귀(tail recursion)에서 자바와의 연동까지, 클로저 언어의 주요한 측면들을 모두 접하게 될 것입니다. 많은 분이 클로저가 그 전까지 썼던 프로그래밍 언어들과는 매우 다르다는 것을 알게될 것입니다. 이 선문답은 점진적이며 문답식인 배움법으로 여러분이 자연스럽게 클로저 언어로 옮겨갈 수 있도록 도울 것입니다. 모든 관문을 통과할 때 쯤이면, 클로저가 전혀 기이하지 않게 여겨질 것입니다.

Clojure koans are exercises meant to initiate you to the mysteries of the Clojure language. By following along the path set before you, you will touch on all the major aspects of the language, from simple datatypes to macros, from tail recursion to Java interoperability. Many will find Clojure quite different from any programming language they've used before. The koans' incremental, interactive approach to learning the language will help make the transition feel natural. By the time you are finished with them, Clojure will not be so mysterious at all.

자바 설치하기

Install Java

선문답을 시작하기에 앞서 클로저가 필요하고, 클로저를 설치하기 전에 자바가 필요합니다. 아마도 여러분에게 자바가 이미 설치돼 있을테지만, 만약 그렇지 않더라도, 설치하기는 어렵지 않습니다. 윈도 사용자는 오라클의 윈도용 자바 설치 방법을 참고하고, 리눅스 사용자는 선호하는 패키지 관리자를 이용하도록 합니다. 애플은 시스템 업데이트 도구를 통해 자바 6를 배포하고 있습니다.

Before we begin the koans, we need Clojure, and before we install Clojure, we'll need Java. You probably already have Java installed, but if you don't, it's not difficult. Oracle provides installation instructions for Windows users, and Linux users should use their package manager of choice. Apple distributes Java 6 with their system update tool.

필요하다면 자바를 설치한 뒤, 콘솔(터미널)을 열어 아래 명령어를 입력합니다:

After downloading Java (if necessary), go to your console and enter:

~ $ java -version
~ $ java -version

버전 1.5 이상이 설치돼 있어야 합니다.

Make sure the version installed is 1.5 or greater.

선문답 설치하기

Install the Koans

여러분이 전문가답게 클로저를 쓰려한다면, 라이닝엔(Leiningen)이라는 가장 널리 쓰이는 클로저 의존성 관리 도구를 써서 선문답을 설치하도록 합니다. (이게 곧 클로저를 설치해 줍니다.) 라이닝엔의 특혜를 받기 위해 설치 방법을 따르도록 합니다.

If you'd like to jump into Clojure like the pros, you can install the koans with Leiningen, Clojure's most popular dependency management tool. (It will install Clojure for us shortly.) Follow the installation instructions for Leiningen bliss.

중요: 이미 lein 1.x가 설치돼 있다면 라이닝엔 2로 업그레이드 합니다.

Important: if you already have lein 1.x installed, you'll need to upgrade to Leiningen 2.

라이닝엔을 설치한 후에는, 선문답 저장소를 클론(clone)하면 됩니다:

Once you have Leiningen installed, you just need to clone the koans repo:

$ git clone git://github.com/hatemogi/clojure-koans.git
$ git clone git://github.com/functional-koans/clojure-koans.git

만약 라이닝엔을 쓰기 싫다면, 선문답을 손수 설치할 수 있습니다. 여기 링크에서 최신 버전을 다운로드 받고 압축을 풀어서 시작하실 수 있습니다.

If you don't want to use Leiningen to manage dependencies for you, you can still easily install the koans manually. [Note: this option will only work until Github shuts down the Downloads feature completely in March 2013.] Just download and unzip the latest version of the koans here, and you should be ready to start.

첫번째 선문답

Run the First Koan

앞서 설명한 라이닝엔이 설치돼 있다면

Once you're inside the koans directory, you can immediately begin by running

$ lein koan run

위의 명령어로 바로 시작할 수 있습니다.

if you have Leiningen installed as described above.

(저장소를 클론한 뒤 clojure-koans 디렉토리로 이동하는 것을 잊지 마세요!)

(Don't forget to cd into the clojure-koans directory after you've cloned the repo!)

또는, 라이닝엔을 안 쓴다면, 아래처럼 씁니다

Or, if you're not using Leiningen, you can use

$ script/run

맥이나 리눅스에서는 위 명령어를 실행하고,

on Mac or Unix, or

$ script\run

윈도에서는 위 명렁어를 씁니다.

on Windows.

그러면 아래와 같은 에러 메시지를 보게 됩니다:

instead. You'll probably see an error message like this:

Now meditate on ~/clojure-koans/src/koans/01_equalities.clj:6
---------------------
Assertion failed!
같은지 확인해가며 현실을 시험해서 진실을 주의깊게 관찰하라
(= __ true)
Now meditate on ~/clojure-koans/src/koans/01_equalities.clj:6
---------------------
Assertion failed!
We shall contemplate truth by testing reality, via equality.
(= __ true)

위 내용은 01_equalities.clj 파일의 6째줄에서 테스트가 실패하고 있다는 뜻입니다. 그럼 그 파일을 여러분이 즐겨 쓰는 텍스트 에디터로 열고, 밑줄 친 빈칸을 채워서 테스트를 통과하도록 합시다!

The output is telling you that you have a failing test in the file 01_equalities.clj, on line 3. So open that file up in a text editor and make it pass by filling in the blanks!

반복

Repeat

첫번째 테스트를 통과하고 나면 그 다음 테스트가 실패하는 것을 알게 될 것입니다. 한 파일의 모든 테스트를 통과하고 나면, 자동으로 그 다음 파일의 선문답 과정이 시작됩니다.

After you run and pass your first test, you'll find that the next one is failing. After all the tests in a file are passing, the run script will automatically begin testing the next file in the koans sequence.

데모

테스트에 대해 한말씀

A Word on Testing

실패하는 테스트를 먼저 작성하고나서 그 테스트를 통과하는 코드를 나중에 작성하는 방식은 단지 색다른 것만은 아닙니다: 이런 방식이 테스트 주도 개발 (TDD)의 기초입니다. TDD는 경험이 풍부한 사람들은 각각의 새 테스트가 최대한 단순하고 자연스러워야한다고 말합니다.또한 진행과 함께 규칙적으로 명상할 것을 강조합니다: 테스트를 통과하고 나면, 그 다음 테스트로 넘어가기 전에 잠깐 진행을 멈추고 리팩토링과 개선 작업을 먼저 하도록 합니다.

The pattern of writing failing tests first and code to make them pass later is no mere novelty: it is the essence of test-driven development (TDD). The sages of TDD say that every new test should strive to be the simplest and most natural extension of those that come before it, so as to cover only one new part of the code. They also enjoin disciples to meditate on their progress regularly: after a test is made to pass, one should pause to refactor and refine one's code before moving on to the next test.

실제 테스트 주도 개발 프로젝트에서는 직접 테스트 코드를 작성해야겠지만, 선문답의 테스트는 미리 준비돼 있습니다. 여러분의 클로저 프로젝트를 시작할 준비가 되어서 직접 테스트 코드를 작성하려거든, Speclj 같은 프레임워크가 길잡이가 되어줄 것입니다.

The koans, unlike tests in real test-driven projects, are already written for you. When you are ready to begin your own Clojure project and therefore your own tests, consider using a framework like Speclj to aid you on your journey.

도움을 준 분들

Contributors

도움을 준 분들

Our Contributors

선문답에 대해 질문이나 제안하실 것이 있으면 이슈를 등록하거나 풀리퀘스트(pull request)를 보내주세요.

If you have any questions or suggestions about the koans, feel free to open an issue or pull request.

감사의 말

Thanks

선문답에 비유해 프로그래밍 언어를 배우는 도구로 활용하는 것은 EdgeCase루비 선문답(Ruby Koans)에서 시작됐습니다. 그리고, 클로저 선문답은 Relevance의 개발자들에 의해 시작됐습니다. 원문 웹사이트는 Joodo를 써서 개발했고 8th Light가 호스팅 해주고 있습니다.

Using the koans metaphor as a tool for learning a programming language started with the Ruby Koans by EdgeCase; the Clojure koans themselves were started by developers at Relevance. This website is produced and hosted by 8th Light and powered by Joodo.

역자의 말

이 사이트는 김대현이 한국어로 번역했고, GitHub Pages로 호스팅되고 있습니다. 원문 웹사이트는 http://clojurekoans.com에서 보실 수 있습니다.

번역에 관한 문의나 제안은 이슈로 남겨주시거나, 풀리퀘스트를 보내주세요.