24
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
this post was submitted on 16 Dec 2024
24 points (100.0% liked)
TechTakes
1489 readers
30 users here now
Big brain tech dude got yet another clueless take over at HackerNews etc? Here's the place to vent. Orange site, VC foolishness, all welcome.
This is not debate club. Unless it’s amusing debate.
For actually-good tech, you want our NotAwfulTech community
founded 2 years ago
MODERATORS
OT: how would you guys recommend learning to program?
well, first you'll need a solid grounding in the theory of categories
that was a joke about abstract mathematics. anyway I'm not much of a programmer but I have found I've learned a lot from working on godot stuff, so I second that recommendation
The only thing I’m worried about is the math, I’m flying blind there.
I think you would need to deliberately choose a mathematical problem to solve, otherwise the most difficult thing you'll come across will be binary representations of numbers and why floats are FUCKING BULLSHIT (seriously though they can be tricky if you think they are just "numbers in a calculator").
If you want to really understand programming language theory, or computer science more generally, you will definitely need mathematics. But if the goal is "I want to tell this chip what to do," you don't need to learn a lot of math, in my opinion.
Edit: also, if you need help with any math, feel free to DM me. I am a former math teacher and sometimes teach algorithms (basically screaming "what is your induction variable") at the undergraduate level.
I appreciate that, thanks!
most people who are considered skilled programmers seem to know very little math (by my arbitrary standards), so I wouldn't worry about it. if you get that the remainder of 8 divided by 5 is 3 then you're 99% of the way there
There are three kinds of programmers. From smallest to largest: Those smart enough to write good math-intensive libraries, those dumb about to think they can, and those smart enough to just use what the first kind made.
I extremely recommend The Little Schemer as a gentle introduction to both programming interactively and to some of the fundamentals of computer science. some of the other books in the series are also good, gentle introductions to some more advanced CS topics too, but they all assume you’ve read through some of this one.
Andrew Plotkin’s Lists and Lists is also pretty good as a self-contained learning environment with a tutorial
other than that, I second the Python recommendation. another first language recommendation I can make is GDScript, the Godot scripting language. it has a very good in-browser interactive tutorial for programming fundamentals, and a very detailed manual once your learning goes beyond what the interactive tutorial teaches. game programming isn’t the easiest way to start in general, but Godot has a few advantages in this area: you can see an interesting result right away when writing code, its scripting language is very well-integrated with its tooling, and it’s fairly close to a couple of other languages in syntax and semantics (specifically Python) so your knowledge should transfer fairly well.
I did have this wacky idea for a roguelike…
hell yeah! roguelikes are so much fun to work on! that could be a very good way to learn GDScript. generally I recommend learning your first couple languages to completion — but where you decide what complete is, including “I’m tired of this language/project” (not at all an uncommon case, and a good sign your brain’s ready for something new). once you’re at that point, you’ll likely be ready for a new language — and languages generally get much easier to learn once you’ve got a couple under your belt.
(also, I might take on a roguelike project in Godot myself… there’s a new library I want to try which implements my favorite way to do game logic for roguelikes)
this looks really cool 👀
I’m excited to try it! I’ve had so many game ideas lately that’d be a lot more convenient to do with godot’s tooling, but would really benefit from something like Bevy’s ECS. this one looks broadly inspired by a similar API to Bevy so it could be the best of both worlds. I’m very curious how it performs — it’s almost certainly gonna be slower than Bevy, but there’s a lot of types of games where logic isn’t a bottleneck.
I used this site (forgive me for the very 2000's style branding, very edgy etc) to learn python. the course used to be free on the site, so you will have to find a way around that, either via wallet, or 1337 skills (the course doesn't do the same branding as the site btw). But it also has a useful list of links to books and stuff like that to learn more (or at least give you an idea about how much different things exist out there).
But the idea behind the course 'the best way to learn is to do the work' is pretty useful in learning how to code. It is easy to fall into a trap of reading about some coding and thinking you understand it and then utterly fail at actually implementing it.
But as froztbyte says, it does depend a bit on how you learn.
E: also this url is quite old now, so I have no idea how many of the links still work, sorry about that.
This was helpful, thank you!
Np, it never hurts to help.
depends on audience / person? and also maybe teacher
I've stepped people through essentials with e.g. idea "tell me how to make coffee" (as an intro to procedurals and dependency) all the way through many other types/shapes, through lego/blockly/whatever style teaching, and through outright "imagine this is a magic box and ${thing} comes out the other side" stepped iteration. sometimes you can jump straight to "hey so here's a language that means specific things and here's what that means" and go from there
so yeah I guess for my part I'd say I attune to the recipient. but for advice toward teacher I guess I'd attune that toward what I figure they'd be good at teaching
so... what're you good at (teaching)?
I mean for myself. I’ve gotten as far as making a blackjack game in the past, but I couldn’t figure out what to do next.