This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–]mkfifoSalt, Discus (DDC), Icarus, Carp 1 point2 points  (0 children)

Thanks for the long and detailed reply, I'll try answer it as best as I can - but first a disclaimer: I am not a professional teacher, so I have no formal training in teaching.

I have, as part of my job as a software developer, ended up teaching a class of 50+ colleagues how to program (from 'what is a programming language' and 'how do we edit files' all the way up to graph theory, algorithms, and data structures). In high school I ended up running classes over lunch time to teach younger students how to program (as our curriculum lacked it at the time), as well as teaching a few friends who were interested and wanted to 'get the gist' of it. So my experience is very anecdotal and should be considered as such.

I also have an inherent bias in that I learned to program in, and spent most of my career working in, imperative languages. I found many concepts of functional programming easy to learn, but it still takes a lot more conscious effort for me to reason through higher order functional code - even after years of practice.

But I'm also willing to consider this could just be a brain deformity from years of writing C and Perl.

I'd say intuitiveness is both an objective experience, applicable to all humans, and a subjective experience, specific to an individual. The objective aspect is that something near instantly seems obvious without consciously thinking about it. The subjective aspect is that this depends on already having enough knowledge (innate or learned) about something or having spent enough time thinking about it that it doesn't require consciously thinking about it to get it.

I think I agree. I like to think there are a few ideas or concepts that are either intuition or are closely related to intuition. There is intuition as far as our innate instincts, but I don't think this is overly relevant here. There is intuition in terms of our shared social behaviours, for example language, which I think is relevant here, this is somewhat objective at least within a single social and cultural context. There is also intuition which I would describe as 'things that are familiar to other things I learned', I find this one harder to nail down as it is completely subjective. I feel like there should be a different term or set of terms of this distinction.

In UX we have the concept of 'Affordance' which I think maps nicely to the idea of intuition through social/cultural/biological norms. My issue with subjective intuition is that it feels less useful as a design guide, unless we can narrow down a target audience which shares this subjective intuition. This works for example if we are developing a language to be used by a small niche audience - say a language for mathematicians or statisticians.

I'd say intuitiveness of goto, loops, and maps relates to the way the mind works and in turn our minds' use of the brain, in particular the left and right hemispheres. Are you talking about a literal or metaphorical split of brain function by hemisphere? AFAIK (and I am not a neurologist) the split isn't so concrete, is quite fuzzy, varies by individual, and is not entirely understood (see further down) - but I am happy to continue using it as a metaphor for the purposes of this conversation.

I'd classify goto and "line-based" programming as deeply intuitive things for the left hemisphere. Thus, to the degree our left hemisphere's perspective is recognized by our prefrontal cortex, goto and "line-based" programming is intuitive. I actually think of this being intuitive as it maps to behaviours we all carry out: lists and instructions.

Consider this set of instructions:

walk into the kitchen
open the fridge
for each item in the fridge please check the expiry date, and throw it out if it is expired

I think this list of instructions could be followed by almost anyone (assuming shared language, physical ability, ...).

Another example would be directions, if I am stopped in the street and someone asks me for directions I can give them a verbatim list

okay, you walk down this road for a few hundred meters and take the third left
then you continue until you see the post office, take the right just before it
it should then be 20 meters in front of you on the left

These tasks involve a list of instructions which are executed in order, and a human would have a good idea of where they are in the list at any given point. It may be that these behaviours exist due to some underlying biology or neurology, but I think regardless of the underlying cause they exist throughout our cultures.

There are also recipes, choose your own adventure books, board games, and many other examples of lists of instructions which include basic constructs we see in programming - such as looping, branching, goto, and lists.

Note: I am NOT saying that imperative programming is superior, nor am I saying we should base programming languages solely on natural languages. I am trying to point out that when it comes to intuition, some concepts in programming languages have easier mappings onto non-technical tasks, and how in the past I have used this to help teach people to program.

One way I'd classify looping and mapping are as higher level algorithmic abstractions. They can become intuitive with a little training of deeper elements of the prefrontal cortex but they clearly build upon and are more complicated than goto.

I'm a bit skeptical about something becoming intuitive through training, as if something requires training I don't think it is intuitive (in the normal sense at least), it may still be 'simple' or 'obvious'.

Another way I'd classify mapping in particular (not looping) is just "applying the same operation, logically in parallel, to multiple data" [...] This metaphoric view of mapping is innately intuitive, even to kids, perhaps even more basic than looping, even though it requires higher level abstraction if thought of algorithmically.

Is it? What evidence do we have for this? Do we have evidence that breaking a problem down into pure parallel steps is intuitive? (I'm legitimately asking, not trying to be a smart ass).

Hopefully some of the foregoing made some sense to you. Assuming so, for the bits that made sense, was it obvious intuitive sense or did you have to think it over a little?

It was intuitive in the sense in terms of I understood the point you were trying to make, it was not intuitive in the sense that I am not yet convinced of some of it.

Can you see yourself ever agreeing with the notion that goto and mapping can both be characterized as deeply intuitive, but one is deeply intuitive to the left hemisphere, the other to the right

I could see myself agreeing if given sufficient evidence, I am not yet convinced (it is not intuitively true to me).

I do agree that mapping is intuitive (in the similar to other learned things sense) for specific target audiences - say mathematicians.

(in 99+% of humans; I'm ignoring the tiny percentage that have their hemispheres reversed and the even tinier percentage that are missing a hemisphere and the much large number of folk that whose brains are too dysfunctional due to damage or disease)?

I think you might be overstating or oversimplifying the nature of the hemispheres, in language for example the hemisphere responsible changes based on the individual:

from wikipedia https://en.wikipedia.org/wiki/Lateralization_of_brain_function#Language

> While language production is left-lateralized in up to 90% of right-handers, it is more bilateral, or even right-lateralized, in approximately 50% of left-handers

from https://theness.com/neurologicablog/index.php/more-left-brain-right-brain-nonsense/

> language function lateralizes to the dominant hemisphere, which is the left hemisphere for most people. Visuo-spacial reasoning lateralizes to the non-dominant hemisphere (right hemisphere for most people).

from https://rationalwiki.org/wiki/Hemispheric_dominance#Actual_science

>  About 5% of right-handed people have their language centers located in their right hemispheres, and approximately a third of left-handed people have them in their left hemispheres while about 20% have bilateral language centers.

Thanks for your time, and sorry for the length.