We're empowering domain experts through the SipCoffee Language and VISION.
SipCoffee is a programming language with very minimal syntax. Programming in SipCoffee is done through the composition of messages. In SipCoffee, even constructs like for loops, conditional statements, variables and scope are messages.
// Application, WithEach and WriteLine are messages // do, item and text are properties Application ( do WithEach ( item 1 2 4 8 16 32 do WriteLine ( text CurrentItem () ) ) )
VISION is a visual programming environment designed for domain experts. An unintended, but awesome outcome, of our composition centric language is that it is really easy to use in a visual programming environment.
SipCoffee and Vision are designed with community, consistency, collaboration, learnability, sharing, scalability and concurrency, assured backwards compatibility, immediate feedback, regression testing, separation of mechanisms from business and multiple mental-models in mind.
Community - Most important is a solution that can build a strong following.
Consistency - The syntax to describe variables, loops and conditions is the same.
Collaboration - Developers, designers, product owners, entrepreneurs and their customers can work together in a single development environment.
Learnability - We remove as many abstract programming concepts as possible (functions, methods, inheritance, closures, etc.) leaving a minimal set of concepts for domain experts to learn.
Sharing - Programs and their parts should be very easy to re-use and share.
Scalability and concurrency - Any program can run concurrently with little to no effort by the programmer. Scaling is done through concurrency.
Assured backwards compatibility - Any changes in the framework can be regression tested against all customer created programs.
Immediate feedback - The results of programming are seen immediately within the environment itself: no need to 'code, compile, run and debug'.
Regression testing - Regression testing is an integral part of the development experience.
Separation of mechanisms from business - Assure that programmers can't mix mechanisms and business behavior.
Multiple mental-models - Domain experts have different ways of seeing and understanding what it is they are trying to do. As such, the same program can be represented using different mental models.