프로그래밍 언어 개발에 관심 있는 사람들의 모임입니다.
|
2009-02-23 05:23:04
|
Prolog로 숙제하다가 답답해서 써봤습니다. (어째 뻘글인 것 같긴 하지만-_-) 패러다임이 다르다…는 것이 뭔가 재미삼아 구경할 때하고 직접 발등에 불로 구현할 때하고 꽤 큰 차이가 나는군요. orz 과연 조교님이 뭐라 답변하실지는 아직 모르겠지만 여러분들은 어떻게 생각하시나요? 아침놀 님이 2009-02-23 06:04:25에 고쳤습니다. |
트랙백 주소: http://langdev.net/post/trackback/265
(게시글 내용은 뭔가 어려워서 자세히-거의 안읽었어요. 양해바래요 ^^;)
“튜링컴플릿하므로 모든것을 다 구현할수있다.”라는말에 대해서 다시 생각해볼만하지 않을까요.
패러다임이 다름으로 얻는 이점도 분명히 있지만, 어떤 부분에 대해서는 손해일때도 분명히 있는것 같아요. (여기의 예로 프롤로그 같은경우에는 파일 입출력 같은 imperative에서는 당연한게 괴상하죠.)
또 질문하신 내용과 공통적인걸로 생각되는, 현대적인 fpl에서의 패턴매칭(리스트의 [A|B] 표현식이 문맥에 따라 다른것 같은 이유일듯해요.)등은 잘 정의하고 넘어가지 않으면 오히려 혼란스럽죠. (얼랭의 경우에 처음 시작하는분에게 가장 큰 learning-curve은 =이 사실은 매칭연산자라는거일거 같애요.)
물론, 그렇다고 그냥 덮어두고 “이러이러한 패러다임의 언어/환경은 현실적인 뭔가가 될수없다!”라고 말하는것도 위험하다고 생각하구요. (세상엔 똑똑한 사람들이 많고, 그런 사람들이 대부분 그런 고민을 한 흔적이 세상엔 많더라구요. :-))
제 생각엔 패러다임이 나쁜걸수도 있지만, 사람이 나쁜걸수도 있다고 생각해요. 만일 천년전쯤에 서양화의 원근법을 동양 어딘가에서 나홀로 적용해서 그림을 그리려고 했다면 2차원인 화폭에 맞지 않는다고 투덜델수도 있지 않을까요.
또 추가적으로 단순히 어떤 언어가 해당 패러다임의 이상적인 ‘모델’이 아닐때도 있다고 생각합니다.
예를 들어, Forth언어는 stack based, concatenative지만, 현대의 concatenative들의 지향점이랑은 많이 어긋나있고, Forth만을 본 사람들은 concatenative가 뭔가 저레벨의 그런거라고들 오해를 하듯이요.
하여튼 별 도움 안되는 답글을 달아봅니다. ^^;
고민 내용은 달라도 세상 사람들 다 똑같이 고민하면서 살죠. -_-.
알고 나면 어렵지 않은데 알게 되는 과정들은 그야말로 자기 자신을 깨나가는 과정.
생각해보면 C가지고 처음 자료구조 숙제할 때 입력문자열의 이름으로 변수를 만들 방법이 없나 하고 열라 고민했던 것을 생각해보면 기존 언어들도 이상하긴 마찬가지인데 쓰다보니 적응이 되어서 투덜거릴 줄도 모르게 되었다고 할까요?… 김창준님처럼 감사할 수도 있긴 합니다만. ^_^.
Program이라는 것이 Happy Scenario를 동작시키는 것이라고 생각하지만 알고 보면 예외를 정리하고 처리하는 것이라는 것을 생각해보면 새로운 언어의 이상적 형태만을 제시하는 recipe들은 정말 떡밥이긴 하죠. ^_^
새로운 언어가 등장하고 괜찮은 library도 많은 것 같긴 한데 학습하는 사람들의 기존 지식들은 다 imperative나 OO로 체계화되었으니 문제겠죠.
그런데 NLP는 자연어 처리인가요?
기본적으로 대부분의 IO는 폰노이만 구조를 따라야하고 때문에 Imperative 패러다임이 아닌 다음에야 표현이 지저분해지는 것은 어쩔 수 없는 것 같습니다. 어쨌든 개개인이 제대로 이해만 할 수 있다면 Logic만큼 단순한 코드는 없을 것 같습니다.