Hacker News new | past | comments | ask | show | jobs | submit login
Why your new programming language won't work (colinm.org)
311 points by mcmillen on Oct 11, 2011 | hide | past | favorite | 64 comments



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.


I'm not sure I understand where the pandering was, and for me the post certainly wasn't pointless, I learned some new things, and it provoked me to think deeper about the difficulty of language design.

I read it as a humorous warning to would-be language designers of the challenges and pitfalls of coming up with a new syntax, compiler, runtime, etc. A quick run-through of the items in the checklist should give you a hint these guys seem to know what they're talking about. Click the bio links above the article and those suspicions will be confirmed.

Sure there's a bit of snark here, but it serves a purpose, as does the humor. They obviously put some thought and time into this, they have some strong and worthwhile opinions about language design and the expertise to back it up.

Now, if it were Zed Shaw or Joe Damato up there, I'd totally agree with you. Kidding!!


> I'm not sure I understand where the pandering was, and for me the post certainly wasn't pointless

Yes it's not pointless the first time you see it. Where it becomes pointless is on Slashdot any time there is ever an article about a new program language and 2 or 3 people fill it out for the comments.


Thankfully, HN's content is not governed by the content of Slashdot's comments.


Amen to that. I don't know why I have to be downvoted just for pointing out that these things are not necessarily annoying per se, just when they become relentless memes by which a community validates itself.


I agree and thank you for writing this reply. As of late I notice that the one phrase that is guaranteed to set me off is the phrase "that won't work" or "that's not going to work".

My reaction is always: "okay...you took the time to tear it down but not the time to think through why things were done that way".

It's easy to see flaws, but much harder to suggest alternative (and improved) solutions.


I'm pretty sure you agree with the post. Hint: the author is being ironic.


I thought the post was meant to be ironic.


"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?


Anything that does not remotely target Google is allowed. /pun


So the Google search command at the bottom is disallowed? :P


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).


The really clever part about this is that it's hard to tell whether it's mocking people trying to design new programming languages, or mocking people who criticise attempts to design new programming languages... or perhaps even both at the same time.


"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.


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


i read it as making fun of knee jerk anti-new-language types, as in, all their arguments are pat and repetitive.

maybe that's just my perceptual bias, but perhaps also the greater context of hacker news that you point to in your comment. i tend to believe that things are posted here in support of experimentation.


agreed, feels more like Reddit post


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")


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


I think the point might be that if you don't pay attention to, and think hard about why your language may/may not fail certain of those checks, then you're doing it wrong.


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.



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


With as much success as implied by the checklist.


Are you referring to CRM114? Simultaneously the best spam filter and the worst programming language.


This kind of offhand comment revealing something I never heard of yet fall instantaneously in love with is exactly why HNN exists.


Which boxes did he check, other than the introductory "technical" box (rather than legislative, etc), and arguably the brute force one?

The whole point of the checklist was that people kept re-inventing the square wheel (white-lists, trust circles, black-lists, $0.0001 emails, and so on).


Pardon my naivete, but what are you referring to?



Which boxes does it actually check?


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


The expression "[...] is win" is decidedly not win.


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.


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.


On the internet, language is the new fashion, and that guy is so last season.


He's streets behind!


I'm sorry that you dislike my slang. It is true, I could have elucidated my thoughts at length, using ancient and time-honored words with many syllables.

But I was pointing out something I found humorous in a joke checklist.


Win-expressions are a standard part of common Leet.


This.

<--- ducks


And the Hacker News elite rewards my poor joke with swift punishment.


> You have reinvented PHP better, but that's still no justification

This says it all right here.


I enjoy this final check item:

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


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


"[ ] 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.


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.


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".


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.


Clojure - because Common Lisp is getting really long in the tooth now.


They should add this one too:

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


    [ ] 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.


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


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.


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


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


He should add:

[ ] Manual memory management is not free.


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'.


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

   [ ] take thoughts on programming languages from

   [ ] someone [ ] (s) incompetent at markup. 
[ ] Sorry.


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?


>and can't stand Python/Ruby/C#/OtherNewFangledLanguage types

Can you not stand them because you tried them and decided that they don't fit you, or because you refuse to acknowledge progress?

I won't commit an appeal to novelty by claiming that new programming languages will always be better, but to stubbornly stick to C, Perl or other good ol' languages for no other reason but waving your cane at the new kids in town is equally as close-minded.

The world of programming is so interesting precisely because there are always new things to explore, recent inventions and innovations to marvel and old concepts to learn, rediscover and improve.


Luckily most people's language options haven't ossified like yours. I'm sorry to say that sounds awfully boring. Learning a new, interesting language is one of the most rewarding and enjoyable things I do.


Well in the end, the only thing that really matters is programmer productivity... and ultimately the proof is in the pudding I think.

You're right in basically pointing out that if a new language can't communicate quantifiable productivity benefits, then what's the point of taking the time to learn it and switching over?


The digital equivalent of "Get off my lawn!"


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!)


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.)




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: