나는 분명히 대답의 주된 추진력에 동의하고, 당신이 기본적으로 Erlang에게 시험을 시도함으로써 긴 일에 뛰어 들고 있다는 것을 감안할 때, 당신이 배우는 방법에 대해 꽤 잘 이해하고 오른쪽에 약간의 조금 움직일 필요가있는 것처럼 들립니다. 방향, 그래서 그것은 분명히 당신에게 좋은 대답이었습니다 ... 그러나, 나는이 대답이 나에게 전혀 도움이되지 않았 음을 알기 때문에 나는 조금 다르게 질문에 접근 할 것이라고 생각합니다. 나는 항상 배우기 위해 코딩한다! 자, 여기 내 생각이 있습니다 ...
(BTW, 나는 책의 챕터에 더 적합하도록 계속 진행하는 경향이 있으며, 나는 본능을 완전히 억누를 수는 없지만 다른 방법을 시도 할 것입니다. 여기에 내 생각을 요약하고 누군가가 더 자세한 내용을 원 하거나이 형식으로 오해의 소지가 있다고 생각하는 경우 응답 미리 알림을 통과하는 것을 잊지 않도록 최선을 다할 것입니다 ...)
업무를 계속 수행하기 위해 여기 OP에서 요청한 추력 질문에 대한 이해가 있습니다. 설명하기 위해 필요에 따라 부수적 인 내용을 유지하겠습니다 ....
먼저 빠른 답변 :
비슷한 상황에 있었습니까? 최소한 비슷했습니다. 그럼에도 불구하고 관련이 많은 다양한 프로젝트를 수행하는 주요 위치에있었습니다 ... (CRM / Web / DB / Data Integration / etc.)
어떻게 / 왜 기능적으로 뛰어 들었 습니까? " LINQ 예제를 보았지만 정적으로 유형이 지정된 언어 (주로 C ++ 및 그 이후의 C #을 주로 사용 했음)와 같은 일종의 통합 된 정적으로 유형이 지정된 쿼리 언어를 꿈꾸었지만 )] 내 경력 전반에 걸쳐 ... 그러나 그것은 내가 있었던 상당히 빠른 화재 환경이었고, 과거에 무슨 일이 일어 났는지 종종 보았지만, 실제로 그것을 결코 생각하지 않았으므로 결코 그것을 예견하지 못했습니다. Plain Old Objects (lol!)에 대한 작업을 쉽게 수행 할 수있을 것입니다. 내가 그것을 보았을 때 나는 그것을 가지고 있어야한다는 것을 알았습니다 ... 그래서 그 이유와 시작 방법은 LINQ를 이해하는 법을 배우는 데 집중했습니다. .
네 가지 생각 ... 오류, 그건 옳지 않다 ... 사고
Martijn Verburg의 답변을 읽으면 비즈니스 기능에 대한 언급이 즉시 작업중 인 모든 코드를 구현하기 시작했습니다. 초기 실험이 얼마나 얕은 지에 따라 다르게 대답 할 수는 있지만, 단지 당신의 엄지 발가락을 담그면, 나는 당신이 태클하기 시작한 처음 몇 가지 문제에 대해 아마도 내가 생각해야 할 흥분 / 열정을 줄 수있는 일 (또는 곧 일할 일)을 위해 직접 무언가를 가지고 있는지 확실하지 않습니다. ...
나는 거의 전적으로 정적으로 형식화 된 언어 + OOP 은유와 패턴 + 몇 년 동안 내 실제 문제를 해결하면서 실수로 뇌를 감싸는 모든 것을 근거로 삼았습니다 ... LINQ / FP를 사용하면 그다지 도움이되지 않는 것들에 전념하는 많은 두뇌가있을 것입니다.
나는 순수한 절차 적 절차와 OO 프로그래밍과 비슷하다고 생각합니다. OOP에서 사용하게 될 많은 절차 적 요소가 있지만, grok / ken / "get" OO를 우선시하지 않고 C에서 C ++에 온 사람들 C ++에서 매우 나쁘다. 실제로 많은 (15+)의 지옥을 인터뷰 한 오랜 펌웨어 정말 디바이스 드라이버 개발자 생각 들이 C ++을 알았지 만, 사람에서 가장 실질적으로 전혀 이해와 함께, ++, C의 이해 몹시 기본 / 교과서가 있었다거나 그들은 실제로 OOP를 한 적이 없기 때문에 OOP 경험. 그들은 정적 멤버와 정적 함수와 비 정적 / 비 싱글턴 클래스를 가진 정적 함수를 가진 싱글 톤 다목적 클래스를 작성했습니다.
그리고 FP는 패러다임에서 제기되지 않은 개념과 비슷한 개념을 가지고 있으며 그와 함께하는 다른 것들과 (많은 기술의 하이브리드 화가 이상적이라는 것을 알았지 만) 나는 더 많이 이해하고 시간이 지남에 따라 실제 기능적 능력을 툴셋으로 가져 오기 전에 내 생각이 얼마나 제한적 이었는가; 나는 아마도 대부분의 OO 프로그래머보다 조금 더 독창적 인 방식으로 과거에 많은 것들을 구현했지만, 내 생각이 어리석은 개념을 사용함에 따라 해결할 수있는 모든 종류의 문제가 있습니다 ... C ++ / C #에서해야 할 일이 많이있었습니다.
갑자기 당신은 자신을 발견 ...
"너무 긴"게시물에서
당신은 모두 엉뚱한 "읽지 못했음"의 미로에 있습니다.
가까운 장래에 화상 회의가 다가오고 있습니다.
간결한
어 허. 확실한. "terse"모드가 "on"이라고 말하겠습니다.
가까운 장래에 화상 회의가 다가오고 있습니다.
> 무엇을 의미합니까?
그냥 말해 오늘 아침에해야 할 일이 없었습니까?
가까운 장래에 화상 회의가 다가오고 있습니다.
> 야, 그게 너 뒤에있는 거지?
뭐!? 어디?! [비명 소리가 난다]
> 죄송합니다, 나는 어디에서 문구를 이해하지 못했습니까?
[계속 뛰고 비명을 지르며 풍자에 주목받지 못함]
그래서 ... PSE, PSE에게 무엇을 배워야합니까?
저는 개인적으로 LINQ와 함께 C #에서 시작했습니다. 한 번에 몇 가지 개념을 소개 할 수 있었으며, FP와 그 개념, 그리고 더 많은 LINQ와이 둘의 관계에 대해 끊임없이 읽고 있었지만, 여전히 생산적인 작업을 수행하면서 나아갈 수있는 길을 열었습니다. 한 번에 몇 가지 사항을 추가했는데, 데이터 쿼리는 톤을 이해하지 않고도 빠르게 유용한 도구가되었습니다.
이제 다시 돌아 보면, 다음 프로젝트 (1 년 후 해결)를 먼저 할 수 있었으면 좋겠습니다. 나는 F #에 대해 어느 정도 친숙해졌다. 우연히 ML (metalanguage) 을 배우는 데 큰 도움이 되었고 다른 파생물 (예 : OCaml )도있다.
기본적으로, '무엇'에 대한 적절한 대답은 관심있는 프로그래밍 문제의 좋은 쌍을 찾는 데 달려 있지만 물론 배우고 싶은 약간의 FP와 짝을 이루어야합니다 ... 목록에서 무언가를 두드리고 나서 반복 / 가죽 ...) 물론, 당신은 항상 당신이 시작한 주요 일보다 조금 더 배우게됩니다. 처음에는 아기 발자국을 밟았지만 결국 더 큰 일을하고 그 일을하는 동안 더 작은 물건이 제자리에 놓이게되었습니다.
먼저, 보트에 떠있는 것은 무엇입니까? 특히 처음에는 재미 있고 신나는 일을하는 것이 가장 좋으며, 그럴만한 가치가있을만큼 흥미를 유지할 것입니다. 따라서 작업해야 할 IOW 문제와 이러한 문제를 해결하는 기술 ... LINQ 및 인라인 데이터 쿼리가 처음에 필요합니다. 재귀는 꼬리 재귀를 포함하여 저에게 또 다른 것이 었습니다. 나는 그것의 GodelEscherBach-ness를 발굴했습니다. 꼬리 재귀에 대해 읽었습니다. 이시기 쯤에, 내가 작업하고 있던 것들이 보류되었고, 결국 많은 시간이 걸리기 때문에 오랫동안 그것을 유지할 수있었습니다. 중단이 적 으면 쉬웠지만, 재미 있다고 생각한 것을 선택했기 때문에 일이 중단 되더라도 그렇게 힘들지는 않았습니다. :)
그리고 나는 자각하는 게 프로그램과 같이 당신에게 말할 수있는 멋진 것을 내놓지 않았지만, 나는 그것을 잘 얻었습니다.
그리고 ... 무엇으로 무엇을 배울 수 있을까요?
이를 위해 어쨌든 관심이있는 다양한 알고리즘과 F #에서 할 수 있을지 궁금했던 다양한 것들을 사용했으며 아이디어가 부족하면 99 병의 맥주 와 Project Euler 와 같은 것들을 해결할 것입니다. 문제 ...
FP와 관련이있는 많은 관심사를 찾을 수있을 것입니다. 그것은 향상에서 OOP에 이르기까지 모든 것을 제공합니다. 사물을 조금 더 간결하게 진술하는 데 도움이됩니다. 이전에 생각했던 방식을 인식하지 못하고 정신 모델이 표현할 수없는 모양으로 왜곡시키는 데 도움이됩니다. 전에.
하지만 ... 내 모델에는 구멍이있어, PSE에게 ...
그렇기 때문에 특히 처음에 배우는 것이 중요하지만 실제로 학습하는 동안 (그리고 무언가를 배우고있을 때 항상 그렇지는 않습니까?) 적어도 문제 사이에 약간의 시간이 걸리면서 관련이없는 것을 읽습니다. 여전히 FP 및 전문가에 의해 작성된 소스 코드를 읽을 시간, 바람직하게는 동일하거나 유사한 문제를 해결하는 것; 물건에 대한 설명뿐만 아니라 ...
그리고 오래 동안, 당신은 당신의 오래된 관점에서가 아니라 FP 자체 안에서 모든 것을 이해하기 위해 당신의 두뇌를 긴장시켜야합니다 ... 어느 시점에서, 그것은 클릭했고, ... 내가 그것을 가장 잘 연관시킬 수있는 것은 네덜란드어에 유창 해지고있다. 어느 시점에서 나는 마음가짐에 충분히 자신을 넣을 수 있었다 (나는 기본적으로 여기에 설명 된 침수를 통해 그것을했다; "book larnin '"을 통해서만 배우려고하지 않고 FP에 몰입한다 ...
그리고 결국 나는했다. 나는 OP / LINQ를 다시 OOP로 변환하려고 노력하지 않고도 FP / LINQ가 터지기 시작할 때까지 모든 것을 내면화하고 뇌를 뒤 틀었습니다. (예, 그렇게했습니다. 치마를 걸 수있는 무언가가있었습니다. 모자. 뭐든간에.)
마지막 생각들...
내, 내, 당신은 당신의 서명 영리한 생각하는 능력을 잃고있는 것 같습니다
섹션 제목. 부끄러운 일이야
원격 회의가 여전히 빠르게 다가오고 있습니다. 지금은 훨씬 더 크게 나타납니다.
> 네, 그래요 .. 간결하고. 나는 당신이 그 소문을 잃은 것을 보았습니다.
가까운 전화, 그 ... 음, 그래, 난 겁쟁이 ... 오 다시는 없습니다!
AAAAAAAHHHHHH !! [다시 비명을 지르며 도망 간다]
원격 회의가 여전히 빠르게 다가오고 있습니다.
Lancyjohn Cleezewiz 경과 비슷합니다.
거의 당신에게 있습니다.
> 이봐, 서둘러! 나는 당신과 함께 시도하는 실험이 있습니다! (그리고 po-ta-to)
온라인으로 FP에 대한 풍부한 정보를 자연스럽게 찾을 수 있습니다. 중요한 것은 기본 개념을 이해하고 적용하는 법을 배우는 것입니다. 예를 들어, 불변성에 대해 배우고 그것이 FP에 중요하고 유용한 이유를 알아보십시오. 순수한 FP가 공식적인 증거에 훨씬 더 잘 어울리는 방법과 같은 모든 것을 다루는 작은 이론을 배우는 것이 좋습니다. 이것이 F #의 선구자 ML의 원동력이었습니다. YMMV은 물론 당신은 눈물에 지루 사람이 경우, 예 많은 시행 착오를 많이 정확하게 볼 수 있습니다 이유에 사용되는 기술은 그들이 당신이이 도움이 될 것입니다 무엇을 '아하!' 전구 순간.
그래서 지금은 그대로 두겠습니다. 이것이 누군가에게 도움이되기를 바랍니다. 배우고 자하는 특정 내용에 대해 좀 더 알고 싶었지만 지금은 시간이 없습니다. 나는 그것이 나를 위해 긴 주일을 기대하고 있지만, 아마 주말에 다시 돌아올 시간을 찾을 수 있기를 바랍니다.
<3 "SnozzML이 끝날 때까지 스톱 갭 GRUEBOL을 소개합니다. 조만간 이번에는 저를 도와주는 거대한위원회가있었습니다." -그레이스 호퍼 위트 에그 헤드, 유명한 마지막 단어 XX97 GUE <3