The main thing I wish for is not a feature in the language, but introductory books for an audience like myself.
I’ll give you some examples of people who possess the kind of logical mind you describe here yet lack programming ability:
- lawyers work with legal code trying to figure out ways to hack it to help their clients. Say what you will about lawyers, but they are good at finding and exploiting holes in logic.
- doctors debug and apply patches to complex, opaque, nonlinear systems. As a programmer, I can relate.
- teachers break down complex subjects into small digestible chunks that when consumed, produce a desired result. You have to be very literal and precise when giving children instructions; they tend to do what you say, not what you mean.
These three professions are removed from coding but it’s not hard to find analogues to programming in what they do. I think with the right language these people could integrate coding into their work the same way they do writing. And in many cases, with Excel they are. Show me a teacher who doesn’t use a spreadsheet or similar tool to manage their class. You can’t!
Anyway, the language you describe wouldn’t work well as a tool, but not all programming languages are tools and are still worth making.
Using your example, this language could be a fun DSL for interacting with pictures. “Find all cars and make them red” I could imagine a backend tied to machine learning algorithms and a database query engine to make this possible. Parse with nlp, extract a query, form a plan with appropriate backends, execute, render output image. I dunno how useful that is, it would be fun and doable. You just gave me a great idea for my next senior capstone group. Thanks.
Yes, but what are the chances that they make their new language that is not influenced by any other programming related knowledge to be specified at the right abstraction level using abstractions that are easy to implement? A language that they come up with is not going to be good. Similarly if you were to ask a non engineer to design you an airplane, it wouldn't be a good design. Experts are always going to be able to do a better job than those with less knowledge. I personally do not even think a kid is going to come up with some revolutionary concept that should be included into a language designed by experts.
Why do they need to be easy to implement? We're talking about design. A lot of PL design is hard to implement. And why does it need to be programming related knowledge? We shouldn't restrict them to things that are easy to implement because then we'd restrict them to a very small subset of possible languages.
So when you say "A language they come up with is not going to be good", then I have to ask how are we measuring good? Because if you think that a teacher would not write a good programming language to write programs in, then I would probably agree with you, because writing programs is not something teachers do.
But like I said, not all programming languages are used to make programs. Most people use a programming language to do things that decidedly don't look like programming to you and I. For example a lot of developers consider Excel to be a not good language for writing programs. Programmers usually lament that Excel users would be better served by a "proper database", but they neglect to appreciate that making this change would quite literally ruin the tool for them. But there are more Excel programmers than all other developer-centric languages combined.
I think a teacher who uses Excel to to manage their classes could design a very compelling DSL for classroom automation.
> I personally do not even think a kid is going to come up with some revolutionary concept
We were talking about teachers designing the language. The children came into the picture because they would provide teachers a model for relating to the pedantic nature of computers.