Commit c39bd6d9 authored by Dave Cooper's avatar Dave Cooper

merged dad's edits into manual.

parent 2d0f3045
......@@ -14,6 +14,8 @@ bin
*.idx
*.log
*.toc
*.ilg
*.ind
configure.el
systems.txt
......
\BOOKMARK [0][-]{chapter.1}{Introduction}{}% 1
\BOOKMARK [1][-]{section.1.1}{Welcome}{chapter.1}% 2
\BOOKMARK [1][-]{section.1.2}{Knowledge Base Concepts According to Genworks}{chapter.1}% 3
\BOOKMARK [1][-]{section.1.3}{Goals for this Tutorial}{chapter.1}% 4
\BOOKMARK [1][-]{section.1.4}{What is GenDL?}{chapter.1}% 5
\BOOKMARK [1][-]{section.1.5}{Why GDL \(what is GDL good for?\)}{chapter.1}% 6
\BOOKMARK [1][-]{section.1.6}{What GDL is not}{chapter.1}% 7
\BOOKMARK [0][-]{chapter.2}{Installation}{}% 8
\BOOKMARK [1][-]{section.2.1}{Installation of pre-packaged Gendl}{chapter.2}% 9
\BOOKMARK [2][-]{subsection.2.1.1}{Download the Software and retrieve a license key}{section.2.1}% 10
\BOOKMARK [2][-]{subsection.2.1.2}{Unpack the Distribution}{section.2.1}% 11
\BOOKMARK [2][-]{subsection.2.1.3}{Make a Desktop Shortcut}{section.2.1}% 12
\BOOKMARK [2][-]{subsection.2.1.4}{Populate your Initialization File}{section.2.1}% 13
\BOOKMARK [1][-]{section.2.2}{Installation of open-source Gendl}{chapter.2}% 14
\BOOKMARK [2][-]{subsection.2.2.1}{Install and Configure your Common Lisp environment}{section.2.2}% 15
\BOOKMARK [2][-]{subsection.2.2.2}{Load and Configure Quicklisp}{section.2.2}% 16
\BOOKMARK [1][-]{section.2.3}{System Startup and Testing}{chapter.2}% 17
\BOOKMARK [2][-]{subsection.2.3.1}{System Startup}{section.2.3}% 18
\BOOKMARK [2][-]{subsection.2.3.2}{Basic System Test}{section.2.3}% 19
\BOOKMARK [2][-]{subsection.2.3.3}{Full Regression Test}{section.2.3}% 20
\BOOKMARK [1][-]{section.2.4}{Getting Help and Support}{chapter.2}% 21
\BOOKMARK [0][-]{chapter.3}{Basic Operation of the Gendl Environment}{}% 22
\BOOKMARK [1][-]{section.3.1}{What is Different about Gendl?}{chapter.3}% 23
\BOOKMARK [1][-]{section.3.2}{Startup, ``Hello, World!'' and Shutdown}{chapter.3}% 24
\BOOKMARK [2][-]{subsection.3.2.1}{Startup}{section.3.2}% 25
\BOOKMARK [2][-]{subsection.3.2.2}{Developing and Testing a Gendl ``Hello World'' application}{section.3.2}% 26
\BOOKMARK [2][-]{subsection.3.2.3}{Shutdown}{section.3.2}% 27
\BOOKMARK [1][-]{section.3.3}{Working with Projects}{chapter.3}% 28
\BOOKMARK [2][-]{subsection.3.3.1}{Directory Structure}{section.3.3}% 29
\BOOKMARK [2][-]{subsection.3.3.2}{Source Files within a source/ subdirectory}{section.3.3}% 30
\BOOKMARK [2][-]{subsection.3.3.3}{Generating an ASDF System}{section.3.3}% 31
\BOOKMARK [2][-]{subsection.3.3.4}{Compiling and Loading a System}{section.3.3}% 32
\BOOKMARK [1][-]{section.3.4}{Customizing your Environment}{chapter.3}% 33
\BOOKMARK [1][-]{section.3.5}{Saving the World}{chapter.3}% 34
\BOOKMARK [1][-]{section.3.6}{Starting up a Saved World}{chapter.3}% 35
\BOOKMARK [0][-]{chapter.4}{Understanding Common Lisp}{}% 36
\BOOKMARK [1][-]{section.4.1}{S-expression Fundamentals}{chapter.4}% 37
\BOOKMARK [1][-]{section.4.2}{Fundamental CL Data Types}{chapter.4}% 38
\BOOKMARK [2][-]{subsection.4.2.1}{Numbers}{section.4.2}% 39
\BOOKMARK [2][-]{subsection.4.2.2}{Strings}{section.4.2}% 40
\BOOKMARK [2][-]{subsection.4.2.3}{Symbols}{section.4.2}% 41
\BOOKMARK [2][-]{subsection.4.2.4}{List Basics}{section.4.2}% 42
\BOOKMARK [2][-]{subsection.4.2.5}{The List as a Data Structure}{section.4.2}% 43
\BOOKMARK [0][-]{chapter.5}{Understanding Gendl \204 Core GDL Syntax}{}% 44
\BOOKMARK [1][-]{section.5.1}{Defining a Working Package}{chapter.5}% 45
\BOOKMARK [1][-]{section.5.2}{Define-Object}{chapter.5}% 46
\BOOKMARK [1][-]{section.5.3}{Making Instances and Sending Messages}{chapter.5}% 47
\BOOKMARK [1][-]{section.5.4}{Objects}{chapter.5}% 48
\BOOKMARK [1][-]{section.5.5}{Sequences of Objects and Input-slots with a Default Expression}{chapter.5}% 49
\BOOKMARK [1][-]{section.5.6}{Summary}{chapter.5}% 50
\BOOKMARK [0][-]{chapter.6}{The Tasty Development Environment}{}% 51
\BOOKMARK [1][-]{subsection.6.0.1}{The Toolbars}{chapter.6}% 52
\BOOKMARK [2][-]{subsection.6.0.2}{View Frames}{subsection.6.0.1}% 53
\BOOKMARK [0][-]{chapter.7}{Working with Geometry in Gendl}{}% 54
\BOOKMARK [1][-]{section.7.1}{The Default Coordinate System in Gendl}{chapter.7}% 55
\BOOKMARK [1][-]{section.7.2}{Building a Geometric Gendl Model from LLPs}{chapter.7}% 56
\BOOKMARK [0][-]{chapter.8}{Custom User Interfaces in Gendl}{}% 57
\BOOKMARK [1][-]{section.8.1}{Package and Environment for Web Development}{chapter.8}% 58
\BOOKMARK [1][-]{section.8.2}{Traditional Web Pages and Applications}{chapter.8}% 59
\BOOKMARK [2][-]{subsection.8.2.1}{A Simple Static Page Example}{section.8.2}% 60
\BOOKMARK [2][-]{subsection.8.2.2}{A Simple Dynamic Page which Mixes HTML and Common Lisp/Gendl}{section.8.2}% 61
\BOOKMARK [2][-]{subsection.8.2.3}{Linking to Multiple Pages}{section.8.2}% 62
\BOOKMARK [2][-]{subsection.8.2.4}{Form Controls and Fillout-Forms}{section.8.2}% 63
\BOOKMARK [1][-]{section.8.3}{Partial Page Updates with gdlAjax}{chapter.8}% 64
\BOOKMARK [2][-]{subsection.8.3.1}{Steps to Create a gdlAjax Application}{section.8.3}% 65
\BOOKMARK [2][-]{subsection.8.3.2}{Including Graphics}{section.8.3}% 66
\BOOKMARK [0][-]{chapter.9}{More Common Lisp for Gendl}{}% 67
\BOOKMARK [0][-]{chapter.10}{Advanced Gendl}{}% 68
\BOOKMARK [0][-]{chapter.11}{Gendl Reference}{}% 69
\BOOKMARK [1][-]{section.11.1}{CL-LITE \(Compile-and-Load Lite Utility\)}{chapter.11}% 70
\BOOKMARK [2][-]{subsection.11.1.1}{Object Definitions}{section.11.1}% 71
\BOOKMARK [2][-]{subsection.11.1.2}{Function and Macro Definitions}{section.11.1}% 72
\BOOKMARK [1][-]{section.11.2}{COM.GENWORKS.DOM }{chapter.11}% 73
\BOOKMARK [1][-]{section.11.3}{COM.GENWORKS.DOM-HTML }{chapter.11}% 74
\BOOKMARK [1][-]{section.11.4}{COM.GENWORKS.DOM-LATEX }{chapter.11}% 75
\BOOKMARK [1][-]{section.11.5}{COM.GENWORKS.DOM-WRITERS }{chapter.11}% 76
\BOOKMARK [1][-]{section.11.6}{COM.YOYODYNE.BOOSTER-ROCKET }{chapter.11}% 77
\BOOKMARK [1][-]{section.11.7}{GENDL \(Base Core Kernel Engine\) Nicknames: Gdl, Genworks, Base}{chapter.11}% 78
\BOOKMARK [2][-]{subsection.11.7.1}{Object Definitions}{section.11.7}% 79
\BOOKMARK [2][-]{subsection.11.7.2}{Function and Macro Definitions}{section.11.7}% 80
\BOOKMARK [2][-]{subsection.11.7.3}{Variables and Constants}{section.11.7}% 81
\BOOKMARK [1][-]{section.11.8}{GDL-USER }{chapter.11}% 82
\BOOKMARK [1][-]{section.11.9}{GENDL-DOC }{chapter.11}% 83
\BOOKMARK [1][-]{section.11.10}{GEOM-BASE \(Wireframe Geometry\)}{chapter.11}% 84
\BOOKMARK [2][-]{subsection.11.10.1}{Object Definitions}{section.11.10}% 85
\BOOKMARK [2][-]{subsection.11.10.2}{Function and Macro Definitions}{section.11.10}% 86
\BOOKMARK [2][-]{subsection.11.10.3}{Variables and Constants}{section.11.10}% 87
\BOOKMARK [1][-]{section.11.11}{GWL \(Generative Web Language \(GWL\)\)}{chapter.11}% 88
\BOOKMARK [2][-]{subsection.11.11.1}{Object Definitions}{section.11.11}% 89
\BOOKMARK [2][-]{subsection.11.11.2}{Function and Macro Definitions}{section.11.11}% 90
\BOOKMARK [2][-]{subsection.11.11.3}{Variables and Constants}{section.11.11}% 91
\BOOKMARK [1][-]{section.11.12}{RAPHAEL }{chapter.11}% 92
\BOOKMARK [1][-]{section.11.13}{ROBOT \(Simplified Android Robot example \)}{chapter.11}% 93
\BOOKMARK [1][-]{section.11.14}{SURF \(NURBS Surface and Solids Geometry Primitives\)}{chapter.11}% 94
\BOOKMARK [1][-]{section.11.15}{TASTY \(Web-based Development Environment \(tasty\)\)}{chapter.11}% 95
\BOOKMARK [1][-]{section.11.16}{TREE \(Tree component used by Tasty and potentially as a UI component on its own\)}{chapter.11}% 96
\BOOKMARK [2][-]{subsection.11.16.1}{Object Definitions}{section.11.16}% 97
\BOOKMARK [1][-]{section.11.17}{YADD \(Yet Another Definition Documenter \(yadd\)\)}{chapter.11}% 98
\BOOKMARK [2][-]{subsection.11.17.1}{Object Definitions}{section.11.17}% 99
\BOOKMARK [1][-]{section.1.3}{Classic Definition of Knowledge Based Engineering \(KBE\)}{chapter.1}% 4
\BOOKMARK [1][-]{section.1.4}{Classic Caching Feature}{chapter.1}% 5
\BOOKMARK [1][-]{section.1.5}{Demand-Driven Evaluation}{chapter.1}% 6
\BOOKMARK [1][-]{section.1.6}{The Object-Oriented Paradigm meets the Functional paradigm}{chapter.1}% 7
\BOOKMARK [1][-]{section.1.7}{Object-oriented Systems}{chapter.1}% 8
\BOOKMARK [1][-]{section.1.8}{Object-oriented Analysis}{chapter.1}% 9
\BOOKMARK [1][-]{section.1.9}{Object-oriented Design}{chapter.1}% 10
\BOOKMARK [1][-]{section.1.10}{Goals for this Manual}{chapter.1}% 11
\BOOKMARK [1][-]{section.1.11}{What is GDL?}{chapter.1}% 12
\BOOKMARK [1][-]{section.1.12}{Why GDL \(what is GDL good for?\)}{chapter.1}% 13
\BOOKMARK [1][-]{section.1.13}{What GDL is not}{chapter.1}% 14
\BOOKMARK [0][-]{chapter.2}{Installation}{}% 15
\BOOKMARK [1][-]{section.2.1}{Installation of pre-packaged GDL}{chapter.2}% 16
\BOOKMARK [2][-]{subsection.2.1.1}{Download the Software and retrieve a license key}{section.2.1}% 17
\BOOKMARK [2][-]{subsection.2.1.2}{Unpack the Distribution}{section.2.1}% 18
\BOOKMARK [1][-]{section.2.2}{Installation of open-source Gendl}{chapter.2}% 19
\BOOKMARK [2][-]{subsection.2.2.1}{Install and Configure your Common Lisp environment}{section.2.2}% 20
\BOOKMARK [2][-]{subsection.2.2.2}{Load and Configure Quicklisp}{section.2.2}% 21
\BOOKMARK [2][-]{subsection.2.2.3}{Load and Start Gendl}{section.2.2}% 22
\BOOKMARK [1][-]{section.2.3}{System Testing}{chapter.2}% 23
\BOOKMARK [2][-]{subsection.2.3.1}{Basic Sanity Test}{section.2.3}% 24
\BOOKMARK [2][-]{subsection.2.3.2}{Full Regression Test}{section.2.3}% 25
\BOOKMARK [1][-]{section.2.4}{Getting Help and Support}{chapter.2}% 26
\BOOKMARK [0][-]{chapter.3}{Basic Operation of the GDL Environment}{}% 27
\BOOKMARK [1][-]{section.3.1}{What is Different about GDL?}{chapter.3}% 28
\BOOKMARK [1][-]{section.3.2}{Startup, ``Hello, World!'' and Shutdown}{chapter.3}% 29
\BOOKMARK [2][-]{subsection.3.2.1}{Startup}{section.3.2}% 30
\BOOKMARK [2][-]{subsection.3.2.2}{Developing and Testing a ``Hello World'' application}{section.3.2}% 31
\BOOKMARK [2][-]{subsection.3.2.3}{Shutdown}{section.3.2}% 32
\BOOKMARK [1][-]{section.3.3}{Working with Projects}{chapter.3}% 33
\BOOKMARK [2][-]{subsection.3.3.1}{Directory Structure}{section.3.3}% 34
\BOOKMARK [2][-]{subsection.3.3.2}{Source Files within a source/ subdirectory}{section.3.3}% 35
\BOOKMARK [2][-]{subsection.3.3.3}{Generating an ASDF System}{section.3.3}% 36
\BOOKMARK [2][-]{subsection.3.3.4}{Compiling and Loading a System}{section.3.3}% 37
\BOOKMARK [1][-]{section.3.4}{Customizing your Environment}{chapter.3}% 38
\BOOKMARK [1][-]{section.3.5}{Saving the World}{chapter.3}% 39
\BOOKMARK [1][-]{section.3.6}{Starting up a Saved World}{chapter.3}% 40
\BOOKMARK [0][-]{chapter.4}{Understanding Common Lisp}{}% 41
\BOOKMARK [1][-]{section.4.1}{S-expression Fundamentals}{chapter.4}% 42
\BOOKMARK [1][-]{section.4.2}{Fundamental CL Data Types}{chapter.4}% 43
\BOOKMARK [2][-]{subsection.4.2.1}{Numbers}{section.4.2}% 44
\BOOKMARK [2][-]{subsection.4.2.2}{Strings}{section.4.2}% 45
\BOOKMARK [2][-]{subsection.4.2.3}{Symbols}{section.4.2}% 46
\BOOKMARK [2][-]{subsection.4.2.4}{List Basics}{section.4.2}% 47
\BOOKMARK [2][-]{subsection.4.2.5}{The List as a Data Structure}{section.4.2}% 48
\BOOKMARK [0][-]{chapter.5}{Understanding GDL \204 Core GDL Syntax}{}% 49
\BOOKMARK [1][-]{section.5.1}{Defining a Working Package}{chapter.5}% 50
\BOOKMARK [1][-]{section.5.2}{Define-Object}{chapter.5}% 51
\BOOKMARK [1][-]{section.5.3}{Making Instances and Sending Messages}{chapter.5}% 52
\BOOKMARK [1][-]{section.5.4}{Objects}{chapter.5}% 53
\BOOKMARK [1][-]{section.5.5}{Sequences of Objects and Input-slots with a Default Expression}{chapter.5}% 54
\BOOKMARK [1][-]{section.5.6}{Summary}{chapter.5}% 55
\BOOKMARK [0][-]{chapter.6}{The Tasty Development Environment}{}% 56
\BOOKMARK [1][-]{subsection.6.0.1}{The Toolbars}{chapter.6}% 57
\BOOKMARK [2][-]{subsection.6.0.2}{View Frames}{subsection.6.0.1}% 58
\BOOKMARK [0][-]{chapter.7}{Working with Geometry in Gendl}{}% 59
\BOOKMARK [1][-]{section.7.1}{The Default Coordinate System in Gendl}{chapter.7}% 60
\BOOKMARK [1][-]{section.7.2}{Building a Geometric Gendl Model from LLPs}{chapter.7}% 61
\BOOKMARK [0][-]{chapter.8}{Custom User Interfaces in Gendl}{}% 62
\BOOKMARK [1][-]{section.8.1}{Package and Environment for Web Development}{chapter.8}% 63
\BOOKMARK [1][-]{section.8.2}{Traditional Web Pages and Applications}{chapter.8}% 64
\BOOKMARK [2][-]{subsection.8.2.1}{A Simple Static Page Example}{section.8.2}% 65
\BOOKMARK [2][-]{subsection.8.2.2}{A Simple Dynamic Page which Mixes HTML and Common Lisp/Gendl}{section.8.2}% 66
\BOOKMARK [2][-]{subsection.8.2.3}{Linking to Multiple Pages}{section.8.2}% 67
\BOOKMARK [2][-]{subsection.8.2.4}{Form Controls and Fillout-Forms}{section.8.2}% 68
\BOOKMARK [1][-]{section.8.3}{Partial Page Updates with gdlAjax}{chapter.8}% 69
\BOOKMARK [2][-]{subsection.8.3.1}{Steps to Create a gdlAjax Application}{section.8.3}% 70
\BOOKMARK [2][-]{subsection.8.3.2}{Including Graphics}{section.8.3}% 71
\BOOKMARK [0][-]{chapter.9}{More Common Lisp for Gendl}{}% 72
\BOOKMARK [0][-]{chapter.10}{Advanced Gendl}{}% 73
\BOOKMARK [0][-]{chapter.11}{Gendl Reference}{}% 74
\BOOKMARK [1][-]{section.11.1}{CL-LITE \(Compile-and-Load Lite Utility\)}{chapter.11}% 75
\BOOKMARK [2][-]{subsection.11.1.1}{Object Definitions}{section.11.1}% 76
\BOOKMARK [2][-]{subsection.11.1.2}{Function and Macro Definitions}{section.11.1}% 77
\BOOKMARK [1][-]{section.11.2}{COM.GENWORKS.DOM }{chapter.11}% 78
\BOOKMARK [1][-]{section.11.3}{COM.GENWORKS.DOM-HTML }{chapter.11}% 79
\BOOKMARK [1][-]{section.11.4}{COM.GENWORKS.DOM-LATEX }{chapter.11}% 80
\BOOKMARK [1][-]{section.11.5}{COM.GENWORKS.DOM-WRITERS }{chapter.11}% 81
\BOOKMARK [1][-]{section.11.6}{GENDL \(Base Core Kernel Engine\) Nicknames: Gdl, Genworks, Base}{chapter.11}% 82
\BOOKMARK [2][-]{subsection.11.6.1}{Object Definitions}{section.11.6}% 83
\BOOKMARK [2][-]{subsection.11.6.2}{Function and Macro Definitions}{section.11.6}% 84
\BOOKMARK [2][-]{subsection.11.6.3}{Variables and Constants}{section.11.6}% 85
\BOOKMARK [1][-]{section.11.7}{GDL-USER }{chapter.11}% 86
\BOOKMARK [1][-]{section.11.8}{GENDL-DOC }{chapter.11}% 87
\BOOKMARK [1][-]{section.11.9}{GEOM-BASE \(Wireframe Geometry\)}{chapter.11}% 88
\BOOKMARK [2][-]{subsection.11.9.1}{Object Definitions}{section.11.9}% 89
\BOOKMARK [2][-]{subsection.11.9.2}{Function and Macro Definitions}{section.11.9}% 90
\BOOKMARK [2][-]{subsection.11.9.3}{Variables and Constants}{section.11.9}% 91
\BOOKMARK [1][-]{section.11.10}{GWL \(Generative Web Language \(GWL\)\)}{chapter.11}% 92
\BOOKMARK [2][-]{subsection.11.10.1}{Object Definitions}{section.11.10}% 93
\BOOKMARK [2][-]{subsection.11.10.2}{Function and Macro Definitions}{section.11.10}% 94
\BOOKMARK [2][-]{subsection.11.10.3}{Variables and Constants}{section.11.10}% 95
\BOOKMARK [1][-]{section.11.11}{JQUERY }{chapter.11}% 96
\BOOKMARK [1][-]{section.11.12}{RAPHAEL }{chapter.11}% 97
\BOOKMARK [1][-]{section.11.13}{ROBOT \(Simplified Android Robot example \)}{chapter.11}% 98
\BOOKMARK [1][-]{section.11.14}{SURF \(NURBS Surface and Solids Geometry Primitives\)}{chapter.11}% 99
\BOOKMARK [1][-]{section.11.15}{TASTY \(Web-based Development Environment \(tasty\)\)}{chapter.11}% 100
\BOOKMARK [1][-]{section.11.16}{TREE \(Tree component used by Tasty and potentially as a UI component on its own\)}{chapter.11}% 101
\BOOKMARK [2][-]{subsection.11.16.1}{Object Definitions}{section.11.16}% 102
\BOOKMARK [1][-]{section.11.17}{YADD \(Yet Another Definition Documenter \(yadd\)\)}{chapter.11}% 103
\BOOKMARK [2][-]{subsection.11.17.1}{Object Definitions}{section.11.17}% 104
This diff is collapsed.
......@@ -80,14 +80,16 @@ written consent from Genworks International.")
;;
(asdf:run-shell-command
(format nil "cd ~a; /opt/local/bin/pdflatex -interaction=nonstopmode tutorial.tex" pdf-path))
;;(format nil "cd ~a; /opt/local/bin/pdflatex -interaction=nonstopmode tutorial.tex" pdf-path)
(format nil "cd ~a; /usr/texbin/pdflatex -interaction=nonstopmode tutorial.tex" pdf-path)
)
(asdf:run-shell-command
(format nil "cd ~a; /opt/local/bin/makeindex tutorial" pdf-path))
(format nil "cd ~a; /usr/texbin/makeindex tutorial" pdf-path))
(dotimes (n level)
(asdf:run-shell-command
(format nil "cd ~a; /opt/local/bin/pdflatex -interaction=nonstopmode tutorial.tex" pdf-path)))))
(format nil "cd ~a; /usr/texbin/pdflatex -interaction=nonstopmode tutorial.tex" pdf-path)))))
(define-object assembly (com.genworks.dom:assembly)
......
......@@ -22,45 +22,49 @@
(in-package :gendl-doc)
(defparameter *basic-operation*
`((:chapter :title "Basic Operation of the Gendl Environment")
"This chapter will step you through all the basic steps of
operating a typical Gendl environment. We will not go into any depth
about the additional features of the environment or language syntax in
this section --- this is just for getting familiar and practicing with
the mechanics of operating the environment with a keyboard."
((:section :title "What is Different about Gendl?")
"Gendl is a dynamic language environment with incremental compiling and in-memory
definitions. That means that as long as the system is running, you can "
`((:chapter :title "Basic Operation of the GDL Environment")
"This chapter will lead you through all the basic steps of
operating a typical GDL-based development environment. We will not go
into any depth about the additional features of the environment or
language syntax in this section --- this is just for getting familiar
and practicing with the mechanics of operating the environment with a
keyboard."
((:section :title "What is Different about GDL?")
"GDL is a dynamic language environment with incremental
compiling and in-memory definitions. That means that as long as the
system is running you can "
(:emph "compile")
" new "
(:emph "definitions")
" of functions, objects, etc, and they will immediately become available as part of the running system,
and you can begin testing them immediately or update an existing set of objects to observe their new behavior.
In many other programming language systems, you have to start the
system from the beginning and reload all the files in order to test
new functionality.
" of functions, objects, etc, and they will immediately become
available as part of the running system, and you can begin testing
them immediately or update an existing set of objects to observe their
new behavior.
In many other programming language systems, to introduce a new
function or object, one has to start the system from the beginning and
reload all the files in order to test new functionality.
In Gendl, if you simply shut down the system after having compiled and
loaded a set of files with new definitions, then when you restart the
system you will have to recompile and/or reload those definitions in
order to bring the system back into the same state. This is typically
done automatically, using commands placed into the "
In GDL, if you shut down the system after having compiled and loaded a
set of files with new definitions, then when you restart the system
you will have to recompile and/or reload those definitions in order to
bring the system back into the same state. This is typically done
automatically, using commands placed into the "
(:texttt "gdlinit.cl")
" initialization file, as introduced in Section "
(:ref "sec:customizingyourenvironment")
". Alternatively, you can compile and load definitions into your Gendl
session, then save the ``world'' in that state. That way, it is
possible to start a new Gendl ``world'' which already has all your
". Alternatively, you can compile and load definitions into
your session, then save the ``world'' in that state. That way it is
possible to start a new GDL ``world'' which already has all your
application's definitions loaded and ready for use, without having to
procedurally reload any files. You can then begin to make and test new
definitions (and re-definitions) starting from this new ``world.''")
((:section :title "Startup, ``Hello, World!'' and Shutdown")
(:p
"The typical Gendl environment consists of three programs: Gnu
Emacs (the editor), a Common Lisp engine with Gendl system loaded or built into it (e.g. the "
"The typical GDL environment consists of three programs: Gnu
Emacs (the editor), a Common Lisp engine with GDL system loaded or built into it (e.g. the "
(:texttt "gdl.exe")
" executable in your "
(:texttt "program/")
......@@ -68,23 +72,25 @@ Emacs (the editor), a Common Lisp engine with Gendl system loaded or built into
such as Firefox, Google Chrome, Safari, Opera, or Internet
Explorer. Emacs runs as the main "
(:emph "process")
", and this in turn starts the CL engine with Gendl as a "
", and this in turn starts the CL engine with GDL as a "
(:emph "sub-process")
". The CL engine typically runs an embedded "
(:emph "webserver")
", enabling you to access your application through a standard web browser.")
(:p "As introduced in Chapter "
(:ref "chap:installation")
", the typical way to start a pre-packaged Gendl environment is with the "
", the typical way to start a pre-packaged GDL environment is with the "
(:texttt "run-gdl.bat")
" (Windows), or "
(:texttt "run-gdl")
" (MacOS, Linux) script files. Invoke this script file
from your computer's file manager, or from a desktop shortcut if you
have created one as outlined in section "
" (MacOS, Linux) script files, or with the installed Start
program item (Windows) or application bundle (MacOS). Invoke this
script file from the Start menu (Windows), your computer's file
manager, or from a desktop shortcut if you have created one as
outlined in section "
(:ref "subsec:makeadesktopshortcut")
". Your installation executable may also have created a
Windows ``Start'' menu item for Genworks Gendl. Of course you can also
Windows ``Start'' menu item for Genworks GDL. Of course you can also
invoke "
(:texttt "run-gdl.bat")
" from the Windows ``cmd'' command-line, or from another command shell such as Cygwin."
......@@ -93,27 +99,28 @@ for interacting with a version control system like Subversion (svn)."))
((:subsection :title "Startup")
" Startup of a typical Gendl development session consists of
" Startup of a typical GDL development session consists of
two fundamental steps: (1) starting the Emacs editing environment,
and (2) starting the actual Gendl process as a ``sub-process'' or ``inferior'' process
within Emacs. The Gendl process should automatically establish a network connection
back to Emacs, allowing you to interact directly with the Gendl process from within Emacs."
and (2) starting the actual GDL process as a ``sub-process'' or ``inferior'' process
within Emacs. The GDL process should automatically establish a network connection
back to Emacs, allowing you to interact directly with the GDL process from within Emacs."
((:list :style :enumerate)
(:item "Invoke the " (:texttt "run-gdl.bat") " or " (:texttt "run-gdl.bat") " startup script.")
(:item "Invoke the "
(:texttt "run-gdl.bat") ", " (:texttt "run-gdl.bat") "
startup script, or the provided executable from the Start
menu (windows) or application bundle (Mac).")
(:item "You should see a blue emacs window as in Figure "
(:ref "fig:emacs-startup")
". (alternative colors are also possible).")
(:item "Press M-x (Alt-x), and type " (:texttt "gendl") " in the mini-buffer, as seen in Figure "
(:ref "fig:mini-buffer")
".")
(:item "(MS Windows): Look for the Genworks Gendl Console
(:item "(MS Windows): Look for the Genworks GDL Console
window, or (Linux, Mac) use the Emacs ``Buffer'' menu to visit the
``*inferior-lisp*'' buffer. Note that the Genworks Gendl Console
``*inferior-lisp*'' buffer. Note that the Genworks GDL Console
window might start as a minimized icon; click or double-click it to
un-minimize.")
(:item "Watch the Genworks GDL Console window for any
errors. Depending on your specific installation, it may take from a
few seconds to several minutes for the Genworks Gendl Console (or
few seconds to several minutes for the Genworks GDL Console (or
*inferior-lisp* buffer) to settle down and give you a "
(:texttt "gdl-user(): ")
" prompt. This window is where you will see most of your program's textual output, any
......@@ -124,23 +131,23 @@ error messages, warnings, etc.")
" (or select Emacs menu item "
"Buffers$\\rightarrow$*slime-repl...*"
") to visit the ``*slime-repl ...*'' buffer. The full name
of this buffer depends on the specific CL/Gendl platform which you are
of this buffer depends on the specific CL/GDL platform which you are
running. This buffer contains an interactive prompt, labeled "
(:texttt "gdl-user>")
", where you will enter most of your commands to interact with your running Gendl session
", where you will enter most of your commands to interact with your running GDL session
for testing, debugging, etc. There is also a web-based graphical interactive environment called "
(:emph "tasty")
" which will will cover in Chapter "
" which will be discussed in Chapter "
(:ref "chapter:tasty"))
(:item "To ensure that the Gendl interpreter is up and running, type: "
(:item "To ensure that the GDL command prompt is up and running, type: "
(:texttt "(+ 2 3)")
" and press [Enter].")
(:item "You should see the result "
(:texttt "5")
" echoed back to you below the prompt.")))
((:subsection :title "Developing and Testing a Gendl ``Hello World'' application")
((:subsection :title "Developing and Testing a ``Hello World'' application")
" "
((:list :style :enumerate)
(:item "type C-x (Control-x) 2, or C-x 3, or use the ``Split
......@@ -164,7 +171,7 @@ mini-buffer.")
(:texttt "\\textasciitilde/hello.gdl")
" and press [Enter]")
(:item "You are now editing a (presumably new) file of Gendl
(:item "You are now editing a (presumably new) file of GDL
code, located in your HOME directory, called "
(:texttt "hello.gdl"))
......@@ -206,7 +213,7 @@ to the file in your HOME directory.")
") to get the "
(:texttt "*slime-repl ...*") " buffer, which should contain a "
(:texttt "gdl-user>")
" prompt. This is where you normally type interactive Gendl commands.")
" prompt. This is where you normally type interactive GDL commands.")
(:item "If necessary, type "
(:texttt "M \\textgreater")
......@@ -231,18 +238,26 @@ move the insertion point to the end of this buffer.")
))
((:subsection :title "Shutdown")
" To shut down a development session gracefully, you should first shut down the Gendl process,
" To shut down a development session gracefully, you should first shut down the GDL process,
then shut down your Emacs."
((:list :style :itemize)
(:item "Type "
(:texttt "M-x quit-gendl")
(:texttt "M-x quit-gdl")
" (that is, hold Alt and press X, then release both while you type "
(:texttt "quit-gendl")
(:texttt "quit-gdl")
" in the mini-buffer), then press [Enter]")
(:item "Type "
(:item "alternatively, you can type "
(:texttt "C-x &")
" (that is, hold Control and press X, then release both while you type &.
This will visit the *slime-repl* buffer. Now type: "
(:textt ", q")
" to quit the GDL session.")
(:item "Finally, type "
(:texttt "C-x C-c")
" to quit from Emacs. Emacs will prompt you to save any modified buffers before exiting."))))
" to quit from Emacs. Emacs will prompt you to save any
modified buffers before exiting."))))
((:section :title "Working with Projects")
"Gendl contains utilities which allow you to treat your
......@@ -289,7 +304,7 @@ however.")
(:footnote (:texttt "isc") " stands for ``Intelligent Source Configuration''")
" to enforce a certain ordering on the files. Here is the contents of an example for the
above application:")
(:p (:texttt "(\"package\" \"parameters\")"))
(:verbatim "(\"package\" \"parameters\")")
(:p "This will force package.lisp to be compiled/loaded first, and
parameters.lisp to be compiled/loaded next. The ordering on the rest
......@@ -299,9 +314,7 @@ lexigraphical ordering).")
(:p "Now our sample application directory looks like Figure "
(:ref "fig:yoyodyne-with-file-ordering-isc")
" is an example application directory, with four source files.")
)
"."))
((:boxed-figure :caption "Example project directory with file ordering configuration file"
:label "fig:yoyodyne-with-file-ordering-isc")
......@@ -351,13 +364,17 @@ load the system using Quicklisp. To do this for our example, follow these steps:
" for projects you want available during every development session. Note that you should include
the full path prefix for the directory containing the ASDF system file.")
(:item (:verbatim "(ql:quickload :gdl-yoyodyne)")
" this will compile and load the actual system. Quicklisp uses ASDF at the low level to compile and
load the systems, and Quicklisp will fetch any depended-upon third-party libraries from the Internet on-demand.
Source files will be compiled only if the corresponding binary (fasl) file does not exist or is older than the
source file. By default, ASDF keeps its binary files in a"
" this will compile and load the actual system. Quicklisp
uses ASDF at the low level to compile and load the systems, and
Quicklisp will retrieve any depended-upon third-party libraries from
the Internet on-demand. Source files will be compiled only if the
corresponding binary (fasl) file does not exist or is older than the
source file. By default, ASDF keeps its binary files in a "
(:emph "cache")
" directory, separated according to CL platform and operating system. The location of this cache
is system-dependent, but you can see where it is by observing the compile and load process."))))
" directory, separated according to CL platform and
operating system. The location of this cache is system-dependent, but
you can see where it is by observing the compile and load
process."))))
((:section :title "Customizing your Environment")
......@@ -374,10 +391,10 @@ editing environment."
" Saving the world refers to a technique of saving a complete
binary image of your Gendl ``world'' which contains all the currently
compiled and loaded definitions and settings. This allows you to
start up a saved world almost instantly, without having to reload all
the definitions. You can then incrementally compile and load just the
particular definitions which you are working on for your development
session.
start up a saved world almost instantly, without being required to
reload all the definitions. You can then incrementally compile and
load just the particular definitions which you are working on for your
development session.
To save a world, follow these steps:"
......
......@@ -25,84 +25,58 @@
`((:chapter :title "Installation")
"Follow Section "
(:ref "sec:installationofpre-packagedgendl")
(:ref "sec:installationofpre-packagedgdl")
" if your email address is registered with Genworks and you will
install a pre-packaged Gendl distribution including its own Common
Lisp engine. Gendl is also available as open-source software"
(:footnote "http://github.com/genworks/Genworks-GDL")
"; if you
want to use that version, then please refer to Section "
install a pre-packaged Genworks GDL distribution including its own
Common Lisp engine. The foundation of Genworks GDL is also available
as open-source software through The Gendl Project"
(:footnote "http://github.com/genworks/gendl")
"; if you want to use that version, then please refer to Section "
(:ref "sec:installationofopen-sourcegendl")
"."
((:section :title "Installation of pre-packaged Gendl")
"This section will take you through the installation of Gendl
from a prepackaged distribution with the Allegro CL Common Lisp engine
and the Slime IDE (based on Gnu Emacs)."
((:section :title "Installation of pre-packaged GDL")
"This section will take you through the installation of
Genworks GDL from a prepackaged distribution with the Allegro CL or
LispWorks commercial Common Lisp engine and the Slime IDE (based on
Gnu Emacs)."
((:subsection :title "Download the Software and retrieve a license key")
((:list :style :enumerate)
(:item "Visit the Downloads section of the "
(:href "http://genworks.com/newsite" "Genworks Newsite"))
(:href "http://genworks.com" "Genworks Website"))
(:item "Enter your email address"
(:footnote "if your address is not on file, send mail to licensing@genworks.com")
".")
(:item "Download the latest Payload and gpl.zip for Windows"
(:footnote "If you already have a gpl.zip from a previous Gendl installation, it is not necessary to download a new one."))
(:item "Download the latest Payload for Windows, Linux, or Mac"
(:footnote "Gnu Emacs is included with the download. The source code for this
is available at http://downloads.genworks.com/emacs-windows-24.3.zip. Gnu Ghostscript
is also included; please contact Genworks if you need the source code for this."))
(:item "Click to receive license key file by email.")))
((:subsection :title "Unpack the Distribution")
"GenDL is currently distributed for all the platforms as a
self-contained ``zip'' file which does not require official
administrator installation. What follows are general instructions; more up-to-date details
may be found in the email which accompanies the license key file. A five-minute installation video
is also available in the Documentation section of the "
(:href "http://genworks.com/newsite" "Genworks Newsite") "."
((:list :style :enumerate)
(:item "Unzip the gdl1581... zipfile into a location where you have write permissions")
(:item "Unzip the gpl.zip file at the same level as the gdl payload")
"Genworks GDL is currently distributed as an setup executable for Windows,
a ``dmg'' application bundle for Mac, and a self-contained zip file for Linux."
(:ul
(:item "Run the installation executable. Accept the defaults when prompted."
(:footnote "For Linux, you have to install emacs and ghostscript yourself. Please use your distribution's package manager to complete this installation."))
(:item "Copy the license key file as gdl.lic (for Trial,
Student, Professional editions), or devel.lic (for Enterprise edition) into the "
(:texttt "program/")
" directory within the gdl1581.../ directory."))
((:image-figure :image-file "gendl-installation.png"
:caption "Several Gendl versions and one GPL "
:label "fig:gendl-installation"))
"So you now should have two directories at the same level: one named "
(:texttt "gdl1581.../")
"(the rest of the name will contain the specific dated build stamp), and a "
(:texttt "gdl/")
"directory at the same level. Note that as seen in Figure "
(:ref "fig:gendl-installation")
", it is possible to have several Gendl versions installed, but just a single common "
(:texttt "gpl/")
" folder.")
" directory within the "
(:textt "gdl/gdl/program/")
" directory.")
(:item "Launch the application by finding the Genworks program group in the Start menu (Windows), or by double-clicking the application icon (Mac), or by running the "
(:texttt "run-gdl")
" script (Linux)."))))
((:subsection :title "Make a Desktop Shortcut")
((:list :style :enumerate)
(:item "Using the ``My Computer'' or ``Computer'' Windows file manager, right-mouse on the "
(:texttt "run-gdl.bat")
" file.")
(:item "Select ``Create Shortcut.''")
(:item "Now drag the new ``Run-gdl-shortcut'' icon to your desktop.")))
((:subsection :title "Populate your Initialization File")
"The default initialization file for Gendl is called "
(:texttt "gdlinit.cl")