Pengantar pemrograman fungsional
Pemrograman fungsional dari awal
Menjelaskan pemrograman fungsional dari awal, mudah dipahami dan praktis, dari berbagai perspektif! ~ Dari Teori Kategori ke Konstruksi FRP
? Unit 1? RINGKASAN
https://zenn.dev/ken_okabe/books/functional-programming-from-scratch-1/
Ini adalah awal dari artikel.
Memperkenalkan "luar" pemrograman fungsional
Apa itu pemrograman fungsional?
Berbagai topik termasuk tren dalam komunitas pemrograman terbaru, CPU dan pemrograman imperatif, jenis dalam bahasa sistem, abstraksi untuk pemrograman terstruktur, pengantar untuk bahasa fungsional, hubungan antara istilah dan matematika pemrograman fungsional yang berorientasi pada objek, dan fungsional, dan fungsional.
Mulai dan pengaturan cepat untuk lingkungan TypeScript dan F#
https://zenn.dev/ken_okabe/books/functional-programming-from-scratch-1
Memperkenalkan bagian -bagian yang membentuk kerangka untuk pemrograman fungsional
Fungsi Kelas Pertama, Ekspresi Lambda, Fungsi Orde Tinggi, Konektivitas Operasional Binomial, Sintesis Fungsi, Monoid
Tanpa ini, pemrograman fungsional tidak akan dimulai, jadi pemahaman diperlukan
https://zenn.dev/ken_okabe/books/functional-programming-from-scratch-2
Masuk ke teori yang mendasari pemrograman fungsional cukup dalam
Kami akan mencoba memberikan penjelasan yang mudah disetujui, mengutip makalah terkenal yang ditujukan untuk pembaca yang sangat tertarik pada teori kategori, yang dianggap sulit.
Pembaca yang tidak tertarik tidak harus memaksa diri mereka untuk memahami segalanya, dan mereka tidak keberatan melewatkannya.
https://zenn.dev/ken_okabe/books/functional-programming-from-scratch-3
Termasuk ringkasan konten dan diagram teori
Memperkenalkan pipa/daftar/opsi/io/timeline/async monad
Menerapkan Monad, Menulis Kode Khusus Menggunakan F# dan TypeScript
Pada akhirnya, kami bertujuan untuk membangun FRP minimalis dari awal.
https://zenn.dev/ken_okabe/books/functional-programming-from-scratch-4
Kode sampel
https://zenn.dev/ken_okabe/books/functional-programming-from-scratch-5
Untuk banyak pemrogram
lebih-lebih lagi
Karena itu adalah badan pengetahuan di ranah
Dan jarang "kesadaran" seperti itu dijelaskan secara rinci.
Apa itu pemrograman fungsional?
Menggabungkan fiungsi murni
Fungsi murni tidak boleh memiliki efek samping
"Variabel" tidak dapat diubah
Ada transparansi referensial (mari pastikan)
Secara umum, ini adalah bagaimana istilah baru terdaftar, bersama dengan fitur dan spesifikasi.
Semua ini adalah aturan yang agak ketat , dan itu pasti persyaratan yang belum pernah disadari oleh programmer sebelumnya, dan mereka mengambil kebebasan untuk mengkode, membuat mereka merasa seperti mengikat tangan dan kaki programmer.
Sifat sebenarnya dari setiap terminologi adalah "apa sebenarnya?" Bahkan, pembaca tidak dijelaskan dengan benar sampai akhir.
Mengapa itu harus menjadi konsepnya? Mengapa kita tidak dibatasi? ? Karena kata "apa itu sebenarnya?" tidak diproses dengan benar, sering didorong bersama dengan kode baru, serta "Anda dapat menulis kode yang begitu indah" atau "Apakah Anda merasakan manfaat?"
Faktanya, istilah dan konsep baru ini memiliki kesamaan yang sederhana dan solid , dan ada konsep mendasar yang harus Anda sadari, dan Anda harus terlebih dahulu menjelaskannya secara menyeluruh.
Ini adalah proses yang hebat dari "kesadaran", dan pada kenyataannya, "kesadaran" adalah eksplorasi dan petualangan intelektual , dan merupakan sesuatu yang sangat menarik.
Namun, karena tujuan utama dari komentar ini adalah untuk mencakup fitur -fitur yang terdaftar ini dan menghubungkan masing -masing dengan penjelasan yang menarik, itu adalah sikap kontraproduktif, sehingga "pengakuan" yang paling penting ini dapat disentuh dengan mudah, atau sepenuhnya diabaikan, sebagai bonus.
Orang yang menjelaskan kisah itu mungkin "benar -benar tidak mengerti" (saya pikir ini sebenarnya banyak kasus), atau bagi mereka yang mengetahuinya tetapi sudah menguasainya, itu sulit menjelaskannya dengan baik, jadi mudah untuk mengatakan "Saya mengatakan itu, kan?"
Tentu saja, saya tidak tahu semua penjelasannya, tetapi saya pikir sebagian besar penjelasan telah gagal karena alasan ini.
Bagi sebagian orang, dunia tahu | Tidak diketahui ~ "apa yang saya tahu" dan "apa yang saya tidak tahu"
Tentu saja, ada lebih banyak "hal -hal yang tidak Anda ketahui" di dunia, dan tidak mungkin untuk hanya menggunakan rasio grafik ini, sehingga ukuran "hal -hal yang Anda ketahui" cukup berlebihan untuk penjelasan.
Tindakan secara bertahap memperluas area "hal -hal yang mengetahui" yang dikenal adalah perolehan pengetahuan , seolah -olah secara bertahap mengganti area yang tidak diketahui "mengetahui hal -hal"
Misalnya, jika kita membatasi diri pada bidang pemrograman dan itu,
Saya ingin belajar bahasa pemrograman karat !
Saya ingin dapat menguasai Unreal Engine 5 !
Saya ingin tahu lebih banyak tentang teknik praktis Docker !
Itu akan seperti itu
Rust, Unreal Engine 5, Docker dan lainnya adalah teknologi "terkenal" terkenal yang terkenal dalam pemrograman dan dunia.
"Terkenal" yang terkenal di sini tidak berarti bahwa setiap orang terkenal, terkenal, atau akrab dengan teknologi, tetapi bahwa nama mereka terkenal, terkenal, atau terkenal.
Dengan kata lain, apakah Anda tahu isi teknologi atau tidak, ada area yang tidak diketahui yang bahkan tidak secara umum diketahui, tidak diketahui, area yang tidak diketahui yang bahkan tidak terkenal.
"Bagian" pemrograman fungsional bukanlah teknologi yang sudah dikenal publik, seperti Rust dan Docker.
Untuk mempelajari pemrograman fungsional
Unkown (tidak disadari)
Diketahui
Proses = kesadaran lebih penting daripada apapun
Namun, banyak penjelasan pemrograman fungsional yang berlimpah di jalanan mencoba menjelaskan konsep-konsep baru yang diperlukan untuk pemrograman fungsional, yang mungkin tidak diketahui oleh pembaca dan bahkan tidak disadari, sudah terkenal dan terkenal.
Pendekatan ini tidak berhasil
hasilnya,
"Pemrograman fungsional memiliki pengetahuan bahwa itu adalah fungsi murni."
"Fungsi murni adalah referensi transparan"
"Fungsi murni tidak menyebabkan efek samping."
Ini adalah keadaan yang luar biasa di mana penjelasan yang benar -benar tidak dapat dipahami berada dalam mode normal, di mana konsep yang tidak dikenal berusaha menjelaskan sesuatu yang tidak diketahui dengan konsep lain yang tidak dikenal, atau yang melibatkan merakit sesuatu di udara tanpa fondasi.
Atau, dalam kasus di mana Anda secara naluriah menyadari bahwa itu buruk, Anda dapat memulai contoh yang agak tidak biasa, dan menulis kode sampel untuk mencoba membujuk pembaca.
Secara umum, kedua opsi ini adalah intinya, dan sifat sebenarnya dari konsep mendasar, "kesadaran," tidak disebutkan, dan tidak pernah dijelaskan dengan cara yang memberi pembaca kesadaran pembaca penting.
Jelaskan kata lain yang tidak diketahui dengan kata -kata yang tidak Anda ketahui ← bukan untuk diskusi
Menampilkan kode sampel untuk kasus tunggal, merekonstruksi konsep -konsep yang tidak diketahui dalam pikiran pembaca ← jarang ada jenius yang bisa melakukan itu
Ada juga "teknik pencocokan di antara keduanya."
Ini adalah pola di mana Anda menulis kode untuk Haskell, bahasa fungsional, dan menyebutnya "pengantar pemrograman fungsional atau" teori sektoral. "
Menjelaskan konsep baru pemrograman fungsional dengan spesifikasi bahasa yang tidak diketahui untuk Haskell.
Kami menunjukkan kode sampel untuk bahasa yang tidak diketahui Haskell, yang merekonstruksi konsep -konsep yang tidak diketahui dari pemrograman fungsional dan teori kategori dalam pikiran pembaca.
Ini "mencocokkan keduanya" tentu saja canggung, tetapi sebenarnya ada situasi saat ini yang keras di dunia pemrograman, di mana orang -orang yang datang untuk memahaminya, setidaknya siapa yang dapat menulis kode Haskell sendiri, mereproduksi pendekatan yang sama yang harus mereka pahami.
Tidak Diketahui: Pengetahuan "Tidak Diketahui",
Tahu: "apa yang saya tahu"
Tidak diketahui "hal -hal yang tidak saya ketahui"
Ada keduanya
Untuk mengklarifikasi hal ini, itu hanya masalah diagram klasifikasi konseptual, tetapi juga dimungkinkan untuk menulis ulang grafik.
Pertama, bagian bawah biasanya diperhatikan, terkenal, area yang dikenal
Sekali lagi, pendekatan ini berfungsi jika target yang ingin Anda pelajari sudah merupakan teknologi yang terkenal, karat, mesin yang tidak nyata, atau Docker.
Namun, pendekatan ini tidak berfungsi dalam pemrograman fungsional
Pertama -tama, sangat penting untuk menegaskan kembali yang diketahui tahu adalah "sadar akan apa yang Anda ketahui."
Misalnya, setiap orang harus "sangat akrab dengan" "penambahan", "pengurangan", "multiplikasi", dan "divisi" yang mereka pelajari di awal dalam matematika sekolah dasar.
Buku ini sebenarnya dimulai pada level ini , dan dirancang dengan cara yang lebih terencana daripada kebijakan di atas.
Pada akhirnya, belajar berarti memperluas pengetahuan Anda berdasarkan hal -hal yang sudah Anda ketahui dengan baik.
Apa yang sudah Anda ketahui sebenarnya adalah sesuatu seperti ini ketika Anda melihat pemrograman fungsional.
Unkown tahu: "Saya tidak menyadari apa yang saya tahu"
Diketahui tahu: "Saya sadar apa yang saya tahu"
Ini adalah proses "pemberitahuan" dan tidak memerlukan tugas baru untuk membeli "barang" baru dari yang tidak diketahui sampai sekarang, membuatnya sangat mudah dan halus.
Dengan kata lain, setiap orang yang lulus dari sekolah dasar telah "tahu betul," "penambahan," "pengurangan," "multiplikasi," dan "divisi," adalah pengetahuan yang solid untuk orang itu, dan tidak perlu mengulang latihan aritmatika.
Ini adalah aset intelektual yang hebat yang telah bekerja keras untuk diperoleh orang tersebut di sekolah dasar.
Namun, bagaimana "struktur aljabar" ini disebut "aritmetik keempat" mengarah pada pemrograman fungsional dan konsep yang disebut monad? Kebanyakan orang tidak tahu, mereka tidak diketahui
Setelah Anda memiliki "kesadaran", kekayaan intelektual yang diperoleh dengan susah payah yang disebut "aritmetik agregasi" ini dapat digunakan sepenuhnya sebagaimana adanya, ke dalam pengetahuan tentang pemrograman fungsional.
Oleh karena itu, sangat keterlaluan untuk memberi tahu, memberi informasi, mengajarkan, atau menjelaskan "kesadaran" ini; Entah kelalaian dari penjelasan atau hanya penjelasan itu sendiri, tetapi dalam kenyataannya, kasus terakhir sangat umum.
Buku ini adalah upaya menyeluruh dengan tugas ini dalam pikiran.
Jika Anda "tidak menyadari" ini, maka ada baiknya membaca buku ini sendiri.
Langkah selanjutnya akan fokus pada "I Don't Soal What I Know" Unknown dan memasuki bidang Unknown Unknown's "I Don't Soal What I Don't Know."
Ini termasuk, misalnya, perspektif fisika teoretis [aliran waktu]
Sebuah buku terkenal yang memperkenalkan "penanganan waktu" dalam pemrograman fungsional dari perspektif fisika teoretis adalah "struktur dan interpretasi program komputer," yang sering digunakan sebagai singkatan SICP dalam judul asli.
Struktur dan Interpretasi Program Komputer Hardcover - 2000/2/1 Gerald Jay Sussman (Penulis), Julie Sussman (Penulis), Harold Ableson (Penulis), & 4 lainnya
adalah
Adapun perspektif fisika teoretis "penanganan waktu" dalam pemrograman fungsional , setidaknya saya tidak ingat melihat satu komentar tunggal, dengan pengecualian SICP, jadi saya pikir itu adalah tema penting yang diabaikan oleh publik.
Buku ini adalah upaya menyeluruh dengan tugas ini dalam pikiran.
Jika Anda "tidak menyadari" ini, maka ada baiknya membaca buku ini sendiri.
Dalam menulis buku ini, saya mengembangkan dan menggunakan editor wysiwyg saya sendiri (perpanjangan vscode) untuk secara efisien menempelkan sejumlah besar gambar dan menulis markdown.
Markdownnote