Domanda

Che cosa significa "ortogonalità" significa quando si parla di linguaggi di programmazione?

Quali sono alcuni esempi di ortogonalità?

È stato utile?

Soluzione

ortogonalità è la proprietà che significa "Modifica A non cambia B". Un esempio di un sistema ortogonale sarebbe una radio, dove cambiando la stazione non cambia il volume e viceversa.

Un sistema non ortogonale sarebbe come un elicottero in cui cambia la velocità può cambiare la direzione.

In linguaggi di programmazione questo significa che quando si esegue un'istruzione, nient'altro che l'istruzione accade (molto importante per il debug).

C'è anche un significato specifico quando si parla di istruzione imposta .

Altri suggerimenti

"L'arte della programmazione UNIX" di Eric S. Raymond

  

ortogonalità è una delle proprietà più importanti che possono contribuire a rendere i disegni anche complessi compatta. In un disegno puramente ortogonale, operazioni non hanno effetti collaterali; ogni azione (che si tratti di una chiamata API, un'invocazione macro, o un'operazione di lingua) cambia solo una cosa senza influenzare gli altri. V'è uno e solo un modo per cambiare ogni proprietà di qualsiasi sistema che si sta controllando.

Pensare ha essere in grado di cambiare una cosa senza avere un effetto invisibile su un'altra parte.

In linea di massima, ortogonalità è una relazione tra due cose in modo tale che essi hanno un effetto minimo sulla vicenda.

Il termine deriva dalla matematica, in cui due vettori ortogonali se si intersecano ad angolo retto.

Pensateci un tipico 2 spazio cartesiano tridimensionale (si tipica griglia con assi X / Y). Trama due linee: x = 1 ey = 1. Le due linee sono ortogonali. È possibile modificare x = 1 x cambiando, e questo avrà alcun effetto sull'altra linea, e viceversa.

Nel software, il termine può essere opportunamente utilizzato in situazioni in cui si sta parlando di due parti di un sistema che si comportano in modo indipendente l'uno dall'altro.

Se si dispone di una serie di costrutti. Un langauge è detto di essere ortogonale se permette al programmatore di mescolare questi costrutti liberamente. Ad esempio, in C non si può restituire una matrice (array statico), C è detto di essere unorthognal in questo caso:

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 maggior parte delle risposte sono molto prolisso, e anche oscuro. è il punto:. se uno strumento è ortogonale, può essere aggiunto, sostituito, o rimosso, a favore di strumenti migliori, senza rovinare tutto il resto fino

E 'la differenza tra un falegname con un martello e una sega, che può essere utilizzato per martellamento o taglio, o di avere qualche martello nuovo conio / sega combinata, che è progettato per segare la legna, poi martello insieme. Sia lavorerà per il taglio e poi martellare insieme, ma se si ottiene qualche compito che richiede il taglio, ma non martellare, quindi solo gli strumenti ortogonali funzionerà. Allo stesso modo, se avete bisogno di vite invece di martellamento, non avrete bisogno di buttare via la sega, se è ortogonale (non confuso con) il martello.

L'esempio classico è UNIX strumenti a linea di comando: si dispone di uno strumento per ottenere il contenuto di un disco (dd), un altro per il filtraggio righe dal file (grep), un altro per scrivere quelle righe in un file (cat), ecc, che possono tutti essere mescolati e abbinati a piacere.

wikipedia :

Informatica

ortogonalità è una struttura di design del sistema facilitando la fattibilità e la compattezza di disegni complessi. Ortogonalità garantisce che modifica l'effetto tecnico prodotto da un componente di un sistema non crea né propaga effetti collaterali di altri componenti del sistema. Il comportamento emergente di un sistema costituito da componenti deve essere controllato rigorosamente da definizioni formali della sua logica e non da effetti collaterali derivanti dalla scarsa integrazione, cioè disegno non ortogonale dei moduli e interfacce. Ortogonalità riduce sperimentazione e sviluppo tempo perché è facile verificare disegni che né causare effetti collaterali né dipendono.

Ad esempio, una macchina ha componenti ortogonali e controlli (ad esempio l'accelerazione del veicolo non influenza altro che i componenti coinvolti esclusivamente con la funzione di accelerazione). D'altra parte, un disegno non ortogonale può avere lo sterzo influenzano la frenatura (per esempio controllo elettronico della stabilità), o la sua velocità modificare la sua sospensione. 1 conseguenza, questo uso è visto essere derivato dall'uso di ortogonale in matematica: si può proiettare un vettore su un sottospazio proiettandolo su ciascun membro di un insieme di vettori di base separatamente e aggiungendo le proiezioni se e solo se i vettori di base sono mutuamente ortogonali.

Un insieme di istruzioni è detto essere ortogonali se qualsiasi istruzione può utilizzare qualsiasi registro in qualsiasi modalità di indirizzamento. Questa terminologia risulta da considerare un'istruzione come vettore le cui componenti sono i campi di istruzione. Un campo identifica i registri da operati, e un'altra specifica la modalità di indirizzamento. Un'istruzione ortogonale impostato univoco codifica tutte le combinazioni di registri e modi di indirizzamento.

Wikipedia :

  

ortogonalità è un progetto di sistema   immobili facilitare fattibilità e   la compattezza di disegni complessi.   garanzie di ortogonalità che   modificare l'effetto tecnico   prodotto da un componente di un sistema   non crea né si propaga lato   effetti ad altri componenti del   sistema. Il comportamento emergente di un   sistema costituito da componenti dovrebbero   essere controllato rigorosamente formale   definizioni della sua logica e non da   effetti collaterali derivanti dalla scarsa   integrazione, cioè non ortogonale   progettazione di moduli e interfacce.   Ortogonalità riduce prove e   i tempi di sviluppo perché è più facile   per verificare i disegni che né causa   effetti collaterali né dipendono da loro.

     

Per esempio, una macchina ha ortogonale   componenti e controlli (ad esempio   l'accelerazione del veicolo non fa   influenza qualsiasi altra cosa, ma la   componenti coinvolti esclusivamente   la funzione di accelerazione). Sul   D'altra parte, un disegno non ortogonale   potrebbe avere il suo sterzo influisce sul suo   frenatura (per esempio stabilità elettronico   controllo), o la sua velocità modificare la sua   sospensione. [1] Di conseguenza, questo   utilizzo è visto per essere derivato dal   uso di ortogonali in matematica: One   può proiettare un vettore su un sottospazio   proiettandolo su ciascun membro di un   insieme di vettori di base separatamente e   aggiungendo le proiezioni se e solo se   vettori di base sono reciprocamente   ortogonale.

     

Un set di istruzioni è detto di essere   ortogonali se qualsiasi istruzione può utilizzare   qualsiasi registro in qualsiasi modalità di indirizzamento.   Questa terminologia deriva dalla   considerando un'istruzione come vettore   i cui componenti sono l'istruzione   campi. Un campo identifica il   registri essere operati, e   un'altra specifica la modalità di indirizzamento.   Un'istruzione ortogonale impostato in modo univoco   codifica tutte le combinazioni di registri   e modi di indirizzamento.

Per dirla in termini più semplici possibili, due cose sono ortogonali se cambia uno non ha alcun effetto sulle altre.

Quando si parla di decisioni di progetto sui linguaggi di programmazione, ortogonalità può essere visto come quanto facile è per voi di prevedere altre cose su quella lingua per quello che hai visto in passato.

Per esempio, in una lingua si può avere:

  

str.split

per suddividere una stringa e

  

len (str)

per ottenere la lunghezza.

In un linguaggio più ortogonale, si dovrebbe sempre usare str.x o x (str).

Quando volete clonare un oggetto o fare qualsiasi altra cosa, si dovrebbe sapere se usare

  

clone (obj)

o

  

obj.clone

Questo è uno dei punti principali linguaggi di programmazione ortogonali. Che si evita a consultare il manuale o chiedere a qualcuno.

Wikipedia articolo parla di più su ortogonalità su progetti complessi o linguaggi di basso livello. Come qualcuno ha suggerito in precedenza su un commento, il libro Sebesta parla in modo pulito su ortogonalità.

Se vorrei usare solo una frase, direi che un linguaggio di programmazione è ortogonale quando le sue parti sconosciute agiscono come previsto in base a quello che hai visto. Oppure ... senza sorprese.

;)

Ortogonalità in programmazione:

  

ortogonalità è un concetto importante, affrontando come un numero relativamente basso di componenti possono essere combinati in un numero relativamente piccolo di modi per ottenere i risultati desiderati. Si è associato con semplicità; il più ortogonale il design, il minor numero di eccezioni. Questo rende più facile da imparare, leggere e scrivere programmi in un linguaggio di programmazione. Il significato di una funzione ortogonale è indipendente dal contesto; i parametri chiave sono simmetria e coerenza (per esempio, un puntatore è un concetto ortogonale).

Wikipedia

In linguaggi di programmazione una funzione di linguaggio di programmazione si dice che sia ortogonali se è delimitata senza restrizioni (o eccezioni).  Ad esempio, nelle funzioni di Pascal non può tornare tipi strutturati. Si tratta di una restrizione alla restituzione di valori da una funzione. Pertanto si è considerato come una caratteristica non ortogonale. ;)

Come esempi della mancanza di ortogonalità in un linguaggio di alto livello, prendere in considerazione le seguenti regole e le eccezioni in C. Anche se C ha due tipi di dati strutturati tipi, array e record (struct), record possono essere restituiti dalle funzioni ma array non può. Un membro di una struttura può essere qualsiasi tipo di dati tranne vuoto o una struttura dello stesso tipo. Un elemento di matrice può essere qualsiasi tipo di dati tranne funzione void o un. I parametri vengono passati per valore, a meno che non sono array, nel qual caso essi sono, in effetti, passati per riferimento (perché l'aspetto di un nome di matrice senza un indice in un programma C viene interpretato come l'indirizzo del primo elemento dell'array)

ortogonalità significa il grado in cui il linguaggio è costituito da una serie di costrutti primitivi indipendenti che possono essere combinati come necessario esprimere un programma.     Caratteristiche sono ortogonali se non ci sono restrizioni su come essi possono essere combinati

Example : non-orthogonality

PASCAL: funzioni non possono restituire tipi strutturati. Linguaggi funzionali sono altamente ortogonali.

L'idea di base di ortogonalità è che le cose che non sono legati concettualmente non dovrebbero essere correlati nel sistema. Parti dell'architettura che in realtà non hanno nulla a che fare con l'altro, come ad esempio il database e l'interfaccia utente, non dovrebbe essere necessario cambiare insieme. Un cambiamento a uno non dovrebbe causare un cambiamento all'altro.

Ortogonalità in un linguaggio di programmazione significa che una parte relativamente piccola serie di costrutti primitivi possono essere combinati in un numero relativamente piccolo di modi per costruire i controllo e di dati strutture della lingua. Inoltre, ogni pos- bile combinazione di primitive è legale e significativo. Ad esempio, considerare i tipi di dati. Supponiamo una lingua ha quattro tipi di dati primitivi (integer, float, doppio, e carattere) e due operatori di tipo (array e puntatore). Se i due operatori di tipo possono essere applicati a se stessi e le quattro tipi di dati primitivi, un gran numero di strutture di dati può essere definito. Il significato di una caratteristica del linguaggio ortogonale è indipendente dalla contesto della sua apparizione in un programma. (La parola deriva dal ortogonale concetto matematico di vettori ortogonali, che sono indipendenti l'uno altro.) ortogonalità consegue una simmetria di relazioni tra primi- tivi. Una mancanza di ortogonalità porta ad eccezioni alle regole della lingua. Ad esempio, in un linguaggio di programmazione che supporta i puntatori, dovrebbe essere possibile definire un puntatore per puntare a qualsiasi tipo specifico definito nel linguaggio. Tuttavia, se i puntatori non possono indicare array, molte strutture di dati definiti dall'utente potenzialmente utili possono non essere definiti. Siamo in grado di illustrare l'utilizzo di ortogonalità come un concetto di design da comparabilità ing un aspetto delle lingue di assemblaggio dei computer mainframe IBM e la serie di minicomputer VAX. Consideriamo una singola situazione semplice: aggiungendo due valori interi a 32 bit che risiedono nella memoria o registri e sostituendo uno dei due valori con la somma. I mainframe IBM hanno due istruzioni per questo scopo, che hanno le forme

A Reg1, memory_cell
AR Reg1, Reg2

dove Reg1 e Reg2 rappresentano registri. La semantica di questi sono

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

L'istruzione aggiunta VAX per valori interi a 32 bit è

ADDL operand_1, operand_2

la cui semantica è

operand_2 ← contents(operand_1) + contents(operand_2)

In questo caso, sia operando può essere un registro o una cella di memoria. La progettazione della formazione VAX è ortogonale a che una singola istruzione può utilizzare sia registri o celle di memoria degli operandi. Ci sono due modi per specificare operandi, che possono essere combinati in tutti i modi possibili. Il design IBM non è ortogonale. Solo due dei quattro combinazioni operandi possibilità sono legale, e le due richiedono diverse istruzioni, A e AR. Il design IBM è più ristretto e quindi meno scrivibile. Ad esempio, non è possibile aggiungere due valori e memorizzare la somma in una posizione di memoria. Inoltre, IBM design è più difficile da imparare a causa delle restrizioni e le istruzioni supplementari. Ortogonalità è strettamente correlata alla semplicità: Più ortogonali la progettazione di un linguaggio, il minor numero di eccezioni alle regole del linguaggio richiedono. Meno eccezioni significano un più alto grado di regolarità nella progettazione, che rende il lingua più facile da imparare, leggere e capire. Chi ha imparato SIG- parte nificant della lingua inglese può testimoniare la difficoltà di apprendere la sua molte regole eccezioni (per esempio, i prima e non dopo c).

Controllare l'ortogonalità delle matrici:

ortogonalità può anche essere rispetto alle matrici,

Matrix *(transpose of matrix)= identity matrix. 

, clicca sul link qui sotto per vedere un video di YouTube sul ortogonalità.
https://youtu.be/tNekLaxnfW8

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top