CLIPS(1)

πŸ’– CLIPS πŸ’– β€” the manual, but make it make sense

okay bestie, this is CLIPS(1), aka the C Language Integrated Production System, aka the expert system programming language that's been doing its thing since before either of us was born. she's vintage, she's public domain, she's a NASA baby. let's get into it 🫢


✨ NAME ✨

clips β€” an expert system programming language. that's it, that's the vibe. πŸ‘‘


✨ SYNOPSIS ✨

clips [ file.clp ]

✨ DESCRIPTION ✨

so CLIPS is a productive development and delivery expert system tool, and what that means is it gives you a whole complete environment for building rule-based and/or object-based expert systems. and literally everybody uses it β€” no cap. the public and private community lineup includes:

  • all NASA sites πŸš€
  • branches of the military
  • numerous federal bureaus
  • government contractors
  • universities
  • many companies

and here's the key features, because she has range:

🌸 Knowledge Representation 🌸

CLIPS is a cohesive tool for handling a wide variety of knowledge, and she supports three different programming paradigms: rule-based, object-oriented and procedural. let me break it down:

  • rule-based programming β€” lets knowledge be represented as heuristics, aka "rules of thumb," which specify a set of actions to perform for a given situation. if this, then slay.
  • object-oriented programming β€” lets complex systems be modeled as modular components, and those components can be easily reused to model other systems or to build brand new components. recycle queen ♻️
  • procedural programming β€” the procedural capabilities in CLIPS are similar to the ones you'd find in languages like C, Pascal, Ada, and LISP.

🌸 Portability 🌸

CLIPS is written in C for portability and speed, and she's been installed on so many different computers without any code changes. the machines she's been tested on include an IBM PC running DOS and Windows 95, and a Macintosh running MacOS and Mach. she can be ported to literally any system that has an ANSI compliant C compiler. and she comes with all the source code, which you can modify or tailor to meet your specific needs. bestie said "here's the keys." πŸ”‘

🌸 Integration/Extensibility 🌸

CLIPS can be embedded within procedural code, called as a subroutine, and integrated with languages such as C, FORTRAN and ADA. and a user can easily extend her through the use of several well-defined protocols. it's giving plug-and-play fr fr.

🌸 Interactive Development 🌸

the standard version of CLIPS gives you an interactive, text oriented development environment, and that includes:

  • debugging aids
  • on-line help
  • an integrated editor

and interfaces with features like pulldown menus, integrated editors, and multiple windows have been developed for the Macintosh, Windows 95, and X Window environments. multi-window main character energy.

🌸 Verification/Validation 🌸

CLIPS has a bunch of features supporting 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
  • semantic analysis of rule patterns, to determine if inconsistencies could prevent a rule from firing or generate an error

like… she checks herself before she wrecks herself. πŸ’…

🌸 Fully Documented 🌸

CLIPS comes with extensive documentation, including a User's Guide, a Basic Programming Guide, an Advanced Programming Guide and an Architecture Manual. all of these documents are provided in the Debian clips-doc package. go read them, they're free. πŸ“š


✨ BUGS ✨

CLIPS is old software, so bugs are not unheard of. 😭 she's doing her best, okay??

✨ HISTORY ✨

okay this is the part where I get emotional, because the lore is actually so good. πŸ₯Ή

the origins of the C Language Integrated Production System (CLIPS) date back to 1984 at NASA's Johnson Space Center. at that time, the Artificial Intelligence Section β€” which later became the Software Technology Branch, then the Client/Server Systems Branch, and now the Information Technology Office β€” had developed over a dozen prototype expert systems applications using state-of-the-art hardware and software. but here's the thing: despite extensive demos showing off the potential of expert systems, few of these applications were actually put into regular use. and this failure to deliver expert systems technology within NASA's operational computing constraints could largely be traced to one thing β€” using LISP as the base language for nearly all expert system software tools at that time. 😬

specifically, three problems hindered the use of LISP based expert system tools within NASA:

  1. the low availability of LISP on a wide variety of conventional computers
  2. the high cost of state-of-the-art LISP tools and hardware
  3. the poor integration of LISP with other languages, which made embedded applications difficult

the Artificial Intelligence Section felt that using a conventional language, such as C, would eliminate most of these problems, and initially they looked to the expert system tool vendors to provide an expert system tool written using a conventional language. and yeah, a number of tool vendors did start converting their tools to run in C β€” but 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. so to meet all of its needs in a timely and cost effective manner, it became evident that the Artificial Intelligence Section was going to have to develop its own C based expert system tool. and that's how we got here. ✨

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. so 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. and even though she was originally modelled from ART, CLIPS was developed entirely without assistance from Inference or access to the ART source code. we do not copy, we invent. πŸ’…

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 building 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.

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.

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, iykyk. 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). iconic name, no notes. 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, released in the Summer of 1998, added C++ compatibility and functions for profiling performance. she's been upgrading herself for decades, that's growth. 🌱

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 improve the ability to deliver expert system technology throughout the public and private sectors, for a wide range of applications and diverse computing environments. CLIPS is being used by over 5,000 users throughout the public and private community, including:

  • all NASA sites πŸš€
  • branches of the military
  • numerous federal bureaus
  • government contractors
  • universities
  • many private companies

CLIPS is now maintained as public domain software by the main program authors, who no longer work for NASA. (they left, but the code stayed. the code always stays. 😭)

derivative works for CLIPS have also appeared, such as:

  • JESS β€” the Java Expert System Shell, which provides a CLIPS interpreter for the Java programming language.
  • fuzzyCLIPS β€” a fuzzy extension of CLIPS.
  • bw β€” CLIPS: a version of CLIPS using backward chains.

πŸ‘‘ AUTHOR πŸ‘‘

okay so bestie, real talk: CLIPS was not made by one person in a basement. It's a whole ensemble cast, like a group project that actually ate. Here's the main-character lineup πŸ’…

  • Robert Savely β€” previous branch chief of the STB and now chief scientist of advanced software technology at JSC. He conceived the project and provided overall direction and support. lowkey the origin story ✨
  • Chris Culbert β€” current chief of the Information Technology Office. He managed the project, wrote the original CLIPS Reference Manual, and designed the original version of CRSV.
  • Gary Riley β€” designed and developed the rule-based portion of CLIPS, coauthored the CLIPS Reference Manual and CLIPS Architecture Manual, and developed the Macintosh interface for CLIPS.
  • Brian Donnell β€” designed and developed the CLIPS Object Oriented Language (COOL), coauthored the CLIPS Reference Manual and CLIPS Architecture Manual, and developed the previous MS-DOS interfaces for CLIPS.
  • Bebe Ly β€” responsible for maintenance and enhancements to CRSV, and now responsible for developing the X Window interface for CLIPS.
  • Chris Ortiz β€” developed the Windows 3.1 interface for CLIPS.
  • Dr. Joseph Giarratano of the University of Houston-Clear Lake β€” wrote the CLIPS User's Guide.
  • Frank Lopez β€” designed and developed CLIPS version 1.0 and wrote the CLIPS 1.0 User's Guide.

and then there's the supporting cast 😭 because a project this big never happens alone. 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, Gregg Swietek, Eric Taylor, James Villarreal, Lui Wang, Bob Way, Jim Wescott, Charlie Wheeler, and Wes White.

every single one of those names is doing main character energy work, no cap 🫢

🌈 SEE ALSO 🌈

  • http://www.clipsrules.net/ β€” Homepage for CLIPS 🏠
  • /usr/share/doc/clips-doc/ β€” There you will find the basic and advanced programming guide, as well as other upstream documentation. go read it fr fr πŸ“š
  • /usr/share/doc/clips-common/examples/ β€” A number of examples of the CLIPS program are available so you can test the interpreter and learn how it works. For example, you can load one a word game using (load "/usr/share/doc/clips-common/examples/wordgame.clp") and run it using (reset) and (run).

like, actual working commands, bestie:

(load "/usr/share/doc/clips-common/examples/wordgame.clp")
(reset)
(run)

that's the whole vibe check right there πŸŽ€


This manpage was made by Javier FernΓ‘ndez-Sanguino <jfs@debian.org> for Debian GNU/Linux (but may be used by others) πŸ’œ


okay that's literally the whole page, you made it to the end, so proud of you πŸ₯Ή this one ships as Linux, dated July 2003, and it lives in the manpage section CLIPS(1). go be iconic with it πŸ’…βœ¨

πŸ“¦ where this page comes from