A handyman can do many things. But domain-specific experts like plumbers, electricians, and carpenters are far more skilled and efficient.
Statistical analysis of psycholinguistics indicates that there exist specific modes of thinking, no one syntax will ever be the best syntax for all modes of thought.
One lesson I learned in my brief and ineffective stint with the IEEE Standards is that when you try to satisfy all stakeholders, you end up with a pudding that satisfies no one.
I do believe that letting the Go team be both deliberate and opinionated is for the best.
I also do not consider the go2go tool a toy, but rather a proof of concept. It is similar and superior to the translation tool that I am using internally.
I have never considered the Go language to be the best language for anything except for the implementation of solutions. It is not the best for defining a project or for defining a solution. Warren Swader never needed Go, He could conceive an entire game and code it in ASM. I started without a compiler by writing MachineCode directly in Octal.
Ivan Ivanyuk has a most excellent idea, one that I fully support. It is also one that is fully supported by the Go programming language.
- Begin your project with a doc.go file and define the API and package.
- Create your domain-specific grammar file.
- Create your Doit.ivan file with your domain-specific syntax.
- //go:generate goyacc -o Doit.go -p parser ivan.y
This is perhaps an oversimplification but details are available at
The Go team is incapable of maintaining multiple syntaxes and we need to respect their bandwidth, but in their wisdom, they have enabled us to achieve all of our domain-specific goals, not in 2021 with generics, but rather with Go 1.14 with generate. Please do not expect them to do all of our work, learn to use the tools they have been providing us.