کتاب صوتی ساختارهای داده تغییرناپذیر (Immutable Data Structures)
ساختارهای داده تغییرناپذیر: کلید برنامهنویسی تابعی پیشرفته دوره ساختارهای داده تغییرناپذیر: ارتقا مهارتهای برنامهنویسی تابعی شما آیا به دنبال راهی برای نوشتن کدهای تمیزتر، پایدارتر و قابل پیشبینی...
🎓 دوره آموزشی جامع
📚 اطلاعات دوره
عنوان دوره: دوره ساختارهای داده تغییرناپذیر (Immutable Data Structures)
موضوع کلی: برنامه نویسی
موضوع میانی: برنامهنویسی تابعی (Functional Programming)
📋 سرفصلهای دوره
- 1. مقدمهای بر پارادایمهای برنامهنویسی
- 2. برنامهنویسی دستوری در مقابل برنامهنویسی اعلانی
- 3. اصول کلیدی برنامهنویسی تابعی (Functional Programming)
- 4. توابع خالص (Pure Functions) و اثرات جانبی (Side Effects)
- 5. مفهوم تغییرناپذیری (Immutability) چیست؟
- 6. دادههای تغییرپذیر (Mutable) در مقابل تغییرناپذیر (Immutable)
- 7. مزایای تغییرناپذیری: پیشبینیپذیری و ایمنی کد
- 8. چالشهای تغییرناپذیری: سربار حافظه و عملکرد
- 9. ارتباط بین توابع خالص و دادههای تغییرناپذیر
- 10. شفافیت ارجاعی (Referential Transparency)
- 11. توابع درجه یک (First-Class Functions) و توابع عالیتر (Higher-Order Functions)
- 12. اهمیت تغییرناپذیری در برنامهنویسی همزمان (Concurrent Programming)
- 13. مفهوم کلیدی: اشتراکگذاری ساختاری (Structural Sharing)
- 14. چگونه اشتراکگذاری ساختاری حافظه را بهینه میکند؟
- 15. ساختار داده لیست پیوندی تغییرناپذیر (Immutable Linked List)
- 16. عملگر Cons: ساخت لیست به صورت بازگشتی
- 17. توابع Head و Tail برای پیمایش لیست
- 18. افزودن یک عنصر به ابتدای لیست (Prepending)
- 19. "تغییر" لیست: ساخت یک کپی جدید با اشتراکگذاری
- 20. افزودن عنصر به انتهای لیست: چالش عملکرد
- 21. بازگشت (Recursion): ابزار اصلی کار با دادههای تغییرناپذیر
- 22. بهینهسازی فراخوانی دمی (Tail Call Optimization)
- 23. الگوی تطبیق (Pattern Matching) برای کار با ساختارها
- 24. تابع `map`: اعمال یک تابع بر روی هر عنصر لیست
- 25. تابع `filter`: انتخاب عناصر بر اساس یک شرط
- 26. تابع `reduce` یا `fold`: تجمیع مقادیر یک ساختار
- 27. تفاوت `foldLeft` و `foldRight` و کاربردهای آنها
- 28. پشته (Stack) تغییرناپذیر: پیادهسازی با لیست
- 29. عملیات Push و Pop در پشته تغییرناپذیر
- 30. صف (Queue) تغییرناپذیر: یک پیادهسازی ساده و چالشهای آن
- 31. پیادهسازی صف کارآمد با دو لیست (Two-List Queue)
- 32. وکتور (Vector) یا آرایه تغییرناپذیر
- 33. مقایسه لیست پیوندی و وکتور تغییرناپذیر
- 34. عملکرد دسترسی تصادفی در وکتور
- 35. عملکرد افزودن به انتهای وکتور (Appending)
- 36. پیادهسازی وکتور با درختهای عریض (Tries/Trees)
- 37. مقدمهای بر درختها و مفاهیم پایه
- 38. درخت دودویی جستجو (Binary Search Tree) تغییرناپذیر
- 39. درج (Insertion) در یک BST تغییرناپذیر
- 40. حذف (Deletion) در یک BST تغییرناپذیر
- 41. مشکل عدم توازن در درختهای دودویی
- 42. مقدمهای بر درختهای متوازن (Self-Balancing Trees)
- 43. درخت AVL تغییرناپذیر
- 44. درخت قرمز-سیاه (Red-Black Tree) تغییرناپذیر
- 45. پیمایش درخت به صورت تغییرناپذیر: In-order, Pre-order, Post-order
- 46. نقشه یا دیکشنری (Map/Dictionary) تغییرناپذیر
- 47. پیادهسازی نقشه با استفاده از BST متوازن
- 48. عملیات افزودن، بهروزرسانی و حذف در نقشه
- 49. نقشههای Hash Array Mapped Trie (HAMT)
- 50. جزئیات پیادهسازی HAMT برای نقشهها و وکتورهای کارآمد
- 51. مجموعه (Set) تغییرناپذیر
- 52. پیادهسازی مجموعه با استفاده از نقشه یا درخت
- 53. عملیات اجتماع، اشتراک و تفاضل در مجموعههای تغییرناپذیر
- 54. ساختار داده هیپ (Heap) تغییرناپذیر
- 55. پیادهسازی صف اولویت (Priority Queue) با هیپ
- 56. ارزیابی کند (Lazy Evaluation) چیست؟
- 57. ایجاد دادهساختارهای بینهایت با ارزیابی کند
- 58. مفهوم Stream یا Sequence کند
- 59. توابع `take`, `drop`, `zip` روی ساختارهای کند
- 60. یادداشتگذاری (Memoization) و تاثیر آن بر عملکرد
- 61. مفهوم پایداری (Persistence) در دادهساختارها
- 62. تفاوت پایداری جزئی، کامل و همزمان
- 63. ساختار داده Trie (Prefix Tree) تغییرناپذیر
- 64. کاربردهای Trie: تکمیل خودکار و غلطیاب املایی
- 65. داده ساختارهای Zipper برای پیمایش و بهروزرسانی متمرکز
- 66. کار با ساختارهای تودرتو (Nested Structures)
- 67. چالش بهروزرسانی دادههای تودرتو به صورت تغییرناپذیر
- 68. مقدمهای بر لنزها (Lenses)
- 69. لنزها: راهی برای دسترسی و بهروزرسانی دادههای تودرتو
- 70. اصول کار با لنزها: `view`, `set`, `over`
- 71. ترکیب لنزها (Composition) برای دسترسی به اعماق ساختار
- 72. پیادهسازی یک کتابخانه لنز ساده
- 73. تحلیل سرشکن (Amortized Analysis) عملیات
- 74. تحلیل عملکرد افزودن به وکتور پایدار
- 75. نقش زبالهروب (Garbage Collector) در مدیریت حافظه
- 76. انواع زبالهروبها و تاثیرشان بر برنامههای تابعی
- 77. دادهساختارهای گذرا (Transient Data Structures)
- 78. چه زمانی از ساختارهای گذرا برای بهینهسازی استفاده کنیم؟
- 79. الگوی Builder برای ساختارهای پیچیده
- 80. مقایسه عملکرد: دادههای تغییرپذیر در مقابل تغییرناپذیر
- 81. اندازهگیری (Benchmarking) عملیات روی ساختارهای تغییرناپذیر
- 82. تاثیرات کش پردازنده (CPU Cache) بر عملکرد
- 83. مبادله بین زمان و حافظه (Time-Memory Tradeoff)
- 84. ایمنی در برنامهنویسی موازی (Parallelism) بدون قفل (Lock)
- 85. مدیریت حالت (State Management) در رابط کاربری
- 86. معماری Elm و Redux: الهام از دادههای تغییرناپذیر
- 87. پیادهسازی قابلیت Undo/Redo با لیست تغییرناپذیر از حالتها
- 88. الگوی منبعیابی رویداد (Event Sourcing)
- 89. پایگاههای داده تغییرناپذیر و Append-Only
- 90. مقایسه کتابخانههای معروف: Immutable.js, Immer.js
- 91. مقایسه ساختارهای داده داخلی زبانهای تابعی (Clojure, F#, Scala)
- 92. عملگر `flatMap` یا `bind` و کاربرد آن در کار با ساختارها
- 93. مفهوم Monoid و ارتباط آن با عملیات `fold`
- 94. الگوریتمهای مرتبسازی در بستر تغییرناپذیر (مانند Merge Sort)
- 95. الگوریتمهای جستجو روی ساختارهای داده تغییرناپذیر
- 96. الگوهای طراحی تابعی با ساختارهای تغییرناپذیر
- 97. ترکیب ساختارها برای حل مسائل واقعی
- 98. مطالعه موردی ۱: پیادهسازی یک ویرایشگر متن ساده
- 99. مطالعه موردی ۲: مدیریت حالت یک بازی شطرنج
- 100. مطالعه موردی ۳: تحلیل دادههای یک لاگ فایل بزرگ
برای آموختن، همیشه لازم نیست بخوانید
گاهی بهترین فرصت یادگیری زمانی است که در مسیر رفتوآمد هستید، قدم میزنید، استراحت میکنید یا کارهای روزمرهتان را انجام میدهید. محتوای صوتی کمک میکند از این لحظهها برای شنیدن، اندیشیدن و آشنایی با موضوعات تازه بهره ببرید.
◷
یادگیری در دل روزمرگی
از زمان رفتوآمد، پیادهروی یا استراحت برای شنیدن محتوای مفید استفاده کنید؛ بدون آنکه همیشه به کتاب چاپی یا صفحه نمایش نیاز داشته باشید.
◎
تجربهای شنیداری و دلنشین
با روایت صوتی، توضیحات گفتاری و فضای شنیداری هر محتوا همراه شوید و متناسب با سلیقه خود، شیوه تازهای برای دریافت مطالب تجربه کنید.
✦
گسترش دانش و دیدگاه
با موضوعات متنوع آشنا شوید، ایدههای تازه کشف کنید و فرصت بیشتری برای یادگیری مستمر و پرورش کنجکاوی خود بسازید.
♫
همراه با سبک زندگی شما
محتوای صوتی را متناسب با برنامه روزانه خود انتخاب کنید و در زمان مناسب، شنیدن را به بخشی از عادتهای شخصیتان تبدیل کنید.
کتاب صوتی یا پادکست؟
کتاب صوتی
راهی برای همراه شدن با محتوای یک کتاب از طریق شنیدن. بسته به اثر، میتوانید داستانها، آموزشها، مفاهیم تخصصی یا مطالب کاربردی را در قالب روایت و بیان صوتی دنبال کنید.
مناسب برای شنیدن و مرور محتوای کتابها
پادکست آموزشی
فرصتی برای دنبال کردن موضوعات مشخص در قالب گفتوگو، روایت، توضیح آموزشی یا مجموعهای از قسمتهای صوتی؛ مناسب برای کشف ایدهها و آشنایی با دیدگاههای گوناگون.
مناسب برای یادگیری موضوعی و شنیدن دیدگاههای تازه
هر جا که هستید، شنیدن را آغاز کنید
با دستگاه مناسب خود، محتوای صوتی را به آسانی دنبال کنید.
▯
گوشی هوشمند
اندروید و آیفون
▣
تبلت
برای شنیدن و دنبال کردن محتوا
▤
رایانه و لپتاپ
با پخشکننده صوتی سازگار
♫
هدفون و بلندگو
برای شنیدن متناسب با محیط
چطور از تجربه شنیدن بیشتر بهره ببریم؟
✦ زمان مناسبی برای شنیدن انتخاب کنید؛ زمانی که بتوانید با آرامش به محتوا توجه داشته باشید.
✦ برای مطالب آموزشی، نکتههای مهم را یادداشت کنید یا پس از پایان شنیدن، آنها را مرور کنید.
✦ اگر محتوا طولانی است، آن را در چند نوبت دنبال کنید تا فرصت بیشتری برای درک و مرور داشته باشید.
✦ هنگام رانندگی یا انجام کارهای نیازمند تمرکز، ایمنی را در اولویت قرار دهید و از شیوه شنیدنی استفاده کنید که حواس شما را مختل نکند.
هر شنیدن، فرصتی برای کشف است
با کتابهای صوتی و پادکستهای آموزشی، دنیای تازهای از ایدهها، روایتها و آموختنیها را به لحظههای خود اضافه کنید.
express24.ir
امکانات پخش، ادامه شنیدن و دسترسی آفلاین به نوع فایل، دستگاه و نرمافزار مورد استفاده بستگی دارد.
تگها:
آموزش آنلاین
برنامه نویسی
برنامهنویسی تابعی (Functional Programming)
دوره آموزشی
ساختارهای داده تغییرناپذیر (Immutable Data Structures)
نظرات
هنوز نظری ثبت نشده است.
وارد شوید تا نظر ثبت کنید.