تدوينات ومقالات بريدية اتحدث بها عن المشاريع التقنية
القليل عني

أفلاطونية لغات البرمجة

دائماً ما نشاهد الحرب بين حزب المطورين عن لغات البرمجة، بل يصل الموضوع لنفس الأطر في لغة البرمجة، وللاسف مؤخراً اصبح الوضع ماساوياً فتجد بعض غير الملمين بهذه المواضيع يخوضون الحرب نفسها.

التقنية ليست كل شيء !

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

ماهي لغة البرمجة الأفضل لمشروعك !

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

احد اكثر المنصات شيوعا لادارة محتوى المواقع هو منصة Wordpress وهي مكتوبة بلغة PHP ولكن في نفس الوقت لغة PHP هي من اكثر اللغات التي ينتقدها الكثير من المبرمجين والكثير من من غير المبرمجين وغير التقنين ! بالرغم من ان هذه اللغة من اكثر اللغات انتشاراً حول العالم !

كيف اختار لغة البرمجة

لن اتحدث هنا هن البرمجيات الاصيلة والمخصصة لتطبيقات الايفون الاندوريد والماك والويندوز، ساتحدث عن الجزء المتعلق بالبنية التحتية والخوادم.

في البداية لنتعرف على البنية التحتية بشرح مبسط.

ماهي البنية التحتية Backend ؟

يوجد بعض التطبيقات التي لا تطلب اتصال بالإنترنت ولا تتطلب تغذيتها بالمعلومات من جهة أخرى، مثل تطبيق الآلة الحاسبة، أو تطبيق الكاميرا في جهازك. أو تطبيق القرآن الكريم، كذلك تطبيق مواقيت الصلاة، هذا النوع من التطبيقات لا يحتاج للاتصال بالإنترنت، لأن معظم العمليات تحدث في الجهاز، ولا يوجد تواصل مع شخص آخر ولا يوجد معلومات يتم تحديثها بشكل مستمر، وهناك تطبيقات أخرى مثل تطبيق تويتر، وتطبيق كريم أو أوبر، أو الفيس بوك، أو الألعاب الجماعية، أو التطبيقات اللي تحفظ معلومات على السحابة، تحتاج إلى التواصل فيما بعضها أو تحتاج تحديث البيانات بشكل مستمر، حتى تتمكن هذه التطبيقات التواصل فيما بينها أو تحديث البيانات دون الحاجة لتحديث التطبيق على متجر التطبيقات، فهي بحاجة إلى وسيط يعمل الوسيط على عملية الربط. هذا الوسيط نسميه الخادم (Server).

لنضرب المثل بتطبيقات الطعام:

* يقوم طالب الطعام في المنزل بالدخول إلى التطبيق، ويقوم بالبحث عن المطاعم.

* عندما يضغط على زر البحث عن مطعم، يقوم التطبيق بالتواصل مع الخادم عن طريق الـ API.

* يقوم الخادم بالبحث في قواعد البيانات الخاصة به عن المطاعم المتوفرة، ومن ثم يقوم بإرسال القائمة للتطبيق بواسطة الـAPI.

* يقوم التطبيق بعرض قائمة المطاعم على الجهاز من خلال المعلومات التي وصلته من البنية التحتية.

معاير اختيار اللغة

اللغة التي يجيدها الفريق

أفضل لغة برمجة هي اللغة التي يجيدها فريق العمل ويتحدث بها بطلاقة ويعرفون كل شيء عنها ومتمرسين بكتابتها كانها لغتهم الأم.

نطاق العمل

صحيح ان اللغة التي يجيدها الفريق هي اهم خطوة ولكن هذه الخطوة في بعض الاحيان تضعنا في مواقف صعبة قليلاً، فمثلا اذا كان الفريق كاملاً متمرساً بلغة PHP ولكننا على علم ببعض المشاكل في هذه اللغة عندما يتعلق الامر بالتواصل اللحظي فهي احد اللغات التي لا تدعم هذا الامر بشكل كبير، فهل نقوم باستبدال لغة البرمجة بالكامل ! ام ماذا نفعل ؟ هنا نقوم بتقييم الخصائص كاملة، فاذا كانت الخدمة التي نعمل على انشائها تطبيق مثل الواتس اب ! فبكل تاكيد سيكون جوابي ان PHP لا تخدم هذا التوجه وفريق العمل اذا لم يكن على استعداد لتعلم لغة برمجة جديدة فهو لا يخدم هذا الامر.

حدود اللغة

اذا كنا نتحدث عن خدمة تطبيق اقتصاد تشاركي مثل تطبيقات توصيل الطعام ويوجد بها جزء للمحادثات وتتبع الحركة، والتطبيق لا يقوم عليها بشكل كامل في هذه الحالة نستطيع ان نقوم ببناء كل شي باستخدام PHP حتى نصل للاجزاء التي تحتاج الى تواصل لحظي ونقيمها، هل نحن بحاجة إلى تكون المحادثات مثل الواتس اب مثلا لحظية في اجزاء من الثانية ! ام اننا نريد شيئا مشابها لخدمة تويتر في الرسائل الخاصة ! التي لا تصل بشكل لحظي ! اذا كان الجواب مثل تويتر نستطيع عمل ذلك باستخدام PHP اذا كان الفريق التقني فعلا “رهيب” وهم عبارة عن مبرمجين مخضرمين، لكن اذا كان الجواب لا نحتاجها ان تكون لحظية، هنا من الممكن البدأ بالتفكير بحلول مختلفة ! ام بعض الطرق المختلفة في اعدادات الخوادم وتفعيلها عن طريق لغة PHP أو باستخدام لغة برمجة اخرى مثل Go أو Ruby أو باستخدام NodeJS بحكم انه الاسهل بينهم فقط لهذا الجزء من التطبيق.

لذلك من المهم معرفة حدود اللغة وامكانياتها عند البدء في مشروعك

التكلفة

تختلف التكلفة حسب لغة البرمجة المستخدمة، يؤثر وفرة المطورين في لغة برمجة على الاسعار بشكل كبير، فمثلا في العالم العربي قلة المطورين الذين يجيدون ويستخدمون Ruby تجعل التكلفة مرتفعة بها كلغة. لذلك من المهم عمل دراسة بسيطة حول مدى وفرة المطورين في المنطقة. كما ان احد العوامل المؤثر على التكلفة ان بعض التقنيات المستخدمة قد تكون مدفوعة وبعض لغات البرمجة تحتاج خوادم بتراخيص معينة أو مواصفات معينة قد تكون مكلفة.

ستعيد بناء كل شيء !

عند مشاهدة المشاريع الكبيرة اليوم مثل FaceBook و Twitter ستجد أنها بدات بتقنيات واساليب متواضعة في ذلك الوقت، تويتر مثلا في البدايات كان يعتمد على Ruby وفي ذلك الوقت تويتر استفاد بشكل كبير منها ولكن مع ازدياد عدد المستخدمين بشكل كبير وصل لمراحل لم تعد تخدمه اللغة فيها بشكل كبير ومع ذلك قاموا بعمل العديد من الامور لتحسين تجارب المستخدمين، حتي وصلوا لمرحلة لم يعد بامكانهم الاستفادة اكثر من Ruby وبدات تتكرر مشاكل ظهور الحوت الذي يعلن انقطاع الخدمة، حينها بدات المرحلة الانتقالية، ولكن في تلك المرحلة تقييم تويتر والجوالات الاستثمارية الموجودة لديهم تجعلهم قادرين على توظيف فريق يقوم ببناء المنتج بلغة برمجة مختلفة. لايختلف الامر كثيراً في FaceBook الذي قام فريقها بانشاء HipHop ليحول طريقة تشغيل PHP بطريقة تخدمهم.

اذا بحثت اكثر ستجد أن العديد من المشاريع الناجحة اليوم تم اعادة بنائها في مرحلة ما. حتى لو لم يتم تغيير لغة البرمجة ستقوم باعادة بناء الكود البرمجي في مرحلة ما، قد تكون بالتدريج وقد تكون بشكل مباشر وسريع.

اللغات الاكثر شيوعاً

اخلط اللغات

احد الامور الرائعة انك تستطيع الجمع بين عدة لغات عند بناء البنية التحتية، وهو امر نقوم به عند الحاجة لذلك. فمثلا تجدنا نستخدم لغتين الى ثلاث لغات برمجة في المشروع حسب الحاجة ولكن هذا الامر قد يكون في وقت لاحق من مشروعك. في البداية ركز على الاطلاق والحصول على اكبر عدد من المستخدمين.

كما لا ننسى اللغات البرمجية مثل C# و Java و C++ ولكنها في الغالب لا تستخدم في المشاريع الناشئة نظراً للوقت والتكاليف التي تحتاجها.

ركز على التشغيل !

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







اذا حاب يوصلك تنبيه بكل المواضيع اشترك في القائمة البريدية من هنا