سؤال

ماذا تعني كلمة "التعامد" عند الحديث عن لغات البرمجة؟

ما هي بعض الأمثلة على التعامد؟

هل كانت مفيدة؟

المحلول

متعامدة هو الخاصية التي تعني "تغيير A لا يتغير ب". سيكون مثالا لنظام متعامد راديوا، حيث لا يغير تغيير المحطة إلى تغيير مستوى الصوت والعكس.

سيكون نظام غير متعامد مثل طائرة هليكوبتر حيث يؤدي تغيير السرعة إلى تغيير الاتجاه.

في لغات البرمجة، هذا يعني أنه عند تنفيذ التعليمات، لا شيء سوى أن هذه التعليمات يحدث (مهم جدا لتصحيح الأخطاء).

هناك أيضا معنى محدد عند الإشارة إلى مجموعات التعليمات.

نصائح أخرى

من إريك س. ريمون "فن برمجة يونيكس"

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

فكر في أنه قادر على تغيير شيء واحد دون وجود تأثير غير مرئي على جزء آخر.

على نطاق واسع، متعامدة هي علاقة بين شيئين بحيث يكون لديهم تأثير ضئيل على بعضهم البعض.

يأتي المصطلح من الرياضيات، حيث يتفوق ناقلات أكثر متعامدا إذا تتقاطع في الزوايا الصحيحة.

فكر في الفضاء الديكارتي 2 الأبعاد النموذجية (أنت شبكة نموذجية مع محاور X / Y). مؤامرة سطرين: X = 1 و Y = 1. السطونين هي متعامدة. يمكنك تغيير x = 1 عن طريق تغيير x، وهذا لن يكون له أي تأثير على السطر الآخر، والعكس صحيح.

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

إذا كان لديك مجموعة من البنيات. يقال أن Langauge متعامد إذا سمح للمبرمج بمزج هذه البنيات بحرية. على سبيل المثال، في C، لا يمكنك إرجاع صفيف (صفيف ثابت)، يقال إن ج غير تقلص في هذه الحالة:

int[] fun(); // you can't return a static array.
// Of course you can return a pointer, but the langauge allows passing arrays.
// So, it is unorthognal in case.

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

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

المثال الكلاسيكي هو أدوات سطر الأوامر UNIX: لديك أداة واحدة للحصول على محتويات القرص (DD)، آخر لخطوط التصفية من الملف (GREP)، آخر لكتابة تلك الأسطر إلى ملف (CAT)، إلخ. هذه يمكن خلط جميعها ومتابقة في الإرادة.

من عند ويكيبيديا:

علوم الكمبيوتر

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

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

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

من عند ويكيبيديا:

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

على سبيل المثال، تحتوي السيارة على مكونات وضوابط متعامدة (على سبيل المثال، لا تؤثر تسريع السيارة على أي شيء آخر ولكن المكونات المعنية حصريا مع وظيفة التسارع). من ناحية أخرى، قد يكون لدى التصميم غير المتعامد للتأثير التوجيهي الخاص به الفرامل (مثل التحكم الإلكترونية في الاستقرار)، أو قرصه السريع تعليقه. [1] وبالتالي، ينظر إلى هذا الاستخدام مشتق من استخدام متعامدي في الرياضيات: يجوز لأحد أن يشرح أحد ناقلات على مساحة فرعية من خلال إسقاطها على كل عضو من مواطن من ناقلات الأساس بشكل منفصل وإضافة التوقعات إذا وفقط إذا كانت ناقلات الأساس فقط متعامدة متبادلة.

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

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

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

على سبيل المثال، بلغة واحدة يمكنك الحصول عليها:

str.split.

لتقسيم سلسلة و

لين (شارع)

للحصول على طول.

على لغة أكثر متعامدة، ستستخدم دائما Str.x أو X (Str).

عند استنساخ كائن أو القيام بأي شيء آخر، ستعرف ما إذا كان سيتم استخدامه

استنساخ (OBJ)

أو

obj.clone.

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

تتحدث مقال ويكيبيديا المزيد عن متعامدة على التصميمات المعقدة أو لغات منخفضة المستوى. كما اقترح شخص ما أعلاه على تعليق، فإن محادثات كتاب Sebesta نظيفة حول متعامدة.

إذا كنت أستخدم جملة واحدة فقط، أود أن أقول إن لغة البرمجة هي متعامدة عندما تعمل أجزاءها غير المعروفة كما هو متوقع بناء على ما رأيته. أو ... لا مفاجآت.

;)

متعامدة في البرمجة:

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

من عند ويكيبيديا

في لغات البرمجة، يقال إن ميزة لغة البرمجة هي متعامدة إذا كان يحدها بدون قيود (أو استثناءات). على سبيل المثال، في وظائف Pascal لا يمكن إرجاع الأنواع المهيكلة. هذا تقييد على القيم العائدة من وظيفة. لذلك نحن نعتبر ميزة غير متعامدة. ؛)

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

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

Example : non-orthogonality

باسكال: لا يمكن أن تعيد الوظائف أنواع هيكلة. اللغات الوظيفية هي متعامدة للغاية.

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

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

A Reg1, memory_cell
AR Reg1, Reg2

حيث يمثل Reg1 و Reg2 السجلات.دلالات هذه هي

Reg1 ← contents(Reg1) + contents(memory_cell)
Reg1 ← contents(Reg1) + contents(Reg2)

تعليمات إضافة VAX للقيم الصحيحة 32 بت هي

ADDL operand_1, operand_2

الذي دلالاته

operand_2 ← contents(operand_1) + contents(operand_2)

في هذه الحالة، إما أن يكون المعامل عبارة عن سجل أو خلية ذاكرة.يعد تصميم تعليمات VAX متعامدًا في أن تعليمات واحدة يمكنها استخدام السجلات أو خلايا الذاكرة كمعاملات.هناك طريقتان لتحديد المعاملات ، والتي يمكن دمجها بجميع الطرق الممكنة.تصميم IBM ليس متعامدًا.إن اثنين فقط من أصل أربع مجموعات معاملات قانونية ، ويتطلب الاثنان تعليمات مختلفة ، A و AR.تصميم IBM أكثر تقييدًا وبالتالي أقل قابلية للكتابة.على سبيل المثال ، لا يمكنك إضافة قيمتين وتخزين المبلغ في موقع الذاكرة.علاوة على ذلك ، يصعب تعلم تصميم IBM بسبب القيود والتعليمات الإضافية.ترتبط التعامد ارتباطًا وثيقًا بالبساطة:كلما كان تصميم اللغة أكثر متعامدًا ، كلما كانت قواعد اللغة أقل.تعني الاستثناءات الأقل درجة أعلى من الانتظام في التصميم ، مما يجعل اللغة أسهل في التعلم والقراءة والفهم.يمكن لأي شخص تعلم جزءًا كبيرًا من اللغة الإنجليزية أن يشهد على صعوبة تعلم استثناءات القاعدة العديدة (على سبيل المثال ، قبل E باستثناء C).

تحقق متعامدة المصفوفات:

يمكن أن تكون متعامدة أيضا فيما يتعلق بالمصفوفات،

Matrix *(transpose of matrix)= identity matrix. 

انقر فوق الرابط أدناه لعرض فيديو YouTube على المتعود.
https://youtu.be/tneklaxnfw8.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top