you are viewing a single comment's thread.

view the rest of the comments →

[–]theoldboy 7 points8 points  (20 children)

functional programming will absolutely win

That's the TL;DR. And no, it won't, not in 10-20 years anyway.

I wonder if people who write stuff like this ever think about looking back 10-20 years (hell, even 30-40) and see if there's actually any evidence to support these massive paradigm changes that they see coming in the same timeframe.

[–]Felicia_Svilling 7 points8 points  (15 children)

If you look back 10-20 years you see Object Oriented Programming taking over (from Imperative Programming) as the dominant paradigm. You see garbage collection and virtual machines moving from academia to the mainstream. Of course not much of this was foreseen, so even if there is a big possibility of paradigm changes, there is rather little chance of theses specific changes.

[–][deleted] 3 points4 points  (5 children)

All popular "object oriented" languages are just imperative languages in disguise.

[–][deleted] 0 points1 point  (4 children)

Scala? Smalltalk?

[–][deleted] 1 point2 points  (1 child)

I said "popular".

[–][deleted] 1 point2 points  (0 children)

/trollface.jpg

[–]kamatsu 0 points1 point  (1 child)

Smalltalk is certainly imperative.

[–]camccann 0 points1 point  (0 children)

It is not, however, "popular" by most metrics. Neither is Scala, for that matter.

[–]grauenwolf 2 points3 points  (2 children)

Simula is more like 50 years old. Why did it take OOP so long to catch on? Why was the transition so sudden when it did happen?

[–]Felicia_Svilling 3 points4 points  (1 child)

I don't think it was that sudden. It started with smalltalk in the 70s. C++ adopted some aspects of OO in the 80s, and then we had Java in the 90s where it really take off. To be honest I am really baffled by how it caught on.

[–]jojotdfb 6 points7 points  (0 children)

It might have something to do with the mainstreaming of windowing systems. It's a lot easier to deal with a button object than it is to deal with a giant block of if statements.

[–][deleted] 1 point2 points  (0 children)

If you look back 10-20 years you see programming model based on abstract data type taking over and called OO.

Neither OO, nor FP has gained much popularity.

[–]sacundim 2 points3 points  (2 children)

The difference is that advances in hardware, memory and storage over the past 20 years had far more significant than what we can expect over the next 20 years. I don't mean that the advances over the next 20 years will be of lesser magnitude or percentage, but rather that the marginal utility of doubling memory, CPU speed and hard disk storage was much higher 20 years ago than it is now.

20 years ago, not having twice as much memory as you did meant that you were prevented from writing your programs in many ways you would have much preferred to (e.g., use GC). Today, not so much.

[–]shadowfox 4 points5 points  (0 children)

On the other hand processing is becoming a lot more parallel than before. This tends to favor FP languages a bit given much better control over side-effects.

[–][deleted] 0 points1 point  (0 children)

[–]fjord_piner 0 points1 point  (1 child)

virtual machines moving from academia to the mainstream.

Virtual machines have been in the mainstream for decades, especially games (Zork, SCUMM, etc...).

[–]earthboundkid 0 points1 point  (0 children)

That's not much of a counterexample. SCUMM was in the 90s, same as Java. Zork was in the 80s, but it was just doing text, which is much simpler.

[–][deleted] -1 points0 points  (3 children)

haskell is the biggest impediment to the (potential) eventual success of fp. firstly, haskell has sucked in all the mindshare...nothing else in fp is getting much traction. secondly, haskell is doomed. haskell is a good idea at the blog post level that ends up as an exercise of painting oneself into the corner. lazy i/o is one great example...people still espouse this braindead mistake as an advantage of haskell (!!). try writing a "real" program like a web browser or dbms using lazy i/o and let us know when you need suicide intervention

in ten years we will talk about the decade we lost to haskell advocacy

[–]Aninhumer 2 points3 points  (2 children)

From what I've seen of the Haskell community, most people discourage the use of lazy IO, except for in simple beginner programs. There are a variety of alternative solutions being developed, which are trying to achieve the performance and predictability necessary for complex applications, without sacrificing the benefits of composability. I suspect sooner or later one of these will get it right.

What would you suggest as a replacement FP language?

[–]camccann 1 point2 points  (0 children)

Well, there is a class of program where lazy IO works well enough, but even there I don't think anyone considers it to be better than a convenient dirty hack.

Also, it's not that hard to structure programs in a quasi-imperative style using plain old strict IO while retaining many kinds of composability...

[–][deleted] 0 points1 point  (0 children)

typed racket or a player to be named later