Oscar Papel's Web Log

Thursday, November 11, 2004

How to write Software... (part 3)

So, let's start. I need to write imaging software that is cross-platform. It should perform and feel like a native application on every platform it supports. It should also be able to take advantage of any platform specific features but degrade gracefully on platforms that lack those features. It should be capable of taking advantage of multiple processors. It should be pointer size agnostic (32 or 64 bit)

Programming language choices available to me:
C
C++
Managed C++
ObjC
C#
Java
Visual Basic
VB.NET

C : Granddaddy of them all
pro's - ubiquitous. performs well. portable.
con's - low level, lack of object oriented concepts, verbose.

C++ : C with objects
pro's - same as C but with OO concepts
con's - interfacing and binding are more difficult than C

Managed C++ : Managed C with objects
pro's - same as C++ but runs within the confines of the CLR.
con's - performance is not as good as C++, not portable.

ObjC - Native objects on OS/X
pro's - interfacing done at runtime
con's - not portable, message based calls slower than direct function calls.

C# - Managed C with objects
pro's - easy language, portable using mono or pnet on non MS platforms.
con's - performance is not as good as C, C++

Java - portable C-like language
pro's - portable
con's - different platforms have slightly different implementations, performance

Visual Basic, VB.NET - missing critical pointer manipulation

In the next part, we'll see what I chose and why I chose it.

0 Comments:

Post a Comment

<< Home