Hacker News new | ask | show | jobs
Why Do Programming Languages Succeed? (2014) (flagxor.com)
21 points by senorgusto 3674 days ago
5 comments

> Some paradigms exemplified by the special languages are arguably unrealized or aspirational. [...] Haskell's pattern matching and monads end up being used mostly as a vehicle to embed imperative programs.

Pattern matching has nothing to do with imperative programs and Haskell is not original for having it; it's been around since the 70s in ML. I would also argue that pattern matching has been realized in many popular languages (Scala, Swift, Ocaml, Rust ...)

Agreed, and I think only someone who has not used much Haskell and has only really used the IO monad would say that monads are used mostly for embedding imperative programs. It also depends how you define an imperative program, but most monads are entirely pure and don't deal with sequencing or anything.
+1

You could argue that "Monads end up being used mostly as a vehicle to embed imperative programs", but pattern matching is a different beast. It's a joyful way to program, even for an imperative hacker like me.

I came here to say exactly this, glad to see it already mentioned. I will point out though that the destructuring aspect of pattern matching predates ML slightly with the introduction of prolog, but the mixed in/out modality paradigm of prolog's pattern matching is sufficiently distinct from ML's that ML probably deserves the credit for influencing so many modern languages.
You read it wrong. Him said that in Haskell PM & monads are using for make imperative code, NOT that is the defined trait of haskell, instead: "are arguably unrealized or aspirational"
The rest of the article lists Haskell as being original for introducing pattern matching and monads as a new programming paradigm.
Oh right. In the "Very special" section list that (Without that it could be a more compelling argument).

Perhaps haskell make it more popular?

I'm surprised that Scheme is not mentioned. If you consider it to be just a dialect of Lisp then Lisp+Scheme is probably as popular as some of the languages listed as succeeding for popularity. By my count, the combined Lisp+Scheme language has a 1.42% rating on TIOBE, which makes it more popular than Ada, ActionScript, C*, Lua, R, and others. Also, most of the favorable statements about embedding Lua or Tcl apply to Scheme, which continues to get embedded in plenty of important things.

I guess I just don't get the methodology behind the popularity list.

Also, my bet is that Lisp/Scheme would have been even more popular if there had just been one implementation as opposed to a confusing constellation of standards and different implementations. The language is easy to implement so the implementor:user ratio is too damn high.

Agreed, if you're going to list Basic and Pascal because they are easy to implement, then Scheme seems like a no-brainer for inclusion. It probably is the most common language for Baby's First Interpreter.
Can anyone define "succeed" in this context? Is it purely popularity? What if a language is inferior but popular?

If a language is effective for its user(s), then is it a "success"?

Is there some minimum number of users that delineates a threshhold for "success/failure"?

What about DSL's that might have a limited number of users?

I like that the author recognized the "success" of shell and C as tied to the "success" of UNIX . But he forgot others, such as sed.

Some my favorite and most powerful languages are not widely used. I have no idea what "succeed" means to others in the context of programming languages, but these languages have "succeeded" for me. They get the job done. Efficiently.

Nothing has surpassed Snobol for pattern matching. (If you are in doubt, post a pattern matching challenge and let's see how the solutions in various languages stack up.)

Meanwhile other implementations of pattern matching have become more popular (=successful?)

Perhaps the word "succeeded" here simply means "succeeded in becoming popular?" If so, then I apologize for the gibberish.

> What if a language is inferior but popular

aka web-dev-world. Where the lowest common denominator has more foot-guns than C. Worse, the footgun often won't go off directly when you pull the trigger, but some time later, perhaps when it is aimed at your face.

I feel like in this day and age, it's "endorsement of a powerful entity" that goes the most towards making a programming language successful - money to pay developers and reputation to gain mindshare are the two things big companies can do best (of course, other factors still apply).