بررسی علمی نواقص زبان برنامه نویسی Go

یکشنبه 9 اردیبهشت 1397

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

 بررسی علمی نواقص زبان برنامه نویسی Go

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

علت عدم وجود یک سری قابلیت ها در زبان برنامه نویسی Go چیست؟

دقت کنید که طراحان این زبان سعی کردند ساختار زبان به صورت چند منظوره پیش ببرند، در واقع زبان برنامه نویسی Go از دسته زبان هایی است که با کسی تعارف ندارد!

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

طراحان زبان Go معتقد هستند که برنامه نویس باید بر روی خود زبان تمرکز بگذارد و منتظر قابلیت های آن نباشد. عدم وجود قابلیت های زیاد به معنی کم شدن بهینگی زبان Go نیست. بهینه سازی زبان برنامه نویسی Go از نظر زیر ساختی همیشه دنبال می شود و توسعه در این مسیر هنوز هم دیده می شود.

زاویه اول نواقص زبان Go

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

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

همه چیز در برنامه نویسی مقایسه ای است. در واقع زبان Go در مقایسه با پایتون و یا امثال آن در حدود 50 برابر سریعتر است!

بررسی بهینه سازی زبان Go

زبان Go به شدت در حال توسعه است، تقریباً هر روز بهینه سازی های زیادی برای این زبان اعمال می شود. کدهای همروندی را در زبان برنامه نویسی Go بررسی کنید تنها با یک روز بهینه سازی، عملکرد 50 درصدی بهتری گزارش شده است.

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

عموماً چنین مسائلی باید به صورت دقیق تر بررسی شود. شایان ذکر است که زبان Go در حال پیشرفت است.

مشکل زبان برنامه نویسی Go روی معماری 32 بیت و 64 بیتی

در حال حاضر سیستم Garbage Collector بر روی معماری 32 بیتی با یک نقص فنی بسیار بزرگ روبرو است. حتی دیده شده که امکان crash کردن برنامه نیز وجود دارد بنابراین برنامه بر روی سیستم های 64 بیتی اجرا شود.

نکته بعدی در این بین سیستم های runtime هستند این سیستم ها بر روی پلتفرم های 64 بیتی تنها می توانند از 16 گیگابایت حافظه استفاده کنند. در واقع برای دور زدن این محدودیت باید برنامه ها را بخش کنید و با تقسیم بندی های کوچکتر بتوانید استفاده بهتری داشته باشید.

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

یادگیری زبان Go دشوار است!

زبان برنامه نویسی Go یک زبان سیستمی است در واقع برای اینکه در این زبان به یک حد نرمالی دست یابید نیاز به سطح قابل قبولی از تخصص و تجزبه هستید. یعنی تا زمانی که با طرز کار cpu حافظه ها و مباحث سطح پایین آشنا نباشید نمی توانید با این زبان ارتباط بگیرید. خاصیت همروندی در زبان Go بسیار مهم است و افرادی که می خواهند با زبان Go کار کنند باید اطلاعات دقیقی در این خصوص داشته باشند.

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

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

نویسنده 3355 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید