Microsoft May Back Off of .NET Languages
443
An anonymous reader writes "Though Microsoft had initially made a commitment to create versions of dynamic languages that are customized for .NET, recent reports make it clear that the company may be stepping back from this plan. Much early speculation on this change in focus comes from Jim Schementi, previously the program manager in charge of Microsoft's implementation of the Ruby software known as IronRuby. Schementi reports on his blog that the team dedicated to working on IronRuby has decreased to one employee. According to Schementi, his departure from the company came as Microsoft began to display a 'serious lack of commitment' to any .NETized dynamic languages, including IronRuby."
Getting screwed in both directions (Score:5, Insightful)
So, Oracle are suing Google and making the JVM a less viable platform.
And Microsoft are pulling back on resources for IronRuby.
Looks like it may finally be time for the LLVM to step up to the plate and provide an open source alternative. Here's hoping...
Using them? (Score:5, Insightful)
Harder than you think (Score:4, Insightful)
The truth of the matter is that it is very hard to support random other languages on VMs written for certain languages.
All these dynamic languages do one thing or another that puts a hole in your plan. Ruby with it's continuations is right up there but Python with "modify anything fundamental anytime" isn't much better. The native environment has a huge headstart.
We should all move to LLVM.
Re:Getting screwed in both directions (Score:2, Insightful)
>
And Microsoft are pulling back on resources for IronRuby.
That doesn't really say anything. There's still C#, Delphi .NET, Visual Basic .NET, and a ton of other languages. The headline is wrong - Microsoft isn't dropping .NET support, it's just lowering their support for dynamic languages. Static languages are better anyway.
Also remember that Windows Mobile 7 will only have .NET apps, which is actually quite good, since .NET is actually a lot better than Java.
Story title fail (Score:2, Insightful)
"Microsoft may back off of dynamic .NET languages" would be more appropriate.
Sad to hear though, I just started a project with IronPython.
Confusion likely in Programming sphere (Score:2, Insightful)
Re:Getting screwed in both directions (Score:5, Insightful)
Re:What Oracle v. Google tells us (Score:2, Insightful)
I don't think you have it quite right. From what I can tell, the issue is that Google implemented their own "JVM" in the form of the Dalvik VM. They claim compatibility with java, even though it's not technically a strict J2SE implementation, meaning it's NOT covered by the patent grant. They used the open source version of the java libraries from the Apache Harmony Project as I understand it. Where they went wrong was by adding their own libraries, and removing the bits they didn't want (AWT, Swing). So now they've effectively muddied the JVM waters. To develop android you have to use their Dalvik VM, but you're still writing java? How does that work? Is Dalvik sanctioned by Oracle? Nope!
As much as I hate to say it, I think Google screwed up. Instead of paying the license fee like everyone else for J2ME, they decided to build their own VM and say, 'Hey,it's not really java, it's just java syntax. You can't charge us for that!' They then proceeded to wholesale ripoff the standard libraries and even go so far in their marketing speak to promote android development as using Java(TM). Oracle is totally justified IMO - Google was trying to skirt the rules and got caught. Time to pay up. If MS did this (and they did, back in the late 90's_ they were hung out to dry by Sun. Though there are differences in this case, the same principal remains: They tried to dilute the Java ecosystem with their own brand, and now they're getting called out on it.
Re:Getting screwed in both directions (Score:5, Insightful)
What?
Oracle is suing Google for making a non-compatible VM call Dalvik that uses technology found in the JVM without paying a license. Since Google wasn't using JVM, how does Oracle's actions against Google make JVM less viable?
LLVM is a low level virtual machine used to optimize compiler operations and runtime linking. JVM is a high level virtual machine providing objects, garbage collection, and according to Oracle technology patented by Sun. From LLVM website:
The LLVM Project is a collection of modular and reusable compiler and toolchain technologies. Despite its name, LLVM has little to do with traditional virtual machines, though it does provide helpful libraries that can be used to build them.
LLVM is not a drop in replacement for JVM.
Re:Getting screwed in both directions (Score:5, Insightful)
It wouldn't be a drop-in replacement but there is no reason that a Java front-end couldn't be created and combined with the LLVM JIT compiler.
Multiple Languages With .Net Always a Pipe Dream (Score:4, Insightful)
The one environment that Microsoft should have created on top of
Microsoft don't appear to have learned a thing after ten years of
Re:Getting screwed in both directions (Score:3, Insightful)
The usual reason given is that it saves on the write/compile/run cycle taking up your time. In practice, it's a pretty crappy reason though.
Re:Getting screwed in both directions (Score:2, Insightful)
yeah these can get "fun" with auto boxing and properties
no support on the phone for this
not on the phone eaither
not on the phone
sorta nice but you don't get the cut and paste power of c++ templates. Also the phone is locked at some bastardized version of 3.. you don't get many of the 4 features. This may possibly change in the future.
Another benefit of for is they've made a dynamic invocation system, so at runtime you can intercept function lookups, which will be pretty nifty for making scripting languages. Again the phone is lacking this atm.
Re:Getting screwed in both directions (Score:2, Insightful)
how is .net better than java?
In short, .NET is the Firefox to Java's IE 6.
At one point, .NET was basically just a poor copy of Java -- but then it kept adding features and getting better while once-great Java essentially stagnated.
Re:Getting screwed in both directions (Score:4, Insightful)
Because there aren't a lot of good interfaces for statically-typed language to web development. Believe me, if I didn't have to rewrite half the world to write web apps in C++ with a good Apache interface, I would do it in a heartbeat.
That said, don't forget that a whole lot of development is done in ASP.NET now. It's changing.
Re:Getting screwed in both directions (Score:5, Insightful)
That's pretty much a wash, as "Controlled by Sun" isn't much better.
--Jeremy
Well if their website is any indication (Score:3, Insightful)
Microsoft is a company that is trying to point in all directions at once. This wouldn't be the first idea they have poured time and effort into, only to drop it. I am sick and tired of having to learn new development techniques just because Microsoft thinks that this year MFC/WPF/XNA/.NET/C#/F# is going to be **IT**, skimming through thousands of completely unhelpful reference pages on MSDN that merely hint at what functions/objects/libraries/tools are supposed to do but point to other pages in circular references worse than any 1990's porn sites.
Programming is supposed to make life easier, not harder. Microsoft is the expert in obfuscated standards, obfuscated libraries, and especially obfuscated documentation. It's a wonder they get anything done at all.
Re:Ignorance, mostly. (Score:3, Insightful)
After ASP.NET was released, they were soon joined by C# and VB.NET developers. These applications, being written by professional developers, are often significantly better than what was produced by the amateurish PHP/Perl community.
got to disagree with this bit. ASP was released and the sloppy web programmers who used to slap something together were joined by a legion of Visual Basic programmers who used to throw something together, but thought they were uber-developers because they were employed to write this kind of code.
Sure, ASP.NET is better, and all the old VB devs have faded away somewhere, but I don't think the number of C#/VB.NET devs working on ASP.NET apps is that much better the the old lot.
There is a technical argument in favour of dynamic languages - and that's RAD. You can fiddle with the language as you go, "develop in the debugger" kind of programming. I'm not saying this is a good thing, but if you don't have the discipline to do it properly (like the old C/C++ dev would) then this provides you with an easy entry to programming. Hopefully you'll learn and become a professional dev from that.
Re:Getting screwed in both directions (Score:3, Insightful)
Positive things Java has over .Net:
- Supported on Unix, Linux, Windows, z/OS, including AIX, HP-UX and Solaris.
- Supported on Blackberry, and other hand-held devices.
And, no, Rotor doesn't really cut it for support. For some limited uses, Mono on Linux may be usable, but .Net has very little, if any, penetration into z/OS, AIX, HP-UX and Solaris.
So, it's fairly reasonable to not bother supporting "ultra-portable" programming. After all, if its single-platform, just build it there to begin with. Just like the iOS platform.
As developers go, celebrate, because this de-emphasis just increased the value of your skills.
As to the feature comparison of the Java vs. .Net run-time -- sure, "unsafe pointers" would have been useful to me. I wrote a COBOL-85 to JVM compiler, and the biggest performance issue is that data can, and often does, overlap in COBOL. Note that COBOL-85 doesn't have pointers, just redeclaration. This forces "interpreted" retyped access -- my compiler isn't smart enough to know when an overlap can happen. However, the primary target platforms are AIX and Solaris, so the feature remains... elusive.
I am curious about your claim for "tail call support". Mostly, compilers are smart enough to replace a pure tail call with a simple transfer, and the run-time doesn't have to be aware. If the optimization is contemplated, there cannot be any partial results needed, and this must be maintained through the entire recursive sequence (direct tail call, or through another function). How does the run-time itself assist with this?
Re:Getting screwed in both directions (Score:2, Insightful)
The blame there would be on the developer(s), not on the language.
Re:Ignorance, mostly. (Score:3, Insightful)
I know I'm in the minority, but I came from C/C++ / Comp Sci background. After years of Motif programming I found PHP a real joy. I no longer had to solve programming language problems (memory management, garbage collection, STL template integration, etc). I just had to solve for the solution of the real problem.
I think most "real developers" don't like PHP because it seems too easy. If you don't find it liberating you find it frustrating that you've spent so much of your life searching out malloc bugs - and anything that trivializes your agony is assumed to simply not be that powerful.
Aside from image manipulation (2d/3d), there have been few problems that I've encountered on either the front or back-end that I couldn't solve in PHP that would have been easy (or even easier) to solve in another language. Typically the real problems - like large (millions of records) iterations, searching, or merges are easily solved by letting the database do it's job.
It's true that there exists a huge nest of bad code written in PHP. I've never understood this as an argument against the language however. The person stating the fact usually claims that they are a "real" programmer - if so - then why is it that difficult to discipline yourself to write good code? Taking the simple approach of following a basic MVP paradigm (with or without a formal framework) solves 90% of the rat's nest issues that encompass the "bad" PHP code. PHP can be as structured and well written as any language - it just takes a (very little) bit of discipline.
-CF
Re:Getting screwed in both directions (Score:5, Insightful)
Makes sense to me from MS perspective (Score:1, Insightful)
What I find interesting about this is that it makes sense to me from a MS perspective.
MS doesn't want Ruby to run on the .NET Framework, because that would make the .NET Framework "just another run-time" that could be swapped out with the MRI "C" version or the Java JRuby version. They want the features of Ruby (and other dynamic languages) without the ability for applications to just jump off the platform.
So I expect MS may try to create a new dynamic language that can only run on the .NET platform. All about lock-in. That's what they did with F#. It's a syntactic ripoff of OCaml but with new changes that can't leave .NET.
Embrace, Extend, Extinguish.
-Mark
Re:Getting screwed in both directions (Score:3, Insightful)
I am curious about your claim for "tail call support". Mostly, compilers are smart enough to replace a pure tail call with a simple transfer, and the run-time doesn't have to be aware. If the optimization is contemplated, there cannot be any partial results needed, and this must be maintained through the entire recursive sequence (direct tail call, or through another function). How does the run-time itself assist with this?
I'm guessing that if the transformation (from a tail call to a branch) is done by the compiler, then the generated bytecode loses nice properties used by the checker to ensure it's well formed. If you do it like CLR (with a "tail" modifier to a call), the checker can verify it's a simple method call (and not a branch to some place outside the current method, which might or might not be valid) and then the JIT, seeing the "tail" marker, ensures the proper semantics for the tail call (stack doesn't grow, etc.).
There might be other reasons, like performance: it's very likely that the JIT can do a much better job at optimizing a tail call (when it knows it's a tail call) than optimizing the tail call bytecode generated by the bytecode compiler.
Re:Getting screwed in both directions (Score:3, Insightful)
Java like Netscape run on multi-platform, IE the MS-only solution that MS put all its money on improving until it beats the competition.
Microsoft cannot really uses its monopole to kill java, I hope Oracle does not do it for them - or at least does it quick so we can all work on an alternative.
Not really (Score:3, Insightful)
Microsoft management knows full well that the only way to stay on top of their huge bloated codebase and architecture is to continue along the path of managed code. The only thing they're not fond of are dynamic languages, pure and simple. Support for dynamic languages was added to the .NET runtime very late in the game, and begrudgingly at that. Their current development and runtime environments rely on huge amounts of auto-generated boilerplate glue without which the simplest tasks wouldn't be possible.
The reasons for this are probably largely historical, because there are still a lot of people from the old COM days working at MS. There are fact-based arguments as well: Dynamic languages tend to be more concise but are more difficult to automatically evaluate and optimize, especially considering the way Microsoft is relying on interface contracts and access policies (all of which are either generated by static language code or in turn serve to generate such code). Besides, none of the teams working on those much-needed tools and design-helpers wants to be put out of a job, so of course they have to stay firmly committed to their huge heap of statically generated code.
A few years ago some Microsoftie told me about a new research OS they were working on, it was completely .NET-based and probably still reflects how MS would like Windows to be if they could start over from scratch today. I believe the project's name was Singularity, I don't know if it still exists. Anyway, the whole point of the OS was its completely static architecture. There was no support for dynamic languages, all executables were statically linked and completely rigid. There was no self-modification allowed for any application and as far as I remember applications couldn't even dynamically load libraries at runtime. So, in a way, they already made clear which road they are going to go down. Dynamic languages aren't in the mix anymore, but managed code will stay around for a long time at Microsoft.
Re:Getting screwed in both directions (Score:3, Insightful)
Last I checked there are a pile of python and ruby websites out there doing fairly complex things -- are they all misguided? I obviously have an opinion, but I'm not trying to flamebait you - I'm actually curious what you think of that market segment.
Re:Getting screwed in both directions (Score:3, Insightful)
No. Think again. Its the language.
Unit Tests are there to detect developer errors, not language errors but the more errors the language allows the developer to make, the more Unit Tests you need. GPs conclusion is correct.
Planned obsolescence (Score:2, Insightful)
I would not be too surprised if MS stops pushing .NET in near future and instead pitches "new and improved" stuff. Totally incompatible with .NET, of course. I believe this is their way to keep windows developers busy re-learning new ways to do old tricks and too busy to look at MS competitors. .NET is 10 years old now btw. Remember VB6, DDE, OLE and WIN32? Yea, I do.
Re:Getting screwed in both directions (Score:3, Insightful)
There are many answers from different angles, but one is this: you were using an immature dynamic language with no compiler. The limitations of Ruby don't represent the state of the art in dynamic languages. Static languages with declarations also don't represent the state of the art.
Modern languages, whether static or dynamic, don't have mandatory declarations, and rely on type inference.
The difference between the two is that the static language disallows the execution certain programs which are allowed to proceed the dynamic language (but the dynamic language can still flag those programs).