Question

Que signifie « orthogonalité » signifie quand on parle de langages de programmation?

Quels sont quelques exemples de orthogonalité?

Était-ce utile?

La solution

orthogonalité est la propriété qui signifie "Changer A ne change pas B". Un exemple d'un système orthogonal serait une radio, où le changement de la station ne change pas le volume et vice-versa.

Un système non orthogonal serait comme un hélicoptère où le changement de la vitesse peut changer la direction.

Dans les langages de programmation, cela signifie que lorsque vous exécutez une instruction, mais rien que l'instruction se produit (très important pour le débogage).

Il y a aussi une signification particulière en se référant à l'instruction règlera.

Autres conseils

De Eric S. Raymond "Art de la programmation UNIX"

  

orthogonalité est l'une des propriétés les plus importantes qui peuvent aider à faire des dessins complexes, même compact. Dans une conception purement orthogonale, les opérations ne sont pas d'effets secondaires; chaque action (que ce soit un appel d'API, une invocation macro, ou une opération linguistique) change juste une chose sans affecter les autres. Il y a une et une seule façon de changer chaque propriété de tout système que vous contrôlez.

Pensez-y a être capable de changer une chose sans avoir un effet invisible sur une autre partie.

De façon générale, orthogonalité est une relation entre deux choses telles qu'elles ont un effet minimal sur l'autre.

Le terme vient des mathématiques, où deux vecteurs sont orthogonaux si elles se coupent à angle droit.

Pensez à un 2 dimensions d'espace cartésien typique (vous grille typique avec des axes X / Y). Plot deux lignes: x = 1 et y = 1. Les deux lignes sont orthogonales. Vous pouvez changer x = 1 en changeant x, et cela n'a aucun effet sur l'autre ligne, et vice versa.

Dans le logiciel, le terme peut être utilisé de façon appropriée dans les situations où vous parlez de deux parties d'un système qui se comportent indépendamment les uns des autres.

Si vous avez un ensemble de constructions. Un langauge est dit orthogonale si elle permet au programmeur de mélanger ces constructions librement. Par exemple, en C vous ne pouvez pas retourner un tableau (tableau statique), C est dit unorthognal dans ce cas:

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.

La plupart des réponses sont très longue haleine, et même obscure. Le point est:. Si un outil est orthogonal, il peut être ajouté, remplacé ou retiré, en faveur de meilleurs outils, sans visser tout le reste jusqu'à

Il est la différence entre un charpentier ayant un marteau et une scie, qui peut être utilisé pour marteler ou sciage ou ayant un nouveau-fangled marteau / scie combo, qui est conçu pour scier du bois, puis marteler ensemble. Soit travaillera pour le sciage, puis marteler ensemble, mais si vous avez une tâche qui nécessite le sciage, mais pas marteler, seuls les outils orthogonaux fonctionnera. De même, si vous avez besoin de vis au lieu de marteler, vous aurez pas besoin de jeter votre scie, si elle est orthogonale (non mélangé avec) votre marteau.

L'exemple classique est des outils de ligne de commande unix: vous avez un outil pour obtenir le contenu d'un disque (dd), un autre pour filtrer les lignes du fichier (GREP), une autre pour écrire ces lignes dans un fichier (cat), etc. Ceux-ci peuvent tous être mélangés et combinés à volonté.

wikipedia :

Informatique

orthogonalité est une propriété de conception de systèmes facilitant la faisabilité et la compacité des modèles complexes. Orthogonalité garantit que la modification de l'effet technique produit par un composant d'un système ne crée ni ne se propage effets secondaires à d'autres composants du système. Le comportement émergent d'un système constitué de composants doit être contrôlée rigoureusement par définition formelle de sa logique et non pas par des effets secondaires résultant d'une mauvaise intégration, à savoir la conception non-orthogonal de modules et interfaces. Orthogonalité réduit le temps de test et de développement, car il est plus facile de vérifier les conceptions que ni causer des effets secondaires ni en dépendent.

Par exemple, une voiture a des composantes orthogonales et des commandes (par exemple le véhicule accélératrices n'influence rien d'autre que les composants impliqués exclusivement avec la fonction d'accélération). D'autre part, une conception non-orthogonale pourrait avoir sa direction influence son freinage (par exemple le contrôle de la stabilité électronique), ou sa vitesse tweak sa suspension. 1 par conséquent, cette utilisation est considérée comme étant dérivée de l'utilisation des orthogonale en mathématiques: on peut projeter un vecteur sur un sous-espace en projetant sur chaque élément d'un ensemble de vecteurs de base séparément et en ajoutant les projections si et seulement si les vecteurs de base sont orthogonaux entre eux.

Un jeu d'instructions est dite orthogonale si une instruction peut utiliser un registre dans un mode d'adressage. Cette terminologie résulte de l'examen d'une instruction en tant que vecteur dont les composantes sont les champs d'instruction. Un champ identifie les registres à opérer, et une autre spécifie le mode d'adressage. Une instruction unique code orthogonal mis toutes les combinaisons de registres et les modes d'adressage.

De Wikipedia :

  

orthogonalité est une conception de système   faisabilité et propriété facilitante   compacité des modèles complexes.   garantit que orthogonalité   la modification de l'effet technique   produit par un composant d'un système   ne crée ni ne se propage côté   effets à d'autres composants du   système. Le comportement émergent d'un   système constitué de composants doivent   être contrôlée strictement formelle   Définitions de sa logique et non par   effets secondaires résultant d'une mauvaise   l'intégration, à savoir la non-orthogonal   la conception des modules et interfaces.   Orthogonalité réduit les tests et   le temps de développement, car il est plus facile   pour vérifier les conceptions que ni la cause   effets secondaires ni dépendent.

     

Par exemple, une voiture a orthogonale   des composants et des commandes (par exemple,   l'accélération du véhicule ne   influence toute autre chose, mais la   composants impliqués exclusivement   la fonction d'accélération). Sur le   D'autre part, une conception non orthogonale   pourrait avoir sa direction influence son   freinage (par exemple la stabilité électronique   contrôle), ou sa vitesse ajuster son   suspension [1]. Par conséquent, cette   l'utilisation est considérée comme étant dérivée de la   utilisation de orthogonale en mathématiques: un   peut projeter un vecteur sur un sous-espace   en projetant sur chaque membre d'un   un ensemble de vecteurs de base séparément, et   l'addition des projections si et seulement si   les vecteurs de base sont mutuellement   orthogonal.

     

Un jeu d'instructions est dit   orthogonale si une instruction peut utiliser   un registre dans un mode d'adressage.   Cette terminologie résulte de   l'examen d'une instruction en tant que vecteur   dont les composantes sont l'instruction   des champs. Un champ identifie le   registres à opérer, et   une autre spécifie le mode d'adressage.   Une instruction orthogonal défini de manière unique   encode toutes les combinaisons de registres   et les modes d'adressage.

Pour le dire dans les termes les plus simples possibles, deux choses sont orthogonales si le changement n'a pas d'effet un sur l'autre.

Tout en parlant de décisions du projet sur les langages de programmation, orthogonalité peut être considérée comme la facilité est pour vous de prévoir d'autres choses sur cette langue pour ce que vous avez vu dans le passé.

Par exemple, dans une langue que vous pouvez avoir:

  

str.split

pour diviser une chaîne de caractères et

  

len (str)

pour obtenir la longueur.

Sur un langage plus orthogonale, vous utilisez toujours str.x ou x (str).

Lorsque vous cloner un objet ou faire quoi que ce soit d'autre, vous savez si vous souhaitez utiliser

  

clone (obj)

ou

  

obj.clone

C'est l'un des principaux points sur les langages de programmation étant orthogonales. Cela vous évite de consulter le manuel ou quelqu'un demander.

Le wikipedia article parle plus sur orthogonalité sur des conceptions complexes ou langages de bas niveau. Comme quelqu'un l'a suggéré ci-dessus sur un commentaire, le livre parle Sebesta proprement sur les orthogonalité.

Si j'utiliser une seule phrase, je dirais qu'un langage de programmation est orthogonale lorsque ses parties inconnues agissent comme prévu en fonction de ce que vous avez vu. Ou ... pas de surprises.

;)

orthogonalité en programmation:

  

orthogonalité est un concept important, comment aborder un nombre relativement faible de composants peuvent être combinés dans un nombre relativement restreint de façons d'obtenir les résultats souhaités. Elle est associée à la simplicité; la conception plus orthogonale, moins d'exceptions. Cela rend plus facile à apprendre, lire et écrire des programmes dans un langage de programmation. La signification d'une fonction orthogonale est indépendante du contexte; les paramètres clés sont la symétrie et la cohérence (par exemple, un pointeur est un concept orthogonal).

Wikipedia

Dans les langages de programmation une caractéristique de langage de programmation est dite orthogonale si elle est limitée sans restriction (ou exceptions).  Par exemple, dans les fonctions Pascal ne peut pas retourner les types structurés. Ceci est une restriction sur les valeurs de retour d'une fonction. Par conséquent, nous, il est considéré comme une caractéristique non orthogonale. ;)

A titre d'exemples du manque d'orthogonalité dans un langage de haut niveau, tenez compte des règles et exceptions suivantes en C. Bien que C dispose de deux types de types de données structurées, les tableaux et les enregistrements (structs), les enregistrements peuvent être renvoyés des fonctions mais les tableaux ne peuvent pas. Un membre d'une structure peut être tout type de données sauf vide ou une structure du même type. Un élément de réseau peut être un quelconque type de données à l'exception nulle ou une fonction. Les paramètres sont passés par valeur, à moins qu'ils sont des tableaux, dans ce cas, ils sont, en effet, passés par référence (parce que l'apparence d'un nom de tableau sans indice dans un programme C est interprété comme l'adresse du premier élément du tableau)

orthogonalité signifie la mesure dans laquelle la langue est constitué d'un ensemble de constructions primitives indépendantes qui peuvent être combinées selon les besoins pour exprimer un programme.     Les fonctionnalités sont orthogonaux s'il n'y a pas de restrictions sur la façon dont ils peuvent être combinés

Example : non-orthogonality

PASCAL: Les fonctions ne peuvent pas retourner types structurés. Langues fonctionnelles sont très orthogonales.

L'idée de base est de orthogonalité que les choses qui ne sont pas liés sur le plan conceptuel ne doivent pas être liés dans le système. Certaines parties de l'architecture qui ont vraiment rien à voir avec l'autre, comme la base de données et l'interface utilisateur, ne devrait pas être nécessaire de modifier ensemble. Un changement à l'un ne doit pas provoquer un changement à l'autre.

orthogonalité dans un moyen de langage de programmation un ensemble relativement faible de constructions primitives peuvent être combinées en un nombre relativement faible de moyens pour construire les structures de contrôle et de données de la langue. De plus, tous les pos- combinaison de primitives est sible juridique et significative. Par exemple, considérons les types de données. Supposons qu'une langue a quatre types de données primitifs (entier, flottant, double, et le caractère) et deux opérateurs de type (tableau et pointeur). Si les deux opérateurs de type peuvent être appliqués à eux-mêmes et les quatre types de données primitifs, un grand nombre de structures de données peuvent être définis. La signification d'une fonctionnalité de langage orthogonale est indépendant du contexte de son apparition dans un programme. (Vient du mot orthogonale la concept mathématique des vecteurs orthogonaux, qui sont indépendants de chaque autres.) orthogonalité fait suite à une symétrie des relations entre les primi- tives. Un manque d'orthogonalité conduit à des exceptions aux règles de la langue. Par exemple, dans un langage de programmation qui prend en charge les pointeurs, il devrait être de définir un pointeur pour pointer vers un type spécifique défini dans la langue. Toutefois, si les pointeurs ne sont pas autorisés à pointer vers des réseaux, de nombreuses structures de données définies par l'utilisateur potentiellement utiles ne peuvent pas être définis. Nous pouvons illustrer l'utilisation de orthogonalité comme concept par compa- ing un aspect des langues d'assemblage des ordinateurs centraux IBM et la série VAX de mini-ordinateurs. Nous considérons une situation unique simple: l'addition de deux valeurs entières 32 bits qui résident dans la mémoire ou des registres et le remplacement de l'une des deux valeurs de la somme. Les grands systèmes IBM ont deux des instructions à cet effet, qui ont les formes

A Reg1, memory_cell
AR Reg1, Reg2

où représentent Reg1 et Reg2 registres. La sémantique de ces derniers sont

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

L'instruction d'addition VAX pour des valeurs entières de 32 bits est

ADDL operand_1, operand_2

dont la sémantique est

operand_2 ← contents(operand_1) + contents(operand_2)

Dans ce cas, l'un des opérandes peut être un registre ou une cellule de mémoire. La conception d'instruction VAX est orthogonale en ce qu'une seule instruction peut utiliser des registres ou des cellules de mémoire comme opérandes. Il y a deux façons de spécifier opérandes, qui peuvent être combinés de toutes les manières possibles. La conception IBM n'est pas orthogonale. Seulement deux des quatre combinaisons d'opérandes possibilités sont juridique, et les deux exigent des instructions différentes, A et AR. La conception IBM est plus restreint et donc moins inscriptible. Par exemple, vous ne pouvez pas ajouter deux valeurs et stocker la somme dans un emplacement de mémoire. En outre, IBM la conception est plus difficile à apprendre en raison des restrictions et l'instruction supplémentaire. Orthogonalité est étroitement liée à la simplicité: plus le orthogonale la conception d'une langue, moins d'exceptions aux règles linguistiques exigent. Moins exceptions signifient une plus grande régularité dans la conception, ce qui rend la langue plus facile à apprendre, lire et comprendre. Toute personne qui a appris sig- partie nificant de la langue anglaise peut témoigner de la difficulté d'apprendre son de nombreuses exceptions de la règle (par exemple, i avant e sauf après c).

Vérifier orthogonalité des matrices:

orthogonalité peut aussi être en ce qui concerne les matrices,

Matrix *(transpose of matrix)= identity matrix. 

Cliquez sur le lien ci-dessous pour afficher une vidéo YouTube sur orthogonalité.
https://youtu.be/tNekLaxnfW8

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top