Hello! I’m looking for book recommendations for learning programming fundamentals.

To be clear, I’m not necessarily looking for a book on learning language(s), but rather, programming, theory I guess you might call it?

For example, I’ve been playing around a lot in my terminal writing bash scripts, and I just implemented my first function. Another example, I know the phrase “Object Oriented programming”, but have no idea what it means.

I learn well by doing, and I’ve learned a lot just writing scripts and reading about bash scripting, but I also realize there’s a lot about programming at a higher level that I know nothing about.

  • solrize@lemmy.world
    link
    fedilink
    arrow-up
    15
    arrow-down
    1
    ·
    15 hours ago

    OOP was a 1990s thing that is still around but don’t worry about it too much at first.

    The classic intro book is Structure and Interpretation of Computer Programs aka SICP. You can find it online with a web search. It will give you a good grounding in fundamentals. Then you can figure out what to pursue next.

      • ericjmorey@programming.dev
        link
        fedilink
        arrow-up
        2
        ·
        4 hours ago

        Some people who are self studying Structure and Interpretation of Computer Programs have been using a discord server to assist each other as needed. I realize that there are a number of people using Lemmy whi are very opposed to using discord over other options, but I don’t know of any other sustained forums focused on this book.

        https://discord.gg/j2tCPpMq

    • ericjmorey@programming.dev
      link
      fedilink
      arrow-up
      1
      ·
      5 hours ago

      That’s an entry point into programming that’s not for everyone. It seems like the poster is looking for something more hands on and pragmatic rather than technical and academic.

  • JustTesting@lemmy.hogru.ch
    link
    fedilink
    arrow-up
    6
    arrow-down
    1
    ·
    edit-2
    10 hours ago

    ‘Programming from the ground up’ the main idea of this one is to teach programming in a bottom up way, so very low level.

    it’s mostly about teaching (linux) assembly to beginners, so in a way it is just learning a new language. But it’s mainly about understanding low level how a computer works, like registers, kernel calls, how function calls are handled, all for beginners. It’s really easy to pick up.

    Knowing those fundamentals can go a long way in understanding other computing concepts.

    Others that come to mind are :

    • Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems
    • A Philosophy of Software Design
    • Software Architecture: The Hard Parts"
    • ericjmorey@programming.dev
      link
      fedilink
      arrow-up
      1
      ·
      5 hours ago

      An author of the original book, Allen B. Downey, has released a third edition if his updates that is also available online at no cost and in Allen B. Downey’s words:

      The book is now entirely in Jupyter notebooks, so you can read the text, run the code, and work on the exercises – all in one place. Using the links below, you can run the notebooks on Colab, so you don’t have to install anything to get started.

      The text is substantially revised and a few chapters have been reordered. There are more exercises now, and I think a lot of them are better.

      It’s interesting to see how the same source material has grown into two differently maintained and similar resources.