دوره برنامهنویسی تابعی در 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: جامعه، کتابخانهها و آینده
محتویات بسته آموزشی
🌐 سامانه آنلاین فلشکارت؛ مرور هدفمند و هوشمند
اکانت ارائهشده، دسترسی به نسخه تحت وب سامانه فلشکارت ویژه این دوره را فراهم میکند. این سامانه از الگوریتم زمانبندی مرور SM-2 استفاده میکند و بر اساس ارزیابی شما از میزان یادآوری هر کارت، زمان مرورهای بعدی را تنظیم میکند.
به این ترتیب، کارتهای دشوارتر میتوانند زودتر مرور شوند و برای تثبیت مطالب در حافظه، برنامه مرور متناسبتری داشته باشید.
مدتزمان معادل آموزشی بر اساس برآورد این دوره در گواهی درج میشود.
گواهی دوزبانه با استعلام آنلاین
پس از تکمیل فعالیتهای لازم و تأیید درخواست، گواهی پایان دوره به زبان فارسی و انگلیسی صادر میشود. گواهی دارای لینک اختصاصی و QR Code برای بررسی و استعلام آنلاین است.
این گواهی صرفاً بهعنوان گواهی اتمام دوره آموزشی صادر میشود و معادل مدرک دانشگاهی، آکادمیک یا مدرک رسمی مورد تأیید نهادهای دولتی نیست. صدور آن منوط به تکمیل شرایط دوره و تأیید نهایی درخواست است.
نظرات
هنوز نظری ثبت نشده است.
وارد شوید تا نظر ثبت کنید.