زبانی به اسم Go

 

دقیق تو خاطرم هست که اولین بار با یک مقاله که به زبون خودمون نوشته شده بود با زبان گو آشنا شدم !

مقاله بسیار قشنگی بود و متنش طوری بود که انگار کودک کنجکاو و خرابکار درون ادمو هی تحریک میکرد که : هی کارتو ول کن برو با این زبون جدید بازی کن !

تو مقاله هم شدیداً تاکید کرده بود که افراد بسیار باهوش و … که همگی خروجی های بسیار بزرگی داشتند  و از دنیای یونیکس اومده بودند این زبان رو طراحی کرده بودند و درست همین قسمتش باعث شد که من شدیداً در مورد این زبان کنجکاو شدم  ، چرا که طراحای این زبان اکثراً برنامه نویس سیستمی و سطح پایین بودند و برنامه نویسای سطح پایین یجورایی با بقیه برنامه نویسا تفاوت دارند ( این حرفمو کسایی میفهمن که وقت خیلی زیادی رو با زبون هایی مثل c c++ کار کردند و عمرشون رو صرف این کردند که یه سیستم عامل حتی ساده هم باشه برای خودشون بنویسن یا کلی وقت بزارن و بتونن رزولیشن ۱۰۲۴ * ۷۶۸ رو بیارن تو محیط خشک و خشن داس و سیستم رنگ بندی رو بهتر کنن ) و از اونجایی که منم یه زمانی و تا حدودی امروزم عاشق و دیوانه این جور چیزام دیگه کنترل خودمو از دست دادم و یه راست رفتم سراغ گو و هرچی که به گو مربوط باشه !

درست نیم ساعتی نگذشته بود که شدت جنون و کنجکاوی من در مورد این زبون بیشتر شد و علتش نوشته های تیم گو در وبلاگ یا شبکه های اجتماعی و … بود ، براتون چندتا مثال میارم :

یکیش نوشته بود که من واقعا خوشحالم که زبان گو چیزی به اسم فریم ورک مخصوصاً مثل ریلز نداره

یکی دیگه نوشته بود من از اول هم از استفاده از فریم ورک متنفر بودم و فریم ورکها همیشه کارو پیچیده تر میکردند و الان واقعا خوشحالم که تو زبان گو چیزی به اسم فریم ورک وجود نداره

یکی از نوشته ها هم که واقعا انگار داشت حرف دل منو میگفت این بود که تو این زبون چیزی به اسم شی گرایی و دیزان پترن و … وجود نداره

خب منم وقتی این متن ها رو خوندم کار از تحریک گذشت و همونجا تصمیم به یادگیری زبان گو گرفتم و علتشم عاداتی بود که از برنامه نویسی سطح پایین تو عمق روح و روان من نقش بسته بود و کلاً اکثر برنامه نویسایی که با بیت و بایت سروکله میزنن و یا با سی پی یو  یا سخت افزار کلاً از فریم ورک و  …. بیزارن و دوست دارند خودشون از پایه کد چیزی رو بنویسن  حتی با دیزارن پترن هم رابطه ای ندارند و با روش هایی که خودشون بلدند یه سیستم شبیه پلاگین پیاده میکنند و علت این طرز فکر نمیدونم چیه اما حتی به شی گرایی هم دیدگاه خوبی ندارند  !

خلاصه این زبان رو تو مدت کوتاهی یاد گرفتم و شروع کردم به نوشتن یکی از پروژه هام با این زبون و الانم قصد دارم تجربیاتمو بازگو کنم :

اولین چیزی که از این زبان باید بگم اینه که گاهی اوقات کد کو واقعا زشت و بدقلق میشه و آدم دوست نداره بهش نگاه کنه

تو بعضی از قسمت های پروژه که از struct interface  استفاده کرده بودم و هر ازگاهی هم اشاره گر خوندن و تغییر دادن کدها واقعا برام سخت میشد تا حدی که گاهی اوقات تابعی رو که خودم مینوشتم نمیدونستم کار تابع چیه و اصلاً چرا اینجاست  و هنگ میکردم و هر از گاهی هم کلی وقتم تلف میشد تا بین پکیج ها و ماژول های گوناگون چرخ بزنم تا بفهمم چی به چیه ( در کل کسایی که با این زبان تجربه دارن منظرمو میفهمن )

گو چیزی به اسم شی گرایی نداره و بجاش یه چیز دیگه پیاده کردن که تو پیچیده کردن کارها چیزی از شی گرایی کم نداره و چون متفاوت هست کلی زمان میبره تا خوندن کد یا به دست اوردن طرز فکر طراحی با این روش بدست بیاد

پیام هایی که کامپایلر گو برای خطایابی و … نشون میدن گاهی اوقات اکثرا بی مفهوم هستن و نامربوط حتی اگر مشکل خطا رو هم نشون بده و اصلاً متن خوبی ندارند ( این اعتراض رو حتی یکی برای سازندگانشون نوشته بود و قول داده بودند اصلاح کنند )

تو زبان گو چیزی به اسم جنریک وجود نداره و این یعنی نوشتن کد بیشتر ( این موضوع رو هم نه تنها من بلکه خیلی ها در مورد جنریک ایمیل زدن ولی تیم گو شدیداً تاکید داره که قرار نیست تو گو چیزی به اسم جنریک باشه )

هرچقدر که تعداد خطوط پروژه میره بالا کار خطایابی و تغییر کدها هم سخت تر میشه اما این سختی تو گو یکم بیشتره ( هنوزم نمیدونم داکر رو با گو چجوری نوشتن  و وقتی به سورسش فکر میکنم ناخودآگاه فکرم میره طرف بی نظمی و آشوب )

 

به هرحال اینا یه گوشه از تجربیات من با این زبون بود که همون موقع باعث شد ولش کنم و مجبور شدم کل پروژه رو دوباره با پایتون و جاوا بنویسم و تو دلم هم یه غلط کردم گفتم ولی این زبان مزایای زیادی هم داره مثل :

زبان گو استاتیک تایپ هست و این خودش یه امتیاز بزرگه

یادگیری زبان گو واقعا اسونه

این زبون واقعا کتابخونه های استانداردی داره

چیزی که کامپایلر گو بهتون خروجی میده یه فایل باینری هست که تو هر کامپیوتری بدون نصب هیچ کوفت و زهرماری کار میکنه

تو زبان گو مثل پایتون برای حل هر مسئله ای یه روش وجود داره و این یعنی کد خوانا و کدی که همه میتونن بفهمنش ( به این فکر کنید برنامه نویس پروژه رفته و قراره جدیده کار اونو ادامه بده )

از طرفی نیتیو بودن  گو باعث میشه این زبون سرعت خوبی هم داشته باشه

و . . .

 

اینم بگم سیاست گوگل در مورد ساخت این زبون این بوده که راحت بتونن برا خودشون برنامه نویس پیدا کنن چرا که زبان گو واقعا اسونه و براش راحت میشه برنامه نویس پیدا کرد و در عمل با این همه سروصدا که تو فضای مجازی براه انداختن خودشونم میدونن گو به درد کارای بزرگ که چی بگم متوسطم نمیخوره و تا جایی که من اطلاع دارم از گو تو کمپانی خودشونم چنان استفاده ای نکردن و هنوزم هنوزه نقش پایتون تو گوگل خیلی خیلی بیشتره از زبان گو هست ( سرعت خیلی جاها فاکتور نیست اما متاسفانه خیل عظیمی از دوستان فکر میکنند همه چی فقط و فقط تو سرعت خلاصه میشه)

در کل نظر شخصی من اینه که زبان گو برای نوشتن برنامه های خط فرمان یا وب سرویس های کوچولو واقعا زبون خفنیه اما تو پروژه ای که قراره تو فاصله های زمانی ویرایش بشه آپدیت بشه یا پروژه کوچکی نیست نباید از این زبون استفاده کرد و جایگزین های بهتری وجود داره ( به نظر من گو مثل ویژال بیسیک گوگل هست ) ، یاد متنی افتادم که یکی  از سازندگان اصلی reddit نوشته بود و یکی از دلایل موفقیتش رو این دونسته بود که به هوس های زودگذر اعتنا نکرده بود( نود جی اس رو مثال زده بود) و گو هم برای من یه هوس زودگذر بود ( در کل این روزا هر روز یه زبون جدید بوجود میاد بدون اینکه مشکلات زبون های قبلی رو حل کنه و اگر هم حل کنه خودش کلی مشکل جدید با خودش میاره و فکر کنم تنها زبانی که میشه تا حدودی براش استثنا قائل شد زبان rust خواهد بود )

نتیجه گیری هم اینکه اگر کسی تو برنامه نویسی خیلی خیلی ماهره دلیل نمیشه زبان برنامه نویسی جدیدی هم که درست میکنه خیلی خوب باشه و زبون هایی مثل راست یا کریستال بنظر من از گو خیلی بهترن بخصوص زبان راست که هیچی از سی پلاس پلاس کم نداره ،باهاش حتی کرم و ویروس هم نوشتن   و الانم شرکت های واقعا بزرگی ازش استفاده میکنن.امیدوارم خوشتون اومده باشه

2 thoughts on “زبانی به اسم Go

دیدگاه‌تان را بنویسید:

سه × 1 =