Programming thread

  • Want to keep track of this thread?
    Accounts can bookmark posts, watch threads for updates, and jump back to where you stopped reading.
    Create account
I guess I'm asking, how do I continue my learning in a way that will actually help me learn?
Think of a project. Take it to feature-completion. That'll help you localize your unknowns more than you'd expect.
 
I decided to start off with learning python and I'm going through the code academy course for it now, but my concern is once I finish the course, what do I do from there?
write shit you want to write
thats the beauty of it and any other creative thing like drawing or crocheting

doing this you will learn exactly what you need and maybe more
 
I decided to start off with learning python
i'm sorry for your loss
python courses are notorious for not teaching you any higher level concept than just how to use python
There are so many coding principles and practices I feel like I'll still need to learn, use of libraries, and just other things that I'm not really sure how to explain as other than computer science knowledge.
you will understand stuff like modularity and organization as you continue making things and the things get so complex you realize you ought to break it up into multiple parts for clarity
learning stuff like computational complexity becomes easier once you put a loop inside a loop inside a loop and then wonder why everything got so slow
99% of your skill as a programmer should be put into writing code that is easy to read and understand. being overly obsessed with optimization and sacrificing clarity is a well-known beginner mistake
I guess I'm asking, how do I continue my learning in a way that will actually help me learn? I feel like there are currently a lot of "unknown" unknowns for me, and I'd like some advice on how what to do about that.
obtain a scheme interpreter and learn some scheme. it removes all the fancy tricks that python tutorials are trying to teach you and exposes you to the raw basics of computational abstraction
scheme has certain incredibly powerful conceptual benefits, such as knowing that any given looping construct is just as good as any other, and you can just write your own if you want, so they don't mean anything. in scheme, any loop syntax will just be automatically converted into the same thing: a procedure that calls itself over and over
along the same lines for a different fundamental, learn some c. its pointers and direct memory manipulation will give you some context for just what the computer is doing, and if you understand all its tools you will be much more knowledgeable of the principles of your operating system
Think of a project. Take it to feature-completion. That'll help you localize your unknowns more than you'd expect.
write shit you want to write
thats the beauty of it and any other creative thing like drawing or crocheting

doing this you will learn exactly what you need and maybe more
these pieces of advice are also correct
the best programmers are always aware of some interesting thing they could write
 
obtain a scheme interpreter and learn some scheme. it removes all the fancy tricks that python tutorials are trying to teach you and exposes you to the raw basics of computational abstraction
scheme has certain incredibly powerful conceptual benefits, such as knowing that any given looping construct is just as good as any other, and you can just write your own if you want, so they don't mean anything. in scheme, any loop syntax will just be automatically converted into the same thing: a procedure that calls itself over and over
along the same lines for a different fundamental, learn some c. its pointers and direct memory manipulation will give you some context for just what the computer is doing, and if you understand all its tools you will be much more knowledgeable of the principles of your operating system
or use C to learn how the fuck computer is computering stuff

python is good to use to learn problem solving where you dont really need to focus on the computer side of things just on the problem
 
or use C to learn how the fuck computer is computering stuff
yeah i said this
python is good to use to learn problem solving where you dont really need to focus on the computer side of things just on the problem
i think stuff like scheme is a bit less distracting because it has way less features
 
obtain a scheme interpreter and learn some scheme.
If you go this route, the wizard book is freely available online here. You go from the very basics to writing your own interpreter. I haven't finished it yet, but a lot of people say it's good and so far I agree.
edit: @Private Tag Reporter, the book I linked above is good for learning scheme.
 
Is there a field guide to Scheme? R5RS looks long and academic.
usually people these days use either r6rs or r7rs but they are both very similar to r5rs, r7rs is slightly more similar than r6rs is
the standard document makes for a great programmer's language reference because it is intentionally written with that in mind in addition to language implementers
to get started, either read sicp or follow one of the many quick scheme tutorials out there: this is a list of a few scheme tutorials (including a web version of sicp)

scheme is not a terribly complicated language so you can get into it fairly quickly (unless you can't understand recursion, which is a good reason to do a favor to the world and never write any programs)
 
Think of a project. Take it to feature-completion. That'll help you localize your unknowns more than you'd expect.
This was my first thought, think of something, and make it, but my main concern is, for the things I don't know, do I need to dig into the documentation to truly learn them? Or am I going to be lazy and just have chatgpt walk me through it, and if I do that am I really learning? Is it even gunna tell me the right way to do it? This is all probably just cope, but still.

write shit you want to write
thats the beauty of it and any other creative thing like drawing or crocheting

doing this you will learn exactly what you need and maybe more
I guess I might just be struggling on knowing what I actually want to write? I think that was one of the things I was hoping to sort of figure out along the way.

i'm sorry for your loss
python courses are notorious for not teaching you any higher level concept than just how to use python
Yea I sort of picked this up throughout the course, there hasn't really been any deeper information on the reason behind using python or the deeper concepts that it can address beyond surface level "here are things python can do".

you will understand stuff like modularity and organization as you continue making things and the things get so complex you realize you ought to break it up into multiple parts for clarity
learning stuff like computational complexity becomes easier once you put a loop inside a loop inside a loop and then wonder why everything got so slow
99% of your skill as a programmer should be put into writing code that is easy to read and understand. being overly obsessed with optimization and sacrificing clarity is a well-known beginner mistake
Interesting, yea these are the concepts I just don't know anything about, but it makes sense that they are important, my hope is that I can get myself to learn it and actually implement it.
I think my biggest struggle when it comes to learning in general is actually knowing how to apply the things I've learned outside of the specific scenarios I've learned them.
For example, knowing when to write a function, when to write a for loop, when to write an if/else statement, etc
Maybe the best way to explain it would be I feel like I'm having a hard time mapping my current knowledge of programming onto completing a task.

obtain a scheme interpreter and learn some scheme. it removes all the fancy tricks that python tutorials are trying to teach you and exposes you to the raw basics of computational abstraction
scheme has certain incredibly powerful conceptual benefits, such as knowing that any given looping construct is just as good as any other, and you can just write your own if you want, so they don't mean anything. in scheme, any loop syntax will just be automatically converted into the same thing: a procedure that calls itself over and over
I'll be honest, this is something I don't anything about, so any info on just how I should go about doing it would be helpful, like when you say "learn some scheme" what exactly does that entail? And which interpreter would you recommend I try and learn with?

along the same lines for a different fundamental, learn some c. its pointers and direct memory manipulation will give you some context for just what the computer is doing, and if you understand all its tools you will be much more knowledgeable of the principles of your operating system
This is something I've been seriously considering too, but didn't want to get ahead of myself on. Python is something I want to learn since it could have practical uses in my job, but I have been thinking about trying to move more into a developer role, I just haven't been sure the which direction I'd want to go. C does sound appealing though, and I like the concept of low level programming, or at least what I understand it to be.
 
Last edited:
I guess I might just be struggling on knowing what I actually want to write? I think that was one of the things I was hoping to sort of figure out along the way.
yeah i have problems with it as well, just think of something small in scope, people often start with a "todo app"
a list you can add and remove things from
then you can extend it if you want, add deadlines for example or do something else if you get inspired
 
for the things I don't know, do I need to dig into the documentation to truly learn them?
yes that is what the documentation is for
if you can't tolerate reading through documentation, are you sure you want to be a programmer?
I guess I might just be struggling on knowing what I actually want to write?
maybe write a program that generates a fractal and writes it out in ppm format
such a program is quite small and you can add stuff like command line options (what exact kind of fractal do you generate? how much resolution?) and modularity (maybe you want to render a couple completely different types of fractal)
I'll be honest, this is something I don't anything about, so any info on just how I should go about doing it would be helpful, like when you say "learn some scheme" what exactly does that entail? And which interpreter would you recommend I try and learn with?
it means "learn some scheme"
it doesn't really matter, just read your sicp
you can use whatever scheme implementation you can get working first. guile is quite amazing but it doesn't work on windows because windows users do not get nice things (this is a recurring theme in programming)
if you are unfortunate enough to be using windows you need to install msys2 or cygwin or wsl or something so you can have a competent environment (this applies very heavily to c as well, imagine using microsoft tooling to program in c)
Yea I sort of picked this up throughout the course, there hasn't really been any deeper information the reason behind using python or the deeper concepts that it can address beyond surface level "here are things python can do"
Interesting, yea these are the concepts I just don't know anything about, but it makes sense that they are important, my hope is that I can get myself to learn it and actually implement it.
I think my biggest struggle when it comes to learning in general is actually knowing how to apply the things I've learned outside of the specific scenarios I've learned them.
For example, knowing when to write a function, when to write a for loop, when to write an if/else statement, etc
Maybe the best way to explain it would be I feel like I'm having a hard time mapping my current knowledge of programming onto completing a task.
try to wean yourself off of tutorials like "how to do X in Y language". sicp will help you think of your problems more abstractly and walk you through the kinds of thought processes that programmers use to decompose problems into forms the computer can calculate
C does sound appealing though, and I like the concept of low level programming, or at least what I understand it to be.
you will find that languages are tools that work well in certain areas and terribly in others
python has shitloads of libraries and that's why people like it
javascript is basically the only language that runs on a web browser
scheme is small and elegant and has certain metaprogramming powers found in very few other languages
c is harder to use but requires a very small runtime and has almost zero overhead. you can also embed assembly into it and do other low-level tricks you don't see in stuff like python, which makes c one of the finest languages out there for implementing operating systems and runtimes for higher-level languages. however, if you try to do stuff like advanced string manipulation or heavy data structure fuckery in raw c, you will want to kill yourself quite quickly. refrain from using c unless you have to

yeah i have problems with it as well, just think of something small in scope, people often start with a "todo app"
a list you can add and remove things from
then you can extend it if you want, add deadlines for example or do something else if you get inspired
todo apps are cliche how about looking at rosettacode or something and just doing one of the problems there
 
my main concern is, for the things I don't know, do I need to dig into the documentation to truly learn them? Or am I going to be lazy and just have chatgpt walk me through it, and if I do that am I really learning? Is it even gunna tell me the right way to do it? This is all probably just cope, but still.
Working code is working code. If you can copypaste a black box that does what you want, it doesn't matter. But if it's code, you can read it and learn from it. Having ChatGPT walk you through code is a valid way to learn. You basically can't go wrong except by doing nothing. You have no idea how horrifying production code written by professionals looks. Never ever beat yourself up over code quality, especially when you identify as a newbie. If it works, it's fine.
 
If it works, it's fine.
which is why we have a new gigantic security breach every week

stable and robust programming is a lost art
mindsets like this are why i suspect computer programming is the engineering world equivalent of having a gender studies degree
"here let me copy and paste while having exactly zero understanding of what i'm doing, it looks like it works so it must be fine right"
 
I never used it* and never felt like I was missing out, if that helps.
*I have tried it a few times, specifically when I was feeling extremely lost on something, none of my friends knew and it was in a domain I believed an LLM should actually be helpful in (language). It was useful maybe once, and then only tangentially - I found what I wanted by searching for some of the stuff it suggested.
I think that was one of the things I was hoping to sort of figure out along the way.
Why did you get into programming? Have you already accomplished the program you wanted to write then?
If you want to have some fun, there is currently the kiwi farms game jam, it goes on all the way through august - so don't be worried about starting late, I only got like one day of working on my entry so far :-).
knowing when to write a function, when to write a for loop, when to write an if/else statement, etc
I would not worry about this at all, you will acquire those preferences as you go along. Don't be shy to refactor!
 
computer programming is the engineering world equivalent of having a gender studies degree
I'm trying to encourage a newbie here, not write a manifesto on philosophy of development. My self-taught programming (the degree I got to prove my competence was piss easy by comparison) has served in all kinds of scenarios for me in the real world. I think it's quite the opposite: an experienced programmer who is used to weird designs shouldn't have difficulty decomposing a mechanical or electrical system. Even biological systems are tractable using the kinds of problem solving programming teaches. The process-systems foundations that underpin cell culture and gene product extraction are straightforward compared to many APIs I'd seen when working on that.

Yes, if you're dealing with software that people depend on, code quality is pivotal. But trying to get a newbie to produce such is putting the cart a mile before the horse.
 
if you can't tolerate reading through documentation, are you sure you want to be a programmer?
I get what you mean, and I just need to get over it.

Aside from that, instead of replying to everything individually, I'll just straight up ask, can you tell me exactly what you would recommend I do?
I'm somebody who does best with a straight forward plan, and if you're willing to tell me exactly what you think I should do, I'll do.

I know it's a lot to ask, and you've already given really good advice I could follow, so if you were to say "Get fucked, I already laid out plenty" I can't say you'd be wrong.
 
Yes, if you're dealing with software that people depend on, code quality is pivotal. But trying to get a newbie to produce such is putting the cart a mile before the horse.
i get what you're saying but i have an irrational phobia of bad habits
i would always like a newbie to do things themself and not copy paste because copying and pasting is not conducive to learning
I get what you mean, and I just need to get over it.
yes docs are nice you should bookmark or download local copies of any docs you find
I'm somebody who does best with a straight forward plan, and if you're willing to tell me exactly what you think I should do, I'll do.

I know it's a lot to ask, and you've already given really good advice I could follow, so if you were to say "Get fucked, I already laid out plenty" I can't say you'd be wrong.
idk maybe programming is just not for you
you should keep it (and the stuff you learned) in the back of your mind though, eventually you might get an idea of how amazing it would be if your computer could do X
then programming will be for you
I'm somebody who does best with a straight forward plan, and if you're willing to tell me exactly what you think I should do, I'll do.
here's one: make a scheme program that prints a few fibonacci numbers to the standard output port. it's quite simple, you can do it with 1 function
Code:
;; perhaps it should work like this:
(print-fibonaccis 6)
1 1 2 3 5 8
these exercises might seem pointless but programming gets easier and you can do more as you practice it
 
I would almost suggest a new programmer get one of those Arduino or Pi Pico kits with some buttons, switches and wires, and make that do stuff. It's not complicated but if you stick to Adruino or the Pico SDK(Not Python) then it's a pretty simple introduction to C/C++. I prefer the Pico since you get lower level with the SDK.

Then again a Pico is 266x(1MHz 6510 vs Dual Core 133MHz ARM) faster than my first computer with several times the RAM and about 100x the storage, so maybe I'm biased.
 
I would almost suggest a new programmer get one of those Arduino or Pi Pico kits with some buttons, switches and wires, and make that do stuff. It's not complicated but if you stick to Adruino or the Pico SDK(Not Python) then it's a pretty simple introduction to C/C++. I prefer the Pico since you get lower level with the SDK.

Then again a Pico is 266x(1MHz 6510 vs Dual Core 133MHz ARM) faster than my first computer with several times the RAM and about 100x the storage, so maybe I'm biased.
this is probably best if you want to do stuff with hardware and like the idea of using c

if you like fucking around inside the gnu/linux ecosystem then a fun way to get started is to make the usual kind of small programs that you put in pipelines
you could do things like magick something.png to ppm to stdout | retardedfilter | magick stdin to fucked.png
 
Back
Top Bottom