5 ms·
> But in carpentry you also have to practice physical skills In programming you have to practice mental skills. That is, abstract problem solving, logic, bigge
by dkersten 5y ago
> But in carpentry you also have to practice physical skills
In programming you have to practice mental skills. That is, abstract problem solving, logic, bigger-picture-how-things-fit-together. There's a reason many beginners struggle with concepts like pointers or recursion/recursive data types. These things become second nature with practice, just like the physical skills do, but to a beginner who has not practiced such things, they're equally difficult.
- Jtsummers 5y agoPointers are a great example of accidental complexity. Outside of very specific domains, most people writing software never need pointers. Introducing them to the end user who just wants a way to track project status is a great way to bar them from actively participating in developing their own solutions. Forcing them to be beholden to the IT department, rather than empowering them to accomplish their goals.
- bruce343434 5y ago> Outside of very specific domains, most people writing software never need pointers. You know it's not true. Pointers, references, whatever you call them. They exist for a reason.
- majormajor 5y agoThey exist for a reason in the same way that there are a bunch of different types of fasteners - there are situations where it's critically important, but writing the average line-of-business application isn't one of those, in the same way that you can bang together a custom shelf without knowing about more than a drill and screws. We're talking about accessibility for getting started. Pointers and recursion are good ways to scare people away. They were all my highschool CS teacher cared about... guess who avoided CS for a few years as a result until figuring out ways to use other languages to solve specific problems in non-CS courses several years into college?
- bruce343434 5y agoYes, mastering programming, like anything, takes time, practice and patience. Yes, school sucks. Now what is your point? To dumb down everything about programming to the most common denominator so that 1 day old noobs may be equal to grand masters? Not gonna happen. Why do you never hear these types of complaints when people say it takes 10000hr to master the piano? People never suggest taking shortcuts and people accept and respect the path of becoming a master. But when it concerns programming, everyone immediately jumps to "how can we make this as dumb as possible?" Guys. Shit takes time and effort. The freshmen will be fine.
- Jtsummers 5y ago> Yes, mastering programming, like anything, takes time, practice and patience. Yes, school sucks. Now what is your point? To dumb down everything about programming to the most common denominator so that 1 day old noobs may be equal to grand masters? Not gonna happen. Ah yes, those stupid noobs, fuck them all. The objective is not to "dumb down" but to permit the expression of intent by people to achieve their own ends, without the need for intervention by members of the programming guild. Not everyone needs to master programming, they need to achieve a goal. Just as someone can build a table without ever becoming a master carpenter (it's a saw, sandpaper, and a drill and screws or hammer and nails, done), many people have problems that could be solved with programming if only the manner of interfacing and directing a computer were not unnecessarily arcane. > Guys. Shit takes time and effort. The freshmen will be fine. Guy, it's not about the freshmen. It's about people who need to get shit done. It'll be fine if professional programmers aren't the only ones who can achieve their ends with programming tools.
- bruce343434 5y ago> without the need for intervention by members of the programming guild. "Self" learning is a pipe dream. You are always being guided. Be it statically and indirectly by the tutorial writer, the comments of the youtube tutorial, or some discord community helping you out. This is not a bad thing. Stop acting like I'm advocating for some evil elite. > Not everyone needs to master programming, they need to achieve a goal Great! For them exists python. > if only the manner of interfacing and directing a computer were not unnecessarily arcane. I agree that it would be a net win if the likes of linux tutorials stopped using vim. Once we look past that we can see there are plenty of ides out there today that perform the function of the article's subject. Underlining faulty expressions, suggestions on how to fix it, a nice debug output at the bottom. > It's about people who need to get shit done You need a good baseline. You just do. Plenty of people won't do their own plumbing either. It would take a bit of time to learn the basics to fix your sink (python script), but to become someone who can design the pipage in a building ("business software")? That just takes time and experience. No way around it.
- Jtsummers 5y ago> You know it's not true. No, I don't. > Pointers, references, whatever you call them. References are not pointers, and I stand by what I said. Pointers are not needed by most people writing software outside of very specific domains. References are a related but distinct concept. I can "hold a reference" to something without ever being able to read what its memory address is or change what memory address that reference points to. The power to do that is unnecessary for most programs that are written. > They exist for a reason. Did I ever say otherwise? EDIT: Expanding on the notion of "need". A programmer using a C library "needs" pointers because the C library almost certainly makes use of them. The user may or may not need to use pointers themselves to interact with the library (that is, it may offer an interface based on values and not pointers). A programmer on any OS I can think of will be making use of pointers through similar levels of indirection. As an Erlang hobbyist, the implementation almost certainly uses pointers internally, but as an Erlang programmer I wouldn't use them directly. In order to write a program in Erlang, I never need a pointer, though I may make use of some kind of reference (process IDs are a kind of references, but they are not pointers).
- bruce343434 5y ago> The power to do that is unnecessary for most programs that are written. Ok. So don't use that power then. Or use references instead, which are conceptually the same thing. > Did I ever say otherwise? You quite clearly stated their purpose was very niche. I think you took my statement a bit to literally, as what I meant to convey was: no, they are not niche. Edit: after reading your edit, I would like to remind you we were discussing the needs of learning the concept of pointers. While what you mention may not be literal C pointers, that is besides the point (haha) because they (methods of indirection) are conceptually equal.
- deleted 5y ago[deleted]
- Jtsummers 5y ago> Or use references instead, which are conceptually the same thing. In the same sense that a donut is topologically the same as a coffee mug, sure. > You quite clearly stated their purpose was very niche. I did not. I said they weren't needed outside of specific domains, which is not the same as "niche". > we were discussing the needs of learning the concept of pointers Per my original comment, no, we were not. I wrote of needing pointers. I said nothing about the needs of learning the concept of pointers. My comment was, and I stand by this, that pointers are a fantastic example of accidental complexity. They are present in many programming languages, and are a thing people have to use as a consequence but which are not themselves necessary for the problems that many people intend or need to solve. References, which are not the same as pointers except again in the sense of donut = coffee mug, are a more general concept that has broader utility than pointers without the added complexity that pointers bring to the table (though depending on the manner of the references they may bring in their own, see both Python and Java and the unintentionally altered collection values).
- mapgrep 5y ago> abstract problem solving, logic, bigger-picture-how-things-fit-together. These skills are not unique to programming. It’s true that building sophisticated applications requires skills that need to be developed over time. But there are many many useful programs short of that that can be written with a beginner’s limited knowledge. We see already with python widespread use by non computer scientists in certain fields. I think going forward this will become more and more common across more fields and beyond academia.