Clist is a new programming language which is best suited to language problems typically tackled by either the C Programming Language and Lisp which are not speed critical. Clist makes an excellent language as a front end to tools, it is easily extensible, and with the powerful set of built in data types it fits most applications. Clist also brings several advantages as a stand alone language that make it worth considering for any project.
Over 80% of the errors in a C/C++ program come from improper use of pointers and memory allocation. Dynamic memory allocation must be explicity handled by the user in C/C++ due to the design of the language. In C and C++ there is no formal built in way to handles lists, queues, or other methods of holding dynamically grown collections of data (disregarding STL in C++). This paper introduces a new language intended to keep the good parts of C (most of it), while removing pointers and replacing them with lists. Structures have also been removed to avoid confusion with lists, and because they are no longer needed with the use of assocation lists.
Clist (pronounced as two words: C List) is a programming language following most of the syntax of C with the addition several new features; primarily lists and strings as fundamental types in the language. At the same time several features are removed: pointers and structures. Lists replace structures, and keep most of the same syntax, along with adding some new. Pointers are replaced in several ways: by using lists to collect data, and by making strings built-in types.
The result is a language that is easy to learn for C/C++ programmers, with new features that help to reduce bugs by removing the most dangerous parts of C/C++ without removing the power (I hope). Clist includes many of the library functions of C/C++ and of lisp, though many could have been left out due to the new data types and their operators and built in conversions.
Currently Clist is available as an interpreted language, though I believe nothing in the language precludes it from being compiled (yet...). Clist is a console application on Win32 platforms and Unix, and Clwin is a GUI based version with some drawing capabilities for Win95/NT based systems. Clwin is not really a production quality environment, it is not multi-tasking so it waits for the clist engine to finish before updating the screen. I wrote it largely just to write an MFC application.
Tutorial - Learn the language by analyzing examples.
Language User Manual - Learn the semantics of the language
Language Reference Manual - Descriptions of the functions availabe in Clist.
Language Grammar - Annotated grammar for the language.
Release Notes - Release notes for Clist and Clwin.