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

لغة سكريبتينغ

بدأه security professional في 6 نوفمبر 2011 · 10 رد · 771 مشاهدة · في الأخبار والنقاشات التقنية
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

اولا احب ان اقول كل عام وانتم بخير بمناسبة عيد الاضحى المبارك ينعاد علينا وعلى جميع المسلمين بخير ان شاء الله

اما بعد :

عندي استفسار كيف يمكن عمل لغة سكريبتينغ مثل لغة :

Autoit Scripting

#2
اقتباس

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

اولا احب ان اقول كل عام وانتم بخير بمناسبة عيد الاضحى المبارك ينعاد علينا وعلى جميع المسلمين بخير ان شاء الله

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

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

اقتباس

عندي استفسار كيف يمكن عمل لغة سكريبتينغ مثل لغة :

Autoit Scripting

يمكن ان تشاهد الموضوع التالى

/index.php?showtopic=216924

هو يعرض لغة البرمجة سوبرنوفا

وفى النقاش ستحد معلومات مفيدة على طريقة بناء اللغة

فهى مفتوحة المصدر وتم تطويرها باستخدام تقنية البرمجة بدون كود PWCT

وبالبحث فى الانترنت

ستجد العديد من المصادر لتطوير لغات البرمجة

المهم ان تعلم ان المسالة ليست ان تقوم بعمل اللغة

اى ليست المشكلة فى التطبيق

المهم ان تقدم على عمل لغة ذات فكر مختلف تضيف شيئا الى هذا المجال

وهذا يتطلب دراسة العديد من اللغات الموجودة

بجانب قراءة كتب فى مجال تصميم لغات البرمجة

والله الموفق

تم تعديل هذه المشاركة بواسطة PWCT Maker في 6 نوفمبر 2011 في 20:02

#3

اخي انا لا اريد هذا انا اريد ان اعرف كيف تعمل لغة مثل هذه :

* : كم من الوقت احتاج

* : ماذا احتاج للتعلم لعمل لغة سكريبتينغ

* : ما الادواتن اللازمه لعملها

#4

السلام عليكم.

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

لغة Scripting ما هي إلا لغة برمجة لها بعض الخصائص المتفق عليها و بعض الخصائص المختلف عليها، أهم ما يكون فيها عادةً هو سهولة و سرعة التعلم و الاستعمال، و قصر الكود، عادةً تكون Dynamic بمعنى لا تحتاج لأن تصرح بالمتغير و تحدد نوعه قبل استخدامه، و إنما يتم إضافته و تحديد نوعه آليًا، و عادةً تكون اللغة مفسرة عبر مفسر (Interpreter).

بالنسبة للأدوات لا أستطيع تحديدها لعدم علمي بشكل جيد بـAutoit. كنصيحة مني، إذا أردت لغة Scripting و كنت تهتم بسرعة و سهولة التطوير، استخدم لغة Scripting أخرى في إنتاجها، أنصحك هنا بـPython خصوصًا، و هناك كذلك تجارب لتصميم لغات بـRuby، و كونك تريد لغة مثل Autoit يمكنك استخدامها هي! عمومًا الوسيلة تختلف من لغة لأخرى، أبسط طريقة عادةً هي مجرد ترجمة للكود من لغة إلى أخرى، ثم تنفيذ الكود الجديد، لكن لا يمكنك بهذه الطريقة تصميم لغتك عبر لغة Compiled إلا إذا كانت لغتك أن أيضًا هي Compiled. و ربما تفضل وسيلة أخرى و هي إما التنفيذ المباشر، أو التحويل إلى Byte-Code يتم تنفيذه مرحلة بمرحلة. لذلك نصحتك باستخدام أي لغة مفسرة تحتوي على دالة مثل eval مثلًا و فقط تحويل الكود و ترجمته من و إلى!

طبعًا كما قال أستاذي PWCT Maker أهم شيء في اللغة هو أنت تقدم الجديد، لغة مفيدة على ورق (بمعنى "قياسات" للغة فقط)، خير من تنفيذ لشيء لا يفيد.

شكرًا..

#5

شكرا اخي

انا فهمت عليك

لكن اذا انا مثلا بدي اعمل لغة مثلا بتعتمد على الruby

يعني مراحل لترجمه راح تكون كلتالي

5 4 3 2 1

ملف exe - لغة الاله - كود اسمبلي - كود ruby - اللغه المراد صنعها

اعذروني اذا كان الترتيب خطأ المهم :

مثل هذه المراحل الان اتي الى سؤالي

كيف يتم عم كومبايلر لهذه المراحل

وكيف يتم تحديد ما هي الاوامر البرمجية الموجوده بهذه الله ووضعها ......

سلاااام

#6

السلام عليكم..

إذا كنت تريد أن توفر اللغة ملف تنفيذي (exe كما ذكرت) إذن فاللغة ستكون Compiled و ليست Interpreted. و في هذه الحالة الأمر أصعب قليلًا و إذا كانت هذه هي الطريقة الأساسية في اللغة فقد تبتعد قليلًا عن كونها Scripting. رأيي أن تجعلها مفسرة (Interpreted).

طبعًا ليس هناك طريقة معينة في البرمجة، لكن حسب ما طبقتُها أنا من قبل، بأبسط و أسهل طريقة وجدتها يكون الأمر كالتالي:

  1. يتم قراءة الكود و تحويله إلى مجموعة من "المأخوذات" (tokens)، و يتم التأكد من صحة ترتيب هذه المأخوذات بمعنى ليس هناك رقم بعده نص، و لكن ربما رقم بعده علامة الجمع.
  2. يتم توليد الكود المطابق في المعنى في لغة أخرى مفسرة، فلنقل مثلًا Ruby، على أن تكون مكتبات اللغة الجديدة مكتوبة بـRuby أيضًا، فيكون هناك دالة تسمى xyz_length، و عند كتابة length() في كود لغتك الجديدة يتم تحويلها إلى xyz_length() على أن xyz هو اسم اللغة.
  3. يتم تنفيذ الكود المولد عبر أي طريقة، ربما eval أو ما يقابلها مثلًا.

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

بالنسبة لأول مرحلتين أعلاه، فقد يحتاجان منك بعض القراءة و البحث. الحصول على المأخوذات كما طبقته كان بسيطًا بحيث يتم قراءة حرف ثم حرف آخر من الكود، و تحديد أنواعها، مثلًا إذا وجدت الحرف الأول هو 2 ثم بعده 3 ثم وجدت ما بعده ليس من نفس النوع، يصبح لدي مأخوذ نوعه "رقم" و قيمته "23".. و إذا وجدت "+" فيصبح لدي مأخوذ نوعه "علامة" و قيمته "+".. و للتأكد من صحة الكود نحويًا يتم المرور عبر جميع المأخوذات و التأكد من أنها بترتيب صحيح فإذا كان المأخوذ الحالي هو مثلًا قوس مفتوح "(" فيتوقع أن يكون بعده رقم أو نص أو متغير أو نداء دالة مثلًا، و لكن لا يتوقع أن يكون بعده علامة "="! ثم بعد ذلك نأتي لمرحلة كتابة الكود الجديد، بحيث نمر مرة أخرى على جميع المأخوذات، فعندما نجد نصًا نكتبه بالطريقة كذا، و الرقم بالطريقة كذا، و نضيف إلى أسماء الدوال كذا، هذا لو كانت لغتك شبيهة بشكل كبير باللغة المبنية عليها. أما في مراحل متقدمة فستجد أنك تقدم أشياء مختلفة بشكل كبير تحتاج لتفكير أكثر و لربط النقاط ببعضها، مثل تطبيق لـfor في لغة ليس فيها for، أو لا تقدمها بالطريقة المطلوبة. أو إضافة دوال بطريقة lambda في لغة لا تدعمها...

وفقك الله.

و شكرًا.

#7

شكرا س ممكن تعطيني سورس كو االكومبايلر اللي عملته

#8

السلام عليكم..

اللغة التي صممتها و مفسرها مختلفان قليلًا عما تطلب فهما متعلقان أكثر بالويب، و مكتوبان بـPHP. عمومًا أترى الرابط في توقيعي؟ بسيطة، افتح الموقع، اضغط "التحميل"، و ها هي اللغة تحت يدك مفتوحة المصدر.. و في حال وجدت شيئًا ما غير واضح في اللغة من الداخل سأسعد بأن أحاول توضيحها.

وفقك الله.

و شكرًا..

#9

توضيح بسيط يا عمر الملفات التنفيذية (‏exe ‎‏ ..الخ) يمكن تقديمها عبر اللغات المفسرة وهذا امر يطول شرحه حاليا

GoodBye

#10
MohamedIBrahim كتب:

توضيح بسيط يا عمر الملفات التنفيذية (‏exe ‎‏ ..الخ) يمكن تقديمها عبر اللغات المفسرة وهذا امر يطول شرحه حاليا

السلام عليكم..

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

بارك الله فيك..

شكرًا.

#11

يمكن مثلا تحويل كود ‏PHP ‎‏ الي ملفات تنفيذية مثلما يتم ذلك في تطبيقات الفيس بوك وغيرها

GoodBye

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