Talk:Porting

From Wikipedia, the free encyclopedia

I did a full rewrite rather than edit; judgment call. I felt the original article was not very clear, and contained a number of factual errors. I think I managed to retain the tone and general outline pretty well though. Coren 17:41, Jan 2, 2004 (UTC)

I've always percieved the term port and associated words a colloquial term, possibly even an abbreviation. If this is the case, it ought to be mentioned. Some insight by someone with more programming experience would help. --BigBlueFish 10:58, 5 October 2005 (UTC)

I am very disturbed by the way this page has been written. Let us start with precise definitions:

Porting means: the act of moving software from one system to another in a functional way.
A piece of software/media is portable if: it can be moved to multiple systems without significant modification.
Portability means: the degree to which a piece of software can be ported (by measure of effort).

It is important to note that portability does not refer to the number of platforms something can be ported to. If software runs on a wide variety of platforms, it is more correct to say that it is widely available on or compatible with many systems. Portability refers to an inherent property of the program, not the availability (beyond 2) of platforms.

This point is most clearly seen when one thinks about .NET or Java applications. Programs written for those platforms are typically more portable than most applications written in C even though its possible for C programs to be deployed to more compatible platforms. C programs will typically make assumptions (ints > 16 bits, 2s complement math, exploiting undefined/implementation defined behavior, etc) that cannot even possibly be made in Java, for example, even though the resulting C application may be deployed on many more platforms than a Java bytecode interpreter exists for.

A programming language can be portable in one of various senses:
1. It is possible to write programs in the language such that source code is portable.
2. It is possible to write programs in the language such that object code is portable.
3. Most programs written in that language have high portability.

By specification, the C language basically fits in category 1, Java fits in category 2, and Python/LUA fits in category 3. C is in an extra special category, however, because of the plethora of implementation defined behavior in the language. C source can be portable in the sense of being able to compile on many platforms, but without retaining semantic portability (in ways that are beyond mere resource limitations). C++ ends up having all the same problems as C, for obvious reasons, but adds a new layer of problems since its such a big language. Very few C++ compiler vendors implement the language exactly to the specification.

I think the article needs to be significantly revamped to include this kind of background. Also get rid of the nonsense about Game Programs -- they are the same as any other program. Qed 02:46, 28 January 2006 (UTC)

[edit] Rename to Software portability

Any objections? --Piet Delport 16:00, 29 June 2006 (UTC)