Cel is a computer language. In particular it is of the prototype-based, object oriented variety.

It is a high-level, small, simple, and very OO language. It's syntax is very similar to Self (which is almost like Smalltalk).

In terms of attributes, Cel is: interpreted, prototype based, based entirely on pure objects, loosely typed, and reflective.


Aug. 13, 2007 - Cleaned up the site a little. I need to add a blog. Here is the update. A lot has changed in 5 years. I have learned a bit more about a few other languages. I came back to just clean up the HTML and refresh the site. I have had a few interesting ideas and I thought that the Smalltalk world would die. Smalltalk has died, but if anything people are more enthusiastic than ever to be using blocks as control structures. Imagine that. Maybe the syntax won't need such an overhaul. I also still think that the original influences are valid (Self, Forth). I won't be picking this project anytime too soon, but I definitely enjoyed working on it. Oh yeah, if I did pick it up, there is a lot I would change about the internals.

One last note. Steve was the one who handed me the Self paper and who kept talking about prototypes. As I dug into the Metaclass systems in Smalltalk, I started to really see the freedom and appeal. I found them again in Newtonscript, and they were done very nicely on that platform. (I think I lent Steve my Newtonscript book). What a surprise that we both missed their presence in Javascript. After a while, (in 1998), at the end of my job at SRI in Menlo Park, I decided to make a language, but I never announced it to anyone but Steve. Anyways, we went to OOpsla in Vancouver where there was a small side session given by James Noble, Antero Taivalsaair, and Dave Ungar on prototype languages. During the end of the get together I announced that I was working on a language. That is how Cel got started. I completed the language after I took some time off after the Danger Research job.

Aug. 22, 2002 - I have not worked on Cel in quite a while. I will probably take that up again in the future, but at this time it isn't a practical thing.
Still, if you are interested in checking out some recent work, my friend Steve has done some really interesting work with a similar language that he calls Io. You should check it out.

Feb. 24, 2002 - Released Version 0.8.5 (Download/Release Notes are available below)
(Working Garbage Collection and ported to Win32 and Mac OS X)

Nov. 16, 2001 - Released Version 0.8
Apr. 24, 2001 - Released Version 0.7
Feb. 4, 2001 - Released Version 0.6

Current State
Announce/Contributions/Mailing Lists

Cel was influenced primarily by the language Self. Other strong influencers were Smalltalk, Forth, Newtonscript, Objective-C, and Python.

Current State
The current version is 0.8.5 You can read the current Release Notes.

It is getting out of the early stages. There is practically no documentation. However, it is working and documentation is on the way.

So, this isn't the language for your next big production project. Things about it are going to change or evolve. So, if these technologies interest you, then check out this project. I really want it to be a good language for understanding prototype based systems.
One thing that is important, if you come away from this site or feel like there is something missing, then provide feedback


    A simple line oriented eval for interactive use.
    Documentation - find a suitable markup language for the task.


As stated earlier, there is no real documentation. Since it is so new, there isn't a FAQ, either. Both of these things will change.
Here is a sample of the randomtest.cel and it's output.
Here is another sample of the code: sample and it's output.
Here is another sample of code: socketTest.
Here is a sample of the code: glut.cel and it's screenshot.
Here is yet another sample of code: parallelTest.
Here is yet another sample of code: metaTest.
Here is a sample of the code: dateTest and it's output.

Note: these examples are a bit much for people who are not used to Self/Smalltalk. Also, this syntax may change slightly as well as the API's. Don't panic :-).

The license was copied from the Apache license. It is essentially BSD like.

Why do this? Nothing out there was fitting what I wanted, and building this looked like fun. I started on this in 1998 and worked on it off and on since then. It's still fun.