شماره تماس 09336863931 | 09178169907 پست الکترونیک info@provid.ir

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

زبان برنامه نویسی GO را در این قسمت از وبسایت آموزش برنامه نویسی پرووید به کاربران عزیز ارائه می نماییم .

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

 

زبانی از طرف برنامه‌نویسان، برای برنامه‌نویسان
تاریخ برنامه‌نویسی اثبات کرده زبان‌هایی که از طرف برنامه‌نویسان طراحی شده‌اند — برنامه‌نویسانی که روی پروژه‌ها و سیستم‌های واقعی مشغول کار بودند — بسیار کاربردی‌تر و محبوب‌تر از زبان‌هایی هستند که از طرف محققین رایانها ی و با نگرشی ایده‌آل‌گرا به وجود آمدند. چه کسانی Go را خلق کردند؟ «کن تامسون»، «راب پایک»، و «رابرت گریسمر». بدون وارد شدن به جزییات، بد نیست نگاهی به ویژگی‌ها و خدمات قبلی این افراد داشته باشیم:
خلق یونیکس، زبان سی، سیستم Plan9، کدینگ معروف UTF-8، توسعه عبارات باقاعده، مشارکت در طراحی Java HotSpot، مشارکت در طراحیV8 (کروم و Node.js…)، یک جایزه تورینگ (معادل نوبل در علوم رایانه ی)، یک مدال ملی فناوری ایالات متحده.
شرکت‌هایی مثل Google، Youtube، Twitter، Dropbox، Mozilla، Canonical، Bitly، Redhat، Sound Clouad CloudFlare و Tumblr (این لیست بسیار بلند است…) و ده‌ها سرویس دیگر از Go استفاده کرده‌اند و طبق گفته‌ی خودشان، همگی تجربه‌ی کاملا مثبتی داشته‌اند. بعضی از آن‌ها Go را در جایی استفاده کردند که فقط سی و سی‌پلاس‌پلاس توان سرویس‌دهی آن قسمت را داشته‌اند، و بعضی دیگر هم Go را به جای زبان‌های سطح بالاتری مانند پی‌اچ‌پی و روبی و پایتون به کار برده‌اند. امکان ندارد بتوانید زبان دیگری جز Go را نام ببرید که در چنین مدت کوتاهی توانسته باشد تا این حد مورد توجه قرار گیرد!

 go programing

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

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

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

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

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

نظر بدهید

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