توضيح لمفاهيم خاطئة لكثير من الناس في عالم البرمجيات ..

ماهو الـ Framework؟؟
إذا سألت اي زول ... حيقول إجابة شائعة عندنا وهي "إطار عمل" زيها وزي "إطار صورة" "إطار شهادة" صح؟! ... هي نعم إجابة صحيحة ومختصرة ... بس ما بتوضح للناس فكرة الـ Framework.
لو رجعنا للزمن وراء ... أول ما ظهرت لغات البرمجة ... كان لغات البرمجة كل حاجة المفروض تتعمل على المبرمج نفسه من الصفر لحدي إنجاز المشروع .... الصفر هنا بمعنى الصفر تبدأ من لا شيء ... يعني هسي أنت مهما كانت صعوبة اللغة حالياً ما بتبدأ من الصفر زي ما بتتخيل .... لأنو حتلقى Framework جاهز للمبرمج .... جهز ليك الحاجات الأولية ... الحاجات الأولية دي شنو؟!
الحاجات هي الأدوات Tools زي الـ Textbox والـ Label والـ Checkbox والـ Charts وغيرها ... دي زمان المبرمجين كانوا ببرمجوها من الأول ... لكن أنت حالياً بتعمل ليها Drag and Drop في الــ Form أو Page وأنتهى الموضوع.
يعني بنستنتج من الكلام دا أنو كل لغة برمجة عندها Framework بيتعمل من البرمجين من اللغة نفسها ... يعني Codes و Functions و Methods مبرمجة جاهزة ... أنت بس بتستدعيها وبتمرر ليها الـ Parameters وهي زي الخلاطة بترمي ليها البرتقال والسكر والموية ... بتديك عصير جاهز ... دا بالضبط فهم الـ Framework حاجة بتجهزها ليك شركات أو جهات بغرض التسهيل على المبرمج وإختصار زمنه في كتابة الأكواد المكررة دي.
نديكم الـ Frameworks الجاهزة للإستخدام :-
الـ jQuery هو فريم ويرك جاهز من لغة الـ Javascript.
الـ .Net Framework هو فريم ويرك جاهز بـ ثلاثة نسخ لكل لغة عندها نسخة Visual Basic و C# و C++.
الـ Wordpress و Laravel و Joomla هم فريم ويركات من لغة الـ PHP.
الـ Bootstrap و Foundation هو فريم ويرك من تقنيات الـ HTML والـ CSS لتسهيل تصميم الواجهات.
الـ Oracle ADF والـ PL/SQL والـ Android هو فريم ويركات من لغة الـ Java
وفي Frameworks كثيرة لا حصر لها ... ودا غير أنو في مبرمجين عندهم Framework خاص بيهم.
في الـ Framework ميزته أنك ما بتضطر تتعامل مع اللغة مباشرة .... يعني بإمكانك تستخدم الـ Framework في إنشاء مشاريعك Drag and Drop بتختصر ليك الكثير من الوقت وبتقدر تنجز بسرعة أكبر .... بس ما بيغنيك من تعلم اللغة الأصلية في حال عندك تعديلات أو إضافات خاصة بك.
طيب هل ليهو علاقة بالـ Open Sourceو الـ Close Source في عالم البرمجيات؟؟
نعم ليهو علاقة وبشدة ... ما في لغة برمجة ممكن نقول عليها Open Source أو Close Source لكن بنقدر نقول أنو الـ Framework ممكن يكون الـ Open Source وفيهو الـ Close Source ... ودي بحددها صانع الـ Framework يعني لو شركة أكيد حتقفله وتبيعه عشان تربح بس في ميزة في الشركات أنها بتحاول تسهل ليك التعامل معاهو قدر الإمكان عشان أنت زبون ولازم ما تخسرك ... وأما لو فرد هاوي أكيد حيعملوا مجاني ويشارك بيهو المجتمع بغض النظر عن نوع لغة البرمجة.
الشركات برضو بتقفل الـ Framework حقها ... أنت ما بتقدر تتطلع على الأكواد ولا تعدل فيهو ... لأنو أي تعديل منك خاصة لو كنت مبرمج جديد في عالم البرمجة قد تعطل بعض الوظائف في الـ Framework ويتسبب ليك بمشاكل أنت في غنى عنها ... لكن ممكن تعمل Overriding للـ Functions و Methods وتكتب تعديلاتك الأنت عايزها بدون التعديل في الـ Framework الأصل ... وتطوير الـ Framework بيكون من الشركة ... ولكن إمكانك مراسلة الشركة للموافقة على تعديلاتك وإعتمادها بقانون الشركة نفسها.
طبعاً الـ Framework حق الشركة بيكون موحدين التسميات الـ Classes والـ Functions و الـ Methods بنظام معين مثلاً الحرف الأول Capital من كل كلمة وما في فواصل بين الكلمات ... ودي بتساعد المبرمج بعدين في الفهم والحفظ وبتكون عارف نمط الشركة في التسميات وبتقدر تنجز أسرع.
طبعاً الميزة هنا : أي مشكلة بتظهر في الـ Framework هي مسؤولية الشركة ... لا يتحملها المبرمج ... ولا يمكن إكتشاف الثغرات هنا إلا في حالة الحصول على Source Code الخاص بك .... لأنو حتى أي كود بتكتبوا بيتم تشفيره في مرحلة الـ Debug إلى EXE أو DLL ....إلخ وغير قابل للتعديل مهما كان.
بس العيب أنو الـ Framework من الشركات غالباً بيكون مدفوع ... بس هسي لاحظت الشركات بدت توفره مجاناً بضوابط وشروط معينة.
أما في الـ Frameworks جاهزة من جهات عادية أو مجتمع تقني Open Source ... والمجتمع التقني هم مجموعة مبرمجين بيستخدمو نفس اللغة وأتفقوا وصنعوا الـ Framework الخاص فيهم جاهز وبيشارك بيهو المجتمع .... هنا بيكون الـ Framework متاح مجاني وقابل للتعديل ... بس هنا الحكاية مش سايبة ساي ... كمان في جهات مسؤولة بتستلم من المبرمجين التعديلات وبتضيفها في الـ Framework برضو.
الميزة : أنو النسخة دائماً مجانية غير مدفوعة
العيوب :
- هنا أي مشكلة بتظهر في الـ Framework هي مسؤولية المبرمج ... لا تتحملها الجهة لأنها غير محددة يقبضوا منو ويخلوا منو.
- تسميات الـ Functions و Methods هنا بتكون غير خاضعة لنمط معين ... لأنو لكل مبرمج ساهم في الإضافة له تسميته بالطريقة الخاصة به.
هل ممكن أعمل Framework خاص بي؟!
نعم ممكن تعمل Framework خاص بيك على أي لغة برمجة لتسهيل شغلك ومهامك .... لأنو دا بند أساسي بالنسبة للمبرمج أنو يقدر يعمل Framework خاص بيهو بدون أي قيود ... وليك الحرية التامة أنك تشاركه مع الأخرين سواء كان مجاني أو مدفوع للأخرين على حسب رغبتك انت.
الخلاصة :
إختيارك للـ Framework بيعتمد على إرتياحك للـ Framework دا الحكاية ما تحدي ومحاكاة للأخرين ... ما عليك من المميزات والعيوب لأنو كل حاجة ببميزاتها وعيوبها ... ما في حاجة مثالية ... أنت أخترته عشان تحقق بيهو أهدف معينة وأنو يساعدك في إنجاز أعمالك ... ولكل مبرمج شغفه وحريته في إختيار لغته والـ Framework الخاص فيهو.
حكمة :
أنت ممكن تقارن عشان تحدد الأفضل بالنسبة لك وتبدأ تنجز فيها .... لكن ما تقارن عشان تثبت أنك الأفضل في إختياراتك وتنسى الحاجة الأهم وهي ضياع زمنك في المقارنة كان ممكن تستفيد منو في تعلم حاجة جديدة.
المفاهيم البرمجية واحدة في كل لغات البرمجة ... وأي حاجة في عالم تقنية المعلومات IT ... ممتعة وليها أهميتها. فكر بمنطق!!
.. بالتوفيق للجميع ..

ليست هناك تعليقات:

إرسال تعليق

جميع الحقوق محفوظة 2015 خالد عصام الدين للمعلوميات ©