Skip to content
HomeVideosBooks
AllTopicsTrends
BlogsPodcasts
HistoryListsWatch laterLiked videosFollowing

The videos, books, blogs and podcasts Hacker News keeps recommending, all in one place.

VideosBooksBlogsPodcastsAboutPrivacySettings

Data from Hacker News, HackerTube, HackerBooks, HackerBlogs and Open Library. Credits · Not affiliated with Y Combinator.

HomeVideosBooksBlogsPodcasts
Ctrl K
    Cover of API design for C++

    API design for C++

    Martin Reddy · 2011

    Machine generated contents note: IntroductionChapter 1: QualitiesChapter 2: PatternsChapter 3: DesignChapter 4: StylesChapter 5: C++ UsageChapter 6: PerformanceChapter 7: VersioningChapter 8: DocumentationChapter 9: TestingChapter 10: ScriptingChapter 11: ExtensibilityAppendix A: LibrariesBibliographyIndex.

    Programming
    Open LibraryAmazon
    Stats for nerds
    6recommend
    8mentions
    7people
    2011–2022years
    88% recommend13% neutral

    Mentions per year

    2011201320152017201920212022

    What Hacker News says

    1. blubJul 2022
      I agree with the other poster saying that learning programming languages doesn’t make you a better coder, just as learning natural languages doesn’t make you a better communicator.

      It’s much more efficient to pick a flexible programming language which allows using various concepts (functional, OO, etc) and constructs and then apply it in various domains which exercise those concepts/constructs.

      Coding can also be learned. Code complete (2nd) is one of the few books focusing on this area - the author calls it construction - and goes into detail about building functions, parameter passing and so on and so forth.

      Another interesting book I read was Martin Reddy’s - API design for C++. You could try finding something similar for your chosen language.

      Finally there’s a couple of books by Pete Goodliffe which are language-independent: Code Craft and Becoming a Better Programmer. Naming, comments, error handling - there’s tons of stuff in there.

      Now onto the topic of Rust and Go - I’ve recently learned both and am about average skills-wise. Go’s easy (the book Efficient Go covers it) and has many sweet spots like network, cmdline tools, heavy concurrency services. Rust is complicated but you can see that it’s a heavy duty language that you can use almost everywhere. Neither made me a better programmer, because I was familiar with most of the concepts they provided. And the new stuff doesn’t improve ones skills, it’s just tooling.

      thread
    2. msaltzMar 2018
      One of the trickier things about C++ for me (in terms of “getting lost”) when I first started was that there’s no standard C++ project structure. It varies based on the build system you use, whether what you’re building is just an API or something else, and personal preference. I recommend looking at some open source C++ projects like Tensorflow (Google), LevelDB (also Google), folly (Facebook), MongoDB, and Thrill (a Spark clone in C++, https://github.com/thrill/thrill). Also pick your own projects you’re interested in. Take a look at basic tutorials for build systems like make, CMake, and Bazel. Hopefully that’ll give you an idea of what a modern C++ project actually looks like, and will help you start your own.

      For books I’d like to add to the current top comment (may go away) API Design for C++. It’s a great reference on exactly what it sounds like.

      thread
    3. zerktenJun 2017
      It's hard to know without knowing what your intro to C++ looked like, and what your background is. If you can get through Accelerated C++, then some of those books may be useful once you've gotten some practice.

      From http://www.ensisoft.com/temp/cplusplus_stack.png (why is this a PNG and not a JPEG?), Modern C++ Design and C++ Template Metaprogramming are likely to be the most challenging. Don't get me wrong, they are fantastic works, but are probably not what you need right now.

      C++ Primer, C++ Common Knowledge, and API Design for C++ are books that I think you should consider that are not listed in the post above. If you have never studied computer architecture it is an important subject to understand. There are good books like Computer Systems: A Programmer's Perspective, but others may have different opinions.

      thread
    4. pjmlpAug 2016
      For C++ APIs, "API Design for C++" from Martin Reddy:

      http://www.apibook.com/blog/

      thread
    5. blubJun 2015
      I would give "API design for C++" by Martin Reddy a shot. The only thing I remember now from the large scale book is to pay attention to compile-time and link-time dependencies, although when I read it I remember that it contained some nice tidbits of info that I had not seen in other books

      The big takeaway was that the way the project is split into libraries, files, folders etc and how these map to classes, modules and subsystems matters.

      thread
    6. panamafrankMar 2015
      Giving tips very much depends on the language you're using and the capabilities of your debugger, having worked on large legacy VC++ projects knowing the "bad smells" and common mistakes to spot is helpful, but you'll struggle to debug projects you don't have a solid knowledge of.

      To improve, try learning cracking; https://microcorruption.com/ is a CTF game based around gaining access to embedded devices, it's rather fun too. I think what the most common mistake I find is two programmers having different assumptions on how some subsystem should work, so try improving your working memory as being able to remember the seemingly ok code 10 frames ago that conflicts with what's in front of you could be the key.

      try:

      Working Effectively with Legacy Code Martin, R.

      API Design for C++ Reddy, M.

      Were both full of indispensable advice.

      thread

    Related

    Cover of The annotated C++ reference manual
    2013–2026

    The annotated C++ reference manual

    Margaret A. Ellis
    2 recommend · 13
    Large-Scale C++ Volume IIJohn Lakos
    2020–2026

    Large-Scale C++ Volume II

    John Lakos
    1 recommend · 2
    Cover of Beautiful C++
    2022–2025

    Beautiful C++

    John Davidson
    1 recommend · 3
    Cover of Designing object-oriented C++ applications using the Booch method
    2013–2026

    Designing object-oriented C++ applications using the Booch method

    Robert C. Martin
    3 recommend · 7
    Cover of The C++ standard library
    2008–2020

    The C++ standard library

    Nicolai M. Josuttis
    9 recommend · 11
    Cover of Functional Programming in C++
    2019–2026

    Functional Programming in C++

    Ivan Cukic
    3 recommend · 6
    Cover of The design and evolution of C[plus plus]
    2008–2026

    The design and evolution of C[plus plus]

    Bjarne Stroustrup
    38 recommend · 120
    Cover of Modern C++ Design
    2007–2026

    Modern C++ Design

    Andrei Alexandrescu
    29 recommend · 83