목차

브루스 테이트의 세븐 랭귀지

언어

스칼라 : 복수 패러다임 언어

스칼라

스칼라 언어의 한쪽 끝이 자바라면, 다른 쪽의 끝은 하스켈이다.

자바와의 관련성

자바와의 차이점

스칼라 관련 최고의 베스트셀러 : Programming in Scala

함수 언어의 성격

트레이트

모든 객체지향 언어는 하나의 객체가 여러 개의 역할을 담당할 수 있어야 한다. 하나의 객체는 영원히 나열할 수 있는 나무를 품은 관목 숲과 같다. C++는 다중 상속을 이용하고, 자바는 인터페이스를 이용하고, 루비는 믹스인을 이용하고, 스칼라는 트레이트를 이용한다.

var로 선언된 값은 변경이 가능하다. val은 불변이다.

고계함수

핵심 강점

스칼라의 장점은 대부분 자바 환경과 잘 통합된다는 사실과 잘 설계된 기능을 중심으로 존재한다. 특히 액터, 패턴 매칭, XML의 통합은 매우 중요하며 훌륭하게 설계되어 있다.

동시성

스칼라가 동시성을 다루는 방식은 동시성 프로그래밍에서 이루어지고 있는 주요한 발전을 반영한다. 액터 모델과 스레드 풀은 환영할 만한 발전이며, 변경 가능한 상태를 배제한 상태에서 애플리케이션을 만들 수 있도록 한 부분은 엄청난 발전이다.

낡은 자바의 진환

스칼라 애플리케이션은 자바 라이브러리를 직접 사용할 수 있고, 필요하면 프록시 객체 코드를 생성함으로써 그렇게 할 수도 있다. 스칼라와 자바의 호환성^interoperability^은 탁월하다.

DSL

스칼라가 가진 유연한 문법과 연산자 오버로딩은 루비 스타일의 도메인 언어를 개발하는 데 적합하다.

루비

DSL(domain-specific language 도메인 언어)은 어떤 언어를 특정한 도메인용으로 가다듬을 수 있도록 해준다. 루비에서 가장 널리 알려진 예로, 액티브레코드 프레임워크는 클래스를 데이터베이스 테이블에 매핑하기 위해 도메인 언어를 사용한다.

nilfalse를 제외한 다른 모든 것은 true로 평가된다. C와 C++ 프로그램들은 0조차 true 라는 사실을 잘 기억하기 바란다.

Io

인터프리터: http://iolanguage.com

정리

기초적인 규칙

Io 장점

프롤로그

데이터를 구성하는 빌딩 블록

프롤로그에서 첫글자가 소문자로 시작하면 그것은 루비의 심벌처럼 고정된 값은 의미하는 원자^atom^다. 만약 첫글자가 대문자나 밑줄이면 변수^variable^다. 변수 값은 변할 수 있다. 원자는 변하지 않는다.

얼랭

얼랭은 어려운 일을 쉽게 만들고, 동시에 쉬운 일을 어렵게 만든다. 클라우드 컴퓨팅과 관련해서 인기를 끌고 있는 데이터베이스 카우치디비와 심플디비를 구현하는 데 사용된 언어이기도 한다.

함수 언어에서는 기호^symbol^가 다른 언어에서보다 중요하다. 기호는 가장 기초적인 데이터 요소이며 프로그래머가 원하는 어떤 내용이라도 나타낼 수 있다.

핵심 강점

얼랭은 모든 며에서 동시성과 에러 방지에 대한 언어라고 볼 수 있다. 얼랭은 무엇보다도 안정성을 위해서 만들어진 언어다.

클로저

클로저는 JVM 위에서 동작하는 리스프 언어다. 혼란스럽고 강력한 리스프는 최초로 개발된 언어임과 동시에 가장 최근에 사용되는 언어이기도 하다.

많은 면에서 클로저는 사려 깊은 쿵푸 마스터, 언덕 위의 오라클, 혹은 신비로운 제다이 훈련교관이다.

모든 것은 리스프로부터

리스프라는 이름은 리스트 처리^LISt Processing^에서 따온 말이다.

이 두 가지 아이디어를 결합하면, 메타프로그래밍에 적합한 언어를 얻게 된다.

리스트, 맵, 집합, 벡터

다른 함수 언어에서와 마찬가지로 리스트와 튜플 같은 자료구조가 핵심적인 기능을 담당한다.

클로저에서 가장 중요한 세 가지 구조를 꼽으면 리스트, 맵, 벡터다.

시퀀스

클로저 생태계에서 시퀀스는 다양한 컨테이너의 주위를, 구현되는 내용으로부터 독립된 방식으로 추상화해주는 기능이다. 시퀀스는 클로저의 컬렉션(집합, 맵, 백터 등), 문자열, 그리고 심지어 파일시스템 구조(스트림, 디렉토리 등)를 감싼다. 자바 컬렉션, 배열, 문자열 같은 자바 컨테이너를 위한 공통의 추상도 제공한다.

핵심 강점

좋은 리스프

프로그래밍 언어의 전문가이며 파워블로거인 팀 브레이는 '클러저를 위한 11개의 대제'에서 클로저를 좋은 리스프라고 불렀다. 사실 그는 클로저를 '역사상 최고의 리스프'라고 불렀다. 나는 클로저가 아주 좋은 리스프라는 의견에 동의한다.

동시성

STM 은 너무나 새로운 개념이기 때문에 그것을 이용하는 프로그래머들에게 거추장스럽게 느껴지기도 하지만, 상태를 변경하는 동작이 적절하게 작성된 함수에 의해 수행되는지 여부를 자동으로 검출함으로써 프로그래머들이 동시성 문제로 고통받지 않아도 되게끔 만들었다.

자바와의 통합

클로저는 자바와 훌륭하게 통합된다. 하지만 클로저는 자바보다 JVM과의 통합이라는 측면에서 더 빛을 발한다.

게이른 평가

클로저는 매우 강력한 게으른 평가 기능을 포함한다. 게이른 평가는 문제를 단순화해준다.

코드로서의 데이터

프로그램은 리스트로 이루어진다. 리스프와 마찬가지로 데이터를 코드로 표현할 수 있다.

약점


관련 문서