It’s been a while since I’ve posted to this blog so I thought I’d update everyone on my latest project.
First, I'd like to explain my motivation. I started programming when I was 15 years old on my own hand-wired computer. Over the years, I've been able to play in many areas of computing including 2D graphics, 3D graphics (including DKBTrace and POV-Ray), sound effects, music, neural networks, Braitenberg vehicles, simulated physics (ElastoLab) and computer games. My goal is to encourage others to explore the fun areas of computing by providing a programming environment and frameworks that make those explorations easy, fun and understandable.
You may know that Simberon wrote a Smalltalk virtual machine to run VisualWorks compiled code. We used that VM to release Sea Turtle Rescue for Android and iOS.
Since then, I’ve re-written the VM to use a redesigned bytecode language. I then wrote a new Smalltalk compiler from scratch (written in itself) to compile Smalltalk source code to that new bytecode language.
This means that I now have a version of Smalltalk that runs by itself independent of any commercial software. When it’s ready, I’d like to release it as free open-source software. My working name for the project is PigeonTalk for reasons I’ll describe later.
My long-term plans for PigeonTalk fall into three phases.
1) Create a complete self-contained Smalltalk with a development and runtime environment running in a web browser.
2) Change the language and environment to escape the restrictions of text-based source code and compilers. At the same time, create an environment where programming can be done primarily with drag and drop components and where the runtime operation of the code can be clearly seen. I plan to animate the execution of the program under the control of the programmer. A program becomes a maze that a small person runs through. Accessing and modifying variables is represented as reading and writing things on post-it notes around the program. Message sends are shown as carrier pigeons that fly off to deliver your message and return with an answer - hence the name PigeonTalk.
3) Write frameworks where various kinds of applications can be easily developed on top of the framework. For example, I'm planning to build frameworks for 2D graphics, 3D graphics, sound, music, and more. I plan to create YouTube videos showing how to build programs on those frameworks and provide samples that others can modify.
I'm planning to fund this development with Kickstarter campaigns. The end result will be a free product to allow as many people as possible to use it.
Coming from a Smalltalk background, I have several guiding principles:
1) All source code is visible and modifiable. The source for the entire library is available and editable in the same development environment as you use to write your own programs. If you're curious about how something works, just go look. The VM is written in C and parts of the UI are controlled by JavaScript, but everything else is written in the same PigeonTalk environment.
2) The development environment is that same as the runtime environment. You can change code even while the program is running. The debugger allows you to stop the program, and single-step it easily seeing the effects of the code. You can also change the code directly in the debugger and keep going.
3) Everything is an object. Integers, Characters, Floats and Strings are objects just like the objects you create yourself. There are no "primitive types" which are handled differently.
I'll be following up this post with more describing some of the details of this project. If you're interested in PigeonTalk, send me an e-mail at david@simberon.com and I'd be happy to answer your questions.