کتاب تسلط بر برنامه‌نویسی همزمان و موازی در هسکل: افزایش کارایی و مقیاس‌پذیری سیستم‌ها با فرمت AZW3 برای کتابخوان کیندل و فرمت EPUB

تسلط بر برنامه‌نویسی همزمان و موازی در هسکل: افزایش کارایی و مقیاس‌پذیری سیستم‌ها تسلط بر برنامه‌نویسی همزمان و موازی در هسکل: افزایش کارایی و مقیاس‌پذیری سیستم‌ها آیا سیستم‌های شما در زیر بار سنگین، ...

انتخاب پلن

انتخاب پلن برای ادامه خرید الزامی است.

پرداخت اقساطی
در صورت خرید اقساطی هر قسط: 62,488 تومان
۴ قسط ماهانه. بدون سود، چک و ضامن.
پرداخت اقساطی با دیجی‌پی پرداخت اقساطی با ترب‌پی

🎓 دوره آموزشی جامع

📚 اطلاعات دوره

عنوان دوره: دوره تسلط بر برنامه‌نویسی همزمان و موازی در هسکل: افزایش کارایی و مقیاس‌پذیری سیستم‌ها

موضوع کلی: برنامه‌نویسی عملکرد بالا و مقیاس‌پذیر

موضوع میانی: اصول و الگوهای برنامه‌نویسی موازی و همگام

📋 سرفصل‌های دوره

  • 1. مقدمه: چرا هسکل برای برنامه‌نویسی همزمان و موازی؟
  • 2. بخش اول: مبانی و پیش‌نیازها
  • 3. مدل ارزیابی در هسکل: ارزیابی کند (Lazy Evaluation)
  • 4. فرم نرمال ضعیف سر (WHNF) و فرم نرمال (NF)
  • 5. مفهوم Thunk و نقش آن در ارزیابی کند
  • 6. خلوص (Purity) و تاثیر آن بر همزمانی و موازی‌سازی
  • 7. سیستم زمان‌اجرای GHC (GHC Runtime System)
  • 8. مفهوم Capability و HEC (Haskell Execution Context)
  • 9. زمان‌بند (Scheduler) در GHC و نحوه کار آن
  • 10. تمایز کلیدی بین همزمانی (Concurrency) و موازی‌سازی (Parallelism)
  • 11. آشنایی با کامپایلر GHC و فلگ‌های مرتبط: threaded- و rtsopts-
  • 12. بخش دوم: برنامه‌نویسی همزمان (Concurrency)
  • 13. شروع کار با همزمانی: معرفی تابع forkIO
  • 14. مفهوم Thread و ThreadId در هسکل
  • 15. مدیریت چرخه‌ی حیات Threadها: killThread و myThreadId
  • 16. ارتباط اولیه بین Threadها: معرفی MVar
  • 17. MVar به عنوان یک متغیر همزمان قابل نوشتن و خواندن
  • 18. استفاده از MVar به عنوان قفل (Lock)
  • 19. الگوی تولیدکننده-مصرف‌کننده با استفاده از MVar
  • 20. پیاده‌سازی یک کانال ارتباطی ساده با MVar
  • 21. مدیریت منابع با MVar: پیاده‌سازی یک Pool
  • 22. کانال‌های ارتباطی: معرفی Chan
  • 23. ارتباط یک-به-یک و یک-به-چند با Chan
  • 24. پیاده‌سازی کانال‌های تکراری (Duplicate Channels)
  • 25. مدیریت استثناها (Exceptions) در محیط همزمان
  • 26. استثناهای همزمان (Asynchronous Exceptions) و چالش‌های آن
  • 27. توابع catch, try و handle برای مدیریت استثناها
  • 28. کنترل تحویل استثناهای همزمان: mask و uninterruptibleMask
  • 29. بخش سوم: حافظه تراکنشی نرم‌افزاری (Software Transactional Memory - STM)
  • 30. معرفی STM: راه حلی برای بن‌بست و شرایط مسابقه
  • 31. مفهوم تراکنش (Transaction) و اتمی بودن (Atomicity)
  • 32. متغیرهای تراکنشی: معرفی TVar
  • 33. توابع بنیادین STM: اatomically, readTVar, writeTVar
  • 34. قدرت ترکیب‌پذیری (Composability) در STM
  • 35. مسدود کردن و تلاش مجدد: تابع retry
  • 36. ترکیب تراکنش‌های جایگزین: تابع orElse
  • 37. پیاده‌سازی الگوهای همزمانی رایج با STM
  • 38. متغیرهای تراکنشی پیشرفته‌تر: TChan, TQueue, TMVar
  • 39. مقایسه MVar و TMVar
  • 40. مدیریت استثناها در تراکنش‌های STM
  • 41. STM در عمل: پیاده‌سازی یک سیستم حساب بانکی ساده
  • 42. الگوهای طراحی پیشرفته با STM
  • 43. بخش چهارم: برنامه‌نویسی موازی (Parallelism)
  • 44. مبانی موازی‌سازی: ایجاد جرقه‌ها (Sparks)
  • 45. مونَد Eval و نقش آن در کنترل ارزیابی
  • 46. توابع بنیادین موازی‌سازی: rpar و rseq
  • 47. ارتباط بین rpar/rseq و مدل ارزیابی کند (WHNF/NF)
  • 48. استراتژی‌های ارزیابی (Evaluation Strategies): انتزاعی برای موازی‌سازی
  • 49. معرفی کتابخانه parallel و تابع using
  • 50. استراتژی‌های پایه: rpar, rseq, rdeepseq
  • 51. ترکیب استراتژی‌ها برای ساختارهای داده پیچیده
  • 52. موازی‌سازی لیست‌ها: استراتژی evalList
  • 53. موازی‌سازی ساختارهای Traversable: استراتژی evalTraversable
  • 54. نوشتن استراتژی‌های ارزیابی سفارشی
  • 55. الگوریتم‌های موازی کلاسیک: map و reduce موازی
  • 56. مثال عملی: موازی‌سازی الگوریتم k-means
  • 57. مثال عملی: موازی‌سازی یک جستجوی عددی
  • 58. قانون امدال (Amdahl's Law) و محدودیت‌های موازی‌سازی
  • 59. مشکلات رایج در موازی‌سازی: دانه‌بندی (Granularity)
  • 60. مشکلات رایج: وابستگی داده‌ها و گلوگاه‌های ترتیبی
  • 61. بخش پنجم: پروفایل‌سنجی و بهینه‌سازی عملکرد
  • 62. چرا اندازه‌گیری عملکرد ضروری است؟
  • 63. فعال‌سازی پروفایل‌سنجی در GHC: فلگ‌های prof- و fprof-auto-
  • 64. آشنایی با Cost Centre و نحوه تعریف آن‌ها
  • 65. تحلیل خروجی پروفایل‌سنجی (فایل prof.)
  • 66. پروفایل‌سنجی حافظه (Heap Profiling)
  • 67. انواع پروفایل حافظه: by type, by cost centre, biographica
  • 68. معرفی ابزار ThreadScope برای تحلیل برنامه‌های موازی و همزمان
  • 69. تولید eventlog برای ThreadScope با فلگ l-
  • 70. تحلیل نمودارهای ThreadScope: فعالیت HECها و GC
  • 71. شناسایی جرقه‌های ایجاد شده، اجرا شده و هدر رفته (Fizzled Sparks)
  • 72. تشخیص و رفع مشکلات عملکردی با استفاده از ابزارهای پروفایل‌سنجی
  • 73. تنظیمات پیشرفته سیستم زمان‌اجرای GHC (RTS Options)
  • 74. تنظیم تعداد Capabilityها با N-
  • 75. بهینه‌سازی Garbage Collector برای برنامه‌های موازی
  • 76. مطالعه موردی: پروفایل‌سنجی و بهینه‌سازی یک برنامه از ابتدا تا انتها
  • 77. بخش ششم: کتابخانه‌ها و الگوهای پیشرفته
  • 78. معرفی کتابخانه async: همزمانی ساختاریافته (Structured Concurrency)
  • 79. مقایسه async و forkIO
  • 80. توابع اصلی async: اasync, wait, poll, cancel
  • 81. اجرای همزمان و جمع‌آوری نتایج با waitAny و waitEither
  • 82. رقابت بین تسک‌ها: تابع race
  • 83. استفاده از اپلیکاتیو Concurrently برای سادگی کد
  • 84. مدیریت استثناها در کتابخانه async
  • 85. پیاده‌سازی الگوی Worker Pool با استفاده از async
  • 86. الگوهای ارتباطی پیشرفته: کانال‌های نامحدود و محدود
  • 87. موازی‌سازی داده‌محور (Data Parallelism)
  • 88. معرفی مختصر کتابخانه‌های Repa و massiv برای پردازش آرایه‌ای با عملکرد بالا
  • 89. مفهوم فیوژن (Fusion) و حذف ساختارهای داده میانی
  • 90. مقدمه‌ای بر برنامه‌نویسی توزیع‌شده با Cloud Haskell
  • 91. بخش هفتم: مطالعات موردی و جمع‌بندی
  • 92. مطالعه موردی ۱: ساخت یک وب کرالر (Web Crawler) همزمان
  • 93. مطالعه موردی ۲: پیاده‌سازی یک سرور چت همزمان با STM
  • 94. مطالعه موردی ۳: پردازش موازی یک مجموعه داده بزرگ
  • 95. مطالعه موردی ۴: حل یک مسئله علمی با استفاده از استراتژی‌های موازی‌سازی
  • 96. بازبینی الگوهای طراحی کلیدی در برنامه‌نویسی همزمان
  • 97. بازبینی الگوهای طراحی کلیدی در برنامه‌نویسی موازی
  • 98. اشتباهات متداول و نحوه اجتناب از آن‌ها
  • 99. جمع‌بندی و نگاهی به آینده برنامه‌نویسی عملکرد بالا در هسکل
تگ‌ها: Async Haskell Concurrent Patterns Concurrent programming Distributed Systems Erlang Fsharp Functional Programming Haskell Haskell Concurrency Haskell Parallelism High-Performance Computing Multicore Programming Parallel Patterns Parallel programming performance optimization scalability

نظرات

هنوز نظری ثبت نشده است.

وارد شوید تا نظر ثبت کنید.