

Why your new programming language won't work - mcmillen
http://colinm.org/language_checklist.html

======
Cushman
I understand how it gets here, but I wish people wouldn't upvote this kind of
pointless pandering. I'm sure it has a place somewhere, but it's not HN.

Some new things fail because of obvious flaws. Some fail because of non-
obvious flaws. A very few things succeed despite both kinds. Nothing succeeds
because it's perfect-- and that includes every programming language we use
today.

If there's one thing HN drills into our heads, it's that failure is the only
path to success. Yes, your new programming language is very unlikely to take
off. It might be for reasons that occurred to this one dude, it might not.
Either way, failing to make a new programming language is one of the best ways
to come to understand the decisions that went into the development of the ones
that succeeded.

There are useful criticisms to be made. "Here are some things you probably
haven't thought of. Here are some projects you probably aren't aware of." Many
people have managed to write such essays quite lucidly, without discouraging
people from experimenting with failure on their own.

"You won't succeed because you suck, and I hate you," which (s/snark//g) is
all I read here, is completely unhelpful. Cleverly though it may be written
out, and apropos as it may be on a programming humor blog somewhere, it's
antithetical to everything HN is about.

And anyway, none of this stuff applies to MY language.

~~~
dextorious
"I understand how it gets here, but I wish people wouldn't upvote this kind of
pointless pandering. I'm sure it has a place somewhere, but it's not HN."

Should HN only reserve a place for the _other_ kind of pointless pandering,
the one the article mocks?

~~~
jQueryIsAwesome
People trying to improve things should be encouraged; even if they always
fail; and if its related to programming it should be here.

People that mock those people should be taken as amateur comedians, and should
be on reddit (not here).

~~~
dextorious
"People trying to improve things should be encouraged; even if they always
fail"

No, people trying to improve things should be presented with (sane) "barriers
to entry".

While there is no "right" way to improve things, there are tons of certified
wrong, dead-end, been-here-done-that ways that should be avoided. Engineering
is nothing if we don't learn from our collective mistakes, our history, and
from proven theory. Else, you get the equivalent of those countless kooks who
claim to have invented "cold fusion", "perpetual motion machines" but the
"establishment doesn't believe them".

People trying to improve things is not by itself beneficial. Even if we
restrict this to programming, we have fragmentation of effort, and you get
like 200 frameworks for the same thing with marginal differentiation. If
someone comes along with some radical idea, more power to them.

But we reserve the right to mock those coming up with YET ANOTHER tired cliche
of a concept and/or implementation. They don't get free applause just for
effort.

~~~
Cushman
Is it too much to ask that an intellectual community like HN be a place free
from both adulation and derision?

------
srl
I actually read this the opposite way from the way the rest of you ([ ] appear
to be [ ] are ) reading it.

No language dodges all of these checkboxes - or even 70% of them, really. I
mean, just look at the "Unfortunately, your language (has/lacks)" list. A
language which correctly had or lacked all of those as appropriate (jeezus -
jut determining what the correct combination is would light half the blagoblag
on fire...) would obviously be quite sucky.

The point, then, is that no language can make it through this checklist - and
no language should have to. If your objection can be found on this checklist,
and you don't have anything significant to add, then your feedback isn't
really helping, is it?

Your feedback

[ ] Can be expressed as a linear sum of items on this checklist (see "trash
can")

[ ] Cannot be expressed as such (see "internet")

~~~
mechanical_fish
Of course every language fails the checklist somehow. That's the design goal:
No language should escape from the joke without being teased.

------
drblast
About ten years ago, a similar checklist was the default response to proposed
solutions to spam problems.

And then someone wrote a proposal that checked many of the boxes on that list,
but had the odd feature of actually working quite well.

I think that guy quit went on to start a news web site. I guess he was
discouraged by the checklist.

~~~
nostrademons
Ironically, he also went on to invent a programming language with many of the
same checklist items.

~~~
dextorious
With as much success as implied by the checklist.

------
pnathan
That's pretty win. I nearly laughed tea through my nose.

In particular, this was win:

    
    
        [ ] You have reinvented Lisp but worse
        [ ] You have reinvented Javascript but worse
        [ ] You have reinvented Java but worse
        [ ] You have reinvented C++ but worse
        [ ] You have reinvented PHP but worse
        [ ] You have reinvented PHP better, but that's still no justification
        [ ] You have reinvented Brainf*** but non-ironically

~~~
apl
The expression "[...] is win" is decidedly _not_ win.

~~~
Tsagadai
Languages evolve and living languages change. Speaking or writing in a
particular way is one of the fundamental techniques humans use to associate
themselves with a culture, society, or any other term for 'group of people'.
Criticising someone for their cultural membership is not acceptable here nor
should it be acceptable elsewhere. How we talk and write is a tool to define
who we are or who we want to be.

You may be trying to suggest that the grandparent post adds nothing to the
discussion but that is not what you did. You criticised the grandparent for
their association with an internet subculture's vernacular. Criticise the
comment, not the parlance it is delivered in.

~~~
dasil003
I lived through my teenage years when everyone was saying "Not!" all the time,
and I did not let that stick in my vocabulary. As a surly old-timer in
training, I reserve the right to complain about any slang anybody uses, and
win/fail as adjectives definitely are topping my list these days.

Maybe if we ridicule them enough they'll move on to more clever slang, or at
least more obscure slang so that I no longer understand it enough for it to
annoy me.

------
orenmazor
I enjoy this final check item:

"[ ] Programming in this language is an adequate punishment for inventing it."

------
jeffreymcmanus
"You have reinvented Brainfuck but non-ironically" is classic.

------
nprincigalli
They should add this one too:

    
    
      [ ] the language name sounds too much like 
          clojure, closure, clozure, clojurescript or clojureclr

~~~
derleth

        [ ] the name is a common word, a single character, or
             two characters, one of them not easily pronounceable,
             and you are neither a demi-god nor a multi-billion-
             dollar company.

------
zobzu
"[ ] You have reinvented PHP better, but that's still no justification" I
always like this one. Even thus I have no real thing against PHP, it makes me
smile.

~~~
Zak
I have something against PHP, but there's a deeper point to be made here. A
language that does nothing more than reinvent a popular language will not
succeed, even if it does a better job. To succeed, a language has to provide a
good solution to a problem a lot of developers are having. Some examples:

* C - assembly and machine languages are not portable

* PHP - the barriers to entry for server-side web programming are too hugh

* Java - C++ becomes too error-prone with large teams

* Clojure[0] - there's too much complexity in programming that isn't inherent to the problems being solved

* Ruby, Python - Perl is really useful, but a little too messy

[0] Calling Clojure popular may be pushing it, but there seems to be some
momentum building behind it.

~~~
ssp
_Clojure[0] - there's too much complexity in programming that isn't inherent
to the problems being solved_

That is more or less what every language is trying to achieve. It would be
more accurate to say "Clojure: All other Lisp implementations are
impractical".

~~~
Zak
I don't think so. Many languages - I'm specifically thinking of Java and C#
here - have made it their goal to _manage_ complexity. Rich Hickey has made it
an explicit goal to _eliminate_ incidental complexity and has spoken about it
on several occasions.

------
alttag
Most excellent. Timely too, given the recent HN links on Dart, PHP.reboot,
etc.

------
ericdykstra
Wow, I don't think I've seen this presentation of a joke in at least 10 years.
Not exactly sure it's worth bringing back.

------
defdac
It's kindof funny that when you paste this url to Google+, the url will read
"C Programming Language Checklist" (because of the favicon..)

------
rwmj
He should add:

[ ] Manual memory management is not free.

------
wbhart
A lot of languages fill a much needed gap in the universe.

------
derleth
Really, it only needs one:

    
    
        [ ] It is a new programming language.
    

Not really a judgement of the language, though, and it equates 'work' with 'be
used by people who did not develop it'.

------
mathsive
[ ] Clever but I'm not eager [ ] to

    
    
       [ ] take thoughts on programming languages from
    
       [ ] someone [ ] (s) incompetent at markup. 
    

[ ] Sorry.

------
DiabloD3
I can pretty much tell anyone who asks why your new programming language won't
work.

Its because people like me, the used C for 15 years, Perl for 10, and can't
stand Python/Ruby/C#/OtherNewFangledLanguage types... simply do not care about
your language.

Yup, its that simple. If you can't hook the guys who've been around the block
a few times, what hope does your language have?

~~~
MostAwesomeDude
How old do you think Python is? :3

(Answer: 20 years old; it was first publicly talked about in 1991. Python is
as old as Linux!)

~~~
ArbitraryLimits
Here's my favorite trivia story about how old Python is:

You know JWZ's rant about how Java could have made integers first class
objects by using the first bit as a flag for whether that machine word
contained a primitive type or a pointer to an object, at the cost of only
having a range of 2^31 instead of 2^32 (or whatever the word size was)? Python
apparently had the same discussion in the early days, and made the same
decision as Java (i.e. non-primitive integers, you have to box them to treat
them as objects) and the reason was ... that the requisite bit twiddling was
slow on DEC Alphas. (In fairness, at the time Guido was working for a
government lab full of DEC Alphas.)

