“ Orthogonality” คืออะไร?


คำตอบ:


255

Orthogonalityคือคุณสมบัติที่หมายถึง "การเปลี่ยน A ไม่เปลี่ยน B" ตัวอย่างของระบบมุมฉากจะเป็นวิทยุซึ่งการเปลี่ยนสถานีจะไม่เปลี่ยนระดับเสียงและในทางกลับกัน

ระบบที่ไม่ตั้งฉากจะเหมือนกับเฮลิคอปเตอร์ที่การเปลี่ยนความเร็วสามารถเปลี่ยนทิศทางได้

ในภาษาโปรแกรมหมายความว่าเมื่อคุณดำเนินการคำสั่งจะไม่มีอะไรเกิดขึ้นนอกจากคำสั่งนั้น (สำคัญมากสำหรับการดีบัก)

นอกจากนี้ยังมีความหมายเฉพาะเมื่อพูดถึงชุดคำสั่ง


คำตอบนี้ทำให้ฉันนึกถึงทฤษฎี "superposition" จากสัญญาณและระบบ
Özgür

1
คำอธิบายที่ชัดเจนมากเกี่ยวกับการใช้งานที่แตกต่างกันของคำนี้: c2.com/cgi/wiki?DefinitionOfOrthogonal
Lorenzo Solano

ดังนั้นการเขียนโปรแกรมเชิงฟังก์ชันจึงตั้งฉากกันอย่างสมบูรณ์หรือไม่?
corazza

นั่นเป็นคำถามที่น่าสนใจ @yannbane ในทางทฤษฎีอาจเป็นจริงขึ้นอยู่กับภาษาเชิงทฤษฎี ในทางปฏิบัติไม่แม้แต่ภาษาที่ใช้งานได้ก็มีวิธีเปลี่ยนสถานะ
ครอส

1
ฉันพนันได้เลยว่าตัวอย่างเฮลิคอปเตอร์มาจาก "Pragmatic Programmer" :)
Sreekanth Karumanaghat

36

จาก"Art of UNIX programming" ของ Eric S. Raymond

Orthogonality เป็นคุณสมบัติที่สำคัญที่สุดอย่างหนึ่งที่สามารถช่วยให้การออกแบบที่ซับซ้อนมีขนาดกะทัดรัด ในการออกแบบที่ตั้งฉากกันหมดจดการดำเนินการไม่มีผลข้างเคียง แต่ละการกระทำ (ไม่ว่าจะเป็นการเรียก API การเรียกมาโครหรือการทำงานของภาษา) จะเปลี่ยนแปลงเพียงสิ่งเดียวโดยไม่ส่งผลกระทบต่อผู้อื่น มีวิธีเดียวและวิธีเดียวในการเปลี่ยนแปลงคุณสมบัติของระบบที่คุณควบคุมอยู่


16

คิดว่ามันสามารถเปลี่ยนแปลงสิ่งหนึ่งโดยไม่ส่งผลกระทบที่มองไม่เห็นในอีกส่วนหนึ่ง


12

หากคุณมีชุดของโครงสร้าง ภาษาจะกล่าวว่าเป็นมุมฉากหากอนุญาตให้โปรแกรมเมอร์ผสมโครงสร้างเหล่านี้ได้อย่างอิสระ ตัวอย่างเช่นใน C คุณไม่สามารถส่งคืนอาร์เรย์ (อาร์เรย์แบบคงที่) 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.

จริงๆแล้วฉันเห็นสิ่งนี้ในหนังสือของฉันและยังไม่เข้าใจว่ามันคืออะไร
AhmetB - Google

ฮ่า ๆ ฉันใช้หนังสือเล่มนี้และเห็นคำถามนี้ในแบบทดสอบออนไลน์ของหนังสือเล่มนี้ ช่างเป็นเรื่องบังเอิญ บางทีฉันควรอ่านบทแรกด้วย
AhmetB - Google

2
กล่าวง่ายๆว่าการส่งคืนและอาร์เรย์มีความซับซ้อนมากขึ้นเมื่อรวมเข้าด้วยกัน: คุณไม่สามารถใช้การส่งคืนรอบอาร์เรย์โดยไม่ต้องคำนึงถึงปฏิสัมพันธ์ระหว่างพวกเขา ตามหลักการแล้วคุณจะรู้ว่าการส่งคืนหมายถึงอะไรและอาร์เรย์คืออะไรดังนั้นคุณจะรู้ว่าอาร์เรย์ที่ส่งคืนจะทำอะไรได้บ้าง แต่จริงๆแล้วมันซับซ้อนกว่านั้นเนื่องจาก C เปิดเผยรายละเอียดการใช้งานเกี่ยวกับอาร์เรย์ (และการส่งคืน)
Lee B

ความรู้สึกของ "มุมฉาก" นี้ครอบคลุมโดย: en.wikipedia.org/wiki/Orthogonality_( การเขียนโปรแกรม)แต่เป็นหน้าใหม่ที่มีเนื้อหาเพียงเล็กน้อย
outis

1
นี่คือคำตอบที่ "ถูกต้องกว่า" เกี่ยวกับการตั้งฉากในบริบทของการเขียนโปรแกรม "orthogonality" หมายความว่าโครงสร้างการเขียนโปรแกรมสามารถผสมกับโครงสร้างอื่น ๆ ได้และความหมายจะยังคงเหมือนเดิม
treecoder

11

โดยทั่วไปมุมฉากคือความสัมพันธ์ระหว่างสองสิ่งที่มีผลกระทบต่อกันและกันน้อยที่สุด

คำศัพท์นี้มาจากคณิตศาสตร์โดยเวกเตอร์สองตัวตั้งฉากกันถ้ามันตัดกันเป็นมุมฉาก

ลองนึกถึงสเปซคาร์ทีเซียน 2 มิติทั่วไป (กริดทั่วไปที่มีแกน X / Y) พล็อตสองบรรทัด: x = 1 และ y = 1 เส้นสองเส้นตั้งฉากกัน คุณสามารถเปลี่ยน x = 1 ได้โดยการเปลี่ยน x ซึ่งจะไม่มีผลกับอีกบรรทัดและในทางกลับกัน

ในซอฟต์แวร์สามารถใช้คำนี้ได้อย่างเหมาะสมในสถานการณ์ที่คุณกำลังพูดถึงสองส่วนของระบบที่ทำงานเป็นอิสระจากกัน


5

คำตอบส่วนใหญ่ยืดยาวและคลุมเครือด้วยซ้ำ ประเด็นคือ: ถ้าเครื่องมือตั้งฉากกันก็สามารถเพิ่มเปลี่ยนหรือถอดออกได้เพื่อประโยชน์ของเครื่องมือที่ดีกว่าโดยไม่ต้องขันทุกอย่างให้หมด

ความแตกต่างระหว่างช่างไม้ที่มีค้อนและเลื่อยซึ่งสามารถใช้สำหรับการตอกหรือเลื่อยหรือมีคำสั่งผสมค้อน / เลื่อยแบบใหม่ซึ่งออกแบบมาเพื่อเลื่อยไม้แล้วตอกเข้าด้วยกัน อย่างใดอย่างหนึ่งจะใช้ได้กับการเลื่อยแล้วตอกเข้าด้วยกัน แต่ถ้าคุณได้รับงานบางอย่างที่ต้องใช้เลื่อย แต่ไม่ใช้ค้อนก็จะใช้ได้เฉพาะเครื่องมือที่ตั้งฉากกันเท่านั้น ในทำนองเดียวกันหากคุณต้องการใช้สกรูแทนการใช้ค้อนคุณไม่จำเป็นต้องทิ้งเลื่อยหากค้อนของคุณตั้งฉากกัน (ไม่ปะปนกับ)

ตัวอย่างคลาสสิกคือเครื่องมือบรรทัดคำสั่ง unix: คุณมีเครื่องมือหนึ่งสำหรับรับเนื้อหาของดิสก์ (dd) อีกตัวสำหรับกรองบรรทัดจากไฟล์ (grep) อีกอันสำหรับเขียนบรรทัดเหล่านั้นไปยังไฟล์ (cat) เป็นต้นสิ่งเหล่านี้ ทั้งหมดสามารถผสมและจับคู่ได้ตามต้องการ


2

ในขณะที่พูดถึงการตัดสินใจโครงการเกี่ยวกับภาษาโปรแกรมอาจมองว่ามุมฉากเป็นเรื่องง่ายเพียงใดที่คุณจะคาดเดาสิ่งอื่น ๆ เกี่ยวกับภาษานั้นสำหรับสิ่งที่คุณเคยเห็นในอดีต

ตัวอย่างเช่นในหนึ่งภาษาคุณสามารถมี:

str.split

สำหรับการแยกสตริงและ

len (STR)

สำหรับการรับความยาว

ในภาษาที่มีมุมฉากมากขึ้นคุณจะใช้ str.x หรือ x (str) เสมอ

เมื่อคุณจะโคลนวัตถุหรือทำสิ่งอื่นใดคุณจะรู้ว่าควรใช้หรือไม่

โคลน (obj)

หรือ

obj.clone

นั่นเป็นหนึ่งในประเด็นหลักของภาษาโปรแกรมที่ตั้งฉากกัน นั่นเป็นการหลีกเลี่ยงไม่ให้คุณปรึกษาคู่มือหรือถามใครสักคน

บทความวิกิพีเดียพูดเพิ่มเติมเกี่ยวกับมุมฉากในการออกแบบที่ซับซ้อนหรือภาษาระดับต่ำ ตามที่มีคนแนะนำไว้ข้างต้นในความคิดเห็นหนังสือ Sebesta พูดถึงมุมฉาก

ถ้าฉันจะใช้เพียงประโยคเดียวฉันจะบอกว่าภาษาโปรแกรมนั้นตั้งฉากกันเมื่อส่วนที่ไม่รู้จักทำหน้าที่ตามที่คาดไว้ตามสิ่งที่คุณเห็น หรือ ... ไม่น่าแปลกใจ

;)


คำตอบนี้ไม่สอดคล้องกับผู้อื่น สิ่งนี้อ้างถึงความสอดคล้องกันระหว่างการเรียกใช้ฟังก์ชันหรือโครงสร้างโดยรวมในทางตรงกันข้ามกับคำอื่น ๆ ที่อยู่ในแนว "การมีเพศสัมพันธ์น้อย" หรือ "การไม่มีผลข้างเคียง"
Özgür

นี่คือการใช้งานที่ฉันมักจะได้ยิน ฉันคิดว่าเหตุผลที่มันตั้งฉากกันก็คือถ้าคุณมี X ToString และ X.GetType คุณสามารถเปลี่ยนอ็อบเจกต์ได้และไวยากรณ์ก็เหมือนกันหรือคุณสามารถเปลี่ยนฟังก์ชันและไวยากรณ์ก็เหมือนกัน วัตถุไม่ขึ้นอยู่กับฟังก์ชัน
dwidel

1

จากวิกิพีเดีย :

วิทยาศาสตร์คอมพิวเตอร์

Orthogonality เป็นคุณสมบัติในการออกแบบระบบที่เอื้อต่อความเป็นไปได้และความกะทัดรัดของการออกแบบที่ซับซ้อน Orthogonality รับประกันว่าการปรับเปลี่ยนเอฟเฟกต์ทางเทคนิคที่เกิดจากส่วนประกอบของระบบทั้งไม่สร้างหรือแพร่กระจายผลข้างเคียงไปยังส่วนประกอบอื่น ๆ ของระบบ พฤติกรรมที่เกิดขึ้นใหม่ของระบบที่ประกอบด้วยส่วนประกอบควรได้รับการควบคุมอย่างเคร่งครัดโดยคำจำกัดความที่เป็นทางการของตรรกะและไม่ใช่จากผลข้างเคียงที่เกิดจากการผสานรวมที่ไม่ดีเช่นการออกแบบโมดูลและอินเทอร์เฟซที่ไม่เป็นมุมฉาก Orthogonality ช่วยลดเวลาในการทดสอบและการพัฒนาเนื่องจากง่ายต่อการตรวจสอบการออกแบบที่ไม่ก่อให้เกิดผลข้างเคียงหรือขึ้นอยู่กับพวกเขา

ตัวอย่างเช่นรถยนต์มีส่วนประกอบและส่วนควบคุมที่ตั้งฉากกัน (เช่นการเร่งความเร็วของรถจะไม่ส่งผลต่อสิ่งอื่นใดนอกจากส่วนประกอบที่เกี่ยวข้องกับฟังก์ชันเร่งความเร็วเท่านั้น) ในทางกลับกันการออกแบบที่ไม่ตั้งฉากกันอาจทำให้พวงมาลัยมีผลต่อการเบรก (เช่นระบบควบคุมเสถียรภาพแบบอิเล็กทรอนิกส์) หรือปรับความเร็วของระบบกันสะเทือน 1ดังนั้นการใช้งานนี้จึงถูกมองว่ามาจากการใช้มุมฉากในคณิตศาสตร์: เราอาจฉายเวกเตอร์ไปยังพื้นที่ย่อยโดยการฉายภาพลงบนสมาชิกแต่ละชุดของเวกเตอร์พื้นฐานแยกกันและเพิ่มเส้นโครงถ้าเป็นเวกเตอร์พื้นฐานเท่านั้น มีมุมฉากซึ่งกันและกัน

ชุดคำสั่งถูกกล่าวว่าเป็นมุมฉากหากคำสั่งใด ๆ สามารถใช้รีจิสเตอร์ในโหมดการกำหนดแอดเดรสใด ๆ คำศัพท์นี้เป็นผลมาจากการพิจารณาคำสั่งเป็นเวกเตอร์ที่มีส่วนประกอบเป็นฟิลด์คำสั่ง ฟิลด์หนึ่งระบุการลงทะเบียนที่จะดำเนินการและอีกฟิลด์หนึ่งระบุโหมดการกำหนดแอดเดรส ชุดคำสั่งมุมฉากจะเข้ารหัสชุดค่าผสมของรีจิสเตอร์และโหมดแอดเดรสทั้งหมดโดยไม่ซ้ำกัน


โอ้ขอบคุณฉันเพิ่งไปเยี่ยมต้นขั้วนี้en.wikipedia.org/wiki/Orthogonality_%28programming%29 ขออภัย
AhmetB - Google

1

จากWikipedia :

Orthogonality เป็นคุณสมบัติในการออกแบบระบบที่เอื้อต่อความเป็นไปได้และความกะทัดรัดของการออกแบบที่ซับซ้อน Orthogonality รับประกันว่าการปรับเปลี่ยนเอฟเฟกต์ทางเทคนิคที่เกิดจากส่วนประกอบของระบบทั้งไม่สร้างหรือแพร่กระจายผลข้างเคียงไปยังส่วนประกอบอื่น ๆ ของระบบ พฤติกรรมที่เกิดขึ้นใหม่ของระบบที่ประกอบด้วยส่วนประกอบควรได้รับการควบคุมอย่างเคร่งครัดโดยคำจำกัดความที่เป็นทางการของตรรกะและไม่ใช่จากผลข้างเคียงที่เกิดจากการผสานรวมที่ไม่ดีเช่นการออกแบบโมดูลและอินเทอร์เฟซที่ไม่เป็นมุมฉาก Orthogonality ช่วยลดเวลาในการทดสอบและการพัฒนาเนื่องจากง่ายต่อการตรวจสอบการออกแบบที่ไม่ก่อให้เกิดผลข้างเคียงหรือขึ้นอยู่กับพวกเขา

ตัวอย่างเช่นรถยนต์มีส่วนประกอบและส่วนควบคุมที่ตั้งฉากกัน (เช่นการเร่งความเร็วของรถจะไม่ส่งผลต่อสิ่งอื่นใดนอกจากส่วนประกอบที่เกี่ยวข้องกับฟังก์ชันเร่งความเร็วเท่านั้น) ในทางกลับกันการออกแบบที่ไม่ตั้งฉากกันอาจทำให้พวงมาลัยมีผลต่อการเบรก (เช่นระบบควบคุมเสถียรภาพแบบอิเล็กทรอนิกส์) หรือปรับความเร็วของระบบกันสะเทือน [1] ดังนั้นการใช้งานนี้จึงถูกมองว่ามาจากการใช้มุมฉากในคณิตศาสตร์: หนึ่งอาจฉายเวกเตอร์ไปยังพื้นที่ย่อยโดยการฉายภาพไปยังสมาชิกแต่ละชุดของเวกเตอร์พื้นฐานแยกกันและเพิ่มเส้นโครงถ้าเวกเตอร์พื้นฐานเป็น มุมฉากซึ่งกันและกัน

ชุดคำสั่งถูกกล่าวว่าเป็นมุมฉากหากคำสั่งใด ๆ สามารถใช้รีจิสเตอร์ในโหมดการกำหนดแอดเดรสใด ๆ คำศัพท์นี้เป็นผลมาจากการพิจารณาคำสั่งเป็นเวกเตอร์ที่มีส่วนประกอบเป็นฟิลด์คำสั่ง ฟิลด์หนึ่งระบุการลงทะเบียนที่จะดำเนินการและอีกฟิลด์หนึ่งระบุโหมดการกำหนดแอดเดรส ชุดคำสั่งมุมฉากจะเข้ารหัสชุดค่าผสมของรีจิสเตอร์และโหมดแอดเดรสทั้งหมดโดยไม่ซ้ำกัน

ในแง่ที่ง่ายที่สุดเท่าที่จะเป็นไปได้สองสิ่งคือการตั้งฉากกันถ้าการเปลี่ยนแปลงอย่างใดอย่างหนึ่งไม่มีผลต่ออีกสิ่งหนึ่ง


1

ในฐานะตัวอย่างของการขาดมุมฉากในภาษาระดับสูงให้พิจารณากฎและข้อยกเว้นต่อไปนี้ในภาษา C แม้ว่า C จะมีประเภทข้อมูลที่มีโครงสร้างอยู่ 2 ประเภทอาร์เรย์และระเบียน (โครงสร้าง) สามารถส่งคืนระเบียนจากฟังก์ชันได้ แต่อาร์เรย์ไม่สามารถส่งคืนได้ สมาชิกของโครงสร้างสามารถเป็นชนิดข้อมูลใดก็ได้ยกเว้นโมฆะหรือโครงสร้างประเภทเดียวกัน องค์ประกอบอาร์เรย์สามารถเป็นชนิดข้อมูลใดก็ได้ยกเว้นโมฆะหรือฟังก์ชัน พารามิเตอร์จะถูกส่งผ่านด้วยค่าเว้นแต่ว่าจะเป็นอาร์เรย์ซึ่งในกรณีนี้จะมีผลส่งต่อโดยการอ้างอิง (เนื่องจากลักษณะของชื่ออาร์เรย์ที่ไม่มีตัวห้อยในโปรแกรม C ถูกตีความว่าเป็นที่อยู่ขององค์ประกอบแรกของอาร์เรย์)


0

ในภาษาโปรแกรมจะกล่าวถึงคุณลักษณะของภาษาในการเขียนโปรแกรมว่าตั้งฉากกันหากมีขอบเขตโดยไม่มีข้อ จำกัด (หรือข้อยกเว้น) ตัวอย่างเช่นในฟังก์ชัน Pascal ไม่สามารถส่งคืนประเภทที่มีโครงสร้างได้ นี่คือข้อ จำกัด ในการส่งคืนค่าจากฟังก์ชัน ดังนั้นเราจึงถือว่าเป็นลักษณะที่ไม่ตั้งฉากกัน ;)


0

Orthogonality ในการเขียนโปรแกรม:

Orthogonality เป็นแนวคิดที่สำคัญโดยกล่าวถึงวิธีการรวมส่วนประกอบจำนวนค่อนข้างน้อยในหลายวิธีเพื่อให้ได้ผลลัพธ์ที่ต้องการ มันเกี่ยวข้องกับความเรียบง่าย ยิ่งการออกแบบตั้งฉากกันมากเท่าไหร่ข้อยกเว้นก็ยิ่งน้อยลงเท่านั้น ทำให้ง่ายต่อการเรียนรู้อ่านและเขียนโปรแกรมในภาษาโปรแกรม ความหมายของลักษณะมุมฉากนั้นไม่ขึ้นกับบริบท พารามิเตอร์หลักคือความสมมาตรและความสม่ำเสมอ (ตัวอย่างเช่นตัวชี้เป็นแนวคิดที่ตั้งฉากกัน)

จากWikipedia


0

Orthogonality ในภาษาโปรแกรมหมายความว่าชุดของโครงสร้างดั้งเดิมที่ค่อนข้างเล็กสามารถรวมเข้าด้วยกันได้หลายวิธีในการสร้างโครงสร้างการควบคุมและข้อมูลของภาษา นอกจากนี้การรวมกันของสิ่งดั้งเดิมที่เป็นไปได้ทุกอย่างล้วนถูกกฎหมายและมีความหมาย ตัวอย่างเช่นพิจารณาประเภทข้อมูล สมมติว่าภาษาหนึ่งมีประเภทข้อมูลดั้งเดิมสี่ประเภท (จำนวนเต็มทศนิยมคู่และอักขระ) และตัวดำเนินการสองประเภท (อาร์เรย์และตัวชี้) หากสามารถนำตัวดำเนินการสองประเภทไปใช้กับตัวเองและประเภทข้อมูลดั้งเดิมทั้งสี่ชนิดสามารถกำหนดโครงสร้างข้อมูลจำนวนมากได้ ความหมายของคุณลักษณะภาษามุมฉากนั้นไม่ขึ้นอยู่กับบริบทของลักษณะที่ปรากฏในโปรแกรม (คำว่ามุมฉากมาจากแนวคิดทางคณิตศาสตร์ของเวกเตอร์มุมฉากซึ่งเป็นอิสระจากกัน ) Orthogonality ตามมาจากความสมมาตรของความสัมพันธ์ระหว่างพื้นฐาน การขาดมุมฉากนำไปสู่ข้อยกเว้นของกฎของภาษา ตัวอย่างเช่นในภาษาโปรแกรมที่รองรับพอยน์เตอร์ควรกำหนดพอยน์เตอร์เพื่อชี้ไปยังประเภทเฉพาะที่กำหนดในภาษานั้น ๆ อย่างไรก็ตามหากพอยน์เตอร์ไม่ได้รับอนุญาตให้ชี้ไปที่อาร์เรย์ก็ไม่สามารถกำหนดโครงสร้างข้อมูลที่ผู้ใช้กำหนดที่เป็นประโยชน์ได้ เราสามารถแสดงให้เห็นถึงการใช้มุมฉากเป็นแนวคิดในการออกแบบโดยเปรียบเทียบลักษณะหนึ่งของภาษาแอสเซมบลีของคอมพิวเตอร์เมนเฟรม IBM และมินิคอมพิวเตอร์ซีรีส์ VAX เราพิจารณาสถานการณ์ง่ายๆเพียงอย่างเดียว: การเพิ่มค่าจำนวนเต็ม 32 บิตสองค่าที่อยู่ในหน่วยความจำหรือรีจิสเตอร์และแทนที่หนึ่งในสองค่าด้วยผลรวม เมนเฟรมของ IBM มีคำสั่งสองคำสั่งสำหรับวัตถุประสงค์นี้

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 ยังเรียนรู้ได้ยากกว่าเนื่องจากข้อ จำกัด และคำสั่งเพิ่มเติม Orthogonality มีความสัมพันธ์อย่างใกล้ชิดกับความเรียบง่าย: ยิ่งการออกแบบภาษามีมุมฉากมากเท่าไหร่กฎของภาษาก็ยิ่งต้องการข้อยกเว้นน้อยลงเท่านั้น ข้อยกเว้นที่น้อยลงหมายถึงความสม่ำเสมอในการออกแบบในระดับที่สูงขึ้นซึ่งทำให้ภาษาเรียนรู้อ่านและเข้าใจได้ง่ายขึ้น ใครก็ตามที่ได้เรียนรู้ส่วนสำคัญของภาษาอังกฤษสามารถเป็นพยานถึงความยากลำบากในการเรียนรู้ข้อยกเว้นกฎมากมาย (เช่น i ก่อน e ยกเว้นหลัง c)


0

Orthogonality หมายถึงระดับที่ภาษาประกอบด้วยชุดของโครงสร้างดั้งเดิมที่เป็นอิสระซึ่งสามารถรวมกันได้ตามความจำเป็นเพื่อแสดงโปรแกรม คุณลักษณะต่างๆจะตั้งฉากกันหากไม่มีข้อ จำกัด ว่าจะรวมเข้าด้วยกันอย่างไร

Example : non-orthogonality

PASCAL: ฟังก์ชันไม่สามารถส่งคืนประเภทที่มีโครงสร้างได้ ภาษาที่ใช้งานได้มีมุมฉากสูง


0

แนวคิดพื้นฐานของการตั้งฉากคือสิ่งที่ไม่เกี่ยวข้องกับแนวคิดไม่ควรเกี่ยวข้องในระบบ บางส่วนของสถาปัตยกรรมที่ไม่มีส่วนเกี่ยวข้องกับส่วนอื่น ๆ เช่นฐานข้อมูลและ UI ไม่จำเป็นต้องเปลี่ยนแปลงร่วมกัน การเปลี่ยนแปลงหนึ่งไม่ควรทำให้เกิดการเปลี่ยนแปลงไปสู่อีกสิ่งหนึ่ง


-5

ตรวจสอบความตรงของเมทริกซ์:

Orthogonality อาจเกี่ยวข้องกับเมทริกซ์

Matrix *(transpose of matrix)= identity matrix. 

คลิกลิงก์ด้านล่างเพื่อดูวิดีโอ YouTube เกี่ยวกับ Orthogonality
https://youtu.be/tNekLaxnfW8


คำถามชัดเจนเกี่ยวกับการเขียนโปรแกรม
aggsol
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.