شعار زيفيرنت

R vs Python (مرة أخرى): منظور عامل بشري

التاريخ:

By زيفان كرمان، مستشار علوم بيانات وهندسة برمجيات مستقل

R vs Python (مرة أخرى): منظور عامل بشري
صورة من قبل المؤلف بناء على الصورة من قبل ناقلات 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.

بقعة_صورة

أحدث المعلومات الاستخباراتية

بقعة_صورة