기능 프로그래밍 소개
처음부터 기능 프로그래밍
광범위한 관점에서 처음부터 기능적 프로그래밍, 이해하기 쉬운 실용적 설명! ~ 카테고리 이론에서 FRP 구성에 이르기까지
? 단원 1? 개요
https://zenn.dev/ken_okabe/books/functional-programming-from-scratch-1/
이것은 기사의 시작입니다.
기능 프로그래밍의 "외부"를 소개합니다
기능 프로그래밍이란 무엇입니까?
최신 프로그래밍 커뮤니티의 트렌드, CPU 및 명령 프로그래밍 트렌드, 시스템 언어 유형, 체계적인 프로그래밍에 대한 추상화, 기능 언어 소개, 객체 지향 및 기능적 프로그래밍의 용어 및 수학 간의 관계 및 비현실 엔진 (게임) 기능 언어 구두, Solectjs 및 FRP를 포함한 광범위한 주제.
TypeScript 및 F# 개발 환경에 대한 빠른 시작 및 설정
https://zenn.dev/ken_okabe/books/functional-programming-from-scratch-1
기능 프로그래밍을위한 골격을 형성하는 부분 소개
일등석 기능, 람다 표현식, 고차 함수, 이항 작동 연결, 기능 합성, 모노이드
이 없으면 기능 프로그래밍이 시작되지 않으므로 이해가 필요합니다.
https://zenn.dev/ken_okabe/books/functional-programming-from-scratch-2
기능적 프로그래밍의 기본 이론으로 들어가는
우리는 어렵다고 생각되는 범주 이론에 특히 관심이있는 독자들을 대상으로 잘 알려진 논문을 인용하면서 접근하기 쉬운 설명을 제공하려고 노력할 것입니다.
무관심한 독자들은 모든 것을 이해하도록 강요 할 필요가 없으며 건너 뛰는 것을 신경 쓰지 않습니다.
https://zenn.dev/ken_okabe/books/functional-programming-from-scratch-3
이론의 내용 및 다이어그램에 대한 요약이 포함되어 있습니다
파이프 라인/목록/옵션/IO/타임 라인/비동기 모나드 소개
F# 및 TypeScript를 사용하여 특정 코드를 작성하는 Monad 구현
궁극적으로, 우리는 미니멀리스트 FRP를 처음부터 구축하는 것을 목표로합니다.
https://zenn.dev/ken_okabe/books/functional-programming-from-scratch-4
샘플 코드
https://zenn.dev/ken_okabe/books/functional-programming-from-scratch-5
많은 프로그래머에게
게다가
그것은 영역에서 지식의 몸이기 때문입니다
그러한 "인식"이 자세하게 설명되는 경우는 드 rare니다.
기능 프로그래밍이란 무엇입니까?
순수한 피능을 결합합니다
순수한 기능에는 부작용이 없어야합니다
"가변"은 불변 입니다
참조 투명성이 있습니다 (확인하자)
일반적으로 기능 및 사양과 함께 새로운 용어가 나열되는 방식입니다.
이 모든 것들은 다소 엄격한 규칙 이며, 프로그래머가 전에는 결코 알지 못했던 요구 사항이며, 코딩의 자유를 빼앗아 프로그래머의 손과 발에 묶인 것처럼 느껴집니다.
각 용어의 진정한 본질은 "실제로 무엇입니까?" 입니다. 실제로 독자들은 끝까지 제대로 설명되지 않습니다.
그것이 왜 개념이어야합니까? 왜 그렇게 제한되어서는 안됩니까? ? "정말 뭐야?"라는 단어 이후로. 제대로 처리되지 않으며 종종 새로운 코드와 함께 푸시됩니다. "그러한 아름다운 코드를 쓸 수 있습니다"또는 "어떤 이점을 느꼈습니까?"
실제로,이 새로운 용어와 개념은 간단하고 견고한 유사성을 가지고 있으며, 당신이 알아야 할 근본적으로 개념이 있으며, 먼저 철저히 설명해야합니다.
이것은 "인식"의 훌륭한 과정이며, 실제로 "인식"은 지적 탐구와 모험 이며 매우 흥미로운 것입니다.
그러나 해설의 주요 목표는 이러한 나열된 기능을 다루고 각각의 기능을 설득력있는 설명과 연결하는 것이기 때문에 비생산적인 태도 이므로이 가장 중요한 "인식"은 단순히 보너스로 만지거나 완전히 무시할 수 있습니다.
이 이야기를 설명하는 사람은 "정말로 이해하지 못한다"(실제로 많은 경우라고 생각합니다) 또는 그것을 알고 있지만 이미 그것을 마스터 한 사람들에게는 친절하게 설명하는 것이 번거 롭기 때문에 "내가 맞습니까?"라고 말하는 것은 쉽습니다.
물론, 나는 모든 설명을 알지 못하지만 대부분의 설명이 이러한 이유로 실패했다고 생각합니다.
어떤 사람들에게는 세상이 알고 있습니다 | 미지의 ~ "내가 아는 것"과 "내가 모르는 것"
물론, 세계에는 압도적으로 "당신이 모르는 것"이 있으며이 그래프의 비율 만 사용하는 것은 불가능하므로 "당신이 아는 것"의 크기는 설명을 위해 매우 과장됩니다.
알려진 "아는 것들" 의 영역을 점차 확장하는 행위는 마치 미지 의 영역을 점차적으로 대체하는 것처럼 지식을 습득하는 것입니다.
예를 들어, 우리가 프로그래밍 분야와 IT로 제한하면
나는 프로그래밍 언어 녹을 배우고 싶다!
Unreal Engine 5를 마스터 할 수 있기를 원합니다!
Docker 의 실용적인 기술에 대해 더 알고 싶습니다!
그것은 그렇게 될 것입니다
Rust, Unreal Engine 5, Docker 등은 프로그래밍과 IT 세계에서 유명한 잘 알려진 "잘 알려진"기술 입니다.
여기에서 유명한 "잘 알려진"은 모든 사람이 잘 알려져 있거나 잘 알려져 있거나이 기술에 익숙하다는 것을 의미하는 것이 아니라 오히려 그들의 이름이 잘 알려진, 잘 알려져 있거나 잘 알려져 있음을 의미합니다.
다시 말해서, 기술의 내용을 알고 있든 없든, 잘 알려진 잘 알려지지 않은 알려지지 않은 영역은 알려지지 않은 영역이 있습니다.
기능 프로그래밍의 "부분"은 Rust 및 Docker와 같이 이미 대중에게 잘 알려진 기술이 아닙니다.
기능 프로그래밍을 배우기 위해
Unkown (실현되지 않음)
알려진
프로세스 = 인식은 무엇보다 중요합니다
그러나 거리에 풍부한 많은 기능적 프로그래밍 설명은 기능적 프로그래밍에 필요한 새로운 개념을 설명하려고 시도하며, 아마도 독자들에게 알려지지 않았으며 알지 못하는 것은 이미 잘 알려져 있고 잘 알려져 있습니다.
이 접근법은 작동하지 않습니다
결과,
"기능적 프로그래밍은 그것이 순수한 기능이라는 지식을 가지고 있습니다."
"순수한 기능은 참조 투명합니다"
"순수한 기능은 부작용을 일으키지 않습니다."
이것은 완전히 이해할 수없는 설명이 정상적인 모드에있는 놀라운 상태이며, 익숙하지 않은 개념이 다른 익숙하지 않은 개념으로 알려지지 않은 것을 설명하거나 기초없이 공중에서 무언가를 조립하는 것을 포함하는 놀라운 상태입니다.
또는 본능적으로 그것이 나쁘다는 것을 깨닫는 경우 다소 특이한 예를 시작하고 샘플 코드를 작성하여 독자를 설득하려고 시도 할 수 있습니다.
일반적으로,이 두 가지 옵션은 결론이며, 기본 개념의 "인식"은 언급되지 않았으며 독자에게 중요한 독자의 인식을 제공하는 방식으로 설명되지 않습니다.
당신이 모르는 단어로 알려지지 않은 또 다른 단어를 설명하십시오 ← 토론이 아닙니다.
독창적 인 사례에 대한 샘플 코드 표시, 독자의 마음에 알려지지 않은 개념을 재구성 ← 그렇게 할 수있는 천재는 거의 없습니다.
"둘 사이에 일치하는 기술"도 있습니다.
이것은 기능적 언어 인 Haskell에 대한 코드를 작성하고이를 "기능 프로그래밍 소개 또는"부문 이론 "이라고 부르는 패턴입니다.
Haskell에 대한 알려지지 않은 언어 사양으로 기능 프로그래밍의 새로운 개념을 설명합니다.
우리는 알 수없는 언어 Haskell에 대한 샘플 코드를 보여줍니다. 이는 독자의 마음에서 기능적 프로그래밍 및 범주 이론의 알려지지 않은 개념을 재구성합니다.
이 "두 가지 일치"는 물론 어색하지만, 프로그래밍 세계에는 실제로 Haskell의 코드를 스스로 쓸 수있는 사람들이 이해해야 할 동일한 접근 방식을 재현하는 프로그래밍 세계에는 가혹한 현재 상황이 있습니다.
알 수없는 : "알 수없는"지식,
"내가 아는 것"
미지의 "내가 모르는 것"
둘 다 있습니다
이것을 명확히하기 위해, 그것은 개념적 분류 다이어그램의 문제 일 뿐이지 만 그래프를 다시 작성할 수도 있습니다.
첫째, 낮은 절반은 일반적으로 잘 알려진 알려진 알려진 알려진 영역으로 알려져 있습니다.
다시 말하지만,이 접근법은 당신이 배우고 싶은 목표가 이미 잘 알려진 기술, 녹, 언리얼 엔진 또는 도커라면 작동합니다.
그러나이 접근법은 기능 프로그래밍에서는 작동하지 않습니다
우선, 알려진 것은 "당신이 아는 것을 알고있다"는 것을 재확인하는 것이 매우 중요합니다.
예를 들어, 모든 사람은 초등학교 수학의 시작 부분에서 배운 ""첨가 ","뺄셈 ","곱셈 "및"디비전 "에 매우 익숙해야합니다.
이 책은 실제로이 수준에서 시작하여 위 정책보다 더 계획된 방식으로 설계되었습니다.
궁극적으로 학습은 이미 잘 알고있는 것에 따라 지식을 확장하는 것을 의미합니다.
이미 알고있는 것은 기능 프로그래밍을 볼 때 실제로 이와 같은 것입니다.
Unkown은 "내가 아는 것을 몰라"
알려진다 : "내가 아는 것을 알고있다"
이것은 "알림"의 과정이며, 미지의 새로운 "물건"을 지금까지 구매하기 위해 새로운 작업이 필요하지 않으므로 매우 쉽고 매끄 럽습니다.
다시 말해, 초등학교를 졸업 한 모든 사람들은 "매우 잘 알고있다", "추가", "뺄셈", "곱셈"및 "디비전"은 그 사람에 대한 확실한 지식이며, 산술 훈련을 다시 할 필요가 없습니다.
이것은 그 사람이 이미 초등학교에서 획득하기 위해 열심히 노력한 훌륭한 지적 자산입니다.
그러나 "제 4의 산술"이라고하는이 "대수 구조"는 어떻게 Monads라는 기능 프로그래밍과 개념으로 이어지는가? 대부분의 사람들은 알지 못하고 알려지지 않았습니다
"인식"이 있으면 "Aggregational Arithmetics"라는이 단단한 지적 재산은 기능 프로그래밍에 대한 지식에 전적으로 사용할 수 있습니다.
그러므로이 "인식"을 알리고, 정보, 가르치거나 가르치거나 설명하는 것은 터무니 없다. 그것은 설명 자의 과실이거나 단순히 설명 자체이지만 실제로는 후자의 경우는 매우 일반적입니다.
이 책은이 작업을 염두에두고 철저한 시도입니다.
당신이 이것을 "깨닫지 못"한다면,이 책을 스스로 읽을 가치가 있습니다.
다음 단계는 알려지지 않은 알려진 알려진 "내가 아는 것을 깨닫지 못한다"는 알 수없는 미지의 미지의 "내가 모르는 것을 깨닫지 못한다"는 알려지지 않은 알려지지 않은 알려지지 않았다.
예를 들어 [시간 흐름]의 이론적 물리적 관점이 포함됩니다.
이론적 물리적 관점에서 기능적 프로그래밍에서 "시간 처리"를 소개하는 잘 알려진 책은 "컴퓨터 프로그램의 구조 및 해석"이며, 이는 종종 원래 제목에서 SICP 의 약어로 사용됩니다.
컴퓨터 프로그램의 구조 및 해석 하드 커버 - 2000/2/1 Gerald Jay Sussman (저자), Julie Sussman (저자), Harold Ableson (저자) 및 4 More
~이다
기능 프로그래밍에서 "시간 처리"라는 이론적 물리적 관점에 관해서는, 적어도 SICP를 제외하고 단일 해설을 본 것을 기억하지 못하므로 대중이 무시하는 중요한 주제라고 생각합니다.
이 책은이 작업을 염두에두고 철저한 시도입니다.
당신이 이것을 "깨닫지 못"한다면,이 책을 스스로 읽을 가치가 있습니다.
이 책을 쓰면서, 나는 내 자신의 wysiwyg 편집기 (VSCODE 확장)를 개발하고 사용하여 수많은 이미지를 효율적으로 붙여 넣고 마크 다운을 작성했습니다.
마크 다운 노트