هل لغة جو أفضل من لغة بي اتش بي ؟
مجال برمجة الويب ضخم جداً ، يعني أحياناً صفحات الويب المجمعة على السيرڤر، أو الـ API ، أو الخدمات الصغيرة – microservices ، .. وهكذا.
دعونا أولاً نحدد مؤهلات وشروط لغة البرمجة الأفضل لمجال الويب.
- بيئة البرمجة
- الأدوات
- المكتبات
- سوق العمل
- قصص النجاح
- سهولة الصيانة والتعديل
- تصميم اللغة
- ثبات بيئة العمل
- الأداء
- تنفيذ الكود بالتوازي
- وقت الانتظار
- سرعة تنفيذ الكود
- البنية التحتية
- الاستضافة ونشر الموقع
- استهلاك الذاكرة والثمن بشكل عام
والآن دعونا نبدأ في المقارنة!
بيئة البرمجة 🔗
لغة بي اتش بي ، ولغة جو لديهما بيئة عمل ضخمة جداً في مجال الويب. تستخدم غالباً لغة PHP لتكوين صفحات الويب على السيرفر ، وإنشاء أنظمة إدارة المحتوى (content management system). أما لغة جو تستخدم غالباً لإنشاء الـ API ، والـ microservices ، والأنظمة ذات الاستخدام العالي جداً.
سوق العمل 🔗
الكثير من الشركات والمواقع تستخدم لغة بي اتش بي لأنها أقدم، والكثير جداً من مبرمجي الويب يعرفونها جيداً واستخدموها.
على عكس لغة جو ، لغة حديثة مقارنةً بلغة PHP ولذلك تحتاج إلى بعض الوقت لكي تحصل على الانتشار والاهتمام الذي حصلت عليه لغة بي اتش بي.
لكن المبرمجين بلغة جو غالباً يكون لديهم مهارات وفهم أقوى وأعمق للبرمجة مقارنةً بالمبرمجين بلغة بي اتش بي. ولكن هذه النقطة تثير النقاش والجدل.. لذلك سأترك لك القرار.
قصص النجاح 🔗
٨٠٪ من مواقع الإنترنت تعمل بلغة بي اتش بي. ولكن هذا الرقم يقل بمرور الوقت. يُمكنك أن ترى كيف قل خلال الخمس سنوات الماضية من هنا .
هناك الكثير من قصص النجاح أيضاً في معرض أعمال لغة جوجل، و الكثير من الشركات الكبيرة تستخدمها .
المكتبات البرمجية 🔗
لغة جو، ولغة بي اتش بي لديهما الكثير من المكتبات البرمجية التي تسهل على المبرمجين إنشاء برمجيات قوية ومعقدة في وقت قليل.
الأدوات البرمجية 🔗
لغة جو لديها كل الأدوات البرمجية التي تحتاجها لكتابة كود متكامل ونشره. على عكس لغة بي اتش بي التي تعتمد على مجهود الشركات الأخرى لإنشاء أدوات تساعد في كتابة وتنفيذ كود بلغة بي اتش بي.
اختبار الكود 🔗
هناك العديد من مكتبات الطرف الثالث الخاص باختبار كود بي اتش بي مثل PHPUnit ولكن هذه الأدوات البرمجية الخاصة بإختبار الكود قام بها المجتمع البرمجي وليس منشئي اللغة.
على العكس تماماً، تجد لغة جو تدعم اختبار الكود كجزء أساسي من الـ toolchain الخاص بلغة جو. وهذا يجعل لغة جو سهلة الاختبار والتصحيح على عكس لغة بي اتش بي. لغة جو بها قواعد دقيقة وصارمة على عكس اختبار كود لغة PHP لأن بعض القواعد هي عبارة عن تفضيلات منشئي أداة اختبار الكود.
تقييم الأداء 🔗
القدرة على تقييم أداء الكود شئ ضروري جداً ولا يمكن إهماله، لأن مواقع الإنترنت والسيرفرات تتلقي يومياً ملايين الطلبات من المستخدمين لذلك لابد من تحسين الكود وتسريعه ليخدم عدد أكبر من الناس دون أن تتوقف الخدمة.
لغة جو تسمح بكل أنواع قياس الأداء بشكل افتراضي. حتى أنك تستطيع قياس أداء دالة واحدة في كود مكتوب بلغة جو (Micro-Benchmarking).
أما لغة PHP لا تركز على قياس الأداء. حيث لا يمكنك قياس أداء أجزاء من الكود بسهولة. كل ما تستطيع فعله هو تقييم أداء البرنامج أو السكربت بشكل كامل. مشكلة قياس أداء كود بي اتش بي هو أن الكود يعتمد على خدمات خارجية للويب لذلك صعب قياس أداء الكود لأنه غير مستقل في ذاته (not self-sufficient).
Profiling 🔗
إمكانية عمل profile موجودة بالفعل في لغة جو عن طريق pprof وهذا يسهل على المبرمجين بلغة Go الوصول إلى سبب البطء الرئيسي في الكود مما يسهل علاجه وتسريع الكود.
رغم وجود أداة xdebug لعمل profiling لسكربتات PHP إلا أن التقييم والأداء وسهولة الاستخدام تجعل لغة جو تتفوق في هذا الجانب.
Tracing 🔗
لغة جو توفر أداة execution tracer لتتبع سير البرنامج ، وهذه الأداة لها واجهة رسومية مبنية بتقنيات الويب. مما يسهل على مبرمجين لغة جو معرفة أسباب البطء في تنفيذ الكود ومشكلات وقت التشغيل (runtime behavior and issues).
هناك الكثير من الأدوات الموجودة للغة PHP ولكنها بدائية مقارنةً بأداة execution tracer المتاحة للغة جو.
صيانة الكود والتعديل عليه 🔗
التطور صفة أساسية من صفات التقنيات الحديثة، وصعوبة تطوير وتحديث الكود تعتبر عيب كبير في لغات البرمجة. المبرمجين يأتون ويذهبون ولكن الكود المكتوب يظل متواجداً لسنوات طويلة .. وحتى قرن من الزمان أو أكثر.
تحدث كثيراً في الشركات، أن يقوم فريق العمل بإعادة كتابة الكود من البداية لأن المبرمج الذي كتب هذا الكود ترك الشركة. هذه الأمور تحدث كثيراً في سكريبتات بي اتش بي.
ولكن لغة جو وضعت حداً لكل هذا. المكتبات المعتمدة للغة جو قوية جداً وتضع ضوابط كثيرة لطريقة كتابة الكود مما يجعل هناك طريقة واحدة لكتابة نفس الكود. وبذلك تزيد القدرة على قراءة الكود ولا يسمح بتعقيد الكود أكثر من اللازم.
تصميم اللغة 🔗
كود لغة جو مصمم بشكل يجعله قوي وسريع لأنها strongly statically typed language مما يجعل كتابة وقراءة الكود أسهل وأدق للمبرمج وللآلة. أي خطأ في نوع المتغير سيتم حله في وقت التحويل (compile-time) مما يجعل البرامج المكتوبة بلغة جو أقل عُرضة للأخطاء في وقت التشغيل.
لغة جو أبسط في طريقة الكتابة وعدد الكلمات المحجوزة للغة. عدد الكلمات المحجوزة للغة بي اتش بي هو ٦٨ كلمة، أما عدد الكلمات المحجوزة للغة جو هم ٢٥ كلمة فقط. وبذلك يصبح إتقان لغة جو أسرع لأنك تعرف كل الكلمات ومنها الأفكار المستخدمة وتبدأ في كتابة كود البرنامج بدلاً من أخذ وقت طويل لدراسة تفاصيل بدائية وتطورية عن اصدارات بي اتش بي.
يُمكنك أن تكتب أي برنامج بلغة جو. ليس للويب فقط. يُمكن أن تكتب برامج وتطبيقات وباك إند طويلة العمر وتظل تعمل لسنوات طويلة جداً بدون أن تضطر إلي إعادة كتابة أي شئ.
أداء وسرعة تنفيذ كود اللغة 🔗
تم تصميم لغة جو لتكون سريعة في تنفيذ الكود، ولكن لغة بي اتش بي لم تصمم لذلك. عندما نستخدم لغة جو نحول الكود إلى لغة الآلة الخاصة بـ معمارية المعالج وبذلك نحصل على سرعة تنفيذ عالية للكود ، على عكس لغة بي اتش بي لأنها لغة يتم ترجمة الكود وقت التنفيذ فقط! لذلك تعتبر لغة بطيئة مقارنةً بلغة جو.
تنفيذ الكود الغير متزامن 🔗
لغة جو متقدمة بأعوام كثيرةً عن لغة بي اتش بي في تنفيذ فكرة التنفيذ الغير متزامن للكود وعدم توقف التنفيذ بسبب أنّ عملية أخذت وقتاً طويلاً.
لغة جو تدعم الكثير من طرق تعدد المهام وتنفيذ الكود بشكل غير متزامن مما يجعل المواقع أسرع وتستقبل عدد أكبر من الزوار وتقوم بمهام أكثر على نفس الهاردوير مقارنةً بسكربتات لغة بي اتش بي.
Concurrency 🔗
نقوم بتشغيل سكربتات PHP على أكثر من thread لكي نحصل على أداء أكثر. ولكن هذا يسبب بعض المشكلات أحياناً ونضطر إلى إعادة تشغيل السيرفر أباتشي (Apache) أو إنجنكس (NGINX).
أما في لغة جو هناك goroutine كجزء أساسي في اللغة. يمكنك تنفيذ آلاف الأكواد من خلالها دون أن يتوقف البرنامج عن العمل. تم تصميم لغة جو لكي تعمل على الهاردوير الحديث حيث تستغل كل الـ cores المتاحة وتستخدم الـ concurrency وليس الـ threads وبذلك تصل إلي أداء سريع جداً على أي جهاز.
استهلاك الذاكرة 🔗
البرامج المكتوبة بلغة جو تستخدم رامات أقل من سكريبتات بي اتش بي.
البنية التحتية 🔗
البرامج المكتوبة بلغة جو لا تحتاج إلي برامج أو خدمات أخرى لتعمل. على عكس سكربتات بي اتش بي التي تحتاج إلى خادم وبيئة عمل خارجية.
مواقع الإستضافة 🔗
هناك آلاف شركات الإستضافة التي تعرض استضافة المواقع المكتوبة بلغة بي اتش بي وبأسعار قليلة جداً.
على العكس تماماً، تجد أن هناك أعداد قليلة جداً من شركات الإستضافة التي تقدم خدمة استضافة المواقع المكتوبة بلغة جو، وأسعار الإستضافة غالية.
التحكم في نشر البرنامج 🔗
يُمكنك كتابة كود بلغة جو ونشره ويصبح مغلق المصدر ولا أحد يرى الكود المصدري للبرنامج. أما في لغة بي اتش بي هذا الأمر صعب لأن سكربتات بي اتش بي يتم ترجمتها وقت التنفيذ فقط.
الخلاصة 🔗
استخدمت لغة بي اتش بي لسنوات طويلة، ولكني لا أريد أن أعود لإستخدامها مرةً أخرى لأني تعلمت لغة جو لأنها ..
- تسمح لي بقراءة كود الآخرين بسهولة
- تجبرني على كتابة كود نظيف، سهل التعديل عليه، وسهل القراءة
- تسمح لي أن أكتب أي شئ أريده .. ليس للويب فقط
- تسمح لي أن أستغل المعالج والذاكرة بشكل أفضل
أنا أرى أننا بحاجة إلى الكتابة بلغة جو لأنها أقوي وأفضل من كل الجوانب.