زبان برنامهنویسی Go یا همان گولنگ از زمان تولدش در سال ۲۰۰۹ تا به الان، از قدرتمندترین زبانهای برنامهنویسی دنیا بوده که بهوسیلهی مهندسان کمپانی گوگل توسعه داده شده و این روزها (سال ۲۰۲۳) دوباره در میان ۱۰ زبان برنامهنویسی محبوب دنیا قرار گرفته است.
ویژگیهای همروندی در توسعه و بازیافت حافظه در این زبان برنامهنویسی به محبوبیت زیاد آن کمک کرده، تا جاییکه امروزه بسیاری از مدیران فنی و توسعهدهندگان برای توسعهی سرویسهای مختلف بهعنوان اولین گزینه به سراغ این زبان میروند. ما در این مقاله سعی میکنیم تا شما را با تاریخچه و ویژگیهای زبان برنامهنویسی Go آشنا کنیم، با ما همراه باشید.
تاریخچه زبان برنامهنویسی Go
داستان تولد گولنگ به کمپانی گوگل و سه مهندس کامپیوتر به نامهای کن تامپسون (Ken Thompson)، راب پایک (Rob Pike) و رابرت گریسمر (Robert Griesemer) بازمیگردد. زمانی که آنها از پیچیدگیهای کامپایل و اجرای کد در زبان سیپلاسپلاس (++C) خسته شده بودند، در سپتامبر ۲۰۰۷ طراحی زبان برنامهنویسی جدیدی را شروع کردند. تلاشهای این سه مهندس، دو سال به طول انجامید و در نهایت در سال ۲۰۰۹، زبان Go بهشکل یک پروژه متنباز عرضه شد و سه سال بعد یعنی در سال ۲۰۱۲، نسخهی شماره یک این زبان منتشر شد.
هدف از ساخت زبان گولنگ
هدف توسعهدهندگان گو، طراحی زبانی بود که به اندازهی زبانهای مفسری، برنامهنویسی با آن آسان باشد و در عینحال، به اندازه زبانهای کامپایلری، امن و بهینه پیش برود. این سه مهندس، برای رسیدن به اهداف خود، سادهترین راه یعنی بهبود ابزارهای موجود را انتخاب کردند. به همین علت، سینتکس زبان برنامهنویسی Go به زبان برنامهنویسی سی (C) شباهت بسیار زیادی دارد، با این حال Go در پیادهسازی قابلیت همروندی نیز از زبان لیمبو (Limbo) الهام میگیرد. در واقع طراحان این زبان قصد داشتند که بهترین ویژگیهای سایر زبانها را در زبان برنامهنویسی جدید خودشان پیاده کرده و کاربردیترین زبان ممکن را در اختیار توسعهدهنگان قرار دهند.
گو یا گولنگ! کدام درستتر است؟
از زبان برنامهنویسی Go در بیشتر مواقع با نام گولنگ (Golang) هم یاد میشود. زمانیکه قرار بود وبسایتی برای این پروژه تاسیس شود، دامنه go.org در دسترس نبود. بنابراین توسعهدهندگان تصمیم گرفتند تا دامنهی golang.org را ثبت کنند. Golang، ترکیبی از واژههای Go و Language است. بنابراین نام رسمی این زبان برنامهنویسی، همان Go است اما از گولنگ هم برای اشاره به آن استفاده میشود.
چه چیزی گولنگ را از زبانهای برنامهنویسی مشابه متمایز میکند؟
بسیاری از ویژگیهای Go این زبان برنامهنویسی را با سایر زبانهای رایج و مشابه مانند پایتون و نود جی اس متمایز میکند. در ادامه، فهرستی از مهمترین نقاط قوت زبان گو را مشاهده خواهید کرد. علت محبوبیت روزافزون گولنگ، وجود همین ویژگیها و نقاط قوت است.
۱. سادگی در نوشتن کد
کد نوشتن با زبان گو بسیار ساده و به دور از پیچیدگیهای موجود در بعضی از زبانهای برنامهنویسی است. فرمت سینتکس گو در همهی این سالها تغییر نکرده و همین موضوع باعث شده تا کدهای نوشتهشده با نسخههای قدیمی، بهراحتی با نسخههای جدید زبان Go سازگار شوند.
۲. سرعت بالای کامپایل
گولنگ یک زبان کامپایلری است، به این معنا که کد نوشتهشده بهواسطهی برنامهنویس، بهطور مستقیم به زبان قابل فهم برای پردازنده تبدیل میشود. در زبانهایی مانند جاوا، کدها ابتدا به یک زبان میانی ترجمه میشوند و سپس آن زبان میانی، به زبان ماشین تغییر میکند. اجرای سریع کدها در پروژههای بزرگ، مساله مهمی است و به همین علت برای ساخت برنامهها و سیستمهایی که به عملکرد بالا و مدیریت بهینه حافظه نیاز دارند، از زبان گو بهجای زبانهایی مانند Node JS استفاده میشود.
۳. ساده بودن یادگیری گولنگ
بسیاری از مدرسان برنامهنویسی، همواره به مبتدیان این حوزه توصیه میکنند تا در شروع کار به سراغ Go بروند. چراکه سینتکس زبان گو بسیار ساده است و افراد مبتدی بهراحتی سازوکار آن را درک میکنند. توسعهدهندگان حرفهای که پیش از این با سینتکس زبانهایی مانند سی و جاوا آشنا شدهاند، بهسادگی میتوانند سینتکس زبان گو را درک کنند و آن را یاد بگیرند.
۴. وجود قابلیت بازیافت حافظه (Garbage Collection)
پشتیبانی از این ویژگی باعث میشود تا توسعهدهنده بتواند برنامههای بهینه و با سرعت اجرای بالا را طراحی کند و هیچگونه نگرانی بابت اشغال شدن حافظه نداشته باشد. گولنگ بهطور اتوماتیک، دسترسی به حافظه را مدیریت میکند.
۵. وجود رابط برنامهنویسی نرمافزاری برای پیادهسازی سرویسهای شبکه
وجود این قابلیت در زبان گو، آن را به یک انتخاب ایدهآل برای ساخت محصولاتی مانند سرور ابری و سایر سرویسهای مبتنی بر شبکه تبدیل کرده است و امروزه بسیاری از مدیران فنی و توسعهدهندگان با استفاده از این قابلیت بینظیر سرویسها پرکاربرد و محبوبی را پیادهسازی میکنند.
۶. قابلیت همروندی
قابلیت همروندی یا همان Concurrency این امکان را برای Go فراهم میکند تا بهوسیله آن بتوان چندین وظیفه را در بازههای زمانی که با یکدیگر همپوشانی دارند، مدیریت کرد. این ویژگی بهشکل ذاتی در زبان گو وجود دارد و قابلیت برنامهنویسی چند نخی (Multithreading)، برنامهنویسی چند پردازشی (Multithreading) و برنامهنویسی ناهمگام (Asynchronous) را در اختیار توسعهدهنده قرار میدهد. قابلیت همروندی زبان گو، باعث میشود تا در بسیاری از موارد برای توسعهی بکاند (Backend)، به زبان پایتون ترجیح داده شود.
۷. وجود جامعه بزرگی از توسعهدهندگان
در حال حاضر زبان گو با محبوبیت روزافزونی روبهرو است و همین امر باعث شده تا جامعهی بزرگی از توسعهدهندگان، به آموزش Golang و برنامهنویسی با آن مشغول باشند. وجود این جامعهی بزرگ، باعث میشود تا یادگیری این زبان و رفع مشکلاتی که در روند توسعه به وجود میآیند، نسبت به سایر زبانهای برنامهنویسی بسیار آسانتر باشد.
مهمترین کاربردهای GoLang
ویژگیهای گولنگ باعثشده تا بتوان از آن برای توسعهی بسیاری از پروژهها استفاده کرد. در ادامه با بعضی از مهمترین کاربردهای زبان برنامه نویسی Go آشنا خواهید شد.
توسعه به شیوه Cloud Native
وجود قابلیتهای همروندی و کتابخانههای قدرتمند شبکه، در کنار قابل حمل بودن این زبان باعث شده تا گولنگ برای توسعهی اپلیکیشنهای Cloud Native یک انتخاب ایدهآل باشد. اپلیکیشنهای Cloud Native برای کار کردن از زیرساختهای ابری استفاده میکنند. پلتفرمهای Cloud Native معروفی مانند داکر (Docker) و کوبرنتیز (Kubernetes) که به ترتیب برای اجرای برنامه در کانتینرها (Container) و مدیریت کانتیرها استفاده میشوند، به کمک زبان گو ساخته شدهاند.
پیادهسازی خدمات مبتنی بر وب و شبکه
در خدمات شبکه، همروندی یک ویژگی حیاتی محسوب میشود و زبان گو این قابلیت را در خود بهطور ذاتی دارد. به همین علت، این زبان یک انتخاب ایدهآل برای پیادهسازی وب سرورها، وب اپلیکیشنها، سرویسهای ابری و سرویسهای ارتباطی است.
توسعه ابزارهای Standalone
Go یک زبان کامپایلری است، یعنی کدهای آن به فایلهای باینری ترجمه میشوند و این فایلها، قابلیت اجرا در هر پلتفرمی را دارند. این ویژگی باعث میشود تا این زبان، یک انتخاب مناسب برای ساخت ابزارهایی که برای اجرا، به سرویسهای یک سیستمعامل خاص نیاز ندارند، باشد. بهترین مثال در این زمینه، برنامه Teleport است که به کمک آن میتوان از طریق پروتکل SSH به سرور دسترسی داشت.
گولنگ، زبان محبوب کمپانیهای بزرگ
بسیاری از کمپانیهای بزرگ، برای پیشبرد فعالیتها و توسعه محصولات خود از زبان گو استفاده میکنند که در ادامه برخی از مشهورترین آنها را نام میبریم.
- اوبر: شرکت اوبر که به ارایهی خدمات تاکسی آنلاین مشغول است، از یک موتور تحلیل بلادرنگ بهنام AresDB استفاده میکند که بهکمک زبان گو ساخته شده است.
- گوگل: گوگل که خودش سازنده زبان Go است، سرویسهایی مانند ارایهدهندهی خدمات ابری فایربیس (Firebase) را با زبان گو طراحی کرده است.
- پی پال: این سرویس پرداخت بینالمللی، در ابتدا پلتفرم پرداخت خود را با زبان سیپلاسپلاس ساخته بود، اما پیچیدگی این زبان باعث شد تا پلتفرم خود را بهکمک زبان گو، متحول کند.
- دراپباکس: زمانیکه دراپباکس بهدنبال بهبود قابلیت مقیاسپذیری بود، عملکردهای حیاتی محصول خود را در سمت سرور از پایتون به گولنگ بازطراحی کرد. دلیل این مساله، پشتیبانی بهتر زبان گو از همروندی و اجرای سریع برنامههای نوشتهشده با این زبان بود.
یادگیری گولنگ را از کجا شروع کنیم؟
محبوبیت زیاد این زبان برنامهنویسی باعث شده تا امروزه منابع مختلف و متعدد برای یادگیری Go وجود داشته باشند، اما بهنظر میرسد که بهترین مرجع برای فراگیری گولنگ وبسایت رسمی زبان برنامهنویسی Go باشد. اگر شما با مفاهیم اولیهی برنامهنویسی آشنا باشید و سطح خوبی از زبان انگلیسی داشته باشید، میتوانید بهطور خودآموز و با استفاده از مستندات وبسایت گولنگ و سایر منابع رایگان اما معتبر، بهسادگی سازوکار این زبان برنامهنویسی را بشناسید.