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 Large-scale C[plus plus] software design

    Large-scale C[plus plus] software design

    John Lakos · 1996

    ProgrammingSoftware Engineering
    Open LibraryAmazon
    Stats for nerds
    6recommend
    14mentions
    11people
    2011–2024years
    43% recommend57% neutral

    Mentions per year

    20112013201520172019202120232024

    What Hacker News says

    1. chipdartJul 2024
      > I am afraid of the compile-time cost.

      Even though compilation time is the bane of C++, I think this concern regarding this specific usage is grossly overblown. I'm going to tell you why.

      With incremental builds you only rebuild whatever has changed in your project. Embedding JSON documents in a C++ app is the kind of thing that is rarely touched, specially if all your requirements are met by serializing docs at compile time. This means that this deserialization will only be rarely rebuilt, and only under two scenarios: full rebuild, and touching the file.

      As far as full rebuilds go, there is no scenario where deserializing JSON represents a relevant task in your build tree.

      As for touching the file, if for some weird and unbelievable reason the build step for the JSON deserialization component is deemed too computationally expensive, it's trivial to move this specific component into a subproject that's built independently. This means that the full cost of an incremental build boils down to a) rebuilding your tiny JSON deserialization subproject, b) linking. Step a) runs happily in parallel with any other build task, thus it's impact is meaningless.

      To read more on the topic, google for "horizontal architecture", a concept popularized by the book "Large-Scale C++: Process and Architecture, Volume 1" By John Lakos.

      Mountain out of a molehill.

      thread
    2. stagger87Dec 2020
      I really like John Lakos who has written a few books on large scale C++ projects. Very practical material. I don't know how well it translates to other languages but they have been very helpful for my C++ projects. His books are based on his extensive real-world experience in this domain, both for EDA software and Bloomberg.

      *I have no association with him whatsoever.

      thread
    3. truth_be_toldSep 2018
      "Software Engineering" is merely a collection of principles, techniques, heuristics, structure and practice all validated by trial and error. As such you have to read a variety of books to get the overall picture. Specifically books with sizable code for various problems. You may find the following helpful to get started (many of these can be bought used and cheap);

      * Fundamentals of Software Engineering by Ghezzi, Jazayeri and Mandrioli

      * The Practice of Programming by Kernighan & Pike.

      * Code Complete by Steve Mcconnell.

      * The Unix Programming Environment by Kernighan & Pike

      * Advanced Unix Programming by Marc Rochkind.

      * C Interfaces and Implementation by David Hanson.

      * Large Scale C++ design by John Lakos

      * Unix Network Programming by Richard Stevens.

      The key is that while reading the above you need to "get" how the code is "structured" rather than the details. For example, how does the code for a TCP server and client "look like"? It is a kind of spatial knowledge which you can then consider as one "module" of functionality and reproduce as needed. Large Systems consist of a bunch of layered and well partitioned modules exposing simple and clean interfaces. There will also be modules which cross-cut all the functional modules like "Error-Handling", "Logging" etc. This is the core of "Software Engineering", everything else is details.

      Finally, you would also need to read a book/source where you can see all of the above principles put into practice while building a non-trivial (initially not overly complex) system.

      thread
    4. signa11Jun 2015
      there is an excellent book by jon lakos called 'large scale c++ design' which treats organizational or physical design of large scale c++ projects (> 1giga loc). highly recommended.
      thread
    5. MichaelCrawfordMay 2015
      Learn C++. All the Quant work I've ever heard of, is done in C++.

      Read John Lakos' "Large Scale C++ Software Development" as well as Scott Meyers' Effective C++ series.

      thread
    6. cpetersoFeb 2011
      Linux developer Rusty Russell wrote a helpful article about designing C libraries to be easily configured and reused:

      "On C Library Implementation": http://rusty.ozlabs.org/?p=140

      For such an important subject, there is little practical discussion or good examples of library design. Compare the number of books about C++ object-oriented design versus the design and packaging of C/C++ libraries.

      The best reference I know is John Lakos's excellent (but ancient: 1996!) book on the subject: "Large-Scale C++ Design." Here are some excerpts from the book.

      http://blog.codeimproved.net/2009/03/the-large-scale-c-softw...

      http://www.cs.unc.edu/~stotts/COMP204/lakos/

      thread

    Related

    Cover of Large-scale C++ software design
    2009–2026

    Large-scale C++ software design

    John Lakos
    24 recommend · 41
    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
    Large-Scale C++ Volume IJohn Lakos
    2020–2026

    Large-Scale C++ Volume I

    John Lakos
    2 recommend · 4
    Cover of The art of multiprocessor programming
    2009–2026

    The art of multiprocessor programming

    Maurice Herlihy
    27 recommend · 64
    Large-Scale C++ Volume IIJohn Lakos
    2020–2026

    Large-Scale C++ Volume II

    John Lakos
    1 recommend · 2
    Cover of Modern C
    2015–2025

    Modern C

    Jens Gustedt
    37 recommend · 55
    Cover of Accelerated C++
    2007–2026

    Accelerated C++

    Andrew Koenig
    47 recommend · 70
    Cover of The C Programming Language
    2007–2026

    The C Programming Language

    Brian W. Kernighan
    246 recommend · 604