What makes a language scalable ?
I believe scalability is more about system design. It sounds really odd to me, to say that one language is more scalable than the another.
What makes a language scalable ? I believe scalability is more about system design. It sounds really odd to me, to say that one language is more scalable than the another. |
|||||||||||
|
If you want an academic viewpoint, read this paper. If you are thinking about Scala, read Odersky and friends’ overview where they discuss what makes Scala scalable. There’s also a related question on Stack Overflow. In a nutshell, Scala has features such as operator overloading, user-defined classes, traits, and many others, that allow one to express many domain-specific problems in a very natural way. |
|||||||||||
|
There is no such thing as a scalable language. Every language to date fails in some regard.
|
|||||||||||
|
Erlang is a good example of a scalable language. It was designed from the ground-up to support massively parallel, (soft) real-time, non-interfering threads with a clean message passing mechanism. The language eco-system was designed for near 100% uptime with in-place upgrades. What makes a language scalable is whether or not it gets in your way when you want to move from running a single thread on a single node to multiple threads on many nodes. You can do this using any language, but the ease of which this is done differs wildly between languages. Another example is FORTRAN. Others have knocked good ol' FORTRAN down for not being scalable, but I would argue otherwise. Given its static nature and its rigid programming model, it has been consistently used in high-performance computing situations because of the ease of parallelization. It wouldn't be the language I would pick for network programming, but if I wanted to find the eigenvalues of gargantuan matrices, it would be the go to language (pun intended). |
|||
|
Scalability in a language is quite different than scalability in a program. In a program it means it can use more resources according to the needs, but in a program is more about being able to extend it depending on your needs, with new types, constructions, etc... For example Scala was designed with that in mind, to be easily extensible, and for that it gives you the right tools; if you can time you can read with more detail here |
|||
|
A language can be called “scalable” in the sense that it supports clean encapsulation and code modularization, is reasonably easy to read, can support the abstractions you work with and so on. Orthogonality can also help, as when you have just one way to express thoughts in the language, you can better understand other people’s code. In short, language is scalable if it gives you the right tools to comfortably build big systems. People argue about what language features really help scalability, for example many Perl folks will tell you that orthogonality is not required for a language to be scalable. But the examples I gave should give you the idea nevertheless. |
||||
|