By زيفان كرمان، مستشار علوم بيانات وهندسة برمجيات مستقل
صورة من قبل المؤلف بناء على الصورة من قبل ناقلات OpenClipart on pixabay
غالبًا ما أسمع أو أقرأ أشياء تقول في جوهرها "R مفيدة للتحليلات السريعة والقذرة ، ولكن إذا كنت تريد القيام بعمل جاد ، فيجب عليك استخدام Python". أنا لا أتفق تمامًا مع هذا البيان ، لأنه من الممكن تمامًا كتابة رمز فعال وموثوق وقوي وجودة الإنتاج بلغة R - لقد فعلت ذلك ، حتى يتمكن الآخرون من القيام بذلك أيضًا. عند مقارنة لغتين ، يمكنك التفكير في صفاتهما الجوهرية ، مثل تراكيب اللغة ، وبناء الجملة ، والوظائف ، والمكتبات المتاحة. ولكن يمكنك أيضًا استخدام نهج أكثر تجريبية ، وتصور عقليًا بسرعة عالية جميع أمثلة الشفرة المكتوبة بأي من اللغتين اللتين واجهتهما. وبعد ذلك ، أنا على استعداد للاعتراف بأنه إذا قمت بإعادة صياغة العبارة أعلاه في "متوسط شفرة Python بجودة أعلى من متوسط كود R" ، فقد يكون هناك بعض الحقيقة فيه ، ويمكن تفسيره من خلال "الإنسان عامل".
تنصل:
من الواضح أن هذا الرأي لا يستند إلى نهج علمي صارم ، بمعنى أنه لا يعتمد على بيانات موضوعية ، لأن مثل هذه البيانات ليست متاحة (وأعتقد أنه لا يمكن أن تكون). في الواقع ، ليس لدينا إمكانية الوصول إلى جميع أكواد Python / R التي تم إنشاؤها على الإطلاق (ولا التي تم إنشاؤها ، دعنا نقول العام الماضي) ، ولا إلى عينة تمثيلية من هذا الرمز. ليس لدينا أيضًا إمكانية الوصول إلى الخلفية التعليمية والملف الشخصي المهني لجميع مستخدمي Python / R ، ولا إلى العينة التمثيلية الخاصة بهم. وحتى لو كانت لدينا مثل هذه البيانات ، فسيكون من الصعب للغاية تحديد متوسط جزء من كود Python / R وتقييم جودته. لذلك فهو يعتمد فقط على تقديري الشخصي ولكن الصادق للوضع.
تابع القراءة لمعرفة المزيد.
حول جودة الكود
على الرغم من عدم وجود تعريف أو مقياس عالمي لجودة الكود ، فمن المسلم به عمومًا أن الكود الجيد يجب أن يكون قابلاً للقراءة (موثق جيدًا ، يتبع أسلوبًا ثابتًا ، ...) ، وقابل لإعادة الاستخدام ، وموثوق ، وقابل للاختبار ، وبالطبع ، افعل ما من المفترض أن تفعل. كما يجب أن تستخدم موارد الحوسبة بكفاءة (الذاكرة ، وحدة المعالجة المركزية) ومورد الوقت ، أي أن تكون سريعة بشكل معقول.
ملحوظة:
الكود ليس سوى جزء من البرنامج ، وهناك أيضًا الخوارزمية التي تنفذها الكود. مهما كانت لغة البرمجة التي تستخدمها وحتى إذا كنت تحترم متطلبات جودة الكود أعلاه ، فإن البرنامج غير الفعال من الناحية الحسابية ليس برنامجًا جيدًا.
ملف تعريف مستخدم R النموذجي
خلفيّة
يأتي معظم مستخدمي R من خلفية علمية. غالبًا ما يكونون مبرمجي R (Google و YouTube هما أهم معلمي R!) ، وحتى لو تلقوا تدريبًا رسميًا في R ، فمن المحتمل أنه كان ضئيلاً للغاية وعلى الأرجح مضمّنًا في فصل الإحصاء (استثناء مصنوع من الإحصائيين المحترفين وعلماء البيانات). أيضًا ، من المحتمل أنهم لم يتعرضوا للتدريب والمفاهيم العامة لعلوم الكمبيوتر ، وبالتالي ليسوا على دراية بممارسات الترميز الجيدة.
الأستعمال
يستخدم R بشكل عام كأداة مساعدة لإنجاز وظيفتهم الرئيسية - القيام بالبحث. إذن ما يهم هو إنجاز المهمة - تحليل البيانات وإنتاج الجداول والمخططات للحصول على درجة الدكتوراه. أطروحة أو مجلة أو ورقة مؤتمر أو تقرير مشروع للوكالة الممولة. ونتيجة لذلك ، فإن الكود الذي تم تطويره هو برنامج يستخدم لمرة واحدة. لا يمثل التوثيق أو أسلوب الترميز مشكلة ، فالبرامج النصية المنفردة على غرار السباغيتي بدلاً من الكود المعياري متكررة ، ناهيك عن مسارات الملفات المشفرة والمعلمات الأخرى التي تدمر أي أمل في إعادة استخدام الكود. يتم تشغيل الكود بشكل عام بشكل تفاعلي من قبل المؤلف ، وفي حالة حدوث خطأ ، يتم إصلاحه في الحال ، لذلك ، بالطبع ، لا يوجد شرط لمعالجة الأخطاء بشكل صحيح. إذا تم تشغيل الكود اليوم على جهاز الكمبيوتر الخاص بي وعلى مجموعة البيانات الخاصة بي ، فأنا سعيد ، وقد قمت بعملي! لكن لا ينبغي أن نلومهم (على الأقل ليس كثيرًا) - وظيفتهم هي إنتاج نتائج علمية ، وليس كود كمبيوتر فعال وعالي الجودة. من المؤكد أن كتابة كود الجودة ليس بهذه الصعوبة بمجرد أن تعتاد عليه ، وحتى إذا كان القصد من الكود أن يكون للاستخدام الفردي ، فمن المحتمل إعادة استخدام أجزاء منه في مناسبات أخرى ، لكن جودة الكود المنخفضة تجعل المهمة تقريبًا غير ممكن. كل هذا في الاعتبار ، يمكننا القول بأن كود R "المتوسط" سيكون في أغلب الأحيان لا يجتمع معايير الترميز عالية الجودة.
الاستثناء الملحوظ مرة أخرى هو الإحصائيون المحترفون وعلماء البيانات ، الذين يمكن اعتبار إنتاج الكود جزءًا من مهمتهم الرئيسية - تطوير منهجية وأدوات إحصائية وتعلم آلي ، وبالتالي غالبًا ما ينتجون كودًا عالي الجودة متاحًا كحزم R على CRAN والمستودعات الأخرى.
ملف تعريف مستخدم Python النموذجي
خلفيّة
يأتي معظم مستخدمي Python من خلفية حاسوبية. غالبًا ما تستخدم Python في الجامعات كأداة لتقديم مفاهيم علوم الكمبيوتر (https://www.edx.org/learn/python). حتى لو لم يتخرجوا في علوم الكمبيوتر ، فمن المحتمل أن يكون مستخدمو Python قد حصلوا على بعض التدريب الرسمي في برمجة Python ، لأن هذا كان شرطًا لهم للحصول على الوظيفة. أيضًا ، حتى لو لم يدرسوا علوم الكمبيوتر في البداية ، فمن المحتمل أن يكون لديهم بعض التدريب الرسمي في علوم الكمبيوتر العامة ، إلى جانب برمجة Python ، وهم على دراية بممارسات الترميز الجيدة.
الأستعمال
يتم استخدام Python بشكل عام من قبل مطوري البرامج - الأشخاص الذين تتمثل مهمتهم الرئيسية في إنتاج التعليمات البرمجية. من المفترض أن يتم تشغيل الكود عدة مرات ، على أجهزة كمبيوتر مختلفة (وربما حتى أنظمة تشغيل) ، وعلى العديد من مجموعات البيانات المختلفة. تميل الشفرة إلى أن تكون قوية وموثوقة ، وتتواءم مع المواقف الاستثنائية ، وتعالج الأخطاء برشاقة. من المتوقع أيضًا أنه سيتعين الحفاظ على الكود ، ربما من قبل أشخاص آخرين (تصحيح الأخطاء ، التكيف ، التطور) ، لذلك تصبح مفاهيم التوثيق ، والأسلوب ، والقراءة ، وإعادة الاستخدام جزءًا طبيعيًا من عملية التطوير. كل هذا في الاعتبار ، يمكننا القول بأن كود Python "المتوسط" سيكون في أغلب الأحيان يجتمع معايير الترميز عالية الجودة.
وفي الختام
في هذا المنشور ، حاولت استكشاف الفرضية حول أصول الاعتقاد بأن Python أكثر ملاءمة من R لكتابة كود جودة الإنتاج. لا أعتقد أنه يأتي من الخصائص الجوهرية للغتين وأنظمتهما البيئية. أفترض أنه يأتي من حقيقة أن مستخدمي R العاديين ربما يكونون أقل اهتمامًا بجودة الكود من نظرائهم في Python ، وهو ما يمكن تفسيره من خلال خلفيتهم والمكان الذي تحتله البرمجة في وظائفهم.
وبالطبع فإن الاستنتاج النهائي هو أن الاعتقاد بأن بايثون يتفوق على R في كتابة كود الجودة هو اعتقاد خاطئ!
زيفان كرمان هو مستشار مستقل في علوم البيانات وهندسة البرمجيات ، شغوف باستخدام الرياضيات والإحصاء والحوسبة لتحويل البيانات إلى رؤى قابلة للتنفيذ يمكن أن تساعد في حل مشاكل العالم الحقيقي. مغرم بشكل خاص بالنظام البيئي R كان يستخدمه حتى قبل إنشائه (باستخدام R ancestor S / S + منذ أوائل التسعينيات). تواصل معه على LinkedIn.