چرا باید از زبان Go استفاده کنیم؟
من عاشق زبان برنامهنویسی گو هستم. در طی سالهای اخیر شاهد افزایش علاقه برنامه نویسان به زبان Go یا GoLang بودهایم. شاید آموختن یک زبان جدید برای هیچ توسعهدهندهای موضوع چندان خوشایندی نباشد.
ما در این مقاله قصد داریم بگیم که چرا باید شروع به یادگیری زبان GoLang یا Go بکنید. قصد نداریم یک پروژهHello World را به شما آموزش دهیم، چرا که آموزش در این خصوص بسیار زیاد است.
چگونگی پیدایش زبان go
در سال 2007 دوتن از سرشناسان دنیای برنامه نویسی به نام های Rob Pike و Ken Thompson ایده ساخت چند زبان برنامه نویسی جدید را با فرد دیگری (Robert Griesemer) که در شرکت گوگل کار میکرد مطرح کردند یکی از این زبان ها go میباشد.
این میتواند یک انگیزه ای باشد تا شما هم حتی اگر در مشهد هستین به فکر پیدایش یک زبان جدید باشید.
انها برنامه نویسی زبان go را شروع کردند و در این مدت افراد دیگری از شرکت گوگل هم به این تیم ملحق شدند در نوامبر سال 2009، اولین نسخه آزمایشی زبان با پشتیبانی گوگل به صورت متن باز به عموم برنامه نویسان عرضه شد. از آن زمان تا کنون میلیون ها برنامه نویسان داوطلب در توسعه این پروژه شرکت داشته اند.
در زیر لیست تعدادی از شرکتها و سایت های استفاده کننده از این زبان را میبینید:
- YouTube
- BBC
- Canonical
- Nokia Siemens
- Bitly
- Heroku
- CloudFlare
- SmugMug
- Feedbooks
- Iron.io
- Moovweb
- AirBrake
- Swirl.us
- SoundCloud
Go دارای Goroutine است
سازندگان سختافزار هر چه در توان دارند، هستههای بیشتری به پردازنده اضافه میکنند تا عملکرد آنها را افزایش دهند. همه مراکز داده (Data Centers) بر مبنای این پردازندهها عمل میکنند و میتوانیم منتظر افزایش تعداد هستهها در سالهای آتی نیز باشیم. علاوه بر آن اپلیکیشنهای امروزی از میکروسرویسهای چندگانه برای حفظ اتصالهای پایگاه داده، صفهای پیام و نگهداری کش استفاده میکنند. بنابراین نرمافزاری که توسعه میدهیم و زبانهای برنامهنویسی میبایست از “همزمانی” (Concurrency) پشتیبانی کنند و قابل مقیاسپذیری با افزایش تعداد هستههای پردازندهها باشند.
اما اغلب زبانهای مدرن برنامهنویسی مانند جاوا، پایتون و غیره در محیط تک نخی دهه 90 ایجاد شدهاند. اغلب این زبانها از چند نخی پشتیبانی میکنند؛ اما مسئله اصلی به اجرای همزمان، «قفل نخ بندی» (threading-locking)، شرایط رقابت و بنبستها مربوط است. این چیزها امکان ایجاد اپلیکیشنهای چند نخی در زبانها را فراهم میسازد.
به عنوان نمونه ایجاد یک نخ جدید در جاوا چندان از نظر حافظه بهینه نیست. از آن جا که هر نخ نزدیک به 1 مگابایت حافظه هیپ مصرف میکند، اگر در نهایت هزاران نخ ایجاد کنید، فشار زیادی روی حافظه هیپ وارد میآید و موجب از کار افتادن سیستم به دلیل کمبود حافظه میشود. ضمناً اگر بخواهید بین دو یا چند نخ ارتباط برقرار کنید، کار دشواری خواهد بود.
یکی از مزیتهای قابل توجه استفاده از C و ++C نسبت به زبانهای مدرنتر سطح بالا مانند جاوا/پایتون، عملکرد بالاتر آنها است، چون ++C/C کامپایل میشود و یک زبان تفسیری نیست و با امدن این زبان به جرعت میتوان گفت کسی از زبان c استفاده نمیکند.
اما در سوی دیگر C و ++C روی ماشینهای مجازی اجرا نمیشوند و بدین ترتیب یک مرحله از چرخه اجرا کم میشود و عملکرد ارتقا مییابد. در این حالت کد قابل خواندن از سوی انسان مستقیماً به کدهای باینری کامپایل میشود.
اما آزاد کردن و تخصیص متغیر در این زبانها بسیار دشوار است. با این حال اغلب زبانهای برنامهنویسی تخصیص و حذف اشیا را با استفاده از Garbage Collector و الگوریتمهای «شمارش ارجاع» (Reference Counting) مدیریت میکنند.
برچسب ها :
اطلاعات پست
- نویسنده : علی مشهدی
- دسته : برنامه نویسی
- تاریخ انتشار : 1398/02/03
- بازدید : 1132
- نظر : 0
- لینک کوتاه :