Pavel Hruby’s book, Model-Driven Design Using Business Patterns (Springer Verlag, Berlin, 2006) is to my knowledge the best book on this topic. It’s a pattern book so the format is a bit dry but the contents are great. I keep coming back to it and have implemented it several times over the years.
The original Intentional Programming in the mid-nineties was a much broader vision than Language Workbenches, more like a grand unified theory of software development and related tools such as IDEs, languages, compilers, and a marketplace of components in that space.
My understanding, from the demos they were giving around 15 years ago, is that the Intentional company ended up focusing on a smaller feature set similar to MPS (I don’t have personal development experience with the Intentional product, only MPS).
It would be interesting to learn more about their work and lessons learned.
Charles Simonyi and his Intentional Software tried to solve this, publishing some interesting articles in the 1990es. However their technology was not broadly used and they were acquired by Microsoft.
The key ideas are called Intentional Programming and Language Workbenches.
The best accessible implementation of that is JetBrains’ MPS (it is free). It allows you to define a language and “projectional” editors together.
It is really fascinating but it suffers from a learning curve where there is no small step from what people use in their everyday common languages and IDEs to building domain-specific solutions with MPS, so adoption is low.
Markus Voelter has some highly recommendable publications and elaborate applications of MPS for domains specific languages, see http://voelter.de/
I am sure there is something great in that area but it has not found the right form and shape yet, so keep exploring.
He explains it in the linked video presentation which is worth watching: the value being that your parser generator will complain about any ambiguity in the grammar (shift-reduce conflicts) rather than having that show up as a “wat?” at runtime.
You might argue that this argument reduces to checking the grammar using static analysis similar to the order generator. But then handwriting the parser is still extra work and risk.
Now, it is served in avantgarde restaurants: e.g. by the Spanish Michelin star chef, Angel León. He is known as “chef del mar”, making novel dishes with the plants from the ocean in his restaurant, Aponiente:
https://www.aponiente.com/en/
The Greenland Saga (Grænlendinga saga) has more information on the journey if you can read Icelandic, but there is no English translation in this database at the moment.
The actual discovery was not by Erik but by an earlier voyage around 985 by Bjarni, who navigated the coast but decided not to enter the unknown land. The later voyage was inspired by his information.
The vikings considered the journey from Greenland to Vinland the most dangerous journey in their trading network, navigating storms and icebergs in their open boats. However, Vinland provided a source of valuable wood, a scarce resource around their homes in Greenland.
There is archeological evidence of their visits on Newfoundland. You can visit their site in L'Anse aux Meadows with distinct viking houses and metal artefacts:
The Honda Myth by Masaaki Sato is an excellent book about Soichiro Honda and Takeo Fujisawa and the captivating history of how they built Honda, from motorcycles to Formula 1 and how they disrupted the US auto industry on the way with the low-emission fuel-efficient CVCC engine (the later Tesla story shares some of the same elements of new tech playing to environmental regulation).
It was driven by the quest to create the best engines and fastest vehicles.
Soichiro Honda had a great love for building and tuning his engines, saying something like,
“It will be a sad day if engineers could go to lunch without needing to wash their hands”.
The Toyota Production System was established during Shoichiro Toyoda's leadership. It is the company's "operating system" if you will, and has made an enormous impact, both in the auto industry and in other fields such as IT.
"Lean" manufacturing, a term from Womack & Jones, is based on their research into this.
If you want to dive in, here is my reading list for essential books on how Toyota came to build high quality cars at scale, and how it transfers to other disciplines.
W. Edwards Deming - the grand old man of the field, building on a strict statistical discipline. His book "Out of the Crisis" is a wonderful treatise on his thinking including his famous "14 Points for Management". This is definitely a must read that will change the way you think about management and quality. Deming provided the inspiration for the quality movement that powered post-war Japanese manufacturing.
Taiichi Ohno - one of the greatest industrial innovators of the 20th century, the father of the Toyota Production System. After spending his career relentlessly optimizing manufacturing at Toyota he wrote the book "Toyota Production System: Beyond Large-scale Production" that describes his work.
Womack & Jones - Their books are great and it is well worth to read them all to see a lot of the principles and case studies for lean thinking. Also, it is quite interesting to see that software development is now rediscovering some of the things that manufacturing learned much earlier - in the case of Toyota as early as in the 1950s and 1960s. Begin your studies with "The Machine That Changed the World", a five-year study of the global auto industry from MIT and go on with the "Lean Thinking" and "Lean Solutions". They give a fascinating perspective on manufacturing and plenty of examples of the lean principles and they applications. These are the books that brought lean to the mainstream.
Mary and Tom Poppendieck - with a background in manufacturing and software they were leading the effort to translate the concepts of lean to software development. They have written two great books, "Implementing Lean Software Development" and "Lean Software Development - an Agile Toolkit". Both books are well worth reading a present a both the principles and lot of cases in a friendly, colloquial manner. Highly recommended!
Matthew May - I really like his approach to elegance and simplicity. May has worked with Toyota and their corporate university and his book "The Elegant Solution" offers insight into their innovation process - the principles it is built on and the practices that make it work.
Jeffrey Liker - his "The Toyota Way" is a very good introduction to the application of lean methods at Toyota. This is one of the best lean books I have read. Definitely a favourite!
This list covers up to around 10 years ago. Please comment with recommendations for more recent books on the topic.
The Dutch tax authority has developed RegelSpraak a controlled natural language for defining tax rules that is also formally specified and compilable to several targets.
There is a video of the team presenting how they built the DSL for tax rules in the JetBrains MPS language workbench from the MPS conference.
My guess is that it was Prolog Development Center (PDC) [1] the company behind Turbo Prolog and Visual Prolog [2]. They built a nice business providing scheduling and planning software to airlines.
They are still around if you want to get in touch.
If you want the high-end take on this, check out the Spanish Michelin star chef, Angel León. He is known as “chef del mar”, making novel dishes with the plants from the ocean.
You have to write many more tests and add a lot of predicates as pre/post conditions (invariants) to functions to check at runtime what a more modern compiler could have told you at compile time.
It adds a lot of friction and slows down the development process.
Combined with Clojure having lazy evaluation and nil punning it becomes frustrating in larger, domain heavy code bases.
Simple common “CRUD” line of business applications with shallow code paths and a database schema to serve as a secondary type system would probably suffer less from this, explaining why some devs say they don’t experience this.
For comparison, Typescript became so popular precisely because it mitigates similar problems for JavaScript once code based grew to non-trivial sizes.
Exactly. It ties to the excessive startup overhead. If you rename things and change stuff you must run the tests in a fresh JVM to ensure that everything has been evaluated in a consistent state rather ad hoc evaluation in the REPL. This means running from the command line in addition to your REPL or restarting the REPL regularly.
I haven’t experienced this with Fleet after using it some months.
However, from using the other JetBrains tools the performance killer for builds and indexing libraries and documentation has typically been slow file system access.
These IDE even warn you when they detect this. I don’t remember seeing this warning in the Fleet preview.
A common solution is to disable aggressive anti-virus scanning for you project folder and some key application folders so it does not slow down the build.
Another cause is slow remote mounted file systems that you might have if you are using VMs, WSL or Docker.
If I remember correctly the docs have detailed information about this.