Python vs. Golang

من غير العادل مقارنة جانب واحد من جوانب المقارنات، والحكم من خلاله على اللغة بشكلٍ عام بأنها أفضل من لغة أخرى.

وهنا، سنقارن بينهما وفقًا لعدة معايير، من شأنها أن تكون عاملًا حاسمًا عند البعض في تفضيل لغة على أخرى.

معيار الأداء Performance

قام أحد التقنيين المختصين بقياسات ومقارنات الأداء بتطبيق عدة مشكلات برمجية مثل Mandelbrot equation, n body problem, fasta

وكانت النتائج بين اللغتين كما في الصورة…. تفوق واضح وكبير لـ Golang على حساب Python.

No alt text provided for this image

معيار قابلية التوسّع Scalability:

لغة Golang، تم ابتكارها أساسًا من قبل مجموعة موظفين في جوجل، وذلك من أجل مجاراة التوسع الهائل في جوجل ومشروعاتها البرمجية كما نعرف، ولذلك؛ تحتوي هذه اللغة على أدوات وإمكانيات مدمجة للعمل على مزامنة العمليات Concurrency، بينما يعتبر ذلك غير متاحًا في Python، ولكن ما هو متاح في Python هو تجزئة العملية نفسها إلى عمليات أصغر، تجعل هذه اللغة قادرة على عمل ما يسمى بالموازاة Parallelism، حيث يتم تقسيم العملية الكبيرة إلى أقسام أصغر تسمى threads.

وكما يتضح من الصورتين أدناه، فإن لغة Golang مهيئة بفعالية أكبر للعمل عليها ضمن البيئات التوسعية وخصوصًا في المشاريع الكبرى.

No alt text provided for this image
No alt text provided for this image

معيار التطبيقات Applications:

في هذا المعيار، من الصعب الحديث عن لغة حاسمة، فهو متفاوت جدًا من مجال إلى آخر.

في لغة Python، نجد بأن اللغة تحظى بمكانة كبيرة وواسعة في حقول مثل تحليل البيانات، الذكاء الاصطناعي والتعلّم العميق، وتطوير الويب. وهي لغة تمتاز بمكتباتها الكثيرة، التي تجعل المهمات الجِسام سهلة التنفيذ.

أما في لغة Golang، فهي تستخدم بكثرة في مجال برمجة الأنظمة، لدعمها للمزامنة كما أسلفنا الذّكر. كما أنها بدأت تصعد بقوة في مجالات أخرى مثل الحوسبة السحابية، والعنقودية cluster computing، ومؤخرًا، بدأت تستخدم بشكل واضح في تطوير الويب لسهولة التعامل مع مكتباتها البرمجية في هذا المجال، التي تعمل بشكل فعال في إعداد خوادم الويب.

معيار التنفيذ Execution:

نتعرض في هذا المعيار إلى الآلية التي يتم فيها تنفيذ الكود في كلا اللغتين.

في Python، يتم استخدام interpreter، أما في Golang، فيتم استخدام compiler.

في لغة Python، يتم كتابتها بشكل “حيوي” أو ما نسميه dynamically typed language، أما في لغة Golang، فإنها تكتب “ثابتة” أي من نوع statically typed language.

في النوع الثابت، فإنّ أنواع المتغيرات يتم التصريح بها، أي explicitly، وهو ما من شأنه أن يسهل عملية تصحيح الأخطاء في الكود.

أما في النوع الديناميكي\الحيوي، فإنها ضمنية، ولا يصرّح بها كتابةً، وهو ما يمكن أن يسبب بعض الأخطاء في الكود دون التنبه إلى موضعها بشكل سريع.

في هذه النقطة تحديدًا وبرأيي؛ فإنّ Python بطريقتها الديناميكية ستكون أسهل على المستجدين في البرمجة، بينما سيعاني منها قليلًا من كان قد تمرّس في البرمجة على لغة من نوع الكتابة الثابتة، التي يصرّح فيها بنوع المتغيرات.

معيار المكتبات البرمجية Libraries:

في هذا المعيار، سيطول الكلام حول شمولية Python لأغلب المجالات، وذلك لمكتباتها الواسعة جدًا جدًا في ذلك، فعلى سبيل المثال، مكتبات مثل Numpy، Tensorflow، Scikit Learn، OpenCV، Pandas، matplotlib تحوز انتشارًا واسعًا جدًا في مجالات صاعدة بقوة مثل الذكاء الاصطناعي والتعلم العميق، والتمثيل البياني ومعالجة الصور وغيرها.

No alt text provided for this image

فيما لا يعني ذلك نضوب Golang في هذا المضمار، فقد اختارت جوجل مجالات مهمة وأساسية لهذه اللغة، وقامت ببناء المكتبات البرمجية لذلك. فهناك مكتبات بارزة لهذه اللغة في تطوير الويب، والتعامل مع قواعد البيانات، وعمليات المزامنة، والتشفير أيضًا.

No alt text provided for this image

معيار القابلية للقراءة Readability:

طالعت أكثر من رأي من خبراء التقنية في ذلك، وقد لاحظت تفاوتًا بارزًا بينهم في هذا المعيار بخصوص اللغتين، فلغة Python تمتاز بقابليتها السهلة للقراءة كما هو معروف، ولكن Golang سهلة القراءة أيضًا.

يقول أحد مدوني التقنية حول سبب تفضيله لـ Golang في هذا المعيار ما مختصره، أنّ Python تحتوي عدة طرق لتنفيذ نفس العمل، وهو ما سيؤثر على مقصد المطور من هذا الكود، بينما الأمر محصور في Golang بطرق محددة، وهو ما يسهل من قراءتها وفهم مقاصد المطور من هذا الكود.

وهي برأيي إيجابية وسلبية في نفس الوقت، فالإيجابية هي ما جاء على ذكره كما قال، ولكنها سلبية من ناحية تحديد\إلزام المطور بطرق محددة سلفًا، وهو ما من شأنه أن يحجب عنه الحلول الأفضل في بعض الحالات، والأمور تقدّر بقدرها حول ذلك ولكل حالةٍ على حدة.

اترك رد

إملأ الحقول أدناه بالمعلومات المناسبة أو إضغط على إحدى الأيقونات لتسجيل الدخول:

شعار ووردبريس.كوم

أنت تعلق بإستخدام حساب WordPress.com. تسجيل خروج   /  تغيير )

Google photo

أنت تعلق بإستخدام حساب Google. تسجيل خروج   /  تغيير )

صورة تويتر

أنت تعلق بإستخدام حساب Twitter. تسجيل خروج   /  تغيير )

Facebook photo

أنت تعلق بإستخدام حساب Facebook. تسجيل خروج   /  تغيير )

Connecting to %s

أنشئ موقعاً أو مدونة مجانية على ووردبريس دوت كوم.. قالب: Baskerville 2 بواسطة Anders Noren.

أعلى ↑

إنشاء موقع مجاني على ووردبريس.كوم
ابدأ
%d مدونون معجبون بهذه: