الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

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

مغلق
بدأه حسام الملحم في 5 أكتوبر 2006 · 42 رد · 7,318 مشاهدة · في هندسة البرمجيات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

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

حزمة قارئ الدوال والمعادلات الرياضية، لغة برمجة عربية بسيطة (جديد)

ربما آخذ وقتا كثيرا في تصميمها، أكتب هذا الكلام وأنا أرى أني في الإصدار رقم 0.1 من هذه اللغة. وأعتقد أني سأصدر شفرة اللغة في المنتدى عندما أصل إلى الإصدار 1.0 على الأقل بإذن الله.

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

بالتفصيل:

1- أعمل حاليا على Code Generator وبعدها سأعمل على Code Optimizer، وهذا أعمل عليه وحدي حاليا.

2- في هذا الموضوع، أريد مشاركة الأعضاء في Lexizal Analyzer و Syntax and Semantic Analyzer. وهذا يختص بشرح تراكيب اللغة المستخدمة.

لمزيد من التفاصيل راجع موضوع محمد حسام "كيف تبني لغة برمجة(المرحلة الأولى)"

الهدف المنشود الحالي من هذا العمل:

1- المتعة في إصدار لغة برمجة عربية بسيطة.

2- تحدي مصاعب ومشاكل تصميم المترجمات عموما واكتساب الخبرة.

3- محاولة تقريب لغة الآلة إلى اللغة العربية قدر الإمكان.

4- صناعة عمل منسق ومحبوك قدر الإمكان مع توفر شرح الشفرة وشرح مبادئ تراكيب هذه اللغة.

أرجو عدم استعجال هذا العمل، وسأبقي هذا الموضوع كمسودة.

الآن أضع بين أيديكم سؤال: كيف تقترح شكل وأسلوب هذه اللغة؟

#2

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

تلاحظون أني استخدمت Tab للدلالة على القطعة

حاولت صناعة برنامج أهلا وسهلا وبرنامج يصنع فئة ويستخدمها استخداما بسيطا.

اقتباس
الحزمة: برنامج_أهلا_وسهلا. \\ أقصد بالعمل الحزمة التي تحوي البرنامج.

فئة أهلا_وسهلا: \\أقصد بالفئة الصنف أو الوحدة في اللغات الشيئية.

_______ مسيرة الطباعة_السهلة: \\أقصد بالمسيرة مثل العملية أو الطريقة.

______________ اطبع: أهلا وسهلا.

______________ اطبع: 1 ، 2 ، 345.

______________ افرض س من نوع رقم بسيط = 6.

______________ كرر الجمل التالية 20 مرة:

_____________________ اطبع: س.

_____________________ س=س+1.

_______ ---- \\نهاية المسيرة

------- \\نهاية الفئة.

فئة باب_ذهبي:

_______ افرض مفتوح من نوع ثنائي.

_______ افرض لون_الباب من نوع لون = أخضر(لون).

_______ مسيرة افتح:

______________ مفتوح = صائب.

_______ ميسرة أغلق:

______________ مفتوح = خاطئ.

_______ مسيرة هل_الباب_مفتوح من نوع ثنائي:

______________ أرجع مفتوح.

_______ ميسرة غير_لون_الباب_إلى_اللون لون_الباب_الجديد (لون)

______________ لون = لون_الباب_الجديد.

-------

فئة تجربة_الباب_الذهبي:

_______ مسيرة التجربة:

______________ افرض بابي_الجميل = باب_ذهبي جديد.

______________ افتح بابي_الجميل.

______________ أغلق بابي_الجميل.

______________ اطبع:هل_الباب_مفتوح بابي_الجميل.

______________ غير_لون_الباب_إلى بابي_الجميل اللون الأزرق.

------

ملاحظة، استخدمت (_) لأبين Tab

ما رأيكم؟؟ أرجو المشاركة بالأفكار والانتقاد.

#3

بسم الله الرحمن الرحيم.

سيد حسام ماشالله عليك مجهود رائع.انا لست خبير بالبرمجة و لكن لدي اقتراحات من الممكن تساعد في فتح منابع الاأفكار لديك.

1- ربط قواعد برمجة اللغة بأساسيات تصنيفية جديدة مع الاخذ في الحسبان طريقة جديدة .

2- استخدام الالوان في اعطاء الاوامر يعني مثلا امر اطبع بالوان كل لون يدل على طباعة + تمرير الامر الى فئة اخرى.

3- الخوارزميات بدأت بحرفين س و ص و أخذها الغرب و جعلها x & y

من الممكن فعل نفس الشيءز

4- في الاأوامر ماذا لو استخدمنا جذر الكلمة مثال كلمة اطبع جذر الكلمة طبع في حالة و جود اوامر اختيارية في الطبع من الممكن استخدام مشتقات الكلمة مثل اطبع , استطبع , مستطبع, يطبع .

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

5 استخدام التشكيل في الاوامر او من الممكن ان تكون مجردة بحيث يسهل استخدامها.

6- اقترح تسمية اللغة باسم ( لغتنا) loghatona

وارجو منك تقبل اقتراحاتي المتواضعة .

#4

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

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

ننتظر الأفكار.

#5

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

مثلا, تخيل:

اقتباس
فئة سيارة_ذات_دفع_خماسي // سيارة سوبر بوكيمون .. شخابيط

__عملية انطلق_الى_الفضاء

____ اطار1.دوران_بسرعة( 55 )

____اطار2.دوران_بسرعة( اطار1.سرعة_الدوران() * 2 )

____محرك.انطلق_نحو_الفضاء()

عملية رئيسي

__ سيارة_ذات_دفع_خماسي ماطور, خنفسانة, خماسي, جرندايزر

__ ماطور.انطلق_الى_الفضاء

__ خنفسانة.انطلق_الى_الفضاء

المشكلة هي في صياغة التعابير بصيغة المذكر و المؤنث, و كذلك في المسافات بين الكلمات. في اللغة الانجليزية يمكن فصل الكلمات بطريقة camelCase اما في اللغة العربية فلا يوجد مقابل لذلك, فسنضطر لوضع _ بين الكلمات.

#6

لا شك أن هذا مشروع رائع تستحق الثناء عليه

إلا أني أنصحك ب :

- تجنب إستعمال المؤنث و الإقتصار على المذكر

-حاول ما أمكن أن تقوم بالإختصار في الكلمات المحجوزة

هذا و أرجو أن تكون هذه اللغة مفتوحة المصدر حتى نساهم جميعا في تطويرها *-)

#7

طيب اخي ممكن تضفني على الاميل ان سمحت

fcis_acm@hotmail.com

#8

لقد استخدمت البيسك العربي و اللوجو العربي في صغري و لي بعض التعليقات

استخدام المصدر من الفعل بدلاً من الفعل نفسه

مثلاً أوامر مثل

اطبع , افتح, اغلق

تصبح

طبع فتح غلق

أيضاً تجنب استخدام الهمزات فوق الالف افترض ان جميع الهمزات هي همزات وصل و ليست همزات قطع

حاول استخدام مصطلحات بسيطة مثل

دالة أو عملية function

فكرة استخدام الTabs أكثر من رائعة فهي توفر الوقت و تزيد من الReadability كجزء من اللغة مثل Python

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

Sr. Software Development Engineer
Hulu, LLC
My Blogs

#9

في مثل هذه الامور لا غني عن الباسكال شوف

while (a>b ) do
  begin
  end;

النظير العربي

طالما س > ص اعمل

بداية

نهاية

 if (a>b ) then
   begin
  end
	 else  ... ..

اذا كان س > ص فان

بداية

نهاية

والا

هذا على سبيل المثال

تم تعديل هذه المشاركة بواسطة romanof في 6 أكتوبر 2006 في 19:23

أضاعوني وأي فتى أضاعـوا * * * ليـوم كــريهـة وســـداد ثغــــر

وخـــــلونـي ومعتـرك المنايـا * * * وقد شـــرعوا أسنــتهم لنحـري

كأني لم أكــــــن فيهـم وسيطـا * * * ولم تك نســبتي في آل عمــرو

أجرر في الجـــوامع كـل يـوم * * * ألا لله مظــــلمتـي وهـصـــري

عسى الملك المجيب لمن دعاه * * * سينجيني فيعلم كيــف شكـري

فأجـــزي بالكرامـة أهـل ودي * * * وأجزي بالضـغينة أهل ضري

منتديات الرياضيات العربية

#11

ما شاء الله،، جزيتم خيرا...

أخي حسن،، فكرتك وصلت،، لكن ما رأيك لو غيرنا الأسلوب قليلا... يعني مثلا:

اقتباس
انطلق_نحو_الفضاء يا محرك

انطلق_نحو_الفضاء يا صاروخ ( سرعة)

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

كل ما في الأمر، ألا نربط أنفسنا بأسلوب الجافا الذي اتبعته يا حسن.

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

===========

أخي Programmer4Fun

عندما تقول الاختصار في الكلمات المحجوزة ،، هلا وضحت؟

بمناسبة المذكر والمؤنث،، في اللغة الهيكلية السابقة وضعت الكلمات هذه مثلا:

اقتباس
مادام (ص > س، س=س+1)،

مادامت (س < ص، ص=ص*س)،

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

بالمناسبة،، اللغة الهيكلية التي صنعتها مفتوحة المصدر،، راجع الروابط بالأعلى..

=====

reash عزيزي

آسف لكني لا أضيف أحدا لا أعرفه

=======

أخي محمد حسام

نصيحتك رائعة،، لكن ألا ترى أني لو استخدمت صيغة الأمر لزاد في المقروئية؟

أتطلع إلى برنامج تكتبه لنا باللغة العربية

=================

Romanof عادل

التسلسل واضح عندك، لكن هلا وضعت برنامجا صغيرا يعالج قضية الفئات والأشياء وكيفية إصدار الأوامر لهم؟

====

شكرا على الرابط يا أسامة..

يعطيكم العافية..

تم تعديل هذه المشاركة بواسطة حسام الملحم أبومازن في 8 أكتوبر 2006 في 09:30

#12

ربما أحتاج إلى توضيح أمور:

1- هدف اللغة أن تكون قريبة من العربية قدر الإمكان.

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

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

2- البحث في مجموعة تراكيب عربية ممتازة لصياغة أوامر اللغة.

في اللغات الشيئية، نرى أن الشيء يسبق الفعل،

myMobile.call(123123123);

بالعربي، لدينا عدة خيارات:

اقتباس
جوالي.اضرب _على _الرقم(12345678).

اضرب_يا جوالي على الرقم(123451512345).

اضرب_على_الرقم(123123123) يا جوالي.

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

هذه شيء أريد المساعدة فيه.

#13
 

برنامج ويندوز:اول برنامج لي * شكل البدايه

قسم(الرئسي):- *شكل الاجراءت

ادخال_اخراج.رساله("مرحباً"،موافق_خروج)*شكل الامر

اذا(5>4) حسنا افعل(..........) * شكل الاده الشرطيه 

قم بتكرار ه(10 مرات)......انهي التكرار *كل اداه التكرار

إن شاء الله هفكر في شكل افضل من ده شويه واسهل واعرضه ;)

my new site click here

#14

اظن بانه من الافضل اعتماد تركيب واحد ما عدا طبعا الاشياء البسيطة مثل حلقات for و هذه الاشياء

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

افضل التعبير التالي

جوالي.اضرب _على _الرقم(12345678).

هو مفهوم ولا يعاني من اي مشكلة نحن هيك و رضيانين معليش :)

و السبب الثاني اننا تعودنا للاسف على هذه الطريقة لذا اجعل اللغة سهلة التعامل افضل لنا من التلخبط مرة اخرى

و كما قلت هي لا تعاني من اي مشكلة

Theory is when you know something, but it doesn't work. Practice is when something works, but you don't know why. Programmers combine theory and practice: Nothing works and they don't know why

#15
اقتباس
ليكن

ابجد : محرف ;

ر، س , ص : صحيح ;

مح : آلة_محارف ;

/* --المفردة التي تحدد بداية التعليمات--*/

بداية

ملء_آلة_محارف ( مح , [ "ابجدهوزحطيكلمنسعفصقرشتثخذضظغ" ] ) ;

ص := 1 ;

س := 1 ;

لكل ر:=1 ،حجم_آلة_محارف ( مح):

اقرأ_محرف ( مح , ابجد ) ;

اكتب ( ابجد , "في حساب الجمل يساوي " , ص ) ;

إذا ( ص / س ) = 10

س := س * 10

نهإذا ;

ص := ص + س ;

نهلكل

نهاية

/* المفردة " نهاية" تحدد نهاية التعليمات */

http://membres.lycos.fr/zegour/Developpeme...xampleszei1.htm

http://membres.lycos.fr/zegour/Developpeme..._abstraite1.htm

d4baa0.gif
#16

اخى اقدر اساعدك فى الكتاب التالى

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

سوف اضعه لك

ان شاء الله بفيدك خصوصا بلغة الجافا وانت ما شاء الله بلغة الجافا قد حالك

اسم الكتاب : Programming Language Processors in Java: Compilers and Interpreters

Summary:

Book Info

Aims to exemplify good software engineering principles at the same time as explaining the specific techniques needed to build compilers and interpreters. Examples included. DLC: Java (Computer program language)

0130257869.01._SCLZZZZZZZ_.jpg

Features

* The book shows clearly how a simple compiler can be decomposed into a syntactic analyzer, a contextual analyzer, and a code generator, communicating via an abstract syntax tree.

* The book is accompanied by a complete working compiler and interpreter, provided via the Internet, and free of charge for educational use.

* The book contains numerous exercises, together with sample answers to selected exercises. It also contains a number of suggested projects, involving extensions to the accompanying compiler.

* All examples in the book are expressed in Java, and the compiler and interpreter are structured using object-oriented design patterns.

David Watt teaches algorithms and data structures, programming languages, and software design. Deryck Brown teaches compilers, object-oriented programming, operating systems, and software engineering

Download

http://rapidshare.de/files/22075706/Prenti..._2000_.rar.html

لو الرابط محجوب عندك انا بحملو على موقع تانى لك

ان شاء الله بالتوفيق

#17

انا من رأيي لازم نعمل حاجة الاول

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

و بعدين نعيد صياغة لغتنا كما نريد تحت قواعد معروفة

و الافضل تكون اللغة أكنك مثلا بتكتب موضوع

يعني عدم التركيز على نوع الكلمة و هكذا

مفيش توقيع

#18

أرى أن لا تفرط في دعم مقرو ؤية اللغة و أن تجعلها قريبة من لغات البرمجة الأخرى حتى يسهل الإنتقال إليها

أما عن تقليل حجم الكلمات المحجوزة فأنا أقصد به أن نكتب مثلا عوض

إجراء

يمكننا أن نكتب

اج

وهذا يضمن لنا سرعة التكويد

#19

شكرا لكم إخواني على هذه اللفتات.

halwa ننتظر تصميما أوضح..

رامي،،، ربما معك حق،،، حاليا،، أنا في تصميم المعالج نفسه.. ولدينا وقت لنقاش اللغة هنا.. وربما نصدر الإصدار الأول مشابه لتصميم اللغات الشيئية التوجه الحالية.

وبعدها قد نتفنن!!

محمد عبدالعزيز،، المثال رائع،، ينقصه إدخال التراكيب الشيئية التوجه.. كيف ترى أن نكتب تعريفا لفئة جديدة؟؟

شكرا على الكتاب الذي طرحته،، حاولت تحميله لكن بصراحة لا أحب هذا الموقع ولم أعرف التحميل مثل العادة..

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

MAE هذا نفس تصوري،، وتحتاج حهدا كبيرا،، لكن حاليا سأقبل بأي اتفاق بسيط،، وإذا استطعت سأحاول التطوير!

أنتظر مشاركتك..

Programmer4Fun

سأحاول النظر في هذا،، ولو أني لا أحب التشفير وخاصة أن الهدف أن تكون اللغة مقروءة!

أشكركم على هذه اللفتات،، والتي جعلتني أفكر أكثر في الموضوع،،

كما أحب أن تكون تركيب اللغة من أحدكم على أن يكتب لنا تصميما دقيقا لهذه اللغة.. يحكي فيه تركيب الفئة والطريقة وجمل إذا ومادام و(على حسب) == Switch Case

وغيرها وغيرها!!

#20

السلام عليكم و رحمة الله و بركاته

مع أحترامي يا حسام جدا للجافا و لكن أليس هناك لغات أقوي لذلك ؟

عمرو عيسي

#21
اقتباس
استورد حسام_الملحم.فئه_معينة

فئه اختبار_اللغه_الجديده

///if statment

عرف س ك_نص

اذا س.نص = ("كلمة المرور")

اطبع ("كلمة المرور صحيحه")

فورم2.اظهر

اذا_لم

اطبع ("كلمة المرور غير صحيحه")

انهاء

انهاء اذا

///select case statment

اختر حالة فورم.نص

حالة ("فورم1")

فورم1.اظهر

حالة ("فورم2")

فورم2.اظهر

انهاء اختر

///for each ststment

لكل س ك_عدد_صحيح=0 الي 10

اطبع س.قيمه

التالي

انهاء فئة اختبار_اللغه_الجديده

تم تعديل هذه المشاركة بواسطة hazzoom في 15 أكتوبر 2006 في 23:54

#22

أخوي حسام ماشاء الله تبارك الله

الله يوفقك هذا الشغل ولا بلاش ولي عودة إن شاء الله

لأنه حصل ظرف طارئ وأنا طالع الآن

#23

كتبت بعض الأشياء يمكن أن تستفيد منها. وأخذت في عين الاعتبار موضوع "المقروئيه". وبنيت ما كتبته على بعض مما اقترحه الأخوه.

الاعلان عن الفئات :

تستخدم كلمة "فئة" ( بالتاء المربوطه ) للاعلان عن فئة جديده ويلحقها مباشرة اسم الفئة. ويتم وضع الكود بداخلها ما بين اسمها وبين النقطه. فالنقطه في النهايه هي التي تحدد نهاية كود الفئه كالقوس ( } ) أو "End Class"

أيضا استخدمت علامة الـ ( - ) في الـ Comments بحيث يكتب التعليق بين علامتين -.

مثلا :

------------------------------------------------------------------

فئة انسان

-هنا الكود-

. -تعبر هذه النقطه عن نهاية السكوب-

------------------------------------------------------------------

بدأت الاعلان عن هذه الفئه باستخدام الكلمه المحجوزه "فئة" وبعدها ألحقت اسم الفئه مباشرة. وعند الانتهاء من كتابة الكود الخاص بها كتبت نقطه ( . ).

وان كانت ترث من فئه أخرى يمكن استخدام كلمة ترث وهي بتاء التأنيث لأن فئه مؤنث :

------------------------------------------------------------------

فئة انسان ترث كائن_حي

-هنا الكود-

. -تعبر النقطه عن نهاية السكوب-

------------------------------------------------------------------

وعند الاعلان عن متغير يتم كتابة اسم المتغير ثم الحرف أو الكلمه المحجوزه "كـ" وبعدها نوعه. مثلا يمكننا أن نعلن عن Object من انسان هكذا :

------------------------------------------------------------------

شخص_ما كـانسان

ب كـعددصحيح

------------------------------------------------------------------

وبهذا يمكن أن يكون "انسان" كهذا :

------------------------------------------------------------------

فئة انسان

عمره كـعددصحيح

اسمه كـنص.

------------------------------------------------------------------

ولاحظ أنني وضعت النقطه التي تنهي الفئه بعد الاعلان عن "اسمه" وهذا أفضل للقراءه.

ولا يوجد شئ مثل الـ SemiColon فتفصل الأوامر عن بعضها بـ "سطر جديد" كما في الفيجوال بيسيك. ولو كنا نريد أن نكتب أكثر من أمر في نفس السطر نفصلهم بـ SemiColon. مثلا :

------------------------------------------------------------------

فئة انسان

عمره كـعددصحيح; اسمه كـنص.

------------------------------------------------------------------

والـ Access Modifiers يمكن أن تجعلها الآن"عام" و "خاص" و "عامه" وخاصه". و"عام\ه" أقصد به public و "خاص\ه" أقصد به private ويتم كتابته في النهايه, مثلا :

------------------------------------------------------------------

فئة انسان عامه

عمره كـعددصحيح خاص

اسمه كـنص خاص

شئ_ما كـنص عام.

------------------------------------------------------------------

ويتم استدعاء الـ Members منه ليس بالنقطه. وانما بالفاصله.وهذا القانون ساري على استدعاء الوظائف التي ترجع بيانات فقط. والوظائف التي لا ترجع بيانات يتم استخدام "يا".

انظر مثال آخر :

------------------------------------------------------------------

فئة انسان

عمره كـعددصحيح عام

اسمه كـنص عام.

------------------------------------------------------------------

ولاستخدامه :

------------------------------------------------------------------

الرجل كـانسان

الرجل, اسمه = "معتز"

الرجل, عمره = 984

اطبع (الرجل, اسمه); اطبع (الرجل, عمره)

-أو مثلا- اطبع ("الاسم : " + الرجل, اسمه + " العمر: " + الرجل, عمره)

------------------------------------------------------------------

والمسافه بين الفاصله واسم الـ Member اختياريه.

وبالنسبه للدوال أو الوظائف أو الطرق .. الخ يمكن أن تكون كذلك :

------------------------------------------------------------------

وظيفة يشرب

-هنا الكود-

. -تعبر النقطه عن نهاية السكوب-

------------------------------------------------------------------

أيضا مثلها مثل الفئاء تنتهي بنقطه تمثل نهاية الـ Scope. ولكنها تبدأ بالكلمه المحجوزه "وظيفة" ( بالتاء المربوطه ) يليها مباشرة اسم الوظيفه, ويكتب الكود بين اسمها وبين النقطه.

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

------------------------------------------------------------------

وظيفة قل_ياذكي تستقبل العمر كـعددصحيح

لو العمر اكبرمن 40

اطبع ("انت انسان عجوز !")

غيرذلك

اطبع("مازلت شابا يا رجل !"). -النقطه تمثل نهاية الوظيفه-

-------------------------------------------------------------------

في الكود استخدمت "لو" و "غيرذلك" ( if and else ) واستخدمت الكلمه المحجوزه "اكبرمن" ( بدون مسافات بين "اكبر" و "من") ويمكن استخدام "اصغرمن" و "يساوي" ( مماثله لـ ( == ) ).

ويمكن استهلاك الوظيفه كالتالي :

------------------------------------------------------------------

قل_ياذكي(190)

------------------------------------------------------------------

وهنا أستدعي الوظيفه بالقوسين وتمرير 150 كعمر.

واذا كانت داخل Object يمكننا أن نستدعيها بـ"يا" والفاصله هكذا :

------------------------------------------------------------------

فلان كـانسان

يا فلان, قل_ياذكي(146)

------------------------------------------------------------------

انظر مثال آخر :

------------------------------------------------------------------

فئة مركبه عامه

وظيفة توقفي عامه

-كود هنا-

..

------------------------------------------------------------------

لاستخدامها

------------------------------------------------------------------

سياره كـمركبه

يا سياره, توقفي

------------------------------------------------------------------

هنا استدعيت "توقفي" بدون أقواس لأنها لا تستقبل بيانات واستخدمت "يا" لأنها لا ترجع شئ ( Returns Void )

واذا كانت الوظيفه ترجع شئ , لا يتم استدعائها بـ"يا" وانما يتم استدعائها بطريقة استعداء عضو عادي :

------------------------------------------------------------------

وظيفة تحركي عامه تستقبل السرعه كـعددصحيح و ترجع الحاله كـعددصحيح

-كود هنا-

ارجع 34.

------------------------------------------------------------------

ولاستخدامها :

------------------------------------------------------------------

سياره كـمركبه

باء كـعددصحيح = سياره, تحركي(55)

------------------------------------------------------------------

أيضا يوجد ملحوظه وهي عند تمرير أكثر من بيان لوظيفة ما نستخدم "و" بدلا من الفاصله مثل :

------------------------------------------------------------------

رصاصه كـأداةقتل

يا رصاصه, انطلقي(51 و 60) -تستقبل الاحداثيات مثلا-

------------------------------------------------------------------

وأرجع مره أخرى للفئات, هنا بكتابة الدوال نستطيع أن نكتب الـ Constructor الخاص بالانسان. وهي وظيفه غيرها كأي وظيفه ولكن لابد أن يكون اسمها اما "تكون" أو "تكوني" بفتح الكاف أي ( Create YourSelf ) ويجب أن تكون "عامه" أو "عام" ولا ترجع شئ أي يتم استدعئها بـ "يا"!

------------------------------------------------------------------

فئة انسان

عمره كـعددصحيح خاص

اسمه كـنص خاص

وظيفة تكون عامه تستقبل العمر كـعدد صحيح و تستقبل الاسم كـنص

هذا, عمره = العمر; هذا, اسمه = الاسم. -النقطه تمثل نهاية الوظيفه-

وظيفة عرف_نفسك عامه ترجع نص

ص كـنص = "الاسم : " + هذا, اسمه + " والعمر: " + هذا, عمره

ارجع هـ..

------------------------------------------------------------------

لاحظ آخر نقطتين, واحده تمثل نهاية الوظيفه والأخرى نهاية الفئه ! ولاحظ استخدام كلمة "هذا" وهي مثل كلمة "this" وتعني الـ Object الحالي من هذه الفئه. وكان استخدامها في المثال السابق غير ضروري ولكن تصبح ضروريه في بعض الحالات. فيمكن استبدال "هذا, اسمه" بـ "اسمه" فقط.

وبهذا يمكننا استهلاك هذه الفئه كالتالي :

------------------------------------------------------------------

فلان كـانسان = يا انسان, تكون ( 290 و "معتز" )

باء كـنص = يا فلان, عرف_نفسك

اطبع (باء)

------------------------------------------------------------------

وهذا مثال بسيط لعمل برنامج يوضح هذه الأشياء ماعلينا من تصميمه أو منطقيته :

------------------------------------------------------------------

فئة عامل عامه

اسمه كـنص عام راتبه_اليومي كـعددعشري خاص

أيام_حضوره كـعددصحيح خاص

وظيفة تكون عامه تستقبل الاسم كـنص و تستقبل الراتب كـعددعشري و تستقبل أيام_الحضور كـعددصحيح

اسمه = الاسم; راتبه_اليومي = الراتب

أيام_حضوره = أيام_الحضور.

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

صافي_عدد_الأيام كـعددصحيح = أيام_حضوره - أيام_الخصم

اجمالي_المستحق كـعددعشري = صافي_عدد_الأيام * راتبه_اليومي

ارجع اجمالي_المستحق.

وظيفة عرف_نفسك عامه ترجع نص

ص كـنص = "أنا اسمي ياباشا " + اسمه

ارجع ص.

وظيفة زود_أيام_حضورك تستقبل ص كـعددصحيح

هذا, أيام_حضوره = أيام_حضوره + ص.

------------------------------------------------------------------

مثال للاستخدام :

------------------------------------------------------------------

فلان كـعامل = يا عامل, تكون ("معتز" و 150 و 8965 و 27 )

لو فلان, اسمه, يبدأبـ('م')

فلان, زود_أيام_حضورك(34)

اطبع (فلان, اسمه + " له " + فلان, اخبرني_بال_المستحق_لك(0) ).

غيرذلك

اطبع("لماذا لا يبدأ اسمك بحرف الميم ؟!.. رووح مخصوم منك 15 يوووم")

اطبع (فلان, اسمه + " له " + فلان, اخبرني_بال_المستحق_لك(15) ).

------------------------------------------------------------------

تم تعديل هذه المشاركة بواسطة معتز شمس في 17 أكتوبر 2006 في 07:07

#Read

http://MoutazShams.blogspot.com

projects003.gif

أعتذر عن التغيب هذه الأيام نظرا للانشغال المريب

#24

Root

أهلا بك وحياك الله،، إذا كان عندك ملاحظات على (شكل) اللغة فاطرحها في هذا الموضوع...

وإذا كان لديك ملاحظات على ((اللغة)) المستخدمة لتطوير هذا المشروع أو ملاحظات على الشفرة فضعه هنا:

راقب واقرأ قصة تطوير شفرات تصميم لغة برمجة عربية شيئية التوجه OOAPL.

جزاك الله خيرا

----

Hazoom

ممتاز جزاك الله خيرا،، طريقتك في توضيح Switch ممتازة. سأضعها في عين الاعتبار!

وينقص شرحك لموضوع ال(ك) في ك_نص.

-----

Bms,, أشكرك على هذه المجاملة،، وعلى هذا التشجيع،،

لكن أرجو أن نجعل المشاركات أكثر فائدة،، نريد كل مشاركة أن تكون مفيدة وفي صلب الموضوع.

أشكر مرورك.

-----

أما أنت يا معتز يا شمس الدنيا!!

كيف حالك؟؟ أرجو أن تكون بخير،،

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

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

كما أرجو من الأعضاء إبداء ملاحظاتهم وانتقاد تصميم معتز شمس. لأني على وشك اعتماده!

بالرغم من أن تصميمك يا معتز شمس ينقصه أمور، إلا أنه أكمل تصميما في هذا الموضوع.

لذا نرجو أن تكمل هذا التصميم،، مثلا،، جمل التكرار بأنواعها والتراكيب الأخرى. الأخطاء،، الحزم،، الخ!

---

في السابق، العضو مطالب أن يضع برنامجا، لكن الآن مطالب بوضع برنامج وشرح للبرنامج،، أتعبت من بعدك يا شمس!!

إن كان لديك أيها القارئ تصميما ينافس تصميم معتز شمس،، فأرجو أن تضعه هنا..

لاحظ أنك مطالب بوضع برنامج على الأقل واضح يصف الشفرة،، وبالمقابل تضع لنا شرحا وافيا كما فعل معتز شمس.

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

أشكركم جميعا على هذا التكاتف..

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

هذا الموضوع مغلق.

مواضيع مشابهة