On Monday, 15 November 2021 at 06:18:17 UTC, forkit wrote:
> But I mean complete novices. Never exposed to a programming language.
There are languages designed for novices, but they seem to be cumbersome for production use.
> Also, I'm not referring to 'language' complexity per se, but rather 'cognitive' complexity.
Yes, this is an interesting topic. I think new (and old) programmers benefit from writing pseudo code before they write in the implementation language. Basically write the code in their own favourite short-hand english mixed with symbols of their own choice. We could probably learn a lot about preferences if we collected personal "pseudo-code" from a large number of programmers.
I think there is quite a distance between the pseudo-code people choose to write and implementation in a system level language. That in itself suggests to me that "something is missing" in terms of usability. There is clearly room for improvement.
> Chunking will impact on your capacity to learn and remember.
Others seem more like an "undifferentiated mess of atomic information items".
The visual image can often be noisy, and text editors provide limited tools for visually cleaning up and bringing emphasis to the important parts. Maybe also auto-formatting means that programmers loose a bit of creativity/interest in improving on the visual presentation of code?
> Ever wondered why C++ is so hard for a novice to learn and remember?
Is it because you cannot fit those "undifferentiated mess of atomic information items" into working memory?
Maybe so, and another factor is that they cannot filter out what is important and what isn't. It is like driving in a busy city. If you seldom do, then it is a scary and taxing experience, pedestrians basically jump out in front of the car... With lots of experience you filter out all noise and laser focus on the critical elements (like kids). If you cannot filter properly then you will "run out of space" in your short term memory.
I probably takes a lot of exposure to get used to the extended use of C++ namespaces, which makes the code look rather cluttered. Might have something to do with visual symbols too. To me namespace::function()
looks more like two items than namespace'function()
, so that could definitively be a chunking issue. I favour the latter notation for that reason (I think it is used by Ada?).
Also unique usage of mnemonics can help. One issue in D is reusing symbols and keywords for unrelated things. That is obviously making things harder as you now have to associate multiple things with the same visual impression, and that has a cognitive differentiation cost. So simpler visuals do not have to be better.