Definition

# orthogonal

Contributor(s): Garry Kranz

The term orthogonal is derived from the Greek orthogonios ("ortho" meaning right and "gon" meaning angled). Orthogonal concepts have origins in advanced mathematics, particularly linear algebra, Euclidean geometry and spherical trigonometry. Orthogonal and perpendicular frequently are used as synonyms.

A related term, orthogonal projection, describes a method for drawing three-dimensional objects with linear perspective. It refers to perspective lines, drawn diagonally along parallel lines that meet at a so-called "vanishing point." Such perspective lines are orthogonal, or perpendicular to one another.

The orthogonal definition also has been extended to general use, meaning the characteristic of something being independent (relative to something else). It also can mean non-redundant, non-overlapping or irrelevant.

### Orthogonal lines and mathematics

In Euclidean geometry, orthogonal objects are related by their perpendicularity to one another. Lines or line segments that are perpendicular at their point of intersection are said be related orthogonally. Similarly, two vectors are considered orthogonal if they form a 90-degree angle. Thus, motion by one vector along an orthogonal X-Y axis does not generate corresponding movement by the second vector; the vectors are related, yet wholly independent of each other.

### Orthogonal control functions in computer hardware

In computer terminology, orthogonal describes a condition of independence between different dimensions or objects. A basic example is found on your computer monitor, which includes orthogonal controls for independently adjusting the brightness, contrast and color. You can adjust the brightness knob without changing other aspects of screen resolution, for instance. On a more complex level, orthogonal concepts are commonly associated with software development, persistent storage and networking.

### Orthogonal view of software development

In computer terminology, something -- such as a programming language or a data object -- is orthogonal if it can be used without consideration as to how its use will affect something else. An orthogonal language enables software developers to independently change one operation of a system, without triggering a ripple effect of changes to subsidiary or dependent operations. Stated differently, orthogonal design means there is only one way to change the property of the system you are controlling -- executing Operation A exerts no impact on Operation B. This approach is especially useful when debugging script.

Orthogonal software development strives for simplicity when assembling instruction sets. A programming language is compiled from a small number of components that can be combined only in a small number of ways, thus reducing the number of errors and enabling developers to more quickly learn to read and write programs in the language.

### Orthogonal programming languages

A programming language is orthogonal if its features can be used without thinking about how that usage will affect other features. Pascal is sometimes considered an orthogonal language, while C++ is considered a non-orthogonal language.

Features of a program that are compatible with its own earlier versions -- called backward compatible -- have an orthogonal relationship with the features of the earlier version because they are mutually independent; you don't have to worry about how the use of one version's features will cause an unintended effect because of an interaction with features from the other version. Both the features and the programs can be said to be mutually orthogonal.

### Orthogonal persistence and storage

The length of time data is kept in storage in a computer system is known as its persistence. Orthogonal persistence (sometimes also known as transparent persistence) is the quality of a programming system that allows a programmer to treat data similarly without regard to the length of time the data is kept in storage. Frequently, a programmer must use different approaches and separate coding to access data depending on how long it has been stored. Using a programming system with orthogonal data persistence allows the programmer to treat data the same way regardless of its persistence characteristic, saving programming time and making it easier to enforce referential integrity (a type of constraint applied to ensure correct data validity).

### Orthogonal persistence vs. non-orthogonal persistence

A defining trait of orthogonal persistence is that data objects are loaded as needed, such as navigational database queries that load the target object when traversing between references in an object. Most industry-standard operating systems (OSes) support orthogonal persistence.

Perceived drawbacks of orthogonal persistence center mostly on inefficiency and semantic-level programming concerns. Orthogonal-persistent systems lack a high-level window into the persistent data store, which means developers cannot rely on data objects referencing one another in a systematic manner.

Non-orthogonal persistence requires that data writes and reads in storage occur in a programmatic way based on specified instructions in an application or program. The OS only makes non-volatile memory available that will "persist" with the application once read or write operations are completed.

Researchers at the University of Sydney in Australia note that non-orthogonal systems enable data compression "to be implemented at the coarse-grained object level, either transparently or at the user's request. An orthogonally persistent system, on the other hand, must support random access to any object at any time, so data compression generally cannot be implemented."

They also noted that a persistent system with coarse-grained data objects potentially boosts memory protection and simplifies issues related to "distribution, packaging data, setting and checking permissions, transferring data between persistent stores, and implementing persistence efficiently."

### Orthogonal functions in networking, switch virtualization

Orthogonal frequency-division multiplexing (OFDM) is a multi-access networking schema that provides a high rate of data access and wide bandwidth. OFDM splits a signal into several narrowband channels at different frequencies. This form of digital modulation was developed in the 1960s as a way to reduce signal interference among channels situated near each other in frequency. In addition to high-speed data access, OFDM-modulated signals are used in digital audio broadcasts and digital TV.

Similarly, orthogonal functions play a role in virtualized storage networks that rely on intelligent switches. These orthogonal switching functions generally encompass the areas of network wiring and transport components, block-level storage virtualization and RAID management, and file system technologies for data object storage.

This was last updated in March 2015

## Content

Find more PRO+ content and other member only offers, here.

#### Join the conversation

Send me notifications when other members comment.
What are the relative benefits of using orthogonal vs. non-orthogonal programming languages?
Cancel
Well, I'd start with a simple definition of orthogonal - that features do not overlap, so there is only one 'right' way to do things. Perl is perhaps the classic non-orthogonal language, because "there is more than one way to do it."

In perl, for example, the following statements are equivalent:

print if 1..3 or /match/
if (1..3 or /match/) { print }

In the second example, the programmer could choose to omit the curly braces or add a semi-colon at the end.

Python is a more orthogonal language, used by similar communities to do similar things.

The advantage in perl is that the language doesn't tell you how to do it. That gives a great deal of personal and style freedom - on the other hand, it means your code can be "all over the map" and hard to read. When I talk to people who write new perl code, they often express great appreciation for the freedom -- when I talk to people who /maintain/ perl code, it is the opposite.

Python is the other way 'round. Reading and maintaining is easy, but unless you have the personality of the gardener who cuts off a well-growing carrot because it is not growing in line, you may find writing python takes a little getting used to.

Cancel
Wow, that's a fancy article!

I think it's safe to say that items are orthogonal to each other when you can change one element and not impact another. The storage example is good, because it is common for insurance companies to move older records to tape - code designed to update records greater than a few years old needs to be 'tweaked' to update those old records. A middle-layer that makes the code 'just work' would make it orthogonal across storage layers.

Virtualization is probably a more recent example - if the server is 'real' or 'virtual' and it does not matter, it is orthogonal to the task at hand. If it does (for example, the virtual server is on an openstack box that lacks the memory and CPU to serve all the requests), then it is not! :-)
Cancel

## SearchSolidStateStorage

• ### Will the eMMC controller market keep up with flash innovation?

EMMC host controllers may have a hard time handling advances in flash memory technology, like 3D NAND and newer connection ...

• ### Small but mighty eMMC flash storage grows its enterprise role

Many common devices, like your cell phone and tablet, use eMMC flash for storage. But the internet of things will soon make eMMC ...

• ### How eMMC 5.0 can improve your organization's small storage needs

The latest eMMC specification puts the tiny flash storage devices on a level playing field with many SSDs when it comes to speed ...

## SearchConvergedInfrastructure

• ### Holy COW! New Hampshire med center turns to Pivot3 vSTAC for VDI

Southern New Hampshire Medical Center put its traditional server-storage architecture out to pasture when it added ...

• ### Examining the state of the hyper-converged infrastructure market

HCI market leaders have emerged, but some question how long they'll retain their hold over the rapidly evolving segment.

• ### Nutanix networking management includes microsegmentation, APIs

Nutanix adds 'one-click networks' to its hyper-convergence as part of its plans to become an on-premises version of Amazon Web ...

## SearchCloudStorage

• ### Hitachi Content Intelligence searches, analyzes data

Hitachi Content Intelligence, built into Hitachi Content Portfolio object storage, extracts data and metadata from repositories ...

• ### OpenStack Newton storage features include data encryption

Storage updates in OpenStack's Newton release include at-rest data encryption in Swift, a message API for async tasks in Cinder ...

Google Cloud Platform expands Zadara Storage VPSA and ZIOS hyperscale cloud SaaS options, which already support Amazon Web ...

## SearchDisasterRecovery

• ### Case closed: Law firm selects iland DRaaS for faster, easier DR

Minutes count in legal work, and Graubard Miller needed a simpler platform for disaster recovery. The verdict: The law firm chose...

• ### Disaster recovery and business continuity plans require updating

Updating business continuity and disaster recovery plans can seem daunting, but it becomes easier when you delegate tasks and ...

• ### Enhance cloud resiliency with proper data management

Explore factors that can influence your level of cloud resilience, such as outages in different geographic locations, and the ...

## SearchDataBackup

• ### Mobile device security management practices enhance data protection

While mobile security is a challenge, file sync-and-share products and mobile device management software can help protect your ...

• ### Mobile data backup helped by encryption, data policies

More and more corporate data is being created and living on mobile devices such as tablets and smartphones. That dynamic requires...

• ### Veeam backup software protects mental health facility's Hyper-V

A mental health and addiction facility had an ongoing problem with its virtual machine backup and recovery until it was solved ...

Close