A metaphorical extension is the "extension of meaning in a new direction" through the popular adoption of an original metaphorical comparison. [1]
The metaphorical extension is almost a universal and natural process in any language undergone by every word. In general, it's not even perceived in everyday usage as meaning change. When it is least obvious, users don't even see it as extending the meaning of a word. Consider the example of illuminate: it originally meant "to light up" something dim or dark, but has evolved to mean "to clarify", or "to edify". After a while, these new meanings seem so natural as to be integral parts of the word, whereas senses such as "to celebrate" and "to adorn a page with designs" seem like more obvious additions. [1]
According to linguist Jeffrey Henning:
Radiation is a metaphorical extension on a grander scale, with new meanings radiating from a central semantic core to embrace many related ideas. The word head originally referred to that part of the human body above the rest. Since the top of a nail, pin or screw is, like the human head, the top of a slim outline, that sense has become included in the meaning of head. Since the bulb of a cabbage or lettuce is round like the human head, that sense has become included in the meaning of head. Know where I'm headed with this? The meaning of the word head has radiated out to include the head of a coin (the side picturing the human head), the head of the list (the top item in the list), the head of a table, the head of the family, a head of cattle, $50 a head. [1]
Other words that have similarly radiated meanings outward from a central core include the words fire, root and sun.
A crane at a construction site was given its name by comparison to the long-necked bird of the same name. When the meaning of the word daughter was first extended from that of "one's female child" to "a female descendant" (as in daughter of Eve), the listener might not have even noticed that the meaning had been extended.
The late Admiral, mathematician, and computer pioneer, Grace Murray Hopper, frequently repeated a favorite amusing story in front of many audiences about an early computer that experienced an episode where it kept calculating incorrectly. When technicians examined the machine's hardwired logic (the wiring, in the World War II era computer), a huge moth was discovered such that its body was shorting out one of the vacuum tube and relay circuits and causing the repetitive fault, and so may have played a key role in popularizing the term which was in use in hardware engineering from at least Edison's time (see Computer bug#Etymology). Since the Admiral's speeches, both hardware faults and software errors are now routinely referred to as "bugs", and getting the flaws out of a product is known as 'debugging' the system. Her team almost certainly coined the latter term. [2] A particular type of software program designed to aid software development is known as a "debugger" complements the program known as a compiler, the first of which was developed by G.M. Hopper.
The use of bug to refer to a computer error in logic was a metaphorical extension that has become so popular that it is now part of the regular meaning of "bug". The computer industry has a host of words whose meaning has been extended through such metaphors, including "mouse" for possessing a 'tail' similar to said rodent now used widely for these computer input devices—even though the more modern wireless ones have lost the metaphorical tail entirely.
Software is a set of computer programs and associated documentation and data. This is in contrast to hardware, from which the system is built and which actually performs the work.
Computer programming is the process of performing particular computations, usually by designing and building executable computer programs. Programming involves tasks such as analysis, generating algorithms, profiling algorithms' accuracy and resource consumption, and the implementation of algorithms. The source code of a program is written in one or more languages that are intelligible to programmers, rather than machine code, which is directly executed by the central processing unit. The purpose of programming is to find a sequence of instructions that will automate the performance of a task on a computer, often for solving a given problem. Proficient programming thus usually requires expertise in several different subjects, including knowledge of the application domain, specialized algorithms, and formal logic.
The GNU Debugger (GDB) is a portable debugger that runs on many Unix-like systems and works for many programming languages, including Ada, C, C++, Objective-C, Free Pascal, Fortran, Go, and partially others.
A kludge or kluge is a workaround or quick-and-dirty solution that is clumsy, inelegant, inefficient, difficult to extend and hard to maintain. This term is used in diverse fields such as computer science, aerospace engineering, Internet slang, evolutionary neuroscience, and government. It is similar in meaning to the naval term jury rig.
In processor design, microcode is a technique that interposes an intermediate layer between the central processing unit (CPU) hardware and the programmer-visible instruction set architecture of a computer.
A metaphor is a figure of speech that, for rhetorical effect, directly refers to one thing by mentioning another. It may provide clarity or identify hidden similarities between two different ideas. Metaphors are often compared with other types of figurative language, such as antithesis, hyperbole, metonymy, and simile. One of the most commonly cited examples of a metaphor in English literature comes from the "All the world's a stage" monologue from As You Like It:
A software bug is an error, flaw or fault in the design, development, or operation of computer software that causes it to produce an incorrect or unexpected result, or to behave in unintended ways. The process of finding and correcting bugs is termed "debugging" and often uses formal techniques or tools to pinpoint bugs. Since the 1950s, some computer systems have been designed to deter, detect or auto-correct various computer bugs during operations.
Design by contract (DbC), also known as contract programming, programming by contract and design-by-contract programming, is an approach for designing software.
An embedded system is a computer system—a combination of a computer processor, computer memory, and input/output peripheral devices—that has a dedicated function within a larger mechanical or electronic system. It is embedded as part of a complete device often including electrical or electronic hardware and mechanical parts. Because an embedded system typically controls physical operations of the machine that it is embedded within, it often has real-time computing constraints. Embedded systems control many devices in common use. In 2009, it was estimated that ninety-eight percent of all microprocessors manufactured were used in embedded systems.
A debugger or debugging tool is a computer program used to test and debug other programs. The main use of a debugger is to run the target program under controlled conditions that permit the programmer to track its execution and monitor changes in computer resources that may indicate malfunctioning code. Typical debugging facilities include the ability to run or halt the target program at specific points, display the contents of memory, CPU registers or storage devices, and modify memory or register contents in order to enter selected test data that might be a cause of faulty program execution.
In computing, a crash, or system crash, occurs when a computer program such as a software application or an operating system stops functioning properly and exits. On some operating systems or individual applications, a crash reporting service will report the crash and any details relating to it, usually to the developer(s) of the application. If the program is a critical part of the operating system, the entire system may crash or hang, often resulting in a kernel panic or fatal system error.
A glitch is a short-lived fault in a system, such as a transient fault that corrects itself, making it difficult to troubleshoot. The term is particularly common in the computing and electronics industries, in circuit bending, as well as among players of video games. More generally, all types of systems including human organizations and nature experience glitches.
JTAG is an industry standard for verifying designs and testing printed circuit boards after manufacture.
A watchdog timer is an electronic or software timer that is used to detect and recover from computer malfunctions. Watchdog timers are widely used in computers to facilitate automatic correction of temporary hardware faults, and to prevent errant or malevolent software from disrupting system operation.
Optimized Systems Software (OSS) was a company that produced disk operating systems, programming languages with integrated development environments, and applications primarily for the Atari 8-bit family of home computers. OSS was best known for their enhanced versions of Atari DOS, Atari BASIC, and the Atari Assembler Editor, all of which were substantially improved over Atari's products, as well as the Action! programming language. OSS also sold some software for the Apple II.
In computer programming jargon, a heisenbug is a software bug that seems to disappear or alter its behavior when one attempts to study it. The term is a pun on the name of Werner Heisenberg, the physicist who first asserted the observer effect of quantum mechanics, which states that the act of observing a system inevitably alters its state. In electronics, the traditional term is probe effect, where attaching a test probe to a device changes its behavior.
A hardware bug is a defect in the design, manufacture, or operation of computer hardware that causes incorrect operation. It is the counterpart of software bugs which refer to flaws in the code which operates computers, and is the original context in which "bug" was used to refer to such flaws. Intermediate between hardware and software are microcode and firmware which may also have such defects. In common usage, a bug is subtly different from a "glitch" which may be more transient than fundamental, and somewhat different from a "quirk" which may be considered useful or intrinsic. Errata may be published by the manufacturer to reflect such unintended operation, and "errata" is sometimes used as a term for the flaws themselves.
In computing, an emulator is hardware or software that enables one computer system to behave like another computer system. An emulator typically enables the host system to run software or use peripheral devices designed for the guest system. Emulation refers to the ability of a computer program in an electronic device to emulate another program or device.
In computer programming and software development, debugging is the process of finding and resolving bugs within computer programs, software, or systems.
In engineering, a bug is a defect in the design, manufacture or operation of machinery, circuitry, electronics, hardware, or software that produces undesired results or impedes operation. It is contrasted with a glitch which may only be transient. Sometimes what might be seen as unintended or defective operation can be seen as a feature.