25

1 – 2 هل دروبال نظام أم إطار لإدارة المحتوى؟

مقدمة:

السؤال أعلاه تدور حوله كثير من التساؤلات والإستفسارات خصوصاً من القادمين الجدد لعالم دروبال، ومع كثرة اللغات والتقنيات وأطر العمل أصبحت عملية الإختيار والمفاضلة تحتاج لتمحيص دقيق وتقصى ، وفي إعتقادي أنه تساؤل أساسي ومهم خصوصاً إذا وضعنا في الإعتبار مقولة بيتر نورفق - Peter Norvig : " تعلم البرمجة في عشرة سنوات ".

مفهوم أنظمة إدارة المحتوى

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

ما هو النظام المحوسب لإدارة المحتوى الرقمي

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

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

لماذا الغموض حول دروبال

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

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

دروبال كنظام إدارة محتوى

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

وفي إطار المنافسة بين أنظمة إدارة المحتوى المختلفة فاز دروبال ولسنوات متتالية بجائزة أفضل نظام إدارة محتوى وجائزة Infoworld Bossie للأعوام 2010، 2011، 2012 وعدة جوائز أخرى ، لذا بإمكاننا ( كخطوة أولى ) إعتبار دروبال نظام إدارة محتوى ولكن مع إمكانية تطوير وبناء إضافات تجعله يعمل في أي مجال آخر وهذا ما يخطو به نحو طريق أطر العمل الـ(Frameworks).

مميزات دروبال كنظام إدارة محتوى

  • دروبال حر ومفتوح المصدر مما يعني قلة التكلفة الأمان والضمان على المستوى البعيد.

  • بناء دروبال بإستخدام لغة PHP وهي لغة رائدة في مجال تقنيات الويب يجعله يستفيد من كافة خصائص الويب.

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

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

  • أثبت دروبال مقدرته العالية في بناء مواقع المحتوى الضخمه التي تتكون من أكثر من مليون صفحة وتتجاوب مع أكثر من 20 ألف طلبية في الثانية ( حسب دريس بايتريت مؤسس دروبال).

  • أظهر دروبال مقدرة عالية في الجوانب التصميمية ويتوفر له عبر الموقع الرسمي عدد كبير من الثيم المجانية.

  • وأخيراً ما يميز دروبال مقدراته التأمينية العالية وما أظهره من قوه في هذا المجال.

ما هو إطار العمل

إطار العمل أو الـFramework عبارة عن بيئة برمجية وبنية معمارية تضم مجموعة من الأدوات التي يمكن أن تكون (Libraries, Classes, API ... etc) تساعد في بناء التطبيقات التي قد تكون خاصة بمجال محدد وبخصائص محددة أو قد تكون عامة ، ولكل إطار عمل طريقته المميزة في بناء التطبيقات ، منها ما يركز على مفهوم الـMVC ومنها ما يتشدد في تطبيق قواعد الـOOP ومنها المتراخي في ذلك.

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

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

دروبال كإطار عمل

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

ولكن السؤال هل دروبال يمثل أطار عمل متكامل؟ للإجابة عن هذا التساؤل نجد أن قابلية دروبال على التوسع ومرونته في بناء وإضافة وحدات جديدة تجعله يأخذ كافة ملامح أطر العمل، أضف إلى ذلك أن Drupal 7 جاءت بإضافات جوهرية مثل : الكيونونات Entity Type ، وإمكانية العمل بقواعد بيانات في عدة سيرفرات في آن واحد ، هذا بالإضافة للمميزات الأخرى لأطر العمل مثل:

Caching ، Form API ، Theme System ، File API ، Roles and Permissions ، Web Services ، Testing Framework

وعليه يمكننا القول أن أي تطبيقات يتم بناؤها بإستخدام Zend Framework أو Symfony يمكن بناؤها بإستخدام دروبال وعليه نخلص ( كخطوة ثانية ) إلى أن دروبال يمثل إطار عمل.

مميزات دروبال كإطار عمل:

يوفر دروبال طريقة هجينة لبناء التطبيقات بالإستفاده من خصائصه كنظام إدارة محتوى CMS وذلك بسماحه بإستخدام الوحدات الجاهزة وبيئة عمل مرئية Interface لضبط خصائص التطبيق، والإستفاده من خصائصه كإطار عمل Framework وذلك بسماحه بإستخدام الكود البرمجي في نفس الوقت لبناء أي جزئية في التطبيق والتعديل عليه عبر ما يسمى بالـHooks ، ومن هذه الإزدواجية في طريقة العمل يصبح المصطلح Content Management Framework CMF الأكثر قرباً.

دروبال على أرض الواقع

هذا الرابط (

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

مجال التعليم:

71 جامعة ضمن المائة جامعة الأوائل حول العالم تستخدم دروبال مثل:

MIT ، Oxford ، Boston University ، Carnegie Mellon University ، Harvard University ، Imperial College London ، Massachusetts Institute of Technology ، Stanford University ، University of Edinburgh.

مجال التقنية:

أكبر الشركات في مضمار التقنية أما تستند في خدماتها على دروبال أو أن دروبال متكامل مع تطبيقاتها بطريقة ما ومن ذلك AOL، AT&T ، DELL ، Java.net ، Intel ، PayPal ، Symantec ، Twitter ، Facebook ، Yahoo ، Linux Foundation ، OpenSource.com ، Ubuntu .

مجال النشر الإلكتروني:

أشهر المجالات والمواقع الإخبارية حول العالم والتي تتواصل يومياً مع ملايين الزوار والقراء تستخدم دوربال ومن ذلك : BBC Focus ، Linux Journal ، The Economist ، topCar ، Us Weekly ، Bollywood.com ، Examiner.com ، France 24 ، The Washington Post .

مجال الحوكمة:

يستخدم دروبال في مجال تطبيقات الحوكمة بصورة عامة ولكن بصورة كثيفة من قبل حكومة الولايات المتحدة الأمريكية بالتركيز على قضايا (Openness, Transparency and Visibility) ، وأيضاً في إداراتها وأقسامها المختلفة مثلاً:

Department of Commerce ، Department of Defense ، Department of Education ، Department of Energy

وغيرها من الإدارات والبيت الأبيض بالتأكيد.

مجال الترفية:

بجانب المجالات الأخرى نجد أن دروبال برعت وحازت قصب السبق في هذا المجال حيث الأكثر أهمية في العالم في هذا المجال يستخدمون دروبال من أمثال: Bob Dylan ، Britney Spears ، Chris Brown ، Foo Fighters ، Beyonce ، Rihanna ، Sean Kingston ، Fox News ، MTV UK ، Oxygen ، والشهيرة WWE.


12

دروبال هو مجرد نظام لإدارة المحتوى له العديد من الإضافات وله شبكة كبير ومعقدة من طرق التخصيص (مثل الخطاطيف hooks)

لكن مع الأسف مجتمع دروبال هو من هواة البرمجة بلغة php وبالكاد يعرفون عن مفاهيم البرمجة الكينونية OOP (أغلبهم أتى من خلفية php 4 وإن كان يعلم عن البرمجة الكينونية فهو لا يعرف عنها إلا إسمها).

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

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

أخي العزيز Alsadi أصبت في بعض الجوانب ويبدو أن لديك خبرة جيدة في موضوع أطر العمل والبرمجة كائنية المنحى ، أود الإشارة للنقاط التالية:

  • في إعتقادي أن الهواة هم من أسسوا ركائز ما نتمتع به حالياً من تقنيات ، حتى أنه كثرت في الآونه الأخيرة ألفاظ مثل geek وغيرها ، وأغلب من أثروا في مسار التقنية في العالم من أمثال بلقيتس وزوكربيرج وستيف جوبس وغيرهم كثر لم يتلقوا تعليماً تقنياً منظماً وبدأوا كهواة.

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

  • فيما يخص تسمية دروبال بإطار عمل أوافقك جزئياً فيما تقول لأن دروبال يبدو أنه يعمل على إيجاد طريق وسط بين كونه نظام إدارة محتوى وبين كونه إطار عمل لذا تجد أنه كثيراً ما يطلق عليه ( إطار إدارة محتوى ) Content Management Framework فلا هو CMS ولا هو Framework ، ورأي الشخصي أن هذه التسمية CMF هي أدق في وصف دروبال.

-1

أتفق معك تماما في كل النقاط. إلا أن النقطة الأولى لا تنطبق على مؤسس PHP انظر ماذا يقول هو عن نفسه

  • أنا أكره البرمجة

  • أنا لست مبرمج حقيقي. المبرمج الحقيقي يجد أين التسرب ويحله أما أنا فأعيد تشغيل أباتشي

  • أنا كنت سيء في كتابة كذا ولازلت كذلك

  • هناك أشخاص يحبون البرمجة. لكني لست منهم ولا أفهم لماذا يحبونها

  • أنا لا أعرف كيف أوقفه فأنا لم أكن أنوي كتابة لغة برمجة .. وليس عندي أدنى فكرة كيف نحلها...

  • لقد أصبح لدينا ميزة كذا وكذا من الكلام الفارغ الذي يعلمونه في الكلية لكني لا آبه به

في المقابل أتكلم عن نفسي أنا أحب البرمجة مع أني لم أدرس البرمجة فأنا رياضي أصلا لكني أبرمج منذ كان عمري 6 سنوات وأنا أعمل في مجال البرمجة منذ أكثر من 10 سنوات.

تعقيب مفاجئ ... هل عندك دليل على هذا الكلام ؟

مجتمع دروبال هو من هواة البرمجة بلغة php وبالكاد يعرفون عن مفاهيم البرمجة الكينونية OOP ....

14

كود دروبال. لأني قرأته عندما كنت أحاول استعمال وتخصيص drush أو عمل json api له.

مثلا دروبال حتى الإصدار السادس يعمل على PHP 4 بمعنى لا يوجد به OOP

الإصدار الجديد 7.x المفروض أنه جاء لإعادة كتابة دروبال لتكون OOP لكن انظر:

لا يوجد class ولا يزال يستخدم أسلوب الخطاطيف Hooks

انظر هذا الملف

يعرف

abstract class DrupalCacheArray implements ArrayAccess {

لكن اصعد وانزل في الملف تجد دوال غير تابعة لأي فئة/صنف.

هذا مثال blog على Yii وفيه مايقابل bootstrap.inc في دروبال

الكود هو 5 أسطر

<?php
$yii=dirname(__FILE__).'/../../framework/yii.php';
$config=dirname(__FILE__).'/protected/config/main.php';
require_once($yii);
Yii::createWebApplication($config)->run();

في المقابل عندما تبرمج بطريقة موجهة للكائنات لا تحتاج خطاطيف hooks تحتاج أن تعمل إمتاد من فئة أساسية extend ثم ملف الإعدادات تمرر هذا الصنف عبر factory pattern design

مثلا قمت بتخصيص طريقة تجميع ملفات CSS/JS في Yii هنا

لاحظ مبدأ فصل الإهتمام separation of concern ملف واحد تخصص واحد فئة واحدة.

قمت أيضا يتخصيص مدير الصلاحيات:

ملف واحد تخصص واحد صنف واحد.

قمت بعمل مدير للجلسات خاص بي

ملف واحد تخصص واحد اهتمام واحد صنف واحد ولا يوجد أي خطاطيف.

13

لكن هذا لا يدل على أن "مجتمع دروبال هو من هواة البرمجة بلغة php " ! ... دروبال أقدم[1][2] من Yii (إذا أردنا أن نعتبر أن دروبال إطار عمل كما جاء في المقال) لهذا أضن أن إستبدال كود النواة سياخد وقت ليكون 100% كائني التوجه (OOP) عكس Yii الذي جاء في وقت كانت البرمجة الكائنية التوجه هي - الموضة الجديدة (إقتباس من إحدى مشاركاتك حول روبي :) ) - ... تحفضي فقط على نعت مطوري دروبال بالهواة .

[1]

|2]

-1

ليس كل المطورين بل أنا قلت المجتمع. مجتمع دروبال (أقصد النظام البيئي التكافلي ecosystem) هو من الهواة. لهذا تجدهم في مقالة متقدمة يشرحون لك اكتب كذا كذا من اليسار لليمين ويمكنك أن تضغط shift مع 9 للحصول على علامة فتح القوس.

بأي حال لست وحدي من يرى ذلك. هناك من برى بأن كل مجتمع PHP هم هواة وأن مبرمجي PHP هم عميان يقودون عميان آخرين أقتبس This, right here, is the biggest problem with PHP: it is absolutely the blind leading the blind.

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

-1

تظل تلك وجهة نظر صاحب المقالة

إستشهاد الكاتب بأخطاء أصلحت

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

وهي لم تصلح ولن تصلح.

var_dump("61529519452809720693702583126814" == "61529519452809720000000000000000");

نقاش مطول انظر

يفضل دائما عمل المقارنة بإستعمال ===

var_dump("61529519452809720693702583126814" === "61529519452809720000000000000000");

إن كان هناك حيلة مستدركة لفحص المساواة لكن كيف تجعل عملية المقارنة (أكبر وأصغر) تتم بطريقة "آمنة"؟

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

وأحب أن أعتذر لصاحب الموضوع عن اختطاف موضوعه وتحويل مساره.

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

لم أفهم الجواب. لا يوجد لغة برمجية غير php تحتوي الليخة في الأنواع. هناك لغات ساكنة الأنواع static typed مثل سي وجافا وهناك لغات دينامية الأنواع dynamic typed مثل بيرل وبايثون وروبي وهناك صنف ثالث اسمه عبيطة الأنواع وهو php.

المثال ليس عن الأرقام المثال عن مقارنة سلسلتين نصيتين (هما نتيجة هضم كلمتي سر بواسطة md5) وكانت الطامة أن php ظنت أنهما أرقام وأعطت تطابق مع أن كلمتي السر مختلفتين. لاحقا تم استراك حل وهو استخدام === والتي تعني مقارنة آمنة النوع (أي في مثالنا لن تحاول أن تتذاكى وتحول النصوص إلى أرقام) لكن إلى يومنا هذا لا يوجد مقارنة أصغر وأكبر آمنة للنوع في هذه اللغة نعم لا تستطيع في لغة php مقارنة سلسلتين نصييتين أيهما أكبر وأيهما أصغر بطريقة آمنة (مثلا السلسلتين النصيتين "0012" و "11" المفروض أن الثانية أكبر نصيا)

ليس نقص هذه الميزة هي المشكلة (لو قام مجتمع php لإسكاتي بإضافة دالة اسمها type_safe_cmp) ستظل لغة سيئة التصميم.

لماذا صممت php بهذه الطريقة ولماذا تقوم بطعنك من الخلف؟ ببساطة لأنها ليست لغة برمجة عامة الأغراض. عندما تستلم منظومة بالمعاملات الممرة عبر $_GET مثلا search.php?query=ahmad&page=7&with_images=0 فإن php صممت لتتجاهل نوع 7 و صفر في المثال مع أنهما سلسلتين نصيتين للتسهيل على الهواة الذين تسلقوا مجال البرمجة على حساب تعقيد حياة من يستخدم php كلغة برمجة عامة الأغراض.

أحب أن أذكرك في مقولة

  • إن كنت تظن أنك تعرف الحل فأنت لم تفهم السؤال

أقصد بجوابي أنه في جميع الغات هناك hacks و workarounds للوصول للنتيجة المطلوبة .

وجود مشاكل في المقارنة لن يمنعك من عمل شيء امن بإستعمال php ومن سيستعمل php في مقارنة md5 hash وهو لا يعلم مشكل المقارنة فذلك خطأه .

إذا كانت php معمولة للهواة والمبتدئين والكسالى فل يبتعد عنها كل من يضن ذالك وإنتهت القصة .

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

بالمناسبة لم أسمع بهذه المقولة ولا أستطيع ربطها بسياق حديثنا

أنا قلت أن php بها مشكلة وهي أنها تحول السلاسل النصية إلى أرقام عند المقارنة (أكبر/أصغر) فأجبتني أنه لابد من حل لوجود برامج مالية (تتعامل بالأرقام). المشكلة هي مع السلاسل النصية وليس مع الأرقام. المشكلة موجودة في php وهي مشكلة عويصة ولحد الآن ليس لها حل. فتذكرت عندما كنا ندرس في الجامعة وأخذنا بعض النظريات صعبة الإثبات مثل نظريات فيرمات فقلت لنفسي هذه بسيطة وأثبتها في نصف صفحة طبعا تبين أني فهمت السؤال خطأ ومصدر المقولة لا أذكره لكنه كان يظهر في برنامج message of the day على ديبيان.

أقصد بجوابي أنه في جميع الغات هناك hacks و workarounds للوصول للنتيجة المطلوبة

المشكلة أنه لا يوجد (في حدود علمي) مقارنة أصغر وأكبر آمنة النوع في PHP. لو وجدت على شكل hack لكن أمرا آخر.

إذا كانت php معمولة للهواة والمبتدئين والكسالى فل يبتعد عنها كل من يضن ذالك وإنتهت القصة .

نحن نستخدم php بشكل رئيسي لأنها تؤدي الغرض. ليس بالضرورة أن تكون كاملة حتى تكون جيدة. نحن نستخدمها للغرض الذي صممت له وهو قولبة الويب.

  • PHP أخي الحبيب لم تبنى من الأساس على مفاهيم الـOOP ولكن حديثاً أصبحت PHP تطبق مفاهيم الـOOP بصورة ممتازة والدليل على ذلك كما قلت في تعليقك السابق أن " Yii أطار عمل حقيقي " وهو مبنى على PHP ولمزيد من التوضيح أرجو زيارة الرابط التالي:

نعم صحيح. لغة PHP بدأ من الإصدار الخامس تدعم البرمجة الكينونية بشكل جيد.

لكن هناك بعض المشاكل بها وهي في طريقها للحل. مثلا أذكر أنه لزمنا طريقة للوصول لخاصية ساكنة static member في فئة أم parent class فلم يكن هناك طريقة قبل 5.3 على ما أظن. والتي جاءت في 5.3 كانت طريقة إلتفافية (لكن تؤدي الغرض).

في عالم الحاسوب ليس بالضرورة أن تكون كاملا المهم أن تفي بالغرض.

هل الترجمة صحيحة؟ كينون أم كائن ؟ :/

أشكرك على التنبيه قرأتها معربة منذ فترة ولم أتحقق من الترجمة ، حسب Google Translator لكملة Entity ثلاثة معاني وهي:

كيان ، كينونة ، وجود.

Entity = كيان أو كائن، كما لا يخفى التقارب الكبير في معنى الكلمتين.

كيان الكائن هو نفسه، لكن ليس الكائن كياناً فقط! وخذلك على دي الفلسفة :/

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

وهل تعلم لماذا أنا أعلك حول هذا الموضوع؟ لأنه سبب تفوّق أمريكا علينا، هم من الروضة إلى البرمجة ، ونحن نحتاج حتى نجتاز الإعدادي ونتلقى تعليم أقل ما يقال عنه متوسّط في الإنقليزية حتى نتمكن من دخول عالم البرمجة والمعلوماتية والحواسيب ووو .. اللّغة!