اگه فرصت کافی ندارید که برید صفر تا صد ویدیوهای آموزشی یا داکیومنت های زبان گولنگ رو بخونید یک استاد خصوصی بهترین راه برای شماست که با آموزش خصوصی زبان go شما رو زودتر به هدفتون برسونه. کلا ماها فکر میکنیم که هر چیزی رو باید خودمون صفر تا صدش رو یاد بگیریم و همین ممکنه باعث این بشه که دیرتر به هدف برسیم یا بیشتر اوقات نرسیم. من جزو اون دسته از افرادی بودم که دیرتر به بخشی از هدف رسیدم… به شما توصیه میکنم قضیه ی منتورشیپی رو جدی بگیرید. یکی رو پیدا کنید که حتی اگه صفر تا صد کار رو هم ازش نخواستید بصورت منتور کنارتون باشه و نذاره خیلی راه رو اشتباه برید. اما بریم سراغ گو 🙂
گولنگ زبونیه که این روزا خیلی اسمش رو میشنویم. این زبون در سال ۲۰۰۷ در گوگل با اهداف قشنگی ساخته شد. همه میدونیم C خیلی سریعه ولی سخت. جاواسکریپت خیلی راحته ولی کند! گولنگ هر دوی اینا رو سعی میکنه یجا داشته باشه. سینتکس راحت ولی قدرتمند و سریع. در مجموع گو ویژگی های زیر رو روشون تمرکز کرده.
انواع دادهی ایستا (Static Types)
اگه با زبونایی مثل جاواسکریپت یا PHP کار کرده باشید، دیدید که توی این زبونا ما وقتی متغیر تعریف میکنیم نیازی نیست که بگیم نوع این متغیر رشته هست یا عددی هست یا هر چیز دیگه. برنامه نویس های تازه کار اینو به دید یه مزیت و قدرت زبان میبینن. ولی در اصل یه مدل ضعف میتونه باشه. توی جامعه ی جاوااسکریپت بخشی از مشکلات ناشی از این ضعف با TypeScript حل شده و توی PHP هم میشه یسری چیزا رو Type-hint کرد توی ورژن های جدید ولی اینا اصل قضیه رو حل نمیکنن! این که زبون در ران تایم نیاز داره که نوع متغیر شما رو تشخیص بده و این به زبان بچههای الگوریتمی هزینه (cost) داره. در اصل در این زبانها تایپ هر متغیر با مقداری که داخلش ریخته میشه مشخص میشه و امنیت برنامه و تایپ ها توی ران تایم چک میشه. ولی در زبونایی مثل سی یا گو کد شما در کامپایل تایم یسری چیزا از جمله همین تایپ ها چک میشن و توی ران تایم نیازی نیست که این چک ها انجام بشه.
کلا گو و زبونای کامپایلری سریعترم هستن معمولا چون در فاز کامپایل کدها به زبون سطح پایین تر که نزدیک به ماشین هست ترجمه میشه و هر بار که کد ران میشه نیازی به تفسیر کد وجود نداره. همین باعث پرفورمنس خیلی بالای این نوع برنامه ها میشه. در مقابل یچیزی مثل PHP هر بار کد رو تفسیر و اجرا میکنه که همین باعث کندیش میشه. البته راهکارهایی برای بهبود نسبی این مشکلات ایجاد شده. مثلا در لاراول Octane رو داریم که یجورایی برنامه شما رو در مموری نگه میداره و در درخواست های بعدی نیازی نیاز به پردازش کمتری هست ولی تا جایی که من میدونم در کنار مشکلاتی که ممکنه بخاطر چیزایی مثل مموری لیک بوجود بیاد، بازم هنوز فاصله هست با بهترین ها.
کدهای خواناتر در Go نسب به رقیب های قدرتمند
قبول میکنیم که یچی مثل C خیلی خوبه ولی اینم قبول کنید شما که خیلی زبون سختیه 🙂 البته برنامه نویسای اونها هم میگن که درسته بیس زبون سخته ولی برای راحتی لایببری هایی وجود داره که کارشون رو راحتتر میکنه که ما قبول نمیکنیم ازشون :دی
در مجموع گولنگ سعی کرده سادگی یچیزی مثل پایتون رو حفظ کنه و از اونور مثل سی قوی هم باشه.
پردازش موازی، کانکارنسی و goroutine ها
اینجا دیگه یچی مثل PHP خیلی کم میاره 🙁 فرض کنید که یسری ویدیو دارید که میخواید پردازش خاصی روشون انجام بدید و بعد نتیجه رو به کاربر برگردونید. البته کارای در این حد سنگین رو باید به صف ها بسپریم ولی برای میک سنس کردن قضیه یکم تسک رو سنگین تعریف کردم. در این حالت توی پی اچ پی باید ویدیو ها رو پشت سر هم بررسی کنیم ولی توی گو میشه چند تا ترد تعریف کنیم که بصورت موازی این کار رو بکنن. توی پی اچ پی باز یسری راهکارا مثل swoole تعریف شده که من در عمل کار نکردم باهاش ولی خیلی سر و صدا نکرده. ولی حتما به زودی در موردش همینجا تجربم رو میگم.
معایب زبان برنامه نویسی گو
- گو زبون شی گرا نیست و نمیتونیم از مزایای زبون های شی گرا استفاده کنیم توش.
- با اینکه نسبت به سی و… راحتتر شده ولی باز همچنان نسبت به پی اچ پی سخت تره یسری چیزا توش.
به دنیای گو خوش اومدید:
package main
import "fmt"
func main() {
fmt.Println("hello world")
}
منابع یادگیری زبان گو
زبان گو در ابتدا خیلی ساده به نظر میرسه ولی برای اینکه بتونید مفاهیمش رو خوب درک کنید نیاز به منابع درست و حسابی دارید. توی این بخش منابعی که خودم دیدم و دوست داشتم رو معرفی میکنم بهتون. شما هم اگه مورد دیگه ای میشناسید که خوبه توی کامنت ها اضافه کنید.
- برای شروع این رودمپ رو چک کنید: https://roadmap.sh/golang
- کتاب مقدمهای بر گو از Caleb Doxsey یکی از معروفترین منابع گو هست.
- سایت Go by examples هم خوبه.
- یه آموزش بر پایهی متن خوب هم سایت پروگرمیز گذاشته که دوسش داشتم.
- کانال یوتیوب TechWorld with Nana هم یه ویدیوی جم و جور و خوب داره که واسه شروع بد نیست.
- اگه منبع فارسی میخواید شاید GoCasts بهترین باشه.
در نظر داشته باشید که یه منبع همه چیز رو بهتون یاد نمیده. با اینا شروع کنید و یکیش رو تموم کنید بعد کم کم با سرک کشیدن به چیزای دیگه دانشتون رو عمیق تر کنید.
پکیج های کاربردی گولنگ
برای برنامه نویسی گو میتونید از پکیج های خیلی زیادی که توسط کامینیوتی گو توسعه داده شدن استفاده کنید. توی اینجا پکیجهایی که از نظرم مفید به نظر میرسن رو مینویسم.
جمع بندی
من مدتی هست که با زبان گو کار میکنم و برای برنامه نویسی وب از فریمورک gin استفاده میکنم. در صورتی که نیاز به مدرس خصوصی برای زبان گو هستید یا یه منتور برنامه نویسی گو نیاز دارید با من در تماس باشید.
هر روز خفن تر از دیروز😁👍عشق منی پسر😘
مزسی صاعد جووون 🙂