티스토리 뷰

스칼라 에서 함수형 프로그래밍 원칙들


원문 : https://www.coursera.org/course/progfun


함수형 프로그래밍에 대해 배워보자. 그리고 어떻게 하면 객체지향 프로그래밍과 효과적으로 조화를 이룰 수 있을까. 

스칼라 프로그래밍 언어를 사용하여 깨끗한 함수형 코드를 작성하는 습관에서 그것을 얻을 수 있다.


강좌에 대해


이 강좌는 스칼라 프로그래밍 언어를 사용하여 함수형 프로그래밍의 기초 강좌이다. 함수형 프로그래밍은 최근 몇년간 점점 더 유명해지게 되었다. 왜냐하면 코드를 안전하고, 간결하고, 우아하게 만들기 떄문이다. 뿐만 아니라, 함수형 프로그래밍은 정의와 함수들를 통한 강력한 방법으로 가변적인 변수들과 루프들을 대체하는 멀티프로세서들을 위한 동시성 코드를 작성하는 것을 무엇보다 쉽게 만든다.


스칼라는 practical package 안에서 함수형과 객치지향 프로그래밍을 융합시킨 언어이다. 스칼라는 자바와 툴들에서 균일하게 사용할 수 있다. 스칼라는 현재 빠르게 증가하고 있는 오픈소스 프로젝트들과 회사들에서 사용되어지고 있다. 트위터, 링크드인, Foursquare, Tumblr, Klout와 같은 사이트들을 위한 core infrastructure도 제공한다. 


이 과정에서 함수형 프로그래밍 스타일의 요소들을 발견하게 될 것이고, 당신이 매일 프로그래밍 하고 있는 작업들에 그것들을 어떻게 적용할 수 있는지를 배우게 될 것이다. 또한 함수형 프로그램들에 대해 추론을 하기 위해 변치 않는 많은 증거들과 상징적인 실행을 tracing 하는 것으로 단단한 토대를 이룰 것이다. 번역 안됨 - by touching upon proofs of invariants and the tracing of execution symbolically. 


이 과정은 hands on (직접 참여하여 체험하는 것)입니다. 대부분의 유닛들은 중요한 개념들을 보여주는  짧은 프로그램들을 소개하고, 당신을 초대한 그들과 함께 플레이 하고 수정하며 개선된다. 이 과정은 과제들의 시리즈로부터 완성된다.  번역 안됨 - most of which are also programming projects.


(마지막 문장 번역 이상함..;)


강좌 커리큘럼(Syllabus = Curriculum)


첫째 주 : 프로그래밍 패러다임들; 함수형 프로그래밍과 스칼라 프로그래밍 언어의 개요

둘째 주 : 함수의 정의와 사용, 재귀와 비종료, 변수들로 함수들을 동작, reduction에 의한 추론

셋째 주 : 불변 객체들의 정의와 사용, 상속과 동적 바인딩의 리뷰

넷째 주 : 타입과 패턴 매칭

다섯째 주 : List로 작업한다는 것

여섯째 주 : 컬렉션과 Combinatorial Search

일곱째 주 : 게으른 평가 (Lazy Evaluation)


배경 지식


최소한 1년 이상의 프로그래밍 경력이 있어야 한다. Java 또는 C#으로 숙달된 것이 이상적이지만 C/C++, Python, JavaScript 또는 Ruby와 같은 다른 언어에 대한 경험으로도 충분하다. 


참고 도서


이 강좌는 자체 포함되려고 설계되었다. 이 강좌를 읽기 전에 MIT Press에서 발행한 Adelson and Sussman의 저서 Structure and Interpretation of Computer Programs - 2nd Edition (MIT Electrical Engineering and Computer Science) 를 읽어볼 것을 추천한다. 스칼라에 대해 더 배우려면 Artima Press에서 발행하고 Odersky, Spoon 그리고 Vanners가 작성한 Programming in Scala: A Comprehensive Step-by-Step Guide, 2nd Edition 또는 Addison Wesley에서 발행하고 Horstmann이 작성한 Scala for the Impatient를 읽어볼 것을 추천한다.


강좌 형식


이 클래스는 6분에서 15분 사이의 비디오 강연들로 이루어질 것이다. 각 비디오마다 통합적인 퀴즈 질문들이 포함된다. 또한 강연 비디오에 포함되지 않는 부분들은 독립적인 과제로 이루어진다.


FAQ


  • 이 강좌가 완료된 후에 수료증을 얻을 수 있나요?

- 네. 성공적으로 이 강좌를 마친 학생들에게는 강사로부터 수료 증명을 받을 수 있습니다.


  • 이 강좌를 위해 필요한 리소스들은 무엇이 있을까요?

- 다음에 나오는 것들을 설치해야 합니다. : - Java Virtual Machine JDK 1.6 또는 그보다 높은 버젼. - 스칼라 2.9 또는 그보다 높은 배포 버젼에서 이 강좌에 사용하는 Scala IDE for Eclipse 개발환경을 추천합니다. 이는 스칼라 배포와 함께 수반되어서 만약 당신이 오직 이클립스에서만 작업을 하려고 한다면 Scala IDE 설치가 필요합니다.( 번역 이상 - It comes with a Scala distribution so if you intend to work only in Eclipse you just need to install the Scala IDE.)


  • 이 강좌를 수강하면서 배울 수 있는 가장 멋진 점은 무엇입니까?

- 이를 처음 실행하고 작업을 할때 우아한 코드를 작성하게 됩니다.




단어


principles : 원칙

gain : (필요하거나 원하는 것을) 하게[얻게] 되다.

practice : 실행, 관례, 습관

cornerstone : 주춧돌, 초석

promote : 촉진하다, 홍보하다.

concise : 간결한

elegant : 우아한

furthermore : 뿐만아니라, 더욱이

fuse : 녹이다, 융합시키다.

interoperate : To work reliably with another system.

seamlessly : 이음매가 없이, 균일하게

illustration : 실례, 예

concept : 개념

serve : 제공하다

syllabus : 교수요목 curriculum

overview : 개관, 개요

recursion : 반복, 되풀이, 재귀

as : ~으로 (A as B = B로 A를)

immutable : 변경할 수 없는, 불변의

evaluation : 평가

proficiency : 숙달, 능숙, 능란

ideal : 이상적인, 가장 알맞은, 완벽한

sufficient : 충분한

self-contained : 자체 포함

consist : ~로 되어 있다, 이루어져 있다.

lecture : 강의, 강연

integrated : 통합적인

coolest thing : 가장 멋진 점

proof : 증거

by touching : 손으로 더듬어서

invariant : 변치 않는



댓글
댓글쓰기 폼