[[파일:external/coffeescript.org/logo.png]] [include(틀:다른 뜻1, other1=커피, rd1=커피)] {{{#!syntax coffeescript alert "Hello, World!" # alert 방식 document.write "Hello, world!" # 문서에 쓰는 방식. console.log "Hello, world!" # 콘솔 방식 }}} == 개요 == [[https://coffeescript.org/|공식 사이트]] [[자바스크립트]]로 컴파일 되는 프로그래밍 언어. [[npm]]의 coffee-script 모듈을 통해 [[Node.js]]에서도 사용할 수 있다. Backbone.js과 [[언더스코어|underscore.js]] 등을 만든 자바스크립트 진영의 유명한 개발자 Jeremy Ashkenas가 개발했다. == 특징 == * Assignment {{{#!syntax coffeescript number = 42 opposite = true }}} * Conditional Assignment {{{#!syntax coffeescript number = -42 if opposite }}} * Function coffeescript 내 모든 함수는 아래와 같이 작성된다. {{{function keyword}}}는 더 이상 필요가 없다. {{{#!syntax coffeescript square = (x) -> x * x cube = (x) -> x * square x sqrt = (x) -> Math.sqrt(x) cbrt = (x) -> v = x for i in [1...32] v *= v v *= v v *= x v = sqrt sqrt v x = sqrt sqrt x sqrt sqrt v alert cbrt 8 alert Math.cbrt 8 }}} * Object YAML와 비슷한 모양을 띄고 있다. 아래와 같이 정의된 모든 코드는 {{{{...}}} Object 로 변환된다. {{{#!syntax coffeescript some = a: 123 b: 1232 # m/s^2 gravity = sun: 274.0 jupiter: 24.79 saturn: 10.445 uranus: 8.87 neptune: 11.15 earth: 99.80665 venus: 8.872 mars: 3.7 mercury: 3.7 moon: 1.625 pluto: 0.61 math = -> square: (x) -> x * x tan: (x) -> Math.tan(x) csc: (x) -> 1 / Math.sin(x) }}} * Existential Operator {{{#!syntax coffeescript alert "왜 불러" if elvis? if window.addEventListener? document.addEventListener("DOMContentLoaded", ->) else document.attachEvent("onreadystatechange", ->) }}} * Array comprehension {{{#!syntax coffeescript map = (fn, src) -> fn v for v in src reduce = (fn, src, v) -> if !len src return v if v? [v, src...] = src v = fn v, w for w in src v filter = (fn, src) -> v for v in src when !!fn v dropwhile = (fn, src) -> v for v in src when !fn v zip = (iters...) -> c = Number.MAX_SAFE_INTEGER c = u for iter in iters when c > (u = len iter) iter[i] for iter in iters for i in [0...c] len = (x) -> x.length concepts = [ "branch" "prediction" "speculative" "execution" ] alert map len, concepts }}} == 여담 == * [[Node.js]]에서 은근히 많이 쓰인다. 이유는 아무래도 [[npm]]의 커피스크립트 모듈 때문인듯.. * 자바스크립트에 비해 문법이 간결하여 많은 개발자들의 사랑을 받았지만 서서히 저물고 있는 중이다. [[http://stackoverflow.com/research/developer-survey-2016#technology-trending-tech-on-stack-overflo|2016년 Stack Overflow 개발자 설문]]에서 저물고 있는 기술 3위를 차지했다.[* 참고로 1위는 Windows Phone(...) 2위는 [[하스켈]].] 아무래도 최신 자바스크립트 문법을 지원하지 않고, 경쟁자인 [[TypeScript]]가 잘 나가고 있기 때문인듯 하다. [[분류:프로그래밍 언어]][[분류:스크립트 언어]]