I hear you, friend, it's like it's ok for companies to hire us , men, as a "risky bet", I'm not the best engineer but thankfully my employers have all "seen" something in me to have enough faith to give me the chance to learn the job and then become better. Women seem to not get the same kind of good faith: my partner has two engineering degrees and she's by far a better engineer than I (skill-and-attitude-wise), and yet most companies reject her because of her "lack of experience". I know that that is a problem that befalls recent graduates all over the globe, but the fact that I garnered faith from employers more than once and she hasn't, not a single time, is -IMO- telling of a lack of balance.
Interesting, does this essay convey to you that the manual labourer is doomed and Russell's being a pessimist? I got quite the contrary from it (advocating some sort of socialist state), on par with wilde's [the soul of man under socialism](http://www.marxists.org/reference/archive/wilde-oscar/soul-m...)
Or are you referring to other writings by Russell? I have to confess that besides this essay and "proposed roads to freedom" I've read little of his own stances.
"I want to say, in all seriousness, that a great deal of harm is being done in the modern world by belief in the virtuousness of work, and that the road to happiness and prosperity lies in an organized diminution of work."
tl;dr : you can either keep struggling with the unknown, keep making science, keep searching for the truth to fill the gaps and tame the uncertainty or just choose to believe in some sort of intelligent transcendental designer and sleep happy at night thinking you're special.
I, for one, still choose science. I'd rather have uncertainty till the day I die -knowing that I did my best to make it less so- than giving in to the God of The Gaps.
Natural language is ambiguous, sorry for being misleading; I meant "novel" in the sense of "fresh, not seen before", referring to the more pragmatic paradigm described in the paper.
This is very true, I came to realize this very thing by watching the SICP lectures: the important thing is to understand programming as a problem solving method and computers as tools; the languages that carry this method and express it to computers become secondary in learning.
I tried to use this approach last semester in a course I taught and found out that it isn't easy to get used to an SCM the first time, so regular and good students end up doing huge and late commits, moreover, one of the worse performing students learnt -ironically- to alter the git log to seem more diligent than he actually was (lots of commits and files changed), and with stuff like git rebase, a more clever cheater could never actually get caught. So an approach strongly reliant on the SCM kinda weakens in practice(though, as you point out, it could be used as a _secondary indicator_ or guarantee of work). And in theory, as other commenters say, taken to extremes, one ends up evaluating secondary things and overseeing essential things like the ability to rationally defend the code and explain one's approach.
Nevertheless, it is feasible to set up stuff like post-commit hooks (I actually used 'em to monitor the turn ins to an exam) to maybe submit the code to an automated plagiarism detector like [moss](http://theory.stanford.edu/~aiken/moss/), that would be cool, maybe I'll try that out next semester.
I used this last year, they gave me an org and private repos for the student projects without any fuzz, it was really cool to teach a course with that and we open sourced the projects afterwards (it's in spanish, though) : https://github.com/progra4
I'll definitely use it again, the students learned a lot about project management and distributed version control systems, which is something that isn't being taught as it should, at least not where I went to college.
Interesting, and yes, I am a witness of how fast proper java is; and in extreme performance cases, I guess I'd turn to java before C++ ; maybe the f# also benefits from optimizations (like tail-call optimization) and the underlying VM? (though I don't know how performant the CLR is)
now we're talking, this is a really good response! I almost agree with all of your points, except for the performance, and only in thoroughness: a benchmark will be nice.
And for clarity: the other ones aren't function definitions, they also build a new list, like your example. The examples are meant to be run in a REPL and that's why they don't send to stdout, although it will be just another function application in most cases (but your example works in beanshell, the stand-alone java quasi-REPL, so we're ok). I think all of them can be considered a full-program in those languages: as a stand-alone chunk of code that can be compiled/interpreted and will produce an executable output, that is. And, yes, the autoboxing was the only reason I chose generics, but I tried for it to be concise, given my limited knowledge of java; the max-verbose mode would have used a Runnable or something evil to simulate a higher order function.