Alchemy is the codename for an online programming environment that allows beginners to create and publish sophisticated programs without mucking about with dependencies, requirements, etc. It is designed to be the spiritual descendant of Turbo Pascal and BASIC.
Concepts and Principles
- The key principle is that a new programmer should be able to do cool stuff with a single code file. We avoid the complexity of package files, resource files, etc. Of course, we support multiple files, but we do not artificially require it.
- Programmers should be able to publish their programs for others to run and/or modify.
- We provide a set of program patterns. E.g., a console program is a pattern. These constraint allow us to abstract away lots of complexity. [Need to come up with a suitable name: templates? patterns? frameworks? scaffold?]
- We focus on experiments, prototypes, etc. For example, it should be trivial to graph out the result of an arbitrary function. I.e., we should be able to write a simple loop that draws points/lines on a graph.
- UIs should seamlessly integrate with code. For example, a bit of declarative code should set up a 3D viewport. When running, the programmer should be able to change the viewport interactively (pan/zoom/etc.) and then save the new viewport info back to the code. Similarly, imagine drawing out a selection on an image interactively and then saving the selection (or path) to a new entity in the code.
- Code syntax should be optimized for readability instead of parsing. For example, consider using markdown type syntax for sections of code rather than brackets/braces.
- To improve readability, we want to be able to mix languages in a single code file. For example, we might transition from procedural code to declarative as appropriate. We need a syntax that separates these different sections cleanly.