Microsoft Releases New Concurrent Programming Language 297
zokier writes "Microsoft has released a new programming language called Axum, previously known as Maestro and based on the actor model. It's meant to ease development of concurrent applications and thus making better use of multi-core processors. Axum does not have capabilities to define classes, but as it runs on the .NET platform, Axum can use classes made with C#. Microsoft has not committed to shipping Axum since it is still in an incubation phase of development so feedback from developers is certainly welcome."
WTF is a "Concurrent Programming Language"? (Score:5, Informative)
Now you know. [wikipedia.org]
Re: (Score:2, Insightful)
Next question asked is WHY has Microsoft have to invent one when there are others available already?
Probably the answer is "Because they can" and they see a business in locking in people into their environment.
Re:WTF is a "Concurrent Programming Language"? (Score:5, Insightful)
Because the PHBs like a single vendor. Nothing confuses them more than saying, "We're getting the OS from Microsoft, the database from Oracle, the language from Sun and the hardware from Dell." The less companies in this list, the better, regardless of the merits of technology.
Re:WTF is a "Concurrent Programming Language"? (Score:4, Insightful)
Re:WTF is a "Concurrent Programming Language"? (Score:5, Funny)
"What do you mean? We bought you Visual Studio with Visual C/C++ and Visual BASIC!"
Don't confuse them with facts. They'll just retaliate by making your life worse.
Re: (Score:3, Insightful)
Visual BASIC is so unlike the BASICs I learned in the 80s on the Commodore, Apple, and other small computers that it might as well be a different language.
Also, MS isn't pushing developers to use C or C++ any more, they're pushing them to use C# and .NET, which are MS inventions.
Re: (Score:3, Insightful)
If you subscribe to certain philosophies, all ideas always existed, we simply discovered them.
Regardless of your adherence to such a philosophy, you have to admit that it doesn't really matter who created the idea, but who first successfully implemented it.
It's not like the people at Microsoft are somehow less capable because 100% of their ideas are 100% original, rather, they still had to have the intelligence to code it, document it, test it, etc.
Re: (Score:2, Informative)
"It's meant to ease development of concurrent applications and thus making better use of multi-core processors."
should really be
"It's meant to get developers to continue to use Microsoft-only technology, so IT departments will have to keep buying Microsoft client and server OS licenses."
Re:WTF is a "Concurrent Programming Language"? (Score:4, Interesting)
Because the PHBs like a single vendor. Nothing confuses them more than saying, "We're getting the OS from Microsoft, the database from Oracle, the language from Sun and the hardware from Dell." The less companies in this list, the better, regardless of the merits of technology.
This is not true of every Fortune 500 shop I've ever worked in. Most PHBs never met a platform they didn't like. Hell, at my current gig, we have mainframe, AS/400, Solaris, HP-UX, AIX, Linux (2 distros!), Windows, Oracle, DB/2, Sybase, MySQL, JBoss, Websphere, Cisco, Foundry, etc.
Lots of big shops are heterogenous to the point of pathology.
Re: (Score:2)
It seems to me that it's usually the small shops that are really stuck on MS products, even though with their lesser resources they have the most to gain from exploring competing alternatives.
Re: (Score:3, Funny)
So the PHB can spend his time working on his golf game. (Oh, Oracle can help there, too, I'll bet.)
Where do you think most of the Oracle support contracts are negotiated?
Re:WTF is a "Concurrent Programming Language"? (Score:4, Insightful)
I thought the general consensus on this site especially with regards to open source software was that choice is a good thing? I'm sure if they used an existing language Microsoft would employ an embrace and extend strategy that would have developers/purists up in arms.
Re:WTF is a "Concurrent Programming Language"? (Score:4, Insightful)
The Actors Model is around 40 years old. Scheme was based upon it. Lisp have already shown in the eighties to be good at concurrent programming. Just NIH syndrome.
Re: (Score:3, Insightful)
Next question asked is WHY has Microsoft have to invent one when there are others available already?
Because you would whine and bitch about them "stealing" the language if they were to co-opt another concurrent programming language to run in their .NET environment.
Not "Insightful", "Clueless" (Score:5, Informative)
Because you would whine and bitch about them "stealing" the language if they were to co-opt another concurrent programming language to run in their .NET environment.
Come on, who ever complained about Microsoft "stealing" any of the existing languages supportted by .Net? That was not true for Eiffel or managed C++ or IronPython, or... you get the point.
Now it is true that C# was taken lock, stock and barrel from Java when the Microsoft embrace and extend strategy was slapped down there (read the memos), but no-one ever complained about other languages being added in just as no-one accuses Java of "stealing" all the languages that VM supports now. So using an existing concurrent language would make a lot of sense and annoy no-one.
Re:Not "Insightful", "Clueless" (Score:5, Interesting)
Come on, who ever complained about Microsoft "stealing" any of the existing languages supportted by .Net? That was not true for Eiffel or managed C++ or IronPython, or... you get the point.
Actually there have been many criticisms of IronPython and Managed C++ in the usual "embrace, extend" whining on this site and on other tech sites.
So using an existing concurrent language would make a lot of sense and annoy no-one.
Bullshit. People would whine no matter what because it's Microsoft.
Re: (Score:3, Insightful)
Probably the answer is "Because they can" and they see a business in locking in people into their environment.
Because they want to add to the .NET suite with a forward-thinking language. Like it or not, .NET is big for Microsoft, and giving people who use it more tools will only help their position. How you feel about that, of course, depends on how you feel about .NET and Microsoft.
Re:WTF is a "Concurrent Programming Language"? (Score:4, Funny)
Why develop TFT when there's already cathode ray tubes out there that will display picture?
Why invent new cars when there are clearly other cars out there that will get you from A to B?
Why invent motor powered vehicals when we have legs and bicycles?
Why invent geared bicycles when there are already pennyfarthings?
Why plant seeds when there's already food in my cupboard?
Why were you born when there're clearly other people out there that exist?
Stupid questions? Maybe, but you started it.
Re: (Score:2, Interesting)
Because the business of computer languages has nothing to do with technical merit or academic proof. Languages today are nothing more than brands that are sold (and resold) to programmers.
The language to get most mindshare wins.
Re: (Score:2)
Microsoft had to invent one because there are others available that (a) don't come from Microsoft, (b) don't target Microsoft platforms preferentially or exclusively. If, say, Erlang catches on for implementing the core of concurrent systems, there are a lot of ways people might provide interoperability with that core, but using .NET isn't really likely to be one of them. So Microsoft needs its own concurrent
Re:WTF is a "Concurrent Programming Language"? (Score:4, Insightful)
Next question asked is WHY has Microsoft have to invent one when there are others available already?
I'd suggest several major reasons: .NET Environment.
.NET, does give it a unique feature that distinguishes it from other concurrent languages (even if you loathe .NET, it still separates it from the rest).
1. Integration with the
2. Integration with the Visual Studio IDE.
3. Maximise control of the style of the language, featureset and its future direction.
If you check the wikipedia page the parent linked to, there are already stacks of concurrent programming languages available, it's not like there's some universal standard concurrency language out there Microsoft is trying to displace. That, and the above points, particularly with respect to
Probably the answer is "Because they can" and they see a business in locking in people into their environment.
Yes and no. You can take the whole lock-in argument (not entirely unreasonably), but you can also take the argument that for those who don't actually have a need to develop something for multiple platforms, a language fundamentally focused on a Windows-centric design with related tools is probably a huge positive. Why code in a language with a crap toolset/IDE (assuming there is one) and various other potential problems when MS offers one that plugs into .NET, VS, and is guaranteed to work great on Windows out of the box? That, and if you're already familiar with the above, the migration path I suspect is quite easy.
.NET based, Mono may or may not support some of this stuff. No idea.
Of course, this being
Re: (Score:3, Interesting)
Next question asked is WHY has Microsoft have to invent one when there are others available already?
As with most other Microsoft languages - because, while this is a research project currently, it may well become productized in 5 years, and at that point they'll want something that looks familiar, at least syntactically, to C# programmers, so as to not scare them away. It's not a new thing, either - Spec# [wikipedia.org] is a similar research language based on C#, but for Design by Contract (and bits of DbC based on it will be in .NET 4.0, though as library features, and not in the language proper). C-omega [wikipedia.org] was another p
Re: (Score:3, Insightful)
Next question asked is WHY has Microsoft have to invent one when there are others available already?
Yes, clearly the concurrent programming language problem is all wrapped up and doesn't need any further innovations or development.
It's ridiculous how hostile people are to what happen to be really cool Microsoft research projects. I know it doesn't mesh well with the idea that Microsoft steals everything and invents nothing but if you're more interested in Computer Science rather than pushing an anti-Micros
Re: (Score:3, Interesting)
it's a programming language which splits up multiple threads of execution into different processes instead of threads.
That would be an incorrect definition of concurrent programming language. The actual implementation of executing multiple things isn't defined. There are many flaws in your "history lesson". OS/2 blew chunks when compared to NT at the time, and the SDK for OS/2 was a major pain to get anything working.
COM wasn't made after CORBA, it predated it, and it was developed by IBM. Much of CORBA was even based on COM, COM is mentioned all over the place in the original CORBA documentation. COM was licensed to
Re: (Score:2)
Focuses on Interfaces to Ease the Pain (Score:5, Informative)
in your channel class then you can communicate with agent instances that implement that channel quite easily like:
If the data can't be sent over a channel you use (and this word should sound familiar to you web guys) a schema.
From there on out it gets a lot more complicated with state and domain communications/sharing. It looks better thought out than most of Microsoft's libraries I've been forced to use but--as always--new languages need many releases before they are production worthy. A noble effort to simplify concurrency. With some really slick operator coding and overloading, you could probably get a similar thing going in Java or C++.
One last thing I'd like to bitch about is that this download is an MSI. Really? You really need to do that? For the love of christ, I'm a developer. Could you please just give me a standalone zipped up SDK directory that I could add to my path if I want to? I'm not even going to install this because it's going to get all up in my registry n' shit.
Re:Focuses on Interfaces to Ease the Pain (Score:5, Interesting)
One last thing I'd like to bitch about is that this download is an MSI. Really? You really need to do that? For the love of christ, I'm a developer. Could you please just give me a standalone zipped up SDK directory that I could add to my path if I want to? I'm not even going to install this because it's going to get all up in my registry n' shit.
While I realize that bitching about MS products is a common hobby, you could just extract the files directly [tech-recipes.com] and avoid any installation.
msiexec ships with Vista (and possibly earlier versions of Windows, I haven't checked). There are a number of third party programs that could do it as well, just look around.
Re: (Score:2)
I believe it ships with 2000, it's certainly in XP. Updated versions of it are available through Windows Update, although most packages will work fine with older versions of msiexec.
Re: (Score:2)
At least Microsoft is using msi's, and not random installer programs like everyone else.
Re:Focuses on Interfaces to Ease the Pain (Score:5, Informative)
Off topic, but here goes.
The package must be shipped as a Windows Installer simply because it's got .NET objects in it. These objects must be installed in the Global Assembly Cache (GAC), which means they must be versioned and reference counted. It is possible (though unlikely) that the installer doesn't even create any registry entries.
Now, .NET was supposed to give us "xcopy installs", so it's possible that MS could ship a ZIP SDK pacakge; but then you'd be responsible for lugging around all of your dependencies from install to install of your own software. Plus, then MS would have to manage two different installation packages, and we all know how easy it is to keep different versions of the same thing in sync.
Re:Focuses on Interfaces to Ease the Pain (Score:5, Funny)
For the love of christ, I'm a developer.
MS applies that term to Visual Basic users too, you know.
Re:Focuses on Interfaces to Ease the Pain (Score:4, Informative)
With some really slick operator coding and overloading, you could probably get a similar thing going in Java or C++.
Except, of course, that Java does not do operator coding/overloading, or you'd have to tinker with the language itself (which is frowned upon by the Java community).
Re: (Score:2)
Re:Focuses on Interfaces to Ease the Pain (Score:5, Informative)
As a developer you should be fully aware of the fact that you can extract the files from the MSI if you really want to. I'll help though. For most MSI files a simple:
msiexec /a filename.msi /qb TARGETDIR=C:\tmpdir
Will do what you want.
There is also the Less MSIerables app from the WiX project: http://sourceforge.net/projects/wix/ [sourceforge.net] that will let you extract the files directly. Plenty of tools to accomplish what you want if you'd take the 2 seconds to Google for it.
You should also be aware of the fact that the MSI probably goes ahead and integrates the SDK with Visual Studio so the libraries, binaries and help are in path and available without a bunch of extra crap to do on your part, which for me personally, I'd rather have it do than wasting my time trying to figure out what needs to be done even if they did bother to document everything.
I realize that most of the slashdot crowd thinks having to do everything from the command line based on a man page is a good thing, but for the rest of us it stopped being cool when we got out of school and had to get a job where they expected us to actually get shit done and not sit around all day with our thumbs up our asses playing with Linux.
Re:Focuses on Interfaces to Ease the Pain (Score:4, Interesting)
After scanning the guide as well, it reads a lot like Erlang as "improved" by a Java/C# lover. You get a lot of syntax to make strict specification, which is a win, but the result is that the language isn't very light on its feet or Lispy in the way Erlang is.
For example: Axum seems to have a pretty strict type system, which gives you the ability to catch compile-time errors more cleanly, but on the other hand, there doesn't seem to be a simple way of creating a Tuple or Array literal without using a function. And at that, while it uses concurrency like Haskel or Erlang, it doesn't appear to be at all pure-functional, or maybe it is but the design is already burping with an "isolated" keyword that warns the compiler to forbid modification of static vars within the function body.
Re: (Score:3, Informative)
After scanning the guide as well, it reads a lot like Erlang as "improved" by a Java/C# lover.
It's probably just your perspective :) I'd say it's more like C# improved by an Erlang lover, and it's probably closer to the truth.
For example: Axum seems to have a pretty strict type system, which gives you the ability to catch compile-time errors more cleanly, but on the other hand, there doesn't seem to be a simple way of creating a Tuple or Array literal without using a function.
Actually, they have one example of an array literal in the paper - apparently, it's just curly braces:
For example, the following expression combines output from two interaction points ip1 and ip2 and passes the result on to an interaction point twoNumbers:
The expression above uses curly braces for array creation. In Axum, implicit array creation is a convenient syntactic construct that is used often when building network expressions ...
I don't know about tuple literals though. If they use the stock tuples from .NET 4.0 (as they probably should later on), which is System.Tuple generic class "overloaded" for varying number of type parameters, then tuples can be created with Tuple.Create(n1, n2, ...) call - whic
Re: (Score:2)
I'm curious: Operating on the assumption that you've at least tried Linux, do you bitch about .deb/.rpm/.tgz (with install scripts) too? All of these serve essentially the same purposes as .msi:
Dependency checking ("You need to have .NET 3.5 before installing this, let me grab that for you").
Installation tracking and easy repair installations or un-installs.
A built-in way to distribute a package or update across many machines.
A standard way of packing multiple files (msi packages can in fact be extracted; t
Re:Focuses on Interfaces to Ease the Pain (Score:5, Insightful)
I don't know about "devlopers", but real developers use whatever OS they need to get the job done.
Re: (Score:2)
Real developers with jobs, use whatever OS and programming language that management tells them to use, if they want to keep their jobs that is.
Real developers without jobs contribute to open source projects using whatever language and OS they want. Sadly if you want the freedom to choose your OS and programming language, you have to be without a job to do so, or do it on your spare time at home as your real job requires you to use something else.
The only exception to this is to start up your own small busin
Re: (Score:2)
Real developers with maturity use the language that the existing environment and team uses, so they don't create support nightmares for themselves by adding unneeded complexity to the environment. I don't give two shits that you like language X better than language Y. If the system is written in language X, that is what the maintenance team is going to be best at, so enhancements should be written in language X unless you have a damn good reason for change.
Says the guy responsible for 4 different implemen
Re: (Score:2)
ThreadX forever!
Re: (Score:3, Funny)
Am I the only one who translates "fixed that for you" into "I'm a dumb, annoying fuck"?
Re: (Score:2)
Re: (Score:2, Insightful)
Last time I checked real developers get paid to solve real-world problems for real-world customers, not to use some company's computing facilities as dogmatic playing grounds.
Be it for writing a web page for a company or doing some complicated shit, you use the tools that get the job done, and to program against the platform that is being used by the customer whose pay
Wanted: experienced Axum programmer (Score:2, Funny)
I already imagine job offer
- Minimum 5 years experience with Axum
Re: (Score:2)
Hardy har har:
Wanted Windows 7.0 Axum developer, must work with .Net 4.0 and Microsoft Office 2010, must have minimum of five years of experience in all of them, knowledge of standardized OOXML by the ISO a must.
No open source developers accepted, must have at least a Bachelor's degree in Computer Science minoring in Axom programming and Concurrent Languages knowledge.
Of course they will get thousands of submissions from people in India, China, and Russia claiming to have such experience on their resumes, r
Re: (Score:2)
Re: (Score:2)
Yes it is, welcome to the 21st century.
Many IT managers read "Dilbert" [dilbert.com] to get new ideas about how to manage their IT employees by following what the PHB (Pointy Haired Boss) does. "Dilbert" cartoons are based on reality and people keep sending in their IT Nightmare stories to Scott Adams who keeps turning them into "Dilbert" stories.
My feedback (Score:4, Funny)
The windows version works great, but Axum on Linux isn't ready for prime time, yet. However, Axum is powerful enough that you should probably change your platform to permit its use, so if you have a new app being developed, I'd force your engineers to use Axum and develop it on windows.
And I know what I'm talking about because I'm an IT manager at a Fortune 500 company.
Re: (Score:3, Informative)
Exactly. More proprietary digital glop from Microsoft.
Re:My feedback (Score:5, Funny)
Axum on Linux isn't ready for prime time, yet. However, Axum is powerful enough that you should probably change your platform to permit its use, so if you have a new app being developed, I'd force your engineers to use Axum and develop it on windows.
I agree. I'm uninstalling Linux as we speak.
I expect 15% of the software to be written in Axum within 4 year, with the rest being split between Ruby on Rails, Silverlight and Adobe Flash Player (tm).
obvious troll is obvious (Score:2)
Chortle.
Re: (Score:2)
And I know what I'm talking about because I'm an IT manager at a Fortune 500 company.
You wield that sentence like you think it's a sudo command. Unfortunately, this [xkcd.com] doesn't work in real life.
This will be fun... (Score:5, Interesting)
The good points of a concurrent language (Score:5, Insightful)
I see Microsoft is doing its best to help developers all over the world create race conditions. I wonder how many programmers there are who never really 'got' concurrency. Hopefully I'm not one of them. (And no, there is no programming language that can prevent you from screwing it up.)
Concurrent programming is becoming increasingly important for any kind of high-performance project. This doesn't necessarily mean one needs a "concurrent programming language" to do it - but whatever the chosen mechanism, the goal is the same - write a program that uses all cores effectively. One way or another, professional programmers are going to need to 'get' concurrency in the coming years.
The benefit of a language that provides parallelization as a basic assumption is that the language itself can provide infrastructure (for message-passing, task-scheduling, and so on) useful to the task. Such a language encourages programmers to think about problems in terms of how they can be parallelized, but leaves the compiler or the runtime engine free to make decisions about how the parallelization is to occur.
Another benefit of such a language is that a language that takes certain ideas as base assumptions can help guide the programmer's approach to a solution. This can involve a significant learning curve for the programmer (see, for instance, Prolog or various functional languages...) but it can help programmers to achieve a new way of solving their problems: in this case, one that is rather well suited to the current needs of high-performance CPUs.
The challenge with synchronization in Axum, presumably, is that it's possible to write code that will run in the engine that won't conform to the rules for an "actor" - that it will perform some non-thread-safe access to a file, or that it will otherwise do something that won't be safe when run in parallel. From that perspective it's no different from (almost) any other language - as you say, it's still possible to screw up. What it does provide, however, are guidelines and framework to help keep you from screwing up.
Re: (Score:2)
I agree with what you say. However, I think the big problem is going to be that Axum seems to be just another layer on top of .NET - and how much of that has been written for parallel processing? I'm guessing not a great deal, or even very carefully.
Re: (Score:2)
My understanding is that most functions in the .NET libraries are not reentrant.
Seems to me, .NET was developed without much concurrency in mind.
Re: (Score:3, Interesting)
My understanding is that most functions in the .NET libraries are not reentrant.
Most functions in the .NET libraries are perfectly reentrant in the classic definition, if you consider the implicit receiver argument ('this') a proper argument. Most non-static functions in .NET classes are not thread-safe in a sense that two threads cannot call the same function on the same object concurrently (or, more often, any two functions on the same object concurrently) - this is generally the same as what you can see in Java or C++. I don't see this as a problem, since it's unlikely that you'll w
Re: (Score:3, Informative)
Your understanding is...flawed to put it nicely.
Feel free to provide more detail. Bear in mind there are people here who may not know all the details about .NET - and may not love it, either - but who would still be interested in learning more about it.
Re: (Score:2)
I agree with what you say. However, I think the big problem is going to be that Axum seems to be just another layer on top of .NET - and how much of that has been written for parallel processing? I'm guessing not a great deal, or even very carefully.
I couldn't really say... Though I expect that it's entirely possible to write a module in .NET that would be thread-safe over multiple invocations, just as it'd be possible to do the same in C.
The nice thing about Axum's relationship with .NET is that it (presumably) makes it rather easy to write your working code in a language you're comfortable with, and then write the parallelization logic in Axum. This, to me, is pretty important. If languages are specialized to different kinds of tasks, then you als
Concurrency isn't just for parallelism. (Score:3, Insightful)
You're making the mistake that concurrency is the same thing as parallelism. It is not. Concurrency is when a program is written in such a way that the order of execution of tasks is highly underspecified; parallelism is the use of multiple execution units to execute concurrent code.
Concurrency isn't just for performance; concurrency is just as much for writing software that can do many things at once. For example, one needs concurrency to have client applications that respond to the user with very low
Re: (Score:2)
Interesting points. Thank you for enlightening me. :)
Re: (Score:2)
Bullshit. Concurrency CAN BE ABSTRACTED away from the programmer, just like the OS abstracts away the hardware.
No CURRENT programming language can fix human error, but they can be designed to deal with it better.
Just because you haven't seen a working implementation of the abstraction doesn't mean it can't be done. It can be done. Its just a question of when it will be done, and if its worth doing. Generally adding a bunch of layers of abstraction isn't something you want to do on a project that needs h
Typical Microsoft (Score:2, Troll)
>> Axum does not have capabilities to define classes, but as it runs on the .NET platform, Axum can use classes made with C#.
Why is it that Microsoft persist in vomiting up quick/crappy/hacky workarounds rather than solid solutions? and how is it that the people with the biggest blind-spot about technology and how bad Microsoft products are, are always in senior management of tech companies?
Re: (Score:2)
It's not just Microsoft. The JVM has a host of 'guest' languages besides Java, some of which exist for .NET too: JRuby vs. IronRuby, Jython vs. IronPython, Kiev vs. P# (prolog), etc. etc.
Re: (Score:2)
The whole idea of reusing good and working code is what from a business point of view is deemed evil. It is imperative to milk all customers of as much money as possible without actually delivering any form of permanent solution but barely what the customer needs (not what they are asking for.)
This is not only endemic in Microsoft but any software house these days. What is worse is that this type of behaviour has now crept in the hardware realm as well. They all looked at how Microsoft et.al. do and how suc
Re: (Score:2)
Hey the interface took out my "sarcasm*cynicism" tags.
Initial Failures (Score:3, Interesting)
public Program()
{
// Receive command line arguments from port CommandLine
String [] args = recieve(PrimaryChannel::CommandLine);
// Send a message to port ExitCode;
PrimaryChannel::ExitCode <-- 0; }
I can't help but think that their idea of "Channels" is really a message queue, which listeners pull messages from. This is easily implemented in around 30-40 lines of Python, Queues, Tasks and Listeners. And since Python supports these crazy things called CLASSES, it's really quite easy to implement new features or override base functionality.
In other words, this is an incredible waste of time. Put all these kids to work on IronPython and close this crap down.
Re: (Score:2, Funny)
Re: (Score:2)
If your PDF reader can't do fast searches or bookmark specific sections, time to upgrade to one that doesn't utterly suck...
Naming vs architecture (Score:4, Funny)
previously known as Maestro and based on the actor model
Somebody has their performance arts mixed up
Queue a new internet Want ad (Score:5, Insightful)
Wanted:
Senior Software Engineer
Windows Platforms
MFC C++ - 10 Years
C# - 5 years
Axum - 5 years
You *know* it's going to happen.
Re: (Score:2)
Cue people saying, "It's cue, not queue."
Then cue people defending it saying that you're putting the ad into a queue.
MPI much? (Score:2)
Was C# Not Enough? (Score:4, Insightful)
Re:Was C# Not Enough? (Score:4, Informative)
Its not a threading language, its a distributed concurrency language like erlang. So its designed to send messages locally or across a cluster, in a fast, safe,and easy manner. Yes, you could do everything in c# that it does, but not easily. Look over the documentation and you'll find some things that would be odd to you as a c# developer. Some sections that won't let you modify a variable's contents, to keep certain sections free of side affects.
Basically its a different way of doing things that should help create easy,bug free, high performance, concurrent software.
Re: (Score:2)
Re: (Score:2)
Re: (Score:3, Insightful)
It's not about threading - all the features you describe relate to dealing with concurrency in a small scale. New concurrent languages are targeted at algorithms that use concurrency as a fundamental building block - a language construct, if you like - which let you use completely different algorithms to what you would use otherwise.
Totally contrived example: imagine you want to count the number of upper case characters in a large string. You could zip through it in a loop in a single thread. But t
thankfully... (Score:2)
I don't have to make up reasons to not use this (which I usually would have to, because I hate Microsoft...)
what is it about object-orientation that microsoft doesn't get? read MSDN sourcecodes - it's like a trip to 1960...
Re: (Score:2)
While I am actual surprised that C# caught on
It's Java without a number of the Java hassles. Why would you be surprised?
Re:R&D (Score:4, Insightful)
> I haven't seen may apps that properly use OO
True, but it's very nice for program libraries - boost, wxWidgets, Qt, etc (yes I'm a C++ programmer) - where people who know what they're doing have already done the difficult stuff for the rest of us.
Re: (Score:2)
and don't forget the good concurrent stuff - OpenMP for example:
#pragma parallel for
// do ten iterations in parallel.
for (i=0; i < 10; i++)
{
}
so easy! Add Intel's TBB and you have seriously easy and powerful concurrent programming. Without having to reengineer to MS-Java++.
Re: (Score:3, Informative)
Frankly, #pragmas are ugly, and what if you want to parallelize operations on STL containers? How about a library solution [microsoft.com] using C++0x lambdas instead:
But, of course, it would require you to embrace "MS-Java++", and therefore automatically evil, right?
Re: (Score:2)
While I am actual surprised that C# caught on
Really? Whenever I mention C# around programmers they can't stop telling me how much they love it. It's almost creepy, especially considering our company uses a completely open source production environment.
I haven't seen may apps that properly use OO as to do so requires management oversight, in which usually doen't know about OO anyways.
I've seen a lot of apps that properly use OO, but they were all written within the past 3 or so years. Anything older than that doesn't use OO or uses it badly. It seems like legacy code (the great bane of all programmers) keeps most projects from being strictly OO, and most programmers didn't master it
Re: (Score:2)
It is awesome to program with and for.... Thats all there is to it.
Re: (Score:2)
Well it is a case with OO espectially for large projects you need to be sure that the wheel isn't reinvented. For large projects with hundreds of developers and thousands of classes it is really easy for a wheel to be reinvented where they could have just extended or just use an existing class. You need management layer (Who sees the big picture) to assure that the employees are not reinventing the wheel over and over again.
Even as a professional for a large projects (in which OO was suppose to build) you n
Re:So, where did they steal this idea from? (Score:4, Insightful)
Well, it does use the same concurrency model as Erlang, but Erlang has no concept of classes. Perhaps Scala, which I know little about except that it runs on the JVM and is supposedly better at concurrency.
Re: (Score:3, Insightful)
"but Erlang has no concept of classes."
One of Erlang's strengths.
Re: (Score:3, Insightful)
Well, I wouldn't say that classes are bad in and of themselves, but trying to bolt classes onto Erlang certainly wouldn't make sense.
Re:So, where did they steal this idea from? (Score:5, Interesting)
Re:So, where did they steal this idea from? (Score:4, Interesting)
I'm not affiliated, but I do own their dev kit
Re: (Score:2, Interesting)
To me it looks more like they took XNA and adapted it to something a bit more agnostic to underlying architecture. Almost like a Blackboard [wikipedia.org]/XNA [xna.com] lovechild. They took the compartmentalized (class-driven) structure of XNA, gave a shared communication API in the same vein as Blackboard (think centralized communication system as opposed to shared discussion system... like the comm system in Quake 3 source), wrapped it up in a C# API, and called it a language.
Call me crazy... but in order for it to be truly a "la
Re: (Score:2)
Of course most of it they stole from Java, with an attempt to add refinements here and there.
Because Java didn't take anything from any other languages and then refine them? You can't name a single thing in Java that can't be traced back to a previous language.
Re: (Score:2)
Ok, so C# is a pretty good language. (Despite its severe limitations. Seriously, thank god for C# if you've had to work with VB at all. Ugh!) Of course most of it they stole from Java, with an attempt to add refinements here and there. (Possible nefarious motives aside...)
So from what language did this one come from? Erlang?
Or did Microsoft actually create something relatively unique this time?
When's the last time a truly unique language was created? 1950's?
The whole idea of "so and so ripped off x from y" is retarded. Humanity moves on because we take ideas and improve on them. We don't start off from scratch every time we want to try something new.
Re: (Score:2)
"Humanity moves on because we take ideas and improve on them"
Sorry to be a grammar nazi here, but there's no excuse for being ignorant to the fact that when you take the verbs "to take and improve" and conjugate to refer to actions of Microsft, you end up with "steal and ruin and kill babies and eat puppies". This is slashdotese we speak here. It might look like English, but that's only because we were inspired by and evolved the language (again, same verbs, different inflection)
Re:So, where did they steal this idea from? (Score:4, Informative)
From the looks of things, C.A.R. Hoare's Communicating Sequential Processes [usingcsp.com] (yes, the same guy who invented Quicksort). Well, Professor Hoare presently works at Microsoft Research, so I guess he may have more than passing involvement in the project. It's the basis for many other concurrent programming languages such as Occam, Erlang, and Limbo to name a few.
Re: (Score:3, Funny)
I heard that the Hilton model will infect you with viruses...
Re: (Score:2, Funny)
I've heard that they include Arnold Schwarzenegger, who is needed to terminate the program.
Re: (Score:2)
Virtually every field of specialization has its own jargon. Usually, the idea is to use a specific word for a narrow definition to speed communication and reduce the chance of misinterpretation. Beyond specialty jargon, every software company has some unique jargon, but unless you work there, you're unlikely to see it. Microsoft is just higher profile.
Of course, sometimes the jargon goes wrong. You can see some appalling examples at Raymond Chen's blog [msdn.com]. Just search for "Microspeak" posts.