자유게시판

제목 프로그래밍 패러다임의 변화
글쓴이 한대승(불의회상) 작성시각 2014/08/13 13:27:46
댓글 : 3 추천 : 0 스크랩 : 0 조회수 : 12640   RSS
한대승(불의회상)
절차형 => 객체지향 => 함수형

프로그래밍 관련 자료를 살펴보다 보니 어느 순간 함수형 프로그래밍이 눈에 띄기 시작 합니다.
이제 막 PHP에 입문 하신분들이 보면 뭥미? 하실수도 있지만...

PHP 프로그래밍에 익숙해지기도 전에 CI에 대해 듣고 CI 프레임워크를 찾아 여기까지 오신분들은 적어도 절차형에서 객체지향으로 전환을 시도 하시는 분들입니다.
물론 CI가 객체지향 이었는지도 모르고 사용하시던 분들도 계시겠지만요....

객체지향이 어느정도 무르익어 이제 함수형으로 진화 하고 있는듯 합니다.

아래 함수형 프로그래밍 기초 본문중 콕 들어오는 한 문장 적어 봅니다.
만약 지금 사용하는 컴퓨터가 4096개의 코어들을 가지고 있다면, 
어떻게 하면 컴퓨터의 모든 사이클(cycle)을 사용하면서 최대한의 
이득을 얻을 수 있을까? 만약 동일한 메모리 시스템을 서로 먼저 
사용하려고 다투고 있는 16384개의 프로세서들이 있는 컴퓨터에서 
내 함수를 실행해야 하는 상황이라면, 어떻게 해야 함수의 실행 
속도가 빨라질까? 모델(models), 뷰(views), 컨트롤러(controllers)가 
65536개의 프로세서를 공유해야만 하는 상황에서, 응답 시간이 
짧으면서도 유연한 구조를 가지는 웹 사이트를 어떻게 구축할 수 있을까?

PHP 진영도 이러한 변화를 알고 있는지 5.3 버젼 이후 부터는 익명함수를 지원하면서 함수형 프로그래밍을 할 수 있는 환경이 마련 되었습니다.

10년 앞을 본다면 (그러고 보니 대략 10+a 여년전에 java가 탄생 했군요.) 함수형 프로그래밍에 대한 지식도 쌓아 두는게 좋을것 같다는 생각이 드는군요.

관심 있으신 분들은 아래 URL을 방문하여 보세요.

* 함수형 프로그래밍 기초 : http://kwangshin.pe.kr/blog/2013/01/21/%EB%B2%88%EC%97%AD-%ED%95%A8%EC%88%98%ED%98%95-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8Dfunctional-programming-%EA%B8%B0%EC%B4%88/

* PHP에서의 함수형 프로그래밍 : http://wafe.github.io/php-the-right-way/pages/Functional-Programming.html
* Underscore(함수형 프로그래밍 라이브러리) : http://brianhaveri.github.io/Underscore.php/
* Underscore CI Helper : http://cikorea.net/source/view/801/page/1/
* 함수형 자바스크립트(도서) : http://www.hanbit.co.kr/book/look.html?isbn=978-89-6848-079-9
* 람다대수(수학관련) : http://ko.wikipedia.org/wiki/%EB%9E%8C%EB%8B%A4_%EB%8C%80%EC%88%98
 
 다음글 허........허리가............ (3)
 이전글 어렵네요 ;; (4)

댓글

코드이그 / 2014/08/13 14:01:53 / 추천 0
좋은 정보 감사드립니다 ^^
변종원(웅파) / 2014/08/13 18:18:58 / 추천 0
c 시대로 다시 가는건가요? ㅋㅋ
메모리 위치를 신경써야 했던?

메모리가 충분하지 않다면 문제가 생길 수도 있겠네요
kaido / 2014/08/13 21:29:43 / 추천 0
php 함수 순간 jqeury 인줄 알았습니다 ㅋ

처음 객체를 배우던 때가 기억 나네요.

대체 함수 놔두고 객체는 뭐하러 배워야 하지? 이렇게 복잡하게 구조화 해서 써야 하는 큰 이유가 있는건가?

그러다 객체의 매력에 빠진 다음부터는

오오미! 객체가 진리다! 


지금에 와서는 단순 리턴이 훨씬 많은데 굳이 객체를 써야함?? 객체화 시켜서 만들었다 치고 이거 누구 유지보수함 UMD라도 그려놔야 하나? 생각 듭니다.
잘만든 함수 몇개는 정말 두고두고 쓰죠.

물론 구조화 할 필요가 있다면 만들겠지만 말이죠.
[실제 객체 디자인패턴 책 마지막부분에서도 "패턴화를 남발 하지 마라. 적재적소로 쓰는게 좋다. 당신은 hellow world! 한줄 치기 위해서 보일러패턴을 넣을 생각인가?"]

물론 JAVA는 태생이 객체 지향이라서 출력 하나 할때도 여러개의 클래스가 사용되지만 말이죠.