tinySelf
tinySelf is an experimental programming language inspired by the Self lang (see 📂Series about Self), with the emphasis on the word experimental.
I would like something like the glasswork rack you know from the chemistry pictures, but for computation.

The point of the experiment is not that much in the language itself, but all kind of different stuff that can be done with it. tinySelf should be lightweight, compact, collapsible, interchangeable, universal computational apparatus for anything I can possibly hope to make.
I would like to explore some concepts from Self, and Smalltalk, as well as the ideas of Douglas Engelbart and Ted Nelson. Specifically:
- Try representation of the data by using prototype-based object-oriented programming language, instead of data-oriented serialization formats like JSON and XML. Think something closer to the rebol.
- Prototype-based user interface like Morphic and how much it is really useful for representation and working with data and information.
- Reflection & homoiconicity experiments. In interpreter, language, but also in graphic interface. I think that reflection may one of the key features for reducing cognitive load, but I have to try it to actually see how much.
- Philosophical concept of the "explicitly structured data". If the data are objects and object have reflection and docstrings, they should be more understandable and explorable than binary formats or structures based on dictionaries.
- Implement and test some of Engelbart's ideas about working with infosphere. Object wiki which is partially also a database and API and language.
- Obtain platform to test some of the Alan Kay's and David Ungar's ideas. Prototype-based user interface. Usage of the language for simulation. Things related to moldable development (see Moldable tools; a book and a movement).
- Obtain, test and describe custom-made environment for tight-coupled-loop technology as it was described by J. C. R. Licklider in his Man-Computer Symbiosis paper.
tinySelfEE
tinySelfEE is the second iteration rewritten to Java, hence the EE in name (EE stands for Enterprise Edition, typical Java buzzword). In the future, it should use GraalVM to gain some usable speed.
Differences from Self
- Support for cascading operator
;
.
- Comments using
#
.
- Strings use both
"
and'
.
- Different error handling.
- Primitives are not special messages with special
_syntax
, but messages to objectprimitives
.
- Stdlib is my own, and it is only loosely inspired by Self.
- Focus on hackability and usefulness, instead on research and academia.
- More changes are in process of evaluation and design:
- Different annotations, probably more close to Smalltalk's.
- Arbitrary string messages.
Blogs
Here are some of my blogs about tinySelf and tinySelfEE:
📄 tinySelfEE 2021-07; let's throw away the Symbolic eval code
Free flow thought process capturing some of my decisions regarding tinySelfEE development, specifically why I thrown away all the symbolic eval code.
📄 Reasons why I decided to abandon RPython in tinySelf
Story about how I deded to rewrite my toy language to Java.
📄 The "traits float" bug 2020/1
Update from the development of my own programming language called tinySelf.
📄 tinySelf performance gains 2019/4
Description of how I gained performance in my programming language tinySelf. Rpython profiling and optimizations.
📄 Speedups of the interpreter 2019/1
Description of how I gained performance in my programming language tinySelf. Rpython profiling and optimizations, usage of JIT compiler.
📄 Simple while benchmark 2019.01.06
First benchmark in my programming language tinySelf.
Source code
- https://github.com/Bystroushaak/tinySelf (old deprecated version)
Links
- https://github.com/sin-ack/zigself (another interesting attempt to rewrite Self).
Licence
MIT opensource licence.