سوال بعدی این بود که یادگیری concurrency تو گولنگ کار ساده ای نیست، هم به این دلیل که نسبت به زبان های رایج دیگه شیوه متفاوتی داره و هم اینکه در پروژه های تیپیکال هم خود کتابخونه و پکیج هایی که استفاده میکنیم این موضوع رو هندل میکنن و برنامه نویس کمتر میتونه خودش با concurrency سر و کله بزنه، برای اینکه concurrency رو در حد production بتونیم یادبگیریم باید چیکار کنیم؟
بیل پاسخ داد که اول باید مطمئن بشید که concurrency برای رفع مساله ای که پیش روتونه لازمه. مفهوم concurrency یعنی out of order execution، یعنی شما چند تا کار رو میخوای انجام بدی و مهم نیست ترتیب اجراشون چی باشه. این میشه concurrency. شما باید به دنبال چالش هایی باشی که out of order execution لازم داشته باشن، مثل همون سرویس distributed chat. یا مثلا من تو تمریناتم یه مثال barber shop دارم که برای آموزش concurrency ازش استفاده میکنم.
من سعی میکنم چالش رو بصورت single thread حل کنم که به اندازه کافی سخت خواهد بود، بعد اگر تونستم از مزیت concurrency بهره ببرم کد رو refactor میکنم. کلا multi thread programming خیلی سخته و من نمیگم که گولنگ اونو ساده کرده، من میگم گولنگ به ما ابزار میده، اگه ازش درست استفاده کنیم، به ما کمک میکنه، اگه درست استفاده نکنیم به پروژه مون complexity اضافه کردیم.
اتفاقی که خیلی میفتاد و تو خیلی از کدها همه جا از channel استفاده میشد و تو ریفکتور میدیدی که حذفش میکردن! اتفاقی که ممکنه برای جنریک هم بیفته
فکر کنم این باشه
https://github.com/ardanlabs/gotraining/blob/master/topics/go/algorithms/fun/barber/shop/shop.go
#bill_kennedy
@gocasts
Post #92
944
Go Casts | Systems & Agents 🚀 سوال بعدی این بود که تو پروژه هامون چه موقع باید یه چالشی رو داخل پروژه حل کنیم و به پروژه complexity اضافه کنیم (مثل cache کردن) و چه موقع باید از ابزارهای خارجی استفاده کنیم (مثل redis) و پروژه هامون رو بهشون وابسته کنیم؟ بیل پاسخ داد که این موضوع خیلی…
- ❤ 1
- 👍 1