معرفی زبان برنامه نویسی GO

معرفی

GO یک زبان برنامه نویسی وابسته به روند است. این زبان در سال 2007 توسط Robert Griesemer ، Rob Pike و Ken Thompson در گوگل توسعه داده شد اما در سال 2009 به عنوان یک زبان برنامه نویسی open source منتشر شد. برنامه ها با استفاده از پکیج ها برای مدیریت کارا تر وابستگی ها اسمبل می شوند. این زبان همچنین از اتخاذ طرح های مشابه زبان های پویا پشتیبانی می کند. برای مثال استنتاج نوع(t:=0 یک تعریف صحیح از متغیر y با نوع float می باشد).

شروع برنامه نویسی با GO

IDE های آنلاین مختلفی نظیر Go Playground ، repl.it و غیره وجود دارد که می توان برنامه های GO را بدون نصب اجرا کرد.

برای نصب GO در PC ها یا لپ تاپ های خودمان ما نیاز به دو نرم افزار داریم: ویرایشگر متن و کامپایلر.

ویرایشگر متن: ویرایشگر متن به شما یک platform می دهد که می توانید در آن کد های خود را بنویسید. در ادامه لیستی از ویرایشگر های متن وجود دارد:

Windows notepad

OS Edit command

Brief

Epsilon

vi یا vm

Emacs

یافتن یک کامپایلر GO: توزیع GO با یک باینری قابل نصب برای FreeBSD (نسخه ی 8 و بالاتر منتشر شده است)، Linux ، Mac OS X (Snow Leopard و بالاتر) و سیستم عامل های ویندوز با 32-bit (386) و 64-bit (amd64) معماری پردازنده ی x86 همراه است.

درباره ی راهنمایی بیشتر درباره ی نصب لطفا نصب توزیع های GO را مطالعه کنید.

چرا زبان GO؟

چون زبان GO تلاشی برای ترکیب سادگی برنامه نویسی در زبان های پویا و تفسیری با بازدهی و امنیت زبان های کامپایلری و استاتیک است. این زبان همچنین قصد دارد تا مدرن و با پشتیبانی از شبکه و محاسبات چند هسته ای باشد.

مزیت Go نسبت به زبان های دیگر

GO قصد دارد که میزان تایپ کردن کلمات را کاهش دهد. در طول طراحی توسعه دهندگان تلاش کرده اند تا اختلاف ها و پیچیدگی ها را کاهش دهند.

هیچ اعلام قبلی و فایل های header وجود ندارد بنابراین همه چیز دقیقا یک بار تعریف می شود.

دشواری ها با استنتاج نوع ساده با استفاده از تعریف و مقداردهی اولیه سازنده=: ، کاهش یافته اند.

هیچ سلسله مراتب نوع وجود ندارد: نوع ها فقط وجود دارند و نیاز ندارند که روابط بین خود را اعلام کنند.

محدودیت های سخت افزاری

ما مشاهده کرده ایم که در یک دهه سخت افزار و فرایند پردازش با یک سرعت بسیار آهسته تغییر می کند. در سال 2004، P4 کلاکی با سرعت 3.0 GHz بود و حالا در سال 2018، Macbook pro کلاکی با سرعت Approx (2.3Ghz v 2.66Ghz) دارد. برای سرعت بخشیدن به عملکرد ما از پردازنده ی بیشتری استفاده می کنیم اما با استفاده از پردازنده ی بیشتر هزینه نیز افزایش می یابد و بنابراین ما از پردازنده های محدود استفاده می کنیم و با استفاده از پردازنده های محدود عملیات های سنگین خواهیم داشت . ترد ها در زبان های دیگر از حافظه ی زیادی استفاده می کنند و عملکرد سیستم را پایین می آورد از این رو برای غلبه بر چنین مشکلی golang طوری طراحی شده است که بجای استفاده از ترد ها از Goroutine استفاده می کند که مشابه ترد است اما از حافظه ی کمتری استفاده می کند.

برای مثال ترد ها 1MB حافظه استفاده می کنند درحالی که Goroutine، 2KB از حافظه را مصرف می کنند از این رو در زمان یکسان می توانیم میلیون ها goroutine را بایکدیگر شروع کنیم.

بنابراین نکته ی گفته شده باعث می شود که golang یک زبان قدرتمند باشند که همزمانی را مانند C++ و جاوا مدیریت می کند.

مزایا و معایب زبان GO

مزایا

1- انعطاف پذیری: این زبان ساده و مختصر است و خواندن آن آسان است.

2-همزمانی: این زبان امکان اجرای پردازش های چندگانه را به صورت همزمان و موثر می دهد.

3-خروجی سریع:زمان کامپایل این زبان بسیار سریع است.

4-کتابخانه: این زبان یک کتابخانه ی استاندارد غنی ارائه می دهد.

5-مجموعه ی زباله: این مورد یک ویژگی کلیدی زبان GO است. GO کنترل زیادی روی تخصیصات حافظه انجام می دهد و نهفتگی در اکثر نسخه های اخیر از جمع آورنده های زباله را بطور چشمگیری کاهش داده است.

6- این زبان interface و نوع های embedded شده را اعتبارسنجی می کند.

معایب:

1-این زبان هیچ پشتیبانی برای generic ها ، با این حال که بحث های زیادی درباره ی آن وجود دارد، نمیکند.

2-پکیج های توزیع شده در این زبان برنامه نویسی کاملا مفید هستند اما GO به معنای حقیقی شیئ گرا نیست.

3-برخی از کتابخانه ها مخصوصا مجمعه ی ابزار UI در این زبان وجود ندارد.

برخی از اپلیکیشن های محبوب توسعه یافته با زبان GO

Docker: مجموعه ای از ابزار ها برای توسعه ی محتوا های لینوکس است.

Openshift: یک platform رایانش ابری به عنوان یک سرویس توسط Red Hat است.

Kubernetes: آینده ی روند توسعه ی اتوماتیک شده و یک پارچه است.

Dropbox: برخی از کامپوننت های اساسی از پایتون به GO منتقل شد.

Netflix: برای دو بخش از معماری سرور است.

InfluxDB: یک پایگاه داده ی مجموعه ی زمانی open-source توسعه یافته توسط InfluxData است.

Golang: خود این زبان با GO نوشته شده است.

آینده ی زبان GO

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

مدیریت پکیج: GO جریان کار توسعه دهندگان مدرن در کار با پروژه های Open Source را ادغام می کند و شامل روشی است که پکیج های خارجی را مدیریت می کند. پشتیبانی مستقیم در تجهیز برای گرفتن پکیج های خارجی و انتشار پکیج های خودتان با مجموعه از دستورات ارائه شده است.  

کتابخانه های استاندارد قدرتمند:GO کتابخانه های استاندارد قدرتمندی دارد که به عنوان پکیج هایی توزیع شده اند.

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

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

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

نظر شما

0 نظر

نظری ثبت نشده است