Mike Thomas wrote:
> c) What's the state of Windows support?
I had a look into this today and found that the Windows GnuStep graphics is
alpha only but under active development.
I feel that if you were to choose to use Objective C (much as it appeals),
you might as well go all the way and use Smalltalk.
That really would be going all the way
Using Smalltalk would
probably reduce the developer base to you and me; actually, probably
just you.
> Even if people can learn it, will they? Or will they turn away as soon
> as they realise that it's in a language they don't currently
> understand?
I have to say that despite it's limitations, C is an excellent language and
there is plenty of scope for making the current Grass source base more
maintainable as discussed in other recent threads.
One of the main reasons for C's popularity is its lack of limitations.
Sure, you might have to write more code (possibly a lot more) than in
a high-level language, but there's very little that C simply won't
allow you to do.
The other main reason is that it's feasible to:
a) interface between C and just about any other language, and
b) link object code compiled on one system (e.g. yours) with object
code compiled on another system (e.g. your OS vendor's).
As a matter of interest, I wrote from scratch some some simple minded
Haskell which parses and displays Grass 4 and 5 CELL rasters (plain and RLE)
but not FCELL, including several variations of colour file and it took only
a few hundred lines of code, so there is plenty of attraction in using a
higher level language than C.
FWIW, I did r.out.ppm3 in 76 lines of Haskell (plus ~300 lines of
GreenCard for the relevant libgis bindings). For languages other than
C, I would strongly recommend interfacing to the GRASS libraries
rather than reimplementing them.
It's a nice language for "bespoke" applications, but it's completely
impractical for writing code which is intended to be distributed. The
language and the main libraries are so fragile that a lot of code will
only compile with one specific version of the compiler. Binary
compatibility is totally non-existent.
The same issues apply to a lot of other languages. C++ is
(unsurprisingly) the only one which really comes close, and even that
is problematic.
It works well on Windows, where anything other than 100% binary
compatible with the current version of MSVC is considered an outright
bug. Linux isn't too bad, but even there programs written in C++ are a
lot less portable than those written in C. On commercial Unices, you
need the complete GNU toolchain and libraries, and to have built any
other libraries with those; otherwise you're asking for trouble.
--
Glynn Clements <glynn.clements@virgin.net>