3 ms·
Ask HN: What are some good books on creating abstractions?
Does anyone have any recommendations for books or journals/papers to read to improve my ability to write useful and maintainable abstractions? Ideally I'd like to find a more formalized treatment of "abstracting" in the vein of the GoF's Design Patterns or a survey of the field like the excellent Designing Data Intensive Applications but I'm guessing that's kind of like asking for a map to the Holy Grail.
- streetcat1 7y agoThose are the holy grail: 1) https://www.amazon.com/Object-Oriented-Modeling-Design-Rumbaugh/dp/8120310462 https://www.amazon.com/Object-Oriented-Modeling-Design-Rumba... 2) https://www.amazon.com/OMT-Insights-Perspective-Object-Oriented-Programming/dp/0138469652 https://www.amazon.com/OMT-Insights-Perspective-Object-Orien... 1) https://www.amazon.com/Executable-UML-Foundation-Model-Driven-Architecture/dp/0201748045 https://www.amazon.com/Executable-UML-Foundation-Model-Drive... And the work of daniel Jackson from MIT : http://people.csail.mit.edu/dnj/ http://people.csail.mit.edu/dnj/ Look at this course, at the videos at the bottom: https://stellar.mit.edu/S/course/6/fa18/6.170/materials.html https://stellar.mit.edu/S/course/6/fa18/6.170/materials.html Jackson is also behind Alloy: https://mitpress.mit.edu/books/software-abstractions-revised-edition https://mitpress.mit.edu/books/software-abstractions-revised...
- austincheney 7y agoHere are mine: * XML Schema - https://www.amazon.com/Definitive-XML-Schema-Priscilla-Walmsley/dp/0132886723/ref=mp_s_a_1_1?dchild=1&keywords=xml+schema&qid=1586680576&sr=8-1 https://www.amazon.com/Definitive-XML-Schema-Priscilla-Walms... * DOM - https://www.amazon.com/DOM-Scripting-Design-JavaScript-Document/dp/1430233893/ref=mp_s_a_1_2?dchild=1&keywords=document+object+model&qid=1586680658&sr=8-2 https://www.amazon.com/DOM-Scripting-Design-JavaScript-Docum... * I don’t have a book for this, but learn data structures instead of algorithms. If you can learn to think in data structures the concepts of algorithms will come to you naturally like dreaming or thinking about driving directions. * I also don’t have a book for this but the relationships between data is more important than the data itself. This is realized by how you express your abstraction.
- afarrell 7y agoA Philosophy of Software Design by John Osterhout: https://www.amazon.co.uk/dp/B07N1XLQ7D/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1 https://www.amazon.co.uk/dp/B07N1XLQ7D/ref=dp-kindle-redirec... Concise, readable, and highly applicable.
- gitgud 7y ago> Ideally I'd like to find a more formalized treatment of "abstracting" in the vein of the GoF's Design Patterns. Well [1] that book you're referring to, has changed my perspective on abstractions and how to communicate them to other people. There's probably no "Holy Grail" of abstraction guides better than that IMHO. Designing and implementing useful and maintainable abstractions comes from experience in both consuming and designing abstractions for API's. Having empathy for both the consumers and future developer's of the API gives you a good perspective on how to structure the abstraction. The best abstractions are from people who have used bad abstractions, and are usually incrementally developed over time... [1] https://www.amazon.com.au/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612 https://www.amazon.com.au/Design-Patterns-Elements-Reusable-...