Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

Let's say you need to implement a new programming language and BCL designed specifically for operating in the cloud (it won't be used on client machines ever). It should be optimized for cloud computing; easy to learn, fast, efficient, powerful, modern.

What it would look like? What would be it's major differences from C#, Java, Ruby, Python, JavaScript? How would it's BCL (base class library) differ from let's say the one in .NET Framework 4.0?

..

The same way Silverlight BCL was built for in-browser/multi-platform use, a totally new BCL should be build for a cloud, don't you think so?

..

As Jörg W Mittag mentioned, a programming language created exclusively for a cloud can have it's own advantages over traditional programming languages. For example this language may evolve without breaking existing applications, let's say you rename a method / change it's signature / or move it to another namespace, all the applications in the cloud will be automatically updated to reflect that change.

..

Theoretically C# 5.0 could become such a language with it's complier as a service feature. But that still won't eliminate a need for a dedicated BCL for the cloud.

share|improve this question
14  
Since it's for the cloud, I imagine it would be fluffier than other languages. C Sharp is obviously not a good choice for cloud computing because clouds are not very sharp, they are soft and fluffy. :P –  FrustratedWithFormsDesigner Jun 7 '11 at 18:46
7  
A language is already implemented: behold - en.wikipedia.org/wiki/Erlang_(programming_language) –  SK-logic Jun 7 '11 at 19:13
3  
...Seriously, if I were to develop a language specifically to be used for cloud-computing, I think I'd call it "Fluffy". –  FrustratedWithFormsDesigner Jun 7 '11 at 19:15
1  
What major new restrictions and opportunities are in the cloud(s)(es)? Most programming languages are very general-purpose, and work in a very large range of environments. The class libraries are likely to be different. –  David Thornley Jun 7 '11 at 19:53
3  
@Tarkus, what do you mean by physical and virtual memory? Looks like you're not seeing the reality behind that "cloud computing" buzzwords - it is nothing more than a cluster in practice, with a smart job scheduler. –  SK-logic Jun 7 '11 at 21:59
show 10 more comments

9 Answers

The question seems to defeat the purpose of even having a cloud. The cloud is supposed to be a solution to abstract the programmer from having to be concerned with things like scaling, system administration, network administration, etc. (Disclaimer, this will be dependent on your cloud service as well, when I say don't worry about scaling, I'm thinking something like S3 where I let Amazon serve 5 users or 5 million with the same URL). The cloud is designed to be a solution more so than a problem that needs solving. Almost like asking, what kind of human should we create to best fit a jacket?

Having some difficulty articulating what I mean here but my point is, if you need a cloud specific language, the cloud has failed it's purpose.

share|improve this answer
    
Although I understand your point and tend to agree, I do feel like making the counter-point: if the only thing you need to change about your process is using a new language and then everything else happens for you automagically, then that is a net win. –  jhocking Jun 7 '11 at 20:37
    
there is no way one can scale a shared-memory application into something more than SMP. Clouds are essentially clusters, which implies message passing in one form or another. And in order to scale well, you must code with this message passing in mind, with as little dependency on shared memory access as possible. Some languages and programming techniques makes it esier than the others, obviously. So the question is valid. –  SK-logic Jun 8 '11 at 9:57
    
@SK-logic, Would such message passing be a concern with apps built in GAE? I'm a web developer by trade, thus in using higher level languages, I don't usually have direct access to memory. Message passing in GAE would probably be best accomplished through the datastore/memcache mechanism. In such an environment, you don't have to code with respect to how many machines you're running on. It could be 1 or 100, it's not your concern. –  XHR Jun 8 '11 at 12:27
    
you're always using a direct access to memory. But, in your case, you don't need any kind of communication between processes besides, probably, sharing a common database, so this should scale automatically. Problems starts when you need a communication between nodes and a volatile shared state storage. –  SK-logic Jun 8 '11 at 12:42
add comment

The Newspeak language actually is designed specifically for the cloud.

This has some pretty interesting ramifications. For example, you can do refactorings across deployment boundaries. In today's languages, this is not possible: you cannot, for example, do a Rename Method Refactoring on a public API, because you don't have access to all the callers. In a cloud language, all callers are in the cloud as well, and so you can do refactorings across code you don't own.

Even more interesting: you can do this at the language level. Currently, once a feature is added to a programming language or API, it can never ever be removed and/or changed. Programming languages and APIs can only ever grow, never shrink. (E.g. in Java, there are APIs that have been deprecated since 1.1, and they are still there in Java 8.) Newspeak OTOH can shrink, because if a feature is removed from the language, you can simply update all clients of the feature to use the new replacement, since all clients are accessible in the cloud.

In fact, this last feature is where the language gets its name from: In George Orwell's 1984, the fact that words are removed from Newspeak constantly is one of the major characteristics of the language.

share|improve this answer
    
örg, That's a great feature of Newspeak, I was also going to implement it, didn't know it existed in some existing programming language thourh. Thanks for the input. –  Tarkus Jun 8 '11 at 10:08
    
How does refactoring relate to cloud computing? –  SK-logic Jun 8 '11 at 10:44
    
@SK-logic: You cannot refactor code you don't have access to. If all code is in the cloud, you have access to all code, and you can do refactorings across all code ever written. (Note that I'm using the term refactoring loosely here.) This allows you to do stuff like not only deprecate but actually remove obsolete language features, since you can simply update all code that depends on this feature at the same time that you remove it. –  Jörg W Mittag Jun 10 '11 at 15:25
    
what kind of clouds are you talking about? I can't see how this will apply to something like Amazon EC2. Of course it is an interesting language feature, but there is nothing specific to a scalable computing in it. –  SK-logic Jun 10 '11 at 15:56
add comment

The joke answers you're getting reflect the fact that there's no particular reason why you need to have a special language for cloud computing. If you think there are specific reasons why existing languages are poorly suited to working in the cloud, please list out those reasons.

Incidentally...

The same way Silverlight BCL was built for in-browser use

The fact that something exists doesn't make it necessary.

share|improve this answer
    
For example with .NET you can write and read directly from and to any point in memory. This just won't be allowed. There won't be many existing features of C#, .NET. For example there won't be a notion of Disk C, Win32 API etc. –  Tarkus Jun 7 '11 at 18:57
    
@Tarkus: Well, if the application doesn't know it's running in the cloud, what does it matter? –  FrustratedWithFormsDesigner Jun 7 '11 at 19:00
1  
Why? Cloud computing is supposed to be scalable. So, a language for developing scalable applications will fit. –  SK-logic Jun 7 '11 at 19:15
    
@SK-logic, C# with some modifications would fit well, but will Microsoft allow to mess with it? I don't think so. –  Tarkus Jun 7 '11 at 19:41
    
@Tarkus: If Microsoft is afraid their competition will get ahead of them in the Next Big Thing, I'd be very surprised if they didn't add cloud-specific support. Probably as libraries, maybe even as language changes. In fact, they could be working on something new and radical and cloudy and secret right this very minute... –  FrustratedWithFormsDesigner Jun 7 '11 at 20:16
show 2 more comments

As you've asked the question, there's no single answer that can hope to be even close to universally correct. One obvious problem is that virtually every "cloud" provider has a different idea of what that means. SalesForce's view of "the cloud" is a lot different from Amazon EC2, just to give one obvious example.

Looking past that, however, I think the general idea of tailoring the language to the platform is mostly a poor one. The code of an application program should be oriented primarily toward the logic of that application rather than the platform upon which it happens to be deployed.

To the extent that it's defined at all, however, "cloud computing" is little more or less than remote distributed computing. That being the case, Erlang is a well-known answer. At one time Occam was fairly well known as well, but it was tied closely enough to the Inmos Transputer than when the latter failed, Occam disappeared with it. Though it might place my reputation at risk a bit, an even better possibility (IMO) is a language named "Par", which is presented in a (difficult to find) book named Parallel Programming: A New Approach (by, ahem...some guy named "Coffin").

Par has the advantage (IMO, obviously) of allowing the programmer to provide advice about mapping and scheduling (and such) for a particular algorithm, but placing these in (optional) annotations that the scheduler will normally respect to the degree possible, but is free to ignore if they can't be met. The code expresses the algorithms and logic; the annotations express the mapping to the underlying implementation. The two are clearly separated, though they're also kept together (normally in the same source file) to keep maintenance reasonable.

share|improve this answer
    
thanks for your input, much appreciated. I believe that the cloud computing will evaluate towards pure application hosting (think of Google Apps), application won't ever know about all the complexities of the platform it runs on, you just create your application in the cloud and won't need to worry about how many memory should be allocated by it, how many processors should perform the job, how many physical machine instances gonna be allocated.. etc. –  Tarkus Jun 8 '11 at 10:17
add comment

Well, Google developed Go for that purpose. The fact, that they did it (built and released it), indicates it is a working solution. Probably even a very good one for some sot of problems (i.e. those they encounter).
But I doubt there'll ever be the best language for cloud computing.

share|improve this answer
3  
go is for systems programming, not for app-on-cloud programming –  Paul Nathan Jun 7 '11 at 22:00
add comment

What it would look like?

Erlang

Easy to learn, fast, efficient, powerful, modern.

Already used for exactly that.

What would be it's major differences from C#, Java, Ruby, Python, JavaScript?

Nothing like C#, Java, Ruby, Python, JavaScript.

Exactly like Erlang

How would it's BCL (base class library) differ from let's say the one in .NET Framework 4.0?

It would use the Erlang library.

share|improve this answer
add comment

What about Clojure programming language?
Clojure is minimal, elegant, extremely powerful, concurrent-programming ready programming language and it is a Lisp.

Maybe Newspeak's mentioned feature can be implemented in Clojure via Macros?

share|improve this answer
2  
Clojure shines in a shared-memory type of concurrency, with its STM implementation. Not very scalable to be attractive for cloud-size clusters. –  SK-logic Jun 8 '11 at 12:58
add comment

What it would look like?

Python

Easy to learn, fast, efficient, powerful, modern.

Already used for exactly that.

What would be it's major differences from C#, Java, Ruby, Python, JavaScript?

Nothing like C#, Java, Ruby, JavaScript.

Exactly like Python

How would it's BCL (base class library) differ from let's say the one in .NET Framework 4.0?

It would use the Python library.

share|improve this answer
add comment

It should be limited to the problem domain in a specific language with high level functions to work directly within the application that is hosting it.

It should obviously be .... VBA

share|improve this answer
4  
AAAAAAAAAAAAAAAAAAAAAAAAHHHH! /me runs away screaming and gouging their own eyes out –  FrustratedWithFormsDesigner Jun 7 '11 at 18:46
    
Urge to downvote... rising... =) –  Wayne M Jun 7 '11 at 18:47
    
Semi-seriously though - isn't running an app in the cloud more like a macro inside excel/access or a SQL script inside a DB than running a C#/Java/C++ app on a PC? –  Martin Beckett Jun 7 '11 at 18:53
1  
by the same logic you could conclude it's ruby on rails. –  Kevin Jun 7 '11 at 18:57
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.