clojure programming study_00

29
CLOJURE PROGRAMMING 스스스

Upload: eunpyoung-kim

Post on 21-Jan-2017

538 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Clojure programming study_00

CLOJURE PROGRAMMING 스터디

Page 2: Clojure programming study_00

Lisp 을 좋아하는 사람들의 그룹 http://lispkorea.org:8080/k-lisper

Page 3: Clojure programming study_00

Clojure? - 소개

JVM 위에서 돌아가는 Lisp 계통 언어 .발음은 "closure" 와 같음 .

Page 4: Clojure programming study_00

Lisp 가 뭘 의미하는 거야 ?

이름의 기원 : LISt Processing

이름에서 나타나듯이 Linked List( 단일 연결 리스트 ) 가 주된 자료구조 .

Page 5: Clojure programming study_00

AI 언어 ? “John McCarthy”

Lisp 의 아버지 " 존 매카시” (1927 년 9 월 4 일 ~ 2011 년 10 월 24 일 )

1956 년 다트머스 학회에서 처음으로 인공지능 (Artificial Intelligence)이라는 용어를 창안 1958 년 Lisp 개발시작 1960 년 논문 "Recursive Functions of Symbolic Expressions and Their

Computation by Machine, Part I“

1971 년 튜링상 수상 . 인공지능에 대한 연구업적 인정

Page 6: Clojure programming study_00

Lisp Machine in MIT’s Museum

Page 7: Clojure programming study_00

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● 2015 년 06 월 30 일

– Clojure 1.7.0 - stable

Page 8: Clojure programming study_00

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 9: Clojure programming study_00

Clojure - Lisp

Page 10: Clojure programming study_00

Clojure? - 비교 - scala● 중위표기법● 정적타입● 객체지향● 타입시스템

Page 11: Clojure programming study_00

Clojure? - 비교 - clojure

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

Page 12: Clojure programming study_00

Clojure - 개발 - Java

Page 13: Clojure programming study_00

Clojure - 개발 - Clojure

Page 14: Clojure programming study_00

뽐뿌 자바 창시자 제임스 고슬링 , 프로그래밍 다양성 강조

" 개인적으로도 스칼라 (Scala), 클로저(Clojure) 를 좋아한다 . 스칼라로는 프로젝트를 하나 했고 클로저는 다뤄보고 있다”

http://www.zdnet.co.kr/news/news_view.asp?artice_id=20150731111920

Page 15: Clojure programming study_00

뽐뿌 - 1 Walmart Runs Clojure at Scale

Our Clojure system just handled its first Walmart black Friday and came out without a scratch. — Anthony Marcar, Senior Archi-tect – WalmartLabs

https://www.youtube.com/watch?v=av9Xi6CNqq4

Page 16: Clojure programming study_00

뽐뿌 - 2 Brandon Bloom - Building CircleCI's

Front end With Om https://www.youtube.com/watch?v=LNtQPS

Ui1iQhttps://github.com/circleci/frontend

Page 17: Clojure programming study_00

뽐뿌 - 3 Driving React Native with Clojure-

Script / Om https://www.youtube.com/watch?v=Dt2zNe

mLCCk

Page 18: Clojure programming study_00

Clojure Programming 책 Clojure Programming

Practical Lisp for the Java World By Chas Emerick, Brian Carper, Christophe

GrandPublisher: O'Reilly MediaFinal Release Date: March 2012 Pages: 630

http://www.clojurebook.com/

Page 19: Clojure programming study_00

스터디 일정 , 방식 결정 .

참가자들 각자 소개 스터디 일정 , 방식 결정 .

Page 20: Clojure programming study_00

Leiningen Java 프로젝트 매니저인 , ant 와 maven 은 XML 을 가지고 프로젝트를 관리한다 .

하지만 , XML 은 보고 수정하기 힘들다 !

Leiningen 은 프로젝트관리 파일 자체가 .clj 파일이다 .

Page 21: Clojure programming study_00

Leiningen

Ant: Java 프로젝트 관리도구Leiningen: Clojure 프로젝트 관리도구

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

Page 22: Clojure programming study_00

Leiningen - commandlein newlein depslein uberjarlein repl

새로운 프로젝트의존성 dependencies모두 jar 로 묶기REPL 실행

Page 23: Clojure programming study_00

Leiningen - 설치 및 REPL

Page 24: Clojure programming study_00

Leiningen - JAVA 환경설정

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

PATH%PATH%;%JAVA_HOME%\bin

Page 25: Clojure programming study_00

Leinin – new hello> cd prj> lein new hello> tree hello

hello├─doc├─resources├─src│ └─hello└─test └─hello

Page 26: Clojure programming study_00

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

Clojure *n*etwork REPL.Read–Eval–Print-Loop

Page 27: Clojure programming study_00

nRepl> lein repl

Page 28: Clojure programming study_00

IntelliJ + Cursive 클로저 개발 환경 만들기 http://

manmyung.github.io/posts/2015-03-17-post.html

https://www.jetbrains.com/idea/download/https://cursiveclojure.com/userguide/

Page 29: Clojure programming study_00

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

https://lisp-korea.slack.com/ https://clojurians.slack.com/messages/cl

ojure-korea/ https://www.facebook.com/groups/defncl

ojure/