함수형 언어는 어느 영역에서 쓰이나요?

익명 사용자의 이미지

http://www.ffconsultancy.com/free/ray_tracer/languages.html

를 보니 SML 의 속도가 상당하네요.
OCaml 도 코드량대비 성능이 상당한 편이고..

그런데 이런 언어들은 어떤 영역에서 쓰이고 있나요?
모두 대학교/대학원에서 교육용으로만 쓰이고 있는것인지.. 아니면 실무에서도 널리 사용되는지 궁금해서요.

혹시 함수형언어로 프로젝트를 진행하거나, 실무에 쓰고 계시다면 경험담좀 들려주세요. 여러가지 DB 연결에 무리는 없는지.. 디버깅, 프로파일링 환경은 어떠한지.., TCP/UDP 등을 쓰거나 예외처리는 가능한지.. 등등..

익명 사용자의 이미지

lisp 가 함수형언어인 걸로 알고있습니다.
그리고 emacs 에서 내부 기능을 확장할 때 사용하는 언어가 lisp 의 한종류인 emacslisp 입니다.

익명 사용자의 이미지

SML은 컴파일러 개발에 최적이라고
울 컴파일러 교수가 그러더군요.

암튼, Wadler가 나서서 다음같은 링크까지 만든것을 보면
아직은 널리 쓰인다고 보기 어려운 듯하네요.

http://homepages.inf.ed.ac.uk/wadler/realworld/

하지만, 컴파일러에 관련된 많은 석박사논문들이 쏟아지는 것을 보면,
또, MS에서 .NET에 이식한 것을 보면...
이광근 교수님말씀대로 차세대 언어로 부각하지 않을런지... :wink:
(헤헤...C 만큼 오래된 언어가 차세대 언어라니 좀 우습네요...)

익명 사용자의 이미지

"컴파일러에 관련된 많은 석박사논문들이 쏟아지는 것을 보면"

=> "SML을 이용해서" 컴파일러를 향상시킨 많은 .... 으로 수정

notpig의 이미지

우리나라를 한정하면 실무에선 사용을 않하는걸로 알고 있고

대학 연구실에서 약간 사용하고 있는걸로 알고있고요

세계적으로 보면 C/C++/Java 에 비하면 약한 비중이지만
그럭저럭 사용 되는걸로 알고있습니다.

Quote:
혹시 함수형언어로 프로젝트를 진행하거나, 실무에 쓰고 계시다면 경험담좀 들려주세요. 여러가지 DB 연결에 무리는 없는지.. 디버깅, 프로파일링 환경은 어떠한지.., TCP/UDP 등을 쓰거나 예외처리는 가능한지.. 등등..

DB 연결에 대해선 모르겠고 디버깅이나 프로파일링 같은 기본적인(?) 환경및 예외처리 같은 기능은
가지고 있고 네트워크응용프로그램등등도 작성가능하고요 부족한 점은 C /C++ 에 있는 걸 가져와서 사용 가능합니다.
하지만 무엇보다 프로그래밍 언어를 다루고 변환할때 많이 사용됩니다.

제가 아는한도안에선 SML 형태의 함수형 언어는 OCaml 이 대세(?) 인것 같습니다.

익명 사용자의 이미지

함수형언어는 수학적으로는 매우 깔끔하지만 현재 그렇게 많이 쓰이고 있지도 않거니와 앞으로도 많이 각광받을만한 언어라고는 생각되지 않습니다.

무엇보다도 개발자들이 많이 써주어야 시장지배적인 언어 혹은 최소한 제 2,3의 대안 용도로 선택할 수 있을 만큼의 실증적인 언어가 될텐데.. 현재의 imperative한 언어와 비교해볼때 특유의 난해함 그리고 반직관적인 개념들때문에 개발자들이 알아서 슬슬 피해가는 언어일 수 밖에 없지 않나..하는 생각을 합니다. 물론 이런 개발자들의 성향역시도 이들이 기존의 언어에 많이 익숙해져 있기 때문에 어렵게 느끼는것이 아니겠느냐고 반론을 제기할수도 있겠지만, 개인적으로는 단순히 그런 차원의 익숙하지 않음을 뛰어넘는 난해함이 함수형 언어에 존재한다고 생각하기 때문에 함수형언어의 실증성에 대해선 의문을 제기할 수 밖에 없군요.

저는 일선의 개발자들이 대수와 함수의 수학적 개념을 이해해가면서 까지 이런 언어를 선택할거라고는 전혀 생각하지 않습니다. 아마도 제한된 사람들이 제한된 영역에서만 사용하는 마이너한 언어 이상은 되기 어려울것으로 봅니다.(대신 함수형 언어개념을 흡수하고 있는 멀티 패러다임 언어를 함수형언어처럼 사용하는 경우는 제한적이나마 지속적으로 늘어나지 않을까 예상합니다)

lawch의 이미지

Quote:
"저는 일선의 개발자들이 대수와 함수의 수학적 개념을 이해해가면서 까지
이런 언어를 선택할거라고는 전혀 생각하지 않습니다. "

많이 웃었는데, 전적으로 동감입니다.
수업들으면서 차라리 자바로 짜고 말지...라는 생각 수없이 했습니다. :oops:
다만, 이게 "worse is better (http://www.dreamsongs.com/WorseIsBetter.html)"의
또다를 예가 아닐까라는 우려도 동시에 해봅니다.

Quote:
대신 함수형 언어개념을 흡수하고

Pizza (http://pizzacompiler.sourceforge.net/) 정도가 그 예일까요?

사족: 이런 상황에서 Erlang의 경우는 정말 예외적인 성공(?)인 것일까요?

doldori의 이미지

lawch wrote:
다만, 이게 "worse is better (http://www.dreamsongs.com/WorseIsBetter.html)"의
또다를 예가 아닐까라는 우려도 동시에 해봅니다.

흐... 정말 헷갈리네요.

1989: Worse Is Better.
1991: Worse Is Better Is Worse.
1992: Is Worse Really Better?
2000: Back to the Future: Is Worse (Still) Better?
2000: Back to the Future: Worse (Still) is Better!

다중인격자라고 불러도 할 말이 없을 듯.

lacovnk의 이미지

oo wrote:
함수형언어는 수학적으로는 매우 깔끔하지만 현재 그렇게 많이 쓰이고 있지도 않거니와 앞으로도 많이 각광받을만한 언어라고는 생각되지 않습니다.

blabla

물론 이런 개발자들의 성향역시도 이들이 기존의 언어에 많이 익숙해져 있기 때문에 어렵게 느끼는것이 아니겠느냐고 반론을 제기할수도 있겠지만, 개인적으로는 단순히 그런 차원의 익숙하지 않음을 뛰어넘는 난해함이 함수형 언어에 존재한다고 생각하기 때문에 함수형언어의 실증성에 대해선 의문을 제기할 수 밖에 없군요.

뭐든 익숙해지는 것의 문제이지만, 함수형 역시 기본 개념은 직관적인 것 같습니다. - 이번학기에 Scheme 실습을 했고, ML을 배웠습니다 -

분야에 따라 다르겠지만, 함수형 언어가 무조건 난해하다고 볼수는 없는 것 같습니다. 문법 파싱하는데 함수형 언어에서 각각의 토큰들을 recursive하게 define해서 각각을 파싱해나가는 코드를 봤는데, 정말 직관적이고 매력적이었거든요 ㅠㅠ

...... 근데 정말 functional하게 생각하는 것이 정말 어렵긴 합니다. 으으.. 관련 연구하는 분들은 익숙하시겠지만요 ㅎㅎ

kane의 이미지

함수형 언어는 전통적으로 AI 분야에서 많이 쓰지 않나요?

아래는 함수형 언어와 관련된 이광근 교수님의 글입니다.
[url=http://plas.hyu.ac.kr/sigpl/2004/2/18-2-02-튜토리얼-이광근.pdf]nML과 프로그래밍 기술의 발달[/url] (pdf)