don't click here

What are good relatively free or in-expensive Sites and Resources for Learning Programming?

Discussion in 'Technical Discussion' started by Mendinso, Oct 17, 2019.

  1. Mendinso


    I'm Who I Am. Oldbie
    So, this'll sound like an absolutely dumb question: Because it is, because Googling should theoretically be the answer to this to finding it, but I've always had generally terrible time finding some good resource places for when it comes to this stuff, as well as just generally being able to learn in a manner that makes sense to me (combination of being on hands and visual learner, among other things).

    During my exposure of trying to find some stuff (really by accident and suggestions of friends), I've managed to find relatively decent resources for (both free and paid):

    - Basic (QBasic to be exact)
    - C
    - C++
    - C#

    As well as for Game Design tools:
    - Unity (Several Versions)
    - Unreal Engine 4

    But generally speaking, I've always found incredibly overwhelmed by finding good community resources, specifically asking trouble shooting questions (I'll be frank: I'm terrible at explaining myself and sometimes it make take a bit for me to be able to process information for help in this manner, even trying to write up this topic is giving me issues). I know this is one community of many, but I was wondering in general what are some good resources out there are, both for Programming Targeted Communities, as well as resources for general programming learning as a whole.

    This is largely just for personal learning and hobby related reasons and I just generally have always been fascinated by the programming element side for Program Applications and Games. So if anyone can absolutely suggest some stuff to me, that'd be great. I also have an interest in older machine programming, as well, so even ASM/CPU guides would be great.
  2. Xiao Hayes

    Xiao Hayes

    Classic Eggman art Member
    I think it's useful to have someone teach you the basics about general programming before going forward on your own, and there are books and websites written as manuals that can act as good enough textbooks if you don't have someone to ask for help with that. I personally have always found quite hard and confusing to find specific information like you say you do, specially if it's microsoft related. Web programming is usually simpler and clearer explained, but you're mostly talking about the kind of languages that give you a proper base about what's going on behind the scenes, hence the need of studying general concepts before the actual coding.

    I would start with C: learn about variables and their sizes, learn about structures and functions, learn about passing an argument by value and reference, and then learn about pointers, about multi-dimensional arrays, about linked lists and binary trees, and, of course, about file creation and editing. This all was what I found most informative and interesting when I learned programming. From here you can go to C++ and repeat a similar process by learning objects, operators, templates, inheritance, etc.

    Binary/hexadecimal related concepts can be added to your learning as soon as you get what pointers are, but I'd suggest you to wait until you finish learning C just to not add too much to the mix. It's not strictly necessary to delve to deep in this matter to get the grasp of coding, so you could even ignore it and go directly to C++, but get at least a general idea of it before starting with objects.

    Oh, and pseudo-code exists, which is essentially drawing a diagram that represents your code in no specific language so you can design its logic and understand better what you're doing. There are methods to build those diagrams so they can be a lot more visual, and they're really helpful if you're just starting or have to write complex code.

    I hope this helps you a bit in the process of googling and learning, since I'm a little outdated in non-web programming and can't list you specific resources.
  3. It's not. I've been trying to learn to program for 20 years now and you've perfectly summarized the struggle of finding good, useful resources. I especially have trouble with learning on my own so without an especially good explanation I tend to hit a wall really quick.
  4. MarkeyJester


    Original, No substitute Resident Jester
    One argument I hear about programming in general, is that code is meant to be ugly, messy, disorganised, or have minimal logic, or to imply that programming inconsistently is the best way to program at all. This probably goes to explaining why all tutorials, guides, books, or any literature which attempts to teach, are absolute shit.

    Simply put, it's not your fault, and it's certainly not a dumb question at all, I believe no-one's written any teaching literature to help explain things properly. People are terrible at teaching in general, especially when it comes to programming, and especially involving C based languages, they are inconsistent, unorganised, messy, and unpredictable slobs, with no sense of structure. Negligence is also a large factor of these, like neglecting to mention you need to halt the program yourself or else the console window closes itself down after the program is finished, it's not the fact that you have to specify the halt, but the fact that no-where in the literature do they mention a necessity to overcome, and many of these are very modern guides too, so it's not like it's designed for DOS or anything.

    I got most of my knowledge from "Teach Yourself C in 24 Hours" by Tony Zhang, but much of my knowledge and ability to program in C was only thanks to my prior knowledge of assembly in general, had I not have had that experience, this book would probably have been useless. A lot of my knowledge has also come from Google searching. Likewise, the idea of being able to teach yourself in 24 hours is highly laughable unless you have some sort of autism, in which case your condition may prohibit you being able to put the information to proper use.

    It's really just trial and error, at least until someone puts together a decent piece of literature.
    • Agree Agree x 1
    • Informative Informative x 1
    • List
  5. Aesculapius Piranha

    Aesculapius Piranha

    つづく Oldbie
    Tutorials are good for getting direction, and I recommend longform tutorials on youtube because you can see the process of creating the projects from scratch much like in a classroom. If they drone you can always increase the playback speed. After that play with the results of whatever project you made in order to internalize the creative process. I found this kind of thing helped me a lot.
  6. 0xfadec0de


    Codecademy does a good job for me; however, my biggest pitfall when I started in Java (which was the first widely used language I touched - my first CS class was in DrRacket) was that it took a while to understand what an object file is for, and what a static method was. If someone had said to me that a static method is one which an object cannot itself invoke, and could only take args, I'd have gotten it. An object file could've been explained as: something that is a template to create new instances of an object. Those two things are utterly fundamental to coding. W/O them, you're kinda in a bind.

    Codecademy costs money, but if you love this stuff, or kinda really like it, it's well worth it. That being said, nothing subs for pure experience, experience, experience.
  7. vexatious


    Your local public library should have some books. Consider second hand stores like Goodwill; cost money but not very much and some are worth over $100.00, and if you have smartphone camera or similar you can snapshot-scan and return book for refund.

    Macintosh Programmers Workshop is a good resource for 68000 and it's free. Here's a three gigabyte ftp backup (recommended for MacOS9 PowerPC and 68k apple users)
  8. The way I taught myself programming (or rather scripting) is using Learn Python the Hard Way for Python 2.7. Unfortunately the website that had all the readings and practice problems available for free was taken down by the author, but I’d still recommend buying the e-book (or retrieving it some other way ) since imo it’s really the smoothest way to learn. Python’s a relatively easy language to learn and from there it’s not that difficult to apply all of the programming concepts in that book to other languages like C, C++, Java and such since they are all isomorphic.

    After finishing that you won’t have it all in the back of your head right away, so to get into gear with actually being able to write your own code from scratch I would embark on a simple Python project that will put you to the test, such as a website or small game. Don’t worry about writing code that’s too messy because that’s how you learn. You will without a doubt run into walls pulling your hair out trying to wrap your head around the spaghetti code you made, but for me that was part of the learning experience and made me more neat as a coder today. The way I learned was by trying to make a Discord bot back when Discord first became a public thing and the api wasn’t official yet. I’m sure I had so many anti-patterns in that thing, I would cringe if I ever had the chance to look back at it

    I can’t speak on the resources other people are offering in this thread, so I can't confidently say this is the best route, but this is how I personally learned.
    Last edited: Apr 13, 2020
  9. vexatious


    8 Look under DOCS or just wget the whole thing.

    Game Developers Magazine archive:
    Dr. Dobbs:
    Nextcube stuff:
    Nextstep stuff:

    Component.Developers Magazine (CODE!):!

    more but I don't have links to most of these. Though some of these are on and "google books".
    ".EXE Magazine"
    "WINDOWS/DOS Developer's Journal"
    "MSDN Magazine"
    "Microsoft Systems Journal"
    "Microsoft Internet Developer" (MIND)
    "Windows Developer Magazine"
    "Developer Source Volume" 1-13 CDs ("The Quarterly Library for Developers") [these might be Microsoft...?]
    "IBM Developer Connection" cds (a lot are OS/2 but some target other systems)
    "IBM OS/2 Developer Magazine"
    "IBM DeveloperWorks" network subscription service
    Some code from some of these magazines

    More NeXtstep stuff, but this also seems to have partial usenet archives from early-mid 1990s. Seems like a lot overall, and does have stuff from the "Peanuts" CDs. Checkout the "pub" directory.

    Msdn channel webpage has some tutorial and introduction videos. Probably other useful resources.

    Lots of books and pictures. Forgot size but it's over 80 gigabytes.
    It's not Sega related but may help.
    Think you need JavaScript and no right-click. Remove the 0s and quotes.
    Last edited: Jul 13, 2020
  10. President Zippy

    President Zippy

    Zombies rule Belgium! Member
    What about "The C Programming Language" by Kernighan and Ritchie? It's one of the best pieces of technical writing ever put together, and the 3rd edition teaches C99 rather than ANSI C which is outdated and C11 which has a bunch of poorly thought-out features like a thread library.

    All: A lot of these suggestions are incredibly esoteric, and I wouldn't suggest learning how to program in little used and poorly-documented languages, let alone for obsolete OSes or obsolete embedded devices as a good starting point. There are just not enough resources to get help for it.

    Learning how to write a Sega Genesis game from scratch or how OS/2 works are good side projects for someone who has been programming full-time for 5 years now. For a beginner, starting with the Sonic Retro ROM Hacking Guide is a good way to turn off 999/1,000 people from programming for life. It's interesting, but it's too daunting for a greenhorn.

    Don't try to learn a language, instead think of solving a problem or doing a project in a specific subdomain. If you want something that involves writing C code without the need for a bunch of esoteric knowledge, here's a classic assignment for you:

    Writing an HTTP/1.1 parser in C. There are 4 parts to it...

    1. Building HTTP requests
    2. Parsing (reading) requests
    3. Building responses
    4. Parsing responses

    This one is nice because HTTP/1.1 is a simple plaintext format (you can poke at examples of it in a text editor). Someone who already knows C can do it all in a single day, and for you it will take at least 10x as long, but you will learn the basics of C, even how to deal with pointers.

    If you're interested, DM me and I can help you get started!

    EDIT: If you want a book to help you get started, "The C Programming Languange" by Brian Kernighan and Dennis Ritchie. It teaches "ANSI C" (C89, the final revision of the original draft of the C language spec), but if you care to learn about all the nice bells and whistles in C99 and C11, you can always pick those up later. If you know how to write ANSI C code, you can write C code for any platform, no matter how archaic.
    Last edited: Nov 11, 2020
    • Informative Informative x 1
    • List