لماذا عليك الإنتقال فورا إلى بايثون 3

والجواب بكل بساطة لأنها أكثر نسخة تطويرا وعليك إستعمالها لنفس الغرض الذي قمت بإستعمال نسخة 2.7 بدلا من نسخة 2.6.

لقد بدأت بتعلم لغة بايثون منذ سنة 2008 وهي نفس السنة التي تم إطلاق فيها لأول مرة نسخة بايثون 3 ومنذ ذلك الوقت وأنا أستعمل بايثون 2 إلى غاية سن 2014 أنتقلت كليا إلى بايثون 3 وإليك لماذا ؟

ستة سنوات مدة طويلة في مجال البرمجة وعلوم الكمبيوتر بصفة عامة والعديد من مطوري ومستخدمي بايثون مازالوا يستخدمون بايثون 2 على الرغم من أن معظم المكتبات المشهورة تدعم الان بصفة رسمية نسخة بايثون 3 (NumPy, SciPy, matplotlib, Pandas, IPython, SymPy) .

بايثون 2 مازالت مناسبة لهم لان التعامل مع المصفوفات لم يتغير كليا بين بايثون 2 و3 وعلى العكس فبالنسبة للمطورين الأخرون من (أمن المعلومات ، و مطوري المواقع) يستعملون خوارزميات بايثون ويتعاملون مع السلاسل وهذه الأمور تحسنت كثيرا في بايثون 3.

يعتقد الكثير من العلماء أنهم لن يكسبوا غير القليل من وراء الإنتقال إلى بايثون 3 في حين أنها تمثل إستثمار كبير من خلال إعادة مراجعة الاكواد السابقة و تحديثها بما يتناسب مع التطويرات الحاصلة في عالم التكنولوجيا ولكن الإنسان بصفة عامة كسول وأنا كنت واحد منهم إلى غاية قرائتي لكتاب Python Cookbook النسخة الثالثة وانا أوصي بهذا الكتاب لكل من يستعمل بايثون بشكل جدي فهو يحتوي على الكثير من الوصفات المتقدمة لبايثون 3 فقط وفي في مقدمة الكتاب يحذر الكاتب القارئ بلهجة شديدة :

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

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

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

إذا كنت ممن يستخدمون العمليات الحسابية بكثرة فإن بايثون 2 ستكون مناسبة لك حتى الوقت الحاضر أما إذا قررت التعامل مع السلاسل بشكل متقدم أو برمجة خوارزميات متقدمة ومعقدة فعليك ببايثون 3 بدون أي تفكير .

لن أتكلم كثيرا عن التفاصيل ولكن يمكنك البحث على الأنترنيت عن جميع الأمور التي ستفوتك في حالة بقاءك تستخدم بايثون 2 .

تحديث الدروس والدورات التعليمية لصالح بايثون 3

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

لهذا اعتقد أن الدروس والمراجع يجب ان تستعمل بايثون 3 ، ومن هذا المنبر أتوجه لجميع من قام بكتابة دروس أو مراجع لبايثون 2 أن يقوم بتحديثها بما يتناسب مع بايثون 3 وهذا لن يتطلب منك الكثير من الجهد فكل ماعليك فعله تعديل بعض الأمور مثل print x إلى print (x) و map(…) إلى list(map(…)) .

لماذا الإنتقال إلى بايثون 3 قد لا يكون سهل بالنسبة لك ؟

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

أنت تستخدم حزمة أ ولكنها عالقة في بايثون 2

أنت تستخدم كل من NumPy و SciPy وحزم أخرى رائعة وهي حزم تعمل بشكل جيد مع بايثون 3 ولكن تتفاجأ بأن الحزمة التي تعمل عليها تستعمل بايثون 2 وفقط و أنت بحاجة إلى هذه الحزمة ولا يمكن التنازل عنها ولا يوجد أي حزمة أخرى تعمل عملها فما الذي يمكنك أن تفعل ؟

  • الإتصال بمطور الحزمة والطلب منه الإنتقال إلى بايثون 3 (الخطف والتعذيب ممنوع :))
  • القيام بعملية الإنتقال بنفسك فبعد كل شيء فهي مفتوحة المصدر (أليس هذا بشئ رائع)
  • كتابة حزمة خاصة بك

وإذا كل من الحلول الثلاث السابقة مستحيلة فأنت عالق وستبقى كذلك .

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

هذه المشاريع تعهدت بتوقيف دعم بايثون 2 قبل أو عند سنة 2020

مشاريع

البيانات النصية والثنائية في بايثون 2 عبارة عن فوضى بأتم الكلمة 

على السريع لو قدمت السطر التالي فماذا يمثل بالنسبة لك ؟


'abcd'

إذا كنت من مستخدمي بايثون 3 سيكون جوابك أنها عبارة عن سلسلة تتألف من الحروف التالية : “a”, “b”, “c”, و “d” .

وإذا كنت من مستخدمي بايثون 2 ربما ستقول نفس الشيء ، أو ربما ستقول هي عبارة عن بايتات تمثل 97, 98, 99, و 100 و الحقيقة انه هناك جوابين صحيحين في بايثون 2 عن ماذا يمثل كائن str والذي جعل يعجل من تغيير اللغة ،وبالتالي فإن جواب مستخدمي بايثون 3 هو الصحيح .

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

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

قد ينسي الناس أحيانا كيف كانت بايثون في الأيام الأولى فحين بدأ Guido في كتابة بايثون في سنة 1989 وقام بإطلاقها أول مرة كمصدر مفتوح سنة فيفري 1991 وهذا يعني ان بايثون نفسها سبقت خروج أول معيار لليونيكود سنة أكتوبر 1991 ، وعلى مدى السنوات ظهرت لغات بعد أول معيار لليونيكود إختارت أن يكون تعاملها مع السلاسل على ترميزات ممكن أن تدعم اليونيكود وهذا جعل بايثون 2 في موقف مؤسف بعدما كثر الزخم عليها سنة 2004 (وقت بداية التخطيط لظهور بايثون 3 ) حيث كان لها دعم ضعيف لنصوص اليونيكود ويرجع هذا إلى أن نوع اليونيكود كان إختياري وكان الناس لا يستخدمونها لجميع النصوص .

إن دعم اليونيكود والنصوص المكتوبة بأي لغة أمر مهم، فلغة بايثون لغة للعالم كله وليست فقط خاصة للغات الرومانية والتي يتضمنها جدول ASCII ولهذا جعلت بايثون 3 اليونيكود أمر ضروري عند التعامل مع البيانات النصية وقد ضمنت أن جميع الأكواد المكتوبة بنسخة بايثون 3 ستدعم جميع الناس في جميع أصقاع العلم

 

أرجوا أن تقوم بدعمنا عبر نشرك والاعجاب بالموقع

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

Post Navigation