Warning: Declaration of tie_mega_menu_walker::start_el(&$output, $item, $depth, $args, $id = 0) should be compatible with Walker_Nav_Menu::start_el(&$output, $item, $depth = 0, $args = Array, $id = 0) in /home3/afgsaane/public_html/wp-content/themes/jarida/functions/theme-functions.php on line 1904
زبان قدرتمند و نوظهوری به نام Go | سایت تخصصی کامپیوتر afgsaa
خانه » برنامه نویسی » GO » زبان قدرتمند و نوظهوری به نام Go

زبان قدرتمند و نوظهوری به نام Go

Go Programming Language

به عنوان یک برنامه نویس، هر از چندگاهی در حیطه ی کاری تان با اسمی مواجه می شوید که بیش از پیش به گوشتان می خورد. یک ابزار جدید که خیلی از شرکت های بزرگ شروع به استفاده از آن کرده اند، هر روز برنامه ها و سرویس های جدیدی با آن ساخته می شود، و یا خیلی از سایت ها درباره آن مطلب منتشر می کنند. بنابراین حس کنجکاویتان تحریک می شود و همینطور که اطلاعات تان درباره آن ابزار بالاتر می رود، از خود سوال می کنید که آیا من هم می توانم در پروژه های آتی خود از آن استفاده کنم؟ در این مقاله می خواهیم کمی شما را در رسیدن به جواب این سؤال کمک کنیم. این بار می خواهیم راجع به زبان برنامه نویسیGo  حرف بزنیم، زبانی که حداقل طی یک سال گذشته سایه سنگین اش بر دنیای برنامه نویسی کاملا قابل حس است.

زبانی از طرف برنامه نویسان، برای برنامه نویسان

تاریخ برنامه نویسی اثبات کرده زبان هایی که از طرف برنامه نویسان طراحی شده اند — برنامه نویسانی که روی پروژه ها و سیستم های واقعی مشغول کار بودند —  بسیار کاربردی تر و محبوب تر از زبان هایی هستند که از طرف محققین رایانها ی و با نگرشی ایده آل گرا به وجود آمدند. چه کسانی Go را خلق کردند؟ «کن تامسون » ،» راب پایک »، و«رابرت گریسمر ».  بدون وارد شدن به جزییات، بد نیست نگاهی به ویژگی ها و خدمات قبلی این افراد داشته باشیم:

خلق یونیکس، زبان سی، سیستم Plan9 ، کدینگ معروف UTF-8 ، توسعه عبارات باقاعده،  مشارکت در طراحیV8(کروم و Node.js…)، یک جایزه تورینگ (معادل نوبل در علوم رایانه ی)، یک مدال ملی فناوری ایالات متحده.

شرکت هایی مثل ،Google، Youtube، Twitter,Dropbox، Mozilla، Canonical، Bitly، Redhat, Sound, Clouad CloudFlare و Tumblr (این لیست بسیار بلند است…) و ده ها سرویس دیگر از Go استفاده کرده اند و طبق گفته ی خودشان، همگی تجربه ی کاملا مثبتی داشته اند. بعضی از آ نها Go را در جایی استفاده کردند که فقط سی و سی پلاس پلاس توان سرویس دهی آن قسمت را داشته اند، و بعضی دیگر هم Go را به جای زبا نهای سطح بالاتری مانند پی اچ پی و روبی و پایتون به کار برده اند. امکان ندارد بتوانید زبان دیگری جز Go را نام ببرید که در چنین مدت کوتاهی توانسته باشد تا این حد مورد توجه قرار گیرد!

 

کاهش هزینه ها با صرفه جویی در منابع

برعکس برنامه نویسان تازه کار، برنامه نویسان با تجربه به خوبی می دانند که «سرعت » غالبا آخرین گزینه در انتخاب یک زبان است! زبان Go در نسخه ی فعلی ( ۱.۳)، جزو سریع ترین زبا نهای برنامه نویسی دنیاست و با یک شیب تند به سوی سریع تر شدن در نسخه های آتی در حرکت است. اگر از زبان هایی مثل پی اچ پی و روبی و پایتون استفاده می کنید، پس از مهاجرت به Go ، می توانید انتظار ۲۰ تا ۵۰ برابر شدن سرعت را داشته باشید. برنامه های نوشته شده در Go از نظر میزان مصرف منابع سخت افزاری بسیار به برنامه های سی نزدیک می باشند. ممکن است در جایی ببینید که یک پروسه ی جاوا حدودا یک گیگابایت از رم را مصرف کرده اما یک پروسه ی Go با همان وظایف هنوز به پنج مگابایت هم نرسیده! این یک اتفاق کاملا طبیعی است. بنابراین شاید نتوانید برنامه ی وب جاوای خود را در سرور ۵۱۲ مگابایتی ارزا ن قیمت تان میزبانی کنید، اما اگر با Go آن را بنویسید، احتمالا می توانید پنج تا ده نمونه از همان برنامه را بدون مشکل
و به طور همزمان در این سرور داشته باشید! این قضیه برای ایران که قیمت گزافی برای سرورها پرداخت می شود بسیار حیاتی است.

سرویس iron.io بعد از سوییچ کردن از روبی به ،Go توانست ۳۰ سروری که مسئول میزبانی خدماتش بودند را به تنها ۲ سرور کاهش دهد! در سناریویی جالب تر، در گوگل سرویس dl.google.com از سی پلاس پلاس به Go سوییچ کرد و حاصل کار نصف شدن کدها، سرعت برابر، مصرف حافظه بهینه تر! وکاهش زمان لود اولیه سرویس (استارتاپ تایم) از ۱۲ ساعت به چند ثانیه بود!!

Go Programming Language

درصد پایین خطا و سهولت در چرخه ی توسعه

زبان Go از انواع داده های استاتیک بهره می برد. بنابراین جدای از بهینه تر بودن سرعت، میزان زیادی از باگ هایی که ممکن است در زبان های داینامیک رخ دهند در Go وجود نخواهند داشت.

Go یک زبان کامپایلری است. البته مانند«بعضی » از زبا نها به کدهای واسط یا چیزهایی مانند آن تبدیل نمی شود! خروجی کامپایل، بدون نیاز به VM ، JIT و امثال آن، به کدهای سخت، سرد، و بی رحم زبان ماشین تبدیل می شوند! و البته که برنامه ی شما قابلیت اجرا شدن روی تمام سیستم عامل های معروف و بسترهای سخت افزاری محبوب را خواهد داشت. خروجی کامپایل هم فقط یک فایل اجرایی ساده خواهد بود که به هیچ پیش نیاز و ابزار جانبی دیگری نیاز ندارد. نمی دانید که بعد از مد تها سروکله زدن با بسته منیجرها و نصب ابزارهای مختلف در زبا نهای دیگر، این ویژگی Go چقدر لذت بخش است! عبارت«این فایل را روی سرور کپی کن و اجرایش نما» غالبا تنها فرمی از مستندات است که یک برنامه ی Go برای نصب شدن به آن نیاز دارد!

ساده و آسان

برعکس تصور خیلی ها، سادگی و سهولت دو ویژگی کاملا متمایز هستند!  زبان هایی هستند که ساده اند، اما استفاده از آ نها آسان نیست (مانند سی)، زبان هایی هم هستند که آسان اند، اما اصلاً ساده نیستند (مانند جاوااسکریپت). Go هم ساده است و هم آسان! از نظر ساختاری طراحی ساده ای دارد و یادگیری زبان غالبا بسیار نرم و روان صورت می گیرد. از نظر راب پایک، نقش رابط گرافیکی کاربر( GUI )  را برای زبان ایفا می کند. بنابراین می توانید اطمینان داشته باشید که یک برنامه نویس از خانواده ی سی، در نهایت ظرف یک هفته بتواند با Go  شروع به کار کند. کتابخانه ی استاندارد زبان هم نقش پررنگی در سهولت زبان ایفا می کند : به یک وب سرور پرقدرت نیاز دارید؟ می خواهید با آرشیوها کار کنید؟ به الگوریتم های هش نیازمندید؟ کار با تصاویر چطور؟ همه و همه به طور کاربردی در کتابخانه ی استاندارد وجود دارند تا شما وقت تان را بابت جستجو برای آ نها هدر ندهید.

همروند و موازی

Go  ذاتا یک زبان همروند است. زبان همروند زبانی است که طراحی آن به طور مشخص حول محور همروند بودن شکل گرفته است. در حال حاضر زبان های همروند معروف کدامند؟

ارلنگ، هسکل، Go و… با اینکه سیستم JVM در حال حاضر نمی تواند از نظر همروندی امکاناتی را در سطح سه زبان نام برده شده ارائه دهد، اما نمی توانیم اسم کلوژور و اسکالا را در لیست بالا قرار ندهیم. با نگاهی به این لیست متوجه می شویم که Go تنها زبان غیر فانکشنال در این لیست است!  .یکی از مهمترین عوامل جذب زبا نهای فانکشنال امکانات همروندی آ نها بود. اما با ورود Go به بازی، دیگر لازم نیست برای طراحی سیستم های همروند دست به دامن زبا نهای فانکشنال شوید، زبا نهایی که سینتکس و مدل برنامه نویسی در آ نها ممکن است برای خیلی ها خوش آیند نباشد. وقتی برنامه های خود را به صورت همروند توسعه می دهید، علاوه بر اینکه طراحی برنامه تان بهتر و قابل درک تر خواهد شد، می توانید اطمینان داشته باشید که در صورت وجود امکانات سخت افزاری مناسب، برنامه ی شما بتواند به طور موازی اجرا شده و سرعت بالاتری را نیز برایتان به ارمغان بیاورد.

بهبود در ساختار کدها

خیلی ها فکر می کنند بزر گترین نقطه ی قوت Goامکانات همروندی آن است، در حالی که از نظر خود طراحان زبان، پیاده سازی منحصر به فردInterface  ها یکی از بهترین دست آوردهای آنان است. اینترفیس ها در زبا نهای دیگری هم حضور دارند، اما هیچکدام مانند Go پیاده سازی نشده اند. اینترفیس های Go شیوه ی duck-typing را طوری به این زبان مترجمی و استاتیک وارد کرده اند که این قابلیت به ستون طراحی API ها در این زبان بدل گشته است. Go یک زبان رویه ای مدرن است. امکاناتی برای شما مهیا است که بتوانید بدون دردسرهای موجود در زبانی مثل سی، با توابع معمولی کدنویسی کنید. بدون پیچیدگی های موجود در جاوا و سی پلاس پلاس کدهای شی گرا طراحی کنید. و بدون درگیر شدن با سینتکس غریبه ی زبا نهای فانکشنال، به بسیاری از قابلیت های موجود در این زبا نها دسترسی داشته باشید. و البته مانند بعضی از زبا نها، هیچ کدام از این مد لها به زور به شما تحمیل نخواهد شد!یکی از رو شهای کاهش مشکلات یک محصول، حذف قسمت هایی است که تجربه ثابت کرده باعث بروز بیش ترین مشکلات خواهند شد. در همین راستا خیلی از قابلیت هایی که در زبا نهای دیگر مشکل زا بودند و یا به درستی پیاده سازی نشده بودند، کاملا از Go حذف شده اند. Go معتقد است

نبود خیلی از قابلیت ها، بهتر از بودشان است! موارد دیگری هم هستند که شاید خیلی به چشم نیایند، اما در عمل بسیار مهم اند. مثلاً در صورت وجود مشکلی در زمان کامپایل، مترجم پیغام های خطایی را تولید می کند که برنامه نویس را واقعاً متوجه مشکل می کند، نه مانند خیلی از زبا نها خطوط درهم و برهمی را چاپ کند که فهمیدن آن خودش کلی از زمان برنامه نویس را هدر می دهد. یا فرضاً مستندات زبان، که واقعا در بین تمام زبا نهای برنامه نویسی منحصر به فرد است. مستندات Go شیوه های پویایی را برای نمایش و تعامل بهتر با خوانندگانش ابداع کرده اند که کم کم در حال ورود به بقیه زبان ها نیز می باشد. یا جامعه ی کاربری Go که به دلیل ذات سیستمی این زبان، علاوه بر برناه نویسان خوش ذوق سطح بالا، شامل برنامه نویسان محتاط سطح پایین هم می شود و به شما اطمینان می دهد که از این اجتماع، فقط ابزارهایی بیرون خواهد آمد که بتواند نظر هر دو گروه را جلب کرده باشد و ده ها مدل از این موارد کوچک که بدون این که زیاد متوجه آن باشید در حال بالابردن بهره وری شما می باشند. در آخر اینکه، شما نیاز ندارید همین حالا تمام سیستم های خود را به Go منتقل کنید. ضرب المثل معروفی هست که می گوید «اگر درست کار می کند، به آن دست نزن! ». شما هم اگر کدهایی دارید که از آ نها راضی هستید، شاید نیاز نباشد آ نها را تغییردهید. اما اگر از امتحان کردن چیزهای جدید نمی ترسید، می توانید در قدم اول قسمت های کوچکی از کدهایتان را با  Go پیاده سازی کنید. مطمئن باشید که تجربه تان حتی در همین قدم کوچک به قدری لذت بخش خواهد بود که خودتان ترغیب به استفاده ی بیشتر از این زبان خواهید شد.

درباره م.رضائی

دیدگاهتان را ثبت کنید

آدرس ایمیل شما منتشر نخواهد شدعلامتدارها لازمند *

*

theme
رفتن به بالا

Warning: Parameter 1 to W3_Plugin_TotalCache::ob_callback() expected to be a reference, value given in /home3/afgsaane/public_html/wp-includes/functions.php on line 3510