بسم الله الرحمن الرحيم
السلام عليكم
قد يبدو للوهله الاولى من عنوان الموضع انه موضوع عام عن البرمجه, ولكن هدفى هو ان يبداء الموضوع كموضوع عام ثم ينتهى بنا الى التطرق ومن ثم فهم برمجه الاسمبلى.
الذى لاحظته من اكثر المبرمجمين هو انهم ينهمكون فى فهم تفاصيل اللغه وينسون الهدف الاساسى وهو البرمجه.
دعونا نبداء فى تعريف البرمجه :
البرمجه بكل بساطه هى مخزون من المعلومات DATA , وعدد من الاوامر INSTRUCTIONS. قد يستغرب البعض هل هذه هى كل البرمجه, اقول نعم البرمجه ليست إلى مجموعه من المعلومات و الاوامر.
دعونا الان ناتى بمثال من الحياة العامه:
نفترض ان لديك قاموس وتريد ان تعرف معنى كلمة خوارزميه, ماذا تفعل ؟؟
هل تفتح القاموس من حرف الالف ثم تمر بجميع الكلمات الموجوده تحت الالف ثم الباء وهكذا؟. بالتاكيد لا, لانك تعلم ان كلمة خوارزميه تندرج تحت حرف الخاء, ولذالك ستقفز مباشرة الى حرف الخاء ثم فى الخاء ستقفز إلى حرف الواو وهكذا إلى إن تصل إلى الكلمه المنشوده.
مثال اخر:
نفترض ان هناك رساله موجهه للشخص التالى :
محمد على
شارع الجيزه 9, ميدان الجامع
مصر الجديده, القاهره
جمهورية مصر العربيه
الان هل نبداء البحث عن شخص إسمه محمد على ؟ هل نرسل الرساله إلى جميع دول العالم, وكل دوله تعرض الرساله على كل شخص اسمه يوافق إسم المرسل إليه ؟
بالتاكيد لا , لابد ان نحصر البحث على دولة مصر اولاً ثم القاهره وهكذا, وإلى ما الداعى لكتابة العنوان بهذا الشكل.
ما دخل كل هذا بالبرمجه ؟ قد يتسائل البعض, اقول البرمجه ما هى إلى معلومات مخزنه فى ذاكرة الجهاز وباصدار بعض الاوامر تحصل على هذه المعلومات.
دعنى اعطيك مثال على ذالك :
فهم البرمجه من الاساس
منتدى مبرمجي لغة الآلة (التجميع) Assembly
منتديات لغات البرمجة العام
منتديات الفريق العربي للبرمجة
هذا هو عنوان الموضوع, كيف يتم البحث عنه فى الانترنت ؟
عندما تنقر على رابط معين يرسل الرابط الطلب إلى /. بعد ذالك يقوم المنتدى بالبحث فى قسم البرمجه العامه عن قسم الاسمبلى و من ثم يبحث عن الموضوع تحت حرف الفاء وهكذا.
ربما لا يكون البحث بنفس الطريقه التى شرحتها ولكن الفكره الاساسيه هى ان البحث له طريقه منسقه, ليس من الضرورى ان يكون البحث بالاحرف فقد يكون البحث حسب التاريخ او حسب سلسله من الارقام وهذا وارد فى الحياة العامه ايضاء, مثل الرقم البريدى فى بعض الدول او رقم صندوق البريد.
فى البرمجه هناك ما يسمى الرابط HANDLE او Addres او offset او Pointer كلها تحمل تقريباً نفس المعنى, وهو عنوان المعلومه فى الذاكره , على سبيل المثال النوافذ windows والتى تظهر امامك على الشاشه هى عباره عن معلومات مخزنه فى الذاكره, كل نافذه لها عنوان يسمى Handle, فى الذاكره تجد معلومات عن هذه النافذه مثل حجم النافذه, لون النافذه الخ...
بمساعدة ال handle تستطيع الوصول إلى النافذه فى ذاكرة الجهاز ومن ثم تغير اللون او الحجم او حتى شكل النافذه.
فى احيان كثيره قد يحتاج برنامجك إلى عناوين كثيره لنوافذ مختلفه او ايقونات مثل التى فى اكسيل او وورد, لذالك قد تحتاج إلى حفظها فى الذاكره بدلاً من جعلها جزء من البرنامج, فيصبح لديك عنوان للذاكره التى تحوى عناوين للنوافذ, وتستخلص عنوان النافذه التى تريد التحكم بها من مجموعة العناوين التى تحفظها فى الذاكره. هذه الطريقه قد تسبب الكثير من المشاكل للمبتدئين فى البرمجه وخاصه المبتدئين فى السى .
دعونا نعطى مثال من الحياة العامه:
لنفرض انك تريد ان تستورد اجهزة تصوير رقميه من اليابان وهناك ملحق تجارى لليابان فى المدينه التى تسكنها, سيقوم الملحق التجارى بإعطائك اسماء وعناوين الشركات التى تصنع الاجهزه, هل توصلت إلى الشركه ؟ باطبع لا, انت توصلت إلى إسم وعنوان الشركه, والان عليك ان تتصل بالشركه للاتفاق معها.
إذا نستطيع ان نقول ان العنوان الاول -الملحق التجارى- هو عباره عن مصدر عناوين للشركات التى نريد ان نصل إليها, او عنوان للعناوين التى نريد ان نصل إليها.
هذه الطريقه متبعه فى كل انواع البرمجه, بعض الغات تسميها link , والبعض الاخر يسميها handle , pointer , offset , reference ولكن فى النهايه هى عناوين فى ذاكره جهازك او الجهاز الذى تتصل به عن طريق الشبكه.
الخلاصه :
البرمجه هى مخزون من المعلومات و التى نستطيع الحصول على عناوينها بطريقه او باخرى, ومجموعه من الاوامر تطبق على هذه المعلومات لتعطينا النتيجه المرجوه.
ما كان من توفيق فمن الله عز وجل وما كان من خطاء او نسيان من نفسى ومن الشيطان والله ولى التوفيق.
والسلام


