Frage

Was bedeutet „Orthogonalität“ bedeuten, wenn man über Programmiersprachen reden?

Was sind einige Beispiele für Orthogonality?

War es hilfreich?

Lösung

Orthogonality ist die Eigenschaft, dass Mittel "Ändern A nicht B ändern". Ein Beispiel für ein orthogonales System würde ein Radio sein, wo die Station nicht ändert das Volumen und umgekehrt ändert.

Ein nicht-orthogonales System wie ein Hubschrauber sein würde, wo die Geschwindigkeit zu ändern, die Richtung ändern kann.

In Programmiersprachen bedeutet dies, dass, wenn Sie eine Anweisung, nichts ausführen, aber dieser Befehl geschieht (sehr wichtig für das Debuggen).

Es gibt auch eine spezielle Bedeutung, wenn es um Befehlssätze .

Andere Tipps

Von Eric S. Raymonds "Art of UNIX-Programmierung"

  

ist Orthogonality eine der wichtigsten Eigenschaften, die auch komplexe Designs kompakt helfen können. In einem rein orthogonalen Design haben Operationen keine Nebenwirkungen; jede Aktion (ob es ein API-Aufruf, ein Makro-Aufruf oder ein Sprachbetrieb) ändert sich nur eine Sache, ohne andere zu beeinflussen. Es gibt eine und nur eine Möglichkeit, jede Eigenschaft zu ändern, was auch immer System, das Sie steuern.

Denken Sie daran, in der Lage zu sein, eine Sache zu ändern, ohne dass ein unbemerkten auf einem anderen Teil beeinflussen zu müssen.

Im Großen und Ganzen Orthogonalität ist eine Beziehung zwischen zwei Dingen, so dass sie einander nur minimale Auswirkungen haben.

Der Begriff stammt aus der Mathematik, wo zwei Vektoren orthogonal sind, wenn sie im rechten Winkel kreuzen.

Denken Sie an einem typischen 2-dimensionalen kartesischen Raum (typisches Raster mit X / Y-Achse). Plotten zwei Zeilen: x = 1 und y = 1 ist. Die beiden Linien sind orthogonal. Sie können x = 1 x ändern durch Ändern, und dies wird keine Auswirkungen auf die anderen Linie haben, und umgekehrt.

In der Software kann der Begriff in geeigneter Weise in Situationen eingesetzt werden, wo Sie zwei Teile eines Systems reden, die unabhängig voneinander verhalten.

Wenn Sie eine Reihe von Konstrukten haben. Ein Langauge wird gesagt, dass orthogonal , wenn sie ermöglicht es dem Programmierer diese Konstrukte frei zu mischen. Zum Beispiel in C können Sie nicht ein Array (statisches Array) zurückgibt, wird C sagt seinen unorthognal in diesem Fall:

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.

Die meisten Antworten sind sehr langatmig und sogar verschleiern. Der Punkt ist:. Wenn ein Werkzeug orthogonal ist, kann er hinzugefügt, ersetzt oder entfernt werden, für bessere Werkzeuge, ohne alles Verschrauben sonst bis

Es ist der Unterschied zwischen einem Schreiner einen Hammer und eine Säge, die für Hämmern oder Sägen verwendet werden kann, oder eine neumodische Hammer / Säge-Combo mit, die Säge Holz ausgelegt ist, es dann zusammen hämmern. Entweder arbeiten zum Sägen und dann zusammen Hämmern, aber wenn man eine bestimmte Aufgabe erhalten, die Sägen erfordert, aber nicht Hämmern, dann werden nur die orthogonale Werkzeuge funktionieren. Ebenso, wenn Sie anstelle von Hämmern schrauben müssen, werden Sie nicht brauchen Ihre Säge wegzuwerfen, wenn sie orthogonal ist (nicht mit gemischt) Hammer.

Das klassische Beispiel ist Tools Unix-Kommandozeile: Sie haben ein Werkzeug für das Erhalten des Inhalts einer Festplatte (dd), eine andere zum Filtern Zeilen aus der Datei (grep), eine andere für diese Zeilen in eine Datei (cat) zu schreiben, etc. Diese können alle sein, gemischt und abgestimmt nach Belieben.

wikipedia :

Informatik

Orthogonality ist eine System-Design-Eigenschaft erleichternde Machbarkeit und Kompaktheit von komplexen Design. Orthogonalität garantiert, dass die technische Wirkung Modifizierung durch eine Komponente eines Systems erzeugt weder erzeugt noch pflanzt Nebenwirkungen mit anderen Komponenten des Systems. Das emergent Verhalten eines System, bestehend aus Komponenten sollte streng durch formale Definitionen seiner Logik und nicht durch Nebenwirkungen von schlechter Integration resultierenden gesteuert werden, das heißt nicht-orthogonale Anordnung der Module und Schnittstellen. Orthogonality reduziert Test- und Entwicklungszeit, weil es einfacher ist, Designs zu verifizieren, dass weder Ursache Nebenwirkungen noch von ihnen abhängig sind.

Zum Beispiel hat ein Auto orthogonale Komponenten und Steuerungen (z Beschleunigen des Fahrzeugs beeinflussen nichts anderes als die ausschließlich beteiligten Komponenten mit der Beschleunigungsfunktion). Auf der anderen Seite wird ein nicht-orthogonales Design haben könnte seinen Lenk seine Brems (zB elektronische Stabilitätskontrolle) beeinflussen, oder die Geschwindigkeit ihre Aufhängung zwicken. 1 Folglich ist diese Verwendung von der Verwendung von orthogonalen in der Mathematik abgeleitet gesehen werden: Man kann einen Vektor auf einen Unterraum projiziert, indem es auf jedes Mitglied eines Satzes von Basisvektoren separat projizieren und das Hinzufügen der Vorsprünge, wenn und nur wenn die Basisvektoren sind zueinander orthogonal.

ein Befehlssatz wird gesagt, orthogonal sein, wenn eine Anweisung eines beliebiges Register in jedem Adressierungsmodus verwenden. Diese Terminologie resultiert aus der Betrachtung sind eine Anweisung als ein Vektor, dessen Komponenten die Befehlsfelder. Ein Feld identifiziert die Register betrieben werden, auf, und ein anderer Spezifiziert den Adressierungsmodus. Ein orthogonaler Anweisungssatz codiert eindeutig alle Kombinationen von Registern und Adressierungsmodi.

Wikipedia :

  

Orthogonality ist ein System-Design   Immobilien erleichternde Machbarkeit und   Kompaktheit von komplexen Designs.   Orthogonality garantiert, dass   Modifizieren der technischen Wirkung   durch eine Komponente eines Systems erzeugten   weder erzeugt noch ausbreitet Seiten   Auswirkungen auf andere Komponenten des   System. Das austretende Verhalten eines   System, bestehend aus Komponenten sollten   werden streng formal kontrolliert   Definitionen der Logik und nicht durch   Nebenwirkungen aus armen resultierenden   Integration, das heißt nicht-orthogonal   Design von Modulen und Schnittstellen.   Orthogonality reduziert Tests und   Entwicklungszeit, weil es einfacher ist,   um zu überprüfen, Entwürfe, dass weder Ursache   Nebenwirkungen noch von ihnen abhängig.

     

Zum Beispiel, ein Auto hat orthogonal   (Komponenten und Steuerungen z.B.   Beschleunigen des Fahrzeugs nicht   Einfluss etwas anderes als die   beteiligten Komponenten ausschließlich mit   die Beschleunigungsfunktion). Auf der   Andererseits ist ein nicht-orthogonales Design   vielleicht haben seine Lenkung ihren Einfluss   Bremsen (z.B. elektronische Stabilitäts   Kontrolle) oder seine Geschwindigkeit zwicken ihre   Suspension [1]. Somit ist diese   Nutzung ist gesehen von der abgeleitet werden   Verwendung von orthogonalen in der Mathematik: Ein   einen Vektor auf einen Unterraum kann projizieren   indem sie auf jedes Mitglied eines Projizieren   Satz von Basisvektoren und separat   Hinzufügen der Vorsprünge, wenn und nur wenn   die Basisvektoren schließen sich gegenseitig   orthogonal.

     

Ein Befehlssatz wird gesagt, dass   orthogonal, wenn eine Anweisung verwenden   registriert jede in jedem Adressierungsmodus.   Diese Terminologie ergibt sich aus   eine Anweisung als ein Vektor unter Berücksichtigung   der Komponenten der Befehl   Felder. Ein Feld identifiziert die   Register werden operiert, und   eine andere gibt den Adressierungsmodus.   Ein orthogonaler Anweisungssatz eindeutig   codiert alle Kombinationen von Registern   und Adressierungsarten.

Um es in einfachen Worten ausgedrückt stellt möglich, zwei Dinge orthogonal sind, wenn man Veränderung keine Auswirkung auf den anderen hat.

Während über Projektentscheidungen auf Programmiersprachen reden, Orthogonalität wie zu sehen ist, wie einfach ist für Sie andere Dinge über diese Sprache prognostizieren für das, was Sie in der Vergangenheit gesehen haben.

Zum Beispiel, in einer Sprache können Sie haben:

  

str.split

zum Spalten einer Zeichenfolge und

  

len (str)

für die Länge zu bekommen.

Auf einer Sprache mehr orthogonal, würden Sie immer str.x verwenden oder x (str).

Wenn Sie sich ein Objekt klonen oder irgendetwas anderes tun, würden Sie wissen, ob die Verwendung

  

Klon (obj)

oder

  

obj.clone

Das ist, einer der wichtigsten Punkte auf Programmiersprachen orthogonal zu sein. Das vermeidet Sie das Handbuch oder fragen Sie jemanden zu konsultieren.

Wikipedia-Artikel spricht mehr über Orthogonalität auf komplexe Designs oder niedrigen Niveau Sprachen. Als jemand oben auf einen Kommentar vorgeschlagen, die Sebesta Buch spricht sauber über Orthogonalität.

Wenn ich nur einen Satz verwenden würde, würde ich sagen, dass eine Programmiersprache orthogonal ist, wenn seine unbekannte Teile wie erwartet wirken auf das, was Sie gesehen haben. Oder ... keine Überraschungen.

;)

Orthogonality in Programmierung:

  

Orthogonality ist ein wichtiges Konzept, Adressierung, wie eine relativ kleine Anzahl von Komponenten in einer relativ kleinen Anzahl von Möglichkeiten kombiniert werden kann, um die gewünschten Ergebnisse zu erzielen. Es ist mit Einfachheit verbunden ist; desto mehr orthogonal das Design, desto weniger Ausnahmen. Dies macht es einfacher zu lernen, lesen und schreiben Programme in einer Programmiersprache. Die Bedeutung einer orthogonalen Funktion ist unabhängig von Kontext; Die wichtigsten Parameter sind Symmetrie und Konsistenz (beispielsweise ein Zeiger ist eine orthogonale Konzept).

Wikipedia

In Programmiersprachen eine Programmiersprache Funktion soll orthogonal sein, wenn es ohne Einschränkungen (oder Ausnahmen) begrenzt ist.  Zum Beispiel kann in Pascal Funktionen nicht zurückgeben strukturierte Typen. Dies ist eine Beschränkung der Werte von einer Funktion zurückkehrt. Deshalb wird man es als nicht-orthogonal Merkmal betrachtet. ;)

Als Beispiele für den Mangel an Orthogonalität in einer Hochsprache, die folgenden Regeln und Ausnahmen in C betrachten Obwohl C zwei Arten von strukturierten Datentypen hat, Arrays und Records (structs) können Datensätze aus Funktionen zurückgegeben werden, aber Arrays können nicht. Ein Mitglied einer Struktur kann eine beliebigen Datentyp außer Hohlraum oder eine Struktur, von der gleichen Art sein. Ein Array-Element kann ein beliebiger Datentyp sein, außer Hohlraum oder einer Funktion. Parameter werden durch den Wert übergeben, wenn sie nicht-Arrays sind, in diesem Fall werden sie in der Tat als Referenz übergeben (weil das Aussehen eines Arrays Namen ohne Index in einem C-Programm interpretiert wird die Adresse des Feldes des ersten Elements zu sein)

Orthogonalität bedeutet das Grad, in dem die Sprache aus einer Menge von unabhängigen primitiven Konstrukten besteht, die nach Bedarf kombiniert werden können, um ein Programm zu exprimieren.     Funktionen sind orthogonal, wenn es keine Beschränkungen sind, wie sie kombiniert werden

Example : non-orthogonality

PASCAL: Funktionen können nicht strukturierte Typen zurück. Funktionale Sprachen sind sehr orthogonal.

Die Grundidee der Orthogonalität ist, dass die Dinge, die nicht vom Konzept her verwandt sind nicht im System bezogen werden. Teile der Architektur, die wirklich mit dem anderen nichts zu tun haben, wie zum Beispiel der Datenbank und der Benutzeroberfläche sollte nicht müssen gemeinsam geändert werden. Eine Änderung sollte man nicht für eine Änderung des anderen verursachen.

Orthogonalität in einer Programmiersprache bedeutet, dass eine relativ kleine Gruppe von primitive Konstrukte können in einer relativ kleinen Anzahl von Möglichkeiten kombiniert werden, um die Steuer- und Datenstrukturen der Sprache aufzubauen. Darüber hinaus jede Mög- lich Kombination von Primitiven ist legal und sinnvoll. Betrachten wir zum Beispiel Datentypen. Angenommen, eine Sprache hat vier primitive Datentypen (Integer, Float, Doppel-, und Zeichen) und zwei Typ-Operatoren (Array und Zeiger). Wenn die beiden Typ Betreiber können sie angewandt werden und die vier primitiven Datentypen, eine große Anzahl von Datenstrukturen definiert werden. Die Bedeutung einer orthogonalen Sprache-Funktion ist unabhängig von der Kontext seines Erscheinens in einem Programm. (Das Wort aus dem orthogonalen kommt mathematisches Konzept der orthogonalen Vektoren, die jeder unabhängig sind Sonstiges.) Orthogonalität folgt aus einer Symmetrie der Beziehungen zwischen primi- tiven. Ein Mangel an Orthogonalität führt zu Ausnahmen von den Regeln der Sprache. Zum Beispiel in einer Programmiersprache, die Zeiger unterstützt, soll es sein möglich, einen Zeiger auf Punkt auf irgendeinen spezifischen Typ in der Sprache definiert, zu definieren. Wenn jedoch Zeiger sind nicht viele potenziell nützliche benutzerdefinierte Datenstrukturen können nicht definiert werden, um Arrays zu Punkt erlaubt. Wir können den Einsatz von Orthogonalität als gestalterisches Konzept illustrieren Vergleichbarkeit ing einen Aspekt der Assemblersprachen der IBM Mainframe-Computer und die VAX Serie von Minicomputern. Wir betrachten eine einzige einfache Situation: Hinzufügen von zwei 32-Bit-Integer-Werte, die in jedem Speicher residieren oder Registern und einen der beiden Werte mit der Summe ersetzen. Der IBM-Mainframes hat zwei Anweisungen zu diesem Zweck, die die Formen

haben
A Reg1, memory_cell
AR Reg1, Reg2

Dabei gilt Reg1 und Reg2 repräsentieren Register. Die Semantik von diesen sind

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

Der VAX Additionsbefehl für 32-Bit-Integer-Wert

ADDL operand_1, operand_2

, deren Semantik

operand_2 ← contents(operand_1) + contents(operand_2)

In diesem Fall entweder Operand kann ein Register oder eine Speicherzelle sein. Der VAX-Befehlsentwurf ist orthogonal, dass ein einziger Befehl kann entweder Register oder Speicherzellen als die Operanden. Es gibt zwei Möglichkeiten, spezifizieren Operanden, die in allen möglichen Weisen kombiniert werden können. Das IBM-Design ist nicht orthogonal. Nur zwei von vier Operanden Kombinationen Möglichkeiten sind legal, und die beide erfordern unterschiedliche Anweisungen, A und AR. Das IBM-Design ist mehr eingeschränkt und daher weniger beschreibbar. Zum Beispiel können Sie nicht hinzufügen und zwei Werte speichern die Summe in einem Speicherplatz. Darüber hinaus ist die IBM Design ist schwieriger, weil die Beschränkungen und der zusätzlichen Unterrichts zu lernen. Orthogonalität ist eng mit Einfachheit im Zusammenhang: Je mehr die orthogonalen Entwurf einer Sprache, die weniger Ausnahmen die Sprachregeln erfordern. Weniger Ausnahmen bedeuten einen höheren Grad an Regelmäßigkeit in der Konstruktion, die das macht Sprache leichter zu lernen, lesen und verstehen. Jeder, der eine sig- gelernt hat nificant Teil der englischen Sprache kann sein auf die Schwierigkeit, zeugt von Lern viele Regel Ausnahmen (zum Beispiel i vor e außer nach c).

Überprüfen Orthogonalität von Matrizen:

Orthogonality kann auch in Bezug auf Matrizen,

Matrix *(transpose of matrix)= identity matrix. 

Klicken Sie auf den Link unten ein YouTube-Video auf Orthogonality anzuzeigen.
https://youtu.be/tNekLaxnfW8

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top