برنامه نویسیمیم تک 17

زبان برنامه نویسی Go : معرفی و بررسی

زبان برنامه نویسی Go : معرفی و بررسی

همونطور که از عنوان مشخص هست قصد داریم تا با هم دیگه زبان برنامه نویسی Go رو بررسی کنیم 🙂

من و زبان برنامه نویسی GO :

چند وقتی هست که دارم درباره زبان برنامه‌نویسی Go و یا بهتر هستش بگیم golang مطالعه می‌کنم. پسر عجب زبان برنامه‌نویسی فوق العاده‌ای هستش. خب داستان از کجا شروع شد ؟!

همونطور که می‌دونید من چندین سال هست که توسعه دهنده اندروید هستم و می خواستم در کنار این مهارت کدنویسی بیام مهارت برنامه‌نویسی برای سرور رو (back-end) رو هم یاد بگیرم. اولین انتخابم جاوا و فریم‌ورک اسپرینگ بود برای برنامه‌نویسی سمت سرور. که اتفاقا spring 5  با کاتلین هم خیلی سازگار شده بود طبق مطالعاتم. اما خب با خودم گفتم درسته که جاوا و کاتلین رو بخاطر اندروید تا حدودی بلد هستم اما باید بیشتر تحقیق کنم. کمی دیگه جلو رفتم و پرس‌وجو کردم از برنامه‌نویس های back-end دیدم که php  و فریم ورک لاراول هم می تونه خیلی خوب باشه و بازار کار خوبی داره و در عین حال میشه سریع یاد گرفتش. اما باز دیدم تا اینجای کار spring هست و لاراول بذار بیشتر تحقیق کنم ببینم دیگه چه زبان های برنامه نویسی دیگه ای هست برای برنامه نویسی سرور . در همین حال بود که با node.js آشنا شدم که برنامه‌نویسی برای سرور با زبان برنامه‌نویسی javascript بود. جالب بود برام چون react هم برای برنامه نویسی front-end استفاده میشد. یعنی با این اوصاف اگر javascript رو یاد می گرفتم با کمی تلاش و زمان می تونستم هم back-end و هم front-end رو با زبان javascript کد نویسی کنم کنارش هم که اندروید رو داشتم. وای پسر چه ترکیب خوبی میشد. اما باز راضی نشدم به همین قضیه و گفتم بیشتر باید برم جلو. همینطور بین اطلاعاتی که تا این مرحله بدست آورده بودم داشتم سبک سنگین می‌کردم که بالاخره کدوم رو انتخاب کنم و شروع کنم به یادگیری. زمان داره از دست میره …


یوهو یاد زبان برنامه‌نویسی پایتون افتادم که چرا این رو فراموش کردم که هم سرعت یادگیری بالایی داره و هم گزینه مناسبی برای برنامه‌نویسی سمت سرور . کم کم خودم رو وسط انبوهی از زبان‌های برنامه‌نویسی سمت سرور دیدم. و هر لحظه مزیت ها و معایب هر کدوم رو با search ها و صحبت‌هایی که با برنامه‌نویس هاشون داشتم کامل‌تر از میشد. هر کدوم برای یک زمینه گزینه عالی بودند.

کم کم می خواستم تا زبان جاوا رو انتخاب کنم با فریم‌ورک spring برای کدنویسی سمت سرور و شروع کنم به یادگیری که بصورت اتفاقی در یکی از جست‌ و جو هام با زبان برنامه نویسی Go آشنا شدم. در اولین لحظه لوگو این زبان برای خیلی جالب بود (gopher). شروع کردم به مطالعه معایب و مزیت های زبان برنامه نویسی Go و پرس‌وجو که چه مزیت ها و معایبی رو داره. خیلی برام جالب بود. این همه وقت بود این زبان بود و من هم درباره اون شنیده بودم اما تا حالا مطالعه ای دربارش نداشتم. هر روز تحقیقاتم رو دربارش بیشتر می‌کردم و برام جالب تر بود که حالا فکر کنید این وسط گفتم بیام و این رو با زبان برنامه‌نویسی rust هم مقایسه کنم. قشنگ به مرز دیوانگی داشتم میرسیدم که قبلی ها کم بود حالا باید بین rust و go بیام ببینم کدوم رو انتخاب کنم برای یادگیری. از طرفی هم تمایل داشتم که هر دو رو یاد بگیرم اما خب به جای اینکه در یکی از این زبان ها بتونم به سطح عالی برسم در جفتشون به یک سطح متوسطی شاید میرسیدم.

با توجه به تمام مزیت‌ها و معایبی که زبان‌های برنامه‌نویسی سمت سرور قبلی داشتند اما خیلی علاقه‌مند شده بودم به یادگیری زبان برنامه نویسی Go و یا rust . جست‌و‌جو های زیادی با این کلمات انجام دادم:
go vs rust
go or rust for server side
witch one is better for server side go or rust

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

در همین مطالعات متوجه شدم هم rust فریم‌ورک‌هایی برای کدنویسی وب داره و هم go اما هدف rust بیشتر نوشتن برنامه های سیستمی بود و هدف go بطور کاملا واضحی برنامه نویسی سمت سرور بود. نه اینکه با rust نشه برای وب برنامه نویسی کرد و یا با go نشه برای سیستم. نه با هر دو میشد این کارها رو انجام داد اما خب کدوم بهتر بود برای اینکار . چه زبانی برای برنامه نویسی سمت سرور یک گزینه عالی می تونست باشه ؟! و طبق بررسی و جست‌و‌جو هایی که داشتم و مشورت با برنامه‌نویسان سمت back-end برای شخصی مثل من که می خوام تازه شروع کنم برای فعالیت در این حوزه go یک انتخاب عالی بود. عنوان با نوشته ها فقط در جمع بندی می خونه 🙂 اما خب می خواستم شما هم با این مسیر تا رسیدن به این زبان آشنا بشید و بدونید چه سردرگمی سختی هست. و صد البته که هدفم این نیست که بگم go بهترین هست و مثلا spring و یا node و … این ها مناسب نیست نه . هر کدوم از این زبان ها در جایی بهترین گزینه هستند. که خب این بسته به شرایط و پروژه ای که می خواییم انجام بدیم و خیلی فاکتورهای دیگه داره. اما انتخاب من go بود 🙂 حالا مزیت ها و معایب این زبان برنامه نویسی رو باهاتون به اشتراک میذارم:

مزایای زبان برنامه نویسی Go :

  • به شدت این زبان برنامه‌نویسی ساده هست. این سادگی به این معنی نیست که قدرت کمی داره. نه ! به این معنی هست وقت برنامه‌نویس این زبان جای اینکه برای نوشتن کد بشه و یا syntax و … صرف نوشتن الگوریتم های بهینه تر میشه !!!
  • زبان برنامه نویسی Go یک زبان برنامه‌نویسی cross-platform و کامپایل شدنی هست و این یعنی سرعت بالا نسبت به java و یا php و python.
  • فریم ورک های متنوع و قدرت مند برای برنامه نویسی سمت وب
  • جامعه کاربری فعال و زیاد (خیلی مهمه این موضوع)
  • یک چیز دیگه زبان برنامه نویسی Go شی‌گرا نیست اما خب نگران نباشید پکیج های غنی ای که در این زبان برنامه‌نویسی تعبیه شده ویژگی های OOP رو در اختیارتون قرار میده اما خب اونقدرها هم بد نیست و در این حالت یک ویژگی حتی می تونه محسوب بشه.
  • از پردازنده‌های چند هسته‌ای پشتیبانی میکنه و Goroutine ها کارایی فوق العاده رو در اختیار برنامه‌نویسش قرار میده.
  • این زبان برای Concurrency عالیه و برای همین کار بهینه شده

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

خلاصه که بعد از این همه این موارد انتخاب من go بودش و کاملا از این انتخاب راضی هستم :)‌

انتخاب شما چه زبان برنامه‌نویسی هستش ؟! و چرا ؟!

ارسال پاسخ