لغة ليسپ

عودة للموسوعة

لغة ليسپ

ليسپ
Lisp
Paradigm multi-paradigm: functional, procedural, reflective, meta
Designed by جون مكارثي
Developer ستڤ روسل، Timothy P. Hart, and Mike Levin
First appeared 1958
Typing discipline dynamic, strong
Website [{{#property:P856 {{#property:P856 ]
اللهجات
أرك, AutoLISP, Clojure, Common Lisp, Emacs Lisp, ISLISP, Newlisp, Scheme, SKILL
Influenced by
لغة معالجة معلومات
Influenced
CLU, Dylan, Falcon, Forth, Haskell, Io, Ioke, JavaScript, Logo, Lua, Mathematica, MDL, ML, Nu, OPS5, Perl, Python, Qi, Rebol, Racket, Ruby, Smalltalk

ليسب (Lisp) هي لغة برمجة وظيفية (Functional Programming Language) وهي اختصار لمصطلح معالجة القوائم (LISt Processing) وتقوم على حساب لامبدا (Lambda-Calculus). وهي من أبرز لغات الذكاء الإصطناعي، وتستخدم كذلك في تطبيقات أخرى تتطلب توليد تلقائي للبرامج (Code Generation). وقد اخترعها جون مكارثي عام 1958 أثناء تواجده في معهد ماساتشوستس للتكنولوجيا، وبذلك تعد ثاني أقدم لغة برمجة عالية المستوى (بعد فورتران).

وضعت ليسب كلغة ترميز رياضية عملية وفق تعريف تفاضل لامبدا وتكاملها لألونزوتشرش Alonzo Church's Lambda Calculus، لكنه سرعان ما فضل استخدامها في أبحاث الذكاء الاصطناعي Artificial Intelligence، وبتصدرها كإحدى أقدم اللغات، قدمت ليسب مبادئ عديدة في علوم الحاسب Computer Science كبنى البيانات الشجرية Tree Data Structures والبرمجة كائنية التوجه Object-oriented Programming.

تشير ليسب إلى المصطلح LISt Processing language، القوائم المتصلة بالإنگليزية: Linked Listsإحدى بنى البيانات الأساسية للغة، بل إذا كود المصدر للغة مكون من قوائم، وكنتيجة لذلك، تعامل برامج ليسب كود المصدر كبنية بيانات Data Structure ما يعطي شأنا لنظام الماكروMacro الذي يسمح للمبرمجين بإنشاء صيغ جديدة أولغة مدمجة مختصة المجال في ليسب Domain-specific Programming Language.

التبادل بين الكود والبيانات يعطي للغة ليسب صيغة تعهد فورية Instantly Recognizable Syntax، فبرامج ليسب مكتوبة بشكل التعبير الرمزي S-expression (ترمز S إلى Symbol) أوكقوائم محاطة بأقواس، فعند استنادىء دالة Function "f" لها الوسائط Arguments x وy وz، تخط تلك الدالة كالتالي:

 (f x y z)

التاريخ

آلة ليسپ في متحف معهد مساتشوستس للتكنولجيا.

قام باختراع ليسب الأمريكي جون مكارثي عام 1958 في معهد ماساتشوستس للتقنية Massachusetts Institute of Technology MIT. مككارثي نشر تصميمه على الورق في مجلة Communications of the ACM بعنوان "الدوال المتعددة للتعابير الرمزية وحسابها بالآلة "الجزء الأول" Recursive Functions of Symbolic Expressions and Their Computation by Machine, Part I (فهما أنه لم ينشر الجزء الثاني مطلقا)، أظهر أنه بواسطة بعض المعاملات البسيطة Simple Operators وإجراء ترميز للدوال Notation for Functions، يمكن بناء لغة تطابق فكرة الشمولية لتورنغ Turing-complete لكن من أجل الخوارزميات.

أول من قام بتطبيق هذا التصميم كان ستيف رسل Steve Russell على جهاز IBM 704، بينما ظهر أول مترجم Compiler ليسب تام كان على يدي تيم هارت Tim Hart ومايك ليفن Mike Levin في معهد MIT عام 1962، اللغة التي قاما ببنائها أقرب للغة المنتشرة حاليا من التي صممها مكارثي.


الأصول والمتغيرات

لهجات ليسپ

  • ليسپ 1 – First implementation.
  • ليسپ 1.5 – First widely distributed version, developed by McCarthy and others at MIT. So named because it contained several improvements on the original "LISP 1" interpreter, but was not a major restructuring as the planned LISP 2 would be.
  • ستانفورد ليسپ 1.6 – This was a successor to LISP 1.5 developed at the Stanford AI Lab, and widely distributed to PDP-10 systems running the TOPS-10 operating system. It was rendered obsolete by Maclisp and InterLisp.
  • ماك‌ليسپ – developed for MIT's Project MAC (no relation to Apple's Macintosh, nor to McCarthy), direct descendant of LISP 1.5. It ran on the PDP-10 and Multics systems. (MACLISP would later come to be called Maclisp, and is often referred to as MacLisp.)
  • أنتر‌ليسپ – developed at BBN Technologies for PDP-10 systems running the Tenex operating system, later adopted as a "West coast" Lisp for the Xerox Lisp machines as InterLisp-D. A small version called "InterLISP 65" was published for Atari's 6502-based computer line. For quite some time Maclisp and InterLisp were strong competitors.
  • فرانز ليسپ
  • إكس‌ليسپ.
  • ستانفورد ليسپ وپورتابل ستنافورد ليسپ
  • زيتا‌ليسپ.
  • كومون ليسپ
  • دايلان
  • ايو‌ليسپ
  • أي‌إي‌إي‌إي Scheme – أي‌إي‌إي‌إي القياسي 1178–1990 (أر1995)
  • إيه‌إن‌إس‌أي كومون ليس
  • إي‌سي‌إل2


منذ 2000

اللهجات الرئيسية

ابتكارات اللغة

الهجريب والدلالة

الصيغ والمفردات

تعد لغة ليسب لغة تعبيرية التوجه Expression-oriented Language. وبخلاف أغلب اللغات، لا فارق بين التعبيرات Expressions والجمل Statements، فالكود يخط جميعه كتعبيرات.

لعل ما يميز صيغة كود ليسب الأقواس المستخدمة في الإحاطة بين التعبيرات، وقد تجاوز ذكر المصطلح S-expression الذي يعطي لصيغة ليسب استخدام الرموز.

قائمة ليسب LISP List تخط بين قوسين بداخلهما تسرد العناصر مفصولة بمسافة بيضاء، مثلا:

 (1 2 foo)

هذه قائمة بها عناصر تسمى ذرات Atoms، وهي العددين 1 و2 وfoo، العنصر foo نوع من البيانات في ليسب يدعى "رمز Symbol"، يتم التعهد على نوع العنصر دون الحاجة للإعلان عنه. القائمة الخالية () تعتبر ذرة خاصة nil حيث يمكن اعتبارها ذرة إضافة لكونها قائمة.

قد تدخل القوائم كعناصر داخل قائمة ما، مثلا:

 ((1 2 (3 4)))

القائمة السابقة مكونة من عددين وقائمة بها عددين.

التعبيرات في ليسب تخط كقوائم باستخدام صيغة الرموز أولا Prefix Notation، العنصر الأول هواسم النموذج Form (مثلا: دالة Function، معامل حسابي Operator، ماكروMacro، أومعامل خاص Special Operator وسيأتي شرحه)، بينما بقية العناصر تعد وسائط Arguments. على سبيل المثال، الدالة list تعيد وسائطها كقائمة، والتعبير التالي:

 (list '1 '2 'foo)

يمثل هذه القائمة (1 2 foo). علامات التنصيص التي تسبق الوسائط تعد إحدى المعاملات الخاصة Special Operators، تمنع علامات التنصيص الوسائط من إجراء الحساب عليها (ليس ذلك ضروريا مع الأعداد طالما حتى العدد 1 هو1 على سبيل المثال)، بينما الوسائط التي تخلومن تلك المعاملات فيتم تطبيقها بشكل دوري Recursively قبل الانتهاء من التعبير، المثال التالي:

 (list 1 2 (list 3 4))

يمثل هذه القائمة (1 2 (3 4))، لاحظ حتى الوسيط الثالث هوقائمة، فالقوائم يمكن حتى تتداخل كما تجاوز ذكره.

وبالمثل تعامل المعاملات الحسابية، ففي التعبير التالي:

 (+ 1 2 3 4)

سيتم حساب القائمة وإعادة الناتج 10. يمكن توضيح المعادلة نفسها بصيغة "الرموز بالداخل Infix Notation" فتكون "1+2+3+4". المعاملات الحسابية في ليسب من نوع n-ary أي قابلة لاستقبال أي عدد n من الوسائط.

القوائم

المشغلون

تعبيرات لامبدا

الذرات

في تصميم ليسب الأصلي، كان هناك نوعان أساسيان فقط من أنواع البيانات: الذرات Atoms والقوائم Lists. كانت القائمة سلسلة من العناصر، حيث يعتبر جميع عنصر ذرة أوقائمة أخرى متداخلة، والذرة قد تكون عددا Number أورمزا Symbol، أما الرمز فقد كان عنصرا مميزا مكونا من سلسلة من الأحرف والأرقام، وكان يستخدم كاسم متغير أوعنصر بيانات في معالجة الرموز، على سبيل المثال، القائمة (FOO (BAR 1) 2) تحتوي على ثلاث عناصر، الرمز FOO، القائمة (BAR 1) والعدد 2.

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


الخلايا والقوائم

Box-and-pointer diagram for the list (42 69 613)

القائمة في ليسب تكون فردية الارتباط، جميع خلية فيها تدعى كونس أوزوج Pair كما في صيغة سكيم Scheme، وتتكون من مؤشرين، car وcdr ويماثلان حقلي data وnext المعروفان في موضوع القوائم المتصلة Linked List.

من بين البنى المتعددة للبيانات التي يمكن إنشاؤها بواسطة الخلايا هناك القائمة التامة Proper List، هذه القائمة قد تكون قائمة خالية (مجازا، تحتوي الرمز الخاص nil)، أوقد تكون خلية يؤشر الجزء car إلى وحدة بيانات (وقد تكون بنية أخرى كأن تكون قائمة)، أما الجزء cdr يؤشر إلى قائمة تامة أخرى.

فيما لووجدت خلية معطاة بمقدمة قائمة متصلة، فالجزء car بها يحدد العنصر الأول من القائمة، والجزء cdr يؤشر إلى باقي القائمة، لهذا فإن دوال car وcdr تسمى أيضا first وrest عند الحديث عن خلايا في بنية القوائم المتصلة (بدلا من البنى الأخرى كالشجرة tree مثلا). إذا القائمة في ليسب لا تعتبر وحدة أساس، كحال أي نسخة Instance من صنف Class في لغة كجافا أوسي++، المتغير الذي يشير إلى قائمة معطاة هوببساطة مؤشر إلى الخلية الأولى لتلك القائمة.

ولأن استخدام الخلايا والقوائم رائج بكثرة في أنظمة ليسب، فهناك اعتقاد خاطئ رائج بأنها البنية الوحيدة للبيانات في ليسب، لكن بالواقع، هناك بنى أخرى أبسط تكوينا كالمتجهات Vectors (المصفوفات Arrays)، الجداول المتشابكة Hash Tables، البنى Structures إلى غير ذلك.


قوائم تعبيرات إس

خطوات تجهيز القوائم

تمثيل القوائم المتصلة بالتعابير الرمزية

يمكن تمثيل بنية القائمة المتصلة بأقواس التعابير الرمزية بطرق مختلفة، يمكن كتابة الخلية في القائمة المتصلة بكيفية ترميز النقطة-الزوج dotted-pair notation، مثلا: (a. b)، حيث a هوالجزء car وb هوالجزء cdr، يمكن كتابة قائمة تامة طويلة بتلك الطريقة كالتالي:

 (a. (و. (c. (ت. nil))))

ويمكن اختصار كتابة القائمة السابقة بكيفية ترميز القائمة List Notation كالتالي:

 (a b c d)

يتم كتابة قائمة غير تامة Improper List عند الجمع بين اثنين (مثلا c مع d) لقائمة بها ثلاثة خلايا كالتالي: (a b c. d) حيث حتى العنصر d هوآخر جزء cdr. القائمة التالية هي الصورة السليمة:

 (a. (و. (c. d)))

عمليات المعالجة في القوائم

يقدم ليسب إجراءات مبنية داخليا Built-in Procedures للوصول Access والتحكم بالقوائم Controlling List. يمكن إنشاء القوائم مباشرة بالإجراء list، الذي يأخذ أي عدد من الوسائط، ويعيدها كعناصر بالقائمة:

 (list 1 2 'a 3)
;Output: (1 2 a 3)

مثال آخر:

 (list 1 '(2 3) 4)
;Output: (1 (2 3) 4)

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

 (cons 1 '(2 3))
;Output: (1 2 3)

مثال آخر:

 (cons '(1 2) '(3 4))
;Output: ((1 2) ثلاثة 4)

الإجراء append يلحق اثنين أوأكثر من القوائم إلى قائمة معينة:

 (append '(1 2) '(3 4))
;Output: (1 2 ثلاثة 4)

مثال آخر:

 (append '(1 2 3) '() '(a) '(5 6))
;Output: (1 2 ثلاثة aخمسة 6)


البنى المشهجرة

بما حتى القوائم في ليسب قوائم متصلة بسيطة، فهي تستطيع مشاركة بنية ما مع قوائم أخرى، فيمكن لقائمتين حتى تشهجر بذيل Tail واحد، أوبآخر سلسلة من الخلايا. مثلا:

 (setf foo (list 'a 'b 'c)) (setf bar (cons 'x (cdr foo)))

القائمة foo لها العناصر (a b c) والقائمة bar لها (x b c)، الذيل (b c) يدخل في بنية كلا من القائمتين فهوليس نسخة مكررة.

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

 (setf (third foo) 'goose)

عند استبدالنا العنصر c في القائمة foo بالعنصر goose، ستتغير القائمة إلى (a b goose) ولكن القائمة bar ستتغير أيضا إلى (x b goose).


التقييم الذاتي وعلامات التنصيص

يقوم ليسب بتطبيق (أوحساب) القوائم التي يدخلها المستخدم إلى صور أخرى، وعادة ما تكون مبسطة، مثلا، القائمة (+ 2 3) تنفذ ويعاد الناتج 5. النماذج الأخرى عادة ما تنفذ وتعيد نفسها، فالعددخمسة يعيد العدد 5.

هناك عبارات يمكن وضعها بعد علامات تنصيص لمنع إجراء عملبات تطبيق عليها (كما هوضروري للرموز والقوائم كما ظهر ذلك بالأمثلة السابقة)، وهنا يظهر عمل المعامل الخاص quote أواختصاره علامة التنصيص الفردية '. مثلا، عند إدخال الرمز foo، سيتم تطبيقه وإعطاء القيمة التي يحملها، أوتظهر رسالة خطأ لولم يحمل أي قيمة، لكن لوأردت الإشارة إلى الرمز حرفيا، فيجب كتابة (quote foo) أواختصارا by writing 'foo .


النطاق والإغلاق

قائمة هجريب رمز البرنامج

Evaluation and the read–eval–print loop

التحكم في التشكيلات

أمثلة

البرامج المكتوبة أدناه بصيغة كومون ليسب Common LISP:

برنامج طباعة العبارة Hello world! الشهير:

 (print "Hello world")

صيغ ليسب تتجه بشكل طبيعي إلى التدوير Recursion، ولذلك بعض المسائل الرياضية يمكن التعبير عنها ببساطة كما بالمثال التالي الذي يقوم بحساب مضروب عدد n:

 (defun factorial (n)
   (if (<= n 1)
       1
       (* n (factorial (- n 1)))))

المثال السابق يمكن استعمال ماكروالدوار loop بدلا من التدوير

 (defun factorial (n)
   (loop for i from 1 to n
         for fac = 1 then (* fac i)
         finally (return fac)))

أنظمة العنصر

المصادر

  1. ^ McCarthy, J.; Brayton, R.; Edwards, D.; Fox, P.; Hodes, L.; Luckham, D.; Maling, K.; Park, D.; et al. (March 1960). LISP I Programmers Manual. Boston, مساتشوستس: Artificial Intelligence Group, M.I.T. Computation Center and Research Laboratory. Archived from the original. You must specify the date the archive was made using the |archivedate= parameter. http://history.siam.org/sup/Fox_1960_LISP.pdf  Accessed May 11, 2010.
  2. ^ McCarthy, John; Abrahams, Paul W.; Edwards, Daniel J.; Hart, Timothy P.; Levin, Michael I. (1962; 2nd Edition, 15th printing, 1985). (PDF). MIT Press. ISBN . Check date values in: |year= (help)
  3. ^ Quam, Lynn H.; Diffle, Whitfield. (PDF).
  4. ^ "Maclisp Reference Manual". March 3, 1979. Archived from the original on 2007-12-14.
  5. ^ Teitelman, Warren (1974). (PDF).
  6. ^ Steele, Guy L., Jr. "Purpose". Common Lisp the Language (2nd ed.). ISBN .

انظر أيضا

  • فكسپر Fexpr
  • ماكسيم
  • mod lisp
  • P convention
  • Prolog

قراءات إضافية

  • McCarthy, John (1979-02-12). "The implementation of Lisp". History of Lisp. Stanford University. Retrieved 2008-10-17.
  • Steele, Jr., Guy L.; Richard P. Gabriel (1993). "The evolution of Lisp". The second ACM SIGPLAN conference on History of programming languages: 231–270, New York, NY: ACM, ISBN 0-89791-570-4. Retrieved on 2008-10-17. 
  • Veitch, Jim (1998). "A history and description of CLOS". In Salus, Peter H (ed.). Handbook of programming languages. Volume IV, Functional and logic programming languages (first ed.). Indianapolis, IN: Macmillan Technical Publishing. pp. 107–158. ISBN .
  • Abelson, Harold; Sussman, Gerald Jay; Sussman, Julie (1996). Structure and Interpretation of Computer Programs (2nd ed.). MIT Press. ISBN .
  • My Lisp Experiences and the Development of GNU Emacs, transcript of Richard Stallman's speech, 28 October 2002, at the International Lisp Conference
  • Graham, Paul (2004). Hackers & Painters. Big Ideas from the Computer Age. O'Reilly. ISBN .
  • Berkeley, Edmund C.; Bobrow, Daniel G., eds. (March 1964). (PDF). Cambridge, Massachusetts: MIT Press.
  • Weissman, Clark (1967). (PDF). Belmont, California: Dickenson Publishing Company Inc.

وصلات خارجية

اقرأ اقتباسات ذات علاقة بلغة ليسپ، في فهم الاقتباس.
  • History of Lisp – John McCarthy's history of 12 February 1979
  • Lisp History – Herbert Stoyan's history compiled from the documents (acknowledged by McCarthy as more complete than his own, see: McCarthy's history links)
  • Oral history interview with John McCarthy at Charles Babbage Institute, University of Minnesota, Minneapolis. McCarthy discusses his role in the development of time-sharing at the Massachusetts Institute of Technology. He also describes his work in artificial intelligence (AI) funded by the Advanced Research Projects Agency, including logic-based AI (LISP) and robotics.
  • Association of Lisp Users
  • History of LISP at the Computer History Museum
  • On Lisp, a free book by Paul Graham
  • Interview with Richard P. Gabriel (Podcast)
  • Lisp in a Box, a useful package for lisp beginners – for Windows or Unix
  • Lisp Cabinet, like lispbox but to try many lisps (clojure, racket too) - for Windows
  • Casting SPELs in Lisp, a comic-book style introductory tutorial
  • Lisp FAQ
  • comp.lang.lisp – Usenet newsgroup
تاريخ النشر: 2020-06-08 02:59:10
التصنيفات: Articles with broken citations, CS1 errors: dates, CS1: long volume value, Commons category link is locally defined, 1958 في علوم الحاسوب, لغات برمجة أكاديمية, اختراعات أمريكية, مقالات بأكواد ليسپ, Dynamically typed programming languages, لغات برمجة وظيفية, لغة ليسپ, لغات برمجة اخترعت في الخمسينيات, Extensible syntax programming languages, ذكاء اصطناعي, صفحات بها أخطاء في البرنامج النصي

مقالات أخرى من الموسوعة

سحابة الكلمات المفتاحية، مما يبحث عنه الزوار في كشاف:

آخر الأخبار حول العالم

أول جهة تشارك برواق خاص في المعرض الدولي للكتاب

المصدر: تيل كيل عربي - المغرب التصنيف: سياسة
تاريخ الخبر: 2023-06-02 15:20:55
مستوى الصحة: 59% الأهمية: 61%

بدء تطبيق شراء تذاكر الأهرامات وقلعة صلاح الدين بالبطاقات البنكية

المصدر: موقع الدستور - مصر التصنيف: سياسة
تاريخ الخبر: 2023-06-02 15:21:09
مستوى الصحة: 47% الأهمية: 62%

الجيزة تسحب عمال النظافة من الشوارع بسبب موجة الحر

المصدر: موقع الدستور - مصر التصنيف: سياسة
تاريخ الخبر: 2023-06-02 15:21:09
مستوى الصحة: 60% الأهمية: 61%

السيدة انتصار السيسي تستقبل جيل بايدن

المصدر: موقع الدستور - مصر التصنيف: سياسة
تاريخ الخبر: 2023-06-02 15:21:07
مستوى الصحة: 49% الأهمية: 58%

طلب من جماهير الوداد للإدارة قبل إياب نهائي دوري أبطال إفريقيا

المصدر: تيل كيل عربي - المغرب التصنيف: سياسة
تاريخ الخبر: 2023-06-02 15:21:00
مستوى الصحة: 54% الأهمية: 64%

أمن خريبكة يجهض عملية تهريب 830 كيلوغرام من مخدر الشيرا

المصدر: تيل كيل عربي - المغرب التصنيف: سياسة
تاريخ الخبر: 2023-06-02 15:20:59
مستوى الصحة: 47% الأهمية: 69%

حار نهارًا معتدل ليلًا.. حالة الطقس ودرجات الحرارة المتوقعة غدًا

المصدر: موقع الدستور - مصر التصنيف: سياسة
تاريخ الخبر: 2023-06-02 15:21:11
مستوى الصحة: 56% الأهمية: 68%

تفاصيل القانون الجديد للغرف السياحية والاتحاد المصرى للغرف

المصدر: موقع الدستور - مصر التصنيف: سياسة
تاريخ الخبر: 2023-06-02 15:21:12
مستوى الصحة: 47% الأهمية: 56%

المحكمة التجارية تنصف "لاماب" ضد مزوري علامتها التجارية

المصدر: تيل كيل عربي - المغرب التصنيف: سياسة
تاريخ الخبر: 2023-06-02 15:20:58
مستوى الصحة: 50% الأهمية: 50%

الضأن بـ240 جنيها للكيلو.. أسعار اللحوم في الأسواق اليوم الجمعة

المصدر: موقع الدستور - مصر التصنيف: سياسة
تاريخ الخبر: 2023-06-02 15:21:13
مستوى الصحة: 45% الأهمية: 67%

نتيجة الصف الثالث الإعدادي الأزهري برقم الجلوس 2023

المصدر: موقع الدستور - مصر التصنيف: سياسة
تاريخ الخبر: 2023-06-02 15:21:13
مستوى الصحة: 60% الأهمية: 59%

الملك يوجه رسالة خاصة للحجاج المغاربة ويدعوهم للدعاء له ولولي عهده

المصدر: تيل كيل عربي - المغرب التصنيف: سياسة
تاريخ الخبر: 2023-06-02 15:20:56
مستوى الصحة: 48% الأهمية: 68%

بسبب موجة الطقس الحار.. إقبال كبير على شواطئ الإسكندرية

المصدر: صوت الأمة - مصر التصنيف: سياسة
تاريخ الخبر: 2023-06-02 15:20:35
مستوى الصحة: 53% الأهمية: 57%

خبير: الحوادث انخفضت بنسب تصل إلى 40% بعد تدشين شبكة الطرق

المصدر: موقع الدستور - مصر التصنيف: سياسة
تاريخ الخبر: 2023-06-02 15:21:10
مستوى الصحة: 58% الأهمية: 59%

تحميل تطبيق المنصة العربية