التجريد (علوم الكمبيوتر)
في هندسة البرمجيات وعلوم الكمبيوتر ، التجريد هو عملية تعميم التفاصيل الملموسة ، [1] مثل السمات ، بعيدًا عن دراسة الكائنات والأنظمة للتركيز على التفاصيل ذات الأهمية الأكبر. [2] التجريد هو مفهوم أساسي في علوم الكمبيوتر وهندسة البرمجيات ، وخاصةً ضمن نموذج البرمجة الموجهة للكائنات . [3] تتضمن الأمثلة على ذلك:
- استخدام أنواع البيانات المجردة لفصل الاستخدام عن التمثيلات العملية للبيانات داخل البرامج ؛ [4]
- مفهوم الوظائف أو البرامج الفرعية التي تمثل طريقة محددة لتنفيذ تدفق التحكم ؛
- عملية إعادة تنظيم السلوك المشترك من مجموعات من الفئات غير المجردة إلى فئات مجردة باستخدام الميراث والفئات الفرعية ، كما هو الحال في لغات البرمجة الموجهة للكائنات.
الأساس المنطقي
جوهر التجريد هو الحفاظ على المعلومات ذات الصلة في سياق معين، ونسيان المعلومات غير ذات الصلة في هذا السياق.
تعمل الحوسبة في الغالب بشكل مستقل عن العالم الملموس. تنفذ الأجهزة نموذجًا للحوسبة قابلًا للتبادل مع نماذج أخرى. [6] يتم هيكلة البرامج في هياكل لتمكين البشر من إنشاء أنظمة هائلة من خلال التركيز على عدد قليل من القضايا في وقت واحد. تتكون هذه الهياكل من اختيارات محددة للتجريدات. القاعدة العاشرة لجرينسبون هي حكمة مأثورة حول كيف أن مثل هذه الهندسة المعمارية حتمية ومعقدة في نفس الوقت.
يعد تجريد اللغة شكلاً مركزيًا من أشكال التجريد في الحوسبة: يتم تطوير لغات اصطناعية جديدة للتعبير عن جوانب محددة لنظام ما. تساعد لغات النمذجة في التخطيط. يمكن معالجة لغات الكمبيوتر باستخدام الكمبيوتر. ومن الأمثلة على عملية التجريد هذه التطور الجيلي للغة البرمجة من لغة الآلة إلى لغة التجميع ولغة المستوى العالي . يمكن استخدام كل مرحلة كحجر أساس للمرحلة التالية. يستمر تجريد اللغة على سبيل المثال في لغات البرمجة النصية ولغات البرمجة الخاصة بالمجال .
في لغة البرمجة، تسمح بعض الميزات للمبرمج بإنشاء تجريدات جديدة. وتشمل هذه البرامج الفرعية والوحدات النمطية والتعدد الأشكال ومكونات البرامج . تظل بعض التجريدات الأخرى مثل أنماط تصميم البرامج والأنماط المعمارية غير مرئية للمترجم وتعمل فقط في تصميم النظام.
تحاول بعض التجريدات الحد من نطاق المفاهيم التي يحتاج المبرمج إلى معرفتها، من خلال إخفاء التجريدات التي تم بناؤها عليها تمامًا. انتقد مهندس البرمجيات والكاتب جويل سبولسكي هذه الجهود بزعم أن جميع التجريدات متسربة - وأنها لا تستطيع أبدًا إخفاء التفاصيل أدناه تمامًا؛ [7] ومع ذلك، فإن هذا لا ينفي فائدة التجريد.
تم تصميم بعض التجريدات للتفاعل مع تجريدات أخرى - على سبيل المثال، قد تحتوي لغة البرمجة على واجهة وظيفة أجنبية لإجراء مكالمات إلى لغة المستوى الأدنى.
ميزات التجريد
لغات البرمجة
توفر لغات البرمجة المختلفة أنواعًا مختلفة من التجريد، اعتمادًا على التطبيقات المقصودة للغة. على سبيل المثال:
- في لغات البرمجة الموجهة للكائنات مثل C++ أو Object Pascal أو Java ، أصبح مفهوم التجريد بحد ذاته عبارة عن بيان إعلاني - باستخدام بناء الجملة (في C++ ) أو الكلمات الأساسية [8] و [9] (في Java ). بعد مثل هذا الإعلان، تقع على عاتق المبرمج مسؤولية تنفيذ فئة لإنشاء كائن الإعلان.
function(parameters) = 0;abstractinterface - تُظهر لغات البرمجة الوظيفية عادةً تجريدات مرتبطة بالوظائف، مثل تجريدات لامدا (تحويل مصطلح إلى دالة لبعض المتغيرات) والوظائف ذات الدرجة الأعلى (المعلمات هي وظائف). [10]
- تدعم اللغات الحديثة من عائلة لغة البرمجة Lisp مثل Clojure و Scheme و Common Lisp أنظمة الماكرو للسماح بالتجريد النحوي. تحتوي لغات برمجة أخرى مثل Scala أيضًا على وحدات ماكرو أو ميزات برمجة ميتا مشابهة جدًا (على سبيل المثال، تحتوي Haskell على Template Haskell و OCaml على MetaOCaml ). يمكن أن تسمح هذه للمبرمج بالتخلص من التعليمات البرمجية النمطية ، وتجريد تسلسلات استدعاء الوظيفة المملة، وتنفيذ هياكل تدفق التحكم الجديدة ، وتنفيذ لغات المجال المحددة (DSLs) ، والتي تسمح بالتعبير عن المفاهيم الخاصة بالمجال بطرق موجزة وأنيقة. كل هذا، عند استخدامه بشكل صحيح، يحسن من كفاءة المبرمج ووضوح التعليمات البرمجية من خلال جعل الغرض المقصود أكثر وضوحًا. إحدى عواقب التجريد النحوي أيضًا هي أنه يمكن تنفيذ أي لهجة Lisp وفي الواقع أي لغة برمجة تقريبًا، من حيث المبدأ، في أي Lisp حديث بجهد أقل بكثير (ولكن لا يزال غير تافه في معظم الحالات) عند مقارنته بلغات البرمجة "الأكثر تقليدية" مثل Python أو C أو Java .
طرق المواصفات
لقد طور المحللون طرقًا مختلفة لتحديد أنظمة البرمجيات رسميًا. تتضمن بعض الطرق المعروفة ما يلي:
- الطريقة القائمة على النموذج المجرد (VDM، Z)؛
- التقنيات الجبرية (Larch، CLEAR، OBJ، ACT ONE، CASL)؛
- التقنيات القائمة على العمليات (LOTOS، SDL، Estelle)؛
- التقنيات القائمة على التتبع (SPECIAL، TAM)؛
- التقنيات المبنية على المعرفة (التنقيح، التعمق).
لغات المواصفات
تعتمد لغات المواصفات بشكل عام على التجريد من نوع أو آخر، حيث يتم تعريف المواصفات عادةً في وقت مبكر من المشروع (وعلى مستوى أكثر تجريدًا) من التنفيذ النهائي. على سبيل المثال، تسمح لغة مواصفات UML بتعريف الفئات المجردة ، والتي تظل في مشروع الشلال مجردة أثناء مرحلة الهندسة المعمارية والمواصفات للمشروع.
تجريد التحكم
تقدم لغات البرمجة تجريد التحكم كأحد الأغراض الرئيسية لاستخدامها. تفهم أجهزة الكمبيوتر العمليات على المستوى المنخفض للغاية مثل نقل بعض البتات من موقع واحد في الذاكرة إلى موقع آخر وإنتاج مجموع تسلسلين من البتات. تسمح لغات البرمجة بالقيام بذلك على المستوى الأعلى. على سبيل المثال، ضع في اعتبارك هذا البيان المكتوب بأسلوب يشبه باسكال :
a := (1 + 2) * 5
بالنسبة للإنسان، يبدو هذا حسابًا بسيطًا وواضحًا إلى حد ما ( "واحد زائد اثنين يساوي ثلاثة، مضروبًا في خمسة يساوي خمسة عشر" ). ومع ذلك، فإن الخطوات منخفضة المستوى اللازمة لإجراء هذا التقييم، وإرجاع القيمة "15"، ثم تعيين تلك القيمة للمتغير "a"، دقيقة ومعقدة للغاية في الواقع. يجب تحويل القيم إلى تمثيل ثنائي (غالبًا ما تكون مهمة أكثر تعقيدًا مما قد يتصوره المرء) وتحليل الحسابات (بواسطة المترجم أو المفسر) إلى تعليمات تجميع (مرة أخرى، والتي تكون أقل بديهية للمبرمج: العمليات مثل تحويل سجل ثنائي إلى اليسار، أو إضافة المكمل الثنائي لمحتويات سجل واحد إلى آخر، ليست ببساطة الطريقة التي يفكر بها البشر في العمليات الحسابية المجردة للجمع أو الضرب). أخيرًا، يتضمن تعيين القيمة الناتجة "15" للمتغير المسمى "a"، بحيث يمكن استخدام "a" لاحقًا، خطوات إضافية "خلف الكواليس" للبحث عن تسمية المتغير والموقع الناتج في الذاكرة الفعلية أو الافتراضية، وتخزين التمثيل الثنائي لـ "15" في موقع الذاكرة هذا، وما إلى ذلك.
بدون تجريد التحكم، سيحتاج المبرمج إلى تحديد جميع خطوات مستوى السجل/الثنائي في كل مرة يريد فيها ببساطة إضافة أو ضرب عدد من الأرقام وتعيين النتيجة إلى متغير. مثل هذا التكرار للجهود له عاقبتان سلبيتان خطيرتان:
- إنه يجبر المبرمج على تكرار المهام الشائعة باستمرار في كل مرة تكون هناك حاجة إلى عملية مماثلة
- إنه يجبر المبرمج على البرمجة لمجموعة معينة من الأجهزة والتعليمات
البرمجة المنظمة
تتضمن البرمجة المنظمة تقسيم مهام البرنامج المعقدة إلى أجزاء أصغر مع وجود تحكم واضح في التدفق وواجهات بين المكونات، مع تقليل احتمالية التعقيد للآثار الجانبية.
في برنامج بسيط، قد يهدف هذا إلى ضمان أن الحلقات لها نقاط خروج واحدة أو واضحة و(حيثما أمكن) الحصول على نقاط خروج واحدة من الوظائف والإجراءات.
في نظام أكبر، قد يتضمن الأمر تقسيم المهام المعقدة إلى العديد من الوحدات المختلفة. فكر في نظام يتعامل مع رواتب الموظفين على متن السفن وفي المكاتب البرية:
- قد يتضمن المستوى الأعلى قائمة بالعمليات النموذجية للمستخدم النهائي.
- يمكن أن يكون هناك ضمن ذلك ملفات قابلة للتنفيذ أو مكتبات مستقلة لمهام مثل تسجيل دخول وخروج الموظفين أو طباعة الشيكات.
- داخل كل من هذه المكونات المستقلة، قد يكون هناك العديد من ملفات المصدر المختلفة، كل منها يحتوي على كود البرنامج للتعامل مع جزء من المشكلة، مع توفر واجهات مختارة فقط لأجزاء أخرى من البرنامج. قد يحتوي برنامج تسجيل الدخول على ملفات مصدر لكل شاشة إدخال بيانات وواجهة قاعدة البيانات (والتي قد تكون في حد ذاتها مكتبة مستقلة تابعة لجهة خارجية أو مجموعة مرتبطة بشكل ثابت من روتينات المكتبة).
- يتعين على قاعدة البيانات أو تطبيق الرواتب أيضًا أن يبدأ عملية تبادل البيانات بين السفينة والشاطئ، وغالبًا ما تحتوي مهمة نقل البيانات هذه على العديد من المكونات الأخرى.
تنتج هذه الطبقات تأثير عزل تفاصيل التنفيذ لمكون واحد وطرقه الداخلية المتنوعة عن المكونات الأخرى. تتبنى البرمجة الموجهة للكائنات هذا المفهوم وتوسعه.
تجريد البيانات
يفرض تجريد البيانات فصلاً واضحاً بين الخصائص المجردة لنوع البيانات والتفاصيل الملموسة لتنفيذه. الخصائص المجردة هي تلك التي تكون مرئية لكود العميل الذي يستخدم نوع البيانات - الواجهة لنوع البيانات - بينما يظل التنفيذ الملموس خاصًا بالكامل، ويمكنه بالفعل التغيير، على سبيل المثال لتضمين تحسينات الكفاءة بمرور الوقت. والفكرة هي أن مثل هذه التغييرات لا يُفترض أن يكون لها أي تأثير على كود العميل، لأنها لا تنطوي على أي اختلاف في السلوك المجرد.
على سبيل المثال ، يمكن تعريف نوع بيانات مجرد يسمى جدول البحث والذي يربط المفاتيح بالقيم بشكل فريد ، ويمكن استرجاع القيم من خلال تحديد المفاتيح المقابلة لها. يمكن تنفيذ جدول البحث هذا بطرق مختلفة: كجدول تجزئة ، أو شجرة بحث ثنائية ، أو حتى قائمة خطية بسيطة من أزواج (المفتاح:القيمة). وبقدر ما يتعلق الأمر بكود العميل، فإن الخصائص المجردة للنوع هي نفسها في كل حالة.
بالطبع، يعتمد كل هذا على الحصول على تفاصيل الواجهة بشكل صحيح في المقام الأول، حيث أن أي تغييرات فيها يمكن أن يكون لها تأثيرات كبيرة على كود العميل. كطريقة واحدة للنظر إلى هذا: تشكل الواجهة عقدًا حول السلوك المتفق عليه بين نوع البيانات وكود العميل؛ أي شيء غير مذكور في العقد عرضة للتغيير دون إشعار.
تجريد البيانات يدويا
في حين أن الكثير من تجريد البيانات يحدث من خلال علوم الكمبيوتر والأتمتة، فهناك أوقات تتم فيها هذه العملية يدويًا ودون تدخل برمجي. إحدى الطرق التي يمكن فهم ذلك بها هي من خلال تجريد البيانات ضمن عملية إجراء مراجعة منهجية للأدبيات. في هذه المنهجية، يتم تجريد البيانات بواسطة واحد أو أكثر من الملخصين عند إجراء تحليل تلوي ، مع تقليل الأخطاء من خلال تجريد البيانات المزدوج متبوعًا بالتحقق المستقل، والمعروف باسم التحكيم . [11]
التجريد في البرمجة الشيئية
في نظرية البرمجة الموجهة للكائنات ، تتضمن التجريدية إمكانية تعريف الكائنات التي تمثل "جهات فاعلة" مجردة يمكنها أداء العمل والإبلاغ عن حالتها وتغييرها و"التواصل" مع الكائنات الأخرى في النظام. يشير مصطلح التغليف إلى إخفاء تفاصيل الحالة ، ولكن توسيع مفهوم نوع البيانات من لغات البرمجة السابقة لربط السلوك بشكل أقوى بالبيانات وتوحيد الطريقة التي تتفاعل بها أنواع البيانات المختلفة، هو بداية التجريد . عندما ينتقل التجريد إلى العمليات المحددة، مما يتيح استبدال كائنات من أنواع مختلفة، يُطلق عليه تعدد الأشكال . عندما ينتقل في الاتجاه المعاكس، داخل الأنواع أو الفئات، وهيكلتها لتبسيط مجموعة معقدة من العلاقات، يُطلق عليه التفويض أو الوراثة .
تقدم العديد من لغات البرمجة الموجهة للكائنات تسهيلات مماثلة للتجريد، وكلها لدعم استراتيجية عامة للتعدد الأشكال في البرمجة الموجهة للكائنات، والتي تتضمن استبدال نوع بنوع آخر في نفس الدور أو دور مماثل. على الرغم من عدم دعمها بشكل عام، قد تحدد التكوينات أو الصور أو الحزمة مسبقًا عددًا كبيرًا من هذه الارتباطات في وقت التجميع أو وقت الارتباط أو وقت التحميل . سيترك هذا الحد الأدنى فقط من هذه الارتباطات للتغيير في وقت التشغيل .
على سبيل المثال، يتميز نظام Common Lisp Object System أو Self بقدر أقل من التمييز بين الفئة والمثيل واستخدام أكبر للتفويض من أجل تعدد الأشكال . يتم تجريد الكائنات والوظائف الفردية بشكل أكثر مرونة لتناسب بشكل أفضل التراث الوظيفي المشترك من Lisp .
يشكل C++ مثالاً آخر على التطرف: فهو يعتمد بشكل كبير على القوالب والتحميل الزائد والارتباطات الثابتة الأخرى في وقت التجميع، مما يؤدي بدوره إلى حدوث مشكلات معينة في المرونة.
على الرغم من أن هذه الأمثلة تقدم استراتيجيات بديلة لتحقيق نفس التجريد، إلا أنها لا تغير بشكل أساسي الحاجة إلى دعم الأسماء المجردة في الكود - تعتمد جميع البرمجة على القدرة على تجريد الأفعال كوظائف، والأسماء كهياكل بيانات، وكل منهما كعمليات.
على سبيل المثال، خذ في الاعتبار جزءًا من نموذج Java لتمثيل بعض "الحيوانات" الشائعة في المزارع بمستوى من التجريد مناسب لنمذجة جوانب بسيطة من جوعها وتغذيتها. وهو يحدد فئة Animalلتمثيل حالة الحيوان ووظائفه:
الفئة العامة Animal تمتد إلى LivingThing { موقع خاص loc ؛ احتياطيات طاقة مزدوجة خاصة ؛
public boolean isHungry ( ) { return energyReserves < 2.5 ; } public void eat ( Food food ) { // استهلك الطعام energyReserves + = food.getCalories ( ); } public void moveTo ( Location location ) { // الانتقال إلى موقع جديد this.loc = location ; } }
باستخدام التعريف أعلاه، يمكن للمرء إنشاء كائنات من النوعحيوانويطلقون على أساليبهم هذا الاسم:
الخنزير = حيوان جديد (); البقرة = حيوان جديد (); إذا كان الخنزير جائعًا ( )) { الخنزير يأكل ( قصاصات الطاولة ); } إذا كان البقرة جائعًا ( )) { البقرة تأكل ( العشب ) ; } البقرة تتحرك إلى ( الحظيرة ) ;
في المثال أعلاه، تعتبر الفئة Animalتجريدًا يستخدم بدلاً من حيوان حقيقي، LivingThingوهي تجريد إضافي (في هذه الحالة تعميم) لـ Animal.
إذا كان المرء يحتاج إلى تسلسل هرمي أكثر تمايزًا للحيوانات - للتمييز، على سبيل المثال، بين أولئك الذين يوفرون الحليب من أولئك الذين لا يقدمون شيئًا سوى اللحوم في نهاية حياتهم - فهذا مستوى وسيط من التجريد، ربما DairyAnimal (الأبقار والماعز) التي تأكل الأطعمة المناسبة لإنتاج حليب جيد، و MeatAnimal (الخنازير والثيران) التي تأكل الأطعمة التي توفر أفضل جودة للحوم.
إن مثل هذا التجريد من الممكن أن يزيل الحاجة إلى أن يحدد مبرمج التطبيق نوع الطعام، وبالتالي يمكنه التركيز بدلاً من ذلك على جدول التغذية. ويمكن ربط الفئتين باستخدام الوراثة أو كل فئة على حدة، ويمكن للمبرمج أن يحدد درجات متفاوتة من تعدد الأشكال بين النوعين. وتميل هذه المرافق إلى التباين بشكل كبير بين اللغات، ولكن بشكل عام يمكن لكل منها تحقيق أي شيء ممكن مع أي من اللغات الأخرى. ويمكن أن يكون للعديد من عمليات التحميل الزائد للعمليات، نوع بيانات بنوع بيانات، نفس التأثير في وقت التجميع مثل أي درجة من الوراثة أو أي وسيلة أخرى لتحقيق تعدد الأشكال. إن تدوين الفئة هو ببساطة راحة للمبرمج.
التصميم الموجه نحو الكائنات
تصبح القرارات المتعلقة بما يجب تجريدها وما يجب الاحتفاظ به تحت سيطرة المبرمج هي الشغل الشاغل للتصميم الموجه للكائنات وتحليل المجال - في الواقع تحديد العلاقات ذات الصلة في العالم الحقيقي هو شغل شاغل التحليل الموجه للكائنات أو التحليل القديم.
بشكل عام، لتحديد التجريد المناسب، يجب على المرء اتخاذ العديد من القرارات الصغيرة حول النطاق (تحليل المجال)، وتحديد الأنظمة الأخرى التي يجب التعاون معها (تحليل الإرث)، ثم إجراء تحليل مفصل موجه نحو الكائنات والذي يتم التعبير عنه ضمن قيود وقت المشروع والميزانية كتصميم موجه نحو الكائنات. في مثالنا البسيط، المجال هو الحظيرة، والخنازير الحية والأبقار وعاداتها الغذائية هي القيود القديمة، والتحليل التفصيلي هو أن المبرمجين يجب أن يتمتعوا بالمرونة لإطعام الحيوانات بما هو متاح وبالتالي لا يوجد سبب لترميز نوع الطعام في الفصل نفسه، والتصميم هو فئة Animal بسيطة واحدة حيث الخنازير والأبقار هي حالات لها نفس الوظائف. إن القرار بتمييز DairyAnimal من شأنه أن يغير التحليل التفصيلي ولكن تحليل المجال والإرث لن يتغير - وبالتالي فهو تحت سيطرة المبرمج بالكامل، ويسمى تجريدًا في البرمجة الموجهة نحو الكائنات على عكس التجريد في تحليل المجال أو الإرث.
اعتبارات
عند مناقشة الدلالات الرسمية للغات البرمجة أو الأساليب الرسمية أو التفسير المجرد ، يشير التجريد إلى فعل النظر في تعريف أقل تفصيلاً ولكنه آمن لسلوكيات البرنامج المرصودة. على سبيل المثال، قد يلاحظ المرء النتيجة النهائية فقط لتنفيذات البرنامج بدلاً من النظر في جميع الخطوات الوسيطة للتنفيذ. يتم تعريف التجريد على أنه نموذج ملموس (أكثر دقة) للتنفيذ.
قد يكون التجريد دقيقًا أو أمينًا فيما يتعلق بخاصية ما إذا كان بإمكان المرء الإجابة على سؤال حول الخاصية بشكل جيد بنفس القدر على النموذج الملموس أو المجرد. على سبيل المثال، إذا رغب المرء في معرفة قيمة نتيجة تقييم تعبير رياضي لا يتضمن سوى أعداد صحيحة +، -، ×، modulo n ، فما عليه إلا إجراء جميع العمليات modulo n (شكل مألوف من هذا التجريد هو إخراج التسعة ).
ومع ذلك، يجب أن تكون التجريدات سليمة ، على الرغم من أنها ليست دقيقة بالضرورة . أي أنه يجب أن يكون من الممكن الحصول على إجابات سليمة منها - حتى لو كان التجريد قد يؤدي ببساطة إلى نتيجة عدم القدرة على الحسم . على سبيل المثال، يمكن تجريد الطلاب في الفصل حسب أعمارهم الدنيا والقصوى؛ إذا سأل أحدهم عما إذا كان شخص معين ينتمي إلى تلك الفئة، فقد يقارن ببساطة عمر ذلك الشخص بالأعمار الدنيا والقصوى؛ إذا كان عمره يقع خارج النطاق، فقد يجيب بأمان أن الشخص لا ينتمي إلى الفئة؛ إذا لم يكن كذلك، فقد يجيب فقط "لا أعرف".
يمكن أن يؤثر مستوى التجريد المتضمن في لغة برمجة على قابليتها للاستخدام بشكل عام . يتضمن إطار الأبعاد المعرفية مفهوم تدرج التجريد في صيغة رسمية. يسمح هذا الإطار لمصمم لغة برمجة بدراسة التنازلات بين التجريد والخصائص الأخرى للتصميم، وكيف تؤثر التغييرات في التجريد على قابلية استخدام اللغة.
قد تكون التجريدات مفيدة عند التعامل مع برامج الكمبيوتر، لأن الخصائص غير التافهة لبرامج الكمبيوتر غير قابلة للحسم بشكل أساسي (انظر نظرية رايس ). ونتيجة لذلك، يتعين على الطرق التلقائية لاستخلاص المعلومات حول سلوك برامج الكمبيوتر إما أن تتخلى عن الإنهاء (في بعض الأحيان، قد تفشل أو تتعطل أو لا تسفر أبدًا عن نتيجة)، أو السلامة (قد تقدم معلومات خاطئة)، أو الدقة (قد تجيب بـ "لا أعرف" على بعض الأسئلة).
التجريد هو المفهوم الأساسي للتفسير المجرد . يتم فحص النموذج بشكل عام على الإصدارات المجردة للأنظمة المدروسة.
مستويات التجريد
يقدم علم الحاسوب عادةً مستويات (أو طبقات أقل شيوعًا ) من التجريد، حيث يمثل كل مستوى نموذجًا مختلفًا لنفس المعلومات والعمليات، ولكن بكميات متفاوتة من التفاصيل. يستخدم كل مستوى نظام تعبير يتضمن مجموعة فريدة من الكائنات والتراكيب التي تنطبق فقط على مجال معين. [12] يبني كل مستوى "أعلى" تجريدي نسبيًا على مستوى "أدنى" ملموس نسبيًا، والذي يميل إلى توفير تمثيل "حبيبي" بشكل متزايد. على سبيل المثال، تُبنى البوابات على الدوائر الإلكترونية، والثنائية على البوابات، ولغة الآلة على الثنائية، ولغة البرمجة على لغة الآلة، والتطبيقات وأنظمة التشغيل على لغات البرمجة. يتجسد كل مستوى، ولكن لا يتم تحديده، من خلال المستوى الذي يقع أسفله، مما يجعله لغة وصف مكتفية ذاتيًا إلى حد ما.
أنظمة قواعد البيانات
نظرًا لأن العديد من مستخدمي أنظمة قواعد البيانات يفتقرون إلى المعرفة العميقة بهياكل البيانات الحاسوبية، فإن مطوري قواعد البيانات غالبًا ما يخفون التعقيد من خلال المستويات التالية:

المستوى المادي: يصف المستوى الأدنى من التجريد كيفية تخزين النظام للبيانات فعليًا. يصف المستوى المادي هياكل البيانات المعقدة منخفضة المستوى بالتفصيل.
المستوى المنطقي: يصف المستوى الأعلى التالي من التجريد البيانات التي تخزنها قاعدة البيانات، والعلاقات الموجودة بين تلك البيانات. وبالتالي يصف المستوى المنطقي قاعدة البيانات بأكملها من حيث عدد صغير من الهياكل البسيطة نسبيًا. وعلى الرغم من أن تنفيذ الهياكل البسيطة على المستوى المنطقي قد ينطوي على هياكل معقدة على المستوى المادي، فإن مستخدم المستوى المنطقي لا يحتاج إلى إدراك هذا التعقيد. ويشار إلى ذلك باسم استقلال البيانات المادية . يستخدم مسؤولو قواعد البيانات ، الذين يجب عليهم تحديد المعلومات التي يجب الاحتفاظ بها في قاعدة البيانات، المستوى المنطقي للتجريد.
مستوى العرض: يصف أعلى مستوى من التجريد جزءًا فقط من قاعدة البيانات بأكملها. وعلى الرغم من أن المستوى المنطقي يستخدم هياكل أبسط، إلا أن التعقيد يظل قائمًا بسبب تنوع المعلومات المخزنة في قاعدة بيانات كبيرة. لا يحتاج العديد من مستخدمي نظام قاعدة البيانات إلى كل هذه المعلومات؛ بل يحتاجون بدلاً من ذلك إلى الوصول إلى جزء فقط من قاعدة البيانات. يوجد مستوى العرض للتجريد لتبسيط تفاعلهم مع النظام. قد يوفر النظام العديد من العروض لنفس قاعدة البيانات.
الهندسة المعمارية الطبقية
القدرة على توفير تصميم بمستويات مختلفة من التجريد يمكن
- تبسيط التصميم بشكل كبير
- تمكين مختلف اللاعبين من العمل بشكل فعال على مستويات مختلفة من التجريد
- دعم قابلية نقل القطع الأثرية البرمجية (على أساس النموذج المثالي)
يمكن لكل من تصميم الأنظمة وتصميم العمليات التجارية استخدام هذه الخاصية. حيث تولد بعض عمليات التصميم تصميمات تحتوي على مستويات مختلفة من التجريد.
تقسم الهندسة المعمارية الطبقية اهتمامات التطبيق إلى مجموعات مكدسة (طبقات). إنها تقنية تستخدم في تصميم برامج الكمبيوتر والأجهزة والاتصالات حيث يتم عزل مكونات النظام أو الشبكة في طبقات بحيث يمكن إجراء التغييرات في طبقة واحدة دون التأثير على الطبقات الأخرى.
انظر أيضا
- مبدأ التجريد (برمجة الكمبيوتر)
- عكس التجريد لنمط مضاد لخطر واحد في التجريد
- نوع البيانات المجردة لوصف مجرد لمجموعة من البيانات
- خوارزمية لوصف مجرد لإجراء حسابي
- تجريد الأقواس لتحويل المصطلح إلى دالة لمتغير
- نمذجة البيانات لتنظيم البيانات بشكل مستقل عن العمليات التي تستخدمها
- التغليف للتجريدات التي تخفي تفاصيل التنفيذ
- القاعدة العاشرة لجرينسبون لقول مأثور عن النقطة المثلى في فضاء التجريدات
- وظيفة من الدرجة الأعلى للتجريد حيث تنتج الوظائف أو تستهلك وظائف أخرى
- تجريد لامدا لتحويل مصطلح إلى دالة لبعض المتغيرات
- قائمة التجريدات (علوم الكمبيوتر)
- تحسين عكس التجريد في الحوسبة
- عدد صحيح (علوم الكمبيوتر)
- الاستدلال (علوم الكمبيوتر)
مراجع
- ^ كولبورن، تيموثي؛ شوت، جاري (5 يونيو 2007). "التجريد في علوم الكمبيوتر". العقول والآلات . 17 (2): 169– 184. doi :10.1007/s11023-007-9061-7. ISSN 0924-6495. S2CID 5927969.
- ^ كرامر، جيف (1 أبريل 2007). "هل التجريد هو المفتاح للحوسبة؟". اتصالات جمعية الحوسبة الآلية . 50 (4): 36– 42. doi :10.1145/1232743.1232745. ISSN 0001-0782. S2CID 12481509.
- ^ بن آري، مردخاي (1 مارس 1998). "البنائية في تعليم علوم الكمبيوتر". نشرة ACM SIGCSE . 30 (1): 257، 257- 261. doi : 10.1145/274790.274308 . ISSN 0097-8418.
- ^ Liskov, Barbara (1 May 1988). "Keynote Address – data abstraction and hierarchy". ACM SIGPLAN Notices . 23. ACM: 17– 34. doi :10.1145/62138.62141. ISBN 0897912667. S2CID 14219043.
- ^ Guttag, John V. (18 January 2013). Introduction to Computation and Programming Using Python (Spring 2013 ed.). Cambridge, Massachusetts: The MIT Press. ISBN 9780262519632.
- ^ فلوريدي، لوتشيانو (سبتمبر 2008). "طريقة مستويات التجريد". العقول والآلات . 18 (3): 303-329 . doi :10.1007/s11023-008-9113-7. hdl : 2299/2998 . ISSN 0924-6495. S2CID 7522925.
- ^ سبولسكي، جويل. "قانون التجريدات المتسربة".
- ^ "الأساليب والفئات المجردة". دروس Java . Oracle . تم الاسترجاع في 4 سبتمبر 2014 .
- ^ "استخدام واجهة كنوع". دروس Java . Oracle . تم الاسترجاع في 4 سبتمبر 2014 .
- ^ هذه المقالة مبنية على مادة مأخوذة من Abstraction في القاموس المجاني للحوسبة على الإنترنت قبل 1 نوفمبر 2008 وتم دمجها بموجب شروط "إعادة الترخيص" في GFDL ، الإصدار 1.3 أو الأحدث.
- ^ E, Jian‐Yu; Saldanha, Ian J.; Canner, Joseph; Schmid, Christopher H.; Le, Jimmy T.; Li, Tianjing (2020). "التحكيم وليس الخبرة في تجريد البيانات أكثر أهمية في تقليل الأخطاء في تجريد البيانات في المراجعات المنهجية". طرق تجميع البحث . 11 (3): 354– 362. doi :10.1002/jrsm.1396. ISSN 1759-2879. PMID 31955502. S2CID 210829764.
- ^ لوتشيانو فلوريدي ، التسوية وطريقة التجريد IEG – تقرير بحثي 22.11.04
قراءة إضافية
- هارولد آبلسون؛ جيرالد جاي سوسمان؛ جولي سوسمان (25 يوليو 1996). بنية وتفسير برامج الكمبيوتر (الطبعة الثانية). مطبعة معهد ماساتشوستس للتكنولوجيا. رقم ISBN 978-0-262-01153-2. تم أرشفته من الأصل في 26 فبراير 2009 . تم استرجاعه في 22 يونيو 2012 .
- سبولسكي، جويل (11 نوفمبر 2002). "قانون التجريدات المتسربة". جويل عن البرمجيات .
- التجريد/إخفاء المعلومات – دورة CS211، جامعة كورنيل.
- إريك س. روبرتس (1997). تجريدات البرمجة في دورة علوم الكمبيوتر الثانية .
- باليرمو، جيفري (29 يوليو 2008). "عمارة البصل". جيفري باليرمو .
- فيشكين، أوزي (يناير 2011). "استخدام التجريد البسيط لإعادة اختراع الحوسبة للتوازي". اتصالات جمعية الحوسبة الأمريكية . 54 (1): 75- 85. doi : 10.1145/1866739.1866757 .
روابط خارجية
- مثال SimArch للهندسة المعمارية الطبقية لأنظمة المحاكاة الموزعة.
