haskell이나 ml을 배우고 나면 타입시스템에 좀 더 친숙해질 수 있음
그러면 공변 반공변이 무슨 제약인지, recursive type이 뭔지, parametric type hierarchy(다른 용어가 기억이안남)이 뭔지 알아보는 데 더 거부감이 없어짐
그리고 그게 왜 쓸모가 있는지, 왜 주의해서 프로그래밍 해야하는지 알수 있게됨
lisp 계열 프로그래밍 언어를 배우고 나면 극단적 dynamicity에 친숙해질 수 있음
그러면서 multiple dispatch, homoiconicity, dynamic scoping 등을 체험하게 됨
그러면 다른 언어에서 이것을 시뮬레이션 하기 위해 만들어진 비지터 패턴(더블 디스패치), 어노테이션 프로세서 같은 거에 좀 더 총체적인 관점으로 접근할 수 있음
물론 리습은 피터노빅과 폴그레이엄, 제럴드 서스만 등의 저서를 읽기 위한 도구로써 더 좋다 생각함
그밖에도 Smalltalk, APL, Prolog 등 개념적으로 재밌는 언어들이 좀 많음
물론 이 언어들을 배우지 않고서도 그 개념들을 이해할 수 있긴함
근데 그걸 실제 체험하면서 배우는것과 문제를 해결하기 위해 억지로 머리속에 욱여넣는건 다르지
이건 CS 기초 과목들을 배우는것과 비슷하다고 생각함
운영체제, 컴퓨터구조 과목 내용
어차피 그 내용들 코딩짬좀 차다보면 어지간히 아는 내용들이 있음
캐시라든가 스레드, 메모리세그먼트 같은거 ㅇㅇ
워낙 유용하고 유명해서 코딩하다 주워듣는걸로도 짬짬이 알게되는 지식들이지
근데 그걸 종합적인 지식 세트로 배우면 흐름을 파악할 수가 있게 됨
그리고 실제 문제를 맞닥뜨렸을때 아이디어를 떠올리기가 쉬워지지
니가 떠올리는 아이디어라는게 결국에는 머릿속에 있는 다양한 생각의 도구들을 조합해서 나온거니까 ㅇㅇ
깃헙갤에도 코딩 하는것 만큼이나 언어 배우는게 재밌는 애들이 있을텐데
뭐 보통은 주변사람들이 잘 이해를 못함
근데 분명 그 지식들이 도움이 된다
그냥 너의 사고과정에 영향을 미침
예전에는 어렵게 느껴졌던게 어느순간 보니까 쉽게 읽힌다던지
내공이 쌓이는거지
언어 여럿 배우는거는 분명 의미 있는거니까
주변에서 뭐라 해도 니가 하고싶은걸 해라
그 사람들도 그렇게 안 해봤을텐데 안 해본놈들이 뭘 알겠음? ㅋㅋ
일단 클래스나 함수, 타입 이름 지을때 저런 언어들 용어 끌어오면 이름짓기가 한결 수월해지는건 맞는듯 - dc App
한 우물만 파라 vs 이거저거 다 해봐라 이건 끝나지 않는 논쟁이긴 한데, 깃갤만 놓고 보면 그냥 남들 잘 손 안 대는거만 찍먹하려는 힙스터들 많아서 더 안 좋게 보임
맞는 말이고 예시로 든 것처럼 각기 전혀 다른 언어들을 배워야 의미가 있지
왜 A언어로 하면 체험하면서 배우는 것이고 그런걸 B언어로 하고 있으면 문제를 해결하기 위해 억지로 머리속에 욱여넣는거라 생각하지?? 같은건데
그런 의미가 아니라 한 호흡에 배우는것과 트러블슈팅하면서 배우는것의 차이를 얘기한거임 ㅇㅇ 그리고 한 호흡으로 배우는걸 쉽게 해주는 언어가 있다는 말이고
예컨대 C로도 싱글디스패칭을 구현해서 충분히 추상메서드같은 것을 만들 수 있고, 그걸로도 oop를 배울수 있겠지. 근데 그렇게 하는것보단 자바로 oop를 배우는 편이 효율적이고 덜 고통스럽잖아. 그런걸 얘기하는거임
의도는 이해가 됨 한가지 언어만 억지로 고집하는 것도 병이니까 경우에 따라선 용도에 맞는 언어를 잘 선택하는게 방법이지 근데 단순히 프로그래밍 개념들을 배우려고 이언어 저언어 둘러보는건 글쎄 보통 A언어에 B언어의 기능이 없는 이유는 필요가 없어서 그런거고 패러다임이 달라서 그런건데 굳이 필요도 없는거까지 알아야 되나 이말이지 있는 기능도 레거시운운하며 없애 달라는 소리 나오는데 물론 배우는거야 좋고 권장할만 한데 보통 A언어는 그래서 미개하다느니 하고 있으니 그리고 필요한 경우에는 이미 A언어에도 대안들이 나와 있어 예로 든건 gtk를 대안으로 생각해 볼 수 있지 C로 한다고 해서 굳이 맨땅에서 만들 필요는 없다는거고 gtk 사용법을 익히면 그게 싱글패치 oop임
이거 함슬람들 레퍼토리잖어 ㅋㅋㅋㅋㅋㅋ
글쓴이 진짜 안부끄럽냐? 이런게 진심 더닝크루거 최고점인데 내가 다 부끄럽다..
언어론 말고 저런용어들 쓰긴하냐? 너는 단순 찍먹이상으로 저언어들로 프로그램 짜보긴 했음?
저거 자바 제네릭이랑 디자인패턴에서 다 쓰이는 개념들이라 일부러 적어놓은건데
ㅋㅋ 자바가 언제부터 dynamic scope를 사용하는 homoiconic한 언어가 된거냐?
flask의 context local proxy는 다이나믹 스코핑이 없는 언어에서 비슷한 동작을 시뮬레이션하기 위해 만들어진거고, 자바의 annotation processor은 lisp의 macro와 비슷하게 ast 조작을 하려고 나온 개념임. 그런 의미로 얘기한거지 결코 다른언어와 동일시 하려는게 아님
난 연구실에서 Cpp만 써서 솔직히 니가 말하는 예제는 못알아들어 하지만 어차피 그것들 다 기본적으로 "제한"을 가진 우회적 구현일테니까 니말대로 lisp하면 매크로에 대한 유연한 생각 가질순 있지 근데 그거 한다고 cpp 템플릿을 잘 짜지도 않고 흉내도 못내
제목처럼 언어를 떠나서 어느것이든 배우면 지식의 폭은 넓어지지 cpp로도 range variant 쓰고 lazy monad 템플릿 만들면 하스켈 흉내는 되지. 근데 그렇게 쓰면 이쁜코드가 잘 나오기도 어렵고 협업도 어렵다 문법을 떠나서 언어마다 각 언어에 맞는 표현 방법이 있고 그걸 익히는데도 상당한 시간을 투자 해야된다
이 작업은 평범한 사람이면 찍먹 해보면서 용어 익히는거 이상으로 고되고 노력해야 하는일인데 그래서 내가 너보고 저 언어들로 직접 해본거 있냐고 물어보는 거임 마치 프언수업때 교수님 처럼이야기 하니까
1. 리습 macro랑 템플릿은 다름. 2. 너 말대로 그 언어 고유의 표현법을 배우는 걸로도 충분히 그 언어를 사용할 수 있다. 이 언어 저 언어 배우는 걸 꼭 누구나 반드시 해야한다는 건 아님. 내가 글을 쓸때도 그것까지 부정하진 않았음. 3. 물론 해본거 있음. 근데 그건 단순히 표현법을 바꾸는 것 이상의 문제가 있음.
https://gall.dcinside.com/m/github/34446
내가 예전에 짧게 쓴 글인데 함 보셈
당연히 리슾매크로랑 템플릿이랑 다르지 나도 이맥스 쓰면서 잘써보겠다고 온리슾읽고 그래서 어차피 니가 말하는 것들이 다른언어가면 제한이 있다는걸 암 아니 그리고 스택같은 자발적인 봉사 커뮤니티를 가진 하스켈이 무슨 라이브러리 업데이트가 안이루어진다는거야?
나머지 ml 스킴 커먼리슾 다 하스켈보다도 마이너인데 쓰지도 못하지 니말대로 표현을 떠나 더 큰 문제가 있는판이면 그런 와중에 애들한테 이 언어 저언어 다 시간투자를 하라는거임? 무슨 교양처럼 찍먹하는거 말고 그런건 결국 큰 의미없으니까 그래 교양을 원하는 거면 의미있겠네
미안하지만 내가 마지막으로 하스켈이나 리습을 만진건 4년이 되어가는 일이라 무슨 패키지였는지까지는 기억이 안난다. 그리고 누누이 얘기했지만 저 언어들을 배워야할 필요성을 얘기하는게 아님. 이 언어 저 언어 배우는게 마냥 시간낭비는 아니란거지. 너 말대로 교양이라는 느낌이 맞는 거 같다. 프로그래밍 언어를 배우는 과정 자체를 좋아하는 애들이 있기 때문에 해주는 말이지. 나도 그랬고.
글 본문은 이거저거 찍먹 안하는 놈들을 무시하는 투로 내려깎은 다음에 막상 댓글에서는 논점 흐리면서 계속 말 바꾸네
이런 게 바로 주객전도지 뭔 자랑스럽게 적어놨냐
맞말인디? 땔감들 발작일으키는 글이노 ㅋㅋㅋ
군대를 가야 ㅇㅇ을 배운다 급의 헛소리임 군대 안가도 그거 배울수있음
군대 비유는 너무 간것같고, 내가 글에서도 쓴것처럼 이 언어들을 꼭 배워야한다는게 아니라 그렇게 배우는게 의미없는일은 아니란 의미임
군대보다는 컴퓨터가 적당하지 ㅎㅎ 컴퓨터없이도 코딩은 배울 수 있지만.... 직접해보는 거하고는 또다른데 ㅋ
지잡러슬람 러들러들 ㅋㅋ