ما هي لغة البايثون؟ إيجابياتها وسلبياتها

هل تساءلت يومًا عن سبب تسمية لغة البايثون بـ “بايثون”؟ القصة كالتالي: عندما بدأ جويدو فان روسوم (والد بايثون) في تطبيق اللغة ، كان يقرأ النص المنشور لمسلسل كوميدي على هيئة الإذاعة البريطانية من السبعينيات بعنوان Monty Python’s Flying Circus. كما يجب أن تكون قد خمنت بالفعل ، فمن هذا العرض استوحى الإلهام من الاسم.

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

ما هي لغة البايثون؟

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

لا ترتبط لغة البايثون بصناعة أو مجال معين حيث تغطي مجموعة واسعة من المهام ويستخدم بشكل شائع في العديد من المجالات ، بما في ذلك:

  • تطوير الشبكة
  • تحليل البيانات
  • التعلم الالي
  • DevOps وإدارة النظام
  • الاختبار الآلي
  • نماذج البرامج

هذا يميز بايثون عن اللغات الخاصة بالمجال مثل HTML و CSS المقتصرين على تصميم الويب أو SQL التي تم إنشاؤه للوصول إلى البيانات في أنظمة إدارة قواعد البيانات العلائقية.

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

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

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

غالبًا ما يُنظر إليها على أنها لغة OOP نقية ، ومع ذلك ، تسمح البايثون بالبرمجة الوظيفية ، والتي تركز على ما يجب القيام به (الوظائف.) في قواعد الرموز الكبيرة ، يمكن أن يكون هناك تبديل بين نموذجين ، اعتمادًا على الهدف المحدد.

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

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

الآن بعد أن عرفنا ماهية بايثون ، دعنا نلقي نظرة سريعة على تاريخها.

تاريخ موجز للغة البرمجة بايثون

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

بدأت قصة لغة البايثون في أواخر الثمانينيات بلغة البرمجة ABC. تم إنشاؤه في أمستردام في Centrum Wiskunde & Informatica (CWI) لتمكين الأشخاص الذين ليس لديهم خبرة كافية لبدء الترميز لأجهزة الكمبيوتر بسرعة كبيرة. للأسف ، ABC لم تعمل بالشكل المتوقع. في وقت لاحق ، استخدم أحد مطوريها ، Guido van Rossum ، اللغة الفاشلة لبناء بايثون.

“قررت أن أحاول تصميم لغة برمجة نصية بسيطة تمتلك بعضًا من خصائص ABC الأفضل ولكن بدون مشاكلها” ، هذا ما قاله غيدو في إحدى المقابلات التي أجراها. “لذلك بدأت في الكتابة. لقد أنشأت جهازًا افتراضيًا بسيطًا ومحللًا لغويًا بسيطًا ووقت تشغيل بسيطًا. لقد صنعت نسختي الخاصة من أجزاء ABC المختلفة التي أحببتها. لقد قمت بإنشاء بناء جملة أساسي ، واستخدمت المسافة البادئة لتجميع العبارات بدلاً من الأقواس المتعرجة أو كتل البداية والنهاية ، وقمت بتطوير عدد صغير من أنواع البيانات القوية: جدول تجزئة (أو قاموس ، كما نسميه) ، وقائمة ، وسلاسل ، و أعداد.”

تاريخ ميلاد بايثون الرسمي هو 20 فبراير 1991 ، عندما نشر Guido الإصدار الأول 0.9.0. لقد جاء مع جميع أنواع البيانات الرئيسية والوظائف ودعم OOP ونظام الوحدة.

في يناير 1994 ، تم إطلاق الإصدار 1.0 من Python بأدوات البرمجة الوظيفية (lambda ، الخريطة ، التصفية ، تقليل).

في أكتوبر 2000 ، قدم الإصدار 2.0 من بايثون تحسينات مهمة مثل دعم Unicode ومجمع البيانات المهملة لإدارة الذاكرة. تقوم الميزة تلقائيًا بإصدار ذاكرة لم تعد قيد الاستخدام ، مما يجعلها متاحة لأغراض أخرى.

في النهاية ، شهد ديسمبر 2008 تقديم بايثون الإصدار 3.0 ، والذي لم يكن تحديثًا بل مشروعًا جديدًا تمامًا ، غير متوافق مع إصدارات 2.x. نظرًا لاختلاف رمز البايت والجهاز الافتراضي ، لا يمكنك تشغيل بايثون 2 على بايثون 3 VM والعكس صحيح. تخلص الإصدار الجديد أيضًا من العديد من الميزات والتراكيب المتقادمة التي تراكمت على مدار سنوات وجود اللغة. ولكن لم يكن الأمر كذلك حتى أبريل 2020 عندما فقدت بايثون 2 الدعم وتقاعدت رسميًا.

بالعودة إلى Guido ، كان المطور الرئيسي للمشروع حتى يوليو 2018 ، عندما أعلن عن إجازته الدائمة من مسؤولياته كديكتاتور بايثون الخيري مدى الحياة. بعد عامين ، انضم إلى قسم المطورين في مايكروسوفت. وعد المبرمج الهولندي في تغريدته: “ستجعل استخدام بايثون أفضل بالتأكيد (وليس فقط على ويندوز)”.

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

إيجابيات لغة البايثون

ذكرنا بإيجاز بعض مزايا بايثون عند وصف خصائصها الرئيسية وما هي بايثون أساسًا. الآن ، دعونا نزيد من الثناء التفصيلي.

منحنى التعلم السلس

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

سرعة تطوير عالية

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

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

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

من بين أكثر أطر عمل لغة البايثون شيوعًا لتطوير تطبيقات الويب السريع

جانغو. يقدم ما يقرب من 10000 حزمة ، تغطي تقريبًا كل جانب من جوانب تصميم تطبيقات الويب – اتصالات قواعد البيانات ، قوالب HTML ، مصادقة المستخدم ، حماية CAPTCHA ، واجهات برمجة التطبيقات ، وأنظمة إدارة المحتوى ، وغيرها الكثير. يستخدم فيسبوك و انستقرام Django لخلفياتهم.

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

فالكون. يركز إطار عمل مبسط آخر على بناء واجهات برمجة تطبيقات ويب عالية الأداء وخلفية للتطبيقات. تتضمن قائمة مستخدمي Falcon برامج بايبال و اوبيرا.

تعد بايثون أيضًا أحد مكونات LAMP stack ، والتي تعني Linux و Apache و MySQL و Python أو PHP أو Perl (جميع اللغات المكتوبة ديناميكيًا.) وهي توفر طريقة قياسية وناضجة لبناء تطبيقات الويب ، مما يوفر وقت التطوير.

قابلية النقل والتوسعة للغات أخرى

لغة البايثون لا تعتمد على النظام الأساسي: يمكنك تشغيل نفس شفرة المصدر عبر أنظمة التشغيل ، سواء كانت macOS أو Windows أو Linux. يتم تحقيق قابلية النقل بسبب الرمز الثانوي وجهاز Python Virtual Machine (PVM) الذي يعمل كوسيط بين مطور ووحدة معالجة مركزية فعلية تقوم بتنفيذ البرنامج.

بالإضافة إلى ذلك ، تتعاون بايثون بسهولة مع لغات أخرى باستخدام امتدادات مثل Cython for C و Gython for Go و Jython for Java و IronPython لـ .Net. فهي تسمح للمطورين بمزج اللغات ، واستعارة الوظائف التي تفتقر إليها التكنولوجيا الرئيسية ، وتشغيل الكود “الأجنبي” داخل تطبيقاتهم.

تعددية الاستخدامات بالإضافة إلى مجموعة أدوات شاملة لكل شيء تقريبًا

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

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

TensorFlow ، تم إنشاؤه بواسطة فريق Google Brain لتدريب وتشغيل الشبكات العصبية العميقة (DNNs) ؛

يركز Keras ، الذي يعمل على TensorFlow ، على تجربة المستخدم ويبسط بناء DNN ؛ و PyTorch ، مقدمة معمل أبحاث الذكاء الاصطناعي على Facebook (FAIR) تستخدم لدفع رؤية الكمبيوتر ومشاريع معالجة اللغة الطبيعية.

البرمجة العلمية وعلوم البيانات. يعد العلماء والمهندسون والمحللون الماليون وعلماء الرياضيات وغيرهم من الخبراء المشاركين في الأبحاث القائمة على البيانات المستخدمين الرئيسيين لنظام SciPy القائم على Python. يحتوي على أدوات قوية لتحليل البيانات والتصور مثل الباندا و NumPy و sci-kit-Learn و matplotlib.

أتمتة العمليات الروبوتية. البايثون هي لغة الانتقال لكتابة برامج خفيفة الوزن – نصوص برمجية – لأتمتة مهام الأعمال العادية (أتمتة العمليات الآلية ، أو RPA). من أمثلة هذه العمليات ملء النماذج عبر الإنترنت ، وقراءة الملفات وكتابتها ، وإنشاء المجلدات وإزالتها ، وإرسال رسائل البريد الإلكتروني والإشعارات ، وكشط الويب ، وطلب البيانات عبر واجهات برمجة التطبيقات.

تكنولوجيا مجانية مع مجموعة كبيرة من المواهب ومجتمع عالمي واسع

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

هناك أكثر من 1600 مجموعة رسمية لمستخدمي بايثون في 37 دولة ، بإجمالي عدد أعضاء يتجاوز 860 ألف. يمكنك أيضًا الحصول على المساعدة من الأقران وتحسين مهاراتك في البرمجة عبر Stack Overflow ، الذي يضم أكثر من 1.8 مليون سؤال بعلامات بايثون ، أو مجتمع Reddit الذي يضم 859000 Pythonistas ، أو دردشة Real Python Slack.

سلبيات لغة البايثون

بقدر ما هي رائعة ، فإن البايثون لا تناسب كل مشروع. فيما يلي عيوبه الرئيسية التي يجب وضعها في الاعتبار عند اختيار التكنولوجيا المناسبة لحالتك.

قيود السرعة

أنت تعلم بالفعل أن بايثون هي بطل سرعة التطوير. ومع ذلك ، لا يمكن أن تتباهى بنفس النتائج في سرعة التنفيذ ، متخلفة عن C ++ و Java.

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

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

لا تعدد

تستخدم بايثون آلية تسمى Global Interpreter Lock ، أو GIL للاختصار ، والتي تسمح فقط بتنفيذ تسلسل واحد من تعليمات الرمز الثانوي (الخيط) في كل مرة. يجلب GIL فوائد مهمة كما هو

  • يضمن سلامة الخيط ،
  • يعزز أداء البرامج ذات الخيوط المفردة
  • يبسط تكامل مكتبات C غير الآمنة مع بايثون.
  • في الوقت نفسه ، ينشئ GIL عنق زجاجة للبرامج متعددة مؤشرات الترابط المصممة لتشغيل مهام سير عمل متعددة في وقت واحد. هذا يمنعك من الاستفادة الكاملة من المعالجات الحديثة متعددة النواة ، والتي يمكنها تنفيذ العديد من المهام في وقت واحد.

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

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

لكن التوازي يأتي مع عيب كبير: فهو يلتهم الكثير من موارد الذاكرة.

استهلاك عالي للذاكرة

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

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

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

متاعب مع تطوير المحمول والواجهة الأمامية

لا يوجد هاتف ذكي يقوم بتشغيل بايثون أصلاً: يتم تطوير تطبيق أندرويد الأصلي باستخدام جافا أو كوتلين بينما يتوافق نظام iOS مع Objective C و Swift. لا يزال بإمكان المطورين البناء للجوال في بايثون باستخدام أطر عمل Kivy و BeeWare عبر الأنظمة الأساسية. ومع ذلك ، فإن هذه الأدوات أقل شيوعًا من Xamarin المملوكة لشركة مايكروسوفت و React Native by Facebook و فلتر Flutter من جوجل.

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

يوضح جويدو فان روسوم ، مبتكر لغة بايثون ، في مقابلة بالفيديو مع Microsoft Reactor: “لغة بايثون كبيرة وبطيئة”. “إنها تستهلك قدرًا كبيرًا من شحن البطارية ، لذلك إذا كنت تقوم بالبرمجة بلغة بايثون ، فمن المحتمل أن تنفد بطاريتك بسرعة كبيرة وتنفد الذاكرة بسرعة.”

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

Comments

اترك تعليقاً