النظم البيئية للبرامج: بناء المبادئ

صورة



هذه المقالة لديها وقت عصيب. قبل شهرين ، طُلب مني كتابة مراجعة حول موضوع بناء النظم الإيكولوجية للبرامج لمختلف البنى. في البداية ، رفضت ومازح بروح أن النظام البيئي ليس بيولوجيا. إنها ليست حتى تقنية. هذا فقط عن المال. وأحيانًا عن السياسة. ثم جمع إرادته في قبضة ، والأفكار في كومة ، وجلس وكتب كل شيء حرفياً في يوم واحد. باللغة الإنجليزية. ثم تُرجمت المراجعة إلى الصينية ونشرت. في الطريق ، قام المترجم بتحسين النص بشكل كبير وإضافة بعض الأفكار الشيقة. ثم قررت أن النص قد يثير اهتمام جمهور هبر ، كما أنه من المفيد لي أن أشير إليه في المستقبل. وبدأ في نحت النسخة الروسية مسلحًا بالأصل الإنجليزي والترجمة الصينية. لقد كان نفس الصراع مع مصطلحات إنجليزية معينة (SW النظام البيئي؟ = النظام البيئي للبرامج ،تمكين؟ = ترقية ، مهندس تطبيق؟ = مهندس تطبيق) وما زالت تحجب الهيروغليفية. نتيجة لذلك ، استغرق النص الروسي وقتًا أطول من اللغتين الإنجليزية والصينية مجتمعين ... هذا يحدث.





على مدار العقود الأربعة أو الخمسة الماضية ، رأينا الكثير من الجهود لإدخال بنيات جديدة للمعالج والمتحكم الدقيق إلى السوق. قليل جدًا من هؤلاء أثبتوا نجاحه على المدى الطويل. اثنان من أكثر الأمثلة دلالة هما هندسة x86 للخوادم وأجهزة الكمبيوتر و ARM للهواتف المحمولة وأجهزة التحكم الدقيقة. الباقي إما يشغل (احتل) مكانة صغيرة ، أو لم يكن موجودًا لفترة طويلة. بالطبع ، أحد المكونات الرئيسية لنجاح هندسة الحوسبة ككل هو قدرتها على تلبية أهم احتياجات العملاء في فئتها. بالنسبة للخوادم ، فإن هذا الطلب هو الأداء ؛ للأجهزة المحمولة ، استهلاك منخفض للطاقة / عمر بطارية طويل. ولكن هناك عامل مهم آخر وهو وجود نظام بيئي ثري للبرامج ،مما يسمح لك بتطوير برنامج جديد بشكل فعال ، بالإضافة إلى نقل البرنامج الحالي. يعد إنشاء نظام بيئي عملية مستهلكة للوقت ومكلفة للغاية ، حيث يجب تطوير جميع برامج التطبيقات الضرورية. ولكن بهذه الطريقة فقط يمكن للهندسة المعمارية أن تحتل قطاع السوق المستهدف. ومع ذلك ، بمجرد تطوير نظام بيئي ، فإنه يعمل كآلية دفاع طبيعية ، ويمنع البنى المتنافسة من دخول السوق. في هذه المقالة ، يلخص المؤلف الدروس الرئيسية المستفادة من التجربة كما تم تطبيقها على مهمة بناء نظام بيئي ARM في قطاع سوق الخادم.ولكن بهذه الطريقة فقط يمكن للهندسة المعمارية أن تحتل قطاع السوق المستهدف. ومع ذلك ، بمجرد تطوير نظام بيئي ، فإنه يعمل كآلية دفاع طبيعية ، ويمنع البنى المتنافسة من دخول السوق. في هذه المقالة ، يلخص المؤلف الدروس الرئيسية المستفادة من التجربة كما تم تطبيقها على مهمة بناء نظام بيئي ARM في قطاع سوق الخادم.ولكن بهذه الطريقة فقط يمكن للهندسة المعمارية أن تحتل قطاع السوق المستهدف. ومع ذلك ، بمجرد تطوير نظام بيئي ، فإنه يعمل كآلية دفاع طبيعية ، ويمنع البنى المتنافسة من دخول السوق. في هذه المقالة ، يلخص المؤلف الدروس الرئيسية المستفادة من التجربة كما تم تطبيقها على مهمة بناء نظام بيئي ARM في قطاع سوق الخادم.



تحدي اليوم



نشهد اليوم أكثر الأوقات إثارة للاهتمام في سوق الكهرباء الدقيقة. على عكس ما كان عليه الحال قبل 5 سنوات ، عندما كانت إنتل تسيطر على 95٪ من سوق الشركات ، لدينا اليوم ابتكارات معمارية أكثر من أي وقت مضى. أول من ذكر رقائق سلسلة Ryzen التي تنافس إنتل بجدية. ومع ذلك ، فإن هذا الابتكار ليس معماريًا: تستخدم معالجات AMD النظام البيئي x86 المطور. ميزتها تكمن في تنفيذها الفعال. الابتكارات الأخرى أكثر إثارة للاهتمام لأنها تتطلب بناء نظام بيئي جديد للبرامج.



أحدثت "ثورة الذكاء الاصطناعي" التي قادتها NVidia وقادتها ثورة في عالم سوق الخوادم. لقد أنشأت شريحة جديدة تمامًا ، يتحكم فيها منشئها بشكل حصري تقريبًا. تعتمد على -منصة البرمجة المتوازية CUDA . CUDA (تم تقديمه لأول مرة في عام 2007) هو أحد الأمثلة المثيرة للاهتمام لبناء نظام بيئي ، وسوف ننظر إليه بمزيد من التفصيل لاحقًا. بدورها ، تحاول Intel تقديم وحدة معالجة الرسومات الخاصة بها (تعتمد جزئيًا على Gen GPU ) للتنافس في مجال الذكاء الاصطناعي. قدمت Intel مجموعة أدوات OneAPI لإنشاء بيئة البرمجة . هذا مفهوم طموح لطريقة عالمية لبرمجة مسرعات (GPU ، AI ، FPGA ، إلخ). بالإضافة إلى ذلك ، تستخدم Intel المصدر المفتوح لـ OneAPI ، مما يجعل الواجهة أكثر جاذبية من نماذج المصادر المغلقة. المركزية لمفهوم OneAPI هوالبيانات الموازية C ++ . إنها مجموعة من امتدادات C ++ بناءً على معيار CYCL. يبدو لي أن نجاح هذه المحاولة المثيرة للاهتمام سيعتمد على إدراج هذه الامتدادات في معايير C ++ المستقبلية. وأيضًا من التنفيذ الفعال لوحدة معالجة الرسومات من Intel. أحدث مثال على ذلك هو تغلغل بنية ARM في مجال الذكاء الاصطناعي والسحابة والحوسبة عالية الأداء. تشتهر هندسة ARM بنجاحها في أسواق الطاقة المنخفضة ولديها نظام بيئي برمجيات هام. لذلك ، فإن محاولة اختراق قطاعات السوق الأعلى تبدو طبيعية. هذه هي الحالة الأكثر إثارة للاهتمام بالنسبة لنا ، وسننظر فيها بمزيد من التفصيل من وجهات نظر مختلفة.



التكنولوجيا



الخلفية التكنولوجية التي ذكرتها هنا .



الاقتصاد



أدت المنافسة المتزايدة من AMD إلى Intel إلى "حرب أسعار" كبيرة بين عمالقة المعالجات. يؤدي هذا إلى خفض إيرادات المنتجين ، ولكنه يجعل الحياة أسهل للمستخدمين النهائيين. على العكس من ذلك ، في مجال الذكاء الاصطناعي ، نشهد هيمنة NVidia ، التي تملي السعر على السوق. وهنا يبحث المستهلكون بنشاط أكبر عن أنظمة بديلة.



السياسة



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



صورة



يخلق العامل السياسي طلبًا قويًا على الموارد لسد فجوات البرامج والدعم طويل الأجل لهذه الجهود. هناك العديد من القوى القوية وراء إنشاء النظام البيئي ARM. ولكن هناك أيضًا مشاكل خطيرة جدًا. اسمحوا لي أن أذكر بعضًا منها:



مشكلة الدجاج والبيض النموذجية في مراحلها المبكرة



أصبحت بعض التطبيقات التجارية المغلقة المصدر هي المعيار الفعلي للقطاعات المهمة. على سبيل المثال ، SAP-Hana ، Oracle لقواعد البيانات ، VMWareللمحاكاة الافتراضية ، إلخ. عادة لا يهتم المطورون بنقل منتجاتهم وصيانتها على بنية لا تتمتع بحصة سوقية كافية. من ناحية أخرى ، لا يشتري المستخدمون النهائيون الأجهزة التي لا يدعمها البرنامج. هناك عدة طرق لكسر هذه الحلقة المفرغة. الأول هو دفع أموال (ضخمة) لشركات البرمجيات من أجل النقل. والثاني هو إنشاء حل تنافسي من شأنه إما دفع المنتج خارج السوق أو فرض النقل المطلوب. والثالث هو إقناع شخص ما من كبار المطورين المخصصين بـ "الضغط" عليه. ومع ذلك ، فإن كلا الطريقين ليس سهلاً أو رخيصًا.



برنامج تراث



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



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



دروس من الماضي



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



في



الأيام الأولى عندما أصدرت إنتل أول معالج 8 بت 8080 في منتصف السبعينيات ، كان لديها ميزة معمارية قليلة على منافسيها موتورولا 6800 أو زيلوج Z80.... ومع ذلك ، كانت إنتل أول من أدرك أهمية البرمجيات في تعزيز الأجهزة. كما كانت أول من أدخل المترجم الخاص بها لتسريع وتبسيط وتقليل تكلفة تطوير البرمجيات. كانت الأدوات هي التي خلقت ميزة تنافسية مهمة لشركة Intel ومكنتها من النجاح في وقت مبكر. قدمت إنتل لاحقًا MKL للجبر الخطي ، VTuneلتحسين البرنامج والعديد من الأدوات الأخرى التي لعبت دورًا مهمًا في تكوين نظام x86 البيئي. علاوة على ذلك ، ضمنت إنتل توافق أدواتها. في وقت لاحق ، أدركت Intel أهمية نظام التشغيل الذي يتحكم في تشغيل الأجهزة. أصبح ترادفها مع Microsoft (Wintel) القوة المهيمنة في سوق أجهزة الكمبيوتر الشخصية لمدة ثلاثة عقود تقريبًا. ومع ذلك ، مع تطور سوق الخوادم ، أصبح Linux والمصدر المفتوح بشكل عام وثيقين للغاية. وهكذا ، أصبحت Intel المساهم الرئيسي في Linux kernel ، ولا تزال في المركز الأول (خمن ​​من هو رقم 2؟). الأهم من ذلك ، أن شركة Intel تلتزم دائمًا بشكل صارم بالتوافق الثنائي (التوافق مع الإصدارات السابقة) لمنصاتها. حقيقة أن الثنائيات التي تم إنشاؤها لأي جيل سابق من الهندسة المعمارية تعمل على جيل لاحق خارج الصندوق ،وسمح لـ x86 بأن تصبح القوة المهيمنة. يستغرق بناء نظام بيئي وقتًا ، لكنه يستحق ذلك.



شروق الشمس وغروبها



هذا هو المثال المقابل الوحيد الذي يلعب فيه نظام بيئي متطور ضد منشئه. في أوائل العقد الأول من القرن الحادي والعشرين ، كان لشركة Sun Microsystems مكانة بارزة في سوق خوادم SPARC. قامت الشركة بتطوير وتطوير نظام Java البيئي . لكن المشكلة تكمن في أن آلة Java تعتمد على مترجم وليس مترجم. لذلك عندما أجبرت الظروف Sun على فتح Java ، كانت هذه بداية النهاية. من خلال تطبيق مترجم Java لنظام x86 ، دفعت إنتل Sun تدريجيًا إلى الخروج من سوق الخوادم. الدرس الذي يجب تعلمه هو أن اللغات المفسرة (التي تحظى بشعبية كبيرة اليوم) ليست مدافعة فعالة عن حصة السوق.



نجاح ARM في سوق الطاقة المنخفضة



تصدرت هندسة محطات العمل سوق الهواتف المحمولة والأجهزة اللوحية منذ أوائل القرن الحادي والعشرين. تختلف طبيعة هيمنتها كثيرًا عن x86 في أجهزة الكمبيوتر والخوادم. ARM هو مجتمع مفتوح - الترخيص غير مكلف نسبيًا ، مما يخلق المتطلبات الأساسية لعدد كبير من اللاعبين لدخول اللعبة. كما يعمل نظام التشغيل Android المفتوح على تقليل حاجز الدخول. لعبت أيضًا دورًا عندما أدرك اللاعبون الرئيسيون (Samsung و Qualcomm و Huawei ، إلخ) الحاجة إلى تحالف صناعي لإنشاء نظام بيئي. جعل هذا من الممكن بنائه في وقت قصير جدًا.



محاولة إنتل لغزو سوق الهواتف المحمولة



في حوالي عام 2007 ، أدركت Intel (أو ما قبله) إمكانات سوق الهواتف المحمولة والأجهزة اللوحية وحاولت التغلب عليها. اعتمد المشروع على هندسة Atom (x86 مع استهلاك منخفض للطاقة) والترجمة الثنائية من ARM إلى x86 ( Houdini ). تعمل هذه الآلية على تعزيز النظام البيئي للبرنامج الحالي. تم إطلاق التطبيقات على أجهزة إنتل في وقت قياسي. ومع ذلك ، لعبت حقيقتان ضد شركة Intel. الأول هو عدم القدرة على اللحاق بركب ARM من حيث استهلاك الطاقة. والثاني هو تعقيد الترجمة الثنائية من RISC إلى مجموعة تعليمات CISC الأكثر تعقيدًا... تتضمن هذه الترجمة نفقات كبيرة قد تكون غير مقبولة لبعض فئات التطبيقات. وبالتالي ، يمكن النظر إلى البث الثنائي كأداة لدخول السوق ، ولكن لا يمكن أن يكون بمثابة حل طويل الأجل.



النظام البيئي CUDA



في حين أن نجاح Nvidia في قطاع الذكاء الاصطناعي لا يمكن إنكاره ، فإن تطوير نظام CUDA البيئي الخاص بها لا يزال يثير أسئلتي. على سبيل المثال ، في HPC ، لا تزال نسبة التطبيقات التي تستخدم CUDA منخفضة. والسبب هو ارتفاع تكلفة نقل هذه التطبيقات وصيانتها. قام بعض المطورين (بمساعدة كبيرة من مهندسي NVidia) بنقل رموزهم ، لكنهم تخلوا عنها لاحقًا بسبب تكلفة الدعم. على العكس من ذلك ، في قطاع الذكاء الاصطناعي ، فإن موقع Nidia قوي للغاية. ومع ذلك ، يستخدم الباحثون في الغالب أطر عمل ذات مستوى أعلى ( TensorFlow و PyTorchإلخ) ولا تقم بالبرمجة مباشرة في CUDA. يقودنا هذا إلى استنتاج مفاده أن اختيار المستوى المناسب من التجريد لـ "تسخير البرامج" له أهمية كبيرة لتقدم الأجهزة.



العودة إلى المستقبل



لنعد الآن إلى مهمتنا مسلحين بدروس الماضي.



تحالف الصناعة



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



يمكن الإشارة إلى اتحاد الحوسبة الخضراء المفتوحة (openGCC - من الصعب على المبرمج التفكير في اسم أكثر غرابة) ، وجهودنا الأخيرة داخلARM Advanced Technology Committee ضمن APKIT . قد تكون هذه بداية جيدة ، لكن كلاهما تحالفات محلية. Open GCC منظمة صينية و APKIT هي منظمة روسية. تملي الصناعة الحاجة إلى تحالف عالمي يمكن أن يخدم أغراضًا متعددة:



التزامن والتأثير التنظيمي



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



العمل مع بائعي أنظمة التشغيل والتطبيقات



كما رأينا من التجربة ، تلعب أنظمة التشغيل دورًا مركزيًا في بناء نظام بيئي للبرامج. قد تلاحظ أيضًا أن أنظمة التشغيل التي طورها بائعو الأجهزة لم تكن تاريخياً ناجحة للغاية (باستثناء Apple). لذا فإن العمل مع بائعي أنظمة التشغيل مهم جدًا من الناحية الاستراتيجية. يحدث جزء من هذا الآن - التصحيحات والتحديثات التي تظهر في أحدث إصدارات Linux kernel و compilers و glibc ، تعمل على تحسين أداء أنظمة ARM لمجموعة متنوعة من أحمال العمل. لكن هذه الجهود لا تزال مجزأة للغاية ، حيث يقوم كل بائع بذلك بمفرده ، وهو ما يستغرق عادة وقتًا طويلاً. يمكن أن يساعد التحالف في مزامنة هذه الجهود وتسريع اعتماد التحديثات.



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



نظام توزيع البرمجيات



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



إنشاء أدوات فعالة



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



صورة



هذا يضمن التعاون الوثيق بين مطوري الأدوات. يتيح ذلك لمهندسي التطبيقات (AE) استخدام أفضل الأدوات في الصناعة. تشترك AEs التي تشغل نفس أحمال العمل في المعرفة مع بعضها البعض وتوفر ملاحظات موحدة لمهندسي الأجهزة. إلخ. إلخ. كل هذا أدى إلى ظاهرة مثيرة للاهتمام: بدأ المهندسون العاملون في مثل هذه المنظمة في التفكير ليس فقط في منتجاتهم ، ولكن أيضًا في صورة النظام البيئي الواسع. يأخذون في الاعتبار الترابط فيما بينهم ، وكذلك التأثير على النظام البيئي ككل.

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



صورة



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



صورة



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



استنتاج



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



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



يُنظر إلى روسيا على أنها واحدة من أكثر المجالات الواعدة لبناء النظام البيئي ARM من عدة وجهات نظر. إن التزام الحكومة باستقلالية المعلومات يوفر دعمًا طويل الأمد لهذه المبادرة. ومع ذلك ، فإن إمكانات النظام البيئي ARM لم تتحقق بالكامل على المستوى الحكومي. العمل الجاد مطلوب حتى يُسمع صوتنا. سبب آخر هو السوق الكبيرة نسبيًا وتنوع العملاء الخاصين والعامين. على سبيل المثال ، يمكنك هنا تسمية عمالقة الموارد (Gazprom و Lukoil و Rosneft) والبنوك الرائدة (Sberbank و VTB و Alpha) ومقدمي خدمات الهاتف المحمول (MTC و Megafon و Beeline و Tele2). هناك وعي متزايد بالحاجة إلى بدائل للبنية التحتية الحالية (x86 ، و IBM ، و Oracle) ، سواء من حيث الأمان أو من حيث الأسعار.



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



All Articles