الأحد، 24 أبريل 2011

برمجة الحاسوب

                                                  بحث في البرمجة  
 تحت اشراف د/ محمد الجزار 
  عمل: حنان عبد الرحمن محمد عبده
 الفرقه الثانيه تمهيدي ماجستير
 تخصص معادن
المقدمة : 


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


ما قاله السابقون :


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


موضوع البحث :



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


 لغة البرمجة الوحيدة التي يفهمها الحاسوب ويستطيع أن يتعامل معها هي لغة الآلة -machine language-. في البداية عمل المبرمجون على تحليل شفرة الحاسوب –machine code-والتعامل معها بشكلها الجامد وغير المفهوم وهو (0،1). ولكن هذه العملية معقدة جدا ويصعب التعامل معها لعدم فهمها الواضح للبشر ولغموضها لذلك تم ابتكار لغات راقية تعمل كوسيط بين لغة الإنسان ولغة الاّلة وهي لغة التجميع اسمبلي Assembly ثم تطورت للغات عالية المستوى مثل لغات البرمجة المعروفة مثل لغة السي ولغة البيسيك. ثم يتم تشغيل البرامج المكتوبة بهذه اللغات عن طريق أحد البرامج المتخصصة مثل المترجم والمجمع. هذه البرامج تعمل على ترجمة أسطر لغة البرمجة إلى لغة الحاسوب مما يسهل على الحاسوب تنفيذ هذه الأوامر
 وإخراج النتائج output.

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

ما متطلبات البرمجة ؟

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

اللغات البرمجية المصنفة Compiled Programming Languages


وتكتب هذه اللغات في صورة ملفات نصية بسيطة Plain Text ثم تخضع لعملية تسمى عملية الربط والتصنيف فتحول إلى ملف قابل للتنفيذ Executable File وذلك باستخدام برنامج يدعى المصنف Compiler ويكون الملف التنفيذي عبارة عن ملف مكن من شفرة ثنائية Binary Code غير مفهومة بواسطة البشر ( الأصفار والآحاد )، وعند تنفيذ البرنامج فإن الأوامر المخزنة في الملف تنفذ مباشرة حيث أنها ترسل مباشرة إلى نظام التشغيل Operating Systemالذي يرسلها بدوره إلى المعالج Proccessor الذي يقوم بعملية التنفيذ، أي أنك بمجرد تصنيف البرنامج وربطه ستحصل على برنامج مستقل ولن تحتاج إلى البرنامج المصنف أو الشفرة المصدرية بعد الآن، وتتميز هذه البرامج بكونها سريعة وصغيرة الحجم إلا أنها أصعب استخداما وتعلما، ومن أشهر هذه اللغات البرمجية Assembly و C و C++ و Delphi. 


اللغات البرمجية المترجمة Interpreted Programming Languages

تكتب شفرات هذه البرامج أيضا في صورة ملفات نصية بسيطة Plain Text، إلى أنها لا تخضع لعملية الربط والتصنيف بل تخضع لعملية أخرى تسمى الترجمة Interpreting باستخدام برنامج يدعى المترجم Interpreter يقوم المترجم بقراءة الشفرة وتنفيذها مباشرة سطرا بسطر أي أن النص البرمجي غالبا يظل كما هو دون تحويل وعند الإنتهاء من كتابة البرامج فإن المترجم يترجمه إلى أوامر لذلك فإن البرنامج لن يعمل دون وجود المترجم، وفي بعض الأحيان ينتج ملف تنفيذي مثل الملفات التنفيذية فيكون في صيغة وسطية بين الشفرات والبرامج الكاملة فيحتاج إلى جزء من المترجم فقط، ولأن الأوامر هنا لا توجه مباشرة إلى نظام التشغيل فإن هذه البرامج تكون بطيئة نسبيا وأكبر في الحجم ( تحتاج إلى حجم إضافي للمترجم ) وأشهر اللغات البرمجية المترجمة VisualBasic و Java و Perl و PHP . 

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

النتائج :


تقنيات البرمجة

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


البرمجة الإجرائية Procedural Programming

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


البرمجة البنيوية Structured Language

وهو تطبيق عملي لمبدأ فرق تسد، حيث تقوم فكرتها على أساس تقسيم البرامج إلى عدة أقسام كل منها يستدعي الآخر، فمثلا إذا أردت أن تكتب برنامجا يقوم بحساب عدد الموظفين في الشركة، يمكن تقسيم عمل البرنامج إلى التالي : 
1. فتح قاعدة البيانات 
2. معرفة عدد السجلات 
3. إغلاق قاعدة البيانات 
4. عرض النتيجة 
5. إغلاق البرنامج 
إضافة إلى ذلك فإن هذا البرنامج بأكمله يمكن أن يكون مجرد وظيفة في برنامج آخر أكبر، وهكذا، توجد في هذه التقنية عدة دوال أو وظائف Functions كل وظيفة لها دخل خاص بها، وتعطي خرجا خاصا بها، ويتم تبادل هذه البيانات ( الدخل والخرج ) بين الدوال المختلفة فتستدعي كل دالة الأخرى وهكذا، وهذا يسهل العمل على المبرمج ويجعل الأمور تبدو واضحة أمامه، وإذا أراد تحسين البرنامج فهذا أمر سهل، فمثلا إذا أراد أن يغير أسلوب عرض النتيجة لن يضطر إلى البحث في سطور البرنامج عن الأماكن التي حدث فيها عرض النتيجة على الشاشة بل سيضطر فقط إلى تغيير الدالة التي تقوم بعرض النتيجة، ولن يضطر للمساس بباقي دوال البرنامج وسوف يظهر أثر التغيير الذي قام به في جميع الأماكن التي تستدعي الدالة التي غيرها، وفي هذا الأسلوب منالبرمجة يتم تخزين البيانات في متغيرات، وهذه المتغيرات تكون إما عامة Public أو خاصة Private، المتغيرة العامة هي المشتركة بين جميع دوال البرنامج، والخاصة تظهر فقط في دالة محددة، لذلك لتبادل البيانات بين الدوال نستخدم متغيرات عامة، يمكن تشبيه الموقف بشركة كبيرة بها عدد من الأقسام ( الدوال ) كل قسم له وظيفته، البيانات الموجودة داخل القسم لا يستطيع أن يصل إليها إلا من في القسم، وإذا أردت أن تضع معلومات يستطيع الجميع الوصول إليها لا بد من وضعها في الأرشيف العام للشركة الذي يستطيع الوصول إليه والقراءة منه والكتابة إليه، ومن أشهر اللغات التي تستخدم هذا الأسلوب لغة C. 


الدوال : برامج فرعية تنفذ داخل البرامج الرئيسية. 
المتغيرات : أماكن لتخزين البيانات. 


فيجوال بيزك دوت نت

 Object Oriented Programming OOP


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




الجمعة، 8 أبريل 2011

الويب أو الشبكة العنكبوتية العالمية

*الويب أو الشبكة العنكبوتية العالمية *
  اختصار ل (World Wide Web)



وهى نظام مستندات النص الفائق المرتبطة ببعضها تعمل فوق الإنترنت. ويستطيع المستخدم تصفّح هذه المستندات باستخدام متصفّح ويب، كما يستطيع التنقّل بين هذه الصفحات عبر وصلات النص الفائق. وتحوي هذه المستندات على نص صِرْف، صور ووسائط متعددة.
تم إنشاؤها سنة 1989م، وكان الغرض منها تيسير الاتصال بين المنظمات الأوربية المجتمعة في سويسرا
والويب نظام للترابط بين النصوص في الشبكة (الانترنت). (هذا الترابط المتداخل (Hyperlinking بين النصوص في الشبكة(الإنترنت) يسمح بالانتقال فيما بين الصفحات باستعمال متصفح إنترنت.
وصفحات الويب من الممكن أن تحتوي على نصوص، وصور، وأصوات، ومرئيات (فيديو)، وصور متحركة، ويبرامج تفاعلية، وغير ذلك. ويقوم بتوفير هذه الصفحات في الشبكة (الإنترنت) مخدم(ويب سرفر). ويقوم هذا المخدم بإرسال الصفحات، ومحتوياتها بناء على الطلب من متصفح الشبكة.
ومن أهم الأدوات في شبكة الويب هي البواحيث (محركات البحث). إذ أنه بسبب ضخامة الشبكة (الإنترنت))، هناك حاجة لاستعمال خدمات البحث في الإنترنت لإيجاد المعلومات المطلوبة.
تعريف الشبكة العنكبوتية *
رابط الشبكة المعلوماتية العالمية (World Wide Web Consortium, W3C) تجمع صناعي دولي هدفه هو قيادة شبكة الويب إلى أقصى إمكانياتها. ينخرط في الرابطة أعضاء يعدون بأكثر من 500 منظمة موزعة حول العالم تجعل الرابطة تنال اعترافا دوليا بمساهمتها في تطور ونمو الويب.
يُسمح للمنظمات المنخرطة في W3C أن تلجأ إلى جميع معلومات موقع W3C الخاصة بالأعضاء حيث توجد هناك حوارات حول أخر التقنيات في ميدان شبكة الويب. هذا يهم خصوصا مصممي مواقع الويب. وللأعضاء أيضاً فرص للتأثير على مقاييس المستقبل والمشاركة في  
 اللقاءات المنظمة من طرف w3c.

موقع الويب: هو مجموعة من وثائق النص المترابط (hypertext 
documents) المُخَزَّنة في خادمات الويب. وتقوم هذه المواقع على
 الأسس الرئيسة التالية:

• التصميم (layout).

• المحتويات (Content).

• الروابط (links).

• أدواتٍ الإبحار (navigation tools) في الويب.

كما تحتوي بعض مواقع الويب مزايا إضافية مثل:

• الخدمات التفاعلية مع المستخدم (Interactive services).

• البريد الإلكتروني (Email).

• خدمة الحوار (Chatting service).

• بُريمِجات جافا (Java applets).

أما آلية الوصول إلى مواقع الويب فهي تعتمد على محدد موقع المصدر (URL)، بينما يُوظَّفُ بروتوكول نقل النص المترابط (HTTP) لنقل طلبات المستفيدين (Clients) (التي ترد عبر مُستعرِض الويب) إلى خادم الويب (Web server)، ويجيب خادم الويب بدوره عن طريق إرسال الصفحات المطلوبة من الموقع. ومن ناحية أخرى، تُستخدَم لغة النص المترابط (HTML) لإنشاء مواقع الويب، عن طريق نصوص معتمدة تُحدد لمستعرض الويب كيفية ظهور المحتويات.
أهداف مواقع الوب 
تختلف أهداف مواقع الوب فمنها ما هو للإعلان عن المنتجات ومنها ما يبيعها، كما أن هناك مواقع للدردشة أو منتديات للنقاش والحديث بين مستخدمي الوب. ويوجد ما يعرف بالمدونات وهي مواقع وب يسرد فيها مؤلفها ما يريد الكتابة عنه ومواضيع أخرى كما يمكن للزوار الرد على ما يكتب. ومن بين أنواع المواقع الويكي ومثال على ذلك ويكيبيديا الموسوعة الحرة، وهي مواقع مفتوحة النصوص يمكن للزوار المشاركة بتعديلها أو الكتابة بها وإثرائها.

يمكن للمستخدم دخول مواقع الوب عن طريق معين الموارد المقيس "الباحث المتماثل للموارد" (URL) والذي يكتب في شريط العنوان في متصفح الوب. تتكون صفحات الوب غالباً من عناوين مشابهة للعنوان الرئيسي للموقع أي أنها بمثابة فرع منه.


تكتب مواقع الوب غالباً بواسطة لغة رقْم النص الفائق (HTML - HyperText Markup Language)، ولكنها ليست دائماً كذلك، فبعضها يكتب بلغة متوافقة مع الواب، والبعض الآخر يكتب بلغة الترميز القابلة للامتداد (XML - Extensible Markup Language).

 أشهر المواقع على مستوى العالم
جوجل (Google)، محرك بحث
فيس بوك (Facebook)، شبكات اجتماعية 


ياهو! (Yahoo!)، بوابة وب
 يوتوب (YouTube)، موقع لمشاركة الأفلام 
لايف سيرش (Live Search)، محرك بحث (استبدل مؤخراً بموقع Bing) 
ويكيبيديا (Wikipedia)، مرجع حر على الإنترنت