Live data from Hacker News

Ask HN: CS papers for software architecture and design?

news.ycombinator.com

21–30 of 104 posts

Re: Ask HN: CS papers for software architecture and design?

#21
[1] Joe Armstrong 2003. "Making reliable distributed systems in the presence of software errors" (the Erlang paper, perhaps the most famous implementation of message passing concurrency).

[2] John Backus 1979. "Can programming be liberated from the von Neumann style? A functional style and its algebra of programs." (a famous case for functional programming)

[3] Victor R. Basili and Albert J. Turner. 1975 "Iterative enhancement: A practical technique for software development" (Agile in 1975? Actually it seems iterative development can be traced back to the 50s)

[4] Andrew D. Birrell and Bruce Jay Nelson 1984 "Implementing remote procedure calls" (The idea of making a distributed language operation similar to a local language operation)

[5] Edsger W. Dijkstra. "Go To statement considered harmful" (the mother of all those "considered harmful" titles)

[6] Carl Hewitt 1977. "Viewing control structures as patterns of passing messages". (seminal study of asynchronous messaging)

[7] Carl Hewitt, Peter Bishop, and Richard Steiger 1973. "A universal modular ACTOR formalism for artificial intelligence" (idem)

[8] Charles Antony Richard Hoare 1974. "Monitors: An operating system structuring concept". (an early refinement of a very influential concurrency concept)

[9] Charles Antony Richard Hoare 1979. Communicating sequential processes (an early presentation of invariants for state machines)

[10] deleted

[11] Gilles Kahn and David B. MacQueen 1977. "Coroutines and networks of parallel processes" (non preemptive concurrency, an alternative to threads for collaborative concurrency)

[12] Robert A. Kowalski 1979. "Algorithm = logic + control". (A logic program can be “read” in two ways: either as a set of logical axioms (the what) or as a set of commands (the how); the idea behind relational programming, like in prolog)

[13] Nancy Leveson and Clark S. Turner 1993. "An investigation of the Therac-25 accidents." (the mother of all race conditions papers? Focuses the mind about the dangers of interleavings)

[14] Henry Lieberman. 1986 "Using prototypical objects to implement shared behavior in object- oriented systems." (influenced js? Understanding delegation)

[15] George A. Miller. 1956 "The magical number seven, plus or minus two: Some limits on our capacity for processing information." (this might be pushing it, but maybe the original case for managing complexity)

[16] Chris Okasaki. 1998 "Purely Functional Data Structures." (how to design functional algorithms)

[17] John C. Reynolds 1975. "User-defined types and procedural data structures as complementary approaches to data abstraction." (the fundamental abstract data types concept)

[1] http://erlang.org/download/armstrong_thesis_2003.pdf

[2] https://www.thocp.net/biographies/papers/backus_turingaward_...

[3] https://www.cs.umd.edu/~basili/publications/journals/J04.pdf [4] http://www.bighole.nl/pub/mirror/www.bitsavers.org/pdf/xerox...

[5] https://homepages.cwi.nl/~storm/teaching/reader/Dijkstra68.p...

[6] https://www.cypherpunks.to/erights/history/actors/AIM-410.pd...

[7] http://worrydream.com/refs/Hewitt-ActorModel.pdf

[8] http://www.cs.unm.edu/~cris/481/hoare-monitors.pdf

[9] http://lass.cs.umass.edu/~shenoy/courses/677/readings/Hoare....

[11] https://hal.inria.fr/inria-00306565/PDF/rr_iria202.pdf

[12] http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.472...

[13] https://www.cs.umd.edu/class/spring2003/cmsc838p/Misc/therac...

[14] http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.48.6...

[15] http://www.sns.ias.edu/~tlusty/courses/InfoInBio/Papers/Mill...

[16] https://www.cs.cmu.edu/~rwh/theses/okasaki.pdf

[17] https://pdfs.semanticscholar.org/71db/39fe3e2a6b80c52b18bd24...

Re: Ask HN: CS papers for software architecture and design?

#22

[1] Joe Armstrong 2003. "Making reliable distributed systems in the presence of software errors" (the Erlang paper, perhaps the most famous implementation of message passing concurrency). [2] John Backus 1979. "Can programming be liberated from the von Neumann style? A functional style and its algebra of programs." (a famous case for functional programming) [3] Victor R. Basili and Albert J. Turner. 1975 "Iterative e…

owo, thx a lot for the effort.

Re: Ask HN: CS papers for software architecture and design?

#23

DynamoDB paper [1] - one of the big AP, KV stores that kicked off the NoSQL wave. Paper about Akamai[2] - "Nuggets in content delivery" Also, acolyers blog "the morning paper". He reviews and explains one paper every day. its great because you get a sense of whats current. [1] http://www.allthingsdistributed.com/files/amazon-dynamo-sosp... [2] https://www.akamai.com/cn/zh/multimedia/documents/technical-...

The Morning Paper's Adrian Colyer is a human Machine. I religiously read his papers.

[deleted]

Re: Ask HN: CS papers for software architecture and design?

#24
post #9

For me, the most influential was "Out of the Tar Pit". From the abstract: "Complexity is the single major difficulty in the successful development of large-scale software systems. Following Brooks we distinguish accidental from essential difficulty, but disagree with his premise that most complexity remaining in contemporary systems is essential." [1] https://github.com/papers-we-love/papers-we-love/blob/master...

I agree that's a wonderful paper to read, but has it had significant influence in the mainstream?

Re: Ask HN: CS papers for software architecture and design?

#25

For me, it would be: 1. actor model of computation ( https://arxiv.org/abs/1008.1459 ) 2. map reduce ( https://research.google.com/archive/mapreduce.html )

On the industrial side, Jim Gray's paper complements Hewitt's nicely. http://www.hpl.hp.com/techreports/tandem/TR-85.7.pdf (On second thought it helps to have Armstong's thesis on Erlang as a bridge between them, but I can't find an easily downloadable link at the moment.)

Joe Armstrong's thesis from Wayback Machine

https://web.archive.org/web/20151104200534/https://www.sics....

Re: Ask HN: CS papers for software architecture and design?

#26
Here are some books, talks and papers that I've found really influential:

Clean Architecture (https://www.amazon.com/dp/0134494164) - Uncle Bob has been talking about this for years, but it's a really good exploration of how to build systems.

Turning the Database Inside Out is a talk that really made Apache Kafka and stream processing click with me. https://www.confluent.io/blog/turning-the-database-inside-ou...

Going through and implementing the Raft algorithm was also very formative for me - it's the first time I really started to grok the challenges with building large scale distributed systems. https://raft.github.io/

And to add a paper to the list to not totally go off topic - Birrell's paper "An Introduction to Programming with Threads" I thought was a very useful read - in part for the historical context, but he also breaks down many fundamental concepts that will look very familiar to the modern reader (it was written nearly 30 years ago). It's also very readable. https://birrell.org/andrew/papers/035-Threads.pdf

Re: Ask HN: CS papers for software architecture and design?

#28
post #9

For me, the most influential was "Out of the Tar Pit". From the abstract: "Complexity is the single major difficulty in the successful development of large-scale software systems. Following Brooks we distinguish accidental from essential difficulty, but disagree with his premise that most complexity remaining in contemporary systems is essential." [1] https://github.com/papers-we-love/papers-we-love/blob/master...

I agree that's a wonderful paper to read, but has it had significant influence in the mainstream?

Maybe not in the mainstream, but I do see echos of the philosophy of reducing accidental complexity in clojure, elm, react/redux, rust.

Re: Ask HN: CS papers for software architecture and design?

#29
post #9

For me, the most influential was "Out of the Tar Pit". From the abstract: "Complexity is the single major difficulty in the successful development of large-scale software systems. Following Brooks we distinguish accidental from essential difficulty, but disagree with his premise that most complexity remaining in contemporary systems is essential." [1] https://github.com/papers-we-love/papers-we-love/blob/master...

I agree that's a wonderful paper to read, but has it had significant influence in the mainstream?

Not yet, but I suspect that is partly the mainstream not catching up to the ideas it contains yet.

Re: Ask HN: CS papers for software architecture and design?

#30
A lot of good suggestions, but quite technical. Are there any good ones focusing on the design process, with a bias towards CS?

I found this very intriguing:

Towards a Theory of Conceptual Design for Software https://groups.csail.mit.edu/sdg/pubs/2015/concept-essay.pdf

Post reply on HN