الرئيسية      أرشيف المقالات       المنتدى        المكتبة       إتصل بنا
  القائمة الرئيسية
  Language
  تسجيل الدخول
اسم المستخدم :

كلمة المرور :

تذكرني



هل نسيت كلمة المرور ؟

اشترك الآن !
  بحث
  أقسام المقالات
  آخر المشاركات
  كتب جديدة
 
  زوار هذه الصفحة
اليوم 231
أمس 27
الإجمالي 22787
  الموقع

من هنا وهناك -  المقروئية Readability وتنظيم اللغة
بواسطة عروة عيسى في 2005/3/5 (6566 قراءة)
من هنا وهناك

المقروئية Readability وتنظيم لغة البرمجة

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

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



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

عندما صممت الباسكال كان الحديث عن لغة ذات مقروئية عالية بهدف تسهيل عملية التكويد .

Eiffel كذلك تملك نحو واضح وبسيط ومقروء بشكل ممتاز ,

Smalltalk قريبه من الاثنين أيضا , البعض يراها غريبة بشكل جميل والبعض يعتبرها ذات مقروئية عالية , الذي أعجبني في Smalltalk أن شفرتها واضحة وقريبه إلى الكلام العادي , فإذا أردنا أن نقول بالإنكليزية :"Jack pass the ball to Jill" فإنها ستكتب في Smalltalk : " Jack passtheballto: Jill " أو " Jack pass : theball to: Jill " .لقد صممت لتكون سهلة التعلم والاستخدام .

Python كذلك تعتبر لغة برمجة أكاديمية سهلة القراءة والفهم والتعلم -حتى على مستوى التعلم كأول لغة برمجة- وتتجنب الغموض وتتميز برتابتها الشبيهة برتابة لغة الباسكل .

خذ مثلا لغة البرمجة lisp: إن lisp تحاول أن توفر كل ما تقدمه بقيه لغات البرمجة من ميزات لتكون موجهه إلى جميع الناس ( وهذا برأيي لا يجعل لها طابعها خاص بها )

وتعتبر من أسوأ اللغات في المقروئية ربما بسبب إسرافها الغير طبيعي في استخدام الرموز والأقواس وبطريقة غير مفهومه أبداً بالنسبة للوافدين الجدد على هذه اللغة

خذ على سبيل المثال :

Pythony = m*x + b
Lisp(SETQ y (+ (* m x) b))

وكما ترى فالفرق واضح بين هاتين اللغتين, وتعتبر اللغة lisp لغة صعبه جداً للقراءة والتعلم .

C++ تملك بنية نحويه معقده , بلا شك ليست مثل Lisp , ولكنها تبدو كأنها لغة من عصور قديمة لا يمكنك دائما فهما مهما بدت السطور مألوفة لك , تركز C++ بشكل أساسي على الشفرة المختصرة وتحاول أن تكون عمليه قدر الإمكان لذلك من المألوف أن تجد رموز وعبارات مختصرة في شفرتها أكثر من وجود كلمات مفهومه , لاحظ استخدام الأقواس {} بدل Begin و End في باسكال مثلا , أو لاحظ استخدام المعاملات &&) أو ||) بدل (And و Or).

أو حتى دوال الدخل/خرج مثل cin>> و cout<< الخ .. كما أنك ستجد عده طرق لكتابه نفس البلوك من البرنامج , مما يربك القادمين الجدد على اللغة ويصعب عليهم فهم شفرة غيرهم . ربما يقول البعض أن ذلك يعتبر مرونة عالية..... أقول لكل هؤلاء :

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

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

مثلا النسخة الحديثة من C++ والمسماة C++/CLI والتي صدرت حديثا كتمثيل كلي لدعم.NET بعد MC++ (Managed C++) ((والتي كانت أول Visual C++ .net تصدر)) . تحوي تغييرات كثيرة تماشيا مع المواصفات العصرية ولاسيما المقروئية والتنظيم .

لاحظ مثلا هذا الكود البسيط لبرنامج HelloWorld مكتوب بـ C++/CLI:

using namespace System;

int main()

{

Console::WriteLine("Hello World");

return 0;

}


إنه قريب جدا من كود الC++ العادية, ولكن أول مالفت نظري فيه استخدام الداله Write Line الموجودة داخل الفئة Console . لاحظ وضوح هذا الأمر وطوله مقارنه بتعليمه cout مثلا , حتى أنه أوضح وأطول من Pascal التي تكتب Writeln .

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

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

Java تملك نحو مشابه للغة C++ , ولكن أفضل منه قليلا .

C# لغة متطورة وعصرية , اتجهت أكثر لمراعاة تنظيم الشفرة و قواعد النحو أكثر من الاختصار في الشفرة الذي كان سائدا في C++ . كما أنها أصبحت تلتزم أكثر بالقواعد وتكتب الشفرة بطريقة واحده, لاحظ مثلا القيود التي فرضتها على قلب الأنواع والتي كانت C++ السابقة تتساهل معها: حيث لا يوجد تحويل مباشر من Int إلى Boolean في C# وبالتالي العبارة التالية خطــأ "if (1)".

كما أنه لا يوجد في السي شارب ملفات رأسيه و لا استخدام للماكرو في ظل وجود preprocessor support for conditional code أي يتم التحقق من الشروط قبل الترجمة.

و هذا يجعل اللغة أسهل, كما أنه يزيد سرعة المترجم, ويجعل من السهولة أكثر فهم شفرة الـ C#. وكأننا نلاحظ أن C# كلغة مطوره عن ثلاث لغات (بنية java وهدف وهيكل Delphi ونحو C++ ) C فهمت أهميه زيادة المقروئية والتنظيم في نحو اللغة.

لن تجد في C# مثلا استخدام لـ "::" أو "->" .

VB.net تملك مقروئية ممتازة هي الأخرى . وانا أرى انها أكبر من مقروئية C# وأقرب إلى مقروئية Delphi .. كما ان مايكروسوفت توجّة Visual Basic .net نحو مفاهيم مشابهة للمقروئية و تبسيط عملية التكويد أكثر من C# .

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

Perl أيضا تعتبر لغة صعبه القراءة بشكل ملحوظ , رغم أنها يمكن أن تكتب بطريقة أنيقة ولكن الانطباع العام أنها لغة ضعيفة المقروئية .






- ســرعة التكويـد :

 

ولكن علينا الملاحظه أن المقروئية والتنظيم ربما يؤثران على سرعة التكويد , وبالتالي لغة مثل C++ ذات مقروئية ضعيفة لأنها تركز على الكود المختصر وتستخدم عبارات مرمزة , ولكن ذلك يزيد من سرعة التكويد ويسمح للمبرمج بالوصول إلى نتيجة الشفرة نفسها بسرعة أكبر ولاسيما عندما يكون العمل كله كتابه شفرة . (طبعا لا أعني أن إنتاجيه C++ عالية "راجع بند الإنتاجية") .

قابلت ذات مره خبير C++ وتناقشت معه في عدة مواضيع , ولاحظت أنه لم يعر موضوع المقروئية اهتماما واعتبر أن اختصار الكود مفيد بالنسبة له ويجعله ينجز الأعمال بسرعة أكبر .

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

وهذا شيء رائع ويعطي للمبرمج القابلية على تجريب أفكار برمجيّة بسرعة أكبر وبلا شك له عده فوائد , ولكني لازلت منحازا إلى جانب المقروئية ولاسيما إذا كنا نحقق سرعة التكويد هذه على حساب المقروئية .

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

الكثير من اللغات مثل Python تحاول الاختصار والتسريع في التكويد كذلك, حيث لاداعي لتعريف المتحولات والثوابت بنفس الطريقة التقليده المتبعة في اللغات الأخرى .

Smalltalk تعتبر لغة مختصرة كذلك وتركز على مبدأ تصغير الشفرة . فهي مثلا لاتحتاج مساحات من الشفرة لتعريف المتغيرات كما في اللغات الأخرى , إنها ليست بحاجه لـ Type من أجل تعريف كافه أنواع المعطيات أو الصفوف والكائنات.



 

تحويل من منتدى تقييم لغات البرمجة

التقييم: 0.00 (0 أصوات)
**** تحضير للطباعة أرسل هذه المقالة
أضف هذه المقالة إلى المواقع التالية
إضافة إلى Blinklist إضافة إلى del.icio.us إضافة إلى Digg إضافة إلى Fark إضافة إلى Furl إضافة إلى Newsvine إضافة إلى Reddit إضافة إلى Simpy إضافة إلى Spurl إضافة إلى Yahoo مرجع إلى Balatarin مرجع إلى Faceboom مرجع إلى Twitter مرجع إلى Scripstyle مرجع إلى Stumble مرجع إلى Technorati مرجع إلى Mixx مرجع إلى Myspace مرجع إلى Designfloat _NW_BOOKMARK_TO_GOOGLEPLUS _NW_BOOKMARK_TO_GOOGLEREADER _NW_BOOKMARK_TO_GOOGLEBOOKMARKS
التعليقات تخص صاحبها ولا تخص ادارة الموقع
الكاتب الموضوع




عروة نت 2003-2016 . بالاعتماد على زوبس