بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
رغم ان السوبرنوفا صممت لتكون لغة سهلة القراءة وشفيرتها المصدرية قريبة الى لغة الانسان الا ان تجربتى العملية حتى الان تشير الى ان ذلك ينجح فى نطاق محدد
واللغة تظل لغة برمجة بمعنى انها تحمل صفات اساسية ضرورية لكى تكون اللغة قابلة للاستخدام فى تطبيق الخوارزميات المختلفة
وهذه الصفات الاساسية مثل امكانية تمثيل هياكل البيانات Data Structure واستخدام جمل التحكم Control Structure ونمط البرمجة Programming Paradigm
فى الواقع وبشكل محايد ان من عيوب السوبرنوفا ضرورة وضع المتغيرات بين اقواس مربعة [variable name]
وضرورة وضع القيم بين اقواس ( value ) عند كتابة التعبيرات Expressions
ولكن لذلك فؤائد ايضا حيث يمكن ان يكون المتغير باى اسم نريده و يمكن وضع مسافات واستخدام ارقام إلخ
فى الحقيقة مااود التحدث عنه الان يمتد الى مابعد المتغيرات وبالتحديد اود التحدث عن امر يتعلق بالمصفوفات Arrays
حيث تشتمل المصفوفة على عدد من العناصر التى يتم الوصول اليها من خلال رقم Index يميز كل عنصر عن الاخر كما هو متعارف عليه
مااود الاشارة اليه هنا الى ان السوبرنوفا تتيح ان يتم تمييز العنصر عن الاخر داخل المصفوفة من خلال عبارة حرفية
بمعنى انه ممكن ان يكون الـ index ليس رقما وانما سلسلة حرفية
لم اشاهد حتى الان هذه الامكانية فى اى لغة برمجة اخرى ولكن ذلك لاينفى وجودها ولهذا ارجو من الاشخاص الذين لديهم اطلاع اكبر ومعلومات اكثر فى هذه النقطة ان يشارك بالمزيد من المعلومات.
والسؤال الان ؟ هل هذه الامكانية ضرورية
الاجابة !! بالتاكيد فى البرمجة يمكن ان تنفى الضرورة لاى مفهوم وتقول ان تعليمات لغة الالة الاساسية هى فقط التى لايمكن الاستغناء عنها
ولكن الحياة فى تطور مستمر ومايتم من اضافات وتسهيلات فى لغات البرمجة هى مرونة بغرض تسهيل حياة المبرمجين وزيادة افق التعبير عن الافكار
ولهذا يمكن ان يكون السؤال بصورة اخرى - هل لهذه الامكانيات استخدامات عملية ؟
فى رايى المتواضع نعم ويمكن وضعها فى الحسبان اثناء تصور الخوارزميات التى نحل بها مشاكلنا البرمجية فهذه الامكانية تضاف الى كم الحيل tricks التى يمكن ان تستخدم لوضع الحلول.
وهذا مثال عملى عبارة عن شفيرة مصدرية تم كتابتها بالسوبرنوفا باستخدام الـ Supernova Multi-platform edition 1.0.0-7 الذى يعمل على كل من MS-Window و Linux
فى هذا المثال يتم انشاء نافذة window تشتمل على ازرار تحمل الارقام من 1 الى 10 وعند الضغط على اى زر يظهر رقم الزر كنص
بمعنى اذا تم الضغط على الزر 3 مثلا فانه يظهر النص Three وفى حالة الضغط على الزر مرة اخرى يعود الرقم ليظهر لنا من جديد.
:Note:
"
1 - We are using [myarray] without declaration
2 - In [myarray]\[index] the ***index*** may be number or ****string****
3 - there are 10 buttons carry the same name (mybtn)
The result ??
"
[myarray]\(1). = (one). [myarray]\(one). = (1).
[myarray]\(2). = (two). [myarray]\(two). = (2).
[myarray]\(3). = (three). [myarray]\(three). = (3).
[myarray]\(4). = (four). [myarray]\(four). = (4).
[myarray]\(5). = (five). [myarray]\(five). = (5).
[myarray]\(6). = (six). [myarray]\(six). = (6).
[myarray]\(7). = (seven). [myarray]\(seven). = (7).
[myarray]\(8). = (eight). [myarray]\(eight). = (8).
[myarray]\(9). = (nine). [myarray]\(nine). = (9).
[myarray]\(10). = (ten). [myarray]\(ten). = (10).
I want window and window title is Test.
[x]. = (1). and do while [x] <= (10).
i want button and button caption from [x].
button name = mybtn. and button top from [x] x (30).
[x]. = [x] + (1).
End while
Procedure mybtn mouse click.
button caption to [btnnum]. and button caption from [myarray]\[btnnum].
End procedure
والتطبيق وقت التشغيل كالتالى
واخيرا لدى بعض الاسئلة وبرجاء عدم التسرع فى الرد واعطاء الامر حقه من التامل حتى تعم الفائدة على الجميع باذن الله رب العالمين
طبعا هذا ليس اختبار وانما وسيلة لتبادل المعرفة والافكار
ويمكن ان تجاوب على كل الاسئلة او بعضها او تطرح رؤيتك بالاسلوب الذى يناسبك المهم هو التواصل المثمر فى اطار منظم
1 - هناك شيئا غريبا فى المثال ولكنى لم اصرح به هل لاحظته ؟ ما هو ؟
2 - هل تعرف لغة برمجة اخرى تدعم هذه الامكانية ؟ ان كانت الاجابة نعم - ما هى ؟
3 - هل تجد لهذه الامكانية فائدة بالنسبة لك ان كانت متاحة فى لغة البرمجة التى تستخدمها ؟
4 - هل ترحب بالافكار الجديدة فى لغات البرمجة - ام ترى ان اللغة يجب ان تكون تقليدية وتركز على التقنية اكثر مثل سرعة الاداء ودعم الانظمة المختلفة ؟
والله الموفق


