کتاب تسلط بر برنامهنویسی همزمان و موازی در هسکل: افزایش کارایی و مقیاسپذیری سیستمها با فرمت AZW3 برای کتابخوان کیندل و فرمت EPUB
تسلط بر برنامهنویسی همزمان و موازی در هسکل: افزایش کارایی و مقیاسپذیری سیستمها تسلط بر برنامهنویسی همزمان و موازی در هسکل: افزایش کارایی و مقیاسپذیری سیستمها آیا سیستمهای شما در زیر بار سنگین، ...
🎓 دوره آموزشی جامع
📚 اطلاعات دوره
عنوان دوره: دوره تسلط بر برنامهنویسی همزمان و موازی در هسکل: افزایش کارایی و مقیاسپذیری سیستمها
موضوع کلی: برنامهنویسی عملکرد بالا و مقیاسپذیر
موضوع میانی: اصول و الگوهای برنامهنویسی موازی و همگام
📋 سرفصلهای دوره
- 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
نظرات
هنوز نظری ثبت نشده است.
وارد شوید تا نظر ثبت کنید.