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 Modern C++ Design

    Modern C++ Design

    Andrei Alexandrescu · 2001

    This title documents a convergence of programming techniques - generic programming, template metaprogramming, object-oriented programming and design patterns. It describes the C++ techniques used in generic programming and implements a number of industrial strength components.

    Programming
    Open LibraryAmazon
    Stats for nerds
    29recommend
    83mentions
    69people
    2007–2026years
    40% recommend52% neutral8% critical

    Mentions per year

    20072009201120132015201720192021202320252026

    What Hacker News says

    1. tenderfaultJun 2026
      So happy to see Andrei Alexandrescu was included in this documentary. His book on modern C++ design was a mind opener at the time I read it. Maybe still is today. Anybody else read it?
      thread
    2. bingemakerFeb 2026
      Off topic: Back in the day, C++ programming books Andrei Alexandrescu are a joy to read, especially, Modern C++ design.

      Also, this presentation https://accu.org/conf-docs/PDFs_2007/Alexandrescu-Choose_You... killed a lot of bike shedding!

      thread
    3. jeffreygoestoAug 2023
      The Turbo Pascal 5.5 book(s), Alexandrescu's "Modern C++ Design", Scott Meyers' books, "Code Complete", ...
      thread
    4. menaerusOct 2022
      Yes, I agree, my experience is also that OOP is taught as something orthogonal over procedural imperative programming whereas it should be taught as an extension to it. But even with that said I honestly cannot think of many examples where OOP provides more elegant solution to the problem. Quite the contrary, any larger and more complex OOP-style codebase is quite an unreadable mess despite all the standard promises about the readability, maintainability, "testability", clean abstractions etc.

      I think that the biggest bend in my mind was when I set myself a goal to try to digest "Elements of Programming" by A. Stepanov and "Modern C++ Design" by A. Alexandrescu. Don't let the "modern" in the title trick you, it's a book from 2001.

      But irrelevant of the programming language, which in my example happens to be the C++, these two books triggered me to start challenging the tunnel vision I had up until then. It took me some time and a lot of experimentation to basically unlearn the OOP way of approaching the problems and trying to embrace a totally different, I'd say, almost mathematical way of looking at the things. It felt like a relief and it really had a huge impact not only on my code style but the way I think about the problems.

      Since then I think I started producing much simpler and, what I think, non over-engineered code of better quality without a lot of unnecessary cruft.

      thread
    5. rramadassSep 2022
      C++ actually has two axes; 1) Paradigm axis (i.e. Procedural, Object-Oriented, Generic, Compile-time and Functional) and 2) Usage axis (i.e. Low-level bare-metal, Kernel, Library, Application). Every feature has an ideal application at the intersection of these two axes. Another way to look at it is how best to map concepts from the Problem-domain directly onto language features. Here techniques like Commonality/Variability analysis (bedrock of DDD, Patterns etc.) are used to express concepts using specific language features and then combine those into a coherent design.

      Most of the above design ideas are found only in pre Modern C++ books. I don't know of any newer books which actually teach multi-paradigm design using Modern C++. So you will have to read the older books and then think about how you would map the same ideas into Modern C++. You might find the following useful;

      Pre Modern C++:

      1) Multi-Paradigm Design for C++ by James Coplien.

      2) Scientific and Engineering C++: An Introduction With Advanced Techniques and Examples by John Barton & Lee Nackman.

      3) Advanced C++ Programming Styles and Idioms by James Coplien.

      4) Modern C++ Design: Generic Programming and Design Patterns Applied by Andrei Alexandrescu.

      Modern C++:

      1) Functional Programming in C++: How to improve your C++ programs using functional techniques by Ivan Cukic.

      thread
    6. tfigmentMay 2022
      I was kind of hoping this was updated Modern C++ Design by Andrei Alexandrescu. That was my favorite C++ book and at least I thought it didn't use the STL in Loki at all. It was the better templating design though heavily at the mercy of compilers at the time.
      thread

    Related

    Cover of The C++ programming language
    2008–2026

    The C++ programming language

    Bjarne Stroustrup
    19 recommend · 49
    Cover of Functional Programming in C++
    2019–2026

    Functional Programming in C++

    Ivan Cukic
    3 recommend · 6
    The C++ standard template libraryP. J. Plauger
    2015–2026

    The C++ standard template library

    P. J. Plauger
    1 recommend · 8
    Cover of Beautiful C++
    2022–2025

    Beautiful C++

    John Davidson
    1 recommend · 3
    Cover of Discovering Modern C++
    2016–2026

    Discovering Modern C++

    Peter Gottschling
    4 recommend · 8
    Large-Scale C++ Volume IIJohn Lakos
    2020–2026

    Large-Scale C++ Volume II

    John Lakos
    1 recommend · 2
    Cover of Large-scale C++ software design
    2009–2026

    Large-scale C++ software design

    John Lakos
    24 recommend · 41
    Cover of C++ Primer
    2008–2026

    C++ Primer

    Stanley B. Lippman
    53 recommend · 74