Go (همچنین به آن GoLang هم میگویند)، یک زبان برنامهنویسی procedural و statically-typed است که سینتکسی (syntax) مشابه زبان C دارد. این زبان قابلیتهای standard library, garbage collection و dynamic-typing capability را در اختیار شما قرار میدهد.
همچنین این زبان ویژگیهای key-value maps, length arrays را به صورت built-in همراه خود دارد. گو زبانی بسیار قدرتمند، کارآمد و مقیاسپذیر برای ساخت برنامههای تحت وب،web API، میکروسرویسها و دیگر سرویسهای توزیع شده است. این زبان در آمریکا به سرعت رشد کرده است و به عنوان زبانهای پردرآمد شناخته میشود.
سیر تکامل Golang:
این زبان توسط Robert Griesemer, Rob Pike و Ken Thompson در سال ۲۰۰۷ در گوگل طراحی شده است که در November ۲۰۰۹ به عنوان یک زبان برنامهنویسی متنباز راه اندازی شد. هدف اصلی طراحی زبان Golang، حل مشکلهای دیگر زبانهای برنامهنویسی و حفظ ویژگیهای مفید آنها بود. نسخه ۱٫۰ این زبان در March ۲۰۱۲ منتشر شد و دیگر نسخه این زبان در سال ۲۰۱۸ با نسخه ۱٫۱۱٫۱ در دسترس عموم قرار گرفت، اما حالا این زبان با نسخه ۱٫۱۴٫۶ در وبسایت رسمی قرار گرفته است.
چرا Golang؟
هدف اصلی از طراحی Golang از بین بردن مشکلهای زبانهای موجود بود. بنابراین بیایید مشکلهایی که در زبانهای Python, Java, C/C++ وجود دارند را بررسی کنیم:
Python: استفاده از این زبان بسیار آسان است، اما عملکرد کندی دارد و دلیل آن هم مفسری بودن این زبان است.
Java: در نوع خود سیستم پیچیدهای دارد و با ویژگیهای اضافی و ثانویه خود باعث پیچیدگی بیشتر و کندتر شدن میشود.
C/C++: این زبانها هم پیچیدگیهای خود را دارند و در کامپایل شدن، کند عمل میکنند. همچنین طراحی این زبانها به گونهای است که در فضای کم کامپیوتر هم کارا باشد و به همین دلیل توسعهدهنده آن تصمیم گرفت با استفاده از کمترین فضا کامپایلر را بهینه کند و در نتیجه زمان کامپایل افزایش پیدا کرد.
در آخر باید بگوییم، همه این زبانها زمانی توسعه یافتند که استفاده از قابلیت multi-threading در برنامهها، بسیار مرسوم نبود. بنابراین نتیجه میگیریم این زبانها برای برنامهها highly scalable، concurrent و parallelها کارایی چندانی ندارند.
ویژگیهای Golang:
زبانی از نوع Strong و Static: زبان Go از نوع زبانهای Strong و Static است. Strong به این معنی که وقتی شما یک متغیر را با نوع دادهای مانند int تعریف کردید، این متغیر در تمام برنامه به همین صورت است و Static هم یعنی، تمام متغیرها در زمان کامپایل باید تعریف شده باشند.
جامعه کاربری عالی: Golang جامعه کاربری بسیار خوبی برای پیگیری و حل مشکلها دارد.
Compilations سریع: این زبان فقط شامل پکیجهایی میشود که مستقیما به کد import شده باشند.
قابلیت Garbage collection: این زبان با دارا بودن قابلیت Garbage collection خودکار و سریع ارائه شده است.
همزمانی (Concurrency): زبان Go بهصورت built-in، از قابلیت همزمانی پشتیبانی میکند. با استفاده از Routines و Chanellsهای زبان Go به آسانی و بهطور مفید میتوانید از قابلیت همزمانی در این زبان بهره ببرید.
شروع برنامهنویسی با Golang:
از آنجایی که زبان Go، بسیار شبیه زبانهای برنامهنویسی متداول است، یادگیری این زبان راحت و آسان است. برای نوشتن برنامههایی با زبان Go میتوانید از ویرایشگرهای متنی مانند Notepad++، gedit و … استفاده کنید و سپس فایل برنامه خود را با پسوند .go یا .GO ذخیره کنید.
همچنین IDEهای آنلاینی هم مانند repl.it، Go Playground در این راه میتوانند به کمک شما بیایند که بدون نصب GO، برنامههای نوشته شده به این زبان را اجرا کنید. برای نصب Go در رایانههای شخصی و یا لپتاپ، به دو نرمافزار ویرایشگر متن نیاز هست، که در یکی برنامه خود را بنویسید و در دیگری آن را کامپایل کنید. ویرایشگر متنی شما میتواند: Brief, vm, vi, notepad, notepad++ و یا هر ویرایشگر متنی دیگر باشد.
برای مثال: یک برنامه که Hello, World! را بر روی صفحه چاپ کند به شکل زیر است.
package main
import “fmt”
func main() {
// prints Hello, World!
fmt.Println(“Hello, World!”)
}
توضیحهایی در رابطه با برنامه بالا:
خط اول: این پکیج اصلی برنامه است که محتوای اصلی برنامه در آن قرار دارد و نوشتن آن اجباری است زیرا شروع اجرای برنامه از این قسمت انجام میشود.
خط دوم: در این خط “fmt” را وارد برنامه میکنیم که یک دستور preprocessor محسوب میشود و به کامپایلر میگوید که فایلهای موجود در پکیج را در برنامه وارد کند.
خط سوم: main function، آغاز اجرای برنامه محسوب میشود.
خط چهار: fmt.Println()، یک تابع از کتابخانههای استاندارد Go است که میتواند به عنوان خروجی، چیزی را روی صفحه چاپ کند. در پکیج fmt، متد Println برای نمایش خروجی بر روی صفحه استفاده میشود.
کامنت: کامنت برای توضیح بخشی از کد، مورد استفاده قرار میگیرد و در زبانهای Java, C, C++ به طور یکسانی مورد استفاده قرار میگیرد. . کامپایلرها کامنت را نادیده میگیرند و آنها را اجرا نمیکنند. کامنتها میتوانند از یک خط یا چند خط تشکیل شده باشند.
کامنت یک خطی:
- کامنت کردن یک خط در برنامه
- کامنت چند خطی
- کامنت کردن چند خط از برنامه
مزایای استفاده از زبان Golang:
سرعت بالا: زبان Go از ماشین مجازی استفاده نمیکند و میتواند مستقیما به کدهای ماشین تبدیل شود و با کدهای assembly بسیار سریع میشود.
یادگیری آسان: تغییرهای جزئی در سینتکس آن وجود دارد و بهطور کلی شبیه به سایرین است.
همزمانی (Concurrency): این قابلیت اجازه میدهد چندین فرایند بهطور همزمان و موثر اجرا شود.
متنباز: این زبان رایگان و متنباز است. همچنین جامعهای وجود دارد که برای کمک به شما آماده هستند.
قابلیت Garbage collection: این یکی از قابلیتهای کلیدی این زبان است. به کمک این قابلیت میتوانید مدیریت بهتری بر روی تخصیص حافظه (memory allocation) داشته باشید و بهصورت وحشتناکی latency برنامه را کاهش میدهد.
ابزار تست داخلی: Golang دارای یک ابزار تست داخلی است که به آسانتر شدن خطایابی، کمک میکند.
معایب زبان Golang:
- پشتیبانی برای موارد عمومی ندارد، حتی اگر خیلی از افراد روی آن مسئله بحث کرده باشند.
- پکیجهای توزیع شده این زبان کاملا مفید هستند ولی بهصورت کلی شیگرا نیست.
- عدم وجود برخی از کتابخانهها، مثلا UI toolkit