language research

There is a problem that is common to databases, user interface, programming languages and pretty much everything that involves state in more than 1 location. It's called the "view update problem". Or in a more general sense: (Bidirectional) Model Transformation. In the functional programming world, this is modelled via a concept called Lenses. It turns out that this elegant idea, is a great way to model distributed system architectures and the pattern appears in many contexts. Simply put, bidirectional transformation occurs whenever you want consistency between tranformations of state in one location to transformations of state in another location. In…

I've been researching different ways of constructing the Forge Architect DSL. There are tons of different tools and different algorithms used to lex, tokenise, and evaluate context free languages: LL LR (LALR and SLR) Recursive Descent PEG Earley I found OMeta early on, and after reading Alessandro Warth's PHD dissertation, it appeared that OMeta was well suited to prototyping new domain specific languages. OMeta is based on Parsing Expression Grammars (PEG) that has been extended to handle some of the limitations that the original specification of PEGs had. For example it supports left recursion easily through a simple seed parsing…

Reification and abstraction are 2 fundamental concepts on computer programming and how humans communicate in general. These 2 concepts are also guiding the development of the Forge Architect orchestration language. Abstraction is the process of creating an construct that captures the essence of that which is concrete. It can be done via identifying generic patterns that are shared across all of the concrete instances. For example, inventing the abstract construct of Animal derived from the specific Cat and Dog concrete instances that you observe in real life. Abstraction is how people create and communicate high level concepts and derive high…