زبان گو (Go) در سال ۲۰۰۷ (به شمسی: ۱۳۸۶) توسط «شرکت گوگل» با هدف افزایش بهرهوری برنامهنویسی در محیط چندهستهای، رایانههای شبکهای و کدبیسهای بزرگ طراحی شد [به نقل از ویکیپدیا] و سپس به عنوان یک زبان کامپایلری و تایپ استاتیک در نوامبر سال ۲۰۰۹ بهصورت عمومی با هدف کامپایل کارآمد ، اجرای کارآمد و سهولت برنامهنویسی عرضه شد. بسیاری از اعضای تیم طراحی و توسعه زبان گو [Ken Thompson, Rob Pike, Robert Griesemer] سالها تجربه در زمینه تحقیق و توسعه زبان برنامهنویسی دارند.
تاریخچه زبان گولنگ به سال ۲۰۰۷ میلادی برمیگردد.وقتی که سه برنامهنویس تصمیم گرفتند یک زبان برنامهنویسی جدید با ترکیبی از ویژگیهای مختلف را توسعه دهند. هدف آنها این بود که زبانی سریع، ساده، قابل استفاده و مؤثر برای توسعه نرمافزارهای همزمان و مقیاسپذیر بسازند.
گولنگ از زبانهایی چون pascal، c و oberon الهام گرفته است. هدف توسعه دهندگان گولنگ سادهتر کردن فرایند طراحی و ساخت نرم افزارهای مقایسپذیر بوده. آنها در طراحی گولنگ تلاش کردند تا عملکرد زبان را بهبود بخشند و یک سینتکس ساده و خوانا ارائه دهند.
از آن زمان تا به امروز، گولنگ رشد و پیشرفت چشمگیری کرده است و استفاده از آن در صنعت نرمافزار روز به روز بیشتر میشود. شرکتهای بزرگی مانند Google، Dropbox، YouTube و Docker از گولنگ به عنوان یکی از زبانهای اصلی خود استفاده میکنند. همچنین جامعه برنامهنویسی گولنگ به طور فزایندهای در حال رشد است و ابزارها و کتابخانههای زیادی با استقاده از گولنگ توسعه داده شده است.
زبان گو دارای یک سری ویژگیهای منحصر به فرد میباشد و برخی از ویژگیهایش از سایر زبانها الهام گرفته شده است :
- پشتیبانی از برنامهنویسی همزمانی بصورت Built-in
- گوروتین ها امکان اجرای همزمانی توابع را فراهم میکنند و همچنین گوروتینها واقعا خیلی سبک هستند به طوری که شما میتوانید هزاران گوروتین را همزمان در سخت افزارهای مدرن بدون هیچ مشکل عملکردی اجرا کنید. سایز اولیه یک گروتین بین 2 تا 3 کیلوبایت است، در صورتی که سایز اولیه یک ترد معمولا از 1 تا 2 مگابایت شروع می شود. این حافظه از استک تخصیص داده می شود.
- کانال ها برپایه مدل CSP میباشد که امکان همگام سازی دادهها بین گوروتینها را فراهم میکند.
- پشتیبانی از تایپهای map و slice
- امکان پیاده سازی پلی مورفیسم با استفاده از اینترفیس ها
- پوینترها
- کلوژر توابع (یک تابع معمولی که داخل یک تابع دیگر به عنوان بازگشت تعریف میشود)
- متدها
- امکان defer برای تعویق فراخوانی یک تابع
- قابلیت جاسازی تایپها
- ایمنی حافظه در زبان گو
- قابلیت زباله جمع کن خودکار
- سازگاری کامل با انواع پلتفرمها نظیر [linux, windows, mac, AIX, android, freeBSD] جهت توسعه و کامپایل
- امکان Cross-compile با این امکان میتوانید در هر پلتفرمی برای سایر پلتفرمها کامپایل کنید
- پشتیبانی از جنریک یا تایپ پارامتر (از نسخه ۱.۱۸)
- تست نویسی آسان
- اینترفیس و رفلکشن
- زبان گو برخلاف زبانهایی نظیر c, cpp یا java نیاز به نقطه ویرگول (Semicolons) ندارد و به نسبت زبانهایی که معرفی کردیم پرانتز کمتری استفاده میکند و همچنین ظاهر سینتکس گو خیلی خواناتر و راحتتر میباشد.
علاوه بر ویژگیهایی که در بالا معرفی کردیم یک سری نکات برجسته در خصوص زبان گو وجود دارد که به شرح زیر میباشند:
سینتکس این زبان به گونهای ساده و تمیز طراحی شده که فرآیند یادگیری آن را آسانتر میکند و از همه مهمتر توسعه پروژههای مقیاسپذیر با زبان گو به دلیل سادگی و آشکار بودن مفاهیم خیلی سریعتر صورت میگیرد.
زبان گو دارای تعداد زیادی پکیجهای استاندارد و کاربردی جهت توسعه میباشد که همه این پکیجها در انواع پلتفرمها جهت توسعه قابل استفاده است.
زبان گو دارای یک جامعه بزرگ از توسعه دهندگان و انجمنهای فعال میباشد که خیلی سریع میتوانید به پاسخ سوالات خود برسید.
برنامه نویسهای زبان گو را گوفر صدا میزنند. گوفر نام یک نوع موش و همچنین mascot گولنگ است.