هل استخدام أطر العمل أمر جيد؟
هذا هو السؤال اليوم في منتديات البرمجة العربية، أخص لغة PHP وإطارات العمل فيها (CakePHP, CodeIgniter, Zend, Symfony).
في البداية دعني أحدثك عن أطراف النزاع، الطرف الأول شخص قرر أن يكتفي من البرمجة العادية المتعبة في لغة PHP وأن ينتقل لإطار عمل، الطرف الثاني شخص لايعتمد بكلامه على أي أساس علمي، يستشهد بأقوال أناس يكرهون أطر العمل (راسموس)، ويهاجمون الطرف الأول هجوماً عنيفاً لقراره “الخاطىء والغير مغفور له” باستخدام إطار عمل. لاداعي لذكر أن أعداد الطرف الثاني تفوق الطرف الأول بكثير.
ماهي مشكلة الطرف الأول؟
- قرر أن يفتح عينيه على جديد العالم في تقنيات البرمجة وأن يجرب شيء مختلف عن المعهود لعله يستفيد، وهو حتماً سيستفيد سواء استخدم إطار عمل أم لا المهم أنه اكتسب خبرة جديدة.
- قرر أن يتعلم شيء جديد وهذه حسنة بحد ذاتها.
- قرر أن يغير من عاداته البرمجية فربما يغيرها للأحسن وربما لا ولكن المهم أنه قرر أن يغير المألوف.
ماهي مشكلة الطرف الثاني؟
- يدافع عن البرمجة العادية بال PHP وكأنها شيء لاينبغي المساس به أبداً.
- يستشهد بأقوال المعادين لأطر العمل (أشهرهم راسموس مخترع PHP والذي يروج لإطار الزيند بكلامه والباقي أغلبهم أناس لم يستطيعوا تقبل أو تعلم أطر العمل) دون إدراك لهذه الأقوال.
- لم يستعملوا يوماً أية أدلة علمية (benchmark) لقياس الأداء بين البرمجة العادية وإطار العمل، المهم لديهم أن إطار العمل شيء سيء جداً جداً.
- لم يستعملوا أطر العمل، أو استعملوها ولم يفهموا كيفية عملها فقاموا بحملة شعواء عليها.
- يتحدثون عن الثباتية وكأنهم يديرون مواقع بملايين الزيارات اليومية ومسألة الثباتية (stability) تهمهم جداً جداً جداً أكثر من أي شيء آخر.
أمام كل هذه الأمور كيف نتعامل مع الطرف الثاني؟
- هل يوجد لديك أدلة علمية (عدا كلام راسموس الذي صار قديماً)، بالطبع لاتجرب المثال السخيف (Hello World) لأنه سيعطي نتائج هزيلة في الاختبار؟
- هل جربت الإطار؟ ما الذي لم يعجبك به؟ لا أريد كلام منقول أريد تجربتك الشخصية؟
- هل تعلم أن موقع Firefox Add-ons مبني على CakePHP، وأن Magento مبنية على Zend Framwork والكثير من المواقع التي يهمها الثباتية أكثر مني ومنك ومن المواقع العربية مجتمعة تستخدم أطر العمل؟
- هل كتبت يوماً تطبيق ويب محترم واحترافي لنشاهد كيف تفوقت على أطر العمل؟
- هل شاهدت يوماً هذه الصفحة للمواقع المبنية بال CakePHP ويوجد مثلها في كل إطار عمل؟ هل فكرت يوماً بأن هؤلاء المطورين الذين استخدموا أطر العمل لم يستخدموها عبثاً؟
إذا كنت من الطرف الأول ففكر جيداً قبل الاستماع للطرف الثاني، وإذا كنت من الطرف الثاني فرجاء لاتعلق حتى تجيب عن الأسئلة الخمسة التي طرحتها.












موضوع أكثر من رائع ولي عوده بإذن الله لطرح رأيي فيه
شكراً لك اخوي خالد وبارك الله فيك
بعدما قرأت ردودك “هناك” عرفت أنك لن تمر مرور الكرام
لست من الطرف الأول و لا من الطرف الثاني، لكنني أرى أن كل متعصب لميدانه فهو على خطأ..
استخدام أطر العمل ليس سيئا لذلك الحد الذي يصوره الطرف الثاني، و كأن الأطر نقيصة لا تغتفر! بالمقابل للبرمجة بدون أطر متعتها، و اللبيب من يدري بخبايا البحرين و يدري ماذا يفعل..
ما يضحكني فعلا حديث البعض (و ما أكثرهم في وطننا العربي) عن البرمجة و التطوير مع أحكام و قوانين، تعتقد أنه مبرمج قولا و فعلا، و الحقيقة مجرد ببغاء و وعود فارغة..
@عبد الملك: شرفت بأي وقت ورأيك بالتأكيد يثري الموضوع كثيراً.
@محمد: صديقي العزيز أسعدني مرورك، مازلت لحد اليوم اعتمد على البرمجة العادية في بعض الأمور التي أرى فيها استخدام إطار العمل يعقد المسألة، أنا من الطرف الثالث
بالتأكيد هناك آلاف المواقع الكبيرة المبرمجة بالطريقة العادية.
هؤلاء تسكتهم عندما تسألهم عن “أعمالهم العظيمة” فتجده يهرب فوراً لأنه لم يحقق شيء على أرض الواقع.
اما انا ففعلا لا اعرف انا مع اى طرف ولكنى مع الاثنين الطرف الاول فانا فعلا عملت على اطارات عمل واولها CodeIgniter وحاولت احترف ال cakephp ولكن لم يكفينى الوقتى فبعد المره على بعض اطارات العمل وحيت انى افهم واستوعب البرمجة الشيئية (Object-oriented programming)ففكرت فى عمل ملفات خاصة بى
library – Classes ووضعت كل ما احتاجه وقد احتاج والحمد لله اعتقد انه نجج الامر فاليوم والحمد لله انا امتلك بعض الخلايا (classes)من انتى للتعامل مع قواعد البيانات ووظائف اخر واظن الامر بالنسبة لى ناجح جدا الحمد لله ولكن الامر عندى لا يقف الى هذا الحد فانا احاول ان اتابع الامر لكى اصل الى اطار عمل طيب وافضل ال cakephp واخف فهل انا من اى طرف ولكن فى الحق انا مع كل ما يساعدنى على انجاز عمل عالى الجودة وباقل جهد واقل وقت واظن ان الامر حتى الان شبه ناجح .
إذاً أنت مثال للنجاح والمثابرة! ماشاء الله عليك
موضوع قيم جدا .. وكنت أريد أن أقرأ مثل هذا منذ شهور
فلعلي الأن كنت سأكون محترف إحدي اطر العمل
شكرا لك .. وليتك تكمل دورة الكيك
برأيي ان استعمال اطار عمل حسنة كبيرة وفائدة عظيمة للمطور
شخصيا كنت ساتوجه الى cakephp وبعدما (سمعت من الناس الذين استعملوا هذا الاطار) أن التحديث والتطوير بطيء وان documentation يتم تحديثها ببطء
بعد ذلك فكرت وبحثت ووجدت أن من يريد برمجة تطبيقات ويب صغيرة وبسيطة فعليه ب symfony ومن يريد برامج كبيرة بها مميزات كثيرة (مكتبات وإضافات كثيرة) وقبل ذلك مستعد لتعلم مفاهيم OOP بطريقة قوية جدا فعليه ب zend
شخصيا أشجع على استعمال اطار عمل، وان كنت حاليا ابرمج كل شيء من الصفر بدون إطار عمل
@مصطفى: إن شاء الله، لكن هل بدأت بشيء بالكيك أم لا؟
@cssbit: المشكلة أننا كثيراً مانبني وجهة نظرنا بناء على كلام الناس وهذا خطأ كبير، الكيك كان توثيقه قليل أما الآن قلاتبحث عن شيء إلا وتجده على الرغم من وجود فصل أو فصلين غير مشروحين بشكل كافي وهو من أسهل الأطر.
كلام جميل أخي خالد،
على الرغم من عدم ارتباطي بالـ php
لكن يضايقني أن البعض يتعصب لأجل التعصب،
أعني أنه لايعلم الكثير عن ثقافة الـ reuse أو إعادة الاستخدام،
وهي مصطلح خصب في مجال هندسة البرمجيات،
فالـ frameworks أو أطر العمل، أحد صور هذا المفهوم،
والذي سيدفع بعجلة التطور أكثر أو أكثر،
فبدلاً من بناء موقع يستهلك الكثير من الوقت،
بإمكانك استخدام أطار عمل يكفيك عناء بعض البرمجة،
على أية حال، أجزم أن المستقبل لثقافة إعادة الإستخدام.
..
بالمناسبة،
هل Dijango جيد في نظرك؟
تحياتي
عبدالرحمن.. : )
* عفواً للتو انتبهت أن dijango هو إطار عمل لـ بايثون.
تحياتي.. : )
هؤلاء ليسوا هواة، انهم مطورين محترفين، قضوا سنوات في البرمجة، فلا استطيع تجاهل آرائهم المبنية على عمل واجتهاد لسنوات
cake ليس سيئا بل لم أجد ما يشجعني كي انتقل اليه ولدي خيارات أخرى قرأت أنها أفضل
وان اردت الصراحة فانني قرات مواضيع أخرى تقارن بين cake و symfony مثلا، ووجدت الكاتب يفضل cake ويقول انها الافضل والانسب
القضية هي أي اطار مناسب لي، وأي إطار مناسب لك
أعتقد ان اختيار فريق magento لإطار zend ليس اعتباطيا، خاصة وأن الفريق يضم خيرة المبرمجين
كما أن إطار zend يشرف عليه مبرمجين متخصصين ذوي باع طويل في PHP
بالنسبة لقلي انا مع الشي المناسب, على حسب المشروع كبير و لا صغير.
, و ما في قلها دعم بشكل عام من شركات الاستضافة و خاصة العربية.انا سوف القي نظرة على cake مع اني ما ارتحت له. بالنهاية هاد مجرد رأي شخصي,مابعرف إذا الكم ملاحظات.
مع أني ما بفضل php للمشاريع الكبيرة,لو شو ما صار انا مع اي شي بخص Java
(J2EE) قلها أطر كاملة,شي روعة سهلة البرمجة,بفضلها على كل شي هي وجهة رأي.
بس فيها مشكلة عويصة و خاصة بالنسبة للأنترنت ,مافي استضافات مجانية
سلام.
@عبد الرحمن: بارك الله فيك كلامك رائع، مفهوم reuse و refactoring اصبح منتشر بشكل كبير ويجب على الجميع استخدام هذه المفاهيم.
ونعم إطار Dijango هو أشهر إطار للبايثون واتمنى لو تتاح لي الفرصة والوقت لتعلمه.
@cssbit: لم أقل هواة ولكن لكل إنسان رأيه الشخصي، فمثلاً أنت تحب اللون الأزرق لكن غيرك لايحب هذا اللون، هذا هو القصد جرب واحكم بنفسك. لكي تحل مشكلة الاختيار بين الإطارات جربهم واعطي لكل إطار أسبوعين مثلاً.
ملاحظة: لم أقل أن الزيند سيء! ولكنه لايحقق مفهوم إطار العمل والكل يعرف ذلك، هو أقرب للمكتبة من إطار العمل.
@عدنان: النقاش حول إطارات PHP وليس الجافا
الجافا لايستطيع أحد التكلم عليها بشيء فهي أكبر من ذلك بكثير
خالد أخ عزيز وأحترم رأيك دوماً.
، لكن الكيك بالنسبة لي (صفر) في التوثيق. هذا الامر ليس جيداً لواحد مثلي.
لكن بخصوص cakephp فللأسف لم أجد دليل أو أي أمر يشجعني للعمل عليه. مثلا:
أنت قمت – مشكوراً – بطرح بعض التدريبات وأتبعتها أنا خطوة بخطوة وعرفتني على الإطار لكن توقفت ….. إلى هنا ليست بمشكلة
كالعادة أنا أعتمد على إنجليزيتي وأقرأ الكتب الإنجليزية
أنا عندما أريد أن أتعلم شيئاً أريد أن أجد له توثيق شامل … لا لا ليس شرطاً أن يكون شامل بل على الأقل دليل بسيط يبين لنا كيفية تعلمه مثلا rodmap لو لم يكن للفريق وقت كي يوثق ما عمل.
لا توجد حتى رؤوس أقلام لتعلم cakephp.
أنا في آخر فترة راجعت معلوماتي في php فوجدتها ضعفت كثيراً لتركي لها بسبب دراسة الثانوية. المهم رجعت له من جديد وهذه المرة معتمداً على كتاب php.net/manual الأمر كان ممتعاً مع أن الكتاب لا يحوي صوراً ههههه لكنه علمي 100% فهو يحوي على دليل لتعلم اللغة وخصوصياتها كما يحوي على مرجع كامل للدوال (98% منها) مع مثال واحد لكل دالة.
هل نقارن ذلك بتوثيق cakephp؟؟ بالطبع لا! أنت كما تعرف أنه ليس من الجيد أن أضل أتخبط في أمر أريد أن أستخدمه على أرض الواقع. فهو ليس نظام تشغيل تستطيع أن تتجاهل ما لا ينفعك. بل أنا أريد أن أستخدم إطار العمل وأن أعرف وأستفيد من كل ما يقدم لي وإلا مالفائدة؟
أمر آخر الجميع يتكلم عن روبي وجمالية cakephp لأنه مقتبس من طريقة عمل RoR هل يجب أن يهمني هذا الأمر؟ كشخص يريد تعلم php فقط بدون التشتيت في لغتين لنفس المجال؟
قيل لي أن أتعلم Codeigniter الأمر منطقي فهو يحوي على أغلب الأمور التي أعرفها عن cakephp ويحوي على توثيق شامل.
أنا لا أختلف معك في شيء بقدر ما أريد منك أن تكف عن تشجيعنها على إطار العمل بدون توفر طريقة جيدة غير تعلمه عن طريق التدريبات المتناثرة هنا وهناك
.
في النهاية أرجوا أن تعلم أنني سأعطيك فرصة (تهديد ههههههه) لمدة شهر ونصف من الآن كي تقنعني بإستخدام cakephp أضفني على جيميل إن تطلب الأمر هههه
، هذا قبل أن أنهي كتاب php.net/manual وأختار إطار عمل لأستقر عليه
، كما قلت لك أنا لست سيئاً في php لكن هناك الكثير من الأمور الموجودة في الدليل أحببت أن أتعلمها بدلاً من البحث في جوجل في كل مرة أحتاج فيها أمراً.
تحيتي لك أستاذ خالد
يالطول الرسالة التي كتبتها! لم أتنبه
.
.
على العموم أتمنى أن لا تنزعج من كلامي إن كان متكرراً، نفسه في كل مرة!
ببساطة تجاهل الأمر إن كنت لا تملك الوقت لذلك
لنوضح الأمور:
1- توثيق PHP لايقارن بأي توثيق بالعالم (اللهم إلا MSDN)
2- تشبيه الكيك بالرور يهمك إذا عرفت ميزات الرور الرهيبة!
3- هل قرأت: http://book.cakephp.org/ من المؤكد لا، لأنك لو قرأته لن تتكلم هكذا، والكتب الإلكترونية التي صدرت؟ أيضاً لم تقرأها.
بالأخير لاتقارن توثيق PHP بالكيك أبداً، الأولى لها أكثر من 15 سنة مع ملايين المطورين والثانية لم تظهر إلا قبل فترة وجيزة.
أمر آخر، ليست مهمتي ان أعمل دعاية للكيك فأنا لست متعصباً له ( أو هكذا اعتقد
) ولكن مايثير الحسرة هو الطرف الأول فعلاً!
قضيه التعصب لشيء مهما كان سوا برمجه او شركة أمر ممقوت بالنسبة لي
فقضيه اختيار اطار العمل المناسب يجب ان تكون مبنية على هل هذا الاطار يلبي احتياجاتي ام لا
وهل سوف يؤدي مااريد عمله في مشروعي ام لا
لا اتعصب لان هذا افضل او هذا أسوا
وهنا قضيه أخرى لابد ان نحكم على الشيء قبل ذلك بتجربتنا الشخصية له مهما كان ومهما سمعنا من سيئات من الناس
انا عن نفسي اعلم ان لغة PHP لغة رائعه وتستحق التجربه ولكن حتى رغم سماعي الكثير من المدح لن احكم عليها حتى اجربها واتعلمها
ولكن بما اني لم اتعلمها ولا أبرمج الا بلغة vB.NET اعتبرها افضل لغة لتطبيقات ولكن عندما أقول أفضل لايعني ان البقية فيهم سؤ او نقص ولكن الفرق اني لم اجربهم حتى احكم عليهم
بارك الله فيك، رأيك يثري الموضوع وبالتأكيد كلام لاغبار عليه ومن يستمع لكلام العالم فسينتهي به الوضع للعمل على الأسمبلي
من الصعب الإعتماد على البرمجة بدون إطار عمل في عمل كبير اليوم ! التطوير والتحديث والإضافة اليومية ستتطلب الكثير من الجهد ,, فضلا عنالوقت وما له من أهمية لا يمكن نكرانها في تحديد كافة الإختيار لدى المبرمج أو الشركة ..
ماشاء الله اكثر من 20 رد , يبدو ان الموضوع محل جدال للكثيرين , سوف أحاول ان اختصر
أطر العمل شئ موفر للوقت بدرجه خيالية فمثلا مع cake يمكن عمل صفحة دخول فى أقل من دقيقتان وربما أقل من دقيقة وما خفى كان أعظم
بالنسبة لاى اطر العمل فمع تجربتى ومع ماقالته فرق العمل الخاصة بتلك الأطر
cake: مناسب للمشاريع الصغير ومتوسطه الحجم وأنصح به بشدة , كما ان التوثيق الخاص به رائع وخصوص اخر اصدار الذى يدعم تعددية اللغات , التطوير قد يكون نوع ما بطئ ولكنه محسوب بشكل جميل وهو بلا ادنى شك تطوير للأفضل , وموضوع تطوير التوثيقات , اعتقد انك بعد ان تقوم بعمل تطبيق واحد سوف تعرف بنفسك كيف تحصل على ماتحتاجه فى اقل وقت ممكن
اما بالنسبة symfony فهو مناسب للمشاريع كبيرة الحجم وخصوصا لو كنت تعمل ضمن فريق عمل ولكنى لم اجربه ولكن من النظره الاولى على التوثيق علمت انى سوف استفيد منه جدا جدا
zend لم اجربة حتى الان ولكن حسب ما عرفته عنه انه يحتاج الى كثير من العمل قبل ان يكون جاهز للعمل
واسف للإطاله ولكنى اعتقد انك فقط بمجرد نظره سريعه من مقال لايمكنك الحكم على اى اطار عمل , جرب أولا ثم احكم
@كريم: معك حق
@أحمد: كلام صحيح ومختصر مفيد، القاعدة الذهبية جرب بنفسك ثم احكم
هناك تضارب واراء مختلفة هنا
symfony للمشاريع الصغيرة والمتوسطة وليس للكبيرة الحجم
zend إطار عمل متكامل وليس مكتبات، ولا يختلف اثنان انه في أي مقارنة يأتي في المرتبة الاولى
لا يمكن قول هذا افضل واحسن من هذا، لكن دائما يكون هناك شيء يتفوق على شيء
ونحن هنا نبدي آراء ولا نتعصب للغة او اطار عمل
شخصيا ساتجه الى synfony واحترم من يعمل ب cake أو بإطار آخر
خالد:
عندما قلت اراء مبرمجين، فانا اتحدث عمن كان يعمل ب cake وانتقل الى اطار اخر، ولاحظ الفرق الكبير، وليس من جرب اطارا واحدا، الامر هنا يتعدى قضية اختيار اللون المفضل
يا خالد، الظاهر طورو التوثيق آخر فترة.
. والكتب لا أستطيع شراءها 
وأكثر ما يهمني فيه هو الأمان
. لذلك أنا أبحث عن إطار عمل كي أحافظ على هذا الأمر قدر الإمكان
.
، وأنت من الأشخاص الذين أهتم لآرائهم
آخر مرة قرأته كان فقيراً
خطوة جميلة، أنا أتوقع أنهم لم يكتبوا التوثيق للأمور التي كانت في طور التطوير.
لست مستعجلاً في الإختيار، لكنني مهتماً بعدم إختيار إطار خاطيء!
لأنني في هذه الفترة أستعد لعمل مشروع في نفسي أفكر فيه من سنة تقريباً
في نهاية الأمر أشكرك كثيراً على كل ما تكتبه. فأنا بطبيعتي كثير التشوق للمعرفة وللإطلاع على الجديد في عالم تطوير الويب
@cssbit: كل له رأيه والرجاء ثم الرجاء الإبقاء على هدف الموضوع الأساسي.
بما يختص أطر العمل , هل تؤيدها أم لا ؟
هناك مثل أجنبي يقول إبدء من حيث انتهى الآخرون فلماذا أعيد اختراع العجلة ولدي أطر عمل تساعدني في إتمام الأمور المتكررة في كل مشروع وتسهل علي بنائها
فنعم أنا أؤيدها بكل تأكيد وأنا مع الطرف الأول
بالنسبة لحوار أطر العمل وما هو أفضلها فكلاً يتميز بميزاته الخاصه , ماذا أختار ؟ سأختار الأفضل بما يتناسب لمشروعي مثلاً إذا كان المشروع بإمكان عمله بجميع أطر العمل سأختار الأسهل والأكثر أداء اما إذا كان المشروع لا يمكن عمله إلى بإطر عمل محدده حيث ان هناك مميزات أريد عملها وغير موجوده ببعض الأطر فسأستخدم ما يستطيع توفيره لي إطار العمل …
وهناك الكثير من الأمور التي يعتمد عليها مدى اختيارك لإطار العمل المناسب
حالياً لست مثقفاً ولا خبيراً في أطر العمل ولم أنتقل لها بعد , لأنني لم أقم ببناء مشروع متكامل به حتى الأن , انتظر فكرة مشروع الذي سأقوم بناءه بها بإذن الله
ومنكم نستفيد , شكراً لك أخوي خالد لطرح هذا الموضوع الرائع
ماشاء الله عليك، فعلاً تعليق يستحق الانتظار. كلام منطقي وأكثر من رائع وسمعته مرة من شخص خبير في فرنسا حيث قال بأنهم عملوا على مشروع لمحطة الأنفاق واستخدموا فيه أكثر من خمس لغات، لغات وليس أطر عمل! لماذا؟ لأن كل لغة كانت مفيدة بمجال معين والمشروع كان حساس ودقيق لدرجة كبيرة.
شكراً لمرورك وتعليقك الرائع
موضع جميل اشكرك اخي على الطرح.
شخصيا تعاملت مع الزيند اعجبتني فعلا.
مايميزها يمكن ان تستعملها كمكتبة و اطار عمل مع التحكم الكلي في كل مكونات الاطار عكس باقي الاطر. من الناحية التقنية الزيند مبنية كليا للتوافق مع النسخة الخامسة من اللغة وتوثيق الزيند جيد.
بالنسبة للمطورين الذين يتعاملون مع الفلاش مؤخرا ثمت اضافة كلاس يسمح بعملية اتصال php مع flash والكلاس هو Zend_Amf. اختيار Abode للزيند لم يكن اعتباطيا يعني لن تجد صعوبة للتعامل مع flex او flash من خلال php. ناهيك عن الكلاسات الاخر التي تسمح بالاتصال مع المواقع التي توفر خدمات مشهورة كـ : openID, google, youtube, yahoo, flickr technorati, amazon, Delicious . وغيرها..
بخصوص الجافاسكريبت. الزنيد تدعم dojo و jquery من خلال الكلاسات Zend_dojo و ZendX_JQuery. دون ان ننسى Zend_Form لتوليد الفورم. ولمن يبحث عن محرك بحث فعليه بـ : Zend_Search_Lucune.
زيادة على ذلك القائمون على المشروع هم مطوروااللغة.. يعني اهل مكة ادرى بشعابها
من مساؤى الزنيد اذكر صعوبة التعامل مع نظام القوالب يعني نظام القوالب صعب قليلا غير انه يمكن التغلب على هذه النقطة باستخدام smarty او اي نظام اخر.
وكما قال الاخوة جرب بعدها احكم.
عذرا على الاطالة و دعمتم في رعاية الله وحفظه
والسلام
شكراً جزيلاً على هذه المعلومات، وبالفعل استخدم Zend_Search_Lucene مع الكيك لأحد المشاريع وهذا من ميزات الزيند أنه يمكنك استخدام أصنافه مع أنظمة غيره.
خالد متعصب دوما
اطر العمل جميله لكن الفكره انه ليس من المطقى ان تقنع الناس كلهم باستعمالها
الفكره هناك وظائف معينه فيها دائما Don’t reinvent the wheel
ايضا يقال عن اطر العمل شىء ظريف
Makes the easy things hard and the hard things easy
ولكن البرمجه الحره لها متعتها ولها قوتها… عن نفسى حتى اكون واضح لم استعملها فى شىء جدى او حتى اكون اوضح احب ان اعمل مع ال PHP كلغه برمجه اكثر منها Web Oriented
بالمناسبه ال PHP Documentation أفضل ما رأيت بسسب ال User Contributions من مستخدمين ذوى مستوى متباين اما ال MSDN صحيح شامله لكنها ميته واجزاء كثيره منها كلام سخيف .. حاولوا ان يضيفوا مشاركات القراء مثل ال PHP ولكن التطوعيه عندهم لا تسمح بانتاج شىء جيد
كما قلت سابقاً لا استخدمها دوماً ولكن غالباً
اعتذر وصلت متأخرا
اردت ان اقول انني لن اتوجه الى shymfony
ولدي خيارين الان اما cakephp او zend
السب الذي يجعلني ارجح التوجه الى cake هو ان zend ثقيلة الحجم وقد لا تكون عملية للمشاريع الصغيرة التي ابرمجها
ايضا قرات عن cake انها تميل كثيرا الى منصة ROR وهذا قد يساعدني في العمل عليها لاحقا
في الحقيقة ما زلت مترددا في الاختيار وقضاء وقت طويل في منصة ادرك انها لم تكن الخيار المناسب لي
في جملة، ماذا تستطيع ان تقول لي اخي خالد حول cake وهل انت نادم او سعيد باختيارك هذا
البعض بعد تجربة المنصات يلجا الى انشاء منصته الخاصة كما فعل صاحب Solarphp
واعتقد ان الجميع شعر بهذا الشعور في وقت من الاوقات، بحيث تاتيتك فكرة انشاء منصة خاصة بك
لماذا يجب استعمال اطار عمل ؟
– توفير الوقت والجهد
– القدرة على قراءة اكواد الاخرين
– العمل في بيئة ممتلئة بالمبرمجين العالمين والمتطوعين الخبراء
عيوب:
– الالتزام بقوانين وطريقة عمل الإطار
– لن تكون هناك امكانيات كبيرة كي تختبر وتتعلم تقنيات وامور في اللغة لان كل شيء جاهز تقريبا
لو كنت نادم كنت غيرته
الكيك إطار ممتاز ومرن لدرجة كبيرة، عيبه الوحيد هو دعمه لل php 4 لذلك تجد فيه استخدام المصفوفات بدل الكائنات، ولكن في النسخة القادمة 2 سيتم التخلي عن دعم php 4
الموضوع اعتقد انه يجب ان يكون فيه مرونه اكثر .
.
فالسؤال استخدم اطار MVC او لا , يجب ان لايحدده “انا احب ذاك ولا احب ذلك” .
فالتحديد هنا يحدده ماهيه وطبيعه البرنامج الذي تريد بناءه , خصوصاً اذا فهمنا ان مفهوم الـ MVC يتعلق موضوع هندسة البرمجات وانماط التصميم , وهذه كلها مراحل تسبق عمليه التكويد الفعلي .
فاعتقد ان البعض يعلم ان الـ MVC ماهي الا عباره عن نمط تصميم “Design Pattern” يهدف الى تقسيم البرنامج وتوزيعه بشكل يسهل بعدها عمليه التطوير على المراحل المختلفه للتطبيق . واساساً الـ MVC يستخدم ضمنياً انماط تصميم ابسط وهي الانماط Observer, Composite,Strategy وايضاً احياناً يتم استخدام نمط الـ Factory فيما بين الـ View-Controller . ولذلك , ليس كل التطبيقات يمكن ان يتم انجازها بتلك المكونات او ممكن القول ان تلك الانماط ليست الحل الامثل لتلك التطبيقات . وكلامي هنا بالعموم وليس عن لغه محدده .
نأتي هنا الى موضوع الـ Web والـ PHP , فطبيعه الويب الموزعه , تتناسب مع الـ MVC بشكل عام .
اما عن مبرمج الـ PHP الذي يريد سرعه في التطوير والانتاجية والبدء سريعاً فالافضل له ان يتسخدم الاطر , لانه سوف توفر عليه وقت وجهد تتطلبها طبيعه الـ PHP نفسها , فمعروف ان لم تخطط جيداً لبرامجك في الـ PHP , فسوف تنتهي في الغالب الى ان يكون لديك Spaghetti code (بنكهه اندومي
واعتقد ان الحاجه الماسه لإطر العمل سوف تقل نوعاً ما مع ظهور الـ PHP 6 .
الخلاصه , يجب ان تأخذ وقت كافي لكي تقرر هل ستحتاج فعلاً الى استخدام اطار ام لا ..
@cssbit: كما قلت لم اجرب zend ولكنى بالتاكيد متاكد انه الاقوى,
فى توثيق symfony قالوا انك تضيع وقتك فى استخدامها مع مشاريع صغيره , وهذا لاحظته من تقسيمه controllers و actions الافتراضية , ولكن على كل حال لم استخدمها بعد فانا فى فترة سبات مع cake
@خالد: اتمنى الا اكون قد خرجت عن الموضوع
@محمد: أسعدني تعليقك كلام لاغبار عليه
@أحمد: المدونة مدونتك
خالد انت حطيت ايديك على الوجع
العالم خرجة عن الموضوع الاساسي و هو استعمال اطر العمل
انا ما عندي راي بس رح قول الي عم شوفه
الي عندوا نظرة عامة على لغات البرمجة ممكن يفهم شو عم قول
نبدا بميكروسوفت لغاتها و تقنياتها تعتمد على أطار عمل دوت نت
في الويب ال asp.net هي تطوير لل asp التي كانت لغة سكريبت مثل ال php
سن ميكرو سيستم jvm في الويب ال jsp لحقت بميكروسوفت و عملت ال jsf
تقليد لل asp.net و الخ من التقنيات wpf و wcf
جميعها اطر عمل تعتمد على ال اطر عمل اخرى مبنيه فوق بعضها
هذه هي الشركات الكبيرة و توجهتها هذا الذي اره
راي الشخص : كل شي بمحلوا حلو
و شكرا
صحيح، الأخ محمد (mohmf) تكلم بنفس الفكرة
@خالد:
ألا ترى أن أطر العمل مناسبة للعمل الجماعي أكثر من الفردي؟؟
حسب توقعي أنه فائدتها هناك تظهر بجلاء!
السلام عليكم ورحمة الله وبركاته فى الواقع لى رد صغير على موضوعك وهو مبداء من مبادئ علم (التنمية البشرية) وهو ان كل من لا ييتطور هو يتأخر
وفى الواقع انا استخدامى لفريم وارك كانت تجربه طوووووويلة جدا ً ففى البداية انا لم اعمل بالفريم وارك ولاكنى عملت بنفس الفكرة وهى استخدام كلاسات اكتباها انا لتفيدنى فى العمليات التى استخدمها بكثرة وكانت هذة الكلاسات
عمليات قواعد البينات بالكامل
اضافة تعديل حذف بحث الخ
خلق وتعديل النماذج
خلق النماذج استنادا ً على قاعدة البينات مع استثنائات جذرية كنت اقوم انا بكتابتها واستخدامها فى صالحى
ومن ثم اكتشفت فرريم وارك الزند ثم الكيك بى اتش بى
واستخدمت الكيك
وأصبح الموقع الذى يأخذ منى شهر يأخذ اسبوع على الاكثر …..
أعتقد ان هذا الوقت كافى للرد على كلا ص من الطرفين
وعليكم السلام ورحمة الله وبركاته، شكراً لمشاركتنا هذه التجرية ولايقدر الشيء إلا من تعامل معه.
مشاركة بسيطة أود أن أتقدم بها بناء على تجربة مسبقة وخبرة متواضعة :
أود الإشارة إلى أنني لن أتكلم عن لغة معينة و عن الأطر المستخدمة في تلك اللغة, بل سأتكلم بشكل عام وبغض النظر عن لغة البرمجة, إذ أن الأطر آنفة الذكر قد أصبحت متوفرة في معظم اللغات, مع العلم أن تجربتي لهذه الأطر في لغتين هما الـ Java والـ PHP.
في بادئ الأمر كلنا تعلمنا البرمجة العادية التسلسلية و أصبح لدينا طرق و مكاتب من صنع أنفسنا نستخدمها عند الحاجة, ثم تعلمنا في مابعد البرمجة غرضية التوجه, في بادئ الأمر وجدنا الانتقال إليها فيه القليل من الصعوبة, ولكن وبعد فترة اعتدنا عليها و وجدناها هي الأفضل, إذا أنها قدمت لنا الكثير من الميزات التي كنا نفتقدها في الطريقة القديمة.
نفس الأمر ينطبق على فكرة الانتقال إلى استخدام أطر العمل, فأطر العمل ليست مجرد تغليف أو مجرد طريقة أو آلية, وإنما معظم أطر العمل تعتمد على ما يسمى بالـ Design Pattern نماذج التصميم, وهي نماذج يعتمد عليها المرء ليصمم البنية التي سيبنى عليها برنامجه, ومن خلالها ستحدد مسؤوليات كل قسم من البرنامج وطرق التواصل بين هذه الأقسام, وبالتالي سيلتغي التكرار في البرنامج و ستصبح البرمجة أسهل و منظمة أكثر و مهيكلة بطريقة سليمة تسمح بسهولة التطوير و صيانة البرنامج, كما تسمح لأي شخص جديد بالانضمام إلى فريق تطوير البرنامج. إن هذه النماذج تستخدم في المشاريع الكبيرة و قد أثبتت فعاليتها إذ أنها تعتمد على أسس هندسة البرمجيات السليمة و أهمها مفهوم الفصل و التلاحم أي أن أقسام البرنامج مفصولة عن بعضها البعض و لكل قسم مسؤولياته و مهامه, كما أن هناك طريقة منظمة تتصل فيها هذه الأقسام مع بعضها البعض. وأحد هذه النماذج هو : MVC -Model.View.Control والذي يحقق المفهوم السابق. هذا النموذج معتمد من قبل معظم أطر العمل الخاصة بالـ PHP كما أنه يستخدم بشكل واسع في معظم لغات البرمجة و بمعظم التطبيقات و حتى عند بناء المكاتب البرمجية.
سأطرح الآن أمثلة عن هذا النموذج :
المثال الأول في الجافا: فكل من يعرف مكاتب الـ UI في الجافا يعرف أن أحدها هي مكتبة الـ Swing وهي مكتبة قوية جداً وتملك الكثير من عناصر الواجهات الغنية, هذه المكتبة مبنية داخلياً باستخدام النموذج MVC. فمثلاً أنت تريد عرض معطيات معينة فيجب أن تخزنها بـ Model ومن ثم تحدد طريقة عرضها فمثلاً يمكنك عرضها ضمن جدول أو ضمن قائمة أو… نلاحظ إن تغيير طريقة العرض View لا يؤثر على المعطيات, فهي موجودة و معالجة, ما بقي هو عرضها بالطريقة الأنسب.
المثال الثاني عام ولا يخص لغة معينة : هناك الآن ما يسمى بالـ Multi Layers Application أي الأنظمة متعددة الطبقات و التي تتبناها برأيي الـ J2EE بكل جدارة. هذه الأنظمة تحوي عدة طبقات غالباً تكون ثلاثة إحداها مسؤولة عن جلب المعطيات من ( قاعدة المعطيات, Web Service أو أي نظام آخر) ومعالجة هذه المعطيات وغالباً تدعى بالـ Data Layer, الطبقة الثانية مسؤولة عن عدة أمور منها الـ Security و بقية المعالجات على المعطيات كما أنها مسؤولة عن الربط بين الطبقتين الأخريتين والمزيد المزيد من المهام. أما الطبقة الثالثة فهي طبقة العرض View وهي المسؤولة عن عرض المعطيات.
نلاحظ من الطبقات الثلاث أننا يمكنا بناء تطبيق كبير و متماسك وبناء الطبقتين الأولتين مرة واحدة و من ثم بناء عدة طبقات للعرض حسب الحاجة فمثلاً يمكننا بناء طبقة عرض على أساس الويب و أخرى للعرض على الموبايل و أخرى كـ Web Service و و و , فهنا لم نعيد كتابة بقية الطبقات من أجل كل نوع من التطبيقات و إنما إعادة الاستخدام مع الوصل بين الطبقات.
وهناك الكثير الكثير من الأمثلة التي تعاملت معها في حياتي البرمجية
فإخواني أرجو أن تكون هذه لمحة بسيطة عن أهمية التعامل مع الأطر البرمجية
شكراً على الإطالة
بارك الله فيك، معلومات قيمة جداً.
السلام عليكم
شكراً علي الموضوع أستاذ خالد و مدونتك أعجبتني و نقاش شيق الحقيقة لم أستخدم أطر العمل في مشروعات و إن كنت قد جربت بعض الأمثلة بالزيند و الـ codeigniter و أجد البعض ينصح بالأخيره و أنها سهله و قوية فما رأيك .. كما قال بعض الإخوة “أريد أن أختصر وقت التجارب الكاملة”
تحياتي لك ..
أحمد
وعليكم السلام ورحمة الله وبركاته
لايمكن اختصار الوقت بهذه الأمور عليك أن تمنح هذه الإطارات بعض الوقت وتجرب ثم تقرر فكل هذه الإطارات جيدة وتقوم بالغرض ولكن تختلف ببعض الميزات عن بعضها.
السلام عليكم ,
يبدو cakephp للوهلة الاولى سهلا وممتعاً
ان الحاجز الفاصل بين ان يكون cakephp ممتعا وسهلا او يكون صعبا ومعقدا هو الفترة التي ستقضيها في تعلم هذا الاطار .
متى يحق لك الحكم على استخدام cakephp او لا
1- اقرأ التوثيق الخاص cakephp.com كاملاً ولا تلقى بالا للاشياء التي تراها صعبة الفهم , فقط حاول تصل الى لب فكرة العمل .
2- شاهد الدورات التدريبية tutorials عن cakephp ابدا من الاسهل للاصعب
3- بالتوافق مع الخطوة السابقة ينصح بتنزيل الاطار والبدأ بتطبيق الامثلة وحاول الفخر بالنجاح .
4- حاول اختلاق افكار جديدة تبدأ من الابسط للاعقد .
5- ادا كنت تعمل على البرمجة الكلاسيكية ولك انجازات برمجية مثل موقع شخصي او موقع للاخبار او حتى سوق الكتروني , جرب اضافة cakephp اليه وحاول ان تطور نفسك .
بعد كل هذا يمكنك بكل براعة الادلاء برأيك وسأضمن لك ان سيكون مفيدا ً للغير ,
وفوق كل هذا للنظر الى الناحية العلمية التي ستستفيدها من تعلم هذا الشيء
على فكرة ..
في phpclasses.com عندما تعبئ بياناتك الشخصية هناك خانة للذين يستطيعون البرمجة تحت اطار العمل cakephp هؤلاء الذين يستخدمون اطر العمل الحديثة خصوصا لديهم فرص اكبر من المبرمجين الكلاسيكيين
وشكرا جزيلا لكاتب الموضوع