알라딘 중고매장

  • 최저가 : -원 I 최고가 : -원
  • 재고 : 0부
  • - 쇼핑목록에 추가하신 후 목록을 출력하시면 매장에서 간편하게 상품을 찾을 수 있습니다.
 
[동탄점] 서가 단면도
(0)

스칼라로 동시성 프로그램을 작성하는 방법을 다룬 책이지만, 꼭 스칼라 개발자가 아니더라도 JVM에서 동시성에 대한 기초를 쌓고, 동시 프로그래밍에 대한 지식을 넓히고자 하는 모든 프로그래머가 참고할 만한 기본서다.

이 책을 읽고 나면 기초적인 동기화 구성요소, 퓨처와 프라미스, 액터, 병렬 컬렉션, 반응형 확장(Rx)을 사용한 프로그래밍을 할 수 있고, 소프트웨어 트랜잭션 메모리 등을 활용해 복잡한 동시성 애플리케이션을 작성하는 법을 배울 수 있다.

마틴 오더스키 (EPFL 교수, 타입세이프(Typesafe) 공동창업자, 스칼라 창시자)
: 동시, 병렬 프로그래밍은 주로 커널 프로그래밍이나 고성능 계산 등의 틈새 분야에 속했었지만, 능숙한 프로그래머라면 꼭 알아야만 하는 기술로 변해왔다. 이제는 병렬 분산 계산 시스템이 표준이기 때문에, 성능을 향상시키거나 비동기적인 이벤트를 처리하기 위한 대부분의 애플리케이션이 동시성 애플리케이션이다.
지금까지 대부분의 개발자는 이런 변화에 적응할 준비가 되어 있지 않았다. 학교에서 스레드와 락에 기반한 전통적인 동시성 모델을 배웠더라도, 그런 모델은 규모가 큰 동시성을 신뢰할 수 있게 다루면서 수긍할만한 생산성을 발휘하기에는 부적합해져 버렸다. 실제로 스레드와 락은 쓰기 어렵고, 올바르게 사용하기는 더욱 어렵다. 좋은 결과를 얻기 위해서는 더 고수준의 조합 가능한 동시성 추상화를 사용해야 할 필요가 있다.
15년 전에, 나는 스칼라의 아버지 뻘인 언어를 이용해 작업한 적이 있다. 그 언어는 '퍼널(Funnel)'이라는, 언어 핵심에서 동시성을 지원하는 실험적인 언어였다. 그 언어의 모든 프로그래밍 개념은 '병합 계산법(join calculus)'의 객체 지향적인 파생물인 '함수적 연결 (functional net)' 위에 정의된 문법적 편의(syntatic sugar)로 설명할 수 있었다. 병합 계산법이 멋진 이론이긴 했지만, 몇 가지 실험을 거친 이후, 우리는 동시성 문제는 한 가지 정형화된 방식만으로 편하게 다루기에는 너무 다양한 측면이 존재한다는 점을 깨달았다. 모든 동시성 문제를 한꺼번에 해결할 수 있는 묘책은 없다. 올바른 해법은 목표가 무엇인가에 따라 달라진다. 값의 스트림이나 이벤트에 대해 반응하는 비동기 계산을 정의하고 싶은가? 메시지를 사용해 서로 통신하는 독립적이며 고립된 개체들이 있었으면 하는가? 변경 가능한 저장소에 대해 트랜잭션을 정의하고 싶은가? 아니면, 병렬 실행의 주 목적이 성능을 향상시키는 것인가? 이런 모든 과업에 대해 제대로 작동할 수 있는 추상화가 퓨처, 반응형 스트림, 액터, 트랜잭션 메모리, 병렬 컬렉션 등으로 따로 존재한다.
그로 인해 스칼라와 이 책이 필요해졌다. 유용한 동시성 추상화가 아주 많기 때문에, 이들을 모두 프로그래밍 언어의 구성 요소로 포함시키는 것은 매력적이지 않다. 스칼라에서 우리가 수행했던 작업의 이면에 있던 목적은, 사용자 코드나 라이브러리에서 고수준의 추상화를 쉽게 정의할 수 있게 하는 것이었다. 이런 방식을 통해, 프로그래머가 동시 프로그래밍의 다양한 측면을 처리할 수 있는 모듈을 정의할 수 있다. 이런 모듈은 모두 호스트 시스템이 제공하는 저수준의 핵심 기능을 바탕으로 구축될 것이다. 뒤돌아보면, 이런 접근 방식이 매우 잘 들어맞아왔다. 오늘날 스칼라로 된 강력하고 우아한 동시 프로그래밍 라이브러리를 다수 볼 수 있다. 이 책은 그중 가장 중요한 몇 가지를 알려주고, 각각의 용례와 적용 패턴을 설명할 것이다.
이러한 책의 저자로 알렉산더 프로코펙보다 더 나은 전문가는 없을 것이다. 그는 동시성과 병렬 프로그래밍에 가장 유명한 몇몇 스칼라 라이브러리에 공헌했다. 또, 가장 복잡한 데이터 구조와 알고리즘을 여러 개 고안해냈다. 그는 자신이 작업해 온 분야에 대해, 읽기 쉬운 자습서인 동시에 권위 있는 참고서 역할을 할 수 있는 책을 만드는 데 성공했다. 나는 이 책이 스칼라로 동시, 병렬 프로그램을 작성하고자 하는 모든 사람에게 필독서가 될 것으로 믿는다. 또한, 환상적이며 빠르게 변하고 있는 계산 분야인 동시 프로그래밍에 대해 알고 싶어 하는 많은 사람의 서가에 이 책이 꽃혀 있는 것을 보게 되리라 확신한다.

최근작 :<스칼라 동시성 프로그래밍> … 총 2종 (모두보기)
소개 :
최근작 :<핵심 코틀린 프로그래밍> … 총 54종 (모두보기)
소개 :

알렉산더 프로코펙 (지은이)의 말
동시성은 어디서나 존재한다. 시장에 다중코어 프로세서가 늘어나면서, 동시 프로그래밍의 필요성이 개발자 사회를 강타했다. 한때 동시 프로그래밍은 프로그램과 시스템의 비동기성을 표현하기 위해 쓰였으며, 주로 학술적인 분야에 한정됐지만, 이제는 소프트웨어 개발에서 널리 사용 중인 방법론 중 하나가 됐다. 그 결과, 고급 동시성 프레임워크와 라이브러리가 놀라운 속도로 생겨나고 있다. 최근 몇 년은 동시 프로그래밍의 르네상스라 할 수 있다.
최근의 언어와 동시성 프레임워크에서 추상화의 정도가 점점 높아짐에 따라, 이들을 언제, 어떻게 사용할지 알아두는 것이 점점 중요해지고 있다. 스레드(thread), 락(lock), 모니터(monitor) 등의 전통적인 동시성과 동기화 기본 요소를 잘 알아두는 것만으로는 더 이상 충분하지 않다. 전통적인 여러 동시성 문제를 해결하면서, 특정 목표를 잘 달성하기 위해 만들어진 고수준 동시성 프레임워크들이 점점 동시 프로그래밍 세계를 장악하고 있다.
이 책은 스칼라에서 고수준 동시 프로그래밍을 설명한다. 또한 다양한 동시성 주제를 자세히 설명하고, 동시 프로그래밍의 기본 이론을 다룬다. 그와 동시에, 최신 동시성 프레임워크를 설명하고, 자세한 의미를 알려주며, 사용법을 독자에게 가르쳐준다. 이 책의 목표는 중요한 동시성 추상화를 소개하는 동시에 실제 코드에서 추상화가 어떻게 쓰이는지 보여주는 것이다.
독자 여러분이 이 책을 읽고 나서 동시 프로그래밍을 이론적으로 잘 이해하는 동시에, 올바르고 효율적인 동시 프로그램을 작성하는 데 필요한 유용한 실질적인 기술을 개발하게 되리라 확신한다. 이런 기술은 최첨단 동시성 분야의 전문가가 되기 위한 첫걸음이다.
우리가 이 책을 쓸 때 즐거웠던 것처럼 독자 여러분도 이 책을 재미있게 읽기 바란다.
오현석 (옮긴이)의 말
내가 처음 접했던 컴퓨터는 금성사의 FC-30으로, 8비트, 4MHz(절대 GHz의 오타가 아니다!) Z-80A CPU를 사용하던 귀여운 녀석이었다. 반면, 지금 내가 이 서문을 작성하는 데 사용 중인 컴퓨터는 인텔 코어 i7이 들어 있는 데스크탑으로, 무려 3.9GHz에 4개의 64비트 코어가 들어 있고, 하이퍼스레딩 기능을 통해 4개의 가상 코어를 더 사용할 수 있는 머신이다. 불과 33년이 흘렀지만, z80과 i7 사이의 성능 차이는 2만 2천배다(MIPS로 단순히 비교하자면 Z80A가 0.6MIPS, i7은 133,740 MIPS이다. 물론 MIPS 같은 단위로 성능을 비교해서는 안 된다). 무려 코어가 4개씩 들어간 이유는, 더 이상 클럭 속도를 늘리는 데 한계에 봉착한 프로세서 생산 업체들이 이제는 코어를 늘려가면서 성능 한계를 극복하려 노력하고 있기 때문이다.
하지만, 여러 코어에서 동시에 프로그램을 실행할 수 있는 CPU가 흔해졌다고 해도, 모든 프로그램이 이를 제대로 활용할 수 있는 것은 아니다. 특히, 원래 처리해야 할 데이터의 양이 아주 방대한 빅데이터 분야나, 계산해야 할 양이 많은 기계학습 분야, 또는 사용자가 GUI 등으로 프로그램에 이벤트를 발생시키고, 프로그램은 이를 비동기적으로 처리하면서, 더 쾌적한 사용자 경험을 제공해야 하는 프로그래밍 분야 등에서는 전통적인 단선적 프로그래밍 기법만으로는 컴퓨터 하드웨어가 제공하는 병렬성을 충분히 살리지 못할 가능성이 많다.
또한 동시 프로그래밍이나 병렬 프로그래밍은 진입하기가 쉽지 않다. 먼저, 동시성을 살려서 병렬 처리가 가능하게 프로그램을 작성할 수 있는 법을 배워야 한다. 하지만 대부분의 프로그래밍 교재나 안내서는 그런 부분에 대해 잘 다루지 않거나, 다루더라도 간단한 스레드 활용법 정도를 소개하는 데 그친다. 이런 책을 통해 병렬 프로그래밍에 입문하게 된 개발자는 곧 비결정성이나, 기존의 단선적인 프로그램 흐름에서는 발생할 수 없는 다양한 문제들과 마주치면서 당황하게 된다. 하지만 당황할 것은 없다. 에드가 다익스트라 같은 위대한 전산학자도 1960년대부터 여러분과 같은 문제에 직면하고, 해결하기 위해 고민했으며, 그 외에 수많은 연구자들이나 개발자들도 비슷한 문제를 접하고 고민해 왔지만, 병렬성과 동시성의 모든 문제를 해결해 줄 수 있는 최후의 해결책은 아직 나온 적이 없기 때문이다. 다만 이런 경우에 여러분의 실수를 줄일 수 있는 좋은 안내서가 있다면 매우 바람직할 것이다.
그런 면에서 자바 프로그래머들은 축복받은 축에 속한다. 브라이언 게츠(Brian Goetz) 등이 집필한 『자바 병렬 프로그래밍』(에이콘출판, 2008)은 자바 동시 프로그래밍의 기초부터 응용까지를 잘 다룬 멋진 책이다. 하지만, 그 책이 나온 지 10여 년이 지났고 액터, 병렬 컬렉션, 소프트웨어 트랜잭션 메모리 등의 도구들도 많이 보급되고 있다. 따라서 10년 전에 유효했던(물론 대부분은 지금도 여전히 유효하다) 여러 기초 지식을 잘 설명하면서, 그간의 변화를 반영해 다양한 고수준 동시성 도구를 아우를 수 있는 개론서가 등장할 때가 됐다고 할 수 있다. 이 책은 바로 그런 'JVM상의 동시 프로그래밍'에 대한 개론서 역할을 충분히 할 수 있는 책이다.
동시성 프로그래밍을 할 때, 자바를 사용해 다양한 추상화를 쉽게 구현하고 표현할 수 있다면 좋을 것이다. 비록 자바 8에 람다, 인터페이스 디폴트 메소드 등이 들어가면서 과거보다 훨씬 표현력이 좋아지긴 했지만, 애석하게도 자바는 주류 언어 중에서는 상당히 제약이 심한 언어 중 하나다. 다양한 동시성 도구를 소개하면서 자바 API를 사용하는 경우, 그보다 더 이해하기 쉽고 깔끔한 언어를 활용하는 것보다 오히려 코드 이해가 어려워질 수도 있다. 그런 면에서, 자바 프로그래머에게 스칼라는 또 하나의 축복이라고 감히 말할 수 있다. 이 책은 스칼라를 사용한 JVM상에서의 동시 프로그래밍에 대해 설명하며, 스칼라 코드로 인해 예제 코드는 간결하고 이해하기 쉬워졌다. 따라서 독자 여러분은 문제 자체의 본질과 그 해결 방법에 좀 더 집중할 수 있다. 더구나, 이 책의 저자인 프로코팩은 스칼라의 본산인 EPFL 스칼라 팀의 일원이며, 스칼라 동시성 라이브러리를 작업해온 핵심 멤버라는 점에서, JVM 동시 프로그래밍 책을 저술하기에 가장 적합한 사람 중 하나라고 말할 수 있다.
스칼라 프로그래머라면 주저 없이 이 책을 읽고, 다양한 동시 프로그래밍 도구를 적재적소에 사용하게 되길 바란다. 자바 프로그래머라면, 이 책을 통해 스칼라를 사용해서 얼마나 간결하고 멋진 코드를 작성해 JVM상에서 실행할 수 있는지 경험하는 한편, 다양한 동시성 도구들을 배우고 익히는 기회도 함께 획득하기 바란다. 그리고 자바나 스칼라 프로그래머가 아닌 독자라면, 각종 동시 프로그래밍 도구의 기본적인 개념과 사용 방법, 주의사항 등을 배우고 익히면서, 프로그래밍 언어를 적절히 선택하는 것이 얼마나 코딩 생활을 쾌적하게 만들어줄 수 있는지를 느껴보기 바란다.

에이콘출판   
최근작 :<Tkinter를 사용한 파이썬 GUI 프로그래밍 2/e>,<RESTful Web API 패턴과 모범 사례>,<해석 가능한 AI>등 총 1,227종
대표분야 :프로그래밍 언어 7위 (브랜드 지수 148,075점), 그래픽/멀티미디어 15위 (브랜드 지수 20,712점)