Top Banner
Clojure 개개개개 개개 개 개개개개 개개개
55

Clojure development environment

Dec 21, 2014

Download

Technology

Clojure development environment

The 3rd Lisp Seminar in Korea

제 3회 리스프 세미나 발표자료.

ppt, pdf, 소스코드, 세미나용 셋팅 자료는 다음 dropbox링크를 열어두었습니다.
https://www.dropbox.com/sh/bt2ij5ucrr8vgj5/oH7seofBKk
상기 링크는 언제든지 지워질 수 있습니다.

저의 vim설정과, emacs설정은 다음과 같습니다.
- https://github.com/netpyoung/netpyoung.vim
- https://github.com/netpyoung/netpyoung.emacs.d
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Clojure development environment

Clojure개발환경 셋팅 및 개발예제

김은평

Page 2: Clojure development environment

은하수를 여행하는 히치하이커를 위한 안내서

Page 3: Clojure development environment

목차

● Clojure?● Clojure 개발환경 셋팅 및 개발 예제● 마치며● 참고자료

Page 4: Clojure development environment

Clojure?

● 소개● 역사● 창시자● Lisp● 비교● 개발

Page 5: Clojure development environment

Clojure? - 소개

JVM 위에서 돌아가는 Lisp 계통 언어 .

발음은 "closure" 와 같음 .

Page 6: Clojure development environment

Clojure? - 역사● 1930 년

– lambda calculus 소개 - Alonzo Church● 1958 년

– Lisp 언어 소개 - John McCarthy● 1959 년

– 첫번째 Lisp 구현 - Steve Russell● 1995 년

– Java 출현 - James Gosling, Sun Microsystems● 2007 년 10 월

– Clojure 출현 1.0.x - Rich Hickey● 2013 년 3 월 10 일

– Clojure 1.5.1

Page 7: Clojure development environment

Clojure? - 창시자

● 리치히키 (Rich Hickey)

● 20 년 이상의 개발경력

– scheduling systems, broadcast automation, audio analysis, fingerprinting, database design, yield management, exit poll systems, machine listening

● NYU(New York University) 에서 Advanced C++ 강의

● 다룬 언어들 C, C++, Java, C#

● 맘에드는게 없어 Clojure 를 3 년동안 개발

● .clj(C#, Lisp, Java)

Page 8: Clojure development environment

Clojure - Lisp

Page 9: Clojure development environment

Clojure? - 비교 - scala

● 중위표기법● 정적타입● 객체지향● 타입시스템

Page 10: Clojure development environment

Clojure? - 비교 - clojure

● 전위표기법● 동적타입● 데이터지향● 코드 역시 데이터

Page 11: Clojure development environment

Clojure - 개발 - Java

Page 12: Clojure development environment

Clojure - 개발 - Clojure

Page 13: Clojure development environment

목차

● Clojure?● Clojure 개발환경 셋팅 및 개발 예제● 마치며● 참고자료

Page 14: Clojure development environment

Setting and Development

● Leiningen● nRepl● LightTable● Eclipse● Vim● Emacs

Page 15: Clojure development environment

Leiningen

https://github.com/technomancy/leiningen

Page 16: Clojure development environment

Leiningen

Ant: Java 프로젝트 관리도구

Leiningen: Clojure 프로젝트 관리도구

라이닝겐 (Leiningen) 은 끝내 개미 (Ant) 들을 물리치고 자신의 농장을 지켰다 . “Leiningen Versus the Ants” - Carl Stephenson

Page 17: Clojure development environment

Leiningen - command

lein new

lein deps

lein uberjar

lein repl

새로운 프로젝트

의존성 dependencies

모두 jar 로 묶기

REPL 실행

Page 18: Clojure development environment

Leiningen - 설치 및 REPL

Page 19: Clojure development environment

Leiningen - JAVA 환경설정

JAVA_HOME

C:\Program Files\Java\jdk1.7.0_40

PATH

%PATH%;%JAVA_HOME%\bin

Page 20: Clojure development environment

Leinin – new hello

> cd prj

> lein new hello

> tree hello

hello

├─doc

├─resources

├─src

│ └─hello

└─test

└─hello

Page 21: Clojure development environment

nRepl

https://github.com/clojure/tools.nrepl

Clojure *n*etwork REPL.

Read–Eval–Print-Loop

Page 22: Clojure development environment

nRepl

> lein repl

Page 23: Clojure development environment

LightTable

장점 : 쉽게 사용할 수 있다 .

단점 : 버전이 너무 낮다 .

CHRIS GRANGER

Kickstarter: $316,270

Joined Y combinator

Page 24: Clojure development environment

LightTable

http://www.lighttable.com/

Page 25: Clojure development environment

LightTable - 셋팅

http://www.lighttable.com/

1. 위 사이트에서 압축파일을 다운받는다 .

2. 압축을 푼다 .

3. 폴더에 있는 Light Table 을 실행한다 .

Page 26: Clojure development environment

LightTable - 시연

Literal

Instarepl

Page 27: Clojure development environment

LightTable - 조작키

Ctrl+Space

Ctrl+Enter

메뉴부르기

표현식 평가하기

Page 28: Clojure development environment

CounterClockwise

장점 : eclipse 기반 . Java 사용자들이 많다 .

단점 : 다른 에디터에 비해 무겁다 .

Page 29: Clojure development environment

CounterClockwise

http://code.google.com/p/counterclockwise/

Page 30: Clojure development environment

CounterClockwise - 셋팅

하나 . Eclipse 로 하는 방법 .

1. http://eclipse.org/downloads/

2. Help> Install New Software>

http://updatesite.ccw-ide.org/stable/

Page 31: Clojure development environment

CounterClockwise - 셋팅

둘 . 미리 package 된 것으로 하는 방법 .

1. http://code.google.com/p/counterclockwise/wiki/ReleaseNotes#Version_0.20.0

2. 압축풀고 실행 .

Page 32: Clojure development environment

CounterClockwise - 시연

Java interop

lein javac

lein uberjar

Page 33: Clojure development environment

Eclipse - 조작키

Ctrl+Enter

F3

현재 표현식 평가

정의로 이동

Page 34: Clojure development environment

Vim

장점 : 리눅스 유저들의 친숙함 .

단점 : 확장 기능이 아직은 미숙함 .

Vi - Bill Joy Vim - Bram Moolenaar

Page 35: Clojure development environment

Vim - vim-fireplace

https://github.com/tpope/vim-fireplace

Page 36: Clojure development environment

Vim - 셋팅

1. init-loader

2. NeoBundle

3. vim-fireplace

Page 37: Clojure development environment

Vim - 시연

Quil

Page 38: Clojure development environment

Vim - 조작키

Shift + k

[ + d

[ + C-d

C-o

cpp

cmm

C-x C-o

문서 보기

정의 보기

정의로 이동

정의에서 되돌아오기

표현식 평가

매크로확장

자동완성 - 입력모드

Page 39: Clojure development environment

Emacs

장점 : 자유로움 .

단점 : 익히는데 시간이 많이 든다 .

Richard Stallman Guy L. Steele, Jr.

Page 40: Clojure development environment

Emacs – CIDER

https://github.com/clojure-emacs/cider

Clojure IDE and REPL for Emacs

(formerly nrepl.el)

Page 41: Clojure development environment

Emacs - 셋팅

0. M-x list-packages

1. init-loader

2. cider

3. auto-complete

4. ac-nrepl

Page 42: Clojure development environment

Emacs - 시연

Macro 확장

Page 43: Clojure development environment

Emacs - 시연

String interpolation 소개

https://github.com/clojure/core.incubator/blob/master/src/main/clojure/clojure/core/strint.clj

infix 소개

https://github.com/liebke/incanter/blob/master/modules/incanter-core/src/incanter/infix.clj

Page 44: Clojure development environment

Emacs - 조작키

C-c M-j

C-c M-n

C-M-x

C-c M-m

M-.

M-,

cider 접속

namespace 설정

표현식 평가

매크로 확장

정의로 이동

정의에서 되돌아오기

Page 45: Clojure development environment

목차

● Clojure?● Clojure 개발환경 셋팅 및 개발 예제● 마치며● 참고자료

Page 46: Clojure development environment

단점들

전위표기법 : 익숙치 않다 . 그러므로 어렵다 .

디버깅 : 알아보기 힘든 stacktrace.

색다름 : OOP,Mutable <> Data,Immutable

커뮤니티 : 언어 사용자가 적은 만큼 작다 .

Page 47: Clojure development environment

다른 시각으로 세상을 보면 ?

오늘날의 대부분의 언어

Java, C#, Python, Ruby, Scala

statefull OO

OOP 역시 지원은 하지만 ...

지향은 아닌

보다 다른 방식으로 문제를 해결하려는

하나의 실험 .

Page 48: Clojure development environment

새로운 시도

idea 를 구현 ( 혹은 구경 ) 할 수 있는 언어 .

새로운걸 시도해 볼 수 있는 언어 .

Clojurescript, core.logic, core.typed

....

Page 49: Clojure development environment

추천 도서

Joy of Clojure Clojure Programming

Page 50: Clojure development environment

놀이터

http://www.4clojure.com/

Page 51: Clojure development environment

if you give someone Fortran,

he has Fortran.

if you give someone Lisp,

he has any language he pleases

- guy steele.

Page 52: Clojure development environment

환영합니다

한국 Clojure 위키

http://clojure.or.kr

한국 K-lisp 그룹

https://groups.google.com/forum/?fromgroups#!forum/lisp-korea

Page 53: Clojure development environment

목차

● Clojure?● Clojure 개발환경 셋팅 및 개발 예제● 마치며● 참고자료

Page 54: Clojure development environment

참고자료

wiki:Lisp(programming_lanugage)

http://en.wikipedia.org/wiki/Lisp_%28programming_language%29

wiki:Clojure

http://en.wikipedia.org/wiki/Clojure

github:clojure-1.0.x

https://github.com/clojure/clojure/tree/1.0.x

Lisp 의 car 와 cdr 의 기원

http://www.iwriteiam.nl/HaCAR_CDR.html

Page 55: Clojure development environment

참고자료

리치히키가 설명하는 Clojure

http://www.infoq.com/presentations/hickey-clojure

Rich Hickey Q&A. Fogus 가 질문 , Hickey 가 답변하는 식으로 진행 .

http://www.codequarterly.com/2011/rich-hickey/

리치히키의 뇌를 들여다 보고 싶다면 ...

http://www.flyingmachinestudios.com/programming/the-unofficial-guide-to-rich-hickeys-brain/

데이터를 다룸에 있어 , OOP 접근법과는 다른 Clojure 의 접근법에 대해 설명 .

http://www.infoq.com/presentations/clojure-data-state-value

http://www.infoq.com/presentations/Are-We-There-Yet-Rich-Hickey