rramadass 5 days ago

Alexander Stepanov also has Notes on Programming (a series of lectures he gave at various companies) which is what this and his other published books are based on. You can find the link to it in the "reference" section of his wikipedia page - https://en.wikipedia.org/wiki/Alexander_Stepanov

I have all of his books and they are all great (though not easy!). His starting point is "Algebraic Structures" (basically sets of objects and operations defined on them eg. Groupoid/SemiGroup/Monoid/Group etc.) and so some familiarity with Abstract Algebra/Discrete Mathematics is assumed. The mapping he does from the mathematics to a language construct modeling a concept is what gives one the insight into programming. His other book From Mathematics to Generic Programming gives one a more "easier" approach to the subject and should be read in conjunction with this one for better understanding.

A related old book is Ruminations on C++: A Decade of Programming Insight and Experience by Andrew Koenig and Barbara Moo. This is derived from a collection of articles written by Koenig when he was working closely with Stepanov on his ideas and implementation of STL. His idea of programming templates in a functional and generic manner is what is conveyed in this book in the "templates" section and is still quite illuminating (no math but short C++ code in articles). So something which might not be clear from Stepanov's mathematical treatment may be clearer here since you can see an actual C++ implementation (warts and all).

mempko 6 days ago

If you are passionate about programming and and computer science, this is the book to read. It's like Euclid's elements, but for programming.

kragen 6 days ago

I've found this book, and Stepanov's previous work, to be among the most insightful ways of thinking about programming. But it's hard to distill, and we could wish for a much better language than C++ to express these ideas in.

  • pjmlp 5 days ago

    That is the attractiveness of the dark side of the force, the closest we have come from all kinds of Haskell like exploration ideas into a mainstream language, maybe one day Rust will get there as well.

    No accident that Bartosz Milewski got to mix both worlds.

    Agree it should be better.

    • kragen 5 days ago

      Stepanov is addressing a lot of topics that Haskell sweeps under the rug. For software for which crashing is acceptable behavior, such as compilers, web browsers, or theorem provers, that's an improvement. Not all software falls in that category.

iLemming 6 days ago

The year in the HN title looks wrong, in the PDF it says 2019, please fix it, otherwise people ignore the book thinking it's too outdated.

Oh wait. I stand corrected - I missed that it said "Copyright 2009", "First printing 2019", not sure why it took so long to get it printed.

  • icermann 6 days ago

    It's explained on the web page

    "After ten years in print, our publisher decided against further printings and has reverted the rights to us. We have published Elements of Programming in two forms: a free PDF and a no-markup paperback."