하스켈로 배우는 프로그래밍 (Programming in Haskell 우리말 판)

글쓴이
안기영
등록일
2009-07-29 08:15
조회
10,473회
추천
1건
댓글
10건
여기 책/영화/SF 게시판이니까 책 광고 해도 되죠?

번역하던 책이 드디어 나왔습니다.

자세한 내용은 책 홈페이지에  http://pl.pusan.ac.kr/~haskell/ 나와 있으니 길게 말씀드릴 필요는 없겠지만, 하스켈은 그간의 프로그래밍 언어 연구 성과를 반영하는 아름답고 흥미로운 프로그래밍 언어입니다.  그러면서도 학계에서만 쓰이는 것이 아니라 꾸준히 발전해서 산업에서도 쓰이고 있고요.  하지만 아직 우리나라에서는 다루는 강의나 관련 기술을 이용하는 산업이 거의 없어서 이렇게 입문서를 번역하여 더 많은 사람에게 소개하게 된 것을 기쁘게 생각합니다.  대학 1학년 강의용으로 만들고 다듬은 교재라서 프로그래밍을 전혀 하지 못하고 처음 배우려는 사람에게 가장 적당하고, 또 이미 프로그래밍을 할 줄 알지만 하스켈 또는 하스켈과 비슷한 함수형 언어들에 대해 알고자 할 때 빨리 훑어보기 좋은 책입니다.

  • d.hong ()

      축하합니다.
    재우형을 이렇게나마 보게되네요.
    스트레이트 파마를 하셨는지, 처음에는 알아보기 힘들었다는 ^^

  • 돌아온백수 ()

      새로운 언어에는 별 관심이 없었는데 (마지막이 Python)....
    온라인 매뉴얼을 쓰윽 보니까, 매스매티카 언어랑도 비슷하군요. 이거 함 배워볼까요? Perl 에서 Python 넘어온 것도 귀찮아 절절 맸는데....

  • Monsieur ()

      perl 이나 python 같은 스크립팅 언어와는 격이 다른 언어입니다.

    펑셔널 랭귀지 한번 배워 두시면, 프로그래밍에 대한 패러다임이 바뀔 것입니다만, 비전공자시라면 굳이 배우실 필요는 없을 것 같습니다. 배우기는 어렵지 않습니다만, 써먹을 데가 별로 없을 거 같아서 입니다.

    하스켈 말고 비슷한 (펑셔널) 다른 언어들이 또 많이 있는데, 그중에 하스켈과 함께 제일 많이 쓰이는 건 ML 입니다.

    그라함 허튼 교수의 세미나를 들은 적 있습니다. 강의를 무척 잘하는 분이더군요 (머리속에 쏙쏙 들어오는...).

  • 돌아온백수 ()

      써먹을데가 있어서 배우려고 하면 늦죠, 늘 그렇듯이. 데이타베이스(오라클이나 Mysql)와 연동되는 인터페이스들은 있거나, 수학 라이브러리가 빵빵하면, 배워두면 언젠가는 써먹을텐데요. 시간 날때 뒤져봐야겠네요.

  • 겨울꿈 ()

      궁금한 점이 하나 있는데 이 언어가 c++ 대체할 수 있을 만큼 수행속도가 빠른가요?

  • 예진아씨 ()

      겨울꿈님// 여기 우리나라 리눅스 커뮤니티에서 얼마 전에 팩토리얼 계산하는 글타래가 있는데 <a href=http://kldp.org/node/107470 target=_blank>http://kldp.org/node/107470</a> C++도 어설프게 짜면 스크립트 언어인 파이썬이나 펄보다도 느립니다. (저 글타래에서는 라이브러리 콜 한방으로 펄의 승리 -_-;; 날코딩으론 하스켈의 승리) "어떤 프로그램을 얼마만큼 시간과 노력을 투입해서 어떤 라이브러리들을 이용해서 짜는가"라는 문맥이 빠져서는 답이 없는 질문입니다. 결국은 컴파일러의 완성도 문제인데 GHC는 충분히 빠르고 원한다면 gcc를 통해 기계어 코드를 생성할 수도 있죠. 물론 gcc를 백엔드로 쓴다고 해서 항상 성능이 향상된다는 보장은 물론 없지만요.

  • Monsieur ()

      어느 언어도 c++ 보다 수행속도가 빠르기는 힘듭니다.

    그런데, 수행속도가 빨라야만 c++ 를 대체하는 건 아니죠.. 가상머신 위에서 돌아가는 (그래서 c++ 에 비교하면 아주아주 느린) Java 나 C# 이 요즘 아주 많이 쓰입니다.

    c++ 은 수행속도가 빠른 반면 생산성이 아주 나쁜 언어 입니다 (아니라고 주장하고 싶은 사람이 아주 많습니다만, 사실은 사실인 겁니다).

    점점 더 소프트웨어가 갖추어야 하는 기능이 복잡해 지면서, 하드웨어의 가격 대비 성능은 좋아지면서, 생산성 높은 언어의 중요성이 점점 커지고 있습니다.

    프로그래밍 언어에서 기존의 패러다임인 imperative programming (우리가 아는 거의 모든 종류의 언어들) 과는 아주 다른 개념이 functional programming 이고, 이 펑셔널 프로그래밍을 가능하게 해주는 언어가 하스켈, ML 등등 입니다.

    펑셔널 언어는 imperative 언어보다 버그잡는 게 무척 쉽고, 최적화도 쉽고, 버그잡고 최적화 하는 자동 툴 만드는 것도 무척 쉽습니다.

    아직까지는... CS 에서 PL 전공 하는 사람들 외에는 펑셔널 언어를 실제 프로젝트에 쓰는 사람들은 거의 없다시피 합니다 (아주 없다는 건 아닙니다만...)

    위에 돌백님은 데이타베이스 인터페이스/수학 라이브러리 등등을 언급하셨고, 겨울꿈 님은 c++ 만큼 속도가 빠른가 등등을 궁금해 하시는데, 이런 측면에서 하스켈 언어에 접근하시는 것은 모두들 약간 헛다리 잡고 계신 겁니다.

    PL 전공하는 분들의 관심사는 이런거랑은 전혀 관련이 없기 때문입니다.. 그분들의 관심사는, 버그가 있는지 없는지 프로그램 돌려보지도 않고 자동으로 잡아주는 방법이 있을까? 등등 입니다.

  • 안기영 ()

      Monsieur께서 말씀하신 것이 사실이긴 합니다만, 프로그래밍 언어 연구하는 분들 중에도 응용 분야를 다루는 분들도 있고 그렇다고 응용하는 사례가 아주 드문 것은 아닙니다. (물론 우리나라에는 아직까지 거의 없습니다 ... 아니 사실 우리나라는 그것보다 지금 기본적으로 IT환경 자체가 너무 엽기적이라서 ...) 예를 들면 하스켈의 경우 <a href=http://www.haskell.org/haskellwiki/Haskell_in_industry target=_blank>http://www.haskell.org/haskellwiki/Haskell_in_industry</a> 에 산업에서 사용하는 사례가 정리되어 있고, 하스켈 외에도 ML이나 Erlang 등 다른 함수형 언어를 현장에서 사용하는 사람들끼리 모이는 학회보다는 좀 덜 형식적인 국제적인 세마나 형식의 Commercial Users of Functional Programming ( <a href=http://cufp.galois.com/ target=_blank>http://cufp.galois.com/</a> 참조) 이라는 모임이 함수형 프로그래밍 학회와 함깨 매년 열리고 있습니다.

    그리고 ML계열의 언어들 중 하나인 OCaml의 경우에는 Haskell보다 수학 계산 관련 라이브러리가 좀더 많이 있고, 또 바이오인포매틱스나 금융 등 다양한 scientific computing에 응용하는 사례나 방법을 안내하는 책도 나와 있습니다. 제목은 "OCaml for Scientists"이고 책 홈페이지는 <a href=http://www.ffconsultancy.com/products/ocaml_for_scientists/ target=_blank>http://www.ffconsultancy.com/products/ocaml_for_scientists/</a> 입니다. 물론 우리말은 아니고 영문 서적입니다. 또 최근 마이크로소프트에서 F#이라는 새로운 ML계열의 언어를 비주얼 스튜디오에 탑재하려 하고 있는데 같은 저자가 F#으로 닷넷 환경에서 마찬가지 예재로 scientific computing에 F#을 응용하는 방법에 대해 안내하는 비슷한 내용인데 F#으로 소개하는 책도 최근에 나왔습니다. 제목은 "F# for Scientists"이고 홈페이지는 <a href=http://www.ffconsultancy.com/products/fsharp_for_scientists/ target=_blank>http://www.ffconsultancy.com/products/fsharp_for_scientists/</a> 입니다. 프로그래밍 언어 자체보다는 돌백님처럼 수학 계산 등의 라이브러리나 이런 분야의 활용에 관심이 많은 분들은 이러한 책을 살펴보시는 것도 흥미로울 것입니다.

    하지만 이러한 책을 살펴보다 보면 예제에서 다루는 문제 자체는 CS 전공자들보다 잘 이해하시겠지만, 코드에서 Monsieur 님께서 말씀하신 것처럼 CS 비전공자들에게는 비교적 생소한 프로그래밍 패러다임의 개념이 나오는 경우에 그런 것 때문에 읽다가 혹여나 막히는 부분이 있다면 그럴 때 이런 입문서를 곁에 두고 우리말로 가볍게 한번쯤 훑어 보시고 나면 아마 위와 같이 그 응용에 대해 다루는 책들이 쉽게 이해가 갈 것입니다. Haskell은 ML 계열 언어보다더 훨씬 골수(?) 뻥셔널한 언어이고 문법이 좀더 간단해서 아이디어의 원형이 잘 드러나게 살아있다고 해야 할까요, 그래서 현대적인 함수형 프로그래밍 패러다임을 익히기에는 가장 좋은 언어입니다.

  • 안기영 ()

      한 가지 더 덧붙이자면 "어느 언어도 C/C++ 보다 수행속도가 빠르기는 힘듭니다."라는 명제는 상당히 많은 경우에 사실이 아닙니다. C/C++로 최근에 짜 놓긴 했지만 최적화를 다 못한 관계로 포트란이 아직도 수치연산에는 더 빠른 라이브러리가 얼마든지 존재할 수 있습니다. 그리고 그냥 일차원 배열 말고 좀 복잡한 데이타 구조를 엮어 나가야 할 일이 많은 경우에는 자동 메모리 관리를 하는 언어에서 garbage collector라고 부르는 메모리 관리 런타임 시스템보다 더 효율적인 C/C++ 구현을 하려면 상당히 많은 노력이 들어갑니다. CS 전공자들도 이쪽으로 경험이 많고 감각이 뛰어난 사람들이나 이걸 실무에서 빠른 시간 안에 해결할 수 있지 웬만한 노력을 들여서는 오류를 피하면서 자동으로 메모리 관리를 해 주는 언어들의 성능을 따라오기가 쉽지 않습니다. 특히 CS 비전공자에게 이걸 요구하는 것은 무리한 일일 뿐더러 해당 분야 전문가의 귀중한 시간을 크게 낭비하는 일이 되어 버리죠. 문제마다 특성에 맞는 메모리 관리 시스템 C/C++로 매번 다시 구현해야 하는 꼴이기 때문입니다. 물론 이것도 라이브러리화 되어 있을 수 있고, 또 conservative garbage collector들로 C/C++에서 그런 미리 만들어진 메모리 관리기를 적용할 수도 있긴 한데, 이쯤 되면 그냥 메모리를 자동으로 관리하는 언어를 처음부터 쓰는 게 나은 상황이 되고 마는 경우가 대부분입니다. (OS의 하드웨어 관리나 데이타베이스에서 메모리/디스크 관리처럼 일반적인 소프트웨어 run time environment에서 제공하는 지원을 기대하기 힘든 상황에서의 하드웨어 튜닝이 주가 되는 경우가 아닌 이상에는 말이죠.)

  • 예진아씨 ()

      그리고 스탠포드 학생이 (아마 물리과인 듯) 예전에 낙뢰반응을 시뮬레이션하는 프로그램을 하스켈로 짰더니 프로그램도 간결한데다 효율도 아주 좋아서 보스랑 좋아라 했다고 자랑하는 내용이 정리된 페이지가 있습니다 <a href=http://bayern.stanford.edu/~brant/lightning/ target=_blank>http://bayern.stanford.edu/~brant/lightning/</a> 과학 계산 분야에도 이와 같이 유용하게 쓸 수 있는 곳이 있죠.

목록


책/영화/SF

게시판 리스트
번호 제목 글쓴이 등록일 조회 추천
759 9 (2009) 원래 제목이 이것 뿐입니다. 댓글 2 돌아온백수 09-14 5234 0
758 테크놀로지의 종말 - 마티아스 호르크스 댓글 1 avaritia 09-05 5907 0
757 Inglourious Basterds (2009) 댓글 3 언제나 무한도전 08-25 5618 0
756 Julie & Julia (2009) 댓글 3 돌아온백수 08-24 5895 0
755 커츠 대령과 조갑제 댓글 9 !@#$ 08-23 8675 0
754 독일 좌파 테러리스트 영화: 바더 마인호프 Der Baader Meinhof Komplex 지지지 08-22 9956 0
753 코드 - 펫촐드 은종현 08-21 4932 0
752 경제학의 진실 by 크루그먼 댓글 1 avaritia 08-20 5322 0
751 Sunshine (2007) Inverted 08-17 4165 0
750 (500) Days of Summer (2009) 돌아온백수 08-17 5186 0
749 District 9 (2009) 댓글 4 돌아온백수 08-17 5132 0
748 몸을 둔감하게 하라 - 유태우와 와타나베 준이치의 건강 해법 Wentworth 08-15 6831 0
747 게이츠 버핏 학교에 가다 를 보고 댓글 1 백면서생 08-09 4939 0
746 Moon (2009) 댓글 2 언제나 무한도전 08-08 5060 0
745 영화 "국가대표" 관람 주의사항 댓글 18 프리라이터 08-07 6604 0
744 한국 웹의 불편한 진실 (김기창 지음, 디지털미디어리서치, 2009.07.27) 댓글 6 예진아씨 08-05 5570 2
743 Funny People (2009) 댓글 2 돌아온백수 08-03 5385 0
열람중 하스켈로 배우는 프로그래밍 (Programming in Haskell 우리말 판) 댓글 10 안기영 07-29 10474 1
741 나는 아내와의 결혼을 후회한다 댓글 5 사악한청바지 07-25 7069 0
740 해운대 정말 괜챦군요. 댓글 3 프리라이터 07-25 5359 0


랜덤글로 점프
과학기술인이 한국의 미래를 만듭니다.
© 2002 - 2015 scieng.net
모바일 버전으로 보기