Newsgroups: comp.lang.lisp
Path: cantaloupe.srv.cs.cmu.edu!das-news2.harvard.edu!news2.near.net!news.mathworks.com!hookup!olivea!news.hal.COM!decwrl!netcomsv!netcom.com!192.0.2.3!npm
From: npm@indeed.netcom.com (Niels P. Mayer)
Subject: Re: Newbie - where to start?!?!
In-Reply-To: ichudov@wiltel.com's message of 14 Dec 1994 18:00:56 GMT
Message-ID: <NPM.94Dec15105135@indeed.netcom.com>
Sender: mayer@netcom.com (Niels P. Mayer)
Reply-To: mayer@netcom.com
Organization: Enterprise Integration Technologies, Menlo Park, CA
References: <3cnbso$l8v@gateway.wiltel.com>
Date: Thu, 15 Dec 1994 18:51:35 GMT
Lines: 235


In article <3cnbso$l8v@gateway.wiltel.com> ichudov@wiltel.com (Igor Chudov) writes:
> I wanted to learn LISP by myself. I work on RS-6000, AIX. What FREE 
> implementation of LISP would you recommend me to start with? Pointers and
> suggestions are appreciated. 

Newbies have told me they've learnt Lisp by programming in WINTERP. One of
the advantages mentioned are the benefits of being able to see, feel and
touch the graphics generated as a byproduct of one's programming. Instead
of learning to manipulate symbols and boring lits of parenthesized
expressions, students find it more entertaining to be able to interact with
and visualize their problem domain directly in X/Motif. WINTERP's XmGraph
widget allows you to visualize Lisp structures, e.g.
winterp/examples/grph-sexpr.lsp allows s-exressions to be displayed as
trees.

WINTERP is free, and runs on AIX ...

Lisp is also best learnt (IMHO) by starting with other examples and playing
with them interactively. Attempt to modify an existing program, or try to
add new features. Feel free to program by trial and error -- that's what
learning is about. Unlike other environments, Lisp makes trial and error
problem solving both forgiving and rapid.

To bootstrap the learning process, WINTERP comes with lots of examples of
Lisp programming, concentrating on creating simple GUI and/or graphics
applications. WINTERP also comes with some 'mini-applications' written in
Winterp-Lisp that are useful in their own right -- a 'grep' search browser,
a directory comparison and 'diff' browser, a simple mail browser, a
calculator, a calendar, etc.

For further information, as well as anonymous ftp source location and WWW
URL, see below:

--------------------

        WINTERP -- THE OSF/MOTIF WIDGET INTERPRETER
   
	by  Niels Mayer (mayer@eit.com, http://www.eit.com/people/mayer.html)
            Enterprise Integration Technologies
            800 El Camino Real, Fourth Floor
            Menlo Park, CA 94025

	WWW Home Page: http://www.eit.com/software/winterp/winterp.html
	Anonymous FTP: ftp://ftp.x.org/contrib/devel_tools/winterp-2.XX.tar.gz
		       (where XX represents the latest version, currently 03)
	Mailing List: winterp-request@netcom.com

WINTERP is the OSF/Motif *W*idget *INTERP*reter, an application development
environment enabling rapid prototyping of graphical user-interfaces (GUI)
through the interactive programmatic manipulation of user interface objects
and their attached actions.  WINTERP is also an excellent platform for
delivering extensible or customizable applications.  By embedding a small,
efficient Lisp interpreter with UI primitives within the delivered
application, users and system integrators can tailor the static and dynamic
layout of the UI, UI/application dialogue, and application functionality.

WINTERP is a good tool for learning and experimenting with the capabilities
of the OSF/Motif UI toolkit, allowing UI designers to more easily play "what
if" games with different interface styles.  WINTERP's implementation
provides a compromise between the prototyping and extensibility advantages of
Lisp environments, and the inefficiency and expenses of delivering Unix
applications under environments such as Common Lisp.  Typically, prototyping
and customization are done entirely in interpreted Lisp; for delivery,
efficiency-critical low-level code may be written in C and is easily exported
to the interpreter as a new primitive.

WINTERP was first made publicly available on the X11r4 "contrib"
distribution and new releases have appeared on the X11r5 and X11r6
distribution.  The recent X11r6 release of WINTERP 2.0 significantly
improves on previous releases by providing a variety of developer tools and
libraries for increased productivity.  Improved functionality is delivered via
object-oriented graphics and 2.5D animation, asynchronous subprocesses, the
XmGraph widget (for creating directed acyclic graphs, trees, and
direct-manipulation displays), the Table widget (GUI layout using tbl(1)-style
specifications), GIF support, etc.

WINTERP's interpreter is based on David Betz, Tom Almy, Luke Tierney et al's
XLISP-PLUS.  The interpreter's Smalltalk-inspired object system enables a
truly object oriented interface to the X11 toolkit Intrinsics (Xt) and the
OSF/Motif widget set.  WINTERP's use of a real programming language for
customization/prototyping allows WINTERP based applications to be much more
flexible than applications using lower-level and less-general languages
provided by the X resource database, Brunecky&Widget Creation Library
(WCL), OSF/Motif's UIL (user interface language), and Ousterhout's TCL/Tk.
Furthermore, the use of object-orientation at a fundamental level within the
application UI code allows WINTERP-based applications to scale more
effectively than other languages.

WINTERP 2.0 features an object-oriented 2.5D graphics and animation "widget"
based on John Stasko's Xtango path transition paradigm.  Both for static and
dynamic graphics, this high-level interface simplifies and abstracts away much
of the low-level drudgery required to create 2.5 D graphics interfaces --
smooth, flicker free display updates occur as complex nonrectangular graphical
objects move around and obscure and uncover each other.  Animation composition
operations allow multiple individual shapes to all move "simultaneously"
through sequences of animation frames.  The graphics are pixel-independent and
easily resizable, scalable and zoomable.  Each primitive graphics image class
supports its own set of class specific animation and movement methods, while
some operations (e.g.  movement, fill, etc) are polymorphic.  The following
primitive objects are supported:

	o Line (w/ color, forward-arrow, backward-arrow, bidirectional-arrow,
	  thickness, and style options);
	o Rectangle (w/ color, fill options);
	o Circle (w/ color, fill options);
	o Ellipse (w/ color, fill options);
	o Polygon (w/ color, fill options);
	o Polyline (w/ color, forward-arrow, backward-arrow, bidirectional-
	  arrow, line style, line-thickness options);
	o Spline (w/ color, line-style and line-thickness options)
	o Text (w/ font, color, and centering options)
	o Bitmaps and Bitmap movies
	o GIF images.

The primitive graphics classes may also be contained in a composite image
class, which provides a grouping and layering principle for new classes
presenting multiple images.  Composite images allow the construction of
independent layers of animation objects which may be operated on in groups.

WINTERP's graphics capabilities enable simple game-style animation,
employing multiple layers of arbitrarily shaped objects.  Furthermore,
application-specific interactive-graphics capabilities may be encapsulated
into a new Widget-Class.  This significantly simplifies the creation and
integration of new graphics widgets into the system -- these special widgets
look like normal Motif widgets to the rest of the system.

To enable GUI-applications based on existing Unix facilities,
WINTERPprovides primitives for collecting data from Unix processes, and
facilities for interacting with other Unix processes.  These facilities make
it possible to glue together existing Unix functionality into a GUI based
application with a relatively small amount of WINTERP-Lisp "glue".
WINTERP2.0 features the ability to run multiple interactive, asynchronous
Unix subprocesses without blocking GUI interactivity.  This feature is useful
for creating GUI interfaces to existing terminal-based programs, and can also
be used for connecting to interactive network services and databases.

An environment similar to WINTERP's already exists in the Gnu-Emacs text
editor -- WINTERP was strongly influenced by Gnu-Emacs's successful design.
In Gnu-Emacs, a mini-Lisp interpreter is used to extend the editor to provide
text-browser style interfaces to a number of Unix applications (e.g.  e-mail
user agents, directory browsers, debuggers, etc.).  Whereas Emacs-Lisp enables
the creation of new applications by tying together C Implemented primitives
operating on text-buffer UI objects, WINTERP-Lisp ties together operations
on graphical UI objects implemented by the Motif widgets.  Both achieve a high
degree of customizability that is common for systems implemented in Lisp,
while still attaining the speed of execution and (relatively) small size
associated with C-implemented applications.

==========
WINTERP FEATURES:
==========

	o Free with non-restrictive copyright -- available via anonymous ftp
	  from ftp.x.org, directory contrib/devel_tools, file
	  winterp-2.XX.tar.gz.
	o Portable -- entirely implemented via machine independent C source
	  and X11/Xt/Motif libraries.
	o OSF/Motif widgets are real XLISP objects widgets can be specialized
	  via subclassing, methods added or altered, etc.
	o Automatic storage management (via garbage collection) of Motif/Xt/X
	  data, animation and graphics data, and application resources.
	o Contains facilities for simple "direct manipulation" of UI
	  components.
	o Interface to Gnu Emacs's lisp-mode allows code to be developed and
	  tested without leaving the editor.
	o Interactive programming also available in the "WINTERP Control
	  Panel", with editing taking place in a Motif text widget controlled
	  by WINTERP.
	o Built-in RPC mechanism for inter-application communications,
	  implemented via serverized, event-driven Lisp interpreter.
	o XmGraph widget for creating directed acyclic graphs, trees, and
	  direct-manipulation displays.
	o Table widget allows constraint-based GUI static layout using
	  tbl(1)-style specifications.

----------
REFERENCES ON WINTERP, AND ITS COMPONENTS:
----------

David Michael Betz.  "XLISP: An Object-oriented Lisp (version 2.1)"
Unpublished documentation accompanying the public release of Xlisp software.
David Michael Betz, P.O.  Box 144, Peterborough, NH 03458, April, 1989.

Olaf Heimburger.  "Elche Im Winter -- Interaktive X-Applicationbuilder unter
Lisp -- Elk und WINTERP." iX, July 1991, pp 64-68.

Niels P.  Mayer, Allan W.  Shepherd and Allan J.  Kuchinsky.  "Winterp: An
object-oriented, rapid prototyping, development and delivery environment for
building extensible applications with the OSF/Motif UI Toolkit." In
Proceedings Xhibition '90, X Window System and Open Systems Technical
Conference, San Jose, CA, May 1990, pp 49-64.

Niels P.  Mayer, Allan W.  Shepherd and Allan J.  Kuchinsky.  The WINTERP
Widget INTERPreter -- An Application Prototyping and Extension Environment for
OSF/Motif.  In Proceedings X Into The Future, The European X Users Group
Autumn Conference 1990, Surrey, UK, September 1990, pp.  33-55.

Niels P.  Mayer.  The WINTERP Widget INTERPreter -- A Lisp Prototyping and
Extension Environment for OSF/Motif-based Applications and User-Interfaces.
Lisp Pointers, ACM SIGPLAN, Volume IV, Number 1, pp 45-60.

Niels P.  Mayer.  The WINTERP OSF/Motif Widget INTERPreter -- A graphical
user-interface language for rapid prototyping and delivering extensible
applications.  In Proceedings Motif '91, First Annual International Motif
Users Meeting, Washington DC, December 1991, pp.  248-269.

John T.  Stasko.  The Path-Transition Paradigm: A Practical Methodology for
Adding Animation to Program Interfaces.  Journal of Visual Languages and
Computing.  (date, volume, page, publisher info unknown).

Don Libes.  Expect: Curing Those Uncontrollable Fits of Interaction,
Proceedings of the Summer 1990 USENIX Conference, Anaheim, CA, June 11-15,
1990.

----------
PAPERS DESCRIBING APPLICATIONS WRITTEN USING WINTERP:
----------

Allan Shepherd, Niels Mayer, and Allan Kuchinsky.  STRUDEL: An Extensible
Electronic Conversation Toolkit.  In David Marca and Geoffrey Bock, editors,
GROUPWARE: Software for Computer-Supported Cooperative Work, IEEE Computer
Society Press, 1992, pp.  505-518.  (originally, in proceedings Conference on
Computer-Supported Cooperative Work, Los Angeles, October 1990, pp.  93-104.)

Jay Glicksman, Glenn Kramer, and Niels Mayer.  "Internet Publishing via the
World Wide Web".  In proceedings Groupware '94, August 1994.  San Jose, CA.

------------------------------------------------------------------------------
--
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
= Niels Mayer ..... mayer@eit.com .... http://www.eit.com/people/mayer.html =
=  Multimedia Engineering Collaboration Environment (MM authoring for WWW)  =
=  Enterprise Integration Technologies, 800 El Camino Real, Menlo Park, CA  =
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
