81
مختصرت البرمجة لغايل دل كتبه علي عضــــو الصدارة1.0 Release Candidate 1

Prog Guide

Embed Size (px)

Citation preview

Page 1: Prog Guide

مختصر

دليل لغات البرمجةكتبه

علي

عضــــو

1.0الصدارة Release Candidate

1

Page 2: Prog Guide

:: بسم ال الرحمن الرحيم :::: تم اعداد الكتاب باستخدام برنامج ::

Creative Commonsرخصة الكتاب http://creativecommons.org/licenses/by-nc-sa/3.0/us/

مرفق في النهاية مستند الترخيص

2

Page 3: Prog Guide

:: اهداء ::

الى ناحيتـــها ،،الى قبلتهـــا ،،الى سموهـــا ،، الى حبهــــا ،،

الى روحها ،،الى جسمها ،،الى وقوفها ،،

الى جلوسها ،،الى قنوتها ،،الى ركوعها ،،الى سجودها ،،الى دعائها ،،

الى انبساطها ،،الى انقباضها ،،الى ابتسامتها ،،الى سرورها ،،

الى صاحبــــة الشــــــأن ،،اليك ،، جعلني الله فداك ،،

3

Page 4: Prog Guide

:: مدخـــل ::

جائتني فكرة هذا الكتاب اللكتروني بعد ان قرات كتاب "حــرب البرامــج"• للكاتب الرائع كيث كرتس، و على الرغم من ان عملي هذا لم و لن يصل الى

300مستوى عمل شخص في مستوى هذا المبرمج ، ل مــن حيــث الكــم " صفحة" و ل من حيث المستوى "خبرة سنين في البرمجة مع ميكروسوفت

و غير ذلك. ال ان هذا لم يمنعني من ان اشرع في كتيب يكون بمثابة دليل مختصر الى•

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

بالبرمجة.

عملي اذا في هذا المختصر هــو التعريـف بـالخطوط العريضـة بــاهم لغــات• البرمجة في عالمها الواسع. مع اضافة تعريف بأهم المصطلحات الــتي يجــب

ان تعرف كي نستطيع من خللها قراءة تلك الخطوط العريضة.

و هذه النسخة المرشحة الولى اطرحها في منتداي المفضل مجتمع لينكس• العربي ليماني بان الذي جعل المصادر الحرة عظيمة هــو مبــدا المشــاركة ،ــي لهذا انا اطمح في ان ارى القتراحات و النقد لهذه الصدارة كي نستمر ف مسلسل تطور هذا الكتيب من مسودة ابتدائية كما كان قبل بضع شهور الى

كتاب غني و مفيد خلل الشهور القادمة.

4

Page 5: Prog Guide

عليه اشكر كل من ساعدني و اخذ بيدي سواء: بعبارات شكر و استحســان ،•نقد بناء او اقتراح مفيد و اطمح للمزيد من المشاركة و المعونة.

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

اخواني العضاء.

تخصصي في علوم الحاسب اللي طبعــا ل يعطينــي الخــبرة الكافيــة فــي•ــا استعراض كل لغات البرمجة ، بل في حقيقة المر اللغات التي تعاملت معهــي و هي فقط بيرل كلغة اساسية و سي++ و جافا و سمول تولك و بي اتش ب قليل من بايثون فكان هناك حاجة كبيرة للترجمة الصرفة في اللغات الباقيةــوم ــي اق فارجو الشارة الى مواطن الخلل في اي مكان من هذه المقالت ك

بتصحيحه ان وجد في الصدارات القادمة.

5

Page 6: Prog Guide

:: مقدمة ::

ل اريد ان امثل دور المبرمج المحنك هنا ، فأنا واقعا لست اهل لذلك، و لكن•ــة ، ــه خاص ــري من بحكم تخصصي في هذا المجال و اهتمامي بالجانب النظــم احببت ان اكتب بعض السطر لمن لديهم اهتمــام بالبرمجــة و لكنهــم ل

يقدموا بعد :

هناك نقاط كثيرة يجب ان تاخذ في الحسبان قبل الشروع فــي تعلــم لغــة• برمجة ، و لكن لحظت ان المشكلة الساسية عندنا هي ليســت فــي عــدم القدرة على اختيار لغة معينة بل في عدم العزم على التعلم ابتداء. من منا ل يحب ان يقال عنه مبرمج ؟ خاصــة ان البرمجــة مثــل الرياضــيات يوصــف اصحابها بالذكاء و العبقرية . الكثير منا يقول و يتمنــى و يخطــط ان يكــونــج و ــاح البرام مبرمجا عندما يقرا عن المبرمجين و المخترقين و قصص نج المواقع و لكن عندما يبدا اول خطوة في الدراسة يعــرف ان هنــاك الكــثير ليتعلمه و ان المادة ليست ممتعة كما كان يتصور و يبدا بالشــعور بالممــل وــة ــاك حكم ــة . هن من ثم يترك ما شرع في قراته من كتاب او دورة تعليمي يابانية تقول " الطموح بدون عمل مجرد حلم يقظة ". شخصيا كنت اعــانيــا ــرات و غيره من هذه المشكلة و هي تكديس الكتب و الدورات و المحاض على امل اني ساقراها و اشرع في تعلمها في وقت ما ! و الن لها سنوات و لم اقرا منها شي ! اذا هذه المشكلة الولى التي يجــب ان نجتازهــا ! و هــي انــة او ــي البرمج ــواء ف ندرك ان مجرد تحميل الكتب و الدورات التعليمية س غيرها من الفنون لن يجعل منا شيئا ! بل هو البدء و الصرار في تعلــم هــذه الشياء المملة و المواد الثقيلة و اكمــال الكتــب و الــدورات الــى نهاياتهــا

بالضافة الى الممارسة و التفكير هو ما يضيف الى حصيلتنا الشيء المفيد .

6

Page 7: Prog Guide

حسنا الن ، انت عازم على المواصلة و الجد في تعلم لغــة برمجــة معينــة و• لكنك ل تستطيع ان تختار اي لغة تناسبك؟ هذه المشــكلة الثانيــة و نــرى الكثير من المواضيع من هذه الشاكلة ماذا اتعلم ؟ ما هي افضل لغة ؟ ما هــي اقوى لغة ؟ ايهما القوى بيرل او بايثون ؟ جافا او سي شــارب ! فــي حقيقــة المر ل يوجد شيء اسمه اللغة القوى و كل من يقول هناك شيء مــن هــذاــا القبيل فهو في حقيقة المر واهم ، فكل لغة قوية في جانب معين و عادة م يكون هو الجانب الذي انشئت من اجله اساسا، طبعا يوجد لغات تصلح لكل شيء تقريبا و لكن يبقى انها ل تقدم كفائة و انتاجية عالية فــي كــل شــيءــل ــة عم ــاك امكاني فمثل لغة مخصصة للويب مثل بي اتش بي و ان كان هن برامج سطح مكتب بها فهي لن تكون بقوة و سهولة و انتاجية لغات البرمجة المخصصة لهذا الجانب و العكس صحيح . على هذا فسيكون الجــواب علــىــم ــد ان تتعل سؤالك هو: ما هو احتياجك؟ ماذا تريد ان تبرمــج؟ هــل تري لنفسك ام لسوق العمل ؟ و منه تختار لغة البرمجة التي تريدها، لهــذا هــذا الكتيب ربما يكون جيدا في اختيار لغة برمجتك الولى فهو يعرفك بالهداف الساسية التي انشئت لها لغات البرمجة و اهم التطبيقــات الــتي تســتخدمــن فيها هذه اللغات. و النقطة الجديرة بالذكر ايضا هي اطلعك على امثلة م طريقة كتابة الكواد في لغات مختلفة باعتقــادي الشخصــي ســيؤثر علــى اهتمامك و استمتاعك بلغة البرمجــة الــتي تختارهــا فهنــاك الكــثير مــن المبرمجين يستخدمون لغات معينة لنهم يحبون اسلوبها في الكتابة و ايضا طريقة معالجتها للمشاكل البرمجية . مثل : اذا كنت تحب ان يكون كل شيءــتخدام واضح في اسماء المتغيرات و الكلمات المفتاحية و غيرها و تكره اســواس ــي ليســب و الق الكثير من الختصارات و الرموز كالقواس الكثيرة ف

7

Page 8: Prog Guide

المعقوفة و ما الى ذلك فذلك بالطبع سيؤثر على اختيارك. مثاله : قولهم عنــدما ــر ( عن اقواس لغة البرمجة ليسب ( جهنم القواس ) ، و لكن يقول الخ وصلت الى مرحلة التنوير ارتفعت القواس !) . ربما يستصــغر البعــض هــذهــن النقطة و لكن في حقيقة المر هذه امور فطرية ل يمكن تجاهلها! أل يمكــاب ــذا الكت ــان ه ان تكره قراءة كتاب لن خطه لم ترتح له عينك ؟ و ان ك

الكثر مبيعا و غني بالمحتوى!

الشيء الهم هو:

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

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

ــأقلم• لهذا نرى ان اغلب المبرمجين يعرفون اكثر من لغة و يسهل عليهم التــن ــم اك مع اي لغة جديدة يفرضها عليهم سوق العمل ، و كمثال في بيرل ل اعرف كيف اقوم بعمل برنامج ذو واجهة رسومية لنني كنت معتاد على عمل

ــة ــيTkبرامجي على الويب او سطر الوامر و لكن بعد تعلمي مكتب و فهم لكيفية عمل الواجهات الرسومية اسـتطعت بكـل بسـاطة و يسـر ان انقـل

..GTK و ايضا واجهة wxperlبرنامجي الى مكتبة

لذلك شخصيا ارى الهمية المطلقة الــتي يغفــل عنهــا الكــثيرون للجــانب• النظري و المنطقي للبرمجة بدل التركيز على حفظ الدوال و الكــواد فهــذه

8

Page 9: Prog Guide

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

ــلية• ــن افض شيء اخر يجب الشارة اليه هو عدم الهتمام كثيرا بما يشاع عــي ــتي ف طريقة معينة في البرمجة ، مثل هناك اشارة دائمة من خلل دراس الجامعة الى افضلية البرمجة الكائنية و لكــن يجــب ان نــدرك ان البرمجــة الكائنية ليست دائما هي الحل الفضل للمشكلة ، توجــد مشــاكل و برامــجــا ــن طبع استخدام البرمجة الكائنية فيها مجرد تطويل و تعقيد للحل ، و لكــة ــتخدام البرمج في برامج و نواحي اخرى سيكون من الصعب البرمجة باس الجرائية بدل من البرمجة الكائنية فيها ، لذلك دائمــا احــب ان اشــير الــى اهمية الجانب النظري في البرمجة و هو فهم طرق البرمجة و مبادئهــا و مــن

ثم اختيار الطريقة الفضل .

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

من حيث انتهى الخرون و ليس تضــيع الـوقت فـي اعـادة اخـتراعللعمل العجلة و تشتيت الجهود .

9

Page 10: Prog Guide

ــي• ــة ، ف النقطة الخيرة التي احب ان اختم بها هي مسألة الدراسة البرمجيــياء الجامعة نمل و نتضجر من الشياء النظرية التي نتعلمها و نريد تعلم الش

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

!..GTk او QTحديثة مثل

:: &&& ::

10

Page 11: Prog Guide

:: نماذج البرمجة و اهم المصطلحات ::

دء كان الصفر و الواحد …في البــتوى ثم جاءت اللغات التجميعية ، الى هنا و نحن نتكلم عن اللغات منخفضة المســاكروز و اي انها ذات ارتباط شديد بالعتاد ، و ان كنا مع اللغات التجميعية بدانا الم

بعض الخصائص التي سنراها لحقا في اللغات الجرائية بشكل اكثر تقدما . ثم بزغ الفجر الجديد مع اللغات عالية المستوى و ظهرت البرمجة الجرائية لتعلن

عن ظهور عصر الهتمام بالمشكلة البرمجية !.. فقبل ان نتكلم عن لغات البرمجة يجب ان نسلط الضوء على اهم نماذج البرمجة وــن خلل ــة م اهم المصطلحات المرتبطة بها ليسهل علينا لحقا فهم لغات البرمج

قراءة اسطرها العريضة . و في نهاية هذه الفقرة سنتعرض لمصطلحات متنوعة.

Programing Paradigms

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

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

11

Page 12: Prog Guide

Imperative(اللزامية ) البرمجة المرية :: البرنامج.Stateتصف الحوسبة من ناحية الجمل التي تغير حالة

@@To be completed in the upcoming release.Proceduralالبرمجة الجرائية ::

تعتمد على عملية توفير الخطوات اللزمة لكي يصل البرنامج الى الحالة المطلوبة.@@To be completed in the upcoming release.

Event - Drivenالبرمجة المعتمدة على الحداث :: هنا مسار البرنامج يحــدد مــن خلل الحــوادث ، مثل : الحساســات او مــن خلل

.threadsالمستخدم كالنقر على الفأرة او رسائل من برامج اخرى او من خلل @@To be completed in the upcoming release.

Declarative(اعلنية ) البرمجة التعريفية :: وصف لمنطق الحوسبة بدون وصف طريقة التحكم بمجراها.

@@To be completed in the upcoming release.Functionalالبرمجة الوظيفية ::

وMutableتعامل الحوسبة كتقييم للدوال الرياضية و تتجنب البيانات المشــتركة الحالة.

@@To be completed in the upcoming release.Object Oriented(الكائنية ) البرمجة الشيئية ::

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

النظرة ، و لكن تتبع الجانب التاريخي ليس مكانه هذه العجالة.

12

Page 13: Prog Guide

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

الشركات ؟ و لهذا نرى ان حتى اللغات التي لم تكتب اصل على النموذج الشــيئي فــي وقــت لحق يتم اضافة الدعم لهذا النموذج ، و كمثال لغة البرمجة بيرل الــتي هــي لغــةــي و ــش ب اجرائية في الصل و لحقا تم اضافة النموذج الشيئي للغة و لغة البي ات

غيرها الكثير من اللغات .ــاذا يعنــي الكــائن و ليس ما يهمنا هنا هو كيف تطبق كل لغة مفهوم الكائن ؟ و م خلف الستار .. و لكن نعم السؤال المهم هنا ؟ لماذا كل هــذا الهتمــام بالبرمجــة الشيئية مع ان اغلبنا دخلنا عالم البرمجة مــن منطلقــات مختلفــة؟ قــد يكــون المنطلق الجرائي اكثرها قرابة للبداهة! لماذا هناك مباهاة و مقارنات بين مستوى دعم كل لغة للبرمجة الشيئية ؟ و هناك سؤال مهــم اخــر هــل الفضــلية للغــاتــتي ــرى ال البرمجة الشيئية الصرفة مثل سمولتولك و ايفل او للغات الهجينة الخ

تتيح نوعا من المرونة و ل تجبر المبرمج في ان ينظر لكل شيء على انه كائن ؟ شخصيا افضل الطريق الخير لنه حتى لغات البرمجة الكائنية الصرفة تختلف فــي تطبيق مبادئ و مفاهيم البرمجــة الشــيئية فلكــل وجهــة نظــر و رؤى لمعالجــة الموضوع محل الخلف ، لذلك المرونة دائما سلح جيد لكل لغة برمجة ، و ل اقصد المرونة بمعناها الضيق مثل في العلن عن المتغيرات بل اريد المعنى الوسع و هو حرية المبرمج في معالجة المشكلة بالطريقة و الرؤية التي يختارها فتكــون اللغــة

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

13

Page 14: Prog Guide

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

مهتم بسرقة سر نجاحنا ! ).

بعد كل هذا الستطراد لنذكر شيئا من مزايا البرمجة الشيئية :

- البساطة : حيث ان الكائنات الوهمية تحاكي الكائنات الحقيقية ، ذلك يؤدي الى1تقليل التعقيد و هيكل برامج واضح للغاية و سهل الفهم.

- سهولة الصيانة : حيث ان عملية الصــيانة ســتكون ســهلة و ســنعرف مكــان2الخطاء بالتحديد لن كل كائن له استقللية تامة.

- اعادة الستخدام : حيث ان الكائنات يمكن اعادة استخدامها في عدة برامج.3 - التطوير : حيث ان عملية التوسع ستكون سهلة من خلل اضافة اعــداد قليلــة4

من الكائنات الجديدة او التعديل المباشر على الكائنات الموجودة ، و ذلك استجابةلي تغييرات او تحديات جديدة تفرضها بيئة التشغيل.

14

Page 15: Prog Guide

- التكاملية و تقليل العتمادية : حيث ان كل كائن يمثل كيانا منفصل ، حيث ان5العمل الداخلي للكائن منفصل عن اجزاء النظام الخرى.

- سهولة التعديل : فهناك سهولة فـي اجـراء اي تغييـرات طفيفــة فـي تمثيـل6 البيانات او الجراءات في البرامج الشيئية. لن التغييرات داخل اي كلس ل تــؤثر على الجزاء الخرى للبرنامج، حيث ان الطريقة الوحيــدة للعــالم الخــارجي فــي

التصال بهذا الكلس هو عن طريق واجهته باستخدام ميثودز الكلس نفسه.

الن ما هي البرمجة الشيئية ؟

هي بكل بساطة عملية محاكاة الواقع في البرمجة هي النظر الى الوجود علــى انــه و من ثم محاكاته في عالم البرمجة . كل شيء فــيObjectsمجرد اشياء او كائنات

ــه خصــائص(ســمات) ــائن ل هذا الوجود يمكن ان ينظر اليه على انه كائن و كل كAttributesو افعال Methods انواع الخصائص . Field typeثابتة كان تكون قيمة

يمكن ان تختلف من حالة الىField Valueرقمية او نصية و لكن قيم الخصائص هو عبارة عن قالب ننشيء منه الكائنات حيث داخــل كــلClassاخرى . الكلس

كلس سيتم تعريف خصائص و افعال كل كائن من هــذا الكلس علــى انــه يجــب النتباه الى انه عادة ل يعتبر الكلس كائنا في حد ذاتــه ال فــي اللغــات الكائنيــة

الصرفة . اذا عرفنا الن ان الكلس هو مجرد قالب جاهز لصنع كائنات من نوع ما .ــمى بالكلســات ــا يس ــو م نأتي الن لنشير الى وجود نوع اخر من الكلسات و ه

هذه الكلسات مهمتها تنظيمية فقط و ل يمكن انشاءAbstract Classالمجردة اي كائن منها مباشرة بل يجب ان يكون هناك كلس يرث الكلس المجــرد و ان لــى ــوي عل يكون هو بدوره كلسا مجردا حينها فقط يمكن ان ننشيء كائنات تحت

و هو بكل بساطةInheritanceخصائص الكلس المجرد . هنا ذكرنا مصطلح الوراثة

15

Page 16: Prog Guide

عملية انتقال كل خصائص و افعال الكلس الب الى الكلس البــن . لنأخــذ بعــضالمثلة قبل ان نواصل …

لنتخيل هناك مصنع للسيارات و نريد ان نحاكيه بالرؤية الشيئية يمكن ان نبسطالى شيء مشابه الى:

abstract class Vehicleabstract class Sedan

class Camry

نلحظ اننا انشأنا سلسلة من الكلسات لتنظيم المور حيث انه بدانا بكلس مجرد باسم فيهكل (مركبة) و فيه سنعرف الخصائص و الفعال الساسية التي يجــب ان تحتويها كل مركبة ثم انشانا كلس مجرد باسم سيدان يــرث كــل مــا فــي كلس فيهكل و يضيف عليها خصائص و افعال كل عربة من نــوع صــالون اخيــرا انشــأنا كلس باسم كامري يرث كل خصائص سيدان و يضــيف عليهــا مميــزات و هويــة

الكامري التي نعرفها . هنا يطرح السؤال لماذا نجعل من سيدان و فيهكــل كلســات مجــردة ؟ لمــاذا ل نتركها كلسات طبيعية اليس الغرض فقط هو الوراثة ؟ فيكون الجواب بكل بساطةــة ــادة برمجي لننا نعلم مسبقا اننا لن ننشيء اي كائن من هذه الكلسات و هذه ع جيدة يجب النتباه لها و على المستوى المهني يتخذ القرار فيها وقــت التخطيــط

Design . نلحظ ان المخطط الن قابل جدا للتطويع و التعديل في وقت لحــق مثل باضــافة مزيد من انواع السيارات بل و فئات السيارات . في المثال اعله كان المخطط ينحو

16

Page 17: Prog Guide

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

ثدييات ...الخ.ــة قبل ان انتقل للنقطة القادمة و بما ان الكلم عن المخططات ل بأس بأن نذكر لغ

و التي عادة ما تدرس جنبا الى جنب مــع كــورس لغــاتUMLالنمذجة الموحدة البرمجة الشيئية و هي لغة تمثيلية مفيدة جدا في مرحلة التخطيط و تحتوي على

نوعا من المخططات تقع تحت مظلة تصنيفين رئسين :14- مخططات هيكلية تركز على عناصر النظام و ماذا يجب ان يحتوي.1 - مخططات تفاعلية (تصف سلوك الوبجكتس) تركز على ماذا يجــب ان يحــدث2

في النظام المحاكى و كيف سيتم التواصل و التفاعل بين العناصر.

من خلل هذا الستعراض البسيط بدانا نعـرف سـر قـوة البرمجــة الشــيئية فـي السيطرة على المشاريع العملقة جدا ، هذه القوة التي تنبع في حقيقة المــر مــن

التجريد .ــزاء ــل اج ــاعة لك في البرمجة الجرائية عادة هناك مشكلة في كون البيانات مش البرنامج و لكــن فــي البرمجــة الشــيئية هنــاك نــوع مــن الكبســلة(التغليــف)

Encapsulationــن خلل ــديلها ال م اي ان البيانات الخاصة باي كائن ل يمكن تع الى الكائن و هو بدوره يقوم بعمل اللزم سواء بالتعــديلMessagesارسال الرسائل

المباشر او اعادة ارسال رسالة اخرى الى كائن اخــر طلبــا للمســاعدة فــي اتمــامالطلب.

من هنا نعرف انه في البرمجة الشيئية تتم المهام عن طريــق الرســائل و مجمــوع بعبــارة اخــرىProtocolالرسائل التي يفهمها الكائن تســمى بروتوكــول الكــائن

17

Page 18: Prog Guide

ــودز ــا الميث ــي ذاته البروتوكول او الرسائل التي يمكن للكائن ان يتجاوب معها هالمعرفة سلفا في كلس الكائن .

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

Blackهذه العملية تعرف بالبلك بوكسنج Boxingــن اي ان كل كائن مسؤول ع التعامل مع كل رسالة او طلب بطريقته الخاصة التي ل يجب ان يعرف عنهــا بقيــة

الكائنات اي تفاصيل اضافية .ــة او فبائع الزهور ربما يرسل طلب نقل الزهور الى محطة البريد او الى شركة خاصــائل ــن الرس ربما يعطيها لصديق سيذهب الى منطقة صديقي !. و بما اننا نتكلم ع

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

الدعم الفني سيعود الى مكتب الدعم الفني و هلم جرا . الن بما اننا نفهم جيدا ميزة البوليمورفيزم ، لنعد الى الفعال ( الميثــودز ) حيــثــماء يمكن ان تعايش حالت اقوى من البوليمورفيزم بدل من فقط التشارك في اس الرسائل كما في المثال السابق . الحالة الكثر انتشارا هي مــا يعــرف بــالوفر لــود

Method Overloadو هي قدرة الكائن على الستجابة لرسالة معينة بعدة اشكال Parametersمختلفة على حسب نــوع و عــدد الرجيــومنتس or arguments

18

Page 19: Prog Guide

المرفقة مع الرسالة ، مثل :jump();jump(Int myNumber); فهنا لو اعطانا المرسل عدد مرات القفز في الرسالة لستجاب الكائن بتكرار عملية القفز عدد المرات المطلوبة و لكن لو ترك المرســل رســالة فارغــة مــن اي رقــم

ستكون الستجابة للميثود الفتراضي لنقل قفزة واحدة فقط . هذا مثال بسيط و لكنه يوضح فكرة جيدة اخرى و هي توفير انـواع مختلفــة مــن

الميثود لمعالجة حالت مختلفة من الرسائل و الطلبات . و هي شكل منMethod Overrideالحالة الخرى هي ما يعرف بالميثود اوفر رايد

اشكال البوليمورفيزم يحدث في حال لو كان هناك ميثود في الكلس الب و يرثه الكلس البن و لكننا نريد للكلس البن ان يستجيب بطريقة مغــايرة لمــا يفعلــه الكلس الب . هنا نستخدم الوفر رايد حيث نقوم باضافة ميثود في الكلس البن

ــمSignatureيحمل نفس اسم و توقيع الميثود في الكلس الب ، و لكن في جس نقوم باضافة اكواد مغايرة لما هو موجود في كلس الب .Method Bodyالميثود

مثال بسيط :public class DaddyClass {public void aMethod(){ // Do something here }} public class myClass extends DaddyClass { public void aMethod(){ // respond differently from my daddy }}

19

Page 20: Prog Guide

Multiple Inheritanceتعدد التوارث في لغات البرمجة مثل سي ++ و بيرل هناك امكانية لي كلس بان يرث من اكــثرــوب و من كلس ، هذا الشيء ل يخلو من الفائدة الكثيرة على الرغم من بعض العي لكن في لغة جافا مثل ل يمكن للكلس ان يرث ال من كلس واحد و هنا يظهر انه

حيثInterfaceسنلقي صعوبة و محدودية و لكن جافا توفر ما يسمى بالواجهات يمكن لي كلس ان يطبق اكثر من واجهة بالضافة الى وراثته من كلس معيــن . عندما نعلن عن كلس بانه يطبق واجهة ما فاننا ننشيء في الحقيقة عقد يجب من خلله على الكلس المطبق ان يوفر التطبيق البرمجي لكــل ميثــود موجــود فــي

الواجهة .الترخيص نتكلم عن محددات البرمجة الشيئية كثيرا ما وAccess Modifierفي

طبعا لكل لغةData Hidingالتي من خللها نضيف بعد اخر من اخفاء المعلومات برمجية انواع تحكم مختلفة و لكن في جافا مثل لدينا :

1 .private2 .protected3 .default4 .public

طبعا استخدام هذه الكلمات المفتاحية بالشكل الصــحيح يحتــاج خــبرة و قــرارــى المبرمج نفسه و لكن القاعدة العامة هي كلما كان هناك تشديد في الوصــول ال القيم و الميثودز كان افضل فنحن قلنا ان كل كائن يجب ان يكــون مســؤول عــن نفسه فل يفضل التعديل على المعلومات من اماكن كثيرة و مختلفة تؤدي بــدورها

الى المشاكل .

20

Page 21: Prog Guide

المزيد من المصطلحــات :IDE

Integratedهــذه الكلمــة تمــر علينــا كــثيرا و هــي اختصــار Development Enviromentاي بيئة التطوير المتكاملة ، حسنا ماذا يعني هذا ؟ اعتقد ان القليل ،

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

ــهPadreلبرنامج ــه لن ــن احببت و الذي كان بسيطا جدا في امكانياته وقتها و لكــل حــتى ــز ب ــت بين يقدم خدمة التلوين للكواد. كنت اتجنب برنامج اكلبس او ن

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

21

Page 22: Prog Guide

التحفظات على بعض النقاط التي الى الن افضل ان اعملهــا بنفســي مثــل انشــاءــج و الواجهات الرسومية فهذه البرامج فقط تصلح لتصميم الشكل السريع للبرنامــك لكن عندما اريد ان اكتب الواجهة النهائية ساكتبها بنفسي لنني ل اريد كل تل الكواد المحشوة من قبل اداة انشاء الواجهات ، و كذا الحال ايضا في كتابــة اكــواد

htmlفالتعامل مع الدوات المرئية في هذا المجال تطويل ل ارى لــه ضــرورة فــي ــة اغلب الحيان. على كل حال هذه وجهة نظر … نعود الى بيئات التطوير المتكاملــى ماذا تعني متكاملة هنا ؟ نستطيع ان نقول ان التكامل هنا يعني ان نتحصل علــوين برنامج واحد يقدم محرر نصوص و خدمات تحرير النصوص البرمجية مثل التل للكواد و ربما الكمال التلقائي و ايضا ربما القدرة على تصحيح الخطاء في الــوقتــة ــترجم للغ الحقيقي كما يوجد في اكلبس. ثم يجب ان يقدم البرنامج مفسر او م المعنية و قد يستخدم مفسر خارجي. ايضا قد تحتوي الــبيئة علــى ادوات البنــاء التلقائي. ايضا قد يحتوي البرنامج ادوات لعملية التصحيح و التجريــب. و مــا الــى ذلك من خدمات اخرى قد تختلف من برنامج الى اخر حسب امكانياته مثل توفير

ادوات رسم الواجهات الرسومية و ادوات العمل الجماعي ...الخ.

Compiled and interpreted

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

22

Page 23: Prog Guide

ــف لغات لديها مفسر و مترجم و توجد لغات مثل جافا يتم في البداية ترجمة المل و من ثم يتم تفسير هــذا الكــود مــن خللbyteCodeالمصدري الى لغة وسطية

التخيلية اللة للجافا هو ذاته بالنسبة الذي هو . طبعاVirtual Machineالمفسر توجد الت تخيلية عديدة غير الخاصة بجافا لديها القدرة على التعامل مــع لغــات

و هي اللة التخيليــة الجديــدة الــتي تهــدف لــدعم لغــاتParrotمتعددة مثل السكربتنج مثل بيرل و بايثون و روبي ...الخ. اللغات المفسرة ل يتم التدقيق على الخطاء وقت الترجمة كما حال اللغات المترجمة فعليه يجب ان يتم التدقيق على الخطاء وقت التنفيذ هذا يعني ان السرعة ستكون اقل و هناك تفاوت كبير بيــن اداء المفسرات من حيث السرعة. لكن العتماد على المفسر يعطي ميزة انتقاليــة

اكثر من المترجم للتنقل بين نظم التشغيل و النظمة المختلفة.

Syntax and Semantics

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

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

23

Page 24: Prog Guide

القراءة ال ان الموضوع ربما يكون اعقد مما نتصور ، فمثل الســراف فــي توضــيح اسماء الميثودز و المتغيرات في جافا اثار نقدا بسبب طول هذه الســماء و صــعوبةــا ــض اكواده حفظها ، في الجانب المقابل في لغة مثل بيرل الكثير ممن يقراون بع يصابون بحالة خوف من كثرة الرموز المتواجدة و لكن في حقيقة المر هذه الرموزــاعدة لم تضف عبثا فــ _$ و |$ ، و غيرها من الرموز لم توضع ال للختصار و مس المبرمج في ان يكتب اكواده باسرع شكل ممكن . في ليسب هناك كلم كثير عن كثرة القواس فيها بين مؤيد و معارض لذلك ارى ان هذا الجــانب و ان كــان ربمــا ثانويا ال انه مؤشر جيد لختيار لغة البرمجة التي ستبدا بها ، لنه ل يخفى ان كثير من المبرمجين انما يحبون و يتعصبون لبعض اللغات لنهم يستمتعون فــي كتابــةــن الخطــاء ان ــة م اكوادها . نعود الى موضوع السنتكس و نقول ان هــذه النوعي ظهرت في البرنامج فهي ليست ذات اهمية قصوى لنها عــادة مــا ستصــطاد فــيــه مرحلة بناء البرنامج و سيشير المترجم او المفسر الى مكان الخطاء . فضل عن ان

مثل اكلبس و غيره لديها القدرة علــى اصــطياد الخطــاءIDE'sهذه اليام توجد الطباعية في الوقت الحقيقي مباشرة .

اما السمنتكس فهي الخطاء المنطقية في البرنامج ، مثل لماذا برنامــج مــا يرجــعــر و ــترجم او المفس ــا الم قيمة مغايرة للقيمة المتوقعة ، هذه الخطاء لن يشير له سيتم تشغيل البرنامج بشكل طبيعي لذلك عادة ما يتم اكتشاف مثل هذه الخطاء

،Bugsفي وقت التشغيل و التجريب ، ايضا هذه النوعية من الخطاء تعرف بالبجز و قد يطول امر اكتشافها الى شهور بل الى سنوات اذا كانت معقدة و مخفية.

Syntacticقبل ان نختم هذه الفقرة يجب ان ننوه بمصطلح Sugarو هــو بكــل ، بساطة اضافة المزيد من السنتكس الى لغة برمجة معينة بحيث تزيد سهولة كتابةــرة ــا م ــك فازالته الكواد و تيسر على المبرمجين قراءة الكواد، و لكن مع كل ذل

24

Page 25: Prog Guide

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

Syntacticالة مع الكثير و الكثير من الــ Sugarفعل هــذه المقولــة شــديدة (. التعميم و لكن في منتهى الصحة . مثاله لغة البرمجة سي ليست لغة برمجة كائنية

type castingالتوجه ال انه يمكن كتابة برامج شيئية باستخدام مؤشرات الدوال ، . و لكن لغة البرمجة سي ++ تسهل عمليــة البرمجــة الشــيئية وStructuresو الـ

تجعلها اكثر اناقة باضافة السنتكس المناسب للبرمجة الشيئية.ــد و لكــنMooseايضا مثال اخر هو اضافة ــائني جي فبيرل تحتوي على نظــام ك

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

:Mooseالشيئية في بيرل بعد اضافة package Point; //class name use Moose; has 'x' => (is => 'rw', isa => 'Int'); //field has 'y' => (is => 'rw', isa => 'Int'); //field sub clear { //method my $self = shift; $self->x(0); $self->y(0); }

25

Page 26: Prog Guide

package Point3D; //child classuse Moose;extends 'Point'; //Inheritshas 'z' => (is => 'rw', isa => 'Int'); //Additional fieldafter 'clear' => sub { //overriding my $self = shift; $self->z(0); };

Garbage collection جمع القمامة فــي علــوم الحاسـب اللــي تعنــي نــوع مــن الدارة التوماتيكيــةــي ( التلقائية) للذاكرة. اي انها نوع خاص من ادارة الموارد ، الذاكرة في مثالنا. و ه

ليحل مشاكل ليسب. حيث يقــوم جــامع1959من اختراع جون مكارثي في العام القمامة باستعادة الذاكرة المحجوزة من قبل كائنات لم تعد مســتخدمة مــن قبــلــرا البرنامج. اذا فجامع القمامة مهمته ان يجعل من عملية ادارة الذاكرة اليدوية ام

تلقائيا بحيث ل يحتاج المبرمج نفسه بان يحرر الذاكرة المشغولة.فلسفة عملها تتخلص في :

- ابحث عن اي كائن ل يمكن الوصول اليه في المستقبل.1- استعد الذاكرة المحجوزة من هذا الكائن.2

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

26

Page 27: Prog Guide

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

...الخ.XMLكثيرة لحفظ البيانات مثل الكتابة الى الملفات النصية و ملفات

27

Page 28: Prog Guide

) :: لغة البرمجة بيرل 1 دليل لغات البرمجة (

PERL : Practical Extraction and Report Languageلغة البرمجة : ــة ظهرت على يد المبرمج و اللغوي المشهور لريجدا في عالم المصادر المفتوح

حيث بدات مرحلة التطوير الى ان وصلت اللغة الى مرحلة نضج1986وال في العام و التي تعتبر6 بدا العمل على بيرل 2000عالي في الصدارة الخامسة . و منذ العام

ــا اعادة كتابة كاملة للغة بالضافة لمشروع الببغاء و هي المنصة التي ستعمل عليهبيرل مع القدرة ايضا لضافة عدة لغات اخرى.

تتمتع لغة البرمجة بيرل بارشيف ضــخم مــن الضــافات الجــاهزة او مــا يســمىــنCPANبالسيبان ــد م و هي عبارة عن موجلز جاهزة للستخدام و اضافة المزي

القدرات الى لغة البرمجة بيرل حيث يمكن اضافة موجلز خاصة بمكتبــات برمجــةاللعاب و تصميم المواقع و غيرها من التطبيقات المفيدة .

اكتسبت بيرل شهرة واسعة بسبب قوتها في التعامــل مــع الريجكــس ( التعــابيرــدة المعتادة) ، و كفائتها في ادارة المواقع العملقة مثل امازون و سلشدوت و قاع

ــنIMDbبيانات الفلم ( ) و غيرها . و اخيرا اللغة لها شعار مشهور " يوجد اكثر مــا ادى طريقة لعمل هذا " و هذا يرجع الى انسيابية اللغة و القدرة على التطويع مم

،، بالنتيجةJust another perl hackerالى التفنن في كتابة الكواد و ظهور شعار ظهر بعض المتهكمين من مبرمجي اللغات الخرى و اتهمــوا الكتابــة بهــذه اللغــة

بالقبح .

28

Page 29: Prog Guide

لغات اثرت على بيرل :•Lisp •Awk •Sed •C •C ++•Smalltalk •Pascal

لغات تأثرت ببيرل :

•Python •Php •Ruby •Dao •Javascript •Falcon •Windows PowerShell

29

Page 30: Prog Guide

خصائص اللغة :مفسرة.1ديناميكية.2عالية المستوى.3اجرائية.4وظيفية.5تدعم البرمجة الكائنية.6 ل تعتمد على نظام تشغيل معين ( كروس بلتفورم).7

اهم التطبيقات : برامج الويب.1 ادارة النظمة و السيرفرات.2ادارة قواعد البيانات و الشبكات.3 معالجة الملفات النصية.4 برمجة الجرافكس.5

:هيلو ورد!مثال برمجي #!/usr/its/bin/perlprint Hello,World!\n“ ”;

30

Page 31: Prog Guide

) :: لغة البرمجة جافا 2 دليل لغات البرمجة (

Javaلغة البرمجة :

، حيث ظهرت هذه اللغــةoakلغة الجافا في حقيقة المر عبارة عن امتداد للغة الـ ــتعمال و ــهلة الس في بداية التسعينات من قبل صن ميكروسستمز لتكون لغة س

مثل اجهــزة اللعــاب و الـــالتسليةالتنقل و كانت تستهدف التواصل بين اجهزة VCRاما الهدف الساسي هو استثمار اللغة في اجهزة التلفاز التي تقــدم خدمــة .

الفيديو حسب الطلب . و في هذه الفترة بدات النترنت بالرواج و قد لحظ مطورواoakهذه الموجة و مستقبلها خاصة بعد ظهــور اول متصــفح جرافيكــي، فتحــول

ــا اهتمامهم الى الويب فأنشؤا ويب رنر و هو عبارة عن متصفح يدعم (اوك). حينه تم تغير اسم اوك الى جافا لتعارض الحقوق و سمي الويب رنر ( هـوت جافـا ويـب براوزر) . و تطور المر لحقا بمشاركة العديد من الشركات و المطــورين لتكتســب

جافا شعبية و قوة كبيرة .

خصائص اللغة : ل تعتمد على نظام معين : حيث يقوم الكومبايلر الخاص بالجافا بانتاج بايت.1

الى لغة اللة ، فبرامج الجافا تعمل على اي نظام توجد فيهJVMكود تحوله JVM.

لغة برمجة كائنية .2Garbage Collectionتحتوي على جامع قمامة .3

31

Page 32: Prog Guide

استايل الكتابة مشابه للسي ++.4 مكتبة قياسية غنية : تحوي عدد ضخم من الكلسات و الميثودز و يمكن.5

تصنيفها الى ست اقسام:كلسات دعم اللغة •كلسات اليوتلتي (الدوات)•كلسات الدخال و الخراج •كلسات الشبكة ••AWT لبرامج الواجهة الرسومية •Applet لبرامج المتصفحات

اهم التطبيقات :تطبيقات الويب.1برامج سطح المكتب.2برامج الشبكات.3برامج الجوالت.4 تطوير اللعاب.5

:هيلو وردمثال برمجي

class HelloWorld {public static void main(String args[]){System.out.println("Hello world!");}}

32

Page 33: Prog Guide

) :: ســـي 3 دليل لغات البرمجة (

Cلغة البرمجة : ــهورة1972قام دينيس ريتشي من معامل بل في العام ــة المش بتطوير لغة البرمج

جدا سـي. سي تبني و تقتبس كثيرا من سابقتها لغة بي و سابقات بي :CPl و BCPL..

CPLتم تطويرها لهدف اساسي هو ان تكون لغــة برمجــة عاليــة المســتوى و ان ــج تكون غير مرتبطة بمعالج او نظام معين اضافة الى ذلك ان تتيح الفرصة للمبرم

. و لكن نقطة ضعف هذه اللغة كانت انها كبيرةlow levelللتحكم بالمور التحتية و هي عبارةBCPL تم تطوير 1976جدا في الستخدام لعدة تطبيقات. و في العام

ــيCPLعن نسخة مصغرة للـ مع المحافظة على خصائص و اهداف اللغة الم . و ف و التي هي الخرى تصغيرB قام كن ثومبسون من معامل بيل بانشاء لغة 1970عام ــسBCPLللغة مع هدف اساسي و هو برمجة النظم. و في نهاية المطاف قام ديني

لتظهر الى الوجود اللغة الفائقةB الى BCPLريتشي باعادة بعض المزايا العامة من .Cالشهرة

و عندما ظهرت قوة سي و قابليتها العالية للتطويع تم اعادة كتابة نظام التشــغيلــة ــي الســاس بلغ ــا ف يونكس بشكل شبه كامل باستخدام سي و قد كان مبرمج

و على مدى السبعينات تم انتشار هذه اللغة فــي الجامعــات و الكليــات،اسمبلي ــل ــي ك لرتباطها بيونكس و توفر الكومبايلرز الخاصة بها . و مع انتشار سي و تبنــة ممــا حــدى المعهــد مؤسسة تطوير نسخة خاصة ظهرت مشكلة عدم التوافقي

الى تشكيل لجنــة خاصــة لتبنــي تعريــف وANSIالمريكي الوطني للمواصفات مواصفات موحدة للغة سي.

33

Page 34: Prog Guide

اهم اللغات التي تأثرت بها سي:•ALGOL68 •FORTRAN •B, BCPL , CPL •Assembly •PL/I

اهم اللغات التي تأثرت و اخذت من سي:•C ++•C #•JAVA •Perl •AWK •Limbo

خصائص اللغة :لغة مترجمة ( تستخدم كومبايلر ) تتميز بالسرعة الكبيرة. • مع اسلوب كتابةlow levelلغة تتيح الوصول الى الوامر و المهام التحتية •

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

اغلب الميزات مفصولة من قلب اللغة و تضاف كموجلز جاهزة للستخدام. •لغة منظمة ، اجرائية . •اسلوب الكتابة ثابت و ضعيف •

34

Page 35: Prog Guide

اهم مجالت التطبيق :انظمة التشغيل و برامج يونكس •برمجة اللعاب •

:هيلو ورد مثال برمجي #include<stdio.h>main(){printf ( hello world! );}“ ”

35

Page 36: Prog Guide

) :: سمول تولك 4 دليل لغات البرمجة (

Smalltalkلغة البرمجة :ــميمPARCقامت مجموعة البحث التعليمي في زيروكس ــي) بتص بقيادة (الن ك . و بعــد المزيــد مــن التجــارب و72لغة برمجة كائنية عرفت باسم سمول تولــك

.80التطوير توالت نسخ اخرى الى ان انتهت اللغة الى سمول تولك اهم اللغات التي تأثرت بها سمول تولك:

•Lisp •Simula •Logo •Sketchpad

اهم اللغات التي تأثرت و اخذت من سمول تولك:•Perl •Ruby •Python •Java •Objective C •Self •Falcon

36

Page 37: Prog Guide

خصائص اللغة :بحتةلغة برمجة كائنية •اسلوب الكتابة ديناميكي •لغة متعددة التطبيقات •تتوافر لها بيئة تطوير مرئية •

اهم مجالت التطبيق :برامج الباتش لبرامج المينفريم الكبيرة. •لديها القدرة على ادارة نظام التلفون الخاص بدولة كاملة •نظم المعلومات الدارية •مناسبة جدا للمشاريع العملقة •تستخدم كلغة اكاديمية للتدريس في الجامعات •

سمول تولك:غنومثال كود خاص بنسخة

‘Hello World! displayNl’

37

Page 38: Prog Guide

) :: ليسب 5 دليل لغات البرمجة (

Lispلغة البرمجة :

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

تسمح للكمبيوترات بمعالجة البيانات الرمزية على شكل قوائم.ــينات.IBMكانت شركة من اول الشركات المهتمة بهذا المجال في اواسط الخمس

في نفس الوقت كان العمل جاريا على مشروع الفورترن . و لغلء تكلفة اصدار اول كومبايلر للفورتران تم اضافة معالجة القوائم كاضافة مستقلة الى الفورتران عرفت

.FLPLباسم في ادارة بحوث المعلومات. تــمIBM عمل جون ماكارثي في شركة 1958في العام

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

حينذاك و هي فورتران.ــوير1956تعود بدايات العمل على ليسب الى العام ــارثي بتط ــون مك حيث قام ج

اسس الليسب في مشروع صيف دارتموث للبحاث. كان طموح مكارثي ان ينشيء

38

Page 39: Prog Guide

ظهـرت اول اصـدارة مـن1965لغة معالجة قوائم للذكاء الصطناعي . و في العـام ظهرت حاسوبات خاصة فقط بتشغيل برامج ليسب عرفت1970ليسب . و مع العام

بـ ( اجهزة ليسب) . و في مطلع الثمانينات تم ادخال مباديء البرمجة الكائنية الىــم1992 بدا العمل على توحيد معايير ليسب و في العام 1986ليسب . و مع العام ت

.ANSI Common Lispنشر معايير في الوقت الراهن توجد اصدارات عديدة من ليسب مــن اهمهــا شــيم و كومــونــب و ليسب و آرك بالضافة الى لغات مخصصة لتطبيقات معينة مثل ايماكس ليســى الطلق اوتو ليسب. تعتبر ليسب في نظر الكثيرين اقوى و اجمل لغة برمجة عل و يوجد الكثير من المتعصبين لها فمن امثلة تلك المقولت : الله يبرمج باستخدام

ليسب! و تعتبر البرمجة بها متعة للحرية التي توفرها للمبرمج كما تفعل بيرل .

كأمثلة فقط:Lispاهم اللغات التي تأثرت بـ •Perl •Ruby •Python •Javascript •Forth •Mathematica •Falcon •Lua •Forth •Qi

39

Page 40: Prog Guide

خصائص اللغة :لغة برمجة وظيفية •لغة برمجة متعددة الساليب في البرمجة : ميتا، اجرائية .. •جامع قمامة مبني داخل اللغة • العتماد على العودية : و هو مبدا تستمد منه ليسب قوة كبيرة خاصة في•

جانب الذكاء الصطناعي. طريقة الكتابة ديناميكية ، قوية •كل شيء في ليسب قائمة • متوفرة كلغة تفسيرية و كلغة مترجمة•

اهم مجالت التطبيق : سيطرت ليسب سيطرة تامة على مجال الذكاء الصطناعي لمدة تفوق الربع قرن و الى الن تعتبر اكثر لغة انتشارا في مجال برمجة الذكاء الصطناعي بالضــافة الــى

ذلك فليسب تعتبر رائدة اللغات في مجال البرمجة الوظيفية .الذكاء الصطناعي: •الروبوتات .1محركات اللعاب .2التعرف على النماط .3نظم ادارة الدفاع الجوي. •ادارة و معالجة القوائم. •تستخدم كلغة اكاديمية للتدريس في الجامعات ( البرمجة الوظيفية)•

40

Page 41: Prog Guide

:Hello worldمثال كود (DEFUN HELLO-WORLD () (PRINT (LIST 'HELLO 'WORLD)))

41

Page 42: Prog Guide

) :: لغة البرمجة بايثون 6 دليل لغات البرمجة (

Pythonلغة البرمجة :

1991تعتبر لغة البرمجة بايثون لغة برمجة حديثة نسبيا فبداياتها ترجع الى العام عندما قام جودو فان روسام بتطويرها. اكثر خصائص بايثون مبنية و مستوحاة من

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

ABCفي طريقة كتابتها مع القدرة على استدعاء اوامر نظام امويبا الذي كان يعمل قرر فان روسام البدء في مشروع لغة3عليه حينها. و بعد مشاورة مصممي موجول

برمجة جديدة اسماه بايثون السم المستوحى من مسلســل كوميــدي مــن زمــنالسبعينات.

اهم اللغات التي اثرت على بايثون :1.Lisp2.Haskell3.Perl4.Java5.Icon6.ABC

42

Page 43: Prog Guide

7.C8.Modula-39. AlGOL 68

اهم اللغات التي تأثرت ببايثون :-1.Ruby2.Boo3.Groovy4.Cobra5.D6.Dao7.Falcon

خصائص اللغة :لغة مفسرة ، تفاعلية ، كائنية ، وظيفية ..1برامجها تعمل على جميع انظمة التشغيل في حال توافر المفسر فقط..2 الكتابة ديناميكية قوية ، تجدر الشارة هنا الى وضوح و سهولة استايل.3

الكتابة في بايثونغنية بالضافات و المكتبات.4

43

Page 44: Prog Guide

مفتوحة المصدر.5

اهم التطبيقات : في الوقت الحاضر تعتبر بايثون لغة برمجة متعددة الغراض و لكن من اكثر

استعمالت بايثون :برمجة برامج لينكس.1سكربتات ادارة النظام.2التعامل مع قواعد البيانات.3برامج الويب.4

مثال برمجي :>>> def hello():...print "Hello, World!"

44

Page 45: Prog Guide

) :: لغة البرمجة فورتران 7 دليل لغات البرمجة (

Fortranلغة البرمجة : تعتبر فورتران واحدة من اقدم لغــات البرمجــة . قــام بتطويرهــا مجموعــة مــن

.1957 بقيادة جون باكوس ، حيث كان اول ظهور لها في العام IBMالمبرمجين في ترجمــة الفورمــول ، لن الهــدف ”جاء اسم فورتران من دمج اختصــار كلمــتي “

الساسي كان تسهيل عملية كتابة المعادلت الرياضية في الكواد البرمجية.ــة فوتران تحتل مكانة خاصة بين لغات البرمجة لنها تعتبر اول لغــة برمجــة عالي

المستوى بالضافة الى استخدامها اول مترجم على الطلق.ــتي ــمبلي و ال قبل ظهور فورتران كان على المبرمجين ان يبرمجوا باستخدام اســاء كانت تحتاج الى مجهود مظني في الكتابة اضف الى ذلك عملية تصحيح الخط

التي كانت تحتاج مجهودا مضاعفا . عليه ، كان الهدف انشاء لغة برمجة سهلة التعلم ، مناسبة للعديد من التطبيقــات ،

غير معتمدة على الة معينة مع التمتع بقدرات عالية في مجال الرياضيات . %500مع كل هذه المزايا استطاع المــبرمجون ان يــبرمجوا باســتخدام فــوتران

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

اذا فورتران لها الفضل في انشاء نظرية الترجمة في علوم الكمبيوتر. لكن مع التطور ظهرت مشكلة تعدد اصدارات فوتران مما حدى المنظمة المريكية

لحقها اصدار66 عرفت بفورتران 1966للمعايير الى اصدار معايير موحدة في العام مــع مزيــد مــن1990 فــي العــام 90 و اصدار فورتران 1978 في العام 77فورتران

الضافات و المزايا لهذه اللغة العريقة.

45

Page 46: Prog Guide

اهم اللغات التي تأثرت بفورتران :-

1.C2. AlGOL 583.Basic4.PL/I

خصائص اللغة :

لغة مترجمة ..1اجرائية..2غير محصورة لجهاز معين..3قوية جدا في التعبير عن المعادلت و التعابير و الدوال الرياضية..4 توفر تحكم قوي للتخاطب مع الهاردوير..5التحكم بموارد التخزين و الذاكرة..6 % من كفاءة برامج20كفاءة و سرعة عالية جدا لتطبيقاتها ، اقل فقط بـ .7

السمبلي!.

46

Page 47: Prog Guide

اهم التطبيقات :

فورتران قوية جدا في عدة مجالت ، اهمها :-برامج معالجة المعادلت الرياضية ..1البرامج الرياضية ، العلمية ، الحصائية ، و الهندسية ..2

:هيلو وردمثال برمجي

WRITE(6,*)'Hello world'STOPEND

47

Page 48: Prog Guide

Algol ):: لغة البرمجة 8 دليل لغات البرمجة (

Algolلغة البرمجة :

ALGOrithmic“ ( اختصار لكلمتي Algolتعتبر لغة Languageــن ) واحدة م “ اللغات عالية المستوى المخصصة للبرمجة العلمية و الحسابية . بــدات فــي العــام

و تطــورت مــن خلل58الجــول ، حيث طرحت على شكل تقريــر بعنــوان 1950 .68 ثم 60التقارير الى الجول

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

اكثر ابداعا و لكن في نفس الوقت جعلت عملية التطبيق اكثر صعوبة .ــاAlgolو على الرغم من عدم وصول ــة كم الى مستوى عالي من الشعبية التجاري

حصل لفورتران و كوبول ، ال انها تعتبر اهم لغة في عصــرها مــن ناحيــة تأثيرهــاــ ــاص بـ ــوي الخ Algolالقوي على اللغات القادمة . نظام المفردات و الهيكل النح

اصبح شديد الشهرة لدرجة انه فعليا جل لغات البرمجة يقال عنهــا " مشــابه لـــAlgol. "

48

Page 49: Prog Guide

:-Algolاهم اللغات التي تأثرت بـ 1.C2.C++3.Ada4.Python5.SteelMan6.Bash7.Simula8. Pascal

خصائص اللغة :لغة متعددة النماذج ، امري ، متزامن ...1لغة مترجمة ..2استايل الكتابة ثابت ..3

اهم التطبيقات : كان استخدامها للبحاث العلمية و الحسابات بواسـطة العلمـاءAlgolاهم مجال لـ

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

49

Page 50: Prog Guide

:هيلو وردمثال برمجي

BEGINFILE F (KIND=REMOTE);EBCDIC ARRAY E [0:11];REPLACE E BY "HELLO WORLD!";WHILE TRUE DOBEGINWRITE (F, *, E); END;END.

50

Page 51: Prog Guide

) :: كوبول 9 دليل لغات البرمجة (

Cobolلغة البرمجة :

تعتبر كوبول واحدة من اوائل لغات البرمجة عالية المستوى . تم تطويرها في العامــد1959 ــة للعدي من قبل مجموعة من محترفي الكمبيوتر و منذ ذلك خضعت اللغ

ــول من التعديلت و التحسينات. و لحل مشكلة عدم التوافقية بين اصــدارات كوب المتعددة قامت المنظمة الوطنية المريكية للقياسات باصدار نسخة موحــدة للغــة

ANS، حيث عرف هذا الصدار باسم 1968في العام COBOL ــام 1974 . و مع الع قامت المنظمة مرة اخرى باعادة طرح نسخة معدلة من كوبول تحتوي على المزيد

ــي1985من المزايا و الضافات الجديدة. و تكررت هذه العملية ايضا في العام . و فــة .97الصدارة الرابعة التي عرفت باسم كوبول تم اضافة خصائص البرمجة الكائني

ــي و يوجد الن العديد من المترجمات لكوبول على الرغم من محاولت التوحيد فهذا المجال.

اهم اللغات التي تأثرت بها كوبول:•FACT •COMTRAN •FLOW-MATIC

51

Page 52: Prog Guide

لغات تأثرت بكوبول :•PL/I •COBOL Script •ABAP

خصائص اللغة :لغة مترجمة .1مخصصة لدارة العمال للشركات .2امكانية التمازج مع تطبيقات الويب .3بيئة تطوير مرئية .4 التفاصيل في تعريف المتغيرات مثل عدد كسور المتغير و موضع نقطة.5

الكسر. تعنى بتفاصيل الملفات و معلوماتها مما يجعلها خيارا ممتازا لطباعة التقارير..6توافر مكتبات تحوي العديد من الكلسات .7نمط الكتابة قوي .8

52

Page 53: Prog Guide

اهم مجالت التطبيق :

كوبول اسمها COmmonمن Business-Oriented Languageممتاز خيار فهي لحل مشاكل العمال و الشركات ، حيث تستخدم كثيرا في الشركات كنظام شامل

خاصة في تتبع المصادر و المخارج و غير ذلك .

:Hello worldمثال كود IDENTIFICATION DIVISION.PROGRAM-ID. HELLO-WORLD.PROCEDURE DIVISION.MAIN.DISPLAY 'Hello, world'.STOP RUN.

53

Page 54: Prog Guide

) :: بي اتش بي 10 دليل لغات البرمجة (

PHPلغة البرمجة : ــموسPHP/FIفي البداية ظهرت البي اتش بي لول مرة باسم ــها راس و قد اسس

ــبيرل1995ليردورف في العام ــة ال على شكل مجموعة من سكربتات مكتوبة بلغ لكي يسيطر على احصائيات موقعه و يكسب بعض المعلومات عن رواد موقعه ، و ما

Personalلبث ان اطلق عليها اســم ( Hompage Toolsأي ادوات تصــميم ( ” ”الصـــــــــــــــــــــفحات الشخصـــــــــــــــــــــية .

ــة ــة بلغ ــنع آلي طبعا للتوسع في تغطية بعض العمليات الضافية بدأ راسموس بصــم ــنعوا له ــتخدمين أن يص السي بوسعها التصال بقواعد البيانات ، و تمكن المس صفحات ديناميكية بسيطة . و اخيرا قرر راسموس ان يعرض هذا الكود المصــدري

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

لغة البيرل و لكن طبعا بامكانيات اكثر تواضعا من ان تقارن بالبيرل . و الــتي كــانت تحتــوي علــىPHP/FI ، تنزل النسخة الثانية من الـــ 1997العام

النسخة الجديدة الثانية من الكود المصدري المكتوب بلغة السـي ، و كـان هنـاكــبي50000اللف من المستخدمين يستخدمونها و حوالي موقع اعلن تنصــيبه لل

اتش بي على سيرفراته.

54

Page 55: Prog Guide

ــبيرة و مئات1998و في العام كانت البي اتش بي قد اكتسبت قاعدة جماهيرية كــى ــي عل من اللف من المواقع كانت ترسل معلنة انها قامت بتنصيب البي اتش ب

% من10 حوالي 3سيرفراتها . أي بلغت نسبة المواقع التي تستخدم البي اتش بي في شهر جون بعد ان1998 رسميا في php3اجمالي مواقع الويب . و قد تم اصدار

امضت حوالي تسعة اشهر تحت الستخدام التجريبي . الرســمي . بــدأ زيــفphp3 و بعد فترة وجيــزة مــن اصــدار الـــ 1998في شتاء

سوراسكي و اندي جوتمانز بإعادة كتابة و برمجة نواة البي اتش بي .ZEND“لهذا الغرض بدأ تصميم محرك جديد سمي Engineــم ” ( و يتركب اس

المحرك الجديد من اول حرفين من اسم زيف و اخر حرفين من اسم اندي ) . و في تم التعريــف بهــذا المحــرك لول مــرة بعــد ان حقــق الهــداف1999منتصفات

ــي 2000المنشودة منه بنجاح قوي و في شهر مي من عام 4 تم اصدار البي اتش ب مع المحرك الثــاني و نظــام كــائني5 تم اصدار بي اتش بي 2004رسميا. في العام

جديد مما قدم قدرات كائنية جديدة و قوية..

:phpاهم اللغات التي تأثرت بها •Perl •C •Java •C ++

55

Page 56: Prog Guide

:PHPلغات تأثرت بـ •PHP4Delphi •Falcon

خصائص اللغة :تعمل على اغلب نظم التشغيل .1مخصصة لتطوير الويب .2 . HTMLكود بي اتش بي مضمن داخل وسوم الـ .3سهلة التعلم. .4غنية بالدوال الكثيرة المبنية داخل اللغة. .5اسلوب كتابة ديناميكي ، ضعيف. .6لغة مفسرة .7

اهم مجالت التطبيق : بل شك اهم مجال لبي اتش بي هو قوتها في مجال تطوير مواقع و تطبيقات•

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

:Hello worldمثال كود <?phpecho Hello world ;‘ ’

?>

56

Page 57: Prog Guide

) :: ايفل 11 دليل لغات البرمجة (

Eiffelلغة البرمجة : ”لغة البرمجة ايفل من انشاء برتنارد مير و من تطوير شــركته هندســة البرامــج

. و1986 و كان اول ظهور لها في العام 1985 ، بدا العمل عليها في سابقا”التفاعلية ــهور . و ــل المش سميت بايفل تيمنا بجوستاف ايفل المهندس الذي صمم برج ايف يضيف مطوروا هذه اللغة ان باستخدامك هذه اللغة في مشــاريعك ســتتمكن مــن انجاز المشاريع في وقتها و ضمن الطار المالي المرصود كما حدث تماما فــي بنــاء

برج ايفل !.. ايفل لغة تعنى بالجودة و الكفاءة و قابلية الستفادة من الكود في مشاريع لحقة ،ــى لغــات اضافة الى انها قدمت مباديء برمجية جديدة وجدت طريقهــا لحقــا ال

البرمجة المشهورة اليوم مثل الجافا .

اهم اللغات التي تأثرت بها ايفل :•Ada •Simula •Z

لغات تأثرت بـ ايفل :•Java •C #•Ruby •D

57

Page 58: Prog Guide

•Lisaac •Sather

خصائص اللغة :تعمل على اغلب انظمة التشغيل .1لغة برمجة كائنية بحتة.2تدعم التكرار و التعدد في التوارث .3اسلوب الكتابة ثابت ، قوي .4لغة مترجمة .5التوثيق اللي .6 design by contractالبرمجة بالعقد .7

اهم مجالت التطبيق :انظمة التصالت •التدريس الكاديمي •النمذجة الولية السريعة •البرامج التجارية •برمجة اللعاب •البرامج الطبية •الطيران •

58

Page 59: Prog Guide

:Hello worldمثال كود class

HELLO_WORLD

create

make

feature

make

do

print ("Hello, world!%N")

end

end

59

Page 60: Prog Guide

2 ) ::موجول- 12 دليل لغات البرمجة (

Modula-2لغة البرمجة : ( مصمم لغة باسكال ) يقوم بتجاربNiklaus Wirthفي منتصف السبعينات ، كان

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

. طبعا فشل الجهاز و لم يحقق النجاح المطلوب و لكــنLilithبجهاز سيعرف باسم . هذه اللغة2 لنعرفها الن باسم موجول-1980لغته الخاصة هذه تم نشرها في العام

على بساطتها ال انها قوية و جبارة بحيث انها كانت اللغة المنتشرة في اوربا حــتى مع موجود جافا و سي ++ لحقا. و قد اعتبرهــا مبرمجهــا خليفــة لغــة البرمجــة

باسكال ..اهم اللغات التي أثرت على هذه اللغة :

باسكال ••ALGOL •Mesa •Simula-67

لغات تأثرت بـهذه اللغة :•Ada •Oberon •Lua •Fortran 90

60

Page 61: Prog Guide

•Modula-3 •Modula-GM

خصائص اللغة :تعمل على اغلب انظمة التشغيل .1لغة برمجة امرية (الزامية) ، تنظيمية ، تعتمد الوحدات ( موجلر) .2ميزة الوحدات اعطتها قوة كبيرة في تطوير المشاريع العملقة .3اسلوب الكتابة ثابت ، قوي .4لغة مترجمة .5القدرة على البرمجة العالية و المنخفضة المستوى . .6تعتبر سهلة التعلم بسبب صغر قاموسها النحوي. .7

اهم مجالت التطبيق :برمجة النظمة •البرمجة المتزامنة •برمجة النظمة المضمنة ( المدمجة) •هندسة البرامج •التعليم •البرمجة الصوتية •

61

Page 62: Prog Guide

:Hello worldمثال كود MODULE hello;

FROM InOut IMPORT writestring, writeln;

begin

WriteString("Hello, world!");

Writeln;

end hello.

62

Page 63: Prog Guide

) :: روبي 13 دليل لغات البرمجة (

Rubyلغة البرمجة : ــوموتو ان1993بدات فكرة لغة البرمجة روبي في العام عندما اراد يوكيهيرو ماتس

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

اخرى بهذا السم . للعامة تله ثلث اصدارات0,95 تم اصدار روبي 1995 ديسمبر من العام 21في يوم

متلحقة خلل يومين فقط. رافق هذا الصدار العلن عن انطلق القائمة البريديةروبي باللغة اليابانية .

فــي العــام1.3 . اعقبــه الصــدار 1 تم اصدار روبي 1996 من العام 25في ديسمبر حيث رافقته انطلقة القائمة البريدية النجليزية . هذا المر تسبب في ازدياد1999

باســم "2000شعبية اللغة و تم اصدار اول كتاب انجليزي لهذه اللغــة فــي العــام برمجة روبي" تجدر الشارة هنا الى انه تم طرح هذا الكتاب مجانا لحقا .

.2009 من العام 30 في يناير 1.9.1تم اصدار روبي

63

Page 64: Prog Guide

اهم اللغات التي اثرت على روبي :-1 -Perl2 -SmallTalk3-Lisp4 -Python5 -Eiffel6 -CLU7 -Dylan8 -T-Ray

اهم اللغات التي تأثرت بروبي :-1.Groovy 2.Falcon 3.Nu 4.Loke

خصائص اللغة :-لغة متعددة النماذج ، امري ، وظيفي ، كائني..1-لغة مفسرة .2-استايل الكتابة ديناميكي3

64

Page 65: Prog Guide

-مفتوحة المصدر .4“ Garbage Collection“-لديها جامع قمامة 5JRuby-تعمل على منصة جافا باستخدام 6-تعمل على اغلب انظمة التشغيل7-سهولة كتابة الضافات بلغة سي8

اهم التطبيقات :ــتخداماتها الن روبي لغة برمجة عامة متعددة الغراض و لكن يبدو ان من اهم اس

باستخدام الويب ايضا استخدام روبي فيRuby on Railsبرمجة تطبيقات . يتم اغراض اخرى مثل التجسيم الثلثي و المحاكاة و ادارة النظم …

مثال برمجي :

puts "What's your favorite number?"number = gets.chompoutput_number = number.to_i + 1puts output_number.to_s + ' is a bigger and better favorite number.'

65

Page 66: Prog Guide

) :: باسكال 14 دليل لغات البرمجة (

Pascalلغة البرمجة : ”تم تطوير لغة البرمجة باسكال اساسا مــن قبــل نيكلــس ورث و هــو عضــو ”

. قــام البرفســور نيكلــس ورث بتطــويرIFIPالفدرالية العالمية لمعالجة النصوص باسكال لتحوي المميزات التي تخلو منها لغات البرمجة في ذلــك الــوقت. و كــان

هدفه الرئيسي في ان يجعل من لغة باسكال :- لغة ذات كفائة في مرحلتي التطبيق و التنفيذ .1- لغة تسمح بتطوير برامج ذات هيكلية جيدة و تنظيم رشيق.2-لغة لغرض تعليم مباديء البرمجة الساسية و المهمة.3

”و تعتبر لغة باسكال و التي سميت بهذا الســم تيمنــا بعــالم الرياضــيات بليــزــرىALGOL60”باسكال وريثة مباشرة للغة البرمجة ــي الخ ــدورها ه و التي ب

حظيت بكون البرفسور ورث احد مطوريها . ايضا فلغة باسكال تبني على العناصــرAlgolالبرمجية من كل w و ALGOL68و قد ظهر اول تعريف للغة باسكال فــي .

. و قد تم تصميمها لكي تكون اللغة1973 ، تله اعادة تصحيح في العام 1961العام ــي المستخدمة في الكليات لتعليم البرمجة و مفاهيم البرمجة و قد كانت بالفعل ه

اللغة المفضلة في هذا المجال من نهايات الستينات الى بداية التسعينات .

اهم اللغات التي اثرت على باسكال :-1-ALGOL2-Cobol

66

Page 67: Prog Guide

اهم اللغات التي تأثرت بباسكال :-1.Java 2.Oberon 3.Oberon-2 4.Ada 5.Oxygene 6.Modula-2 7.Component Pascal 8.Object Pascal

خصائص اللغة :-النموذج امري ، هيكلي ، اجرائي..1 -لغة مترجمة ، اغلب المترجمات كتبت بلغة باسكال نفسها و لكن جنو باسكال2

مكتوب بلغة سي .-استايل الكتابة قوي و ثابت .3-تدعم البوينترز4-يوجد لها مفسر ايضا ..5

بعض مميزات اللغة لمجال تعليم البرمجة الهيكلية : ) و هي انواع البيانات الموجودة سلفا في اللغة مثلData types-احتوائها على (1

العداد الصحيحة و المنطقية و الحروف …الخ-اضافة الى ذلك يمكن انشاء انواع بيانات جديدة يحددها المستخدم.2

67

Page 68: Prog Guide

-احتوائها على مجموعة جيدة من قوالب البيانات المهيكلة مثل : القوائم و3 .Setsالريكوردز و الـ

-دعم البرمجة الهيكلية : و هذا يتحصل من خلل استخدام البرامج الضمنية او ما4يعرف بالبروسيجرز و الفانكشن.

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

ــذهCمثل ــاهيم ه ــدريس مف ++ و جافا و سمولتولك و بدء الجامعات و الكليات ت النوعية من البرمجة . و لكن تجدر الشارة الى انه للمهتميــن بالبرمجــة الشــيئية يوجد بديل باسم اوبجكت باسكال و قد برمج برنامج سكايب المشهور به ، و ليس

الكلم عن هذا الموضوع .

مثال برمجي :

program HelloWorld;

beginwriteln('Hello World');end.

68

Page 69: Prog Guide

Pl/1 ) :: 15 دليل لغات البرمجة (

Pl/1لغة البرمجة : فــي اواســط الســتينات مــن القــرنIBM بواســطة Pl/1تم تطوير لغة البرمجــة

( لغة البرمجة الجديـدة) و لكـن تـمNPLالعشرين. و قد كان السم الصلي للغة ( مختــبر الفيزيــاءNPL لتفادي المغالطة بين اللغــة و بيــن Pl/1تغيير السم الى

الوطني ) في انجلترا . لذلك لو تم تطوير المترجم خارج انجلترا لربما بقــي الســمبدون تغيير .

قبل تطوير هذه اللغة البرمجية كانت لغات البرمجة تركز على جــانب معيــن مــنــة . و ــاريع التجاري التطبيق مثل الذكاء الصطناعي او الحسابات الرياضية او المش

ــخمةPl/1لكن لم تصمم لكي تستخدم بهذه الطريقة ، بل كانت اول لغة برمجة ضــدياتPl/1هدفها ان تغطي اغلب مجالت التطبيق . لذلك كان على ان تواجه تح

قوية لتنافس فورتران في المجال العلمي و كوبول في مجال العمال ، فكــان مــنهذه الهداف و التحديات :

-ان تكون لغة مترجمة مع سرعة تنفيذ مشابهة لفورتران.1-ان تكون قابلة للتوسيع لدعم المزيد من الهاردوير و التطبيقات الجديدة.2 -زيادة النتاجية و تحسين الوقت المحتاج لعملية البرمجة من خلل نقل3

المجهود من المبرمج الى المترجم. -ان تكون متعددة المنصات و ان تعمل بشكل جيد على مستوى كل قطع4

الهاردوير و نظم التشغيل.

69

Page 70: Prog Guide

:Pl/1اهم اللغات التي اثرت على 1-Cobol2-Fortran3-ALGOL

:-Pl/1اهم اللغات التي تأثرت ب 1.SP/k 2.REXX

خصائص اللغة :-النموذج امري ، هيكلي ، اجرائي..1-لغة مترجمة .2-تحاول ان تحاكي اللغة النجليزية في طريقة الكتابة3-تدعم العودية ، و مفاهيم البرمجة الهيكلية.4 -ل توجد بها كلمات مفتاحية محجوزة ( يمكن ان يكون اسم المتغير كلمة5

مفتاحية )

70

Page 71: Prog Guide

اهم التطبيقات :Pl/1كانت تتمتع بشعبية كبيرة في جانب ادارة العمال و التطبيقــات العلميــة. و

ــا كانت اللغة الرئيسية للتدريس في جامعة ميشيغان ديربورن لمدة من الزمن . ام في الوقت الحاضر فشعبيتها قلت كثيرا طبعا ( و لكنها ل تزال تســتخدم) بســبب

ــركةPl/1اللغات الجديدة و المفاهيم الحديثة . و من الشركات التي استخدمت شفورد موتورز المعروفة و شركة مارثون النفطية .

مثال برمجي :

Hello2: proc options(main);put list ('Hello, world!');end Hello2;

71

Page 72: Prog Guide

) :: هاسكل 15 دليل لغات البرمجة (

لغة البرمجة : هاسكل ، زاد الهتمــام بلغــات البرمجــة1985 في العام Mirandaبعد اصدار لغة البرمجة

ارتفع عدد اللغات الوظيفية الصرفة الى اكــثر1987الوظيفية الكسولة . فمع العام ــن12من ــم تك لغة . طبعا من هذه اللغات كانت ميرندا الكثر استخداما و لكنها ل

. لذلك في مؤتمر اللغات البرمجيةResearch Softwareمجانية بل مملوكة لشركة ) و الذي تم عقده في بورتلند اوريجون ،FPCA 87الوظيفية و هندسة الكمبيوتر (

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

توجت الجهود1997 . و في العام 1 تم النتهاء من تعريف هاسكل 1990و مع العام ــة ، بالضــافة98بظهور هاسكل التي وفرت اصدار ثابت ، خفيف و متنقل من اللغ

ــكل الى مكتبة لغرض التعليم . و قد رحبت اللجنة بانشاء الضافات و البدائل لهاس عن طريق اضافة الخصائص التجريبية .98

”لغة هاسكل تتطور بشكل سريع جدا و يعتبر المــترجم جلســكو ”GHCهــو الكثر شيوعا في الستخدام . يذكر ان سبب التسمية هو تيمنا بعالم الرياضيات و

المنطقي المريكي هاسكل كوري.

72

Page 73: Prog Guide

:Haskellبعض اللغات التي اثرت على 1-Lisp2-Miranda3-APL4-Ponder5-Standard ML6-Lazy ML

:-Haskellاهم اللغات التي تأثرت ب 1-Omega2-Perl63-Python4-Visual Basic 95-Clojure6-Cat7-Cayenne8-Qi9-Java Generics

10 -F#

73

Page 74: Prog Guide

11 -C#12 -Scala

خصائص اللغة :

-لغة برمجة وظيفية صرفة .1-تستخدم التقييم الكسول .2-استايل الكتابة ثابت و قوي .3-ذات معايير و مواصفات مفتوحة.4.Hackage-تتمتع بمجتمع فاعل و لديها مخزن غني بالمكتبات يدعى 5 يعتبر مترجم و مفسر ايضا و يعمل على اغلب نظم النظمة وGHC-مترجم 6

يتميز بالكفاءة العالية.

74

Page 75: Prog Guide

اهم التطبيقات : هاسكل بدات تزداد شعبيتها في الستخدامات التجاريــة . المبرمجــة المشــهورة

ــل6اودري تانج قامت بعمل تطبيق لبيرل بلغة هاسكل فكانت النتيجة نسخة تعمــة Pugsبشكل جيد في زمن قياسي معروفة باسم ــارتLinspire. ايضا توزيع اخت

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

اللعاب.

مثال برمجي :

module Main where

main :: IO ()main = putStr "Hello World!"

75

Page 76: Prog Guide

) :: فيجوال بيسك 17 دليل لغات البرمجة (

Visual Basicلغة البرمجة : ، و التي قدمت طريقة السحب1991 في العام 1.0تم عرض فيجوال بيسك الصدار

و الفلت لتصميم واجهات المستخدم ، و التي تم تطويرها من خلل برنامج انشاءــم ــروف باس ــركته المع ــوبر ) و ش ــأه ( الن ك ــذي انش ــورمز ال .Tripodالف

ــوير ــركاؤه) لتط ــونTripodحيث تم التعاقد بين ميكروسوفت و كوبر ( و ش ليكــبرمجي 3.0فورم سيستم قابل للبرمجة لويندوز Ruby ، و ذلك تحت المســمى ال

ــــي ). ــــة روب ــــة البرمج ــــع لغ ــــة م ــــا اي علق ــــد هن ( ل توجTripodلم يكن يحتوي على لغة برمجة اطلقا ، لذلك قــررت ميكروســوفت بــأن

لتنشيء ما يعرف بـــفيجوال بيســك ( بيســكBasicتدمج روبي مع لغة البرمجة ــرعة ). ــج بس ــاء البرام ــي انش ــرئي ف ــانب الم ــى الج ــا عل ــة : لتركيزه المرئي

حيث تم تحســين بيئة البرمجــة لتكــونVB2.0 تم اصدار 1992في نوفمبر العام بنســختيهVB3 تــم اصــدار 1993اكثر سهولة و اكثر سرعة . و في صــيف العــام

ــدار ــن 1.1القياسية و الحترافية . و في هذا الصدار تم اضافة الص Microsoft مJet Database Engine العام في و اصدار 1995. تم VB4الول كان هذا الصدار

. ايضا مع هذا الصدار اصبحت هنــاك امكانيــة32bit و 16bitفي دعم انشاء برامج انشاء كلسات غير ذات واجهة رسومية. و قد عانى هذا الصدار بعض المشاكل فيــــــــــــــــــــــــــــــــــــــــــــــــــــة . التوافقي

حصــرياVB قررت ميكروســوفت ان تصــدر 1997مع الصدار الخامس في فبراير . في هذا الصدار اصــبح هنــاك امكانيــة انشــاء ازرار مــن تصــميم32bitلمنصة

المستخدم بالضافة الى القدرة لبناء البرامج مباشرة الى الكود البرمجي التنفيذيـــــــــــــــــــــــــــــــــــــــــــــــــــــدوز . لوين

76

Page 77: Prog Guide

ــن1998مع العام ــد م ــع العدي ، تم اصدار النسخة السادسة من فيجوال بيسك م مــن قبــلVB6التحسينات اهمها القدرة على انشاء برامج الويب . و قد تم الغــاء

العام مع . 2008ميكروسوفت VB.NET وريث يعتبر VB6الذي هو جزء من و ، على الرغــم مــنVB و ل يوفر اي توافقية مع الصدارات السابقة من NETمنصة .

وجود برامج تقوم بالتحويل بين اكــواد الصــدارين ال ان التحويــل التومــاتيكيــع الكامل غير ممكن لغلب المشاريع . تجدر الشارة الى انه الى الن هناك مجتم

.VBكبير من المستخدمين ل يزالون يدعمون و يبرمجون بالصدار السادس من

لغات اثرت على فيجوال بيسك :1 -QuickBASIC

لغات تأثرت بفيجوال بيسك :

1 -VisualBasic.NET2-REALBasic3 -Gambas4 -Basic4ppc

77

Page 78: Prog Guide

اهم خصائص اللغة :

- كائنية التوجه1- استايل الكتابة ثابت و قوي23 -Event Driven- لديها جامع قمامة4- بشكل عام ليست حساسة بالنسبة للحروف5- اندماج قوي مع نظام التشغيل ويندوز6- يوجد لها مترجم من الصدار الخامس جنبا الى جنب مع المفسر7

بعض عيوب فيجوال بيسك الى الصدار السادس ( قبل اصدار دوت نيت ) :- دعم ضعيف للبرمجة الكائنية1.COM- العتمادية على تعقيدات مدخلت الريجستري للـ 2 - قبل الصدار الخامس كانت هناك مشاكل من ناحية الداء للبرامج المكتوبة3

بهذه اللغة ، تم ازالتها مع الصدار الخامس..DLL- مشاكل في التوافقية بسبب تعدد اصدارات 4

اهم الستخدامات : هــدفها الساســي هــو تســهيل عمليــةBASICفيجوال بيسك كما لغة البرمجة

ــحب و الفلت البرمجة ، حيث انها وفرت خاصية البرمجة السريعة باستخدام الســوفير ــى ت للعناصر لكي يتم انشاء الواجهة الرسومية بيسر و سهولة ، هذا اضافة الــج قيم افتراضية لغلب العناصر ما يساعد في تقليل كتابة الكواد من قبل المبرم

78

Page 79: Prog Guide

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

سواء الصغيرة او الكبيرة .

مثال برمجي :

Private Sub Form_Load() execute a simple message box that will say Hello, World!‘ “ ”

MsgBox Hello, World!“ ”

End Sub

79

Page 80: Prog Guide

:: الخاتمة ::

تم بحمد ال النتهاء من النسخة المرشحة الولى من هذا الكتاب . ادعو ال انـــي2010اللكتروني في الخامس من شهر مارس

وفقت لطرح بعض المواضيع و النقــاط المفيــدة الــتي وقعــت فــي فائدة القاريء الكريم . و انا اذ ل ادعي الكمــال بــل اســعى نحــوه امتثل بقوله تعالى و ما ابريء نفسي ان النفــس لمــارة بالســوء

ال ما رحم ربي.

للمراسلة بخصوص اي اقتراح او تعديل او نقد :[email protected]

على امل ان تكونوا من قراء النسخة القادمـــة.

ــبين ــه الطي ــد و ال ــق محم ــيد الخل ــى س ــلم عل ــلة و الس و الصالطاهرين.

80

Page 81: Prog Guide

:: ترخيص الكتاب ::

81