Hacker News new | past | comments | ask | show | jobs | submit login

This is a wonderful idea. There are few programming environments that are useful to non-programmers with the possible exception of Excel.

A study like this helps us gain inspiration and to remind ourselves how non-programmers think about programming problems.

In the words of the linked pdf: "Programming may be more difficult than necessary because it requires solutions to be expressed in ways that are not familiar or natural for beginners."

Medicine may be more difficult than necessary because it requires solutions to be expressed in ways that are not familiar or natural for beginners.

Law may be...

Physics may be...

Getting the point? Beginners may not always be the best yardstick of everything.

I think you're missing the point. We don't have any control over the fact that medicine and physics are complicated because they reflect nature. Law is complicated because it's an attempt to create a set of rules that apply to all possible human scenarios.

This study, and the person you're replying to, aren't saying that all programming languages are unnecessarily complicated and should be changed. They're just saying that they're inaccessible to beginners. The authors of the study note that they're designing a programming language for beginners, so these things are useful for them to know.

One of Rich Hickey's talks talks about this (I think it was 'Are We There Yet?'). In it, he references musical instruments, which are absolutely NOT designed for beginners. Why should they be? Tools shouldn't be designed specifically to PRECLUDE beginners, but why should any of them be optimized for beginners?

A good tool should allow someone to progress from beginner to novice to expert, but at the end of the day, the expert is who the tool is really designed for. Anything else is just bonus.

Nobody is arguing for replacing expert tools with these beginner-optimized languages. Continuing the instrument metaphor, I'd say they're like recorders: being taught in elementary school won't make them ubiquitous in the professional industry. But they're a great way to introduce students to a simple, relatively inexpensive way to create music.

>In it, he references musical instruments, which are absolutely NOT designed for beginners.

Musical instruments increasingly are designed for beginners. A typical software suite makes it easy to make decent music by tapping a few buttons more or less in time.

Classical instruments aren't designed for beginners, because they weren't designed at all - they evolved from crude and simple historical originals.

But they're a subset of music as a whole.

Arguably the problem is that computer languages are NOT designed for anyone. This is why so many software products and services are significantly broken so much of the time - to an extent that would be ridiculous and completely unacceptable for hardware objects.

I don't see a problem with at least exploring new language models that have roots in perceptual psychology instead of in hardware design.

Classical instruments are designed, just as much as any other artifact created by humans. If pianos were not designed, then neither were bicycles, looms or printing presses.

> Tools shouldn't be designed specifically to PRECLUDE beginners

I'm reminded of a lesser-known talk[1] by Dan Geer, in which he discusses cybersecurity maturing into its own field - its own science - using T. S. Kuhn's definition[2] as a rough guideline. One of the criteria used to recognize the transition into a specialized field was the use of jargon. Maturity as a stand-along field has happened when it becomes necessary to invent new jargon that is - by definition - inaccessible to outsiders.

To be clear, I completely agree that tools shouldn't preclude beginners whenever possible, but I suspect that my not be possible as everything becomes more specialized.

[1] https://www.youtube.com/watch?v=fHZJzkvgles

[2] https://en.wikipedia.org/wiki/The_Structure_of_Scientific_Re...

Rich Hickey is definitely an interesting person.

The questions for me is that do we actually want to master a bare bones instrument (for example a violin) or do we want to make music.

The more you advance in a field, the more you control you want to have over the concepts you work with and what you produce. So an expert will look for a more flexible tool, one that gives access to all these concepts. Whether that's a bare bones instrument or a computer program, it will be unsuitable for a beginner.

> We don't have any control over the fact that medicine and physics are complicated because they reflect nature.

I don't agree that this is all that different.

In physics, some phenomenons can be either simple or complex to describe, depending on what formalism you use to describe them. And sometimes, complex formalisms can be hard to understand at first, but help producing simpler description of the phenomenons your looking at.

For example functions and derivatives are hard to understand at first, but they drastically simplify the description of classical physics.

So in programming just as in physics, you just need the right conceptual tools to describe your problem. And while boolean logic may be hard to understand at first, it really helps specifying complex behaviors.

In that sense, I think I agree with GP: over simplifying the conceptual tools may not results in better problem descriptions.

Honest question, because this comes up reasonably often in PL discussion. Do people genuinely have a hard time with Boolean logic? If I was to make a list of things I found hard when learning about programming I'm not sure Boolean logic would make the cut.

I said boolean logic because the paper mention fifth graders, which are unlikely to be at ease with complex boolean formulae. But there are number of more complex concepts that would also work: OOP, maps or reduce, mutexes and so on.

To answer your question, in my experience (I taught programming 101 number of times) many people are indeed confused when they need to reason about complex if statements. Typically, they make redundant tests, and it takes a little while before they understand why it is not needed.

Interesting, thanks!

>We don't have any control over the fact that medicine and physics are complicated because they reflect nature.

But doesn't the machine reflect nature for a programmer as well? I think this paper does little more than capture fantasies about the inherent capabilities of machines and recite general logic elements of natural language.

To expand on this, even expert programmers have a harder time adjusting to the mindset of a lot of modern programming languages, which is one of the reasons a lot of software written by experienced programmers can still be riddled with bugs. Just because they're skilled at programming in this fashion does not imply that they could not be skilled in a "more natural" style.

Did YOU get the point? Maybe Medicine and Physics and Law shouldn't be so complicated also?

Medicine and physics are not purely human constructs tho.

the universe and how it changes over time isn't a human construct, but physics is, one that tries to describe the universe and how it changes over time at a certain level of complexity. same for medicine, except that the human body is actually a human construct ;)

If you figure out how to make physics simpler and still be accurate, the physicists would definitely like to hear it.

Oh, really?

Yeah, really. One of the driving forces of theoretical physics is simplification. That's what all the quantum-gravity-unification noise is about: having two theories is messy, even if they both produce solid predictions.

Unless your point is "they won't listen to a poor sap like you", in which case, take a chill pill.

>same for medicine, except that the human body is actually a human construct

The human body is merely (re)produced by humans, whereas with "construct" here we mean the design of things (which, in the body's case would be, e.g. nature, evolution, etc).

It's interesting because many characteristics carry over to other areas. For example, we didn't have a wine opener at a hotel with my wife's brother (a youth pastor). Before I got back to the room he got started on it and used a knife to effectively drill out the cork, the obvious cost here is that you've turned the cork into sawdust. The wine was pretty terrible so i had him filter it through a coffee filter. It was still terrible, but as i walked to the room i thought about a few approaches and their associated costs, he busy did the first thing that came to mind. I found the "non engineering approach" very interesting. If course every solution has costs, his was sawdust filled wine. Mine was having to push a cork out of the way to pour.

pro-tip: I've seen demonstrated, if you repeatedly whack the bottom of a bottle of wine with the heel of your shoe (or, in a similar manner, smack the bottom of a bottle of wine against a tree trunk) the cork will slowly emerge on its own.

It occurs to me if you get it wrong, glass shards from the bottle could emerge before submerging into your flesh, so perform this trick at your own risk.

I've seen a variant of this attempted.

One of my colleagues put a wine bottle into a shoe, so the base of the bottle was resting where your heel would go. Then repeatedly 'tapped' the bottle/shoe combination heel first against the wall. Apparently hoping the hydraulic rebound would cause the cork to back out.

The bottle smashed. The concrete wall was permanently stained, the shoe was ruined and the carpet needed to be cleaned.

Very entertaining, but not terribly useful.

PLEASE don't do this. A friend of mine had done it a few times and was getting confident in the process. Once I was watching him, the bottle broke into tiny pieces and went straight into his hand. He had around 30 pieces of shattered glass that managed their back several centimeters deep inside. I still remember calling emergency and waving hands when they arrived so that they saw us. My friend came back a few days after with his hand wrapped in band after a pretty awful night in hospital. Pretty stupid idea if you ask me. Don't do it. Remember one hand is one half of your text editor...

Have you ever tried to break a wine bottle? They're pretty sturdy. This is actually not very difficult to do:


Although, I would think borrowing a wine opener from reception would've been the easiest approach in this case.

Pro-tip: slowly twisting the cork out of the bottle (as if it were a screw) would eventually cause it to pop out. No need for a wine opener.

I do this anytime I don't have a wine opener handy.

In many wines the cork is fully inside the bottle, there's nowhere to grip it.

GP post is right, but left out a detail. I have used this trick multiple times and it usually impressed people:

Scenario is wine with cork fully inside bottle. Take a long slender knife, stab through the center of the cork as far as possible. Twist and and pull, with very little pull and lots of twist. Cork comes out. The key here is that the pressure of twisting prevents most of the slippage that would happen if you just pulled the knife out.

Enjoy impressing friends/family.

It's a bit nerve-wracking reading people who use their fingers for a living doing stuff that risks permanently injuring those fingers!

The infantry grunt knuckledragger side of me (large prefrontal cortex) sometimes ignores such obviously real risks because they seem so minimal compared to past experience. (Which is dangerous in itself. This kind of thinking got more of my buddies killed in motorcycle accidents stateside than did in combat) Point is, you are right to be concerned about safety, but I would argue this particular method is pretty safe if done right. I mean, step 1 is stab the cork, thats not hard to do. I guess the knife could slip and come out quickly, but thats what the lateral pressure of the twist is there to prevent.

Applications are open for YC Winter 2020

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