
How to Insult a Computer Scientist - BudVVeezer
http://www.cs.purdue.edu/homes/dec/essay.criticize.html
======
kenjackson
Another insult against a theorist:

"Interesting, I'm from industry and this appears very applicable to some of
the work we're doing right now."

~~~
bpodgursky
Har har har.

Extreme theorists don't hate applications, they just don't especially care if
they exist.

~~~
_delirium
At schools with separate "pure" and "applied" math departments, there's sort
of a running joke in the pure-math departments that they feel offended if
someone has accidentally managed to find their work useful, because it means
they've, quite to their chagrin, advanced the agenda of the rival applied-math
department (or at least, that they weren't "pure" enough). But of course
that's a self-deprecating joke more than a statement of what theoreticians
really think.

~~~
vacri
"In theory, there's no difference between theory and practice. In practice,
there is."

I've lost count of the number of times a theorist has told me that result
-foo- shouldn't be possible during application :)

~~~
Xurinos
I have said that quote a lot in jest. :) But I always remind myself that it is
based on the problem that there is actually very little theory going on --
that the developer is doing a lot of random fuddling around with little
understanding, little theory, until some piece of code produces a desired
behavior. The developer may decorate his muddling with tests and wordy
comments, but it is still muddling around. If the developer understood his
system, then the little mysteries that break theory would not be so magical
anymore, and he can move on to keeping his theory on par with his practice.

Countless times over the years I have seen areas where Academia is decades
ahead of us so-called industry experts. What is "new", "shiny", and posted all
over the place online today is built of theory produced 20+ years ago. In
practice, we have gotten our tasks done without some of this knowledge, but
theoretically, we have, over time in our ignorance, cost our employers
millions of dollars in hours dedicated to bug-fixing and features that could
not meet deadlines. It is a hard pill to swallow. The silver lining is that we
can recognize this and work to grow, to learn that missed theory, rather than
fall into the trap of complacency.

Today's fad is functional programming. In the coming years, we will relearn
the weaknesses of functional programming, why OOP was the next stage of
evolution. Hopefully we will have learned not to fall into extremist camps
again (the notion of a "functional vs OOP" conflict still strikes me as
hilarious misunderstanding).

~~~
nightski
Out of curiosity, could you share these weaknesses of functional programming
and how OOP solves them? Or at least point me to some material that discusses
them? I would be very interested. I have programmed in OOP for over a decade
and just picked up functional programming in the last 2 years so do not have
enough experience with FP to make any definite conclusions yet (although I am
really liking what I see so far). Thanks.

~~~
Xurinos
I wish I had a good handle on that. There is much to functional programming I
need to digest yet. But the hints are there (I noticed this in the timeline of
when these various concepts were played with and integrated into standard
specs), and in my own programming, I have learned to use the hybrid
effectively. What follows is purely my current opinion, and it should include
some healthy ignorance. I am but an egg.

If I were to put a finger on it, I would say that the reason OOP arose was
that there was general recognition of the need for a rich type system. I got a
hint of this in the first couple parts of SICP. Haskell incorporates a kind of
type system that is, itself, pretty interesting. CLOS/Moose makes C++ and Java
feel antiquated.

In my experience, a lot of us who learned OOP via C++, Pascal, Java, Ada, and
the like generally missed the point: type systems. We tend to treat classes
like collections of the language primitives as opposed to combinations of data
structures. Specifically, we make do with primitive data types and _neglect to
constrain them as a type_. And "everything must be an object" is an extremist
mantra with little value; given that your process image must have an entry
point, purely a code-flow issue, was there really a point to the illusion of
wrapping the entrypoint main() function in a class (I am looking at you,
Java)?

Here is an OOP type example I see in the wild: an ID that is a string of four
characters, a dash, and three digits tends to be stored as a string. This is
incorrect; that string is not like other strings, and this is a blind faith
that somebody is not going to incorrectly use that string. Wrap that in a type
that specifically checks that the ID fits that pattern. It is easy to fall
into this kind of mistake in the database management world, too, where an ORM
pulls in a VARCHAR2 and does not translate values of this type into an
appropriate type in the system, perhaps a type with a restricted domain.

Another example: I have learned to always question if my method really needs
to accept an "int". This is a smell. Could my value be negative? What is the
real min/max range of the value? Could the value have a magic value, such as
"Number Not Given" (or NULL)?

Functional programming helps us with code flow. OOP helps us carefully
classify the data.

~~~
fhars
Most mainstream OO languages with a type system to speak of actually get in
the way of correctly classifying data by confusing the separate issues of
reusing implementation artefacts (aka subclassing) and classifying data into a
hierarchy of concepts (aka subtyping). The only widely used OO language (for
sufficiently narrow values of wide and wide values of OO) to get that right
used to be Objective Caml, and recently its stepchildren F# and scala. So it
is actually FP that helps you with the classification.

~~~
Xurinos
This is a very interesting point and should be highlighted. You said
implementation artifacts (especially in reference to reducing code
duplication), and for clarity, I think you are referring to the definition of
operators on data (class methods, friend methods, and so on). I agree with you
that subclassing (for the purpose of reusing behavior), traits (for adding
behavior), and the like can be confused with classification to such an extent
that modern designs tend to depart from type systems and be used for mere code
organization.

------
RiderOfGiraffes
Cue one highly ranked HN news item with no news, nothing about startups,
nothing specific to hacking, no real information, and nothing that gratifies
one's intellectual curiosity.

Yup - I'm "that guy" and today I'm a grumpy old man. This item is just noise.

ADDED IN EDIT: And yes, I expected to be downvoted, because anything that
smacks of criticism of the community gets downvoted. People don't like to be
told that they're doing something wrong, especially people who are so damned
sure they're right, or clever, or talented, or hardworking.

Yes, the very nature of an entrepreneur is to follow things through in the
face of adversity, but when you're criticised you need to stop and see if
there's some truth - to see if there's something you should learn.

Before you downvote this comment, ask yourself why? Does this submission as a
whole really add value to the site? If it does, then my criticism doesn't, and
rightly should be downvoted.

But if this item adds no real value to the site then my criticism is valid and
should at least make you pause before looking for an arrow to click.

And if you _do_ downvote, then a reasoned response would add value. But maybe
you really are just looking for cheap entertainment. Replying - adding value
to the site - would be, you know, like, work.

~~~
num1
According to the official FAQ (<http://ycombinator.com/newsguidelines.html>)
on-topic is defined as: "Anything that good hackers would find interesting.
That includes more than hacking and startups. If you had to reduce it to a
sentence, the answer might be: anything that gratifies one's intellectual
curiosity." Now I personally am a hacker (we'll leave the good for others to
argue) and I find this interesting, if not rather humorous. This post
currently has 51 points, meaning at least 50 other people also considered it
interesting. If that's not strong evidence that this link belongs here please
explain what is.

~~~
RiderOfGiraffes
Do you really think it "gratifies one's intellectual curiosity." ??

Honestly??

I think it's a cheap joke with no intellectual value. Some people find it
funny, and they will upvote it. I'll happily believe that 50, 100, possibly
1000 people here find it funny to think about how to insult computer
scientists.

After you've read it - what have you really learned?

Upvotes do not of themselves mean an item meets the guidelines.

~~~
num1
You are, of course, correct that upvotes do not "define" what belongs in this
community. However if you will not accept that evidence, look at the other
comments in this thread.

I see people having fun and satisfying their creative curiosity by making and
building upon jokes inspired by this link. Links which link intellect and
curiosity are quite often posted to HN.

To answer your question on what have I really learned... well that's not a
question you want to start asking. I can point out quite a few articles that
don't belong upon HN when held against that criteria. Take for example almost
everything related to the NYT. I usually don't click on those and just wait
for the blog post that explains the same thing with more information and less
filler.

As for another argument that you will find quite easy to strike down, this is
not somewhere where I go do to market research, it is somewhere where I go to
entertain myself and find things, preferably about hacking, that I may read.
This link does a brilliant job of being related to hacking while also being
entertaining.

~~~
RiderOfGiraffes

      > this is ... somewhere where
      > I go to entertain myself
    

And there's the difference between my purpose for being here and yours. I
entertain myself in other ways on other sites. I come here for information
about hacking, startups, and things that satisfy my intellectual curiosity.

This submission does none of those. I don't think it's even especially funny
or clever, but I've seen it all before.

Thank you for your reply - it has taught me something. There was a time when I
would've upvoted you to show that you added value, but these days votes seem
to be used mostly to express agreement or disagreement, so I'm disinclined.
But I value your comment - thanks.

~~~
num1
I hope we can continue to coexist here, sorry to be one of the new voices that
is taking your community in a direction you don't want it taken.

~~~
RiderOfGiraffes
Well, it's not "my" community, and never has been - I've just hung around and
tried to add value in accordance with the guidelines. It's been that way since
PG suggested I submit something. I'm just continuing to see how much value
there is, how much I can add, and gauging when it's time to move on ...

------
_delirium
The insult-backfiring section reminds me of some interesting experiences as an
AI researcher, with a slight secret penchant (as many of us have) for robot
domination. When a humanities or social-science researcher starts talking
about "technological determinism", "machinic tyranny", "sapping of human
agency by machine", the "instrumental society", and similar, the AI researcher
sits, trying hard to suppress a smile, thinking, "yes, yes, PLEASE do go on!".

------
arethuza
When I worked in CS research the sure fire way of making the Prof I worked for
incandescent with rage was for someone from industry to start a comment with
"In the real world...".

------
larrykubin
Easier ways:

1) When he/she says they are a computer scientist, say "oh so you're like an
IT guy? Because I recently got this virus..."

2) Call him a mouse jockey

~~~
paydro
What does "PC LOAD LETTER" mean?!

~~~
Stormbringer
It means MS Word screwed you over _again_ , this time by switching from A4 to
Letter while you weren't looking. Damn Americans and their _Imperial_ ist
defaults! :D

------
jedsmith
For some context (odd that it's not included in the essay itself), this is an
essay by Douglas Comer from January 2009 -- according to the HTTP header, at
least, which I'm inclined to trust given the system. If that name's familiar
but you're not sure why, he wrote _Internetworking with TCP/IP_.

~~~
aidenn0
I know it's older than this, since it was up when I was at Purdue almost 10
years ago.

As a side note, Comer is the type that once he's decided you aren't worth
talking to, he will do whatever necessary to ensure conversations with you are
short, including applying the contents of this essay in spectacular fashion.

~~~
billswift
I prefer Spider Robinson's advice. _No one_ who you totally and completely
ignore will keep pestering you for long. Some people take insults as
validation, or are like kids who just want attention, but no one will keep
bugging you if you don't even recognize their existence.

~~~
gaius
You have to be pretty cunning to execute that strategy. Otherwise you might
find that that PHB ignores you at funding time...

------
bhousel
Wow, from 2 years ago: <http://news.ycombinator.com/item?id=436058>

The comments back then were.. different somehow.

~~~
RiderOfGiraffes
Interesting comparison - good find - thanks.

------
nickolai
Doesnt this set up an oversimplified theoretical separation over the
admittedly simple but continuous spectrum of research and corresponding
insults??

~~~
VladRussian
Are you trying to insult him following the insult rules for theorists?

~~~
nickolai
Tried a shot at both simultaneously actually. saying his theory is
oversimplified(theorist) and that his insult system is missing a critical
element (discrete approach is invalid - experimental faliure).

Anyone has interesting ideas to create a simplest possible insult that would
work for both properties ? (yeah ok, i'm no theorist)

------
6ren
That people working in the area of compilers are experimentalists explains a
_lot_ about compiler theory.

~~~
sukuriant
Please remember to always compile with -O3

------
joeld42
Q. What's the difference between 'theory' and 'practice'?

A. In theory, there is no difference.

~~~
jpwagner
In practice, there is.

~~~
sophacles
That is the obvious symmetry. Anyone could have written it.

~~~
jpwagner
[http://www.brainyquote.com/quotes/quotes/y/yogiberra141506.h...](http://www.brainyquote.com/quotes/quotes/y/yogiberra141506.html)

------
olalonde
> You can try to attack both parts simultaneously:

> I note that the _systems_ aspect of this project seems quite _complex_. Do
> you think the cause of the convoluted implementation can be attributed to
> the more-or-less `` _simplistic_ '' _mathematical_ analysis you used?"

This has to be my favorite one :)

------
Jun8
Purdue's CS Department is legendary in its archaic theoreticalness (if there's
such a word, but would be a nice insult, I think). So much so, it seems, to
produce a lot of funny commentary. For another popular example from proggit:
[http://www.reddit.com/r/programming/comments/gcgv8/all_hope_...](http://www.reddit.com/r/programming/comments/gcgv8/all_hope_abandon_ye_who_enter_here/)

------
d2
Comebacks:

Despite all the equations, it seems to me that your work didn't require any
real mathematical sophistication. Did I miss something?

Yes.

\----

Isn't this just a straightforward extension of an old result by Hartmanis?

Which one?

\----

Am I missing something here? Can you identify any deep mathematical content in
this work?

Yes you are. Next question.

\----

Wasn't all this done years ago at Xerox PARC?

No, only several of the underlying technologies. Can you identify which?

\----

Have you tested this on the chip Intel got running last week in their lab?

No, but I'm sure it will work because I helped design it.

\----

Am I missing something? Isn't it obvious that there's a bottleneck in the
system that prevents scaling to arbitrary size?

Did you miss that function isDebugOn(){ return false; } is O(1)?

------
wisty
It seems that the author is a theorist, not a practitioner, as his theorist
insults ("Despite all the equations, it seems to me that your work didn't
require any real mathematical sophistication. Did I miss something?") are much
better than his experimentalist insults ("Wasn't all this done years ago at
Xerox PARC?")

If you want to insult an experimentalist, it's there's a much more cutting one
- "Didn't Microsoft do something similar when they were working on CORBA?".

~~~
nl
_Didn't Microsoft do something similar when they were working on CORBA?_

To which you'd get a puzzled look while they condescendingly informed you that
Microsoft never worked on CORBA - that was the OMG, and Microsoft had
COM/DCOM.

Xerox PARC is good, because they probably did work on whatever is being
discussed.

Other options include "Didn't Englebert include that in the _Mother of All
Demos_?" and "Didn't Taligent have that running?"

------
endlessvoid94
If I write code that needs to be performant, and I do it by using an efficient
algorithm, analyzing it's complexity and use Big-O notation, I'm automatically
a theorist?

That's hilarious.

------
hessenwolf
So you work in IT? - works on me just fine.

------
gregfjohnson
Comment by a French computer scientist: "Well, of course it will work in
practice, but will it work in theory?"

------
jamesmiller5
I just finished a class with Prof. Comer. He is hands down the _best_
instructor I've ever had. He has a very down to earth method of teaching &
personality for that matter.

~~~
shriphani
CS250 ?

~~~
jamesmiller5
Yep. I take it you did as well :)

------
liedra
My boyfriend just graduated with a PhD in computer science, and his mother
sent a congratulatory email to him (with me in CC) saying "Congratulations on
your PhD in IT!"

Much good-natured jibing was had after that. :)

------
NY_USA_Hacker
I can see that your work contains much that is new and good however the new is
not good and the good, not new.

A paper on this work would be illuminating if ignited.

Congratulations: You have now once again successfully solved one of the one
star exercises in Knuth's TACP.

In this work, is your coauthor a professor, post-doc, Ph.D. student, Master's
student, undergraduate, or a visitor from a middle school?

So, your new programming language is Turing Machine equivalent. Okay. Beyond
that its main feature is that it 'encourages a programming style' you prefer.
Just why is that 'style' more significant than, say, style in the rag trade?

Your work has used some theorems from math but has it added any theorems to
math?

~~~
aperiodic
> Congratulations: You have now once again successfully solved one of the one
> star exercises in Knuth's TACP.

My CS professor has published papers that are solutions to exercises in The
Art of Computer Programming. It's sort of a fact of life for computer
scientists that whatever you're doing has probably already been done by Knuth.

~~~
zbanks
Knuth has a large range of problems in his text. He scales them all by
difficulty on a log scale from 0 to 50. Things rated 00-05 might be a basic
facts or arithmetic (What is 6! ?).

A set of problems in the 20s would be a good chunk of work, each taking about
20-30 minutes. By the time you get to 40's, you're dealing with problems that
you could write a paper on. In the introduction, he demands proof of Fermat's
Last Theorem as an example for 50.

------
Mafana0
Related: Things to Say When You're Losing a Technical Argument
[http://www.pigdog.org/auto/mr_bads_list/shortcolumn/1914.htm...](http://www.pigdog.org/auto/mr_bads_list/shortcolumn/1914.html)

There are some interesting points in that list, some can be used against
theorists, others can be used against experimentalists.

(I'm not sure if that article has been ever submitted to HN)

