클로저 101

"We should aim for simplicity because simplicity is a prerequisite for reliability"
— Edsger W. Dijkstra



10배 개발자가 되는 방법은?. 업계 1위의 비결은?. 소프트웨어 세계는 우리의 환경을 변화시키고 있으며 개발자로서 우리가 상상력과 문제 해결 기술을 무시하고 매일 다른 도전에 직면할 수 있도록 합니다.

지식에 대한 투자는 가장 큰 ROI 중 하나이며 소프트웨어 기술을 마스터하고 세상을 구축하는 데 사용하는 도구는 우리 경력의 필수적인 부분입니다. 소프트웨어 문제를 해결하는 가장 좋은 방법은 단순하고 유지 관리 가능한 솔루션을 설계하는 실용주의입니다. 효과적이기 위해서는 최고의 도구(PC, IDE, 터미널, 프로그래밍 언어, 클라우드 서비스, 텍스트 편집기 등)가 필요합니다.

프로그래밍 언어에 대해 이야기하기: 저는 Clojure가 단순성, 데이터 중심 및 기능적 프로그래밍을 염두에 두고 문제 해결을 위한 최상의 솔루션이라고 생각합니다. Clojure는 모든 형식과 불필요한 복잡성 없이 정보, 동시성 및 비즈니스 논리를 강조합니다. 나쁜 추상화, 썩고 장황한 코드의 세계로 우리를 이끄는 전통적인 언어에 의해.

// Hello world in Java
public class Main {
    public static void main(final String[] args) {
        System.out.println("Hello world!");
    }
}



; Hello world in Clojure
(println "Hello world!")


Clojure의 가장 중요한 특징 중 하나는 Lisp의 방언이라는 것입니다. 이 기사에서 우리는 이 언어의 가장 중요한 요소 중 하나인 Syntax를 탐구할 것입니다. -보류 중인 기능 및 데이터-.

통사론



양식



Clojure 코드는 데이터 구조 및 작업의 리터럴 표현이라는 균일한 구조를 가집니다.

; Comment in clojure



;(operator operand1 operand2)
(+ 1 2)
; => 3

(str "My fist article " "in DEV")
; => "My fist article in DEV"


Clojure 구문은 구문이 구조, 클래스 또는 처리할 데이터에 따라 달라지는 Java와 달리 모든 데이터 구조에서 일관성이 있습니다.

System.out.println(1 + 2);
// => 3
System.out.println("My first article ".concat("in DEV"));
// => "My fist article in DEV"


제어 흐름



Clojure 연산자는 부작용이 있고 때때로 값을 반환하는 문장과 달리 값을 반환하기 때문에 표현식입니다.

(if (> 3 1)
  "3 is greater than 1"
  "???")
; =>  "3 is greater than 1"


Java와 같은 언어에서는 삼진법을 사용하면 값을 반환할 수 있습니다. 전통적인 방법은 문장입니다.

public String isGreaterThan() {
    return (3 > 1) ? "3 is greater than 1" :
            "???";
}


불변성



Clojure는 스레드와 함수 간에 문제 없이 데이터를 공유할 수 있는 불변 데이터 구조를 가진 기능적 언어입니다.

; Domain information, Clojure is data-driven!!
(def person 
  {:first-name "Jorge"
   :last-name "Tovar"
   :age 30
   :occupation "Programmer"})
; Query
(:occupation person) 
; => "Programmer"
; Update over immutable structures don't change the initial definition
(assoc person :occupation "Devops")
; => {:first-name "Jorge", :last-name "Tovar", :age 30, :occupation  "Devops"}
; Query the original structure
person
; => {:first-name "Jorge", :last-name "Tovar", :age 30, :occupation "Programmer"}


이름이 있는 값



Clojure Functions는 일류 요소이며 그의 REPL을 사용하면 피드백 루프를 테스트하고 줄일 수 있습니다.



Clojure는 변수와 가변성이 기본값인 OOP 언어와 달리 데이터 중심이며 불변 값의 사용을 촉진합니다.

; Clojure functions that return values
(def x (user-message :simplicity)); => "Clojure loves simplicity"
(def y (user-message :other)); => "Clojure loves functional programming!"


Python에서 일반적인 방법은 변수를 사용하는 것입니다.

def user_message(message):
    if message == "simplicity":
        x = "Python loves " + "dynamic types"
    else:
        x = "Python " + "loves OOP"
    return x


결론



Clojure 방식은 신뢰할 수 있는 소프트웨어 구축의 핵심 요소인 단순성, 순수한 기능 및 표현력에 중점을 둡니다.

Functional Paradigm은 가장 흥미롭고 강력한 것 중 하나이며 깨끗한 시스템을 만들 수 있도록 합니다. 전 세계의 많은 개발자들처럼 배우기를 좋아한다면 문제를 해결하는 다른 관점인 이 언어를 사용해 보고 복잡성과 코드 라인을 최소화하는 것이 좋습니다.

참조



Clojure for the brave

좋은 웹페이지 즐겨찾기