Karl Robillard wrote: > On Sunday 08 June 2008 03:30:29 am Ivan Krstić wrote: >> On Jun 8, 2008, at 12:47 AM, Karl Robillard wrote: >>> "I will write portable code, which does not assume any specific CPU or OS, >>> so as to respect the users right to run my software on many different >>> systems." >> CPU, maybe, but writing OS-portable code is another matter entirely. With >> low-level code, OS portability does not require the _absence_ of some action >> (making assumptions about a specific OS), but a very strong _presence_ of a >> dedicated effort to keep up with a pile of mutually incompatible systems. >> It's >> reasonable to hold programmers to an understanding of endianness and >> writing 64-bit clean code, yes, but "not assuming a particular OS" is a pipe >> dream. >> Even if you follow POSIX to the letter, you'll find yourself special-casing >> behavior across Solaris, Linux and *BSD, and just about every subsystem on >> Windows. > > I don't see any real difference. In fact, OS portability is probably the > easier part to achieve due to existing standards (TCP/IP, OpenGL, etc) and a > plethora of cross-platform libraries. As for low-level code, its not > difficult to hide OS differences behind a small interface. In the end, > supporting more > than one platform is simply a choice to be made - mostly in the form of > choosing *not* to use tools which are deliberately designed to *prevent* > portability > (e.g. Direct3D). > > > On Sunday 08 June 2008 09:28:10 pm Kurt Stephens wrote: >> Worked with a programmer who did just such a thing for an application that >> he knew he need to port between Solaris, NeXTSTEP and Windows. It was a lot >> of >> work, but it only paid-off after the project lasted 6 years. > > Really? This isn't rocket science guys. I work for a small company which > ships GUI apps on Linux, Mac OS, Solaris, and Windows. I think I spend more > time > packaging the software for each platform than getting it to run. > You folks may be reading too much into my comment. I don't expect everyone > to write > software that will magically run everywhere. > I would just be happy if people didn't go out of their way to tie software to > any specific OS. >
I don't think developers with any real experience do not have portability in mind early in a project, it's probably mostly laziness and lack of platform-specific knowledge. But premature portability is like premature optimization. Porting a language and its system software is far different than porting a GUI application; Machine and OS dependencies: calling conventions, code generation issues, endianness (and having to support more than one), memory layout, alignment and protection, register allocation, object file formats, threading, I/O, signals, deviations from "standards", buggy libraries, etc. at a much lower-level. Most GUI environments have similar models that abstract most of the OS away -- e.g.: Java AWT. For a good example of how difficult portability is for system software, read the Boehm GC source. They have explicitly dropped portability support for old, uncommon platforms in recent versions. Sometimes it is too difficult to maintain it against the momentum of the rest of the world when effort is not warranted on a small user base. Its not impossible -- but portability much more difficult in lower layers because everything is different and changing underneath and everything above relies on those layers being stable, yet flexible. Hopefully well-layered and self-reinforcing systems like COLAs make portability easier than the typical programming toolset. But not without making some difficult and subtle decisions in lower levels: deciding where to keep things flexible and where to stick to an implementation plan. Things should be open to make portability more tractable, but not at the expense of progress. I'd rather work on a full-featured system on a single, commonly-used platform, than a system that is only partially functional on many platforms. > Achieving this is not a pipe dream and does not take 6 years I did not mean to imply it took 6 years to port the code, it took 6 years of feature development on the project by one developer to make porting worthwhile. During those 6 years one of those platforms became "unsupported" -- guess which one? The platform was my personal favorite and it could not scale > 2GB/process. Emulation and virtualization is the future and present of computing; maybe portability is not really an issue? Which parts of Ocean are difficult to port? Hmm... speaking of software which magically runs everywhere, > did anyone use the TAO system? Link? Kurt Stephens _______________________________________________ fonc mailing list [email protected] http://vpri.org/mailman/listinfo/fonc
