کتاب برنامهنویسی تابعی در Clojure: سادگی و قدرت Lisp با فرمت AZW3 برای کتابخوان کیندل و فرمت EPUB
برنامهنویسی تابعی در Clojure: سادگی و قدرت Lisp را تجربه کنید! برنامهنویسی تابعی در Clojure: سادگی و قدرت Lisp را تجربه کنید! معرفی دوره آیا به دنبال ارتقای مهارتهای برنامهنویسی خود هستید؟ آیا می...
🎓 دوره آموزشی جامع
📚 اطلاعات دوره
عنوان دوره: دوره برنامهنویسی تابعی در Clojure: سادگی و قدرت Lisp
موضوع کلی: برنامه نویسی
موضوع میانی: برنامهنویسی تابعی (Functional Programming)
📋 سرفصلهای دوره
- 1. مقدمهای بر برنامهنویسی تابعی (Functional Programming)
- 2. تاریخچه Lisp و اهمیت آن
- 3. چرا Clojure؟ مزیتهای میزبانی بر روی JVM و JavaScript
- 4. راهاندازی محیط توسعه: Java، Leiningen و Clojure CLI
- 5. اولین تعامل: آشنایی با REPL (Read-Eval-Print Loop)
- 6. مبانی سینتکس: S-expressions، فرمها و پرانتزها
- 7. انواع دادههای اولیه: اعداد، رشتهها، بولین و nil
- 8. نمادها (Symbols) و کلمات کلیدی (Keywords)
- 9. ساختارهای دادهای بنیادین: لیستها (Lists)
- 10. ساختارهای دادهای بنیادین: بردارها (Vectors)
- 11. ساختارهای دادهای بنیادین: نقشهها (Maps)
- 12. ساختارهای دادهای بنیادین: مجموعهها (Sets)
- 13. اصل بنیادین: تغییرناپذیری (Immutability)
- 14. تعریف و فراخوانی توابع با `defn`
- 15. توابع بینام (Anonymous Functions) با `fn`
- 16. اتصال مقادیر: `def` برای تعاریف سراسری
- 17. اتصالات محلی با `let`
- 18. قوانین ارزیابی (Evaluation Rules) در Clojure
- 19. منطق شرطی: `if` و `do`
- 20. انتخابهای چندگانه با `cond` و `case`
- 21. مفهوم Truthiness و Falsiness در Clojure
- 22. مستندسازی کد: Docstrings و تابع `doc`
- 23. انتزاع دنباله (Sequence Abstraction)
- 24. توابع اصلی کار با دنبالهها: `first`, `rest`, `cons`
- 25. توابع مرتبه بالا (Higher-Order Functions): `map`
- 26. توابع مرتبه بالا: `filter` و `remove`
- 27. توابع مرتبه بالا: `reduce`
- 28. پردازش دنبالهها: `take`, `drop`, `take-while`, `drop-while`
- 29. دنبالههای تنبل (Lazy Sequences) و مزایای آن
- 30. ایجاد دنبالههای تنبل: `range`, `repeat`, `iterate`
- 31. کار با بردارها: `get`, `assoc`, `conj`
- 32. کار با نقشهها: `get`, `assoc`, `dissoc`, `keys`, `vals`
- 33. استفاده از کلمات کلیدی به عنوان تابع در نقشهها
- 34. واسازی (Destructuring) در `let`
- 35. واسازی در آرگومانهای توابع
- 36. کار با مجموعهها: `union`, `difference`, `intersection`
- 37. کار با ساختارهای داده تو در تو: `get-in`, `assoc-in`, `update-in`
- 38. مرتبسازی دادهها: `sort` و `sort-by`
- 39. گروهبندی دادهها با `group-by`
- 40. ترکیب توابع با `comp`
- 41. کاربرد جزئی (Partial Application) با `partial`
- 42. بازگشت (Recursion) به عنوان حلقه تابعی
- 43. بهینهسازی فراخوانی پایانی (TCO) با `loop` و `recur`
- 44. فضاهای نام (Namespaces) برای سازماندهی کد
- 45. مدیریت وابستگیها: `ns`, `require`, `use`, `import`
- 46. مشکل مدیریت حالت (State) در برنامهنویسی
- 47. رویکرد Clojure به حالت: هویت (Identity) و مقدار (Value)
- 48. اتمها (Atoms): مدیریت حالت هماهنگنشده و همزمان
- 49. بهروزرسانی اتمها با `swap!` و `reset!`
- 50. Ref-ها: مدیریت حالت هماهنگشده و تراکنشی
- 51. حافظه تراکنشی نرمافزاری (Software Transactional Memory - STM)
- 52. استفاده از بلوک `dosync`
- 53. Var-ها: اتصالات داینامیک و محدود به نخ (Thread-local)
- 54. Agent-ها: مدیریت حالت غیرهمزمان (Asynchronous)
- 55. ارسال وظایف به Agent-ها: `send` و `send-off`
- 56. مدیریت خطا در Agent-ها
- 57. Future-ها: محاسبات غیرهمزمان برای مقادیر بازگشتی
- 58. Promise-ها: تحویل یک مقدار در آینده
- 59. مفهوم همزمانی (Concurrency) در مقابل موازیسازی (Parallelism)
- 60. موازیسازی ساده با `pmap`
- 61. مقدمهای بر `core.async`: مدل CSP در Clojure
- 62. کانالها (Channels): ایجاد و استفاده
- 63. قرار دادن مقادیر در کانال: `>!` و `>!!`
- 64. برداشتن مقادیر از کانال: `<!` و `<!!`
- 65. بلوکهای `go` برای فرآیندهای غیرهمزمان
- 66. کانالهای بافر شده (Buffered Channels)
- 67. چندریختی (Polymorphism) با Multimethods
- 68. تعریف سلسله مراتب برای Multimethod-ها با `derive` و `isa?`
- 69. پروتکلها (Protocols): انتزاع مبتنی بر رابط
- 70. تعریف پروتکل با `defprotocol`
- 71. پیادهسازی پروتکلها با `defrecord`
- 72. پیادهسازی پروتکلها برای انواع داده موجود با `extend-protocol`
- 73. تفاوت Record-ها و Map-ها: کارایی و نوع
- 74. `deftype`: ساخت انواع داده سفارشی با کارایی بالا
- 75. Transducer-ها: پردازش کارآمد و قابل ترکیب دادهها
- 76. درک الگوی Transducer
- 77. استفاده از Transducer-های داخلی: `map`, `filter`, `take`
- 78. ساخت یک Transducer سفارشی
- 79. مدیریت خطا با `try`, `catch`, `finally`
- 80. پرتاب استثنا (Exception) با `throw`
- 81. مدیریت منابع با ماکروی `with-open`
- 82. فرابرنامهنویسی (Metaprogramming): کد به عنوان داده
- 83. ماکروها (Macros): کدی که کد مینویسد
- 84. زمان استفاده (و عدم استفاده) از ماکروها
- 85. نوشتن یک ماکروی ساده با `defmacro`
- 86. درک Syntax Quoting, Unquoting و Splicing (`'`, `~`, `~@`)
- 87. تعامل با جاوا (Java Interoperability): فراخوانی متدها
- 88. تعامل با جاوا: ایجاد نمونه از کلاسها و دسترسی به فیلدها
- 89. Clojure Spec: تعریف مشخصات برای دادهها
- 90. اعتبارسنجی دادهها با `s/valid?` و `s/explain`
- 91. تعریف مشخصات برای توابع با `s/fdef`
- 92. تستنویسی مولد (Generative Testing) با استفاده از Spec
- 93. مقدمهای بر ClojureScript و تفاوتهای آن با Clojure
- 94. ابزارهای ساخت (Build Tools): بررسی Leiningen و `project.clj`
- 95. ابزارهای ساخت: بررسی Clojure CLI و `deps.edn`
- 96. چارچوب تستنویسی `clojure.test`: `deftest` و `is`
- 97. مبانی کارایی و بهینهسازی: Type Hinting و Boxing
- 98. ساخت یک پروژه واقعی: وب سرور با Ring و Compojure
- 99. کار با پایگاه داده: آشنایی با `clojure.java.jdbc`
- 100. اکوسیستم Clojure: جامعه، کتابخانهها و آینده
تگها:
آموزش آنلاین
برنامه نویسی
برنامهنویسی تابعی (Functional Programming)
برنامهنویسی تابعی در Clojure: سادگی و قدرت Lisp
دوره آموزشی
نظرات
هنوز نظری ثبت نشده است.
وارد شوید تا نظر ثبت کنید.