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