Remix.run Logo
nkrisc 6 hours ago

I think a lot more people than most HN readers realize simply struggle significantly with abstract thinking and reasoning.

It's natural that people who enjoy programming and hacking and related fields are very comfortable with such abstract types of thought. But I really think that isn't all that common amongst most people. I think the average person has to learn such thinking abilities with difficulty (though they can). I'm sure many people here got into programming precisely because abstract thinking came easily to them.

> the idea that the same filename in two places was two unrelated files would just lead to a mental block.

Which is actually why the "files and folders" metaphor is apt. In a filing cabinet in a school office (once upon a time) there were likely hundreds of documents labeled "Report Card" in many different folders, each labeled with a different name.

KellyCriterion 6 hours ago | parent | next [-]

> I'm sure many people here got into programming precisely because abstract thinking came easily to them.

Counter here: When I wanted to switch from TurboPascal during school (14y/15y) to C++ (because it was "more cool" and that was the tool that the 'big boy' game-dev-pros were, we thought), it was so damn hard for me - really! I was struggling so massivly, I head massive problems with this pointer stuff - it took me years to fully understand it.

And I was hell-bad at math in school (or maybe just too lazy), the only thing to which I a relation was all this geometric stuff (because this was needed for .. game dev! :-D )

Zak 5 hours ago | parent [-]

Pointers are famously difficult to learn and reason about even though the basic principles are simple. Programming in a style that requires direct manipulation of pointers when it's not actually necessary is usually regarded as unwise because it's so hard to get right.

mhjkl 5 hours ago | parent | next [-]

OP had no problem with pointers prior to trying C++. I think there is a case to be made that C(++) makes pointers unnecessarily confusing and there is no real disconnect between understanding pointers in theory and in practice otherwise

joquarky 3 hours ago | parent | next [-]

And C++ makes everything extra confusing with the capability of operator overloading.

That has to be one of the worst features ever added to a language.

NooneAtAll3 2 hours ago | parent | prev [-]

> I head massive problems with this pointer stuff

no, OP explicitly had problem after getting introduced to pointer concept

t-3 an hour ago | parent | prev | next [-]

Pointers aren't hard, it's C/C++ that make them complicated. Addresses and indirection in any assembly language are simple and straightforward, easy and even intuitive once you start actually writing programs.

KellyCriterion 5 hours ago | parent | prev [-]

...thats the reason why I love managed environments like C#/Java/etc :-))

Sophira 6 hours ago | parent | prev [-]

> Which is actually why the "files and folders" metaphor is apt.

It's a starting point, but I certainly wouldn't say it's the best metaphor that there could be. The idea of subfolders just doesn't make sense in a filing cabinet analogy, because you have to consider paper size - any folder which could fit into another folder is not going to be able to contain your regularly sized documents.

That said, I can't think of a better metaphor.

saltcured 5 hours ago | parent | next [-]

People understand hierarchy. That named file is in a folder in a particular drawer of a particular cabinet in a particular room of a particular building in a particular neighborhood in a...

What some people struggle with is recursive hierarchy where each step doesn't change the kind of container. I guess they never saw a Matryoshka doll when they were little.

nkrisc 4 hours ago | parent | prev | next [-]

> The idea of subfolders just doesn't make sense in a filing cabinet analogy,

Sure it does. The document is located in Building C, Sub-basement 2, Room 123, cabinet 415, folder labeled "Accounts". And a physical folder can certainly contain other folders. Nit-picking the analogy wastes everyone's time.

carlosjobim 5 hours ago | parent | prev [-]

A better metaphor would be trees and branches. Which is already somewhat used for computing.