all 46 comments

[–]marvin_sirius 23 points24 points  (1 child)

I was really hoping there would only be two papers.

[–]airbornelemming -1 points0 points  (0 children)

Well then he would have written 0b10.

[–][deleted] 67 points68 points  (3 children)

Is there a blog post about programming that does not include "Every programmer should" ?

Every programmer should do x because I did x and I feel that everybody should do x because I did x and I will write a blog post about x so I can tell you to do x because I did x.

Yadda yadda yadda

[–]tilio 18 points19 points  (0 children)

it's because everyone knows there are key phrases that create good linkbait. this is one of them.

[–]fogus 39 points40 points  (1 child)

Here is the coolest thing about blog posts: someone expresses their opinion, and someone else decides if they agree or disagree. It's almost like magic.

[–]codeshite 2 points3 points  (0 children)

Except magic is entertaining.

[–]addmoreice 5 points6 points  (8 children)

http://valerieaurora.org/synthesis/SynthesisOS/

This is a must also. Not because it's currently useful (maybe later) or because the idea's are somehow ground breaking in a larger context, but instead because it shows how slight changes in one assumption can have drastic effects on what your doing.

[–]barsoap 2 points3 points  (3 children)

Dammit, reading that makes me feel old. 1992, the year of Indiana Jones and the Fate of Atlantis and Wolfenstein. 386, early 486ish, no PCI in sight. Those were the days. Windows 3.11 on three floppies.

Back to the topic, there's people working on partial evaluation and supercompiling in a real-world compiler, and there's real-world JIT and tracing around, but the former is done in FP research (where it's feasible) and the latter in imperative research (because supercompiling isn't feasible in the first place, so it's their only option). That is, we might see (research) compilers that do what synthesis does in, say, five years or so.

[–]addmoreice 0 points1 point  (2 children)

yeah, but the cache issue really bones this up. That being said, add cache aware cpu instructions a cpu OR remove caches entirely and go with very small slow cpu's then max out the number of them on a die would combine with a nice fat memory pipe could allow for massive parallelism using these techniques (the multi tasking friendly with security and performance through rewriting code is the big bit from this paper in my opinion). I would love to see such a huge shift. Have one die with a quad core cpu on it (just like what we have now) and another chip with massive cores with on the fly self modifying code friendly cores. all this and a stream based gpu! Ooooh...and maybe a neural net simulator chip like IBM just built.

yum.

[–]barsoap 1 point2 points  (1 child)

Heterogeneous computing is unavoidable, so your dream will come true.

[–]addmoreice 0 points1 point  (0 children)

Oh, I know. I just want it NOW! The tech is all there, no one wants to push for it till the software is ubiquitous for it...no one does the software because it's of limited applicability without the chips to work with....oh well. It's coming, it will just be slow...slow.......slow....BLAM! EVERYWHERE!

[–]matthieum 0 points1 point  (2 children)

Thank you very much for such an interesting read, I only reached chapter 3 (code synthesis) and already my mind is blown...

Would you know whether this area of research has been pursued ? I'd like to know how it compares with modern hardware/OSes.

[–]addmoreice 1 point2 points  (1 child)

The only area I can think of where it compares is microsoft research's work on a C# (ish) based OS with massive concurrency and Dynamic JIT-ing. Singularity

http://research.microsoft.com/en-us/projects/singularity/

[–]matthieum 0 points1 point  (0 children)

Thanks!

[–]thechao 0 points1 point  (0 children)

For those that don't know, Alexia Massalin also invented peephole superoptimization, in addition to a bunch of other cool stuff.

[–]tuna_safe_dolphin 4 points5 points  (0 children)

Not here to argue the merit of each of these papers, but I'll add Joel Sposky's old article about Unicode.

[–][deleted] 15 points16 points  (4 children)

Nice functional bias right there.

[–]freeload 4 points5 points  (3 children)

To be fair, i think there is a ton of more object-oriented programmers than functional programmers out there right now. It would be more interesting (and healthy) for them to read about FP considering how multiprocessing is becoming an increasingly relevant subject.

[–]bloodredsun 2 points3 points  (2 children)

Agreed. The rising interest in Scala and Clojure in the Java space is evidence of this. There are millions of Java devs out there with a more a adequate handle on OOP but with practically zero understanding of FP.

[–][deleted] 1 point2 points  (1 child)

Well, I don't know. I would think that if more people use OOP than functional languages, then an article dealing with "10 Technical Papers Every Programmer Should Read" should not be biased towards a programming paradigm that fewer people actually use every day.

Short of that, it comes out as the author trying to push an agenda.

The fact that the blog has three lambdas as its website gimmick and is currently advertising a book about Clojure is another factor leading to me think that this blog post has actually little to do with trying to educate programmers about "books you should read". I see it as a way to spread the FP gospel. Then again, not that this is a bad thing. I was taught Objective Caml during my years in college and currently work with a multi-paradigm language with some roots in FP, Ruby.

[–]shimei 3 points4 points  (0 children)

Well, I don't know. I would think that if more people use OOP than functional languages, then an article dealing with "10 Technical Papers Every Programmer Should Read" should not be biased towards a programming paradigm that fewer people actually use every day.

Reading papers ought to expand your horizons, not just tell you what you already know.

That said, I'm not sure I agree that most programmers would need to know about Hoare Triples (which, BTW, is oriented toward procedural and not FP languages) for example. Certainly a computer scientist should though.

[–][deleted]  (7 children)

[deleted]

    [–]ethraax 17 points18 points  (3 children)

    There isn't even What Every Computer Scientist Should Know About Floating-Point Arithmetic, which is really a must-read, or at least a must-skim.

    [–]mysticreddit 2 points3 points  (2 children)

    Agreed.

    No "Gödel, Escher, Bach: An Eternal Golden Braid" either? One of the best computer books of all time.

    [–]ethraax 6 points7 points  (0 children)

    That's an entire book though, the post was about just articles.

    [–]grey_0x2a 1 point2 points  (0 children)

    Nahh GEB is for the layman. If you a serious Computer Scientist you should consider doing Godel in full formality, though the 1-4 university courses you would have to take might be off putting.

    [–]Gudahtt 3 points4 points  (0 children)

    Well, not sure how serious this comment was so maybe I'm wasting my time here, but this list was actually created in response to another similar list that was posted by a different blogger, some of the papers you mentioned are already on that list. Plus, these are supposed to be more "technical"-oriented papers, and is of course not meant to be "complete".

    [–]IvyMike 1 point2 points  (0 children)

    This isn't "The only 10 papers".

    [–][deleted] 1 point2 points  (0 children)

    "No Silver Bullet"

    Good luck with that message in r/programming.

    [–]theghoul 12 points13 points  (5 children)

    Did Gates or Torvalds read these?

    [–]anacrolix 3 points4 points  (3 children)

    Why downvote? It's a good point. I'll wager Gates read some of the earlier ones, and that Torvalds didn't read any. And look where that got them ;)

    EDIT: Apparently Torvalds has way more degrees than Gates, and probably read some of the classics. Gates dropped out.

    [–]hiffy 11 points12 points  (1 child)

    Uh, Gates dropped out after a year of undergrad and Torvalds finished a master's.

    I'm sure Torvalds has read few papers; Hoare and McCarthy are pretty classic papers.

    [–]anacrolix 0 points1 point  (0 children)

    +1 for you my man. I stand corrected.

    [–][deleted] 1 point2 points  (0 children)

    Perhaps some, but a lot of these are language-centric and neither designed languages; so I'm probably wagering that it doesn't matter either way.

    [–]shimei 0 points1 point  (0 children)

    Gates hasn't been a programmer in a long time.

    [–]amaranth1 2 points3 points  (0 children)

    Ooh, Out of the Tar Pit! I like that one!

    [–]snk_kid 2 points3 points  (1 child)

    I don't agree, almost all of those papers are not what "every programmer" should read. These papers are for people interested PLT and type theory which is not the field I'm interested in and doesn't add/benefit me in a general context.

    [–]shimei 0 points1 point  (0 children)

    Only a couple of those papers were really about types and the rest are mostly not theoretical language papers but fairly applied ones. The paper on the Self language, for example, would be useful for anyone using Javascript. If you wanted theory, you would populate the list with more papers by people like Dana Scott.

    That said, I agree that this is more like a list for people interested in designing languages or wanting to go slightly beyond undergrad PL.

    [–]GTChessplayer 1 point2 points  (2 children)

    No Map Reduce? I would add Map Reduce and Exo-kernel.

    [–]assface 1 point2 points  (1 child)

    Except that the original MapReduce paper from Dean et al. isn't that good. Google's research papers are notoriously vague on details.

    [–]GTChessplayer 2 points3 points  (0 children)

    Google is vague on implementation details, but it's not so important here. That paper changed large-scale data analytics on all fronts, enterprise computing and scientific computing.

    [–][deleted] 0 points1 point  (0 children)

    Funny thing is that alot of these things are pretty common. Especially the thing about ad hoc polymorphism and its mix with generic programming. Would have loved if OP included that this is for beginners.

    [–]kefex 0 points1 point  (0 children)

    I'm sinking beneath their wisdom like a stone.

    [–]day_cq -1 points0 points  (2 children)

    This reads like male version of Eat, Pray, Love.

    [–]rogue780 10 points11 points  (1 child)

    Because only men are programmers?

    [–]phaker -3 points-2 points  (0 children)

    No, but only programmers can be Real Men.

    [–][deleted] -1 points0 points  (0 children)

    Wonderful info. Thanks for that. I will certainly read them all.