Advertisement
If you have a new account but are having problems posting or verifying your account, please email us on hello@boards.ie for help. Thanks :)
Hello all! Please ensure that you are posting a new thread or question in the appropriate forum. The Feedback forum is overwhelmed with questions that are having to be moved elsewhere. If you need help to verify your account contact hello@boards.ie

Key programming concepts

Options
  • 16-05-2018 11:03pm
    #1
    Registered Users Posts: 882 ✭✭✭


    I want to learn the key programming concepts and fundamentals to enable me to have s solid understanding. What book do you recommend?


Comments

  • Registered Users Posts: 4,853 ✭✭✭10000maniacs


    moneymad wrote: »
    I want to learn the key programming concepts and fundamentals to enable me to have s solid understanding. What book do you recommend?

    I would start with Kernighan & Richie The C Programming Language
    This is by far the best programming book for beginners ever written.


  • Registered Users Posts: 11,262 ✭✭✭✭jester77


    Head first design patterns is good to get an understanding of some of the common basic patterns in a nicely presented way.


  • Registered Users Posts: 768 ✭✭✭14ned


    I would start with Kernighan & Richie The C Programming Language
    This is by far the best programming book for beginners ever written.

    Many would take issue with C as a learner programming language, it's very easy to shoot yourself in the foot with, and is high unsupportive of sloppiness or mistake. Though I agree K&R is a well written book, it is also hideously out of date. The second edition is based on C89. We've had C99 and C11 since, and C23 is in the works (funnily enough, they just inducted me onto the C programming language standards committee two days ago).

    Far better to start with either Python or Javascript in my opinion. I've heard good things about "Python Programming for the Absolute Beginner", it's a task based teaching book.

    Niall


  • Moderators, Computer Games Moderators, Social & Fun Moderators Posts: 80,274 Mod ✭✭✭✭Sephiroth_dude


    Zed shaw's python book was very good I thought.


  • Registered Users Posts: 4,853 ✭✭✭10000maniacs


    14ned wrote: »
    Many would take issue with C as a learner programming language, it's very easy to shoot yourself in the foot with, and is high unsupportive of sloppiness or mistake. Though I agree K&R is a well written book, it is also hideously out of date. The second edition is based on C89. We've had C99 and C11 since, and C23 is in the works (funnily enough, they just inducted me onto the C programming language standards committee two days ago).

    Far better to start with either Python or Javascript in my opinion. I've heard good things about "Python Programming for the Absolute Beginner", it's a task based teaching book.

    Niall

    Everything is there in K&R. All the basic concepts without being tied to any platform. It got me started in 1985. An added bonus is you can do all the examples on any C or C++ compiler. It's impressively written and is never boring. The ANSI version of the book is recommended if you want to run the examples on your own modern compiler.
    And as for C being a starter language, its good to get to grips with memory concepts from day 1.


  • Advertisement
  • Moderators, Science, Health & Environment Moderators, Social & Fun Moderators, Society & Culture Moderators Posts: 60,092 Mod ✭✭✭✭Tar.Aldarion


    I'd start with something like python as it's very user friendly and should help you get to grips fast. Here are the best resources: https://www.reddit.com/r/learnpython/wiki/index


  • Registered Users Posts: 768 ✭✭✭14ned


    Everything is there in K&R. All the basic concepts without being tied to any platform. It got me started in 1985. An added bonus is you can do all the examples on any C or C++ compiler. It's impressively written and is never boring. The ANSI version of the book is recommended if you want to run the examples on your own modern compiler.

    C is basically portable assembler. No support for classes, OO, functional design patterns, lists, dictionaries, even no strings. All the stuff which makes programming today far more productive. Beginners shouldn't need to implement by hand any of that stuff.

    All that said, in another thread here I recommended assembler for young children precisely because it lacks all that abstraction and learning curve, and young children understand easily stuff like conditional branches. Whereas functional programming theory is much harder.

    But for adults or teenagers, I'd invert that advice. Modern programmers neither need, nor should need, to know how a CPU or memory works. They should know how a div box places with CSS on a HTML page. And that Javascript workers are not true concurrency. That sort of high level abstraction.
    And as for C being a starter language, its good to get to grips with memory concepts from day 1.

    If you have a real passion for systems programming and dislike being far from the CPU, sure. But they're very orthogonal. Some people love low level, though good jobs for such folk are rare as hen's teeth in Ireland.

    I might also put on my standards committee member hat and mention that modern CPUs are emulations of historical human programmable CPUs, so even assembler programmer is now programming an abstract virtualised model of an ancient CPU which hasn't existed in a decade or more. Modern CPUs are probably unprogrammable by hand nowadays, Itanium was a bitch to write by hand. Out of order speculative execution is painful to write low level code for.

    Niall


  • Registered Users Posts: 6,150 ✭✭✭Talisman


    If you want to learn about the concepts, then you don't need a book that will teach you a specific language - the concepts are universally applicable.

    My recommendation would be to read Computational Fairy Tales. It's a 200 page fairy tale that will explain all of the key concepts of computer science: variables, if/else, loops, boolean logic, arrays, linked lists, strings, pointers, data structures, recursion, algorithms and more.

    It's an easy read and my kids enjoyed it as an introduction to the concepts before learning how to code and getting bogged down in syntax errors.

    As a first programming language, Python is the best place to begin. Zed Shaw's Learn Python the Hard Way will teach you the basics of the language. Through his website you can buy a PDF version of the book with companion videos which will walk you through the exercises. Alternatively you can buy a hard copy from the likes of Amazon (~£20), Book Depository (€24), or Easons (€56)

    The New Boston has a YouTube video play list which will teach you the language : Python 3.4 Programming Tutorials


  • Registered Users Posts: 201 ✭✭selassie


    KN King, C Programming: A Modern Approach is great for a more modern C beginner book with more exercises/projects.


  • Registered Users Posts: 22,206 ✭✭✭✭Esel


    I would start with Kernighan & Richie The C Programming Language
    This is by far the best programming book for beginners ever written.

    Slight thread hijack... I have a first edition of this - is it worth much? :)

    Not your ornery onager



  • Advertisement
  • Registered Users Posts: 17,465 ✭✭✭✭fritzelly


    Esel wrote: »
    Slight thread hijack... I have a first edition of this - is it worth much? :)

    Not exactly Harry Potter is it?

    @OP
    Any OOP book will be a good start for most programming languages, each language will have it's quirks but an understanding of the fundamentals will make for an easy transition between each language.


  • Registered Users Posts: 4,853 ✭✭✭10000maniacs


    Esel wrote: »
    Slight thread hijack... I have a first edition of this - is it worth much? :)
    Not really. Maybe €30 on eBay.
    I have both the original (1985 reprint) and the ANSI version which I bought for the newly added appendix which is also a tour de force in technical writing.
    I am biased because I spent 20 years writing embedded software, both assembler and C.


  • Registered Users Posts: 880 ✭✭✭moycullen14


    Fred Brooks - The mythical man month. https://en.wikipedia.org/wiki/The_Mythical_Man-Month

    You won't learn much about programming but you'll learn an awful lot about software projects......

    40 years after this book came out, I still come across PMs that think adding resources to a late project will help......


  • Registered Users Posts: 880 ✭✭✭moycullen14


    God be with the days!

    I started out in the mid 80s with K&R and Kernighan and Pike - the Unix Programming Environment. Nothing else except those and unix man pages. The C is long gone but every day I still use scripts, commands and concepts I learned over 30 years ago. It's amazing what lasts.

    I tend to agree that C may not be the best language to start with but no other language will teach you about the fundamentals of memory management and variable composition. Personally, I don't trust anyone who hasn't a background in C ;)


  • Registered Users Posts: 768 ✭✭✭14ned


    Fred Brooks - The mythical man month. https://en.wikipedia.org/wiki/The_Mythical_Man-Month

    You won't learn much about programming but you'll learn an awful lot about software projects......

    40 years after this book came out, I still come across PMs that think adding resources to a late project will help......

    I remember in a job I had twenty years ago losing my temper and throwing that Brooks book at an idiot in an eight hour meeting about what to do about the project being late. The entire dev team were forced to be at the meeting, and it was the third day long meeting that week about the same problem, during which obviously enough nobody was writing code (it was the days before laptops in meetings).

    I'd like to think I'm more mature now and wouldn't throw books at people. But sometimes, as team lead, you get exasperated for your team at the nonsense that goes on in big multinationals.

    Niall


  • Registered Users Posts: 3,376 ✭✭✭Shemale




Advertisement