This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
blog:the_server-side_scaling_evolution [2013/01/27 21:08] djo |
blog:the_server-side_scaling_evolution [2014/10/17 22:08] (current) |
||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== The Server-side Scaling Evolution ====== | ||
+ | |||
+ | Last Friday, I blogged about how we are undergoing a client-side seismic shift. In this article, I'll talk about the somewhat less surprising changes that I see happening on the server. However, in my opinion, these server-side changes will also have a pretty far-reaching impact on how we program that will play out particularly over the next five years or so. | ||
+ | |||
+ | ===== Multi-core programming ===== | ||
+ | |||
+ | Multi-core is here. | ||
+ | |||
+ | As I write in early 2013, 8-way servers are common and it's not uncommon to see much larger than that. 4-way cell phones are here. The laptop on which I'm writing this blog has 4 cores; so does my tablet. | ||
+ | |||
+ | But software development still mostly is written to utilize a single thread of execution. | ||
+ | |||
+ | The more cores we have in our hardware, the more pronounced this mismatch will become, which will pressure the industry into changing software-development practices to take advantage of the new power. | ||
+ | |||
+ | ===== Functional Programming ===== | ||
+ | |||
+ | Functional programming is one promising means of taking advantage of multi-core processors. When done in a pure manner, often the compiler can parallelize certain tasks automatically. Other operations--such as applying a single function over a large collection of data--can also be parallelized more automatically if coded in a functional style. And functional programming has given us the Actor model of concurrency, a promising way of managing concurrency that simplifies many of the problems typically associated with it. | ||
+ | |||
+ | I believe that Java 8 will mainstream functional programming techniques, much like C++ mainstreamed object oriented programming. | ||
+ | |||
+ | However, whether Java 8 will become the de-facto functional programming language or if it will just whet people's appetite for purer languages like Scala or Clojure remains to be seen. | ||
+ | |||
+ | What seems clear to me is that functional programming is coming, and that it is wiser to "skate to where the puck will be" rather than scrambling to overcome a deficit later. | ||
+ | |||
+ | ===== Server-side Javascript ===== | ||
+ | |||
+ | Javascript can be used as a functional language, and using Node.js can run on the server side. I have little contact with it and currently work in a large Java shop. But to the extent that it crosses my radar, I'll make notes about that here too. There seems to be a lot to be said for running the same language on the client and on the server... | ||
+ | |||
+ | ~~LINKBACK~~ | ||