File: WhatIsCLIPS.html

package info (click to toggle)
clips 6.21-6.2
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 7,956 kB
  • ctags: 8,731
  • sloc: ansic: 97,932; makefile: 1,406; sh: 189
file content (216 lines) | stat: -rw-r--r-- 13,416 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
<HTML>
<HEAD>
  <META NAME="GENERATOR" CONTENT="Adobe PageMill 2.0 Mac">
  <TITLE>What is CLIPS?</TITLE>
  <LINK REV="made" HREF="mailto:clips@ghg.net">
</HEAD>
<BODY>

<H1><IMG SRC="CLIPSIcon.gif" ALIGN="CENTER" WIDTH="96" HEIGHT="96" NATURALSIZEFLAG=
"3"> What is CLIPS?</H1>

<P>CLIPS is a productive development and delivery <A HREF="#ExpertSystems">expert
system</A> tool which provides a complete environment for the construction
of rule and/or object based expert systems. <A HREF="#History">Created in 1985</A>, 
CLIPS is now widely used throughout the government, industry, and academia. Its key 
features are:</P>

<UL>
  <LI>Knowledge Representation: CLIPS provides a cohesive tool for handling
  a wide variety of knowledge with support for three different programming
  paradigms: rule-based, object-oriented and procedural. Rule-based programming
  allows knowledge to be represented as heuristics, or &quot;rules of thumb,&quot;
  which specify a set of actions to be performed for a given situation. Object-oriented
  programming allows complex systems to be modeled as modular components
  (which can be easily reused to model other systems or to create new components).
  The procedural programming capabilities provided by CLIPS are similar to
  capabilities found in languages such as C, Java, Ada, and LISP.
  <LI>Portability: CLIPS is written in C for portability and speed and has
  been installed on many different operating systems without code changes. Operating
  systems on which CLIPS has been tested include Windows 95/98/NT, MacOS X, and
  Unix. CLIPS can be ported to any system which has an ANSI compliant C or C++ compiler. 
  CLIPS comes with all source code which can be modified or tailored to meet a user's 
  specific needs.
  <LI>Integration/Extensibility: CLIPS can be embedded within procedural
  code, called as a subroutine, and integrated with languages such as C, Java,
  FORTRAN and ADA. CLIPS can be easily extended by a user through the use
  of several well-defined protocols.
  <LI>Interactive Development: The standard version of CLIPS provides an
  interactive, text oriented development environment, including debugging
  aids, on-line help, and an integrated editor. Interfaces providing features
  such as pulldown menus, integrated editors, and multiple windows have been
  developed for the MacOS, Windows 95/98/NT, and X Window environments.
  <LI>Verification/Validation: CLIPS includes a number of features to support
  the verification and validation of expert systems including support for
  modular design and partitioning of a knowledge base, static and dynamic
  constraint checking of slot values and function arguments, and semantic
  analysis of rule patterns to determine if inconsistencies could prevent
  a rule from firing or generate an error.
  <LI>Fully Documented: CLIPS comes with extensive documentation including
  a Reference Manual and a User's Guide.
  <LI>Low Cost: CLIPS is maintained as public domain software.
</UL>

<H1><a name="ExpertSystems"></a><IMG SRC="CLIPSIcon.gif" ALIGN="CENTER" WIDTH="96" HEIGHT="96" 
NATURALSIZEFLAG="3"> What are Expert Systems?</H1>

<P><BODY>Conventional programming languages, such as FORTRAN and C, are
designed and optimized for the procedural manipulation of data (such as
numbers and arrays). Humans, however, often solve complex problems using
very abstract, symbolic approaches which are not well suited for implementation
in conventional languages. Although abstract information can be modeled
in these languages, considerable programming effort is required to transform
the information to a format usable with procedural programming paradigms.</P>

<P>One of the results of research in the area of artificial intelligence
has been the development of techniques which allow the modeling of information
at higher levels of abstraction. These techniques are embodied in languages
or tools which allow programs to be built that closely resemble human logic
in their implementation and are therefore easier to develop and maintain.
These programs, which emulate human expertise in well defined problem domains,
are called expert systems. The availability of expert system tools, such
as CLIPS, has greatly reduced the effort and cost involved in developing
an expert system.</P>

<P>Rule-based programming is one of the most commonly used techniques for
developing expert systems. In this programming paradigm, rules are used
to represent heuristics, or &quot;rules of thumb,&quot; which specify a
set of actions to be performed for a given situation. A rule is composed
of an <I>if</I> portion and a <I>then</I> portion. The <I>if</I> portion
of a rule is a series of patterns which specify the facts (or data) which
cause the rule to be applicable. The process of matching facts to patterns
is called pattern matching. The expert system tool provides a mechanism,
called the inference engine, which automatically matches facts against patterns
and determines which rules are applicable. The <I>if</I> portion of a rule
can actually be thought of as the <I>whenever</I> portion of a rule since
pattern matching always occurs whenever changes are made to facts. The <I>then</I>
portion of a rule is the set of actions to be executed when the rule is
applicable. The actions of applicable rules are executed when the inference
engine is instructed to begin execution. The inference engine selects a
rule and then the actions of the selected rule are executed (which may affect
the list of applicable rules by adding or removing facts). The inference
engine then selects another rule and executes its actions. This process
continues until no applicable rules remain.</P>

<H1><a name="History"></a><IMG SRC="CLIPSIcon.gif" ALIGN="CENTER" WIDTH="96" HEIGHT="96" NATURALSIZEFLAG=
"3"> The History of CLIPS</H1>

<P>The origins of the C Language Integrated Production System (CLIPS) date
back to 1984 at <A HREF="http://www.nasa.gov">NASA</A>'s
<A HREF="http://www.jsc.nasa.gov/">Johnson Space Center</A>.
At this time, the Artificial Intelligence Section had developed over
a dozen prototype expert systems applications using state-of-the-art hardware
and software. However, despite extensive demonstrations of the potential
of expert systems, few of these applications were put into regular use.
This failure to provide expert systems technology within NASA's operational
computing constraints could largely be traced to the use of LISP as the
base language for nearly all expert system software tools at that time.
In particular, three problems hindered the use of LISP based expert system
tools within NASA: the low availability of LISP on a wide variety of conventional
computers, the high cost of state-of-the-art LISP tools and hardware, and
the poor integration of LISP with other languages (making embedded applications
difficult).</P>

<P>The Artificial Intelligence Section felt that the use of a conventional
language, such as C, would eliminate most of these problems, and initially
looked to the expert system tool vendors to provide an expert system tool
written using a conventional language. Although a number of tool vendors
started converting their tools to run in C, the cost of each tool was still
very high, most were restricted to a small variety of computers, and the
projected availability times were discouraging. To meet all of its needs
in a timely and cost effective manner, it became evident that the Artificial
Intelligence Section would have to develop its own C based expert system
tool.</P>

<P>The prototype version of CLIPS was developed in the spring of 1985 in
a little over two months. Particular attention was given to making the tool
compatible with expert systems under development at that time by the Artificial
Intelligence Section. Thus, the syntax of CLIPS was made to very closely
resemble the syntax of a subset of the ART expert system tool developed
by Inference Corporation. Although originally modelled from ART, CLIPS was
developed entirely without assistance from Inference or access to the ART
source code.</P>

<P>The original intent for CLIPS was to gain useful insight and knowledge
about the construction of expert system tools and to lay the groundwork
for the construction of a replacement tool for the commercial tools currently
being used. Version 1.0 demonstrated the feasibility of the project concept.
After additional development, it became apparent that CLIPS would be a low
cost expert system tool ideal for the purposes of training. Another year
of development and internal use went into CLIPS improving its portability,
performance, functionality, and supporting documentation. Version 3.0 of
CLIPS was made available to groups outside of NASA in the summer of 1986.</P>

<P>Further enhancements transformed CLIPS from a training tool into a tool
useful for the development and delivery of expert systems as well. Versions
4.0 and 4.1 of CLIPS, released respectively in the summer and fall of 1987,
featured greatly improved performance, external language integration, and
delivery capabilities. Version 4.2 of CLIPS, released in the summer of 1988,
was a complete rewrite of CLIPS for code modularity. Also included with
this release were an architecture manual providing a detailed description
of the CLIPS software architecture and a utility program for aiding in the
verification and validation of rule-based programs. Version 4.3 of CLIPS,
released in the summer of 1989, added still more functionality.</P>

<P>Originally, the primary representation methodology in CLIPS was a forward
chaining rule language based on the Rete algorithm (hence the Production
System part of the CLIPS acronym). Version 5.0 of CLIPS, released in the
spring of 1991, introduced two new programming paradigms: procedural programming
(as found in languages such as C and Ada;) and object-oriented programming
(as found in languages such as the Common Lisp Object System and Smalltalk).
The object-oriented programming language provided within CLIPS is called
the CLIPS Object-Oriented Language (COOL). Version 5.1 of CLIPS, released
in the fall of 1991, was primarily a software maintenance upgrade required
to support the newly developed and/or enhanced X Window, MS-DOS, and Macintosh
interfaces. Version 6.0, released in the Spring of 1993, added fully integrated
object/rule pattern matching and support features for rule-based software
engineering.  Version 6.1 of CLIPS, released in 1998,  removed support for 
older non-ANSI C Compilers and added support for C++ compilers. Commands to
profile the time spent in constructs and user-defined functions were also added.
<A HREF="Version62.html">Version 6.2</A>, released in the Spring
of 2002, added support for multiple environments into which programs can be
loaded and improved Windows 95/98/NT and MacOS development interfaces.</P>

<P>CLIPS is now maintained independently from NASA as public domain software.</P>

<P>Because of its portability, extensibility, capabilities, and low-cost,
CLIPS has received widespread acceptance throughout the government, industry,
and academia. The development of CLIPS has helped to improve the ability
to deliver expert system technology throughout the public and private sectors
for a wide range of applications and diverse computing environments.</P>

<P>As with any large project, CLIPS is the result of the efforts of numerous 
people. The primary contributors have been: Robert Savely, who conceived 
the project and provided overall direction and support;  Chris Culbert, 
who managed the project and wrote the original CLIPS Reference Manual; 
Gary Riley, who designed and developed the rule-based portion of CLIPS, 
co-authored the CLIPS Reference Manual, and developed the Macintosh 
interface for CLIPS; Brian Donnell, who designed and developed the CLIPS 
Object Oriented Language (COOL) and co-authored the CLIPS Reference Manual;
Bebe Ly, who developed the X Window interface for CLIPS; Chris Ortiz, who 
developed the original Windows 95 interface for CLIPS; Dr. Joseph Giarratano 
of the University of Houston-Clear Lake, who wrote the CLIPS User's Guide; 
and Frank Lopez, who designed and developed CLIPS version 1.0 and wrote the 
CLIPS 1.0 User's Guide.</P>

<P>Many other individuals contributed to the design, development, review, and general 
support of CLIPS, including: Jack Aldridge, Carla Armstrong, Paul Baffes, Ann Baker, 
Stephen Baudendistel, Les Berke, Tom Blinn, Marlon Boarnet, Dan Bochsler, Bob Brown, 
Barry Cameron, Tim Cleghorn, Major Paul Condit, Major Steve Cross, Andy Cunningham, 
Dan Danley, Mark Engelberg, Kirt Fields, Ken Freeman, Kevin Greiner, Ervin Grice, 
Sharon Hecht, Patti Herrick, Mark Hoffman, Grace Hua, Gordon Johnson, Phillip Johnston, 
Sam Juliano, Ed Lineberry, Bowen Loftin, Linda Martin, Daniel McCoy, Terry McGregor, 
Becky McGuire, Scott Meadows, C. J. Melebeck, Paul Mitchell, Steve Mueller, Bill Paseman, 
Cynthia Rathjen, Eric Raymond, Reza Razavipour, Marsha Renals, Monica Rua, Tim Saito, 
Michael Sullivan, Gregg Swietek, Eric Taylor, James Villarreal, Lui Wang, Bob Way, 
Jim Wescott, Charlie Wheeler, and Wes White.</P>

<P><A HREF="CLIPS.html">Back to CLIPS Home Page.</A></P>

<P><IMG SRC="blueline.gif" ALIGN="LEFT" WIDTH="550" HEIGHT="4" NATURALSIZEFLAG=
"3"><BR>
</P>

Last Update January 28, 2002 <A HREF="mailto:clips@ghg.net">Gary Riley</A></ADDRESS>
</BODY>
</HTML>