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