Clojure development environment
-
Upload
- -
Category
Technology
-
view
1.375 -
download
2
description
Transcript of Clojure development environment
Clojure개발환경 셋팅 및 개발예제
김은평
은하수를 여행하는 히치하이커를 위한 안내서
목차
● Clojure?● Clojure 개발환경 셋팅 및 개발 예제● 마치며● 참고자료
Clojure?
● 소개● 역사● 창시자● Lisp● 비교● 개발
Clojure? - 소개
JVM 위에서 돌아가는 Lisp 계통 언어 .
발음은 "closure" 와 같음 .
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
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)
Clojure - Lisp
Clojure? - 비교 - scala
● 중위표기법● 정적타입● 객체지향● 타입시스템
Clojure? - 비교 - clojure
● 전위표기법● 동적타입● 데이터지향● 코드 역시 데이터
Clojure - 개발 - Java
Clojure - 개발 - Clojure
목차
● Clojure?● Clojure 개발환경 셋팅 및 개발 예제● 마치며● 참고자료
Setting and Development
● Leiningen● nRepl● LightTable● Eclipse● Vim● Emacs
Leiningen
Ant: Java 프로젝트 관리도구
Leiningen: Clojure 프로젝트 관리도구
라이닝겐 (Leiningen) 은 끝내 개미 (Ant) 들을 물리치고 자신의 농장을 지켰다 . “Leiningen Versus the Ants” - Carl Stephenson
Leiningen - command
lein new
lein deps
lein uberjar
lein repl
새로운 프로젝트
의존성 dependencies
모두 jar 로 묶기
REPL 실행
Leiningen - 설치 및 REPL
Leiningen - JAVA 환경설정
JAVA_HOME
C:\Program Files\Java\jdk1.7.0_40
PATH
%PATH%;%JAVA_HOME%\bin
Leinin – new hello
> cd prj
> lein new hello
> tree hello
hello
├─doc
├─resources
├─src
│ └─hello
└─test
└─hello
nRepl
https://github.com/clojure/tools.nrepl
Clojure *n*etwork REPL.
Read–Eval–Print-Loop
nRepl
> lein repl
LightTable
장점 : 쉽게 사용할 수 있다 .
단점 : 버전이 너무 낮다 .
CHRIS GRANGER
Kickstarter: $316,270
Joined Y combinator
LightTable - 셋팅
http://www.lighttable.com/
1. 위 사이트에서 압축파일을 다운받는다 .
2. 압축을 푼다 .
3. 폴더에 있는 Light Table 을 실행한다 .
LightTable - 시연
Literal
Instarepl
LightTable - 조작키
Ctrl+Space
Ctrl+Enter
메뉴부르기
표현식 평가하기
CounterClockwise
장점 : eclipse 기반 . Java 사용자들이 많다 .
단점 : 다른 에디터에 비해 무겁다 .
CounterClockwise
http://code.google.com/p/counterclockwise/
CounterClockwise - 셋팅
하나 . Eclipse 로 하는 방법 .
1. http://eclipse.org/downloads/
2. Help> Install New Software>
http://updatesite.ccw-ide.org/stable/
CounterClockwise - 셋팅
둘 . 미리 package 된 것으로 하는 방법 .
1. http://code.google.com/p/counterclockwise/wiki/ReleaseNotes#Version_0.20.0
2. 압축풀고 실행 .
CounterClockwise - 시연
Java interop
lein javac
lein uberjar
Eclipse - 조작키
Ctrl+Enter
F3
현재 표현식 평가
정의로 이동
Vim
장점 : 리눅스 유저들의 친숙함 .
단점 : 확장 기능이 아직은 미숙함 .
Vi - Bill Joy Vim - Bram Moolenaar
Vim - 셋팅
1. init-loader
2. NeoBundle
3. vim-fireplace
Vim - 시연
Quil
Vim - 조작키
Shift + k
[ + d
[ + C-d
C-o
cpp
cmm
C-x C-o
문서 보기
정의 보기
정의로 이동
정의에서 되돌아오기
표현식 평가
매크로확장
자동완성 - 입력모드
Emacs
장점 : 자유로움 .
단점 : 익히는데 시간이 많이 든다 .
Richard Stallman Guy L. Steele, Jr.
Emacs – CIDER
https://github.com/clojure-emacs/cider
Clojure IDE and REPL for Emacs
(formerly nrepl.el)
Emacs - 셋팅
0. M-x list-packages
1. init-loader
2. cider
3. auto-complete
4. ac-nrepl
Emacs - 시연
Macro 확장
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
Emacs - 조작키
C-c M-j
C-c M-n
C-M-x
C-c M-m
M-.
M-,
cider 접속
namespace 설정
표현식 평가
매크로 확장
정의로 이동
정의에서 되돌아오기
목차
● Clojure?● Clojure 개발환경 셋팅 및 개발 예제● 마치며● 참고자료
단점들
전위표기법 : 익숙치 않다 . 그러므로 어렵다 .
디버깅 : 알아보기 힘든 stacktrace.
색다름 : OOP,Mutable <> Data,Immutable
커뮤니티 : 언어 사용자가 적은 만큼 작다 .
다른 시각으로 세상을 보면 ?
오늘날의 대부분의 언어
Java, C#, Python, Ruby, Scala
statefull OO
OOP 역시 지원은 하지만 ...
지향은 아닌
보다 다른 방식으로 문제를 해결하려는
하나의 실험 .
새로운 시도
idea 를 구현 ( 혹은 구경 ) 할 수 있는 언어 .
새로운걸 시도해 볼 수 있는 언어 .
Clojurescript, core.logic, core.typed
....
추천 도서
Joy of Clojure Clojure Programming
if you give someone Fortran,
he has Fortran.
if you give someone Lisp,
he has any language he pleases
- guy steele.
환영합니다
한국 Clojure 위키
http://clojure.or.kr
한국 K-lisp 그룹
https://groups.google.com/forum/?fromgroups#!forum/lisp-korea
목차
● Clojure?● Clojure 개발환경 셋팅 및 개발 예제● 마치며● 참고자료
참고자료
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
참고자료
리치히키가 설명하는 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