|
As the industry continues to push Service Oriented Architectures and task specialization, I can't help but wonder if there are any Web programming languages that carry advantages making them more suitable for high-volume scalable applications. At the end of the day, all languages have unique advantages, and it's common for multiple languages to form various components within a single application design, so I never expect one language to reign supreme. But I'm still curious to hear others' experiences and wisdom in this area. Besides, everyone knows that Perl is the best language so there's no point starting a flamefest. ;-) |
|
Many times you'll find that functional or semi functional programming languages give you the right level of abstraction for distributed and parallel computing. Unlike imperative languages such as Java or C++ which give you enough rope to hang yourself (or at least want to do so), languages such as Scala and Erlang are in many cases very well suited for concurrent executions while remain highly performant. They give you the right level of abstraction you'd usually want to have and programming parallel and distributed systems. |
|
There is a great deal of evidence to suggest that Erlang is one of the best languages to use if you're looking to build scalable, fault-tolerant services with high availability. It's also an amazing technology for building distributed software. Take a look at Riak, SimpleDB, CouchDB, ejabberd, Webmachine, Misultin, Mochiweb and RabbitMQ for just a few examples of quality software that makes the most of Erlang's features. Take a look, it's well worth investing the time. Perl doesn't scratch the surface of scalability compared to Erlang ;) |
|
I would like to quot Google's Peter Norvig, that it only depends on your own skills and your co-workers. Many people are incapable of writing good c++ codes but Google uses it efficiently. I think most languages are more easily scale (most functional programming languages). But another interesting question is which languages are not suitable for scaling. For example even though people write EC2 codes in R, R is certainly incapable of producing scalable codes. I would like to argue that, at the end, the language that works seamlessly with other performance tools is the most suitable. For example you language has to work with memcached otherwise you'll be stuck once you'r user base grows larger than some certain size. |
|
Short answer - NO Longer answer - there is no scalability oriented language since scalability is a measure of architecture and not language. Yes, Erlang is an amazing language and can produce very solid concurrent software, but that doesn't automatically make it good for scalability (this is not 100% correct, since the language has some constructs that makes multi machine comm pretty transparent. It also advocates async message passing which is good...) The key bottlenecks are usually infrastructure related stuff : DB (and data access in general), network latency and throughput, disk IO. Good architecture or scalability oriented architecture will assist in optimizing these bottlenecks by adding more machines, by sharding, by caching and so on... In conclusion- find a decent language/ framework that will assist your team in expressing themselves quickly and correctly and leave the scalability thing to the architecture design. |