اخبارمقایسه و انتخاب

مقدمه ای بر زبان Go – زبانی ساده برای نیازهای امروز

چند روز پیش یکی از دوستان سوالی از بنده توی اسکایپ پرسید  که برای یک برنامه تحت وب که در ثانیه درخواستهای بسیار زیادی را باید به سرعت جواب بدهد، چه زبان برنامه سازی را باید انتخاب کنم ؟ ابتدا از خود سوال کمی تعجب کردم چون بیشتر از خود زبان، مواردی مثل وب سرور، کتابخانه ها و نحوه کدنویسی را در این امر موثر می دانستم . از بین زبانهایی هم که اخیراً آشنا شده بودم و تا حدودی با آن کار کرده بودم و برای کارهای حرفه ای مناسب می دانستم ، اسکالا به ذهنم آمد اما کاری پیش آمد و نتوانستم همان لحظه  به ایشان جواب بدهم.

بعد از چند ساعت که خواستم عذرخواهی کنم و جوابی که آماده کرده بودم را بدهم دیدم خود این دوست عزیز پیام داد که با تحقیقاتی که کرده زبان GO‌ که مبدع آن گوگل است را برای برنامه نویسی این برنامه تحت وب انتخاب کرده است و موارد زیر را برای این امر برشمرد :

  • سایت parse.com بعد از تعویض زبان برنامه نویسی از روبی به Go حدود ۱.۵ میلیون اتصال همزمان را به ازای یک سیستم توانسته اند پاسخ دهند.
  • سرویس dl.google.com با این زبان نوشته شده است .
  • خود زبان امکانات وب سرور را دارد و مانند Node.js نیاز به وب سرور جداگانه ای ندارد .

بعد از اینکه این موارد را دیدم کنجکاو شدم که راجع به این زبان جدید که چند سالی بیشتر از عرضه آن نمی گذرد، تحقیق کنم. با چند تا سرچ مختصر متوجه شدم که این زبان توسط سه نفر از توسعه دهندگان گوگل و برای ساده سازی فرآیند تولید و نگهداشت برنامه ها بخصوص با هدف ایجاد برنامه های مقیاس پذیر و برای حجم پردازش بالا طراحی شده است و ساختار گرامری ساده و شبیه به زبان C‌ دارد که یادگیری آنرا برای عموم بسیار ساده می کند.

در مقایسه ای که بین این زبان و اسکالا انجام شده بود، زبان GO به دلیل خوانایی بالاتر و سادگی توسعه و نگهداشت ، به زبان پیچیده اما حرفه ای اسکالا ترجیح داده شده بود . در مقاله دیگری که بادقت آنرا مطالعه کردم، موارد زیر جزء نقاط قوت این زبان برشمرده شده بود :

  • سرعت تولید و عرضه : این زبان نیاز به تنظیمات خاصی روی سرور ندارد و گرامر آن هم بسیار شبیه زبان C‌ است و ساختار ساده ای دارد که این دو مورد باعث می شود هم سرعت یادگیری و تولید آن بالا رود و هم عرضه و تحویل آن روی سرورها عملی ساده و بدون دردسر باشد. خروجی برنامه های GO یک فایل اجرایی است که کافیست همان یک فایل را روی سرور کپی کرده و اجرا کنید و تمام. نیاز به وب سرور هم نداریم و خود این برنامه با کتابخانه GO که روی سیستم نصب شده است، تمام اتصالات و درخواست ها را مدیریت می کند.
  • مستقل از بستر بودن : این زبان هم وابسته به سیستم عامل نیست وبرای تمام سیستم عامل ها، کامپایلر و اجرا کننده آن موجود است .
  • محافظت از کدهای برنامه : در زبانهایی مثل روبی ، پی اچ پی ، پایتون و … برای اجرای کدها شما مجبور به گذاشتن خود منبع و کد برنامه ها روی سرور هستید اما در زبان GO کدها کامپایل می شوند و تنها فایل اجرایی خروجی به سرور منتقل می شود که چون به زبان سخت افزار ماشین ترجمه می شود، رمزگشایی آن تقریباً محال است و این خود امنیت کدهای شما در سرورهای اشتراکی و ابری بسیار بالا می برد.
  • پردازش موازی و چندنخی بودن : این زبان به طور خودکار ابزارها و کتابخانه هایی دارد که کدهای شما را به صورت همزمان اجرا و مدیریت می کند و مدیریت رشته های مختلف از یک برنامه را هم خود برعهده می گیرد. بنابراین برای برنامه هایی که نیاز به پردازش همزمان و استفاده حداکثری از منابع سرور را دارند، بسیار بهینه است .

در هر صورت، برای بنده این سوال ساده به یک مکاشفه جدید از دنیای فعلی توسعه نرم افزار منجر شد و اینکه این زبان را هم برای توسعه برنامه های با نیازهای خاص در نظر داشته باشم . برای آشنایی بیشتر با این زبان می توانید از این مقاله جمع و جور فارسی هم استفاده کنید . منابع و کتابهای رایگان زبان GO‌ را هم در گیت می توانید بیابید.

برای اینکه با حال و هوای این زبان تا حدودی آشنا شوید قطعه کد زیر را مشاهده کنید :

[cc lang=”actionscript” escaped=”true” nowrap=”0″]

package main

import “fmt”

# The (int, int) in this function signature shows that the function returns 2 ints.

func vals() (int, int) {
return 3, 7
}

func main() {

#Here we use the 2 different return values from the call with multiple assignment.

a, b := vals()
fmt.Println(a)
fmt.Println(b)

#If you only want a subset of the returned values, use the blank identifier _.

_, c := vals()
fmt.Println(c)
}

[/cc]

خروجی این کد، از قرار زیر است :

Go

 

مجتبی بنائی

دانشجوی دکترای نرم‌افزار دانشگاه تهران (yun.ir/smbanaie)، مدرس دانشگاه و فعال در حوزه توسعه نرم‌افزار و مهندسی داده که تمرکز کاری خود را در چند سال اخیر بر روی مطالعه و تحقیق در حوزه کلان‌داده و زیرساخت‌های پردازش داده و تولید محتوای تخصصی و کاربردی به زبان فارسی و انتشار آنها در سایت مهندسی داده گذاشته است. مدیریت پروژه‌های نرم‌افزاری و طراحی سامانه‌های مقیاس‌پذیر اطلاعاتی از دیگر فعالیتهای صورت گرفته ایشان در چند سال گذشته است.

۲ دیدگاه

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

جای خالی در معادله زیر را با کی برد انگلیسی وارد کنید : * Time limit is exhausted. Please reload CAPTCHA.

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

دکمه بازگشت به بالا