I tried a websearch the other day on "functional programming
considered harmful" and found remarkably few hits. If anyone is
so inspired, there's an opportunity there to gain some fame while
earning the emnity of the hordes of javascript kids and half of
the Computer Science digirati.
Ah yes: avoidance of second-person is of course critical to the
process of writing good articles. Why did I not see this?
Re-writing that phrase as something like "When writing a piece, the author
should consider--" would be trivial, provided the concept of
"authorship" didn't violate the house religion.
It certainly is fun to think of ways to counsel against including
personal biases when writing, when you're supposed to pretend
that there is no person doing the writing.
It boggles my mind how much goddamn bureaucracy there is at sites like Wikipedia and Stack Overflow. It's nearly as bad as in government.
It's also curious to note that such sites lean very much to the political left.
Why's it curious? Right-wing thinkers almost by definition lean
toward strong centralized control by authority figures. The left
is constantly looking at more distributed systems with more
bottom-up control, in the hope of empowering individuals (you
know, democracy and freedom and all that).
It is admittedly a little peculiar that no one ever seems to
learn that there are problems with "consensus decision-making"
until they actually try it-- it seems like every single arts
organization, activist group, and half of the teams of Silicon
Valley programmers think they can use "consensus", even though
anyone whose ever tried it runs screaming from the endless
meetings and open-ended discussions and political wrangling--
there are breakdown modes where the process is hi-jacked by
crazed passive-aggressive dictators-from-below, and you would
think those would be well-known by now.
The one I like is insiting that "writers" and "writing" has
to be termed "editors" and "editing". I was trying to work
on the "guidelines" once upon a time, and you're essentially
forbidden from using phrases like "When you're writing a
piece like this, you need to ask yourself--."
No one ever writes anything at wikipedia, the words just
magically appear to be hacked up by editors-that-aren't-really-editors.
Another good one is "weasel words": the wikipedia
meaning of that phrase was essentially made up by Evan
Promodoru. For example: "War and Peace is widely regarded
as Tolstoy's greatest work." See how weaselly that is?
It's also true, and not disputed by anyone who knows
anything about the subject, a set which does not include
your average wikilawyer.
And slapping a "Weasel" tag on someone's work should by no
means be regarded as insulting, because, uh....
Wikilawyering. That is one of the primary reasons people hate contributing to Wikipedia.
Yup. Locked in a little room with madmen and shills, the
"conflict resolution process" is a fancy name for "the
runaround", and if you do get some sort of moderator
intervention they do the most shallow reading of the situation
possible, and display all the even-handed wisdom of an old
irc-moderator defending territory...
Oh, and you're supposed to pretend that you're treating
everyone with respect, consequently you're typically surrounded
by people making a great show of being politely reasonable
though their sincerity is, shall we say, suspect.
What was that Jimmie Wales used to say?
Working on wikipedia is supposed to be fun?
Hardly a lingua franca - JavaScript is used because it's the only language web browsers understand.
And French was the Lingua Franca for awhile because Francs was a
dominant country, and English has been Lingua Franca for awhile
because Great Britain and then the US became dominant
counties...
The phrase "lingua franca" means it's in common, widespread use
and it's easy to find someone who speaks it. It does not imply
excellence of any sort. If you guys want to fight about
something, maybe you could think a little harder about what
you're fighting about.
Somedays I feel like anyone allowed to post on slashdot needs to show they have watched Doug Englebarts "mother of all Demos"
Or just read a book (or two) about Englebart and what he was up
to-- the usual tag-line, "inventor of the mouse", doesn't get any
where near describing what Englebart actually did. While the
computer science intelligensia was lost in dreams of Artificial
Intelligence, Englebart went after a vision of computers as
interactive partners to human beings. He started working in the
direction of computers as neworked tools for collaboration among
teams of workers back before TCP/IP...
And there was quite a bit that was lost when Englebart's ideas
went to Xerox and then Apple-- Englebart was thinking about tools
for intelligent human beings, the later versions were
intentionally dumbed down to be Easy To Use for everyone, and in
consequence they developed limitations we're all still struggling
with.
In the case of R, there's a sub-universe of it's own using the
Hadley Wickham (and his cohorts) packages tidyr and so on. If
you buy into the hadleyverse (he prefers the name tidyverse).
I'm particularly interested in the new packages for reading data
readr and readxl, which are supposed to be much faster with saner
defaults. The old read packages had a habit of treating all
strings as though they're a database enumerated type, it would
try to "tokenize" everything on the fly...
I think what you're talking about with R is a symptom of any long
established language-- there's bound to be lots of oddities,
cruft, workaround for misfeatures, and a bewildering array of
competing libraries to do things in slightly different ways.
Personally, I wouldn't complain about R favoring vectors ops (it's
better then struggling along implementing your own the way
you need to in most languages). There's plenty of oddities:
first of all, the "." is not a method call, though it's used
everywhere in names (just like "_"): R does however *have* method
calls, they're implemented with an arrow, just like perl5
("->"). The type system is a little strange, where if you've got
an aggregate of items all of the same type, the aggregate is
regarded as being of the same type...
Anyway there's a new Wickham book "R for Data Science" that's
supposed to be pretty good. Let me give you a link to it,
O'Reilly has broken their website (e.g. they no longer have the
word "book" visible on it's front page):
http://shop.oreilly.com/produc...
I got taken by that one for a minute, because i don't follow crap
news, and I thought the EFF was a serious political organization,
not a bunch of idiot teenager wannabes like slashdot. I know
better now.
April Fool's Day: they tell you it's about "having a sense of
humor" and "being a good sport", but really it's an excellent
custom for identifying news sources that should never be taken
seriously, April or not.
"swap" could be a macro, such as a C function-like macro which
gets converted to inline code. Or the swap procedure could be
flagged as "inline".
Sure, the point is taken. (It's been a few decades since I've needed
to program in C).
I'd hardly be making criticisms if you don't know this.
But this point is emphatically rejected. The question at hand is
whether the CS curriculum is somehow fundamental, or a repository
of knowledge concerning sub-specialties that most of us don't
need to know.
I certainly don't know every wrinkle of this sub-specialty, since
the cases where it's actually of use are actually rather tightly
constrained.
> The people we hire get bright lights in their eyes and get consumed by the moment, trying to understand.
Got it, in addition to the CS cram courses I need acting lessons.
CS geeks like to ask CS trivia questions to make sure no one with the "wrong" background gets in the door. ("No, I don't know how to write a binary sort algorithm off of the top of my head, I use existing code for solved problems.")
This Google-inflicted problem is a huge improvement over the old Microsoft dominated days when "the cult of the puzzle" loomed ("A priest, a vampire and Richard Stallman all need to cross a river, but they have only one wind surfer, the vampire can not ride with the priest, and the priest is a Windows user, so...")
The only job interview-style that I actually like is "Get out your laptop, here, can you write code to do this?"
Even that has drawbacks though-- you could exclude a competent programmer that doesn't own a laptop, for whatever reason...
Long story short - don't assume that everything in a whiteboard interview should be taken literally.
But this is the old "we don't necessarily expect you to know the
answer, we just want to see your mental processes as you attack
the problem"-- and that's complete garbage. If the interviewer
is asking you trivia that they've got memorized, they're not
going to be impressed at you flailing around trying to work it
out from scratch.
Myself, I've started refusing to try to answer questions like
that-- this won't get me hired, either, but I feel better for
not making a fool of myself for the interviewer's amusement.
I probably re-implemented it in Pascal when I took that class.
I wrote shell-sorts in Pascal, myself-- almost as easy to write
as a bubble sort, but way better performance-- but you'll note
that our slashids are lower than his.
If we're still supposed to memorize stuff about sort algorithms,
long after the need to *write* sort code has evaporated with my
old decks of Fortran cards, then we had better have some reason
to think that we get some benefit from knowing these algorithms.
The pretense that they're the F=ma of programming is just
pretense, a matter of hand-waving.
(Why isn't circuit fab and transistor technology regarded as
"fundamental" for programmers? Isn't that what the field is
based on?)
Analogies are cool and dandy, but miss the point by far.
But if we think of an analogy as being like painting a picture,
it becomes obvious that for most tastes a fine brush will perform
better than the Jackson Pollock-technique, but as for a
left-handed pianist with paint on his shoes, contemplating the
quick sort algorith-- well, who can say?
There are cases where bubble sort is entirely applicable and in fact preferable.
And if you spend even a minute thinking about whether you
application fits one of those cases, the odds are good you've just wasted
a minute, because the standard sort routine you have available is
bound to perform well enough even if it's not "preferable".
Premature optimization, you know?
And you know, that code has *subroutine calls* to a "Swap"
routine. That tosses aside any hypothetical performance
advantage-- which you were crazy to worry about in the first place.
I can't tell you about Amazon, but I think this is all just
noise, it's screening on affinity (ah, you know the same trivia I
do!) rather than on competence. If it was at all useful for us to
know low-level "algos" in any detail, we would all know them--
consequently, the only people who do know them have a background
in Computer Science (which is dominated by a bunch of
mathematicians who couldn't care less about "science", and rarely
do much with computers).
It's an article of faith that coding sorting algorithms from
scratch is good for your soul (or something) but no one ever
bothers to establish things like that (you'd need social scientists
for that, not mathematicians). I'm not even sure that being able
to deal with big-O notation matters all that much, in practice
you notice your code doesn't scale because it's grindingly slow
when you test it out.
"... a question or two and ask a question out of left field... "
It doesn't have to be out of left field. I found in interviewing
people who said they knew perl, most were obvious beginners. If
I asked them to deal with a complex data-structure ("here's an
array of hrefs, total up the fields called 'amount'") they would
have trouble.
Wait. You don't expect a Computer Scientist to get experimental results, do you? What do you think they are, scientists?
I tried a websearch the other day on "functional programming considered harmful" and found remarkably few hits. If anyone is so inspired, there's an opportunity there to gain some fame while earning the emnity of the hordes of javascript kids and half of the Computer Science digirati.
Ah yes: avoidance of second-person is of course critical to the process of writing good articles. Why did I not see this?
Re-writing that phrase as something like "When writing a piece, the author should consider--" would be trivial, provided the concept of "authorship" didn't violate the house religion.
It certainly is fun to think of ways to counsel against including personal biases when writing, when you're supposed to pretend that there is no person doing the writing.
Mwah-ha-ha.
Why's it curious? Right-wing thinkers almost by definition lean toward strong centralized control by authority figures. The left is constantly looking at more distributed systems with more bottom-up control, in the hope of empowering individuals (you know, democracy and freedom and all that).
It is admittedly a little peculiar that no one ever seems to learn that there are problems with "consensus decision-making" until they actually try it-- it seems like every single arts organization, activist group, and half of the teams of Silicon Valley programmers think they can use "consensus", even though anyone whose ever tried it runs screaming from the endless meetings and open-ended discussions and political wrangling-- there are breakdown modes where the process is hi-jacked by crazed passive-aggressive dictators-from-below, and you would think those would be well-known by now.
The one I like is insiting that "writers" and "writing" has to be termed "editors" and "editing". I was trying to work on the "guidelines" once upon a time, and you're essentially forbidden from using phrases like "When you're writing a piece like this, you need to ask yourself--." No one ever writes anything at wikipedia, the words just magically appear to be hacked up by editors-that-aren't-really-editors.
Another good one is "weasel words": the wikipedia meaning of that phrase was essentially made up by Evan Promodoru. For example: "War and Peace is widely regarded as Tolstoy's greatest work." See how weaselly that is? It's also true, and not disputed by anyone who knows anything about the subject, a set which does not include your average wikilawyer.
And slapping a "Weasel" tag on someone's work should by no means be regarded as insulting, because, uh....
Yup. Locked in a little room with madmen and shills, the "conflict resolution process" is a fancy name for "the runaround", and if you do get some sort of moderator intervention they do the most shallow reading of the situation possible, and display all the even-handed wisdom of an old irc-moderator defending territory...
Oh, and you're supposed to pretend that you're treating everyone with respect, consequently you're typically surrounded by people making a great show of being politely reasonable though their sincerity is, shall we say, suspect.
What was that Jimmie Wales used to say? Working on wikipedia is supposed to be fun?
And French was the Lingua Franca for awhile because Francs was a dominant country, and English has been Lingua Franca for awhile because Great Britain and then the US became dominant counties...
The phrase "lingua franca" means it's in common, widespread use and it's easy to find someone who speaks it. It does not imply excellence of any sort. If you guys want to fight about something, maybe you could think a little harder about what you're fighting about.
Or just read a book (or two) about Englebart and what he was up to-- the usual tag-line, "inventor of the mouse", doesn't get any where near describing what Englebart actually did. While the computer science intelligensia was lost in dreams of Artificial Intelligence, Englebart went after a vision of computers as interactive partners to human beings. He started working in the direction of computers as neworked tools for collaboration among teams of workers back before TCP/IP...
And there was quite a bit that was lost when Englebart's ideas went to Xerox and then Apple-- Englebart was thinking about tools for intelligent human beings, the later versions were intentionally dumbed down to be Easy To Use for everyone, and in consequence they developed limitations we're all still struggling with.
In the case of R, there's a sub-universe of it's own using the Hadley Wickham (and his cohorts) packages tidyr and so on. If you buy into the hadleyverse (he prefers the name tidyverse).
I'm particularly interested in the new packages for reading data readr and readxl, which are supposed to be much faster with saner defaults. The old read packages had a habit of treating all strings as though they're a database enumerated type, it would try to "tokenize" everything on the fly...
I think what you're talking about with R is a symptom of any long established language-- there's bound to be lots of oddities, cruft, workaround for misfeatures, and a bewildering array of competing libraries to do things in slightly different ways.
Personally, I wouldn't complain about R favoring vectors ops (it's better then struggling along implementing your own the way you need to in most languages). There's plenty of oddities: first of all, the "." is not a method call, though it's used everywhere in names (just like "_"): R does however *have* method calls, they're implemented with an arrow, just like perl5 ("->"). The type system is a little strange, where if you've got an aggregate of items all of the same type, the aggregate is regarded as being of the same type...
Anyway there's a new Wickham book "R for Data Science" that's supposed to be pretty good. Let me give you a link to it, O'Reilly has broken their website (e.g. they no longer have the word "book" visible on it's front page): http://shop.oreilly.com/produc...
es, that's what I was thinking: these are carefully crafted attacks against high-value targets... who are still using Microsoft products?
I got taken by that one for a minute, because i don't follow crap news, and I thought the EFF was a serious political organization, not a bunch of idiot teenager wannabes like slashdot. I know better now.
April Fool's Day: they tell you it's about "having a sense of humor" and "being a good sport", but really it's an excellent custom for identifying news sources that should never be taken seriously, April or not.
Go look up the word "example", we'll wait. (Actually, I'm lying.)
Been using icewm for nearly twenty years now, I rarely know what you guys are talking about.
One of the nice things about icewm is no one ever re-designs the UI on you, so there are still keyboard alternates for everything.
And no one had the bright idea to shove everything one click down in the hamburger.
What I want to see is a cranky-old farts distro that maintains old versions of things any time someone changes the UI.
Sure, the point is taken. (It's been a few decades since I've needed to program in C).
But this point is emphatically rejected. The question at hand is whether the CS curriculum is somehow fundamental, or a repository of knowledge concerning sub-specialties that most of us don't need to know.
I certainly don't know every wrinkle of this sub-specialty, since the cases where it's actually of use are actually rather tightly constrained.
> The people we hire get bright lights in their eyes and get consumed by the moment, trying to understand. Got it, in addition to the CS cram courses I need acting lessons.
CS geeks like to ask CS trivia questions to make sure no one with the "wrong" background gets in the door. ("No, I don't know how to write a binary sort algorithm off of the top of my head, I use existing code for solved problems.")
This Google-inflicted problem is a huge improvement over the old Microsoft dominated days when "the cult of the puzzle" loomed ("A priest, a vampire and Richard Stallman all need to cross a river, but they have only one wind surfer, the vampire can not ride with the priest, and the priest is a Windows user, so...")
The only job interview-style that I actually like is "Get out your laptop, here, can you write code to do this?"
Even that has drawbacks though-- you could exclude a competent programmer that doesn't own a laptop, for whatever reason...
Yup, you got me.
And in conclusion, allow me to dicuss how much I hate this shit:
I know how to type. I'm just saying "Yup". I don't need to think about this for ten minutes to decide whether that's the right answer.
But this is the old "we don't necessarily expect you to know the answer, we just want to see your mental processes as you attack the problem"-- and that's complete garbage. If the interviewer is asking you trivia that they've got memorized, they're not going to be impressed at you flailing around trying to work it out from scratch.
Myself, I've started refusing to try to answer questions like that-- this won't get me hired, either, but I feel better for not making a fool of myself for the interviewer's amusement.
I wrote shell-sorts in Pascal, myself-- almost as easy to write as a bubble sort, but way better performance-- but you'll note that our slashids are lower than his.
If we're still supposed to memorize stuff about sort algorithms, long after the need to *write* sort code has evaporated with my old decks of Fortran cards, then we had better have some reason to think that we get some benefit from knowing these algorithms.
The pretense that they're the F=ma of programming is just pretense, a matter of hand-waving.
(Why isn't circuit fab and transistor technology regarded as "fundamental" for programmers? Isn't that what the field is based on?)
But if we think of an analogy as being like painting a picture, it becomes obvious that for most tastes a fine brush will perform better than the Jackson Pollock-technique, but as for a left-handed pianist with paint on his shoes, contemplating the quick sort algorith-- well, who can say?
And if you spend even a minute thinking about whether you application fits one of those cases, the odds are good you've just wasted a minute, because the standard sort routine you have available is bound to perform well enough even if it's not "preferable". Premature optimization, you know?
And you know, that code has *subroutine calls* to a "Swap" routine. That tosses aside any hypothetical performance advantage-- which you were crazy to worry about in the first place.
Well okay. It's too bad no one knows what those are.
Software engineering: a collaborative social process engaged in by anti-social people.
I can't tell you about Amazon, but I think this is all just noise, it's screening on affinity (ah, you know the same trivia I do!) rather than on competence. If it was at all useful for us to know low-level "algos" in any detail, we would all know them-- consequently, the only people who do know them have a background in Computer Science (which is dominated by a bunch of mathematicians who couldn't care less about "science", and rarely do much with computers).
It's an article of faith that coding sorting algorithms from scratch is good for your soul (or something) but no one ever bothers to establish things like that (you'd need social scientists for that, not mathematicians). I'm not even sure that being able to deal with big-O notation matters all that much, in practice you notice your code doesn't scale because it's grindingly slow when you test it out.
"... a question or two and ask a question out of left field ... "
It doesn't have to be out of left field. I found in interviewing
people who said they knew perl, most were obvious beginners. If
I asked them to deal with a complex data-structure ("here's an
array of hrefs, total up the fields called 'amount'") they would
have trouble.