Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

> The language for the 21st century should be business oriented, English-like and not dependent on native types.

It is shocking to me how often the problem of "programming is difficult and time consuming and unintuitive" is to be resolved by "making programming languages more like English". The language is there as a tool to make programming easier!

Do you know how many times I've taken someone's keyboard to type a tiny snippet and then explained it in English with the code as reference? Why do you think I don't just explain it in English first? Because English is verbose and ambiguous and not suited to describing logic. That's what programming languages are for.

It's the same thing whenever someone makes a scratch clone but meant for real work. If you limit your scope enough, and you benefit from the visual layout, I think it can be a productivity win. Otherwise, they just tend to make the trivial stuff into drag and drop, and the easy stuff difficult or tedious.

Unreal Engine's material and animation blueprints satisfy the above criteria, and are a pleasure to work with IMO. But they're both laser focused on doing one thing. With materials, seeing the output preview of each stage of the pipeline is a great help. And with animations, it's essentially a state machine, so seeing it graphed out in front of you is how you'd want to prepare to write the code anyway. Both clear wins for having a visual layout, but I want to stress that these are exceptions to the rule.

EDIT: Also should bring up Inform7[1] as another example of a focused tool that benefits from not being code. If your goal is to write a text adventure, it makes sense to use prose to create it. It also somewhat benefits the authors who are typically more writers than engineers, but don't even think that means you can just sit down and start writing it without a learning phase.

[0]: https://docs.unrealengine.com/en-US/Engine/Rendering/Materia...

[1]: http://inform7.com/



In support of what your are saying, here are some things that make programming _actually_ difficult:

- Reasoning about what the program should do in edge cases (e.g. if one write succeeds but the other fails)

- Designing data structures to represent complex information (e.g. deciding how to annotate an AST with type information)

- Determining if some functionality of a method is ever used

- Avoiding leaking data, even through side channels (like timing attacks)

- Making an interface that is hard to misuse

- Understanding how to use a poorly designed interface

- Understanding the performance implications of different designs


I'm going to take it one further. All of those are good but I think there are some "easier" and more fundamental things that are massive roadblocks for beginning programmers.

- Understanding the problem itself

- Determining how to actually solve that problem

- Expressing all the details of the solution you've chosen.

- Determining what has gone wrong and why

- Knowing when to step back and try another approach


On inform7 an interesting talk "Inform: Past, Present, Future" - http://www.emshort.com/ifmu/inform.html by its creator.

Slightly discussed here : https://news.ycombinator.com/item?id=18105644


> Do you know how many times I've taken someone's keyboard to type a tiny snippet and then explained it in English with the code as reference? Why do you think I don't just explain it in English first? Because English is verbose and ambiguous and not suited to describing logic. That's what programming languages are for.

Exactly this — and it is true about any human language. They were built for humans who are capable of interpreting things given the context. Try covering every single case in English and you have a lengthy legal document which no one wants to read — and it still has some ambiguity left.

If you want an example of what English would look like if used for programming, take a legal document and multiply it by 100.


Yep, I specified English because that's what the article mentioned, but I'm sure it applies to most any other spoken language as well.


Props for the Inform mention... One of the few cases where writing in pseudo-English is the right answer.


Thanks for such clear examples to demonstrate your point.


Yeah, it's a bit odd to make my argument by exclusively citing counter examples, but I think it was the right approach here.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: