[comp.graphics] Comments on GKS and VAX GKS

mcconnell@dssdev.dec.com (John 'Flash' McConnell ZKO2-3/R56 381-2285) (03/12/88)

    Several people (Joseph Nathan Hall, Jim Saint, Darin Johnson,... )
    have written in about GKS recently.  As vice-chair of ANSI X3H3 and
    one of the original developers of VAX GKS, I thought I could clarify
    a few points.
 
>> I've been using GKS on a VAXstation GPX for almost a year now.  The worst
>> niggling-type problem with GKS under VMS is that GKS is really designed to
>> run under FORTRAN (that's right) and so all the "C" calls are by reference
>> (uggh) and many of the string paramegers [sic] use descriptors (double uggh).
> 
>Actually, this is more of a problem with VMS in general, not GKS.
>I haven't used GKS that much, but have used VMS quit a bit (been forced to use
>I should say).  Programming is a breeze if you are using FORTRAN, but a 
>pain in the butt for anything else.  In particular, descriptors are 
>done automatically in FORTRAN, but have to be built by hand in other 
>languages.  I would assume that descriptors are used with GKS in order
>to interface with FORTRAN better, not that GKS itself needs descriptors
>(I seriously doubt that any other OS has descriptors in the same format
>anyway).  I haven't seen GKS on a UNIX machine, but a would suspect that 
>the C interface has no descriptors or pass by reference parameters.

    Well, not quite.  The GKS standard is language independent.  The
    committees that developed GKS, ANSI X3H3 in the U.S. and ISO SC24
    internationally, are developing separate standards, called bindings,
    for using GKS with particular languages (FORTRAN, C, Pascal, Ada,
    and even LISP).  Each binding tries to offer the facilities of GKS
    within the language, in a manner consistent with current programming
    practice for that language. 

    When we wrote VAX GKS, we had a problem -- only the GKS/FORTRAN
    binding was approved.  So we provided two interfaces to VAX GKS: one
    that conforms to the GKS/FORTRAN binding standard and another that
    conforms to the VMS Inter-Language Calling Standard.  The second
    interface allows an application written in almost any VMS language
    to use VAX GKS.  The second interface also allows us to support each
    additional language binding as it is approved, without rewriting VAX
    GKS.  All that is required is a thin shell that maps the standard
    binding to the Inter-Language Calling Standard interface. 

    Ironically, VAX GKS is written in C.  The reason Digital has decided
    against offering a GKS/C binding so far is that this standard has
    not been approved, and because the preliminary standard has been
    unstable.  The usual reason that programmers use a standard is
    because of the stability and portability that a standard offers.
    Providing a non-standard, unstable C binding would be a disservice
    to our customers. 

    Rather than embedding descriptors and other VMS-isms into your
    applications, I suggest defining a macro file for inclusion with
    your application that handles this for you, for example: 

	#define close_ws( wsid )\
	    gks$close_ws( &wsid );

    Then, when the GKS/C binding is finally available, you can modify
    the include file, without having to recode your application. 
    
>> Aside from that, GKS is basically bloated, illogical and inefficient and I
>> can't understand why anyone would want to use GKS on a Mac instead of
>> QuickDraw.

    Comparing GKS with QuickDraw is like comparing apples (tm?) and
    oranges. As I pointed out above, the main reason programmers use GKS
    is for stability and portability.  GKS implementations exist for
    everything from CRAY's to 8080's (but not 8008's as far as I know :-))
    and from E&S high-performance workstations to Tektronix 4010
    storage tubes. GKS has many faults, but I don't know of a better way
    to write portable applications. 

    I'd also like to say a word for the committee membership.  GKS was
    designed by a committee, and it shows, but that doesn't mean the
    committee members are less intelligent or less in touch with the
    state of the art.  Quite the contrary -- it shows how difficult it
    is to design a graphics system in a committee.  I've studied and
    worked in several organizations with high-powered reputations, but I
    have never worked with such a concentration of intelligent,
    cultured, professionals as on the committee.

    If anybody would like to see whether they can do a better job, they
    should contact me about joining X3H3.  We have several new projects
    underway; including ones on X11, Image Processing, PHIGS+ and GKS-9X.
    
John McConnell			    [+1] (603) 881-2285
Digital Equipment Corp.		    mcconnell@dssdev.dec.com
110 Spit Brook Road
Nashua, NH 03063
ZKO2-3/R56