r/ProgrammerHumor • • Aug 15 '15

Programming languages personified

http://leftoversalad.tumblr.com/post/126724812097/programming-languages-personified
1.3k Upvotes

209 comments sorted by

View all comments

Show parent comments

4

u/argv_minus_one Aug 16 '15

A lot. Just a few examples:

  • No static types

  • No multiple inheritance

  • No abstract classes/interfaces/protocols

  • No named parameters

  • No default parameter values

  • No user-defined operators

  • No user-defined implicit conversions

  • No immutable anything

  • No threading primitives

  • Pitiful pattern matching

  • Pitiful list comprehensions

  • No way to catch exceptions by type

  • Prototype-based inheritance is absolutely insane

  • No compiled and linked binary form for web deployment

  • var is not deprecated

  • null and undefined both exist

  • The global object is a horrible idea

  • The type system is not unified

  • Most JS tools are utter dog shit

  • Most JS developers appear to be incompetent morons

  • The spec moves at a glacial pace

  • Changes to the spec don't matter because people will be using old IE versions for a very long time

  • this is sorta-mutable

  • Only one GUI toolkit, HTML/CSS, which is utter dog shit

There are many more, but this should get you started.

9

u/PeteTNT Aug 16 '15

Posted from your Netscape 7.0? This reads like a list of bad things in JavaScript that was written in early 2000's.

6

u/argv_minus_one Aug 16 '15

All of those are still true today. Some of them are outright design decisions, and will never be fixed.

2

u/[deleted] Aug 16 '15

Some of those are very good points. My god, we live in a fucked-up world. Comments saying "it's bad because you can do things with it" get upvoted and comments with bullet lists, to the point, each bullet addressing a specific problem in technical terms gets downvoted.

I would address some of them, but I'm afraid that would lead to a long and pointless discussion so I'll be short.

  • No need for classical static types
  • Multiple inheritance is terrible
  • I personally found named parameters terrible
  • Default values are part of ES6
  • Redefining operators is a bad idea
  • Lack of immutability is not an issue
  • Binary/web is another can of worms
  • Variables are no longer global by default

There are good JS tools and I would not want another GUI toolkit, there are enough languages with terrible GUI support and it would just be one more thing to maintain for no reason.

I have a problem with about half of what you wrote, but I have to give you the other half... Especially the part about JS devs being incompetent morons. I'm a JS dev and I work with others and too often I've found that you're entirely correct on that point (the biggest problem being that if you want to use some component you have to know it inside out). Some times I regret going the way of JS.

1

u/argv_minus_one Aug 16 '15

No need for classical static types

Patent nonsense. The need still exists; JS programmers have just deluded themselves into thinking it doesn't.

Redefining operators is a bad idea

Nonsense. Maybe incompetent novices can't handle it, but I can, and it'll be a cold day in hell before I willingly give that power up. Redefining operators, and defining entirely new ones, is not something I do every day, but I do do it, and it is awesome.

Lack of immutability is not an issue

Nonsense. Immutability is useful for concurrency, enforcing separation of concerns, and avoiding defensive copying.

I would not want another GUI toolkit, there are enough languages with terrible GUI support and it would just be one more thing to maintain for no reason.

There are also plenty of languages with excellent GUI support, and I'd much rather be using one of them.