Increasing programming throughput

I love programming… but somehow I feel trapped in a bubble where I create things again and again. Like iterating lists or even graphs, or aggregating tree-like data, do this, do that… at some levels of detail thing are repeating and I try to automate stuff like with metaprogramming:
I invent a metamodel from which I create the actual problem solver in a automatic way. The code generation is under my own control… this is my current approach to overcome this bubble. Maybe to reach the greater outer bubble.

Do you know other ways or tools to escape this bubble or reach a next level? I am just curious ^^

1 Like

Most programming is highly repetitive, as the top 20 languages in use tend to be very old, many predating the internet, so it is cumbersome to express a modern problem.

We are headed towards a glorious day of interchangeable software parts, where you can snap things together like Lego. It’s going to be a revolution.

Code generation, the path you’ve taken, is (in my opinion) the way to go to get the “boring” stuff out of the way. Telosys ( Telosys code generator for Java, JavaScript, Python, NodeJS, PHP, C#, etc) is a good approach to a generalized application of your metamodel/automated solution generator.

It has a straightforward DSL for capturing the data description(s) and uses the Apache Velocity engine for applying the metamodel to code templates. It’s a reasonable “next level” step on the path to “just let the computer do it.”

@laurent.guer1 is the creator of Telosys.

1 Like

I also like other directions like Idris where you are able to build types from values. The programs are written like proofs. In one lecture, the creator was showing us a proof for a sort algorithm. After he finished, he said: Now I do need to write any tests… I have proofen that it works.
Sometimes it’s annoying to write tests but writing proofs looks also not very welcoming haha…

The second thing I want to mention is Elixir, a functional language based on Erlang. It has two function for transforming a code block into an AST (quote) and back (unquote). This enables you to model code and do meta programming.