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 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
- Different error handling.
- Primitives are not special messages with special
_syntax, but messages to object
- 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.
Here are some of my blogs about tinySelf and tinySelfEE:
- https://github.com/Bystroushaak/tinySelf (old deprecated version)
- https://github.com/sin-ack/zigself (another interesting attempt to rewrite Self).
MIT opensource licence.