All Topics  
Porting

 

   Email Print
   Bookmark   Link






 

Porting



 
 
In computer science
Computer science

Computer science is the study of the theoretical foundations of information and computation, and of practical techniques for their implementation and application in computer systems....
, porting is the process of adapting software so that an executable program
Computer program

Computer programs are Instruction for a computer. A computer requires programs to function. Moreover, a computer program does not run unless its instructions are executed by a Central processing unit; however, a program may communicate an Algorithm#Formalization of algorithms to people without running....
 can be created for a computing environment that is different from the one for which it was originally designed (e.g. different CPU, operating system
Operating system

An operating system is an interface between hardware and applications; it is responsible for the management and coordination of activities and the sharing of the limited resources of the computer....
, or third party library
Library (computer science)

In computer science, a library is a collection of subroutines or Class used to develop software. Libraries contain code and data that provide services to independent programs....
). The term is also used in a general way to refer to the changing of software/hardware to make them usable in different environments.

Software is portable
Software portability

Portability is one of the key concepts of High-level programming language. Portability is the software codebase feature to be able to reuse the existing code instead of creating new code when moving software from an environment to another....
 when the cost of porting it to a new platform is less than the cost of writing it from scratch.






Discussion
Ask a question about 'Porting'
Start a new discussion about 'Porting'
Answer questions from other users
Full Discussion Forum



Encyclopedia


In computer science
Computer science

Computer science is the study of the theoretical foundations of information and computation, and of practical techniques for their implementation and application in computer systems....
, porting is the process of adapting software so that an executable program
Computer program

Computer programs are Instruction for a computer. A computer requires programs to function. Moreover, a computer program does not run unless its instructions are executed by a Central processing unit; however, a program may communicate an Algorithm#Formalization of algorithms to people without running....
 can be created for a computing environment that is different from the one for which it was originally designed (e.g. different CPU, operating system
Operating system

An operating system is an interface between hardware and applications; it is responsible for the management and coordination of activities and the sharing of the limited resources of the computer....
, or third party library
Library (computer science)

In computer science, a library is a collection of subroutines or Class used to develop software. Libraries contain code and data that provide services to independent programs....
). The term is also used in a general way to refer to the changing of software/hardware to make them usable in different environments.

Software is portable
Software portability

Portability is one of the key concepts of High-level programming language. Portability is the software codebase feature to be able to reuse the existing code instead of creating new code when moving software from an environment to another....
 when the cost of porting it to a new platform is less than the cost of writing it from scratch. The lower the cost of porting software, relative to its implementation cost, the more portable it is said to be.

Etymology

The term is not generally applied to the process of adapting software to run with less memory on the same CPU and operating system, nor is it applied to the rewriting of source code in a different language
Programming language

A programming language is a machine-readable artificial language designed to express computations that can be performed by a machine, particularly a computer....
 (i.e. language conversion or translation).

Software developers often claim that the software they write is portable, meaning that little effort is needed to adapt it to a new environment. The amount of effort actually needed depends on several factors, including the extent to which the original environment (the source platform) differs from the new environment (the target platform), the experience of the original authors in knowing which programming language
Programming language

A programming language is a machine-readable artificial language designed to express computations that can be performed by a machine, particularly a computer....
 constructs and third party library calls are unlikely to be portable, and the amount of effort invested by the original authors in only using portable constructs (platform specific constructs often provide a cheaper solution).

Alternate version: The term 'Port' actually came from Portage
Portage

Portage refers to the practice of carrying a canoe or other boat over land to avoid an obstacle on the water route , or between two bodies of water ....
, as in 'to carry a canoe' thereby avoiding an obstacle. Usually the code, like the canoe, would carry the users. When the code is unable to do so, the programmer must carry the code over the obstacle, so that the code can once again carry the users.

History

The number of significantly different CPUs and operating systems used on the desktop today is much smaller than in the past. The dominance of the x86 architecture
Instruction set

An instruction set is a list of all the instruction , and all their variations, that a processor can execute.Instructions include:* Arithmetic such as add and subtract...
 means that most desktop software is never ported to a different CPU. In that same market, the choice of operating systems has effectively been reduced to three: Microsoft Windows
Microsoft Windows

Microsoft Windows is a series of software operating systems and graphical user interfaces produced by Microsoft. Microsoft first introduced an operating environment named Windows in November 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces ....
, Mac OS
Mac OS

Mac OS is the trademarked name for a series of graphical user interface-based operating systems developed by Apple Inc. for their Macintosh line of computer systems....
/Mac OS X
Mac OS X

Mac OS X is a line of computer operating systems developed, marketed, and sold by Apple Inc., and since 2002 has been included with all new Macintosh computer systems....
, and Unix
Unix

Unix is a computer operating system originally developed in 1969 by a group of American Telephone & Telegraph employees at Bell Labs, including Ken Thompson , Dennis Ritchie, Douglas McIlroy, and Joe Ossanna....
/Linux
Linux

Linux is a generic term referring to Unix-like computer operating systems based on the Linux kernel. Their development is one of the most prominent examples of free and open source software collaboration; typically all the underlying source code can be used, freely modified, and redistributed by anyone under the terms of the GNU GPL license...
. However, in the embedded systems market, portability remains a significant issue.

International standards, such as those promulgated by the ISO
International Organization for Standardization

The International Organization for Standardization , widely known as ISO , is an international standard-setting body composed of representatives from various national standards organizations....
, greatly facilitate porting by specifying details of the computing environment in a way that helps reduce differences between different standards-conforming platforms
Platform (computing)

In computing, a platform describes some sort of hardware architecture or software framework , that allows Computer software to run. Typical platforms include a computer's Computer architecture, operating system, programming languages and related runtime libraries or graphical user interface....
. Writing software that stays within the bounds specified by these standards represents a practical although nontrivial effort. Porting such a program between two standards-compliant platforms (such as POSIX.1
POSIX

POSIX or "Portable Operating System Interface" is the collective name of a family of related standardizations specified by the Institute of Electrical and Electronics Engineers to define the application programming interface , along with shell and utilities interfaces for software compatible with variants of the Unix operating system, altho...
) can be just a matter of loading the source code and recompiling it on the new platform. However, practitioners often find that various minor corrections are required, due to subtle platform differences. Most standards suffer from "gray areas" where differences in interpretation lead to small variations from platform to platform.

There also exist an ever-increasing number of tools to facilitate porting, such as the GNU Compiler Collection
GNU Compiler Collection

The GNU Compiler Collection is a compiler system produced by the GNU Project supporting various programming languages. GCC is a key component of the GNU toolchain....
, which provides consistent programming languages on different platforms, and Autotools, which automates the detection of minor variations in the environment and adapts the software accordingly before compilation.

The compilers for some high-level programming languages (e.g. Eiffel
Eiffel (programming language)

Eiffel is an International Organization for Standardization-standardized, object-oriented programming language designed to enable programmers to efficiently develop extensible, reusable, reliable software....
, Esterel
Esterel

Esterel is a synchronous programming language programming language for the development of complex reactive systems. The imperative programming style of Esterel allows the simple expression of parallel computing and preemption ....
) gain portability by outputting source code in a high level intermediate language
Intermediate language

In computer science, an intermediate language is the language of an abstract machine designed to aid in the analysis of computer programs. The term comes from their use in compilers, where a compiler first translates the source code of a program into a form more suitable for code-improving transformations, as an intermediate step before gener...
 (such as C
C (programming language)

C is a general-purpose computer programming language originally developed in 1972 by Dennis Ritchie at the Bell Telephone Laboratories to implement the Unix operating system....
) for which compilers for many platforms are generally available.

Two activities related to (but distinct from) porting are emulating and cross-compiling.

Porting in gaming

Porting is also the term used when a computer game designed to run on one platform, be it a personal computer
Personal computer

A personal computer is any general-purpose computer whose original sales price, size, and capabilities make it useful for individuals, and which is intended to be operated directly by an end user, with no intervening computer operator....
 or a video game console
Video game console

A video game console is an game development that produces a video signal which can be used with a display device to display a video game. The term "video game console" is used to distinguish a machine designed for consumers to buy and use solely for playing video games from a personal computer, which has many other functions, or arcade machi...
, is converted to run on a different platform. Earlier video game "ports" were often not true ports, but rather reworked versions of the games. However, more and more video games are now being developed using software that can output code for PCs as well as for one or more consoles. Many early ports suffered significant gameplay quality issues because the hardware of PCs and consoles differed so dramatically.

Arcade perfect is a term used to describe video games which have been ported from an arcade
Arcade game

An arcade game is a coin-operated entertainment machine, typically installed in businesses such as restaurants, public houses, video arcades, and Family Entertainment Centers....
 version to another platform, such as a console, without any alterations to the game's workings. This means that graphics, sound and gameplay
Gameplay

Gameplay includes all player experiences during the interaction with game systems, especially formal games. Proper use is coupled with reference to "what the player does"....
, along with the game's other characteristics, are identical to the arcade version.

See also

  • Console emulator
  • List of System Quality Attributes
  • Source port
    Source port

    A source port is a software project based on a the source code of a computer game's game engine that allows the game to be played on operating systems or computing platforms for which the game was not originally compatible with....
  • Write once, compile anywhere
    Write once, compile anywhere

    Write once, compile anywhere refers to writing software that compiles and is thus usable on all platform s. As opposed to Sun's Write once, run anywhere slogan, cross-platform compatibility is implemented at the source code level, rather than at the compiled binary code level....
  • Poshlib
    Poshlib

    Posh is a software framework consisting of a header file and an optional C source file to aid in cross-platform software Computer programming. It was created by Brian Hook....
  • Cross-platform
    Cross-platform

    In computing, cross-platform is a term used to refer to computer software or computing methods and concepts that are implemented and inter-operate on multiple computer platforms....