마츠모토 유키히로의 프로그래밍 언어 만들기 (Ruby 및 Streem을 통한 언어 제작 과정 살펴보기)

마츠모토 유키히로의 프로그래밍 언어 만들기 (Ruby 및 Streem을 통한 언어 제작 과정 살펴보기)

$31.39
Description
이 책은 하나의 프로그래밍 언어가 만들어질 때, 어떤 고민과 과정을 거쳐야 하는지 알려준다. 먼저 낱말 해석기 및 구문 해석기의 구현부터 시작해 파이프라인 형태의 프로세싱 규칙 만들기, 멀티스레드 구현, 큐 구현, 데이터 타입 설계, 소켓 프로그래밍, 그리고 난수 생성 라이브러리까지 프로그래밍 언어가 가져야 할 기능들을 새로운 언어 ’Streem’을 직접 설계하며 설명한다.
선정 및 수상내역
2020년 대한민국학술원 우수학술도서 선정도서
저자

마츠모토유키히로

1965년돗토리현요나고시출신으로,츠쿠바대학교정보학부를졸업했다.프로그래밍언어루비(Ruby)의창시자이며,프로그래밍언어디자인에능통하다.㈜네트워크응용통신연구소의연구원으로재직했으며,재단법인루비연합이사장,PaaS서비스회사인헤로쿠(Heroku)의책임아키텍트등다수의직함을갖고있다.삼녀일남,개와고양이한마리씩의아버지이기도하다.온천을좋아하며,시마네현에살고있다.

목차

지은이소개
옮긴이소개
옮긴이의말
시작하기

1장.어떤언어를만들까?
1-1언어를직접만든다는것의가치
1-2언어처리시스템의구조
1-3가상머신
1-4언어디자인입문(전편)
1-5언어디자인입문(후편)

2장.새로운언어‘Streem’의설계와구현
2-1추상적병행프로그래밍
2-2새로운언어‘Streem’
2-3문법검사기먼저만들기
2-4이벤트루프
2-5멀티스레드객체
2-6캐시와심벌
2-7추상구문트리(AST)로의변환
2-8지역변수와예외처리

3장.객체지향기능설계
3-1여러가지객체지향
3-2Streem의객체지향
3-3Streem문법재검토
3-4패턴매치

4장.Streem객체구현
4-1소켓프로그래밍
4-2기본데이터구조
4-3객체표현과NaNBoxing
4-4가비지컬렉션
4-5락프리알고리즘

5장.스트림프로그래밍의강화
5-1파이프라인프로그래밍
5-2파이프라인구성요소
5-3CSV처리기능
5-4시간표현
5-5통계기초의기초
5-6난수
5-7스트림그래프

마치면서
찾아보기

출판사 서평

★지은이의말★

이책은리눅스(Linux)전문지인「닛케이(日?)Linux」에서2014년4월부터2016년12월까지연재한“만들면서배우는프로그래밍언어”라는기사를정리한것이다.
‘프로그래밍언어만들기’관련서적은시중에이미많이나와있으며,나도이런주제의책을집에여러권갖고있다.
‘프로그래밍언어만들기’라는종류의책대부분은‘프로그래밍언어의구현’에대해언급한다.예를들어yacc와lex라는도구로어떻게구문해석기와낱말분석기를만드는지,인터프리터를어떻게설치하는지등을샘플로,비교적단순한언어의구현을통해설명한다.
프로그래밍언어만들기는실태를모르는사람의입장에서는상당히어려운작업이라생각하기쉽지만,차근차근계단식으로접근한다면그리어려운분야는아니다.실제언어처리기제작은대학교의컴퓨터과학전공수업에서그렇게찾기어렵지않은과제다.젊은학생들을대상으로하는프로그래밍콘테스트에서는자신이만든언어로응모하는고등학생도있었다.
선입견을없애고본다면언어의설계와제작은프로그래머의지적도전과제로재미있는분야다.그런의미로이들‘언어만들기’부류의책도나름가치가있을것이다.그러나이런기존책에대해서도나름대로불만이없었던것은아니다.기존책의한계는프로그래밍언어의구현에대한해설뿐이었다.샘플로사용한언어도대부분기존언어의단순한서브셋이대부분이다.‘프로그래밍언어만들기’활동내에는더지적이고재미있는도전과제로서의‘언어디자인’이라는부분이전혀다뤄지지않았다.
어쩔수없다는점은알고있다.한정된페이지에필요한내용을모두담는것도한계가있고,가능한단순한사례를들어야이해하기쉽게전달할수있을것이다.그리고기존언어의서브셋레벨이아닌,메인레벨의언어설계를경험한사람은그렇게많지않다.거기에직접디자인한언어가전세계적으로사용되는경험을한사람은더더욱없다고해도과언이아닐것이다.
언어를어디까지,어떻게디자인할지경험을통해말할수있는사람은없다.우선언어처리를구현하는기술의해설부터시작하고,디자인에대해서는그다음에진행하는게순서일것이다.
이순서와반대되는소수의예외가있으니바로C++설계자인비야네스트롭스트룹(BjarneStroustrup)이쓴『TheDesignandEvolutionofC++』(Addison-Wesley,1994)이다.이책은C++가왜현재이런모습으로됐고지향점이무엇인지알수있는귀중한자료다.하지만이책을통해언어의디자인방법을배울수있을지상당한의문이든다.
내가생각하는방법의책이세상에없다면직접쓰는수밖에없다고생각했다.다행히도나는‘세계적으로사용하는언어를설계한경험’이있으며,취미를뛰어넘은활동으로IT세계에서쓰는여러언어의설계에대해서도지식이있다.더욱이「닛케이Linux」에서의연재를시작으로여러권집필경험도있다.자화자찬이지만이이상딱맞는인재를어디에서찾을수있겠는가?
이런생각을갖고「닛케이Linux」2014년4월호부터연재를시작했다.언어를만들게된동기부터언어디자인시느꼈던갈등까지,다른책에서는다루지않은영역까지다뤘다고나름자부한다.
하지만매월한번제출하면인쇄되는,수정이어려운연재기고문의특성상시간이지날수록오류나필요없는내용이생겼는데이책의내용도예외는아니었다.
연재를시작할때계획주제는표1과같았지만,결국임베디드용루비인‘mruby’에대한내용(2014년4월호와6월호일부)과이책의범위에서조금벗어나는내용에대한해설(2014년9월호부터11월호)은이책에서빠졌다.본문게재순서도자연스럽게연결되도록변경했으며,Streem현황에맞춰일부는내용을수정했다.
하지만문장의구성등은연재당시와크게바뀌지않았다.해설의일관성을유지하고이해도를높이기위해절이끝날때마다‘타임머신칼럼’을넣었다.‘타임머신칼럼’은원고집필당시에향후일어날일을미리알았다면‘지금은이렇게쓸텐데...’라는,보충의의미로적은글이다.
이칼럼은미래예측에대한저자의능력의한계를보여주는,조금은복잡한기분이드는글이지만미래는누구도알수없는것이라는마음으로책에넣기로했다.
그럼여러분을‘언어의디자인’의세계로안내하겠다.

★옮긴이의말★

자바(Java)나파이썬(Python)을사용하며이언어를만든제임스고슬링(JamesArthurGosling)이나귀도반로섬(GuidovanRossum)등개발자들은어떤과정을거쳐이런언어를만들었는지잠시궁금증을가져본적이있다.
하지만당시이들이언어를만드는과정에서어떤고민을하고어떤시행착오를겪었는지에대한자료나서적을발견하지못했다(지금도없는것으로안다).대부분의책은정립된결과만이야기하고있었다.
루비(Ruby)의아버지인마츠모토유키히로가그판도라의상자를열었다.
이책은마츠모토유키히로가「닛케이Linux」에2014년부터2016년까지연재한글을한권으로엮은것이다.여기서저자는언어제작과정에서의기획방향,어려움및이에대한해결과정을솔직하게보여준다.
프로그래밍언어구현의기본인낱말해석기및구문분석기의구현부터시작해사용자편의를위한라이브러리제작까지다양한영역을다루지만,코드자체를해설하기보다는스토리중심의전개를하고있어컴퓨터과학의지식이조금이라도있다면어렵지않게읽을수있다.특히이를위해새로운언어인‘Streem’을기획하고만드는과정도IT분야에서일하는나에게는신선함으로다가왔다.