کتاب Learn Concurrent Programming with Go (برنامه نویسی همزمان را با Go یاد بگیرید) کتاب به خوانندگان یاد میدهد که چگونه از قابلیتهای همزمانی زبان برنامهنویسی Go بهره ببرند. این کتاب به شما نحوه استفاده از گوروتینها، کانالها و قفلها برای ایجاد برنامههای همزمان را آموزش میدهد. همچنین به شما نشان میدهد که چگونه از مسائل همزمانی مانند race conditions و deadlocks جلوگیری کنید.
در ادامه مقدمهای از کتاب Learn Concurrent Programming with Go را از زبان نویسنده شرح خواهیم داد.
مقدمهای بر کتاب Learn Concurrent Programming with Go:
\”آیا میتوانید شرایطی را توصیف کنید که در آن دو رشته اجرا، باعث بن بست شود؟ \” از مصاحبهکننده من پرسید. بعد از اینکه من پاسخ صحیح را دادم، او ادامه داد: \”و در آن موقعیت چه کاری انجام میدهید تا مطمئن شوید که کد از بن بست جلوگیری میکند؟ \” خوشبختانه راه حل را هم میدانستم. مصاحبهکننده به من مقداری کد را نشان داد و پرسید که آیا میتوانم اشکالی در آن پیدا کنم یا خیر. کد وضعیت مسابقه بدی داشت که من آن را هایلایت کردم و راههایی برای رفع مشکل پیشنهاد دادم.
این تبادل در طی سومین و آخرین مصاحبه من برای یک موقعیت توسعه دهنده اصلی در یک شرکت فناوری بینالمللی در لندن انجام شد. در این نقش، من در معرض برخی از چالش برانگیزترین مشکلات در برنامهنویسی قرار گرفتم – مشکلاتی که نیاز به تقویت مهارتهای خود در توسعه سرویسهای همزمان، کم تأخیر و بازده بالا دارد. این بیش از ۱۵ سال پیش بود.
در طول فعالیت من در فناوری، بیش از ۲۰ سال، شرایط بسیاری تغییر کرده است: توسعهدهندگان اکنون میتوانند از هر جایی کار کنند، زبانهای کامپیوتری برای مدلسازی مشاغل پیچیدهتر تکامل یافتهاند، و گیکها از زمانی که شرکتهای غول پیکر فناوری را اداره میکنند، باحال شدهاند. با این حال، چند جنبه ثابت مانده است: برنامهنویسان همیشه برای نامگذاری متغیرها با مشکل مواجه میشوند، بسیاری از مشکلات را میتوان با خاموش کردن و دوباره روشن کردن سیستمها حل کرد، و مهارتهای برنامهنویسی همزمان هنوز کم است.
صنعت فناوری فاقد برنامهنویسان ماهر در همزمانی است زیرا برنامهنویسی همزمان به عنوان بسیار چالش برانگیز تلقی میشود. بسیاری از توسعهدهندگان حتی از استفاده از برنامهنویسی همزمان برای حل مشکلات وحشت دارند.
تصوری که در صنعت فناوری وجود دارد این است که این یک موضوع پیشرفته است و فقط برای افراد سختگیر کامپیوتر اختصاص دارد. دلایل زیادی برای این وجود دارد. توسعهدهندگان با مفاهیم و ابزارهای موجود برای مدیریت همزمانی آشنایی ندارند و گاهی اوقات نمیتوانند تشخیص دهند که چگونه میتوان همزمانی را به صورت برنامهریزی شده مدلسازی کرد. این کتاب تلاش من برای پرداختن به این مشکل و توضیح برنامهنویسی همزمان به شیوهای بدون درد است.
بیشتر بخوانید: کتاب Effective Concurrency in Go
در مورد کتاب Learn Concurrent Programming with Go
Learn Concurrent Programming with Go برای کمک به توسعهدهندگان برای افزایش مهارتهای برنامهنویسی خود با برنامهنویسی پیشرفتهتر به صورت همزمان نوشته شده است.
Go به عنوان زبانی برای ارائه مثالها انتخاب شد زیرا طیف گستردهای از ابزارها را برای کاوش کامل این دنیای برنامهنویسی همزمان فراهم میکند. در Go، این ابزارها کاملاً بصری هستند و به راحتی قابل درک هستند و به ما اجازه میدهند روی اصول و بهترین شیوههای همزمانی تمرکز کنیم.
پس از مطالعه کتاب Learn Concurrent Programming with Go، شما قادر خواهید بود:
■ از برنامهنویسی همزمان برای نوشتن نرمافزاری استفاده کنید که پاسخگو، کارایی بالا و مقیاسپذیر باشد.
■ مزایا، محدودیتها و ویژگیهای محاسبات موازی را درک کنید
■ بین اشتراکگذاری حافظه و ارسال پیام تمایز قائل شوید
■ از گوروتینها، mutexes، قفلهای خواننده-نویسنده، گروههای انتظار، کانالها و متغیرهای شرط استفاده کنید – و علاوه بر این، نحوه ساخت برخی از این ابزارها را بدانید
■ خطاهای معمولی را شناسایی کنید که باید هنگام برخورد با اجرای همزمان مراقب آن باشید
■ مهارتهای برنامهنویسی خود را در Go با موضوعات پیشرفتهتر و چند رشتهای بهبود بخشید
چه کسی باید کتاب Learn Concurrent Programming with Go را بخواند؟
این کتاب برای خوانندگانی است که قبلاً تجربه برنامهنویسی دارند و مایلند در مورد همزمانی بیاموزند. این کتاب هیچ دانش قبلی از برنامهنویسی همزمان را فرض نمیکند. اگرچه خوانندهایدهآل قبلاً تجربهای با Go یا زبان C-syntax دیگری دارد، این کتاب برای توسعهدهندگانی که از هر زبانی میآیند نیز مناسب است – اگر تلاش زیادی برای یادگیری نحو Go صرف شود.
برنامهنویسی همزمان بعد دیگری به برنامهنویسی شما میافزاید: برنامهها مجموعهای از دستورالعملها نیستند که یکی پس از دیگری اجرا میشوند. این موضوع آن را به یک موضوع چالش برانگیز تبدیل میکند و از شما میخواهد که به شیوهای متفاوت درباره برنامهها فکر کنید.
بنابراین، مهارت در Go به اندازه داشتن کنجکاوی و انگیزه مهم نیست. این کتاب بر توضیح نحو و ویژگیهای Go تمرکز ندارد، بلکه از Go برای نشان دادن اصول و تکنیکهای همزمانی استفاده میکند. بیشتر این تکنیکها را میتوان در زبانهای دیگر نیز به کار برد. برای آموزشهای Go و مستندات، به https://go. dev/learn مراجعه کنید.
نحوه سازماندهی کتاب Learn Concurrent Programming with Go: نقشه راه
این کتاب دارای سه بخش با ۱۲ فصل میباشد. بخش ۱ اصول برنامهنویسی و ارتباط همزمان با استفاده از اشتراک حافظه را معرفی میکند:
■ فصل ۱ برنامهنویسی همزمان را معرفی میکند و در مورد برخی از قوانین حاکم بر اجرای موازی صحبت میکند.
■ فصل ۲ روشهای مختلفی را که ما میتوانیم همزمانی و انتزاعات ارائه شده توسط سیستم عاملها و زمان اجرا Go را مدلسازی کنیم، مورد بحث قرار میدهد. این فصل همچنین همزمانی و توازی را با هم مقایسه میکند.
■ فصل ۳ در مورد ارتباط بین رشتهای با استفاده از اشتراک حافظه صحبت میکند و شرایط مسابقه را معرفی میکند.
■ فصل ۴ انواع مختلف mutexes را به عنوان راه حلهایی برای برخی از شرایط مسابقه بررسی میکند. همچنین نحوه اجرای یک قفل اولیه خواننده-نویسنده را نشان میدهد.
■ فصل ۵ نحوه استفاده از متغیرهای شرط و سمافورها را برای همگامسازی اجرای همزمان نشان میدهد. این فصل از کتاب Learn Concurrent Programming with Go، همچنین نحوه ساخت یک سمافور از ابتدا و بهبود قفل خواننده-نویسنده توسعه یافته در فصل قبل را شرح میدهد.
■ فصل ۶ نحوه ایجاد و استفاده از مکانیسمهای همگامسازی پیچیدهتر، مانند گروههای انتظار و موانع را نشان میدهد.
بخش ۲ چگونگی ارتباط چند اجرا را با استفاده از ارسال پیام به جای اشتراک حافظه مورد بحث قرار میدهد:
■ فصل ۷ ارسال پیام با استفاده از کانالهای Go را شرح میدهد. این فصل از کتاب Learn Concurrent Programming with Go، روشهای مختلف استفاده از کانالها را نشان میدهد، و نشان میدهد که چگونه کانالها را میتوان بر اساس اشتراکگذاری حافظه و همگامسازی اولیه ساخت.
■ فصل ۸ توضیح میدهد که چگونه میتوانیم چندین کانال را با استفاده از دستور Go’s select ترکیب کنیم. علاوه بر این، این فصل دستورالعملهایی در مورد انتخاب اشتراک حافظه در مقابل ارسال پیام هنگام توسعه برنامههای همزمان ارائه میدهد.
■ فصل ۹ نمونهها و بهترین شیوهها را برای استفاده مجدد از الگوهای رایج ارسال پیام ارائه میکند. این فصل از کتاب Learn Concurrent Programming with Go، همچنین انعطافپذیری داشتن یک زبان (مانند Go) را نشان میدهد که در آن کانال هااشیاء درجه یک هستند.
قسمت ۳ الگوهای همزمانی رایج و برخی موضوعات پیشرفتهتر را بررسی میکند:
■ فصل ۱۰ تکنیکهایی را برای شکستن مسائل فهرست میکند تا برنامهها بتوانند با استفاده از برنامهنویسی همزمان کارآمدتر اجرا شوند.
■ فصل ۱۱ نشان میدهد که چگونه موقعیتهای بن بست زمانی که همزمانی داریم ایجاد میشود و تکنیکهای مختلفی برای اجتناب از آنها توضیح میدهد.
■ فصل ۱۲ به مسائل داخلی mutexes میپردازد. توضیح میدهد که چگونه mutexeها در فضای هسته و کاربر پیادهسازی میشوند.
نحوه خواندن کتاب Learn Concurrent Programming with Go
توسعهدهندگانی که تجربهای در زمینه همزمانی ندارند، باید کتاب را به عنوان یک سفر ببینند، که از فصل اول شروع میشود و تا پایان ادامه مییابد. هر فصل کتاب Learn Concurrent Programming with Go، مهارتها و تکنیکهای جدیدی را آموزش میدهد که مبتنی بر دانش کسبشده در فصلهای قبلی است.
توسعهدهندگانی که قبلاً تجربهای در زمینه همزمانی دارند، میتوانند فصلهای ۱ و ۲ کتاب Learn Concurrent Programming with Go، را بهعنوان تجدیدنظر در مورد نحوه مدلسازی همزمانی سیستمهای عامل بخوانند و سپس تصمیم بگیرند که آیا به برخی از موضوعات پیشرفتهتر رد شوند یا خیر. برای مثال، خوانندهای که قبلاً با شرایط مسابقه و mutexes آشنایی دارد، ممکن است تصمیم بگیرد که در مورد متغیرهای شرط در فصل ۵ به یادگیری ادامه دهد.
سرفصلهای کتاب Learn Concurrent Programming with Go:
- Learn Concurrent Programming with Go
- brief contents
- contents
- preface
- acknowledgments
- about this book
- about the author
- about the cover illustration
- Part 1: Foundations
- Chapter 1: Stepping into concurrent programming
- Chapter 2: Dealing with threads
- Chapter 3: Thread communication using memory sharing
- Chapter 4: Synchronization with mutexes
- Chapter 5: Condition variables and semaphores
- Chapter 6: Synchronizing with waitgroups and barriers
- Part 2: Message passing
- Chapter 7: Communication using message passing
- Chapter 8: Selecting channels
- Chapter 9: Programming with channels
- Part 3: More concurrency
- Chapter 10: Concurrency patterns
- Chapter 11: Avoiding deadlocks
- Chapter 12: Atomics, spin locks, and futexes
- index
جهت دانلود کتاب Learn Concurrent Programming with Go میتوانید پس از پرداخت، دریافت کنید.
دیدگاهها
هیچ دیدگاهی برای این محصول نوشته نشده است.