Slashdot Mirror


Microsoft May Back Off of .NET Languages

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."

443 comments

  1. Getting screwed in both directions by bbtom · · Score: 4, 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...

    --
    catch (HumourFailureException e) { e.user.send("You, sir, are a humourless idiot."); }
    1. Re:Getting screwed in both directions by odies · · 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.

    2. Re:Getting screwed in both directions by pitdingo · · Score: 4, Funny

      how is .net better than java?

    3. Re:Getting screwed in both directions by psbrogna · · Score: 2, Interesting

      If static languages are better, why is the bulk of web development done with dynamic languages? I'm not picking a side, just interested in your response.

    4. Re:Getting screwed in both directions by Anonymous Coward · · Score: 0

      .net may be very good or not, but it lacks a key dfeature...Portability to anything that is not windows.

    5. Re:Getting screwed in both directions by not+already+in+use · · Score: 5, Informative
      • Unsigned data types
      • Checked arithmetic (on overflow, they throw an exception)
      • Support for tail calls (for Lisp, F# and other functional languages)
      • Value types, these are structs that are not wrapped in an object
      • VM-level support for generics
      • Platform-invoke allows developers to call native code without having to write any glue in C++ using JNI, it can all be done in the managed language.
      • The Common Language Specification: a spec that set the rules for interoperability across programming languages (for example: the rules for public identifier casing, handling of int vs uint and so on).
      • Delegates allow user to keep a reference to a method or an instance method and invoke it. The VM also can turn any delegate invocation into an asynchronous invocation, so you can turn any method into an async method, like this: mySortFunc.BeginInvoke (array)
      • Support for dynamic code generation through the Reflection.Emit API.
      • A database file format allows for efficient reading of the metadata from assemblies. It does not require decompression and the database format is suitable for lazy loading.
      • Attributes were special objects that could annotate most elements in the virtual machine, you could annotate classes, methods, parameters, local variables, and at runtime the VM or the runtime could do interesting things with it.
      • Unsafe code (pointers) to support C++, Cobol and Fortran compilers running on the CLI.
      • Native support for talking to COM-based APIs. Although mostly Windows-specific, its used to talk to Mozilla, VirtualBox and OpenOffice APIs in Linux.
      • Covariance and contravariance introduced with .NET 4 make even more generic cases a pleasure to use.
      • 64-bit arrays (although part of the spec, only Mono implements this).
      --
      Similes are like metaphors
    6. Re:Getting screwed in both directions by Timothy+Brownawell · · Score: 0, Troll

      Static languages make you do more of your thinking up front. Dynamic languages make it easier to just slap things together and worry about your sanity later.

      Apparently a lot of web stuff has sufficiently trivial programming that you usually finish before you have to make a sanity check, so dynamic languages let you get off without thinking at all.

      </troll>

    7. Re:Getting screwed in both directions by not+already+in+use · · Score: 4, Insightful

      I think the reason for this is that a lot of web programming isn't overly complex and the brevity of a dynamic language is an advantage in these cases because you can't code something up pretty quickly. Anyone writing any sort of really complex web app in a dynamically typed language is just asking for trouble.

      --
      Similes are like metaphors
    8. Re:Getting screwed in both directions by CAIMLAS · · Score: 2

      Regardless of which language picked, it's not going to be a perfect fix. For instance, perl + library bindings would likely fit the goals of many .NET projects, as well as many java projects. And there's python as well, which has similar if not greater applicability. Both of which are very stable and well developed.

      I also have to wonder how the lack of IronRuby makes .NET any less viable. Could someone else not develop IronRuby? I see no reason why not, as I believe the same has been done for perl, python, etc. for .NET, outside of Microsoft. I doubt MS wants or needs the burden of supporting Ruby, anyway. .NET is, IMO, the best thing Microsoft has come out with in some time. There are toolkits similar to it, but for what can be done w/ .NET vs. other languages in a similar amount of time is simply incredible. The fact that the code is all mostly architecture portable (provided there's a CLR interpreter for it) is pretty cool, too.

      --
      ~/ssh slashdot.org ssh: connect to host slashdot.org port 22: too many beers
    9. Re:Getting screwed in both directions by Bill_the_Engineer · · Score: 4, Insightful

      So, Oracle are suing Google and making the JVM a less viable platform.

      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?

      Looks like it may finally be time for the LLVM to step up to the plate and provide an open source alternative.

      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.

      --
      These comments are my own and do not necessarily reflect the views or opinions of my employer or colleagues...
    10. Re:Getting screwed in both directions by Lunix+Nutcase · · Score: 4, 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.

    11. Re:Getting screwed in both directions by beelsebob · · Score: 2, 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.

    12. Re:Getting screwed in both directions by Ironhandx · · Score: 3, Informative

      A lot of people have asked for and received said trouble.

    13. Re:Getting screwed in both directions by I!heartU · · Score: 2, Insightful

      ... Value types, these are structs that are not wrapped in an object
      yeah these can get "fun" with auto boxing and properties

      ... Platform-invoke allows developers to call native code without having to write any glue in C++ using JNI, it can all be done in the managed language.
      no support on the phone for this

      ... Unsafe code (pointers) to support C++, Cobol and Fortran compilers running on the CLI
      not on the phone eaither

      .. Native support for talking to COM-based APIs. Although mostly Windows-specific, its used to talk to Mozilla, VirtualBox and OpenOffice APIs in Linux.
      not on the phone

      ... Covariance and contravariance introduced with .NET 4 make even more generic cases a pleasure to use.
      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.

    14. Re:Getting screwed in both directions by Bill_the_Engineer · · Score: 4, Interesting

      Technically you are correct.

      Except for the white elephant in the room which are these patents that Oracle owns and have tested in court already when a 2003 court settlement with Microsoft created a 10 year cross licensing agreement that allows Microsoft to develop CLR.

      I'm not advocating Oracle's position, and I'm against most software patents.

      I was asking how a lawsuit that doesn't affect any of the JVMs in existence, or any Java or other JVM implemented languages that run within them, make JVM less viable? I would actually think the lawsuit could make the JVM more viable since it strengthens the power of the consortium that defines the Java standard and its related technologies.

      --
      These comments are my own and do not necessarily reflect the views or opinions of my employer or colleagues...
    15. Re:Getting screwed in both directions by bonch · · Score: 2, Informative

      - Controlled by Microsoft

    16. Re:Getting screwed in both directions by aztracker1 · · Score: 1, Interesting

      Thank you for this, PInvoke is probably my biggest reason in prefering .Net (mainly C#) over Java. I like C# a lot, but already had my rant when they dropped support for Dynamic JScript over a year ago. I am sad to see DLR not as broadly supported at this point, it was a really nice effort, and could have been very useful for a number of projects. I think the level of support was a little too low compared to say C# and VB.Net in the IDE though. I do think Dynamic JS would have been a more natural fit for C# coders though, since at least the syntax is similar. I don't have an issue with Ruby or Python (each have their merits) it's somewhat sad to see this happen. I do think that given the licensing for the DLR and Iron* languages that the OpenSource movement can keep it going. I've seen as much, or more support for the DLR stuff from the Mono side of the fence as it is. The dynamic stuff MS did seems to mainly center around better interaction for COM interfaces, the core focus being on MS Office interaction.

      --
      Michael J. Ryan - tracker1.info
    17. Re:Getting screwed in both directions by CasperIV · · Score: 4, Funny

      Wait? Someone likes java?

    18. Re:Getting screwed in both directions by Lunix+Nutcase · · Score: 1

      Except for the white elephant in the room which are these patents that Oracle owns and have tested in court already when a 2003 court settlement with Microsoft created a 10 year cross licensing agreement that allows Microsoft to develop CLR.

      You face no issues with patents as long as you make a fully compatible J2SE implementation. This is the reason that Google currently could face issues. They don't meet the requirements for the public patent grant.

    19. Re:Getting screwed in both directions by rantomaniac · · Score: 2, Informative

      LLVM really isn't comparable to JVM and CLR. It's a compiler toolchain for generating optimized code ahead of time. It's really slow, but it generates optimized code. It provides no object model, unified exception handling, memory management, it's really just a tool, not a platform.

    20. Re:Getting screwed in both directions by Mongoose+Disciple · · 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.

    21. Re:Getting screwed in both directions by 19thNervousBreakdown · · Score: 3, 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.

      --
      <xml><I><am><so><damn>Web 2.0</damn></so></am></I></xml>
    22. Re:Getting screwed in both directions by infamous_blah · · Score: 5, Informative

      Thank you for this, PInvoke is probably my biggest reason in prefering .Net (mainly C#) over Java.

      You can do this in Java with Java Native Access (JNA). From the JNA site:

      JNA provides Java programs easy access to native shared libraries (DLLs on Windows) without writing anything but Java code—no JNI or native code is required. This functionality is comparable to Windows' Platform/Invoke and Python's ctypes. Access is dynamic at runtime without code generation.

    23. Re:Getting screwed in both directions by Anonymous Coward · · Score: 5, Interesting

      I had to work on a large Ruby web app once. They had over 300,000 unit tests, totalling 6.5 million lines of code. That was just for their unit tests alone!

      At first I thought that was pretty amazing, but after working with the unit tests for some time, it became painfully obvious that they were just repeatedly implementing the basic checks that would be performed by the compiler for a static language.

      Perhaps 5% of the unit tests were actually testing the functionality of the software itself. The other 95% were merely ensuring that the developers hadn't made simple typos in their Ruby code, or checking that the code could handle data or objects of the wrong type, or checking that the types of variables didn't change unexpectedly, and so forth.

      I soon left because of how utterly stupid it became. For each day of development, I would spend, say, an hour developing a chunk of code, and then spend seven hours writing unit tests. Had I been using a static, compiled language, I would've spent 7.5 hours writing code, 15 minutes writing some unit tests to test the actual functionality, and 15 more minutes compiling that code periodically. Yes, I would have been over 500% more productive by using a static, compiled language instead of Ruby.

    24. Re:Getting screwed in both directions by Anonymous Coward · · Score: 0

      If you could settle for a LLVM based combined JVM bytecode and MSIL frontend, have a look at http://vmkit.llvm.org/ ...

    25. Re:Getting screwed in both directions by Bill_the_Engineer · · Score: 1

      True, and I think we reached a point in this thread where we both agree that it doesn't appear that Oracle v. Google makes JVM less viable.

      --
      These comments are my own and do not necessarily reflect the views or opinions of my employer or colleagues...
    26. Re:Getting screwed in both directions by Bill_the_Engineer · · Score: 1

      I meant to say "both can agree". I didn't mean to "put words in your mouth".

      --
      These comments are my own and do not necessarily reflect the views or opinions of my employer or colleagues...
    27. Re:Getting screwed in both directions by scot4875 · · Score: 5, Insightful

      That's pretty much a wash, as "Controlled by Sun" isn't much better.

      --Jeremy

      --
      Jesus was a liberal
    28. Re:Getting screwed in both directions by nedlohs · · Score: 1

      There is nothing that requires a static language to be compiled, and a dynamic language to be intepreted. Hence a "write/compile/run" cycle is orthogonal to dynamic vs static.

    29. Re:Getting screwed in both directions by kabloom · · Score: 1

      Suddenly, I'm not so sure one is allowed to evolve Java (e.g. develop JDK 7) under the terms of the public patent grant.

    30. Re:Getting screwed in both directions by Anonymous Coward · · Score: 0

      That would be Shark

    31. Re:Getting screwed in both directions by Sloppy · · Score: 1

      Because better is in the eye of the beholder, depending on whether the person making the judgement more values execution time or programmer's time. The "bulk of web development" is apparently done by people who just wanna get things finished and aren't stressing out over their server's load.

      --
      As copyright owner of this comment, I authorize everyone to defeat any technological measure which limits access to it.
    32. Re:Getting screwed in both directions by Anonymous Coward · · Score: 0

      but saying it apparently it sounded "insightful".

    33. Re:Getting screwed in both directions by BrentH · · Score: 1

      Can anybody explain to a layman what these platforms are and how they benefit a programmer or user? I can write a little python and execute with the py command, and write a little c and compile with gcc, so I don't quite see how 'inserting' all these plaforms provide benefits.

    34. Re:Getting screwed in both directions by Lunix+Nutcase · · Score: 1

      You probably aren't. Sun already showed with their lawsuit against Microsoft that they wanted to be the sole group able to evolve Java.

    35. Re:Getting screwed in both directions by Anonymous Coward · · Score: 0

      IronPython seems like it could work out really well actually, much better than IronRuby. It has a bit more traction at Microsoft than IronRuby, and it's also been more thoroughly embraced by the greater Python community. To the point where Python is currently on a language freeze so that the other implementations, primarily IronPython, Jython, and PyPy, can catch up to them. IronPython is even trying to get compatibility with CPython's C extensions. If they manage to pull it off, it will be a huge deal because it means you get to leverage all of Python's libraries and all of the .NET libraries.

    36. Re:Getting screwed in both directions by ratboy666 · · Score: 2, 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?

      --
      Just another "Cubible(sic) Joe" 2 17 3061
    37. Re:Getting screwed in both directions by kikito · · Score: 1, Insightful

      The blame there would be on the developer(s), not on the language.

    38. Re:Getting screwed in both directions by ADRA · · Score: 0

      Unsigned data types
      Wow, I'm sold

      Checked arithmetic (on overflow, they throw an exception)
      It would be handy, but if I really want to do high importance math in Java, I'd use a framework that was a little more robust than stock anyways.

      Support for tail calls (for Lisp, F# and other functional languages)
      Coming to Java 7, but I generally hate the whole functional programing paradigm outside of a very few use cases, so no biggie for me

      Value types, these are structs that are not wrapped in an object
      Don't see the benefit of being more procedural in an object oriented language, but good for you I suppose

      VM-level support for generics
      Not missing it. Code level generally catches 99.99999% of any generic-type problems that I've ever run into

      Platform-invoke allows developers to call native code without having to write any glue in C++ using JNI, it can all be done in the managed language.
      JNA?

      The Common Language Specification: a spec that set the rules for interoperability across programming languages (for example: the rules for public identifier casing, handling of int vs uint and so on).
      Dynamic languages on top of the JVM apparently want to work together in integrating the higher level abstractions that java itself doesn't expose, but the rules in the basic java language generally carry forward to all derivative ones

      Delegates allow user to keep a reference to a method or an instance method and invoke it. The VM also can turn any delegate invocation into an asynchronous invocation, so you can turn any method into an async method, like this: mySortFunc.BeginInvoke (array)
      Isn't this along the lines of Java reflection? java.lang.reflect? The only thing about reflection in java is that it has to be derived from a class originally. You can't just make up methods on the fly that are naked. You can use class instrumentation to build a brand new one method class and use that anonymously during runtime I suppose, but thats generally overkill. If and when I work on this sort of problem, I use java's Proxy mechanism which works pretty darn well in allowing for delegate handling of all interface methods (caveat is that it doesn't support concrete method signatures, just interface ones)

      Support for dynamic code generation through the Reflection.Emit API.
      Java has class instrumentation that does similar if not the same thing. Look into ASM if you're at all interested. Unless you have specific non-trivial use cases, this is not relevant to 99% of all developers

      A database file format allows for efficient reading of the metadata from assemblies. It does not require decompression and the database format is suitable for lazy loading.
      Is this a language or runtime feature? Although Java is almost always deployed using Jar's, the java spec doesn't mandate it. The whole classpath implementation in java is 'just the way it is', not necessarily a spec criteria. That said, I don't know the benefits, but I assume they're yummy...

      Attributes were special objects that could annotate most elements in the virtual machine, you could annotate classes, methods, parameters, local variables, and at runtime the VM or the runtime could do interesting things with it.
      Like Java annotations?

      Unsafe code (pointers) to support C++, Cobol and Fortran compilers running on the CLI.
      Good. I'd rather use nice safe code.

      Native support for talking to COM-based APIs. Although mostly Windows-specific, its used to talk to Mozilla, VirtualBox and OpenOffice APIs in Linux.
      Good. Really, dealing with COM the few times that I did, there was no love lost. If you really need or love COM in java, there are products out

      --
      Bye!
    39. Re:Getting screwed in both directions by Chris+Newton · · Score: 5, Informative

      If static languages are better, why is the bulk of web development done with dynamic languages?

      I don’t know how much of that is reality and how much is popular perception. In any case, here are some general trends in mainstream statically-typed languages and mainstream dynamically-typed languages today that might contribute to the popularity of the latter for web development:

      • The dynamic languages do not require the extra compilation steps in a build process. This probably speeds up prototyping. A lot of the web development in dynamic languages is probably done by small businesses or start-ups, and that sort of culture places a lot of emphasis on rapid prototyping.
      • The dynamic languages tend to have much easier basic text processing. Basics like string formatting and regular expression parsing are a horrendous chore in languages like C++, Java and C#, relative to the trivial one-liners widely available in “scripting” languages.
      • The dynamic languages also tend to have built-in support for structured data like nested hashes and arrays, where again you need to jump through hoops in typical mainstream static languages today. That kind of structured data is widely useful for defining easy interchange formats between browser-side code and server-side code. For example, on a current project, we have standardised JSON data that is accessed using several different programming languages in different contexts. In JavaScript or Python, it’s a breeze. In Java, it’s a chore.
      • Integrations of popular dynamic languages with popular web servers are widely available and easy to set up. Setting up a Java-based web application is the sort of thing people write whole books about, dropping the names of half a dozen different technologies along the way.
      • Likewise, integrations of popular dynamic languages with popular database systems are widely available and easy to use.
      • A lot of web development projects are, rightly or wrongly, not treated as critical software systems where bugs are unacceptable. Encountering an error at run-time and dumping the visitor to some sort of error page is often considered an acceptable response, and people seem to expect and tolerate this behaviour without quite the same level of loathing they reserve for “Your application has crashed” dialogs or blue screens of death.
      • Perhaps most important of all, most web development software is small. More formal systems with static typing and well-specified interfaces probably have a better cost/benefit ratio on larger systems where it is harder for developers to see the big picture and more difficult to co-ordinate people working on different parts of a system without such tools.

      I think these are more reflections of the languages in current use and their surrounding cultures, rather than inherent traits of static vs. dynamic typing, but if we’re talking about the state of the industry today, there doesn’t seem to be any practical distinction.

    40. Re:Getting screwed in both directions by msclrhd · · Score: 1

      The obfuscated C compiler by Fabrice Bellard -- which became the tiny C compiler -- supports scripting C as well as compiling the C code.

    41. Re:Getting screwed in both directions by beelsebob · · Score: 1

      By definition, you're wrong, a dynamic language is a language that is processed dynamically – i.e. at runtime. A static language is a language which is processed statically – i.e. at compile time.

      You may be getting confused with (for example) a dynamically typed language, which moves only the type system to runtime.

    42. Re:Getting screwed in both directions by psbrogna · · Score: 1

      So, and I'm just spit-ballin', strong typing is the major benefit? There are a fair number of dynamic languages that support strong type checking - maybe that's the appropriate direction for web dev. I certainly enjoy RAD IDEs and would hate to give that up. Maybe I'll dust off an old APL or Erlang reference this weekend... I've a friend that did web dev in Smalltalk 10 years ago - maybe there was a method to the madness I thought it was at the time.

    43. Re:Getting screwed in both directions by Anonymous Coward · · Score: 4, Informative

      >Checked arithmetic (on overflow, they throw an exception)
      Eh. This isn't always what you want.

      >Support for tail calls (for Lisp, F# and other functional languages)
      IBM's compiler does do tail call optimization (for self calling)

      >Value types, these are structs that are not wrapped in an object
      Again, not that useful. Esp, since hotspot can compile objects down to stack-based if it wants

      >Platform-invoke allows developers to call native code without having to write any glue in C++ using JNI, it can all be done in the managed language.
      J/Invoke, JNA both do this

      >The Common Language Specification: a spec that set the rules for interoperability across programming languages (for example: the rules for public identifier casing, handling of int vs uint and so on).
      Do int's in scala work differently than ints in java?

      >Delegates allow user to keep a reference to a method or an instance method and invoke it. The VM also can turn any delegate invocation into an asynchronous invocation, so you can turn any method into an async method, like this: mySortFunc.BeginInvoke (array)
      java.lang.ref.Method.invoke and java.util.Runnable(and friends)

      >Support for dynamic code generation through the Reflection.Emit API.
      javax.tools.JavaCompiler

      >A database file format allows for efficient reading of the metadata from assemblies. It does not require decompression and the database format is suitable for lazy loading.
      Jar files do not have to be zipped

      >Attributes were special objects that could annotate most elements in the virtual machine, you could annotate classes, methods, parameters, local variables, and at runtime the VM or the runtime could do interesting things with it.
      java.lang.annotation.Annotation

      >Unsafe code (pointers) to support C++, Cobol and Fortran compilers running on the CLI.
      A bad idea. If you must use pointers, use an opaque interface like sun.misc.Unsafe (stores pointers as a long)

      >Native support for talking to COM-based APIs. Although mostly Windows-specific, its used to talk to Mozilla, VirtualBox and OpenOffice APIs in Linux.
      Win32 Specific. Apache jakarta has an implementation anyway

      >Covariance and contravariance introduced with .NET 4 make even more generic cases a pleasure to use.
      Java has covariant return types. Not sure why you'd want non-explicit contravariance or covariant parameters.

      >64-bit arrays (although part of the spec, only Mono implements this).
      Eh. If it's really a problem, use JNI/JNA or a DB

      Stuff that java does that .net doesn't
        - Work well on non Windows OS's.
        - Work on non-x86
        - GPL'ed reference implementation

    44. Re:Getting screwed in both directions by Anonymous Coward · · Score: 0

      ignorance + fanboyism = win!

    45. Re:Getting screwed in both directions by mldi · · Score: 4, Insightful

      That's "Controlled by Oracle", which is far worse than "Controlled by Sun", at least for viability.

      --
      If you aren't suspicious of your government's actions, you aren't doing your job as a responsible citizen.
    46. Re:Getting screwed in both directions by Mongoose+Disciple · · Score: 1

      That's pretty much a wash, as "Controlled by Sun" isn't much better.

      I don't know -- I think "Controlled by Sun" was in some ways better than "Controlled by Microsoft"; however, "Controlled by Oracle after Oracle buys Sun" is much, much worse than either.

    47. Re:Getting screwed in both directions by Gr8Apes · · Score: 2, Informative

      • VM-level support for generics

      Hmm, yep, except there is no run time checking for type safety. You can merrily pass any (pointer referenced) object through any number of function calls and not throw any exceptions. All that's required is a little reflection.

      • Unsafe code (pointers) to support C++, Cobol and Fortran compilers running on the CLI.

      And this is the reason there is no type safety - because in the VM, LCD forces this upon you.

      • 64-bit arrays (although part of the spec, only Mono implements this).

      And there are features in the spec that MS doesn't support after 4 major versions? Say it isn't so!

      Then there are .NET collections which are .... basic at best. The concurrency toolset - much better alternatives in JDK5 onward. Dynamic code generation is also available (BCEL).

      And then there's the documentation. I never thought I'd actually think highly of Javadocs, but a nice 9 month stint through MS's documentation made me pine for the relatively concise and accurate Javadocs.

      --
      The cesspool just got a check and balance.
    48. Re:Getting screwed in both directions by Will.Woodhull · · Score: 1

      If static languages are better, why is the bulk of web development done with dynamic languages?

      I'm aware of two critically important reasons that most developers of proprietary software will not mention:

      1. With static languages you can deliver just a binary and limit distribution of the source to only persons who sign a non-disclosure agreement. This is important for profit. Among other things, it enables you to trim development costs by relying on security through obscurity.
      2. With web development, you have to write code to an open standard so that it will run on a wide range of different platforms. That basically means distributing the source code (scripts). That is good for improving the quality of FOSS, but really limits the profitability of your products.

      Perl and its descendants (PHP, Ruby, Python, et al) are great for community development projects and are the reason why Microsoft and other traditional software houses are getting beaten up so badly in the markets. There is less and less room for business plans based on the "I know something you can't know" model that was so successful 20 years ago.

      --
      Will
    49. Re:Getting screwed in both directions by Joce640k · · Score: 1

      Because most web languages were designed for people who think HTML is 'coding'

      Seriously though...because dynamic languages are quite well suited to programs which run for a millisend or so then terminate, and no real need for complex data storage/manipulation.

      --
      No sig today...
    50. Re:Getting screwed in both directions by Anonymous Coward · · Score: 0

      It all depends on what figures you pull out from your butt. After all, writing unit tests in your static compiled language for your static compiled program might actually take more than 15 minutes.

      And if you want to have extensive regression tests, then you need to write lots of tests. And I don't see how static languages would automatically mean less work in this scenario.

    51. Re:Getting screwed in both directions by wumpus188 · · Score: 1

      You were doing it wrong.

    52. Re:Getting screwed in both directions by Anonymous Coward · · Score: 0

      Use Scala if you want the features.

    53. Re:Getting screwed in both directions by Anonymous Coward · · Score: 0

      Given enough time, Google, Oracle, and Microsoft will screw the developers. This is just a logical conclusion from the need of corporations to change products in order to keep generating revenue. Their interests are just not aligned with the long term interests of the developer community. The sooner people realizes this and move to truly open platforms, the better it will turn out for them.

    54. Re:Getting screwed in both directions by FrangoAssado · · Score: 2, 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.

    55. Re:Getting screwed in both directions by strokerace · · Score: 1

      I don't really know much about .NET, but I can comment on the Java side.

      While Java the platform has been slow to adopt features, it does have quite a thriving open source community that gives it a lot of additional functionality (for free as in beer I might add).

      In fact some projects have sprouted up because of failed Java initiatives. Things like Hibernate came about because Java messed up Entity Beans so badly there wasn't a good way to do database access for example.

      Java still has a lot of deficiencies on the front end, however. Things like JSP/JSF Struts/SpringMVC made it better than it was 10 years ago, but they still are a pain in the ass to use. I'm starting to get involved in Adobe's Flex development talking to a Java backend so I'm excited to see if that can mitigate some of Java's front end problems.

    56. Re:Getting screwed in both directions by Touvan · · Score: 2, Interesting

      That's why I once held hope for Adobe's Actionscript 3.0 - it promised static (I read lower level) language support with the richness of ECMAScript (JavaScript) - but they seem to have implemented their static class system on top of ECMAScript underpinnings, without addressing the shortcomings of their dynamic runtime (it's still crazy hard to debug dynamic code written in AS3, and it's slow). So we ended up with all the bondage and discipline of a static language, without any of the performance benefit. I guess that's par for the course for Adobe.

      Anyway, I'd still love to see a language like that - one that provides all the lower level, bare metal features of a language like C, with the higher level runtime sweetness of JavaScript (one for performance critical libraries, the other for tying it together).

    57. Re:Getting screwed in both directions by gutnor · · Score: 2, Insightful
      No no no.

      .Net is IE and Java is Netscape. At some point, IE was better than Netscape and kept improving until Netscape died. Only after that it was abandoned.
      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.

    58. Re:Getting screwed in both directions by Korin43 · · Score: 1

      If static languages are better, why is the bulk of web development done with dynamic languages?

      Static languages tend to produce languages that run faster and use less memory at the expense of taking longer to write. Whether that's better depends on the situation. The reason I use dynamic languages with web development is that the execution speed generally doesn't matter at all.

      For example, I made a website using PHP and MySQL when I first started programming, and a couple years later I decided to benchmark it because it was pretty horrible and I figured I could find some places to make it faster. I quickly gave up after realizing that 99% of the execution time was waiting for responses from MySQL. Sure, I could probably cut out 0.9% by switching from PHP to C++, but why bother?

    59. Re:Getting screwed in both directions by ultranova · · Score: 2, Informative

      Value types, these are structs that are not wrapped in an object

      Is that a strange name for a tuple?

      Support for dynamic code generation through the Reflection.Emit API.

      Technically speaking, you can create new Java classes at runtime by defining them in a byte array, there's just no API for creating those byte arrays from a parse tree.

      --

      Forget magic. Any technology distinguishable from divine power is insufficiently advanced.

    60. Re:Getting screwed in both directions by Anonymous Coward · · Score: 0

      You make some good points (though I still prefer Java to .NET and C#, which to me is littered with rubbish features (+= to add a callback, yeah right)). Just thought I'd point out to you (pun intended) that both Java and C# use pointers. The difference between them and C-style pointers is that pointer arithmetic is not allowed, and you may not set them to an arbitrary value. But they are still pointers, they point to objects/arrays and you can still set them to NULL and cause an exception when you dereference them.

    61. Re:Getting screwed in both directions by larry+bagina · · Score: 1

      The baremetal features of C with high level sweetness? It's called Objective C.

      --
      Do you even lift?

      These aren't the 'roids you're looking for.

    62. Re:Getting screwed in both directions by cowdung · · Score: 4, Informative

      Java is better than .Net in the following ways:

      - Good timezone support (.Net is a mess)
      - JDBC is a solid database library (unlike Ado.net)
      - java.util.concurrent
      - simpler, stabler language without a lot of needless features
      - checked exceptions (better type checking)
      - more libraries (from Sun, from apache, from jboss, spring, etc..)
      - more options
      - more mature
      - platform independent
      - defacto language standard
      - G1 garbage collector and a bunch of other fancy GC options
      - Camel case is not broken in Java
      - Javadoc format much more readable that .Nets
      - pointer compression in 64bit
      - escape analysis and automatic allocation to the stack
      - several open source implementations and several commercial versions
      - integrates well with several high quality application servers (standardized app servers)

      See.. I can play too.

    63. Re:Getting screwed in both directions by heson · · Score: 1

      I have a saying at work: Corporations are so afraid of doing wrong they are unable to do anything at all. I do however understand those who put the rules in order, languages with duck typing is for mashing out prototypes quick and easy so that the real product can be made in a strong typing language, its never right the first time anyway.

    64. Re:Getting screwed in both directions by Touvan · · Score: 1

      Does that do object literals (json), closures, and dynamic (untyped) variables (sometimes those are nice to have). I know on the desktop there is a garbage collector, but that's not available on the iPhone (not necessarily bad).

    65. Re:Getting screwed in both directions by Mongoose+Disciple · · Score: 1

      While Java the platform has been slow to adopt features, it does have quite a thriving open source community that gives it a lot of additional functionality (for free as in beer I might add).

      Yeah, that's absolutely true. (My professional work is about evenly split between Java and .NET development.)

      I'd throw out a few things:

      1) Some things, to be done right, kind of need to be baked right into the language. Java's slow uptake and then somewhat odd implementation of generics is, I think, a good example of that.

      2) The community around Java is kind of a mixed blessing: you'll get half a dozen solutions to a problem, each of which has different strengths and limitations. The good part of that is that if you pick the right one for the task at hand, you've got a great tool for the job. The bad part is sometimes it's hard to know which is the right one, especially at the start of a project. Sometimes you get painfully far in and figure out that your choice has a limitation you didn't know about that, for your project, matters in a big way. Sometimes even the best case has terrible documentation, and sometimes the combination of pieces you're using produces a problem that none of the pieces have individually.

      To be a good Java architect requires that you be a lot more aware of what your options for each piece of your architecture are; if you make your choices right, you probably have as good or better setup than .NET for the same project -- but it's easy to make those choices wrong, and it's especially easy for anyone who has worked on the project before you to have made those choices wrong. I shudder to think of how many Java projects I worked on where some yahoo had decided that (for example) Struts was crap so he was going to roll his own Struts replacement, which managed to fix the one beef he had with Struts while simultaneously creating a hundred new problems.

      Although I can also freely admit the shortcomings of the Microsoft approach where, in most cases, you've got one standard way to solve a problem (at least, until the next standard way to solve that problem is rolled out), it's also saved me a lot of frustration on projects where it's limited the hell that other people's bad decisions could create for me down the road.

    66. Re:Getting screwed in both directions by Lennie · · Score: 1

      I'm sorry, but I've seen to many Java systems that needed a large server where just a few php-files and a bytecode cache on a small server would have done it with less server load, would be able to handle more users, would be easier to setup and a lot less code to manage.

      It maybe be because of those so called professional programmers and the way they program their applications.

      Then again, they don't know how to program in PHP either.

      I think each language/tool has it's place and the programmers working on the project need to know and understand the language/tools they are using.

      --
      New things are always on the horizon
    67. Re:Getting screwed in both directions by Lennie · · Score: 1

      This is exactly why Facebook optimized PHP (with hiphop: http://wiki.github.com/facebook/hiphop-php/) last.

      It really was the least import part when optmizing.

      --
      New things are always on the horizon
    68. Re:Getting screwed in both directions by Unequivocal · · Score: 1

      Static languages are better than dynamic languages? Are you trolling? I'd suggest that such general statement with no qualifications is not helpful. Better for what?

    69. Re:Getting screwed in both directions by Unequivocal · · Score: 1

      I totally agree with where you're coming from on the MS way vs the OSS way (my experience in the Ruby community is very similar to the situation you describe for Java).

      However, I have been bitten in the ass by MS on numerous occasions too and had no way to fix the issue b/c the library was closed. Even debugging was a royal PITA b/c I could trace into the lib. So there are downsides to the MS way too. I'd argue that both have merits but both have their unique forehead smacking downsides too. :)

    70. Re:Getting screwed in both directions by Unequivocal · · Score: 2, 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.

    71. Re:Getting screwed in both directions by SplashMyBandit · · Score: 2, Informative

      You forgot to mention: .... and Android, and anywhere with a C compiler (so GCJ runs).

    72. Re:Getting screwed in both directions by strokerace · · Score: 1

      Those are definitely good points, but just to add.

      1) I agree with the generics comment and wonder what value they really have outside of having typed collections. I struggle to find a decent use of them and often see them used where the implementation limits future maintenance. I know in C++ templateing was a huge? feature, which generics seem similar to. I don't do any of C++ work so maybe I'm just missing the point but I struggle to see much value in it. At least in the work that I do.

      2) While it's true that there are a lot of options, most of the key ones are pretty much standard now a days. Things like Log4J, Spring, and Hibernate are staples.

      In fact if your project uses Spring you can pretty much swap out key technologies with little effort if they end up being deficient or get obsoleted in the future. If the project you had to maintain with the Struts cowboy didn't use it, well I guess you're pretty much fucked there.

      I'm sure people have written competing MS technologies for similar reasons as that Struts hating guy. In our industry you can't pan a whole technology stack because some retards fuck up an implementation.

    73. Re:Getting screwed in both directions by SplashMyBandit · · Score: 1

      Plus Java has BeanShell and Rhino.

    74. Re:Getting screwed in both directions by ultranova · · Score: 1

      You were doing it wrong.

      Okay, so how does one do it right? Because I remember having the same problem in Python, and suspect it haunts all the dynamic languages - after all, the type is still there, even if the language pretends otherwise.

      What I've never understood is why "duct typed" languages can't be static - if an object assigned to a given variable must support some operation, why isn't it possible to express this in code and have the compiler check it?

      --

      Forget magic. Any technology distinguishable from divine power is insufficiently advanced.

    75. Re:Getting screwed in both directions by lgw · · Score: 3, Interesting

      Value types, these are structs that are not wrapped in an object

      Is that a strange name for a tuple?

      Are Java tuples passed by value (I haven't seen them)? Certianly, "tuple" is an odd name for a struct! Of course, it's far odder that C++0x is adding "tuples", which seem indistinguishable from structs. Is there some buzzword compliance thing here?

      --
      Socialism: a lie told by totalitarians and believed by fools.
    76. Re:Getting screwed in both directions by lgw · · Score: 2, Interesting

      Okay, so how does one do it right? Because I remember having the same problem in Python, and suspect it haunts all the dynamic languages - after all, the type is still there, even if the language pretends otherwise

      In Python I prefer to put all the type checking in the function itself, not the unit testing. It's much more self-documenting that way. But I won't claim that's the one true way, not enough experience with Python.

      What I've never understood is why "duct typed" languages can't be static - if an object assigned to a given variable must support some operation, why isn't it possible to express this in code and have the compiler check it?

      C++0x is trying to do this with the new use of the "auto" keyword. I like the concept: you can tell the compiler to deduce the type on any variable you're initializing with the result of a function call. I can't wait to see how that works in actual production code.

      --
      Socialism: a lie told by totalitarians and believed by fools.
    77. Re:Getting screwed in both directions by Anonymous Coward · · Score: 0

      How was this modded interesting? It's an obvious lie.

    78. Re:Getting screwed in both directions by Anonymous Coward · · 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.

    79. Re:Getting screwed in both directions by Mongoose+Disciple · · Score: 1

      1) I agree with the generics comment and wonder what value they really have outside of having typed collections. I struggle to find a decent use of them and often see them used where the implementation limits future maintenance. I know in C++ templateing was a huge? feature, which generics seem similar to. I don't do any of C++ work so maybe I'm just missing the point but I struggle to see much value in it. At least in the work that I do.

      The simplicity of on-demand typed collections is, in practical purposes, most of it.

      I think about the Java projects I worked on in the pre-generics days, and developers had settled on one of two approaches:

      1) By default, go ahead and create a strongly-typed collection class for every single class, regardless of whether or not you're ever going to use it. Sure, you can code-generate those, and mostly they did. But now you've basically doubled your number of classes for no good reason.

      2) Use the Java collections/arrays (and if I'm mangling the names here, I apologize, but I'm going back some years) of objects; when you need to do something with the collection, get your iterator and cast each object back to the appropriate type. From an OO perspective, passing around arrays of objects and the recieving methods needing to know to cast them back to the right kind of object never felt good to me, and I saw mistakes made because of it more than once.

      The nice thing about having generics is that if you need a List of foo, you just can make a List of foo without needing to create a separate object for it. If you instead need a dictionary or a sorted list or whatever other type of basic collection full of foos, that's available on demand as well. You can pass these strongly typed collections around to methods and iterate through them without having to cast them back. Because there's no good reason to create a ton of fooCollection classes, if you DO see one in the class heirarchy, it's usually a strong indicator that there's special business logic involved, which was easy to miss in the forest of typed collection objects in scenario 1 above.

      All in all I think the presence of generics makes code a lot more readable and can save you time writing it. It's nothing you couldn't work around, but once you haven't had to you wonder how you ever did.


      In fact if your project uses Spring you can pretty much swap out key technologies with little effort if they end up being deficient or get obsoleted in the future. If the project you had to maintain with the Struts cowboy didn't use it, well I guess you're pretty much fucked there.

      Yeah, I'd say it's only in the last year or two that existing projects that I've rolled onto had a reasonable chance of having used Spring. The worst architected projects never did.

      The .NET version of Spring isn't bad, but definitely Spring is a lot more standard in the Java world -- it feels like for a project made today, using Spring is the default.


      I'm sure people have written competing MS technologies for similar reasons as that Struts hating guy.

      They definitely do, but I think it's fair to say it's a lot rarer -- and someone who picks one for a project knows they're coloring outside the lines, so to speak. In most cases, if there's value in it, MS jumps on it pretty quickly, if less quickly than the Open Source world manages. For example you had people creating Monorail at one point, which was sort of a .NET answer to Ruby on Rails, and there's not a lot good I can say about Monorail. MS's version of the same idea is much better.

      In our industry you can't pan a whole technology stack because some retards fuck up an implementation.

      Honestly, for a several year period, every Java project I rolled onto was a fucked up implementation, and when making the wrong architectural choices is the standard behavior instead of the exception I think that does say something. But, in most areas the Java community is in that place anymore, either.

    80. Re:Getting screwed in both directions by Palshife · · Score: 1

      C++0x is trying to do this with the new use of the "auto" keyword. I like the concept: you can tell the compiler to deduce the type on any variable you're initializing with the result of a function call. I can't wait to see how that works in actual production code.

      Try var in C#. While not as far reaching as auto in C++0x, it's extremely useful. In my experience, it works great.

      --
      Attention deficit disorder is a complicated issue, spanning several major... HEY LET'S GO RIDE BIKES!
    81. Re:Getting screwed in both directions by xiong.chiamiov · · Score: 1

      Wait? Someone likes java?

      You shouldn't confuse Java the language with Java the platform.

    82. Re:Getting screwed in both directions by xiong.chiamiov · · Score: 1

      That just an improper use of unit tests, then. Functionality tests should catch any silly typo mistakes (that your editor doesn't).

    83. Re:Getting screwed in both directions by Anonymous Coward · · Score: 0

      What are you doing ADRA? Seriously, what's going through your mind?

    84. Re:Getting screwed in both directions by xiong.chiamiov · · Score: 1

      For example, on a current project, we have standardised JSON data that is accessed using several different programming languages in different contexts. In JavaScript or Python, it’s a breeze. In Java, it’s a chore.

      Of course, if you're using Java, it's likely you'll also use XML, to make your application more "enterprisey".

      While dynamic-typing weenies like myself see no need for schema validations, many classmates of mine seem to think it's a much better idea than receiving a data structure that may or may not be what you want. It's a difference in philosophy.

    85. Re:Getting screwed in both directions by David+Greene · · Score: 1

      I struggle to find a decent use of them and often see them used where the implementation limits future maintenance. I know in C++ templateing was a huge? feature, which generics seem similar to. I don't do any of C++ work so maybe I'm just missing the point but I struggle to see much value in it.

      I don't do any Java work but code C++ every day. Generics are hugely useful if done right. All I ever hear about Java is that generics are for containers. That's actually a very restrictive model. In C++ generics applies to everything. It gives you duck typing with static type checking. It gives you a compile-time functional programming model with pattern matching.

      It gives you static polymorphism with very loose ("textual" is how I would describe it) binding, which means I can write a function that operates on any combination of types and it will work as long as those types implement the textual interfaces that function requires (+, *, print(), and so on). Those types need not have any relationship to each other at all, which means inheritance is much less important than it used to be. This in turn makes code even more reusable.

      Aside from the error message issues with C++ templates (and that's a big issue, no question), they are an excellent way to write code that is both reusable and high-performance.

      --

    86. Re:Getting screwed in both directions by larry+bagina · · Score: 1

      json - no, but there are third-party JSON serialization/deserialization classes. There are also native property lists (NeXT style, xml, or compressed), which are supported by most of the foundation classes (NSData, NSDate, NSArray, NSDictionary, NSString, NSNumber). eg: myDict = [NSDictionary dictionaryWithContenstOfURL: @"http://...."];

      closures: Yes, via blocks. requires OS X 10.6 or iOS 4.

      untyped variables -- C data types are still C data types, but there is an id type which means any objective c object (instance or class). At runtime, you can check if it responds to a message, check what class type it is, etc.

      garbage collection -- iOS doesn't have it, but I'm generally happy with the NSAutoreleasePool mechanism.

      --
      Do you even lift?

      These aren't the 'roids you're looking for.

    87. Re:Getting screwed in both directions by nurb432 · · Score: 1

      Google does.

      But isn't most of their proprietary stuff written in Python? Why not just extend to android as its main applet language?

      --
      ---- Booth was a patriot ----
    88. Re:Getting screwed in both directions by Anonymous Coward · · Score: 0

      string formatting/regexes are about the same in java as they are in python. c++ also has good regex libs. only perl and ruby are better in that they have them built into the language

    89. Re:Getting screwed in both directions by spongman · · Score: 1


      Value types, these are structs that are not wrapped in an object
      Don't see the benefit of being more procedural in an object oriented language, but good for you I suppose

      VM-level support for generics
      Not missing it. Code level generally catches 99.99999% of any generic-type problems that I've ever run into

      these two alone are IMO the biggest differences between the two:
      - .NET's collections are (mostly) orthogonal with respect to arrays, builtin & reference types (Array<T> implements IList<T>, for all T)
      - Java's are not, resulting in the whole int/Integer mess, Arrays.toList() and other crap.

    90. Re:Getting screwed in both directions by modmans2ndcoming · · Score: 1, Interesting

      too bad all the Java application servers blow on anything but Unix... so in reality... with Java you get Unix OSs.

    91. Re:Getting screwed in both directions by spongman · · Score: 1

      if you're not communicating type information via a language's type system, then you're communicating it via some other means: documentation, convention, comments, etc... if you have a small amount of code and few developers then this communication is reasonably easy. but it doesn't scale to large teams or large codebases.

      regardless of what mechanism you're using, you still require some means of verifying that your types line up. there's a tool for automating this process - it's called a compiler.

      get one.

    92. Re:Getting screwed in both directions by Anonymous Coward · · Score: 0

      How so? The language doesn't provide the necessary guarantees.

    93. Re:Getting screwed in both directions by Korin43 · · Score: 1

      Facebook is a special case for websites for two reasons: - They're so big that the last 1% is still hundreds of thousands of dollars worth of servers (at least) - They do all kinds of magic with caching and their fancy database (http://cassandra.apache.org/) so the actual script execution time is probably a higher percentage. Most websites are small and use a relational database, so this kind of optimization wouldn't be worthwhile at any point.

    94. Re:Getting screwed in both directions by h4rr4r · · Score: 0, Offtopic

      How is this a problem?
      Use an grown up OS for servers, kiddo.

    95. Re:Getting screwed in both directions by Anonymous Coward · · Score: 0

      Its just the lead dev is a lazy bum and they tried hard to get him to do some work.

      When he figured he has to do more than assign a few tasks a day he left and made a big fuss about it.

    96. Re:Getting screwed in both directions by Touvan · · Score: 1

      I have to say, out of all the alternative languages (to the web languages I'm used to JavaScript/ActionScript/PHP) I've been most interested in learning that one. All I need is a Mac! :-/

      I think I'll look for a good Snow Leopard hacintosh guide.

    97. Re:Getting screwed in both directions by Anonymous Coward · · Score: 0

      LLVM is not a replacement for JVM and CLR yet it could be used as a base for such high-level VM's. There is LLVM-based JIT compiler called Shark in OpenJDK.

    98. Re:Getting screwed in both directions by Draek · · Score: 1

      Mod me down if you must, but in my opinion if you're doing any sort of really complex web app you're already Doing It Wrong(tm), regardless of the language you use for it.

      I understand the appeal of thin clients and all, but there's a point where it becomes a mere fetish.

      --
      No problem is insoluble in all conceivable circumstances.
    99. Re:Getting screwed in both directions by Anonymous Coward · · Score: 0

      .NET is not actually very different from Java.
      Java have more elegant design while .NET have more unnecessary entities to create false impression of having more features.

    100. Re:Getting screwed in both directions by Anonymous Coward · · Score: 0

      If you don't mind the functional paradigm, check out OCaml sometime. Type inference is a core part of the language, way beyond the new C++ auto keyword. If you're mostly comfortable with MS tools, try F# in Visual Studio - it was strongly influenced by OCaml.

      - T

    101. Re:Getting screwed in both directions by shutdown+-p+now · · Score: 1

      yeah these can get "fun" with auto boxing and properties

      Java has auto-boxing for its primitives, too.

      What's the problem with it? So long as you remember that value types don't have any inherent object identity, by definition, you shouldn't run into any problems.

    102. Re:Getting screwed in both directions by Anonymous Coward · · Score: 0

      But then you still need to write unit tests to test the type checking that you've written into all of your functions.

    103. Re:Getting screwed in both directions by shutdown+-p+now · · Score: 1

      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.

      You don't actually need pointers for "overlapped" data. You need something more akin to C-style unions, and .NET type system has it - it allows you to declare classes and structs as having explicit layout, where you explicitly specify the offset of every field from the beginning of the object. This allows you to be even more creative than in C, as you can easily overlap fields partially etc.

      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.

      Don't forget that we're talking about CIL here, not native assembly. A native compiler would just emit an unconditional jump instead of the call instruction, true. But you can't jump to a function in IL (well actually you can, but it's a non-verifiable instruction). So, for tail call to itself, the compiler can simply emit a jump to the start of the function; but for a tail call to another function (consider a pair of mutually recursive functions, for example), it cannot do that. It actually needs a tailcall instruction on VM level. And .NET has just that - and it's verifiable (which is why you can't use it with byref parameters, for example). At runtime, it will, of course, will be translated to a plain jump to the target function body.

    104. Re:Getting screwed in both directions by larry+bagina · · Score: 1

      There's also gnustep. I won't comment on the gui side of things, but their foundation kit is solid. I'm not sure if they support blocks yet. Another option (particularly for windows) is cocotron, although that is designed for cross-compiling from x-code on a mac.

      --
      Do you even lift?

      These aren't the 'roids you're looking for.

    105. Re:Getting screwed in both directions by shutdown+-p+now · · Score: 3, Informative

      Eh. This isn't always what you want.

      That's why you get a choice:

      int x = int.Max;
      int y = unchecked(x + 1); // int.Min
      int z = checked(x + 1); // OverflowException

      The default is unchecked for C# and checked for VB.

      IBM's compiler does do tail call optimization (for self calling)

      It's trivial for safe calling. CLR has a special instruction to permit cross-method tail calls (it even handles function pointers), which is crucial for getting languages such as ML or Scheme to work right.

      Again, not that useful. Esp, since hotspot can compile objects down to stack-based if it wants

      Practice shows that global escape analysis is nowhere near as good as programmer's knowledge about how things should be. Yes, HotSpot can theoretically optimize those things away completely, but in practice it often cannot do even trivial stuff, such as avoiding boxing overhead in many common scenarios.

      J/Invoke, JNA both do this

      Yeah, and it's a mess due to Java's poor type system. .NET can directly map to anything that can be described in C - it has structs with explicit layout control (this covers custom alignment and unions), unsigned integral types, portable pointer-sized integral types (IntPtr & UIntPtr), raw data pointers, and function pointers. With J/Invoke, you have to jump through various hoops to tell it how to map your data structures.

      Do int's in scala work differently than ints in java?

      The real question is - do classes work differently? Can you take any Scala class and reuse it in Java?

      mySortFunc.BeginInvoke (array)

      CLR delegates are actually more like magically created (by the runtime) instances of anonymous inner classes implementing callback interfaces. Their advantage is that they're implemented very efficiently by the runtime (effectively just a function pointer + a captured "this" pointer).

      javax.tools.JavaCompiler

      That's not the same thing. Reflection.Emit lets one emit bytecode (CIL) into a byte array - optionally with a higher-level helper API - and then have it compiled into a method, and have a delegate to it returned. JavaCompiler would be more akin to CodeDOM, but they are heavyweight solutions. Reflection.Emit is used for stuff where speed is of importance. For example, .NET regex engine can compile regexes to bytecode (which is then JIT-compiled to native code, same as any other bytecode) for greater efficiency.

      That said, you can still generate Java classes on the fly in memory as well, so it's a draw here.

      java.lang.annotation.Annotation

      CLR allows annotations to be placed on more things than Java. For example, on method return type.

      There's one other thing in CLR type system - type modifiers, modopt and modreq. Those are somewhat like annotations in that they let types be decorated with other types, with VM ignoring it, and specific compilers interpreting the decorations as they need. Unlike attributes/annotations, though, those things decorate types (and not methods/fields/classes - i.e. not declarations), in any context (including parameter & local declarations, type casts... anything). This is used by C++, for example, to encode "const" and "volatile" - something like "const int* volatile" in C++ would become "int modreq(IsConst)* modreq(IsVolatile)" in IL, where IsConst and IsVolatile are classes declared in System.Compiler.RuntimeServices namespace. Any other language that has const/volatile semantics similar to C/C++ can reuse those, and can parse the existing declarations in assemblies compiled by Visual C++.

      The VM furthermore considers two types with different modifiers to be distinct for the purposes of signature ma

    106. Re:Getting screwed in both directions by shutdown+-p+now · · Score: 1

      Hmm, yep, except there is no run time checking for type safety. You can merrily pass any (pointer referenced) object through any number of function calls and not throw any exceptions. All that's required is a little reflection.

      Are you talking about Java here? Because you cannot do it in C#. Not through reflection, not through anything else (except patching up JIT-produced code, e.g. via Profiling API). Unlike Java, CLR generics are not erased at runtime, so VM does full typechecking.

      If you claim otherwise, please go ahead and show some proof-of-concept code that demonstrates circumvention of type safety on .NET.

      And this is the reason there is no type safety - because in the VM, LCD forces this upon you.

      Type safety is still there. Unsafe pointers break memory safety. But there's no way you can implement C efficiently without unsafe pointers, which is why CLR gives you a choice to use them. Of course, if you do, your code is unverifiable (so it won't run in a sandbox - in Silverlight, for example).

      And there are features in the spec that MS doesn't support after 4 major versions? Say it isn't so!

      It's not required by the CLI spec to support arrays over 2Gb. It just provides for ways to specify array indices and query for array length as 64-bit rather than 32-bit integers. .NET implements those, but still restricts the array size to 2Gb in practice. Mono implements those, and allows arrays to be larger than 2Gb.

      Then there are .NET collections which are .... basic at best.

      What about them?

    107. Re:Getting screwed in both directions by shutdown+-p+now · · Score: 1

      Is that a strange name for a tuple?

      No, it's really just a struct, largely the same as in C. It has named fields, and the fields can be mutable. But it is copied around as a single value (unless you use byref arguments, or pointers), and it does not have any inherent identity. It's also nominal, not structural (i.e. two different struct definitions never define the same types, even if their fields match exactly).

      It is like a tuple in that is has value semantics - e.g. it has a default implementation of Equals() and GetHashCode() that does field-by-field comparison.

      Technically speaking, you can create new Java classes at runtime by defining them in a byte array, there's just no API for creating those byte arrays from a parse tree.

      There is in Java 6 (well, not from a parse tree, but rather from source code... but you can always convert a parse tree to a source code).

      Here's a question, though. In .NET, you can create full-fledged classes from in-memory bytecode just as well, but you can also create lightweight "dynamic methods", which don't belong to any class (you get a function pointer to them once they're compiled). Their advantage is that they can be garbage collected once no-one references them, which permits for generous code generation at runtime without the fear of polluting the heap. Is there anything analogous in Java? Or can it GC generated classes?

    108. Re:Getting screwed in both directions by Ilgaz · · Score: 1

      Are you being sarcastic or spreading misinformation? MS didn't really evolve Java, they wanted to do their usual "embrace, extend, extinguish" trick. Court didn't buy it, they paid $500M. End of story.

      I wonder if they would tie it to directx 10 or 11, if they managed to pull it off.

    109. Re:Getting screwed in both directions by shutdown+-p+now · · Score: 2, Informative

      JDBC is a solid database library (unlike Ado.net)

      JDBC has API that is horribly designed. One only needs to look at Statement and PreparedStatement - where one derives from the other, but they actually work very differently. Can you explain what the inherited PreparedStatement#execute(string) is supposed to do?

      java.util.concurrent

      TPL and PLINQ (and Java doesn't even have anything as high-level as the latter).

      simpler, stabler language without a lot of needless features

      That one is purely subjective. On one hand, a lot of people seem to want some features for Java that have been in C# for ages (such as properties or lambdas). On the other hand, another lot claim that e.g. generics are "needless", and I recall that before 1.5 that same lot also claimed that first-class enums are "needless"...

      checked exceptions (better type checking)
      more libraries (from Sun, from apache, from jboss, spring, etc..)

      I love how this goes together. Maybe you should go tell Spring guys about the wonders of checked exceptions...

      defacto language standard

      As opposed to an ISO standard?

      G1 garbage collector and a bunch of other fancy GC options

      Matched in .NET 4.

      Camel case is not broken in Java

      Define "broken", and provide references as to why your definition is more correct. Or else admit that it is another subjective preference on the order of "how many spaces in a tab".

      Javadoc format much more readable that .Nets

      I'll grant you that, though it requires a separate special parser. For C# and VB doc-comments, the compiler just extracts them as-is into an .xml file alongside the compiled .exe/.dll. If you use any custom XML elements, they will be extracted as well. Then you can use your own tools to process the .xml file as you see fit - and they don't need to be just document generators...

      escape analysis and automatic allocation to the stack

      Largely unneeded in .NET due to presence of value types in the type system, which are allocated inline all the time (as opposed to escape analysis, which still gets things wrong more often than not).

    110. Re:Getting screwed in both directions by shutdown+-p+now · · Score: 1

      If static languages are better, why is the bulk of web development done with dynamic languages?

      It's because the bulk of web development is done specifically in PHP, which is dynamic. However, the reason for that has little to do with the nature of PHP as a language (frankly, from PL design perspective, it's horrible no matter how you look at it), but with it being in the right place at the right time with no contenders matching its value for the buck. Remember, PHP came on top in 2000, when it was just servlets/JSP (Struts just got released), ASP (classic, ASP.NET was still 2 years away), and ColdFusion (ugly and expensive as hell).

      If you look beyond PHP, though, you'll see that the next most popular languages on the list for web development after it are Java and C#, rather than Ruby and Python.

    111. Re:Getting screwed in both directions by shutdown+-p+now · · Score: 1

      No, it's just that markets tend to segment based on various reasons (quite often not really having much to do with merits of a particular tech), and then stay that way. For example, if there are more (and cheaper!) web developers out there knowing PHP, then, for a new web project, you are more likely to pick PHP, thus sustaining the segmentation.

      The notion that web and desktop apps have vastly different requirements as far as languages go (and specifically that dynamic is better for the web) is, quite obviously, a myth. Now, whether static or dynamic is better in general is a very broad discussion topic, and tends to be a flamebait on the level of "emacs vs vi".

    112. Re:Getting screwed in both directions by Chris+Newton · · Score: 1

      string formatting/regexes are about the same in java as they are in python.

      I’m not sure I’d go quite that far. There are several subtle advantages in Python (and one or two not so subtle ones) that IMHO make working with formatted text significantly easier overall.

      For example, Java’s basic string formatting tool, String.format, and its regex patterns rely on numerical indices to identify specific placeholders and capture groups. In Python, you can use meaningful names in each case.

      Another small but often useful win for Python is having raw strings, which cut down dramatically on backslash pollution when you’re writing regex patterns.

      Finally, in perhaps the fairest example of the wider statically vs. dynamically typed language comparison, we have Java’s infamous verbosity against Python’s famous readability. Simple things like matching a regex with capture groups can require several lines of code and explicit creation of several objects in Java. In Python, you rarely need more than a single call to a function in re to get the same job done.

    113. Re:Getting screwed in both directions by mestar · · Score: 1

      Excellent point, PHP is used because it was the first on the market.

      You could always use CGI and then create dynamic web pages with anything, but that was slow, so, in a way, PHP was actually an optimization and speed improvement.

      The fact that languages that do not do static type checking are easier to create (I mean the compiler itself) also contributes to the reasons why one of those became the first popular choice.

      Once you are first, it is easy to stay first.

    114. Re:Getting screwed in both directions by Chris+Newton · · Score: 1

      For what it’s worth, I can see a very strong case for type-safe rendering and systematic parsing of this kind of structured data. However, to my knowledge, no mainstream statically-typed language is expressive enough out-of-the-box to represent the structure of a typical JSON/XML/whatever schema in a concise, readable, maintainable form to support these goals.

      Many popular statically-typed languages support all the basic arithmetic and logical operations for numeric and boolean data. Their standard libraries often include a bewildering array of additional mathematical functions as well. However, the basic text operations of rendering and parsing strings just don’t seem to get the same sort of support in most cases, perhaps because they are so much broader in scope. Likewise, manipulating structured data is often a weak point: today’s mainstream statically-typed languages tend to lack both the general flexibility you get with dynamic typing and the expressiveness and polymorphic tricks you get with algebraic data types and pattern matching in various functional programming languages.

    115. Re:Getting screwed in both directions by Kaz+Kylheku · · Score: 2, 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).

    116. Re:Getting screwed in both directions by Lennie · · Score: 1

      1. They are special, that's what I mentioned. They actually were able to skip one full round of server upgrades

      2. they don't use cassandra for production, it's mostly mysql & memcached, the use cassandra just for analyzing 'logfiles'. They use cassandra to analyze and predict what people are or will do, this is for the ad-revenue.

      3. many websites already use memcached

      --
      New things are always on the horizon
    117. Re:Getting screwed in both directions by rantomaniac · · Score: 1

      CLR delegates are actually more like magically created (by the runtime) instances of anonymous inner classes implementing callback interfaces. Their advantage is that they're implemented very efficiently by the runtime (effectively just a function pointer + a captured "this" pointer).

      That's not entirely true, CLR delegates are relatively heavyweight. I haven't actually looked at the internals, but from what I gather each delegate instance is an object that needs to be allocated. It contains a function pointer, a context pointer and a next pointer for multicast delegates. Even a simple binding of an object's method to a delegate variable involves a delegate object allocation. Creating a closure probably involves two allocations (delegate object and context object), although that could be optimized, if other constraints don't prevent it.
      Contrast with for example D where a delegate is a struct (func ptr, ctx ptr) and only escaping delegates pointing to closures need to have their context allocated on the heap.

    118. Re:Getting screwed in both directions by Anonymous Coward · · Score: 0

      Sounds like the time to write a ruby -> unittest code conversion would have been very well spent.

    119. Re:Getting screwed in both directions by rantomaniac · · Score: 1

      Not missing it. Code level generally catches 99.99999% of any generic-type problems that I've ever run into

      CLR's generics not only retain type information for better type safety, but also for better performance. In Java generics involve boxing of primitive types, CLR VMs specialize generic instantiations for value types. Ask the Scala developers how much of a performance problem that can be and why they included a primitive form of specialization in their compiler.

      Don't see the benefit of being more procedural in an object oriented language, but good for you I suppose

      Once again performance. Hotspot is a very advanced virtual machine and can optimize away some needless allocations with escape analysis. However that just exacerbates the problem of its startup performance and, more importantly, is only available on one VM implementation. Java's obliviousness to the cost of allocating new objects is also one of the reasons Java programs consume so much RAM, because the JVM needs to keep a large pool of memory for fast allocation of tons of useless objects. (Although to be fair, CLI isn't that much better in this regard, but the aforementioned features do make a difference.)

    120. Re:Getting screwed in both directions by Coryoth · · Score: 1

      And had you bothered to use a language with suitable contract annotations that can be verified by a theorem prover (I'm thinking of Java with JML, or SPARK-Ada, or HasCASL here) you could catch a whole slew more errors (including various logic errors) with a theorem prover run (no harder than a compile step) and have a large amount of the unit tests you would have to write automatically generated, not to mention having far more complete documentation of your APIs as you go. You could save yourself vast amounts of time. And yet I seem to find few static type proponents who want to do this. They always answer with the same answer that dynamic type enthusiats give the static typers: "it's too much work". Of course it's a little more work, but you make up gains later ... assuming your project is in a position to make those later gains. So perhaps, just perhaps, it depends on the project and you just happened upon some very poor usage of ruby. And perhaps you ought to spend some time learning JML or SPARK-Ada so you understand what proper static checking is and can use it in your projects to save yourself even more time.

    121. Re:Getting screwed in both directions by harlows_monkeys · · Score: 1

      Except for the white elephant in the room which are these patents that Oracle owns and have tested in court already when a 2003 court settlement with Microsoft created a 10 year cross licensing agreement that allows Microsoft to develop CLR.

      I don't believe any patents were involved in the Sun vs. Microsoft suit. Microsoft had a contact with Sun allowing Microsoft to develop Java. The suit was over whether or not they lived up to their contract obligations.

    122. Re:Getting screwed in both directions by Gr8Apes · · Score: 1

      Hmm, yep, except there is no run time checking for type safety. You can merrily pass any (pointer referenced) object through any number of function calls and not throw any exceptions. All that's required is a little reflection.

      Are you talking about Java here? Because you cannot do it in C#.

      You are incorrect. This is exactly what happens in and underneath C#, and it's because the CLR has to accommodate C/C++ which utilize unsafe pointers. In short, there can be no run time type checking.

      In Java, this will throw a ClassCastException on the first function call.

      --
      The cesspool just got a check and balance.
    123. Re:Getting screwed in both directions by Bigjeff5 · · Score: 1

      First, what ever happened to capitalization? You use other forms of punctuation like commas and ellipses and periods, why no capitals where appropriate? It makes an otherwise well written post look like something a 12 year old did (unless you actually are 12, in which case I apologize).

      Anyway:

      there's a tool for automating this process - it's called a compiler.

      You make it sound like that's the primary purpose of a compiler, which it isn't. It's not even a secondary job, it's tertiary. It just happens to be one of those features that are necessary to make a good compiler.

      --
      Security is mostly a superstition... Avoiding danger is no safer in the long run than outright exposure. - Helen Keller
    124. Re:Getting screwed in both directions by Bigjeff5 · · Score: 1

      Ultimately though, what's the difference between a functionality test and a unit test?

      For a language like Ruby you still have to write them all separately, so it makes no practical difference.

      --
      Security is mostly a superstition... Avoiding danger is no safer in the long run than outright exposure. - Helen Keller
    125. Re:Getting screwed in both directions by Bigjeff5 · · Score: 1

      While Java the platform has been slow to adopt features, it does have quite a thriving open source community that gives it a lot of additional functionality (for free as in beer I might add).

      Not really arguing with you here, just pointing out that .Net is free as in beer, too. You can download the compiler direct from MS, and even a basic IDE for coding (or any other IDE you may prefer) if you want.

      It's their IDE, Visual Studio, that costs big bucks, not .Net. The fact that most .Net developers feel the $300 (or more, if you want MSDN, which is totally worth it for Win development) price tag is worth it kinda shows just how good that IDE really is.

      --
      Security is mostly a superstition... Avoiding danger is no safer in the long run than outright exposure. - Helen Keller
    126. Re:Getting screwed in both directions by shutdown+-p+now · · Score: 1

      You are incorrect. This is exactly what happens in and underneath C#, and it's because the CLR has to accommodate C/C++ which utilize unsafe pointers. In short, there can be no run time type checking.

      You are either confused yourself, or deliberately confusing people. CLR has two types of "pointers" - managed object references, and unsafe pointers. With managed object references - which is what is used in 99% of cases, and which are directly analogous to Java object references - what you describe cannot happen, because they are fully verifiable, and that includes typechecking. As for unsafe pointers - you cannot reference a managed object (on GC heap) with an unsafe pointer! Go ahead, try it - "Object* o" won't even compile in C#, and that's because the CLR type system does not allow unmanaged pointers to managed types.

      C++ objects, when targeting CLR, are not instances of .NET classes - they're .NET structs, and unmanaged ones at that (they don't contain any fields, and are treated strictly as sequences of bytes). They don't even live on GC heap - they're allocated from unmanaged OS heap, and not tracked in any way by CLR VM. And you cannot call them from C#, or from any other language using CLR object model, because they do not conform to it.

      Once again, if you want to make your point, please show the specific code snippet that demonstrates type safety violation in C# (or even IL) that can be compiled and tested.

    127. Re:Getting screwed in both directions by icebraining · · Score: 1

      Static languages just push add a layer of tests that should be covered by the unit tests anyway, at the expense of flexibility.

    128. Re:Getting screwed in both directions by shutdown+-p+now · · Score: 1

      You're mostly correct. I was specifically comparing C# delegates to Java anonymous inner classes, though, and in that sense they are indeed much more lightweight, but they're still reference types underneath. D ones are more efficient.

      On the other hand, D delegates are weird in that they must always point to an instance member function, never to a static or a global function (even though it would be trivial to implement with the existing efficient representation). The result is that you don't have a single "universal callback" type in D, which is pretty damn inconvenient.

    129. Re:Getting screwed in both directions by oiron · · Score: 1

      The sane parts of the world would probably just ignore imaginary patents and go on with life... ;-)

    130. Re:Getting screwed in both directions by oiron · · Score: 1

      I struggle to find a decent use of them and often see them used where the implementation limits future maintenance. I know in C++ templateing was a huge? feature, which generics seem similar to. I don't do any of C++ work so maybe I'm just missing the point but I struggle to see much value in it. At least in the work that I do.

      In C++, I can write a templated function/method/class that implements the same algorithm for different types, and at compile time, yet. The biggest advantage of C++'s standard library is the header, not the container classes

    131. Re:Getting screwed in both directions by Gr8Apes · · Score: 1

      You are either confused yourself, or deliberately confusing people.

      I am neither. You however....

      CLR has two types of "pointers" - ... As for unsafe pointers - you cannot reference a managed object (on GC heap) with an unsafe pointer! Go ahead, try it - "Object* o" won't even compile in C#, and that's because the CLR type system does not allow unmanaged pointers to managed types.

      Hmm - does that sound like compiler or runtime checking to you?

      As for providing code, that would require completely fabricating new code on a completely new system for you. Seems a bit steep just to make a point that anyone that knows anything about reflection and C# has already experienced at least once.

      --
      The cesspool just got a check and balance.
    132. Re:Getting screwed in both directions by shutdown+-p+now · · Score: 1

      Hmm - does that sound like compiler or runtime checking to you?

      It's both, because C# declaration "Object* o" - if it were permitted - would be translated to IL declaration "class [mscorlib]System.Object* o". The latter will be verified by runtime when the assembly is loaded and before it is JIT-compiled to native code.

      Well, to be more specific, the type itself is legit even in verifiable code (e.g. you can declare a field of such type). But it doesn't mean "unmanaged pointer to an instance of System.Object". It means "unmanaged pointer to a managed reference to an instance of System.Object". Furthermore, any attempt to actually obtain a value of such type - i.e. applying ldloca, ldarga, ldflda or ldsflda instruction to a field or local of a reference type to get its address - will be treated as unconditionally unverifiable code by the runtime. Nor can you dereference it verifiably. About the only things you can do with it in verifiable code are: 1) assign it to null, and 2) compare vs null or another pointer.

      At the same time, I still don't understand what this all is supposed to do with generics, in any case. .NET generics aren't implemented in terms of unmanaged pointers on CLI type system level. You can, of course, use a pointer type as a generic type parameter - not in C#, but CLR itself lets you do it - in which case you will lose memory safety (but not type safety, absent explicit pointer casts). But so long as you use generics with managed types, such as plain object references, generics are perfectly type safe.

      As for providing code, that would require completely fabricating new code on a completely new system for you.

      In other words, you don't know what you're talking about. Thanks for playing.

      By the way, you make pretty bold claims considering your "9 months stint". Do you really think that's enough to learn the details of the type system on such low level that is required to properly discuss this issue, especially when the relevant bits aren't even exposed by any high-level languages on .NET (not even C++/CLI lets you declare an unmanaged pointer to System.Object)? The fact that you speak of the type system as "completely new" (to you, I presume?) is quite telling.

    133. Re:Getting screwed in both directions by mhelander · · Score: 1

      Could you type a few lines of code to show how you mean that you could break things this way in C# ?

      I'm with you as far as the type info not being there in the bytecode, but as far as I know that's because it doesn't have to be, since any potential issues would be handled earlier when the compiler would ask you to cast.

      For example:

      object foo = new WrongClass();
      IList[RightClass] list = new List[RightClass](); //using [] for generics since this is posted in a html forum...
      list.Add( foo ); // won't compile, complaining that there's no implicit (down)cast from object to RightClass
      list.Add( (RightClass) foo); // will compile, but will cause a runtime error when the attempt is made to cast foo to RightClass - NOT when trying to add foo to the list, since that point is never reached...

      Using reflection doesn't really change any of this (afaics), since casts are still required.

      Please let me know what I'm missing?
                                         

    134. Re:Getting screwed in both directions by I!heartU · · Score: 1

      Well it came up in some port code from another language so it defiantly isn't an every day occurrence.

      The problem is if you store some opaque data as say an object reference. Then make explicit cast accessors to get at the object as some value type. If you then call a mutator on the valuetype, you change a temporary version that was made for the cast instead of the underlying object.

      Regardless porting c++ to c# is rife with all sorts of nice gems. Properties have the same issue in this specific case.

    135. Re:Getting screwed in both directions by benhattman · · Score: 1

      - Javadoc format much more readable that .Nets

      Thank you. Why is Microsoft unable to produce a user friendly HTML version of their documentation. I thought they were supposed to copy the competitor to steal market share, not copy and then make the MS version much much worse.

    136. Re:Getting screwed in both directions by badkarmadayaccount · · Score: 1

      Actually, it has GC infrastructure in place, and an exception mechanism. Also, it can be used in JIT roles, though that part isn't all that mature.

      --
      I know tobacco is bad for you, so I smoke weed with crack.
    137. Re:Getting screwed in both directions by rantomaniac · · Score: 1

      I'm not intimately familiar with the GC infrastructure they have, but I bet they just provide tools for generating barriers and maybe querying the types of stack slots.
      Similarly exception handling support exists, but exception throwing code doesn't (Some LLVM clients use gcc's exception throwing code).
      Without a common object model it's hard to do either memory management or exception handling in a language-agnostic way. I don't think there's any interoperability between current LLVM-based compilers.
      Like I said, it's a tool for building code generators, not a platform in itself.

      And as far as JIT compilation goes, it's possible but it's slow.

    138. Re:Getting screwed in both directions by KingMotley · · Score: 1

      I believe you are thinking of compiled vs interpreted languages. The grandparent is correct. Dynamic languages refer to dynamically typed languages, not an interpreted one as you suggest.

    139. Re:Getting screwed in both directions by xiong.chiamiov · · Score: 1

      You misunderstood what I was saying - unit tests should be testing functionality, rather than error handling on every possible type of input, etc. My phrasing was rather misleading, so I'll take the blame for that one.

      I should also make the point that dynamically-typed languages do not necessarily allow variables to be used without declaration. `var foo` would be a perfectly acceptable statement (and is, I believe, how C# handles implicitly-typed variables), but none of the (popular) dynamically-typed languages of today have such a thing.

    140. Re:Getting screwed in both directions by fabs64 · · Score: 1

      The idea behind non-static typing is that type errors are so uncommon that having such strict checking of them is a pointless hindrance.

      The idea is *not* that you can re-implement static type-checking with your unit tests :-S

    141. Re:Getting screwed in both directions by JAlexoi · · Score: 1

      .NET is actually a lot better than Java

      Ahem... Please keep your personal opinions to yourself...

    142. Re:Getting screwed in both directions by JAlexoi · · Score: 1

      Practice shows that global escape analysis is nowhere near as good as programmer's knowledge about how things should be. Yes, HotSpot can theoretically optimize those things away completely, but in practice it often cannot do even trivial stuff, such as avoiding boxing overhead in many common scenarios.

      That is the reason it called HotSpot. It's not there to optimize the trivial cases, it's there to optimize the most used ones. And in practice JVM HotSpot does an exceptionally good job.

      Depending on what you do. Unsafe pointers are indispensable in systems programming, and in interfacing with low-level or legacy (i.e. C/C++) APIs.

      And if you're doing system programming, you wouldn't want to use a managed runtime then. And Java language and VM were designed to remove the need for those pointers. .NET has that feature, but when comparing managed vs managed runtimes having unsafe(unmanaged) pointers is a disadvantage.

      PPC (for Xbox360)

      Can we drop proprietary hardware? Because then Java just overshadows XBox360 by being in the BluRay spec.
      PS: I'm sure .NET runs on more systems than you described, just Java is actually supported and not experimental on those.


      Java and JVM have not been reviewed for a few years now. There are mostly debates what should be changed. While I agree 100% that .NET has more features, I will have to take a neutral position on witch one is more advanced. Java VM is older and has quite a few tricks up it's sleeve(including overall VM performance), .NET's VM is younger and more dynamic.

    143. Re:Getting screwed in both directions by JAlexoi · · Score: 1

      Matched in .NET 4

      Read a lot on MSDN blogs, have yet to be convinced that .NET 4 has a GC as good as G1. Java VM has the years riding behind it, plain and simple.

    144. Re:Getting screwed in both directions by JAlexoi · · Score: 1

      Integrations of popular dynamic languages with popular web servers are widely available and easy to set up. Setting up a Java-based web application is the sort of thing people write whole books about, dropping the names of half a dozen different technologies along the way.

      There are no books on how to set-up a Java web app. Because it's trivial. There are books on how to develop with RoR and there are equivalent books on how to develop with JSF.
      PS: You don't develop a Ruby based web app without any framework also. That is the curse of a general purpose programming language. See PHP as a counterexample.

      Likewise, integrations of popular dynamic languages with popular database systems are widely available and easy to use.

      Equivalent tools bring equivalent results. RoR's ActiveRecord is pretty much equivalent in practice to Java Persistence API or Hibernate.(I actually use all). The main point is the learning curve of dynamic languages.

      Otherwise, good points.

      Oh....And... Get off my lawn!

    145. Re:Getting screwed in both directions by shutdown+-p+now · · Score: 1

      And if you're doing system programming, you wouldn't want to use a managed runtime then.

      There are many system programming languages out there that have "managed runtimes" (even GC etc). This was the case even before C, much less after (think Oberon-3, D, Go...).

      And Java language and VM were designed to remove the need for those pointers.

      No, it was designed to "remove pointers", not to "remove the need for pointers", and that is for the sake of simplicity, not power. In other words, Java is explicitly designed to cover a certain subset of programming tasks well, and you're fine unless you venture beyond that.

      NET has that feature, but when comparing managed vs managed runtimes having unsafe(unmanaged) pointers is a disadvantage.

      C# has pointers so that you may conveniently do more things than you could do otherwise (e.g. in Java). I don't see how it is in any way a disadvantage. You're not required to use pointers. If you do use them, your code is non-verifiable and won't run in any security sandbox, so security is in no way compromised.

      You cannot use pointers accidentally, either (you need to use the "/unsafe" compiler switch, and the "unsafe" keyword in the context in which they're used). And, in practice, pointers are not abused, either - I've only ever saw them used in C# in API interop circumstances, and even then only sparingly.

      To sum it up, any code that is written in Java (without unmanaged pointers) is also written in C# in largely the same way (without unmanaged pointers), so Java does not have any advantage here. However, for cases where pointers are indispensable, or where their lack is very tedious to work around, C# is clearly superior.

      That's as far as language goes. As for .NET itself - the reason why it has pointers (and many other things) in its type system is so that you can actually write an ISO C/C++ compiler that targets pure CIL. Try that with JVM.

      Java and JVM have not been reviewed for a few years now. There are mostly debates what should be changed.

      Are you on the lambda-dev mailing list? 'cause it's already way past debates on "should we change this", they're actively checking in code for lambdas for Java 7.

      While I agree 100% that .NET has more features, I will have to take a neutral position on witch one is more advanced. Java VM is older and has quite a few tricks up it's sleeve(including overall VM performance), .NET's VM is younger and more dynamic

      Have a look up the thread. I didn't start it - I replied to a post which was specifically comparing JVM and .NET on features, and was at times misleading, and at times blatantly false. My reply was solely to straighten that out.

      I would agree with the general assessment that .NET is more full-featured while JVM (Sun's) has more advanced optimization techniques. It is important to understand, however, that some of those optimizations are important to JVM precisely because they are not reflected in the higher-level language/VM mechanics, such as type system. A good example being escape analysis & stack allocation for classes in JVM vs user-defined value types in CLR. Java GC is better optimized for the same reason - due to the lack of value types (and because stack allocation doesn't always happen), there are more heap allocations in a typical Java app compared to .NET. This is actually somewhat by design - .NET and C# were deliberately designed so that implementation can be simpler and needs to guess less (another example of that would be explicit "virtual" on methods).

      It may still be that JVM is still faster in general (and it wouldn't really surprise me), but I didn't see any figures that conclusively settle

    146. Re:Getting screwed in both directions by shutdown+-p+now · · Score: 1

      If you know of any tests that show it to be either way, please share them!

      Or some article written by someone with advanced GC implementation expertise, who can pick apart both GCs bit by bit and compare the features in detail, such that it can be definitely concluded which one is superior.

  2. Shit. by AnonymousClown · · Score: 5, Funny

    I've been hoping for COBOL.NET.

    --
    RIP America

    July 4, 1776 - September 11, 2001

    1. Re:Shit. by Megane · · Score: 5, Funny

      ...and FORTRAN.NET and RPG.NET. Damn.

      --
      #naabhaprzrag, #sverubfr-000, #agi-fcbafberq, negvpyr[pynff*=' negvpyr-ary-'] { qvfcynl: abar !vzcbegnag; }
    2. Re:Shit. by Lunix+Nutcase · · Score: 5, Informative
    3. Re:Shit. by BigJClark · · Score: 1
      --

      Hi, I Boris. Hear fix bear, yes?
    4. Re:Shit. by Lunix+Nutcase · · Score: 2, Informative

      ...and FORTRAN.NET

      Here you go. Though it's probably about 10 years old by this point considering you can find a codeproject page about it from 2001.

    5. Re:Shit. by blair1q · · Score: 2, Informative

      BrainFuck.Net FTW.

      You're welcome.

    6. Re:Shit. by Anonymous Coward · · Score: 0

      you can use rpg in .net

      http://www.asna.com/en/Products/VisualRPG/Pages/default.aspx

    7. Re:Shit. by Steauengeglase · · Score: 1

      They'll get to that just a soon as ISO approves the specs for LOL code.

    8. Re:Shit. by Tolkien · · Score: 1

      What about Brainfuck.NET? I would love to see how they pull that off!

    9. Re:Shit. by Anonymous Coward · · Score: 1, Interesting

      You may laugh but I get paid twice what normal Java monkeys and C# monkeys get. Why? LEGACY SALARY. I just fake a cold and they rush in with fresh printed money. Cushy safe job. No teenie nerds thinking they know it all with Java and C#. I know for a fact they WONT and DONT do COBOL that's why I can command such large fees and feel comfortable in my job. NO student know it alls, no WoW gamer know it alls. BILLIONS of lines of code in use today, not just legacy old code but also NEW code in COBOL. Want a safer job environment in development? do RPG, COBOL etc.

    10. Re:Shit. by Cidtek · · Score: 1

      I've been hoping for COBOL.NET.

      APL and PL1 too dammit!!!

    11. Re:Shit. by bhcompy · · Score: 1

      And PICK.NET? Of course with that you'd have to port DataBASIC.NET

    12. Re:Shit. by eples · · Score: 1

      Actually, Fujitsu COBOL shipped with .NET way back in 2001.

      --
      I'm a 2000 man.
    13. Re:Shit. by rvw · · Score: 1

      BrainFuck.Net FTW.

      You're welcome.

      When will Visual BrainFuck be released?

    14. Re:Shit. by Anonymous Coward · · Score: 0

      You're a lazy, do-nothing, sham of a developer. Seriously, I'm not trying to flame you or troll you but seriously this is just the worst. Because you're scared of the talent coming up, you want to fortify yourself in bullshit instead of contribute to the advancement of your employer or customer and technology as a whole. Supportability, maintainability, easy swapping in and out of people to do those things should be the key goals in your development tasks. It frees you up to advance your skills and do something bigger and better and move on while somebody else can come in and learn from what you have done and also move on. Because you lack the ability to advance and do bigger and better things you cling to COBOL and think its a good thing just because you can charge a ridiculous fee and perpetuate your garbage. Meanwhile your employers will be less competitive due to this gross waste of resources and inability to move in to the modern era of computing.

      Its stupid people like you that make offshore development so attractive. Strive to be the best, don't strive to make the most. Failing that, don't try to convince people that you're somehow in the right for denying the advancement of technology. And I say all of this as a 23 year old developer with 5 years of corporate experience working with .Net languages and ::gasp:: COBOL. Thank God we finally got the go ahead to start porting.

    15. Re:Shit. by diskofish · · Score: 1

      It's called F#

    16. Re:Shit. by SplashMyBandit · · Score: 1

      Jeffrey Dahmer was working on it..

    17. Re:Shit. by xiong.chiamiov · · Score: 1

      I've been hoping for COBOL.NET.

      I guess you'll have to satisfy yourself with COBOL ON COGS in the meantime.

    18. Re:Shit. by nurb432 · · Score: 1

      I thought fuji already had that.

      --
      ---- Booth was a patriot ----
    19. Re:Shit. by Anonymous Coward · · Score: 0

      He's not necessarily a "lazy, do-nothing sham", he's just selfish. However, he better be hoarding all that easy moolah because his VP of Mainframes is being told to cut costs, and saying "Damn! That box is expensive!" He has a few years left, then he's unemployable.

      Anyway I wouldn't call him stupid. He's getting what he can, which is a time-proven survival strategy. Selfish generally wins over altruistic in the short term; although his offspring will also likely grow up to be unlovable douchebags, hopefully terminating his genetic line.

    20. Re:Shit. by Anonymous Coward · · Score: 0
    21. Re:Shit. by AlgorithMan · · Score: 1

      Pussies! I want brainfuck.net, shakespeare.net, whitespace.net, Piet.net, lolcode.net, assembler.net, punchcards.net, turingmachines.net, mu-recursive functions.net, pure lambda-calculus.net, posts correspondence.net and infinite scramblesquares.net

      --
      The MAFIAA is a bunch of mindless jerks who will be the first up against the wall when the revolution comes
    22. Re:Shit. by shutdown+-p+now · · Score: 1

      Be careful what you're asking for...

      I've been hoping for COBOL.NET.

      http://www.netcobol.com/

      ...and FORTRAN.NET

      http://www.lahey.com/lf71/lf71.htm

      and RPG.NET

      http://74.196.41.169:8084/

    23. Re:Shit. by mestar · · Score: 1

      The only problem with that theory is that women love selfish guys.

  3. Using them? by 0racle · · Score: 4, Insightful

    Was anyone actually using them? We have Python and Perl scripts running on windows and always preferred ActivePython and ActivePerl.

    --
    "I use a Mac because I'm just better than you are."
    1. Re:Using them? by bbtom · · Score: 5, Informative

      Yes. I have used IronRuby - it is pretty nice. I don't know much about the Windows platform, and it is really pretty useful to be able to write simple Ruby scripts that can interact with .NET stuff. Scripting languages running on top of the CLR (and JVM) is pretty damn useful for a wide variety of applications and situations.

      --
      catch (HumourFailureException e) { e.user.send("You, sir, are a humourless idiot."); }
    2. Re:Using them? by LWATCDR · · Score: 1

      I have never used IronRuby so I may not understand it.
      Does this take Ruby and compile it so I can have and executable?

      If so I can really she the use for it.
      I have a lot of perl code that I would love to give to other people to run.
      It is a real pain to have to install perl and several extensions just to get a script to work.
      So I can see the value of a compiler. Yes I know that they would still need the .net stuff but that is an easy install.

      --
      See my blog http://ilovecookes.blogspot.com/ for light hearted technical information.
    3. Re:Using them? by bbtom · · Score: 2, Informative

      Yes, you can build DLLs and EXEs from IronRuby projects. I haven't done so - I just use it as an interpreted scripting language and a familiar REPL when on the Windows platform - but I've heard it is possible to do so.

      On JRuby - which I am more familiar with - you get both an interactive runtime and a compiler (jrubyc) which can turn Ruby into Java .class files.

      --
      catch (HumourFailureException e) { e.user.send("You, sir, are a humourless idiot."); }
    4. Re:Using them? by AndrewNeo · · Score: 1

      For pure Python and Ruby implementations? Probably not. But, IronPython is a wonderful way of introducing scripting into an application. You can hook IronPython into say, a C# application, provide variables/classes/etc. from the code side, and have it execute a user script with the given data. And dynamic languages like this can be embedded with only a few lines of code.

    5. Re:Using them? by raddan · · Score: 4, Interesting

      In fact, it was this one feature that made me realy, really like .NET. I know that .NET is anathema around here, but I think most of that ire comes from people who have never tried it. I'm a longtime UNIX developer, and after I took the time to learn .NET, I was pretty much floored. A lot of thought went into the language, the runtime environment, and even the IDE-- and I generally hate IDEs. The fact that I could run C#.NET on Linux (Windows Forms included-- there's even a GTK# interface!) was just icing on the cake. What I used to be able to do in a week takes about a day in C#.

      Microsoft constantly does this: make something incredibly cool and then fuck said product over. Despite being the most schizophrenic corporation out there, they still make money hand over fist. Baffling...

    6. Re:Using them? by Anonymous Coward · · Score: 0

      ok, so here's one right over the plate. Sorry, but I'm ignorant here.

      What does ".NET stuff" consist of?
      I've looked into it a couple of times, but I have a hard time cutting through the marketspeak that surrounds Microsoft products.

    7. Re:Using them? by chromatic · · Score: 1

      See pp to package Perl 5 applications into standalone distributions.

    8. Re:Using them? by SplashMyBandit · · Score: 1

      Meh. You're still stuck with Windows whether you (or your customer) likes it or not. C# is good, but Java on Netbeans will run wherever *you* want to be: Windows, Linux, Mac OS X, real UNIX, Android, Symbian, embedded Linux (I've developed for that and it worked well) etc etc C#s goodness doesn't mitigate the fact that it is non-portable, and portability is starting to matter again these days.

    9. Re:Using them? by Draek · · Score: 1

      Meh. You're still stuck with Windows whether you (or your customer) likes it or not.

      From the post you replied to:

      The fact that I could run C#.NET on Linux (Windows Forms included-- there's even a GTK# interface!) was just icing on the cake.

      But thanks for proving the GP's point that C#'s critics are, by and large, people who've never actually used the damn thing.

      --
      No problem is insoluble in all conceivable circumstances.
    10. Re:Using them? by Anonymous Coward · · Score: 0

      It'd be nice if you could run C# on .NET because Microsoft actually wanted you to, instead of the Mono team basically slaving away to replicate the Win32 API wrapper known as System.Windows.Forms on an alien windowing toolkit.

    11. Re:Using them? by Anonymous Coward · · Score: 0

      What you just wrote I could write about Qt. But that's C++ and not .NET. Oh well :)

    12. Re:Using them? by Bigjeff5 · · Score: 1

      The Windows team had to slave away to create the Win32 API in the first place, and Mono is a cross platform implementation, so I don't really get the point you are trying to make.

      The Mono team has to work hard? So? So does everybody else who develops applications!

      --
      Security is mostly a superstition... Avoiding danger is no safer in the long run than outright exposure. - Helen Keller
    13. Re:Using them? by SplashMyBandit · · Score: 1

      Of course I've done C# you arrogant git, as part of my 20 year software development career. I just found it had poor portability for the parts of the library I needed - and I found Java solved my problems on whatever platform I chose and whatever application domain I was in. The world is not only desktop apps on Windows, Mac and Linux you know. By and large I find it is Windows aficionados that lack the experience in other systems and problem domains.

    14. Re:Using them? by Anonymous Coward · · Score: 0

      Neat trick you've got there. Post something which would get instantly down-modded under normal circumstances. Then add a nice Microsoft face bash at the end and BAM you get your +5 Interesting mod! :P

  4. IronRuby by ultrabot · · Score: 1, Offtopic

    Also one good question is - why bother with IronRuby when they already have IronPython?

    Rails isn't *that* important or special anymore.

    --
    Save your wrists today - switch to Dvorak
    1. Re:IronRuby by bbtom · · Score: 0, Offtopic

      Why use IronRuby when you have IronPython? Because it is Ruby. Duh! ;-)

      --
      catch (HumourFailureException e) { e.user.send("You, sir, are a humourless idiot."); }
    2. Re:IronRuby by ultrabot · · Score: 0, Offtopic

      Why use IronRuby when you have IronPython? Because it is Ruby. Duh! ;-)

      Ok, better phrase it like - why *support* IronRuby when IronPython is pretty much the same thing, just more mature and popular.

      --
      Save your wrists today - switch to Dvorak
    3. Re:IronRuby by bbtom · · Score: 4, Interesting

      Simple: choice. Lots of people like Python, and lots of people like Ruby. Having choice is a good thing. Plus there are some libraries (not just Rails) that are Ruby only - including things that benefit .NET programmers like domain specific language tools like RSpec, Rake and so on. Some C# users have been known to use Rake on IronRuby as a lightweight alternative to NAnt, for instance.

      --
      catch (HumourFailureException e) { e.user.send("You, sir, are a humourless idiot."); }
    4. Re:IronRuby by Herkum01 · · Score: 1

      I counter your Python with Britney Spears!

      http://www.google.com/trends?q=python%2C+Britney+Spears&ctab=0&geo=all&date=all&sort=0

      Of course the Czechs are a weird bunch, bucking the trend of pop stars for programming languages but without Google Trends WHO WOULD HAVE KNOWN!

    5. Re:IronRuby by Mongoose+Disciple · · Score: 1

      So what you're saying is... if I want to stay on the cutting edge of development I should... study Britney Spears?

    6. Re:IronRuby by bsDaemon · · Score: 1

      From your graphs, I can infer that there are apparently a lot of Norwegian-speaking people coding Python in Bangalore, India?

    7. Re:IronRuby by ZFox · · Score: 1

      Another similar cross-cutting of .NET and Ruby is with "Nu Gems for .NET", which is used to get .NET open-source dependencies. It blew my mind to be able to pull .net dependencies and alt.net projects from Ruby Gems.

      Here's the group page: Nu-NET
      An overview from the makers: the-future-of-net-open-source-software-delivery
      And just for completeness, Ayende's overview on it

    8. Re:IronRuby by kikito · · Score: 1

      Citation needed

    9. Re:IronRuby by Anonymous Coward · · Score: 0

      The important trend there is the #1 city on the Iron* graph. There are about 4 times as many searches for IronPython from Redmond as there are IronRuby. So guess which one Microsoft is going to devote more resources to.

    10. Re:IronRuby by eulernet · · Score: 1

      Rake to replace Nant ?
      If you use it to build projects, MsBuild is much better for this.

      Also, RSpec has been obsoleted by SpecFlow (or Cucumber for Ruby), which is fully integrated in VS.

    11. Re:IronRuby by mestar · · Score: 1

      And I counter your Britney with fiddler crabs!

      http://www.google.com/trends?q=sex,+Britney+Spears&ctab=0&geo=all&date=all&sort=0

      Did you know that fiddler crabs exchange sex for survival?

  5. C# by Anonymous Coward · · Score: 3, Funny

    As long as Microsoft continues to make C# and ASP.NET more capable and effective than anything else out there, I don't care if they throw IronRuby in the same trash bin as RegularRuby.

    1. Re:C# by MightyYar · · Score: 4, Funny

      I know, right? Whenever I use C# all of these unicorns and ponies keep popping into existence. It was literally created by the Lord Himself.

      Can I come work as an astroturfer now?

      --
      W..w..W - Willy Waterloo washes Warren Wiggins who is washing Waldo Woo.
    2. Re:C# by MightyYar · · Score: 2, Funny

      Yours was better than mine... more believable. That's why you guys get the big bucks.

      I tried to use .NET yesterday, but that's a funny story for another time.

      --
      W..w..W - Willy Waterloo washes Warren Wiggins who is washing Waldo Woo.
    3. Re:C# by catmistake · · Score: 1

      Yes, yes, we get it. You're salty because Microsoft copied and flooded the market with a technology that...

      Fixed.

    4. Re:C# by Lunix+Nutcase · · Score: 1

      Because Java was 100% original? The Java developers invented the notion of VM and didn't borrow any syntax from C and C++, right?

    5. Re:C# by Lunix+Nutcase · · Score: 1

      And one can keep going about what C++ copied from other languages and what C copied from its predecessor languages. There isn't a computer language in existence for at least 30+ years that HASN'T copied something from a previous programming language.

    6. Re:C# by 91degrees · · Score: 2, Interesting

      Yes, of course they copied Java. Java copied C++, C++ copied C, C copied B, B copied BCPL, BCPL copied CPL and CPL copied ALGOL.

      It's technology. We're trying to improve things not score points for originality. If a language has good features then copy them. C# added useful stuff like operator overloading and named arguments and lambdas. Plus a whole slew of other features that are actually pretty useful.

      And as far as "flooding the market" goes, MS had already flooded the market with MFC and Win32. .Net is way better tan either of them.

    7. Re:C# by interval1066 · · Score: 1

      "Microsoft developed a technology that is quickly becoming recognized as being superior to much of what Linux has to offer."

      Woah, slow down there. When Microsoft trots out a C# kernel and/or makes drivers or real-time code written in C# somehow viable, get back to me. Until then, C# is still relegated to the trenches of user-dom. It may be superior to some Linux technology, but I shudder at the thought of a petroleum cracking plant running real-time systems on C#/.NET.

      --
      Python: 'And then suddenly you have a language which says "we're all stuck with whatever the whiniest coder wants".'
    8. Re:C# by not+already+in+use · · Score: 1

      What I should have said was "FOSS approved alternative." And nobody is going to try and write a kernel in C#, so this example is largely pointless.

      --
      Similes are like metaphors
    9. Re:C# by 91degrees · · Score: 1

      Really, to about 80% of users, C# and .Net are pretty much interchangable (unless VB is a lot more popular than I expected). C++/CLI seems to be mainly used as an interface layer for C/C++, and the other languages are really of minority interest.

    10. Re:C# by Mongoose+Disciple · · Score: 1

      FYI, most people don't choose the best programming language for a task based on its originality.

      With apologies to Isaac Newton (who himself borrowed the sentiment), If C# sees farther, sure, it's because it stands on the shoulders of giant Java (which stood on the shoulders of giant C++, etc. etc. etc.) -- but it still sees farther.

    11. Re:C# by s73v3r · · Score: 1

      I'm 80% sure that C++ had operator overloading. I wouldn't be surprised if Java didn't, though.

    12. Re:C# by Anonymous Coward · · Score: 0

      With each reply, you reveal yourelf to be more and more pathetic. Please continue, I'll get the popcorn.

    13. Re:C# by dumael · · Score: 1

      http://en.wikipedia.org/wiki/Singularity_(operating_system)

      Sure, there's components written in assembly + C, C++. But it's quite possible to write the vast majority of an OS in a variant of C#. Also, have a look at C#'s "unsafe" extension which permits the normal C hackery.

    14. Re:C# by Anonymous Coward · · Score: 0

      As someone who has tried (successfully!) to do real-time processing with C#, I can wholeheartedly agree.

      Getting decent performance out of .Net languages is a form of sadism. But, usually, the bottleneck is somewhere in a COM library that C# uses "under the hood" that you can't get to. Once you bypass that COM library (by doing it yourself in native .Net), the performance bottlenecks mostly go away.

      For example:

      I had to capture an MJPEG (ick!) stream from an IP-based video camera, add a timestamp to each frame, then store them in order for future use. Oh, and we needed at least 10 fps. (Shouldn't be hard, right?)

      - I first tried saving individual frames with numbered filenames. It topped out at 0.5 fps. Then, I multithreaded it and it crashed due to memory overflow after saving just 5 frames (on average).
      - Next, I tried saving each frame to an AVI file through a COM library. It topped out at about 2 fps. Multithreading caused out-of-order frames, corrupt AVI files, and bluescreens (if you let it run for more than 15 seconds).
      - Next, I wrote an AVI class in .Net. It had to write an AVI-format data stream to a temp file, raise an event when it neared a 2GB filesize limit, and after writing the temp file, write headers to a "real" (or, perhaps, "final") AVI file and copy the temp data into it. It achieved about 5 fps. With some strategically placed threading and locking code, I found that this could achieve about 80% of the tick rate of any timer I triggered it with. I didn't try any high-accuracy DX timers, but the standard Winforms one and the System.Timers one worked well enough when set to 15 fps. (12 fps captured was plenty.)

      This whole process took about 6 weeks, but allowed the client to use much cheaper camera equipment than would have been otherwise necessary. And, hey, I got paid.

      Overall, the slowest parts of the process were:
      1) GDI/GDI+ are slow as crap. Adding a text overlay on each frame was a recipe for lag, slowness, and lethargy. (All 3 simultaneously.)
      2) System.IO (file I/O) is slow as crap. But we knew that. Disks are slow. Oddly enough, it's mostly the opening/closing of files, not the actual writing. So it's not really the disk as much as it is the way Windows dicks around with file handles.
      3) COM Interop is slow as crap. Marshalling objects is a computerized form of herding cats. This probably explains the above two items, since they both use COM.
      4) Finding goddamn file format specs is almost impossible. AVI is old-ass and there were still only a couple of reliable resources for information about it. I ended up coding all kinds of nasty magic numbers into that AVI class, and not just the initial RIFF and AVI_ chunk names. There are entire color mapping schemes that are unique to AVI, and only used for one of the original video encodings that was common when AVI was invented (sometime around the 13th century, AFAICT).

      And in case you're wondering what the project was for... well... just because the cops didn't pull you over when you ran a stop sign doesn't mean they won't send you a ticket later, after reviewing the "tape". Oh, and get a license plate frame with lots of high-intensity infrared LED's around it. It'll blind the cheap cameras nicely.

    15. Re:C# by thetoadwarrior · · Score: 1

      Is it true Ballmer's penis tastes like pizza?

    16. Re:C# by spiffmastercow · · Score: 1

      Java did have operator overloading, but refused to let the perceived "idiot" programmers use it. It was reserved for those working on the language. See the String class for an example.

    17. Re:C# by Lunix+Nutcase · · Score: 1

      They weren't saying that C++ didn't have operator overloading. He was talking about C# with respect to Java.

    18. Re:C# by thetoadwarrior · · Score: 1

      .Net fanboys are having a real circle jerk at the moment but Microsoft would have done the same exact thing. Mono and Android are not the same.

      Mono is striving for compatibility and will forever be behind .Net. Android broke compatibility and released something much better than J2ME. You try making Mono superior and incompatible to .Net and see what happens. .Net is not more open.

    19. Re:C# by MightyYar · · Score: 2, Funny

      I'll make fun of Hurd if it makes your dim green plastic soul shine just for a moment.

      --
      W..w..W - Willy Waterloo washes Warren Wiggins who is washing Waldo Woo.
    20. Re:C# by gbjbaanb · · Score: 1

      but I shudder at the thought of a petroleum cracking plant running real-time systems on C#/.NET.

      or, say, a trading platform

    21. Re:C# by catmistake · · Score: 1

      ah... the point was, or rather, the insult was intended to point out that Microsoft has never done anything they didn't steal from somewhere else, usually at the extreme detriment of users and the original developers. Active-Directory is an example of something they cloned that is actually decent... I guess. But usually, what Microsoft does is copy others ingenuity badly, and flood the original out of existence.

    22. Re:C# by Anonymous Coward · · Score: 0

      COM interop is slow as crap because of the marshaling and signaling to and from a separate thread (or possibly process), not because of any inherent limitations in COM itself. Simply dereferencing a COM pointer adds only about 16 cycles for an in-process COM object, so it ends up being not much slower than calling a regular C++ method.

      Of course if you have to factor in looking up the interface ID and class ID in the registry, finding and loading the DLL with the implementation in it, dragging in the typelib info, etc., yeah, that first invocation is going to be slow as crap; but likely not much slower than running some fresh .Net IL through the JIT.

      And in C++ you can invoke all kinds of wrappers to ensure your code is properly slowed down. I don't know what the hell MFC smart pointers do, but I bet it has something to do with a water buffalo and six feet of rubber hose. (I keeed, I haven't used MFC in 11 years.)

      If you're really masochistic you can stick COM objects in separate apartments which guarantees a marshaling trip for every access. You can easily slow C++ down to .Net speeds with just a little bit of carelessness. But even then that part is like any web service interface: chunky interfaces are your friend, and don't use COM objects for data transfer objects. If you have properties on your COM objects, you're doing it wrong.

    23. Re:C# by spongman · · Score: 1

      yeah, except they forgot to overload '==', doh.

    24. Re:C# by interval1066 · · Score: 1

      "I don't know what the hell MFC smart pointers do..."

      Wait... what?? Example, please...

      --
      Python: 'And then suddenly you have a language which says "we're all stuck with whatever the whiniest coder wants".'
    25. Re:C# by Anonymous Coward · · Score: 0

      Seriously - if you want to produce a Windows based application what language would you choose? C# is pretty useful. And quite a lot of people are happy with Windows only considering that's 90% of the market. Unless the alternative is less than 10% more work or of particular interest to users of a different platform, it's not worth making it cross platform.

    26. Re:C# by oiron · · Score: 1

      It's technology. We're trying to improve things not score points for originality. If a language has good features then copy them. C# added useful stuff like operator overloading and named arguments and lambdas. Plus a whole slew of other features that are actually pretty useful.

      Honestly, some of those additions in C# feel like they were tacked on because people were complaining about not having them in the language (me included).

      Not that C++0x (or whatever it's going to be) is any better; this looks like brainfuck more than anything else I know of: "[](int x, int y) -> int { int z = x + y; return z + x; }"

      And as far as "flooding the market" goes, MS had already flooded the market with MFC and Win32. .Net is way better tan either of them.

      Ain't that the truth! For all its faults, I'd rather work with .Net than with Win32...

    27. Re:C# by Bigjeff5 · · Score: 1

      He doesn't know what they do, how is he supposed to give you an example?

      --
      Security is mostly a superstition... Avoiding danger is no safer in the long run than outright exposure. - Helen Keller
    28. Re:C# by Bigjeff5 · · Score: 1

      but I shudder at the thought of a petroleum cracking plant running real-time systems on C#/.NET

      Well, since they don't run gcc compiled C either, I'm not really sure what your point is.

      --
      Security is mostly a superstition... Avoiding danger is no safer in the long run than outright exposure. - Helen Keller
  6. Inaccurate headline by Anonymous Coward · · Score: 5, Informative

    The headline "Microsoft May Back Off dynamic .NET Languages" would be better?

    1. Re:Inaccurate headline by AaronLS · · Score: 1

      Indeed, but as typical here on slashdot, it is tradition for headlines to be inaccurate yet for the sake of being sensationalistic. Trying to make C#/VB.NET devs go "OMG MS is dropping support for .NET languages?" and then they read the article and realize the person authoring the headline is either not very smart or simply manipulative.

    2. Re:Inaccurate headline by WiglyWorm · · Score: 1

      Are we surprised? Slashdot readership and mods alike are HIGHLY anti-MS.

    3. Re:Inaccurate headline by Anonymous Coward · · Score: 0

      Remove the tinfoil. You look ridiculous.

    4. Re:Inaccurate headline by xiong.chiamiov · · Score: 1

      The headline "Microsoft May Back Off dynamic .NET Languages" would be better?

      That depends on whether you define "better" as "more accurate" or "will get more clicks".

  7. Harder than you think by cracauer · · 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.

    1. Re:Harder than you think by Anonymous Coward · · Score: 0

      > Ruby with it's continuations is right up there

      IronRuby never supported callcc. It's already deprecated in 1.9 in favor of fibers, and it won't be in 2.0 at all. The main problem isn't the code complexity of using callcc, it's that ruby's implementation of it is incredibly slow and in fact is prone to segfaults if mixed with real threads because of the cheesy way they implemented continuations.

    2. Re:Harder than you think by aztracker1 · · Score: 1

      I'm not sure how much I agree with that, Java's JVM supports Rhino and there are other compilers that can target the JVM... same pretty much goes for the DLR stuff in the .Net space. Also, the DLR stuff has some very Libre licensing, so I'm sure it won't ever go away completely, the IronRuby/IronPython folks really like the environment, but to be honest, I've seen/read about as much or more deployments on Mono, than in the MS space. MS's support for dynamic languages seems to have been mainly focused on improving COM interop.

      --
      Michael J. Ryan - tracker1.info
    3. Re:Harder than you think by shutdown+-p+now · · Score: 1

      The truth of the matter is that it is very hard to support random other languages on VMs written for certain languages.

      The point of CLR is that it's supposed to be relatively language-agnostic. It's why it's got tons of features in the type system and instruction set that no single .NET language uses entirely (not even C++/CLI).

      And then there is DLR to try to get some further unification for dynamic languages - so you can e.g. define a class in Python and extend it in Ruby...

      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

      Ruby continuations got killed in 1.9, supposedly for this reason. IronRuby doesn't support 1.9 though, but it doesn't support continuations either (they really need VM support to be done efficiently).

      Python with "modify anything fundamental anytime" isn't much better.

      Can you give an example that IronPython can't handle?

      We should all move to LLVM.

      It's type system is very primitive. Effectively, it would mean getting back to C APIs as the only portable form of cross-language interop. Do not want.

  8. Iron Ruby by Anonymous Coward · · Score: 0

    "... the guy in charge, named T. Stark, said he could do it alone ..."

  9. What Oracle v. Google tells us by ciaran_o_riordan · · Score: 5, Interesting

    With Oracle attacking Google over Java patents...

    One lesson to be drawn, as suggested by Miguel de Icaza,[4] is that people should move to Mono and C# because Microsoft's patent terms are better than Sun's.

    On the other hand, one could draw the lesson that it's foolish to use languages / platforms controlled by companies that use patents aggressively.

    Another point is that if Google had used IcedTea (the GPL'd version of Java), they never would have been at risk from Sun/Oracle's patents.

    1. Re:What Oracle v. Google tells us by perlchild · · Score: 3, Interesting

      They wouldn't have been at risk from the copyrights and trademarks, but just how would they have avoided the patents?

    2. Re:What Oracle v. Google tells us by Anonymous Coward · · Score: 0

      By calling up Sun/Oracle to make sure they were clear on the terms.

    3. Re:What Oracle v. Google tells us by Anonymous Coward · · 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.

    4. Re:What Oracle v. Google tells us by yyxx · · Score: 2, Informative

      Another point is that if Google had used IcedTea (the GPL'd version of Java), they never would have been at risk from Sun/Oracle's patents.

      Yes, they would have. You only get a patent grant if you provide a full J2SE implementation, which would have been totally unreasonable on a phone. Merely building on top of the GPL'ed version is not enough.

    5. Re:What Oracle v. Google tells us by El_Muerte_TDS · · Score: 1

      IcedTea isn't any safer form the mentioned patents (neither is .NET as far as I can tell from those quite generic patents that cover a lot of VMs).

    6. Re:What Oracle v. Google tells us by StormReaver · · Score: 1

      They wouldn't have been at risk from the copyrights and trademarks, but just how would they have avoided the patents?

      GPL v2 Section 7

      If you cannot distribute so as to satisfy simultaneously your obligations under this
      License and any other pertinent obligations, then as a consequence you
      may not distribute the Program at all. For example, if a patent
      license would not permit royalty-free redistribution of the Program by
      all those who receive copies directly or indirectly through you, then
      the only way you could satisfy both it and this License would be to
      refrain entirely from distribution of the Program.

      One argument I've heard against this is that the GPL covers only what other people can do, not what the original copyright holder can do. By this argument, Oracle could distribute patented code under the GPL, but nobody else could.

      The obvious counter to that, though, is that the GPL is chosen in order to allow people to redistribute code it covers. If a patent owner distributes code under the GPL, and that code is covered by patents, then Section 7 can only be interpreted as meaning that the patent owner wanted code recipients to be able to copy, modify, use, and redistribute the covered code. The only way code recipients can do that legally is if they are also granted those rights by the patent holder. As such, SUN effectively surrendered patent enforcement rights of all the code it released under the GPL.

    7. Re:What Oracle v. Google tells us by BitZtream · · Score: 1

      Oracle wouldn't have bothered to sue them as they'd go out of business when all their backend systems that use Java suddenly started running like crap and brokeing in new weird joyous ways.

      --
      Persistent Volume manager for Kubernetes - https://github.com/dwimsey/openshift-pvmanager
    8. Re:What Oracle v. Google tells us by Lunix+Nutcase · · Score: 1

      The thing you seem to misunderstand is that Android isn't built or based on the GPLed version of Java. It is a reimplementation of a Java subset by Google and because it isn't fully J2SE compatible it doesn't get the public patent grant.

    9. Re:What Oracle v. Google tells us by gbjbaanb · · Score: 1

      Frankly, I'm surpised Google built on top of a "honest its not Java, but it is really, wink wink" platform. As phone development is the future of computing (probably) then I'm not surprised at every manufacturer to come out with proprietary languages/interfaces/toolsets. eg Apple you need objC, for Microsoft you need .NET, for Google ... oh, Java. Good for them to try, but I think their core interfaces should have been C (maybe C++ with C interfaces) all along and then let you build in whatever you liked (eg Python).

      I think its foolish to use any language controlled by a company. Stick to the standard ones that have no controlling, protectionist, entity.

    10. Re:What Oracle v. Google tells us by Anonymous Coward · · Score: 0

      What makes you think avoiding J2ME had anything to do with money? Have you ever tried to program anything for J2ME? I've written apps for both J2ME and Android, the difference in quality is staggering. J2ME is a joke. I interviewed a guy once who had worked for Sun on J2ME and afterwards I realized why it was such a waste of time - the guy lacked basic knowledge you'd need to make mobile Java a success, things like "how much memory does a string of N characters use?".

    11. Re:What Oracle v. Google tells us by locallyunscene · · Score: 1

      One argument I've heard against this is that the GPL covers only what other people can do, not what the original copyright holder can do.

      That's what copyright law says, not just the GPL. You the user can't redistribute copyrighted code or derivatives of copyrighted code without some kind of extra license granted by the author, directly or indirectly. With any license the author is granting you the right to redistribute the software, provided you fulfill the license requirements. The GPL just has the "unintuitive" requirement that if you distribute the software or a derivative of the software( such as by selling it as a packaged binary), that you must provide the source code.

      By this argument, Oracle could distribute patented code under the GPL, but nobody else could.

      If Oracle is licensing the code under the GPL then they must follow the GPL. Meaning if they add obligations to the license that would prevent "royalty-free redistribution of the Program" then they themselves are not allowed to distribute it under the GPL.The situation you describe above is closed source software and is the opposite of the GPL.

    12. Re:What Oracle v. Google tells us by Anonymous Coward · · Score: 0

      One lesson to be drawn, as suggested by Miguel de Icaza,[4] is that people should move to Mono and C# because Microsoft's patent terms are better than Sun's.

      One lesson to be drawn, as suggested by Miguel de Icaza,[4] is that people should move to Mono and C# because Microsoft's patent terms are better than Oracle's.

      FTFW. There's a huge cultural difference between the two companies.

    13. Re:What Oracle v. Google tells us by fredrik70 · · Score: 1

      and that's a full J2SE implementation, and nothing added to it, you cannot have a subset, or a superset of the J2SE as that removes the promise not to sue for patent infringement by oracle.

      --
      if (!signature) { throw std::runtime_error("No sig!"); }
    14. Re:What Oracle v. Google tells us by Bigjeff5 · · Score: 1

      From three posts up:

      Another point is that if Google had used IcedTea (the GPL'd version of Java),

      The GGP was asking how using the GPL'd version would have protected them from the patents, and the GP gave the answer (actually, it's the implied answer - I don't know if that portion of the license has been tested in court yet).

      In other words, you just restated the original statement, and didn't add anything at all to the conversation.

      Kthxbye!

      --
      Security is mostly a superstition... Avoiding danger is no safer in the long run than outright exposure. - Helen Keller
    15. Re:What Oracle v. Google tells us by Bigjeff5 · · Score: 1

      Meaning if they add obligations to the license that would prevent "royalty-free redistribution of the Program" then they themselves are not allowed to distribute it under the GPL.

      To take it one step further, if Oracle does license the code via GPL, and there are patent restrictions on said code, it implies a patent license as well, though it does not specifically grant one.

      You could make a very good case of it in court, and I hope Google can do just that. They don't need to be 100% in compliance with J2SE if the code they've modified was the GPL code.

      However, if the code Google based their work on was licensed with the J2SE requirement (i.e. a non-GPL version of the code) then they are fucked. If patent compliance is a requirement in the copyright license, then there is no implied patent license that goes along with it.

      --
      Security is mostly a superstition... Avoiding danger is no safer in the long run than outright exposure. - Helen Keller
  10. Re:Good by bonch · · Score: 3, Funny

    Hard to argue with such a well-researched, fact-based conclusion.

  11. MuaDib by Anonymous Coward · · Score: 0

    If dynamic language is the same as a Functional language then MS is probably going to push F#.

    Fujitsu has a COBOL.NET implementation.

    1. Re:MuaDib by AndrewNeo · · Score: 1

      Dynamic languages are not the same as functional languages, at least not in the way they're referring to here. Dynamic languages refer to dynamically typed languages, usually scripting languages, like Python, Ruby, Perl, PHP, etc. where they don't have explicit variable types. It's more complicated than that, but that's a basic explanation. Functional programming is another thing entirely.

  12. BrainFuck by cosm · · Score: 1
    No BrainFuck.NET? WHY!!!?!?!!

    >+++>+++.>+.+++++++..+++.>++.+.>.

    --
    'We are trying to prove ourselves wrong as quickly as possible, because only in that way can we find progress.' RPF
    1. Re:BrainFuck by Lunix+Nutcase · · Score: 2, Informative
    2. Re:BrainFuck by cosm · · Score: 1

      That should be taught instead of VB in your standard intro to programming classes.

      --
      'We are trying to prove ourselves wrong as quickly as possible, because only in that way can we find progress.' RPF
  13. Story title fail by Com2Kid · · 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.

  14. Confusion likely in Programming sphere by jitendraharlalka · · Score: 2, Insightful

    Oracle's legal action against Google over Android has already created confusion among developers about the future of Java as a platform. And, if Oracle is to able to stop Google from developing Android, Java will likely be avoided by any large companies for their new product. And, now this news that M$ might give up developing .NET any further adds to serve more confusion. With the recent news, there is another programming area likely to be severely hit i.e., the development of Mono. If .NET is gonna stop, it would be difficult to justify any development on Mono. Seems RMS was right again this time in opposing Mono from the very beginning. Only good thing this would serve in long term is more interest of developers in languages like Python, Perl. But, the present developments will definitely add so much of chaos to the programming sphere.

    1. Re:Confusion likely in Programming sphere by Lunix+Nutcase · · Score: 1, Flamebait

      And, now this news that M$ might give up developing .NET any further adds to serve more confusion.

      This isn't news that Microsoft isn't developing .NET any further. It is about Microsoft cutting back developers for dynamic languages being developed on top of .NET. Maybe you need to go back to 1st grade and learn some reading comprehension?

    2. Re:Confusion likely in Programming sphere by SwashbucklingCowboy · · Score: 1

      Wow, a whole lot of speculation followed by "Seems RMS was right"...

    3. Re:Confusion likely in Programming sphere by Lunix+Nutcase · · Score: 1

      Especially when all the speculation is flat out wrong.

    4. Re:Confusion likely in Programming sphere by AaronLS · · Score: 1

      He apparently just read the headline and not the article. A very poorly chosen headline it is.

    5. Re:Confusion likely in Programming sphere by obijuanvaldez · · Score: 4, Informative

      If there is any confusion, you are adding to it. Microsoft is not going to "give up developing .NET," they are simply trimming the teams that were developing CLR implementations of Ruby and Python for the .NET Framework. This probably means the end of the Microsoft implementations for those languages, but that is all. It is foolish to think that if those languages are no longer supported by Microsoft for the .NET Framework that Microsoft will just give up on .NET Framework entirely.

    6. Re:Confusion likely in Programming sphere by StormReaver · · Score: 1, Flamebait

      And, now this news that M$ might give up developing .NET any further adds to serve more confusion.

      Shitty as .NET is, development on it isn't stopping (sadly). Microsoft is stopping its efforts to convert interpreted languages to the .NET runtime, but the disease known as .NET will continue to fester until Microsoft finds yet another popular technology to (badly) imitate.

    7. Re:Confusion likely in Programming sphere by BitZtream · · Score: 1

      So let me get this straight ... an open standard that lost of people like to use ... the biggest provider of such software, and the only one that actually works properly says 'we're backing off' ...

      And apparently this means the open source version of it suddenly disappears too? What was RMS right about? Did he say something like 'If we can't copy MS than our software will die too!?!?!'

      What the hell is your logic in this one, its freaking OSS, it can go on without MS.

      Thats the whole point of OSS, so you aren't screwed by someone quitting.

      I don't know but I think you guys need to get together and figure out how to talk about GPL, OSS and RMS without sounding like one big continual contradiction.

      My first suggestion is to stop listening to RMS completely.

      Of course, you also need to learn how to read in general since there is absolutely no indication that '.NET is gonna stop'. They are just talking about dropping certain languages from their stable, this isn't the first time they've done it and it won't be the last. If not enough people use them, why keep paying to develop them?

      --
      Persistent Volume manager for Kubernetes - https://github.com/dwimsey/openshift-pvmanager
    8. Re:Confusion likely in Programming sphere by Anonymous Coward · · Score: 0

      Sounds like C will become the only safe language choice. :-)

    9. Re:Confusion likely in Programming sphere by PCM2 · · Score: 1

      Oracle's legal action against Google over Android has already created confusion among developers about the future of Java as a platform.

      How's that exactly? If anything, Oracle's move to protect the Java IP only signals a commitment to keeping Java a viable, coherent platform. Sun didn't let Microsoft get away with building a divergent implementation, so why should Google get away with it?

      And lets face it, all Oracle wants is the money anyway. It doesn't want to kill Android, given how popular it is. Lord knows Oracle has no idea what to do with Java ME. Instead, Oracle wants it known that Android is built on genuine Java technology -- Oracle-branded Java technology -- and then it will leave Google to do what it wants and Oracle will take its cut at the end of every month.

      --
      Breakfast served all day!
    10. Re:Confusion likely in Programming sphere by cbhacking · · Score: 1

      I know that IronPython was originally started outside of MS, and is an open-source project. I suspect the same is true of IronRuby. I very much doubt that these projects are going to simply die just because MS has reduced the people working on them internally. They might get a little less assistance, but I wouldn't even count on that; maybe it simply wasn't necessary to have that many people.

      --
      There's no place I could be, since I've found Serenity...
  15. Do Microsoft products use .NET? by Futurepower(R) · · Score: 1

    "Microsoft isn't dropping .NET..."

    My understanding has been that Microsoft created .NET for others to use. Are there any Microsoft products of importance that are programmed with .NET?

    1. Re:Do Microsoft products use .NET? by Lunix+Nutcase · · Score: 1

      SQLServer 2005 Management Studio for one.

    2. Re:Do Microsoft products use .NET? by Anonymous Coward · · Score: 0

      I think they may have gotten into the Operating System business at one point.

    3. Re:Do Microsoft products use .NET? by DAldredge · · Score: 1

      Large portions of Visual Studio 2010 are in .Net.

    4. Re:Do Microsoft products use .NET? by Lunix+Nutcase · · Score: 1

      Oh and most of the UI for XP Media Center Edition. From here:

      The greatest challenge was taking the complexity inherent in the new technologies we created, and from all the partners we worked with, and integrating it in a seamless way. We worked with a very sophisticated and complex set of technologies--the user interface is done in DirectX, most of the Media Center code was written in state-of-the-art C#, and we worked with a ton of partners, all of whom have their own code--and integrated it all together in an attractive, simple and straightforward package

      From a technical standpoint, Media Center user interface functionality is almost entirely written in C# managed code, on top of native Win32 and DirectX Windows XP components. These operating system components render video and draw fluid animations smoothly on the screen at 60 frames per second, with hardware acceleration and MPEG decoding provided by 3rd parties. Getting all these technology components to work together well was our biggest challenge.

      There are other examples that you could find with a simple google search.

    5. Re:Do Microsoft products use .NET? by juliohm · · Score: 1

      Some large coprs have already used .NET to create solutions and integreate with MS products. So... legacy's already settled.

      --
      Julio Henrique Morimoto juliohm@gmail.com
    6. Re:Do Microsoft products use .NET? by uprise78 · · Score: 1

      Ah yes, Good old WPF snuck in there. My favorite part of VS2010 is when it freezes the main thread to compile large projects and makes the screen turn white when you click on it. Good old VS2010...

    7. Re:Do Microsoft products use .NET? by Lunix+Nutcase · · Score: 1

      How is that any different from any other version of Visual Studio where that can happen with huge solutions?

    8. Re:Do Microsoft products use .NET? by lena_10326 · · Score: 4, Interesting

      Are there any Microsoft products of importance that are programmed with .NET?

      If you search for a Microsoft job, most are working with C# and C++. I interviewed at Microsoft in the past and there appears to be an extreme preference among their programmers to use C# because the majority of Bing/MSN code is in C#. I think Microsoft lacked the commitment because the prototypical Microsoft developer isn't interested in Ruby or Python. Those languages come with the baggage of social stigma: rogue developer, "non-enterprise", web monkey, low pay, low performance, 1 man startups, and "only for prototypes". It was clear to me developers inside Microsoft prefer C#.

      --
      Camping on quad since 1996.
    9. Re:Do Microsoft products use .NET? by Richard_at_work · · Score: 2, Informative

      Yes, most of their core serverside business platforms are based on .Net in whole or in part, including Dyanmics CRM, SharePoint and SQL Server 2008 (the core has a dependency, while the additional services are also largely .Net based these days, including Reporting Services).

    10. Re:Do Microsoft products use .NET? by obijuanvaldez · · Score: 1

      I don't think the prototypical Microsoft developer has little interest Ruby or Python because of some social stigma. I think Microsoft developers, like most other developers, tend to gravitate towards imperative languages with a C-style syntax as that is the paradigm and syntax with which most developers are familiar.

    11. Re:Do Microsoft products use .NET? by Anonymous Coward · · Score: 0

      A large amount of Microsoft products contain .NET code. Office, Exchange, MS SQL, some windows components (like perfmon/MMC/a few others), and so on.

      A lot of times the product is primarily written in C++, but uses C# code to augment it, or they expose .Net bindings which they also use themselves.

    12. Re:Do Microsoft products use .NET? by the.rendle · · Score: 1

      Visual Studio 2010, Expression Studio, Office Live Web Apps, SharePoint. Dynamics xRM, most of the SQL Server tools, all their websites and browser-based SaaS (Bing Maps, Hotmail, Spaces etc). Huge chunks of the Azure cloud platform. Most of the pre-installed applications on Windows Phone 7. In fact, these days it's used for pretty much everything except Windows, core Office and the SQL Server engine.

    13. Re:Do Microsoft products use .NET? by Lennie · · Score: 1

      And it's god awfull slow (to startup) and can't handle large data sets.

      I'm sure they are really proud of it.

      --
      New things are always on the horizon
    14. Re:Do Microsoft products use .NET? by SplashMyBandit · · Score: 1

      Yeah, but who wants to work at Microsoft these days? (well, unless your looking for an entry visa to the US)

    15. Re:Do Microsoft products use .NET? by Anonymous Coward · · Score: 0

      I think that pretty much goes for all developers working in .net. I certainl prefer c# over c++/cli and I do not and know vb so that's off the table. I've worked a little with IronPython and well, it's fine, except I don't find myself to be any more productive with it. I think as a scripting language to extend and existing system is what IronPython/Ruby are good for.

    16. Re:Do Microsoft products use .NET? by cbhacking · · Score: 1

      Visual Studio 2010 uses managed code, including C#, quite extensively.
      I've heard that Windows Media Center is almost entirely C#.
      The vast majority of Microsoft development jobs seem to want managed code experience.

      --
      There's no place I could be, since I've found Serenity...
    17. Re:Do Microsoft products use .NET? by shutdown+-p+now · · Score: 1

      If you search for a Microsoft job, most are working with C# and C++. I interviewed at Microsoft in the past and there appears to be an extreme preference among their programmers to use C# because the majority of Bing/MSN code is in C#.

      It really depends on what division and product one is working in. Some are mostly managed (e.g. Bing), some are mostly native (e.g. Windows, Office), some are a mix with no clear winner (e.g. Visual Studio), for some it depends on which layer you're on (e.g. SQL Server, core engine vs various extensions on top of that).

      Working on Visual Studio, I'd say that new code is about 80% C#, 20% C++. There is, in general, a preference for the former, due to it being shorter, cleaner, memory-safe by default, and much easier to debug. Most C++ code is legacy stuff; some new code is written in it for performance reasons.

    18. Re:Do Microsoft products use .NET? by lena_10326 · · Score: 1

      Put in a 2 year stint at MS and it looks awesome on your resume. Direct recruiters call you back when you drop them a note.

      --
      Camping on quad since 1996.
    19. Re:Do Microsoft products use .NET? by SplashMyBandit · · Score: 1

      Recruiters? If you have the right skills you get headhunted. I won't start on what those enterprise-handy skills are. Good luck with your job hunting in the future.

    20. Re:Do Microsoft products use .NET? by lena_10326 · · Score: 1

      Headhunters are 1 notch above used cars salesmen. IMO.

      --
      Camping on quad since 1996.
    21. Re:Do Microsoft products use .NET? by SplashMyBandit · · Score: 1

      Agreed. Still, being headhunted beats using recruiters for jobs.

  16. dynamic .NET by leuk_he · · Score: 1

    Mod parent up.

    However..I did have to look up what a dynamic language actually is. It surely will need extensions in .NET for support, but since .NET is a interpreted language there is no basic problem. Just possible performance isssues....

    1. Re:dynamic .NET by aztracker1 · · Score: 1

      The IronJS implementation seems to perform really well so far. MS already resolved most of the interaction issues with dynamic language support in the .Net version 4 runtime, so it shouldn't dissapear, and with the licensing for the DLR and IronPython/IronRuby language implementations, the open-source movement can keep it going.

      --
      Michael J. Ryan - tracker1.info
  17. What am i going to do with that dynamic type now? by shadowrat · · Score: 1

    Does this mean that the .NET 4.0 dynamic type will exist only for people to abuse it?

  18. Re:Good by Anonymous Coward · · Score: 0

    Clearly he doesn't like static or dynamic languages. Why is it so hard to get one that isn't either of those? /s

  19. So he was a _PM_? by melted · · Score: 3, Funny

    Then nothing was really lost with his departure. All Microsoft PMs do is sit in the meetings, "manage schedule", "report status", and take credit for devs' work. What's even more insane is that in some teams PM/Dev ratio is 1:1. So that remaining dev (assuming he was, in fact, a dev) has just become twice as productive, due to the decrease in the number of meetings on his calendar.

  20. Follow the money by mrflash818 · · Score: 0, Troll

    In my opinion M$ cash cow is their 'all corporations seem forced to use' OS and their 'all corporations seem forced to use' office suite.

    Anything else, based on the behavior during the company's history, fades away after big announcements that it will be 'the next big thing.'

    Just follow the money.

    --
    Uh, Linux geek since 1999.
  21. Re:What am i going to do with that dynamic type no by Spazed · · Score: 1

    The dynamic type is used by LINQ and a few other lovelies of .NET because there is no good way of figuring out what the type actually is until after the query is done.

  22. Re:As a sysadmin by Lunix+Nutcase · · Score: 1

    Some programs require a certain version and will break if you have a newer version of .NET installed (vSphere Client, for one example, requires .NET Framework 2.0 but will not work with .NET 3.0).

    And? There was no guarantee that all versions will be forward and backwards compatible. How is this any different than the fact that things will break going from VC++ 6 to VC++ 9? Or when there are changes to glibc that aren't backwards compatible?

  23. Multiple Languages With .Net Always a Pipe Dream by segedunum · · Score: 3, Insightful

    While this is slightly different, creating dynamic language environments on top of .Net, language neutrality in .Net has always been a myth. It's why there is only one language for .Net in C# and how VB.Net has become totally pointless because it's merely a syntactically different but identical .Net language. After attempts at those languages failed, such as those by ActiveState, we then got reasonably API compatible Ruby and Python environments being developed on top of .Net. Unfortunately, people already had API compatible versions of Ruby and Python - the official ones - and as a result no one has seen fit to run anything under a .Net Ruby or Python environment en masse. Environments like JRuby just clouded the landscape still further. All Microsoft really wants to do is try and get a critical mass of developers deploying to their versions of Ruby and Python probably for embrace and extend, and there is no sign that this is happening. They're trying to keep on with PHP because it's still the dominant web scripting language that they need for Azure to look semi-credible, but this is likely to meet a similar fate for the same reasons.

    The one environment that Microsoft should have created on top of .Net they simply didn't do. They should have created a rapid application development environment on top of .Net, free of the strict confines of C# and object oriented development, that aimed to be at least API compatible with classical VB so people merely had to recompile - as they had always been able to do. Alas, all that Microsoft did was force developers to throw lots of lines of existing code down the drain if they wanted to upgrade or either stay on the platforms they were on permanently or convert their applications to web based ones, which many did.

    Microsoft don't appear to have learned a thing after ten years of .Net.

  24. Ignorance, mostly. by Anonymous Coward · · Score: 5, Interesting

    You need to understand the history of web development to answer that question properly.

    The earliest dynamic web sites were implemented mainly in C and C++ by software developers who practiced the craft first and foremost, and treated web development merely as a particular application of their software development skills.

    Starting around 1996, however, things started to change. Many non-developers started getting involved with the web. Some of these people had absolutely no programming experience, and thus just couldn't handle C. They ended up using Perl instead, which was basically the only practical scripting language at the time, since it was significantly easier to use than C or C++. PHP soon arose from this group of developers, and followed its own path.

    Given the amateurish origins and background of this community, there wasn't much emphasis put on security, reliability, quality, maintainability and proper language features like static typing. That's why web applications from that time period are poorly written, and full of bugs and security holes.

    On the other hand, Java soon became widely adopted by business users at roughly the same time, and soon enough they started developing web applications using Java. Many of these developers were former C and C++ developers, rather than Perl developers. 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.

    By the mid-2000s, the Perl/PHP community soon welcomed Python and Ruby, since they were more sensible dynamic languages that addressed many of the issues with Perl and PHP. Microsoft, Sun and others tried to draw these developers over to their platform by offering dynamic language support for .NET or the JVM. That's where IronPython, IronRuby, Groovy, JRuby, Jython and other language implementations come into play.

    Given the history of web development, dynamic languages became widely used mainly out of ignorance, and have remained widely used due to continuing ignorance. There's no technical argument in favor of dynamic languages. They're just used because their users and proponents often don't even know about how much better and easier static languages make the development of both small and large applications.

    1. Re:Ignorance, mostly. by rpresser · · Score: 2, Informative

      You conveniently omit "languages" -- really, glorified macro platforms -- like ASP and ColdFusion, which were a big if not bigger influence on PHP than Perl ever was. And ASP was ... guess who? Microsoft.

      (Damn. I was gonna moderate on this story, but couldn't resist replying.)

    2. Re:Ignorance, mostly. by Anonymous Coward · · Score: 0

      ASP and ColdFusion were mere blips in the history of web development languages. They may have influenced how PHP was used, but PHP as a language draws far more from Perl and the C libraries it wraps than it does from ASP or ColdFusion.

      Hell, Microsoft themselves realized how fucking lousy ASP was, and that's why they went right ahead and killed their own product, replacing it with a technology (ASP.NET) that's heavily built on static languages. And they did that almost a decade ago!

    3. Re:Ignorance, mostly. by Joey+Vegetables · · Score: 2, Interesting

      What would you consider to be a "better and easier static" alternative to, say, Python?

    4. Re:Ignorance, mostly. by gbjbaanb · · Score: 2, 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.

    5. Re:Ignorance, mostly. by Anonymous Coward · · Score: 0

      Given the history of web development, dynamic languages became widely used mainly out of ignorance, and have remained widely used due to continuing ignorance. There's no technical argument in favor of dynamic languages. They're just used because their users and proponents often don't even know about how much better and easier static languages make the development of both small and large applications.

      I find prototyping much easier and faster in dynamic languages. This rapid development environment is a feature when it comes to the public Internet, since there's more competition between companies.

      With-in an organization though, there isn't much competition: IT will develop something, and you'll use it (like it or not). On the public 'net, if something sucks you can go someplace else (or not use it); internally, if something sucks--too bad. However, the ability to rapidly change code may be deemed a "bug" in large--possibly heavily regulated--companies, so the more "staid" development speed of static languages--along with Change Control and Approval--may be an asset when you're dealing with various Compliance issues.

      Generally you make static languages sound like they're "better" in some way, but provide no evidence for this assertion. Heck, a dynamic language (Lisp) appeared before C/C++, and many argue that it's better and more efficient to code in it than any other language out there, and offers much more functionality that just about all static/compiled languages out there.

    6. Re:Ignorance, mostly. by IamTheRealMike · · Score: 2, Interesting

      D (version 2). It has most of the flexibility of Python, but lacking 90% of the danger and general lack of clarity that typifies Python code.

    7. Re:Ignorance, mostly. by Just+Some+Guy · · Score: 3, Interesting

      Given the history of web development, dynamic languages became widely used mainly out of ignorance, and have remained widely used due to continuing ignorance. There's no technical argument in favor of dynamic languages.

      Speaking of ignorance; pot, meet kettle! Dynamic languages became widely used mainly because they're so damn nice to use. I have a lot of background in C, functional languages, and various assembler dialects (which are really the ultimate in dynamic languages!), but I'd rather use Python than any of them for routine development.

      What specifically don't you like about dynamicism? Most of the complaints I've heard are that it forces you to write all the checks yourself!, as though the kinds of constraints you'd need in a static language are required (or even desirable) in a dynamic language.

      For example, I love duck typing. I can write a class that implements read() and pass it to almost any function that expects to receive a file-type object as an argument. I can write def add(x,y): return x+y and know that it will do the right thing whether I pass in ints, floats, or strings. (Side note: dynamic typing is not the same as weak typing; you can't add 1+"2" because those types are incompatible. I can't stand working in languages that attempt to do what I mean by guessing).

      So a static language adherent might complain that my definition of add doesn't check for every possible combination of input datatypes. That's kind of the point, though; in Python you wouldn't want to prevalidate everything. Just run the operation and let it do its thing. If you've passed in, say, a file handle and a PDF, then the "+" operation will fail, but every sane case will actually work as you'd expect.

      I guess I can summarize it this way: the only type errors I've ever received while programming in Python have been when I passed None to a function by accident because (for example) a database call returned an empty set. In each of those cases, I'd have gotten the same kind of error if I'd accidentally passed a null pointer to a C function - except that the Python program threw an exception instead of opening a security vulnerability.

      I can program in plenty of static languages. Now that I'm far enough along in my career that I can pick my own tools, I almost always choose not to. I love dynamic languages and I won't voluntarily go back.

      --
      Dewey, what part of this looks like authorities should be involved?
    8. Re:Ignorance, mostly. by ChronoFish · · Score: 2, Insightful

      Syntactically PHP is actually a lot more like C/C++ than it is like Perl. It's basically a typeless "C/C++". It had a huge following because you could easily pepper HTML with embedded scripting - and hosting companies could offer PHP because it made for a convenient and sandbox. Yes you could easily kill a PHP script - but the PHP executable has always been stable (I've never seen the executable itself crash - nor have I ever seen PHP crash Apache or the OS - and I've been developing in PHP for 10 years now).

      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

    9. Re:Ignorance, mostly. by handreach · · Score: 1

      Another important reason why scripting languages are more popular is due to the fact that shared hosting environments support them better. Any cheap Linux based hosting plans include PHP/Perl nowadays, but rarely can you find good Java hosting provider with comparative prices. JVMs put much higher burdens on the hosting service providers in terms of hardware resources and human resources.

    10. Re:Ignorance, mostly. by mldi · · Score: 1

      You conveniently omit "languages" -- really, glorified macro platforms -- like ASP and ColdFusion, which were a big if not bigger influence on PHP than Perl ever was. And ASP was ... guess who? Microsoft.

      Wait wait wait... Holy crap, is that ever off.

      First, ColdFusion is Adobe territory.

      Second, PHP was originally a set of scripts written in Perl, called "Personal Home Page Tools" (PHP Tools). That was released publicly in 1995, and I think it was released even before ColdFusion was. So, Perl directly influenced PHP.

      ASP wasn't even released until 2002. That's even two years after PHP 4.

      Where on earth did get those ideas? If anything, it goes the other way around.

      --
      If you aren't suspicious of your government's actions, you aren't doing your job as a responsible citizen.
    11. Re:Ignorance, mostly. by kestasjk · · Score: 1

      That's why all the best web-apps are written in static languages.. Like Facebook, Wikipedia and Slashdot. PHP/Perl are truly the languages of ignorant amateurs.

      --
      // MD_Update(&m,buf,j);
    12. Re:Ignorance, mostly. by xMilkmanDanx · · Score: 3, Informative

      +1 duck typing is awesome.

      I'd bet, part of the problem the GP is griping about is really people forcing problems that aren't meant for ruby or python or php into a web application. If you have 1000's or even 100's of models, why do you need a web interface for all of it?

      Ruby on rails (and in particular my personal favorite flavor hobo) makes for awesomely quick development for small - medium sized applications. I wouldn't use it for a behemoth application, unless said behemoth is really 100 medium sized problems that got stuck together for no good reason.

      Also, I couldn't imagine trying to develop a website in c or c++ with having to worry about memory management and poor string support.

    13. Re:Ignorance, mostly. by lehphyro · · Score: 1

      Google App Engine solves this for Java.

    14. Re:Ignorance, mostly. by Mongoose+Disciple · · Score: 2, Informative

      ASP wasn't even released until 2002. That's even two years after PHP 4.

      ASP.NET, maybe. Old school ASP was circa 1998.

    15. Re:Ignorance, mostly. by newDzerzhinsky · · Score: 1

      ASP wasn't even released until 2002. That's even two years after PHP 4.

      I think you might be getting confused.

      The first release version of ASP.Net came out in 2002, but I think they were talking about "classic ASP" which was released as part of the NT4 Option Pack back in 1997 or 1998.

    16. Re:Ignorance, mostly. by JDAustin · · Score: 2, Informative

      ASP wasn't even released until 2002. That's even two years after PHP 4.

      No idiot...ASP was originally released with IIS in 1996. ASP is interpreted/scripted while ASP.NET was released in 2002. ASP and ASP.net share as much in common as VB6 and VB.Net do..ie language syntax and name only. Everything else is different.

    17. Re:Ignorance, mostly. by mmaniaci · · Score: 1

      If you are a true professional with Python or dynamic languages, you would unit test every function you wrote with many different object types which means writing a lot more code. If you didn't then it is inevitable that your application will crash, and the larger the program, the more likely you are to encounter a crash.

      If you use a statically typed library you don't need to unit test your parameters because the compiler ensures that you are passing the correct value. Yes, you can still get null-pointer problems but at least you were the one that explicitly created the issue (i.e. defined a function that takes a pointer and doesn't do any sort of sanity check). In dynamic languages everything can be thought of as a pointer, so everything can be null, and if you're serious about your program, you'll have to sanity check EVERYTHING. I'm assuming this isn't all that difficult with exceptions, but I for one see the use of exceptions as last-resort debugging utilities that should never be invoked on a release build, let alone used as error checking.

    18. Re:Ignorance, mostly. by tokul · · Score: 1

      These applications, being written by professional developers, are often significantly better than what was produced by the amateurish PHP/Perl community.

      For every shitty web application written in dynamic scripting language there is shitty application written in VB or .NET. Dynamic apps are usually more open and can be fixed and your client can't do that with your "professional" app.

    19. Re:Ignorance, mostly. by chromatic · · Score: 1

      In dynamic languages everything can be thought of as a pointer, so everything can be null....

      In a post full of nonsense, that quote sticks out as the strangest.

    20. Re:Ignorance, mostly. by Just+Some+Guy · · Score: 1

      If you didn't then it is inevitable that your application will crash, and the larger the program, the more likely you are to encounter a crash.

      Except in practice that's absolutely not the case. The whole standard library is written without millions of tiny case tests, but it's extremely stable to the point that I've never seen an error in the base system.

      I've heard a lot of horror stories about the imminent dangers of dynamic typing. Back in the real world, it never seems to be an actual problem.

      --
      Dewey, what part of this looks like authorities should be involved?
    21. Re:Ignorance, mostly. by David+Greene · · Score: 1

      For example, I love duck typing. I can write a class that implements read() and pass it to almost any function that expects to receive a file-type object as an argument. I can write def add(x,y): return x+y and know that it will do the right thing whether I pass in ints, floats, or strings.

      This is indeed convenient, but the functionality is not limited to dynamically-typed languages. C++ templates provide the same benefits with the bonus of static type checking. I'm curious to hear your opinion on static typing and generic programming and whether something like C++ templates provides what you're looking for. Is there something else about dynamic typing that you find useful?

      A dynamic language like SmallTalk can be nice because of introspection and the ability to modify types at runtime. A statically-typed language can't do that. I wouldn't want to use such introspection and type modification in big projects, though.

      --

    22. Re:Ignorance, mostly. by Anonymous Coward · · Score: 0

      What? MediaWiki is written in PHP.

    23. Re:Ignorance, mostly. by mldi · · Score: 1

      Fine, I was talking about ASP.Net. ASP was still released after the first version of PHP, and so the point still stands.

      No need to get so insulting.

      --
      If you aren't suspicious of your government's actions, you aren't doing your job as a responsible citizen.
    24. Re:Ignorance, mostly. by mldi · · Score: 1

      I stand corrected. Thanks for kindly pointing that out. Anyway, the point still stands that it wasn't released until after PHP. Sorry for the confusion with versions of ASP.

      --
      If you aren't suspicious of your government's actions, you aren't doing your job as a responsible citizen.
    25. Re:Ignorance, mostly. by mldi · · Score: 1

      Yes, I was confused. I was talking modern ASP (.Net). Sorry about that. My point was ASP didn't come until after PHP, even in modern varieties.

      --
      If you aren't suspicious of your government's actions, you aren't doing your job as a responsible citizen.
    26. Re:Ignorance, mostly. by Raenex · · Score: 1

      Given the amateurish origins and background of this community, there wasn't much emphasis put on security, reliability, quality, maintainability and proper language features like static typing.

      What a fucking joke you are. C and C++ are notorious for lack of "security, reliability, quality, maintainability". They allow all sorts of memory corruption. They have static typing, but it is weak. C is too low-level for doing common things, like string handling. C++ is too damn complex. People were absolutely right to use languages like Perl and PHP instead of C and C++ for the web.

      I say this as somebody who prefers static typing.

    27. Re:Ignorance, mostly. by Anonymous Coward · · Score: 0

      yet you have not provided a single technical advantage over static languages, only demonstrated that for you "close is good enough" which is OK in the world of web I guess.

    28. Re:Ignorance, mostly. by ultranova · · Score: 1

      For example, I love duck typing. I can write a class that implements read() and pass it to almost any function that expects to receive a file-type object as an argument.

      Can those functions declare that their argument must implement read()? Can you declare that an object assigned to a particular variable must implement read() and write()? Because if you could, it seems to me that most arguments against duck typing would evaporate.

      If you've passed in, say, a file handle and a PDF, then the "+" operation will fail, but every sane case will actually work as you'd expect.

      What happens if you've acquired those items a while earlier? It seems to me that it might be difficult to track down the original cause of the bug, a bit like a program silently corrupting its memory rather than segfaulting instantly.

      And the correct thing is obviously to write the PDF to the end of the file, or add the contents of the file to the PDF, depending on the order :).

      --

      Forget magic. Any technology distinguishable from divine power is insufficiently advanced.

    29. Re:Ignorance, mostly. by xiong.chiamiov · · Score: 1

      Given the history of web development, dynamic languages became widely used mainly out of ignorance, and have remained widely used due to continuing ignorance. There's no technical argument in favor of dynamic languages. They're just used because their users and proponents often don't even know about how much better and easier static languages make the development of both small and large applications.

      While I agree with much of your comment, I believe there are reasons for the continued use of scripting languages in web dev, other than ignorance or stupidity.

      The web moves fast, and scripting languages, with their lack of compile-run cycle allow quicker development. Things change enough that this is often worth the corresponding drop in execution speed.

      Secondly, the widely-used statically-typed languages (Java, C#) are about as non-DRY as you can get, Java in particular. While static typing does not necessitate needless boilerplate, the languages that remove it are only now starting to gain acceptance, and haven't gotten a firm hold on the market (or strong communities) yet.

      Thirdly, shared web hosts (where the majority of small businesses and personal sites are hosted) often don't support much other than static files and PHP, possibly ASP (.NET or otherwise, I haven't checked in a while). I've recently switched to doing a lot more static sites generated by Jekyll, simply because GitHub will host it for me for free (and only having to push my git commits to deploy is nice, too). Hosting matters.

      Finally, I find that community is far more important than the language itself, and the innovating part of the web community is a fickle beast, but tends to stay in the realm of dynamically-typed languages. It takes a few years to get something roughly as nice as Rails (well... other people like it) or Django, and years are decades in our field. Things like HAML have been ported to .NET and Java, but the development's done in Ruby.

    30. Re:Ignorance, mostly. by Just+Some+Guy · · Score: 1

      yet you have not provided a single technical advantage over static languages

      All sufficiently powerful languages are equivalent, says Mr. Turing. And yet we don't routinely write web services on an actual Turing machine. You're correct in the sense that you can rewrite a Python program in C or COBOL or 6502 assembler or Befunge, but in the real world there are non-technical considerations. Developer efficiency, complexity, and maintainability are all important factors, and in my experience dynamic languages win on all of those counts.

      Here's a Python snippet that implements grep:

      #!/usr/bin/env python

      import re

      def grep(pattern, infile): print ''.join(line for line in infile if re.search(pattern, line))

      # Command line, file-based example:
      import sys
      grep(sys.argv[1], open(sys.argv[2]))

      # Network-based example:
      import urllib2
      grep('nerds', urllib2.urlopen('http://slashdot.org/'))

      It opens a file and iterates across all lines in it, printing the ones that match the given regular expression. That might look a little strange to people not accustomed to Python, but I assure you that it's pretty idiomatic. That's basically a single line that handles file IO, string manipulation, regular expressions, and text output. How long would it take you to write the C equivalent that's immune to buffer overflows and other security vulnerabilities? When you need to tweak it a year later, how long will it take you to reacquaint yourself with the code? And once you've got it written, how long will it take you to make it work when some smartass decides you need to be able to grep websites and not just local files?

      The difference between the languages in this case is expressiveness. There's no such thing as a "more powerful" language, but there are definitely "more expressive" languages.

      --
      Dewey, what part of this looks like authorities should be involved?
    31. Re:Ignorance, mostly. by Anonymous Coward · · Score: 0

      Although "reference" may be a better term to use than "pointer", he's still quite correct.

      Dynamic languages move the notion of "type" from the variable to the value. So a given variable can indeed refer to ("store", if you want to use that terminology) any value, including null (or None or nil or whatever the given language's equivalent is).

      Furthermore, he's absolutely correct when he says that you must check for such a value each time you refer to a variable or a parameter. At least languages like Java and C# have value types that are guaranteed never to be null, so you only need to perform such checks when dealing with references.

      I would've expected a big-time Perl guy like yourself to have understood such basic concepts.

    32. Re:Ignorance, mostly. by chromatic · · Score: 1

      Dynamic languages move the notion of "type" from the variable to the value.

      Some do, some don't. (Please refrain from committing the definitional fallacy.)

      At least languages like Java and C# have value types that are guaranteed never to be null....

      So do some dynamic languages.

      I would've expected a big-time Perl guy like yourself to have understood such basic concepts.

      I've programmed in too many languages to fall for such gross generalizations. Even if the point were correct and generally applicable, some languages allow coercion of null to appropriate values in certain circumstances (Perl's undef, for example) or allow you to implement the null object pattern through manipulation of base types (Smalltalk comes to mind). The point might be technically correct if you squint hard enough, but the implications are by no means as gross or widespread as the original post implies.

    33. Re:Ignorance, mostly. by Anonymous Coward · · Score: 0

      Dynamic languages are not about being easier. Sure they are easy, but this is because they are more abstract.

      Dynamic languages rule web development for three reasons:

      1. String Processing

        Dynamic languages traditionally have better string processing than statically typed, compiled languages. Web pages are just big strings. 'Nuff said.

      2. Dynamic Languages Are Interpreted

        This is a big advantage in the ever-changing world of the Internet. When you can modify and test your application in minutes, you can respond to the change quicker. Of course, interpreted languages are slower.

      3. Client-side Programming Is Dynamic

        Since ActiveX didn't work out so well (ironically, for security reasons), Javascript is the language of the client.

    34. Re:Ignorance, mostly. by spongman · · Score: 1

      c# is quite expressive:

                      public static string Grep (this IEnumerable @this, Regex re)
                      {
                              return @this.Select (l => re.IsMatch (l)).Join ('\n');
                      }

                      public static void Main (string [] args)
                      {
                              var re = new Regex (args [0]);
                              var lines = File.ReadAllLines (args [1]);
                              Console.WriteLine (lines.Grep (re));
                      }

      that's 100% statically typed.

    35. Re:Ignorance, mostly. by shutdown+-p+now · · Score: 1

      Depending on your requirements, it might be Groovy for JVM, or Boo for CLR.

    36. Re:Ignorance, mostly. by oldhack · · Score: 1

      Ignore this - it's just some guy's crazy rambling.

      --
      Fuck systemd. Fuck Redhat. Fuck Soylent, too. Wait, scratch the last one.
    37. Re:Ignorance, mostly. by Anonymous Coward · · Score: 0

      What specifically don't you like about dynamicism? Most of the complaints I've heard are that it forces you to write all the checks yourself!, as though the kinds of constraints you'd need in a static language are required (or even desirable) in a dynamic language.

      The constraints are required in practice due to the "fail early" rule (this isn't limited to type checks, but to any validation). Basically, if you don't validate data early enough, but let it slip past, passing from function to function, getting stored somewhere in your data structures... just to have the program blow up at some later point because it really needed a number there - you'll get one hell of a debugging session trying to figure out where that bad piece of data actually came from. It can be even worse if your program doesn't blow up - say, you use + meaning "add two numbers", but instead end up doing string concatenation - and it's legal as far as language is concerned, but quietly produces an invalid result with respect to the logic of your app. I hope you have a unit test for that...

      For example, I love duck typing. I can write a class that implements read() and pass it to almost any function that expects to receive a file-type object as an argument.

      You don't need dynamic typing for that, though. You only need pervasive type inference. For example, consider OCaml:

      let foo x y = x#bar y;;

      This defines function "foo" which accepts two arguments, "x" and "y"; "y" can be of any type; "x" must be of an object type, and the object must have a method named "bar" that accepts a single argument of the same type as "y". It can return a value of any type, and "foo" will also return the value of the same type.

      Note that this is all inferred into a static type declaration. In this case it would be

      foo: <bar: 'a -> 'b; ..> -> 'a -> 'b = <fun>

      Here 'a and 'b are type parameters: 'a is the type of "y", while 'b' is the type returned by "x#foo". The notation <bar: 'a -> 'b; ..> means "object with method 'bar' taking argument of type 'a and returning value of type 'b"; the ".." at the ends means "... may also have some other methods".

      Now I can actually define some classes:

      class c1 = object
      method bar y = y * y
      end;;

      class c2 = object
      method bar y = y ^ y (* string concat *)
      end;;

      and try to use them:

      foo (new c1) 3;; (* yields 9 *)
      foo (new c2) "meow";; (* yields "meowmeow" *)

      foo (new c2) 3;; (* type error - second argument must be string for c2#bar *)
      foo (new c1) "meow";; (* type error - second argument must be int for c1#bar *)

      foo "meow" 3;; (* type error - string doesn't have method "bar" *)

      So we get "duck typing" in a sense that the function really works with any object providing the operations we use; but, at the same time, we get the benefits of full type checking. And we didn't have to write a single explicit type declaration anywhere - it's all inferred automatically.

      I guess I can summarize it this way: the only type errors I've ever received while programming in Python have been when I passed None to a function by accident because (for example) a database call returned an empty set. In each of those cases, I'd have gotten the same kind of error if I'd accidentally passed a null pointer to a C function - except that the Python program threw an exception instead of opening a security vulnerability.

      There is no "security vulnerability" opened in a statically typed language such as C# for the same thing.

      But, really, the whole mess with null references just points to the fact that Java/C# type system is not s

    38. Re:Ignorance, mostly. by shutdown+-p+now · · Score: 1

      Why do you compare PHP to C++? Most people advocating statically typed languages rather mean something like Java or C# for web (and other high-level) development, not C++. That takes care of all the memory issues right there; no "malloc bugs" etc.

      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.

      How about the fact that, in PHP, given a variable $a currently storing an associative array, expressions $a[8] and $a["8"] will reference the same element of that array, but $a["08"] will reference a different element? How's that for a language design flaw?

      And that's just one, relatively minor, example...

    39. Re:Ignorance, mostly. by foxylad · · Score: 1

      +1. I'm also at the stage of my career that I can choose my tools, and I too have settled on python. Someone took a shot at python for lacking clarity above: either D is incredible, or they're trolling. One of the best things about python is it's clarity - my code is far more maintainable, and understandable, while still being concise. And as you say, python is also FUN - you are far more productive, and get better results in less time. OK, it's a wee bit slower than compiled languages, but the cost of processing power (remember that CPU is doing thousands of millions of instructions each second!) is making the courses that you need those horses for less common.

      --
      Do as you would be done to.
    40. Re:Ignorance, mostly. by Anonymous Coward · · Score: 0

      Using a language reserved word as a parameter name: -1 point
      Gratuitous use of an extension method: -1 point
      Using the killer expressive LINQ: +1 point
      Your score: -1

    41. Re:Ignorance, mostly. by icebraining · · Score: 1

      Can those functions declare that their argument must implement read()? Can you declare that an object assigned to a particular variable must implement read() and write()? Because if you could, it seems to me that most arguments against duck typing would evaporate.

      The check would happen at runtime anyway, so what's difference between declaring it and having it bomb when you assign the object, or when you actually try to use the methods?

    42. Re:Ignorance, mostly. by oiron · · Score: 1

      Honestly, the only expression that comes to mind when I read that is unprintable.

      This is much better

      import sys, re
      matcher = re.compile(sys.argv[1])
      for line in sys.stdin:

      if matcher.match(line):

      print line

    43. Re:Ignorance, mostly. by oiron · · Score: 1

      And Facebook's apparently in PHP and MySQL, and Slashcode is perl

    44. Re:Ignorance, mostly. by spongman · · Score: 1

      Honestly, the only expression that comes to mind when I read that is unprintable

      oh man, that's the best argument i've ever heard. if i knew you were going to say that i wouldn't have even bothered.

      my point was that there are typed languages that are just as expressive, but that come with a robust type system.

      i guarantee you i save more time not having to write test to validate the type-correctness of my code.

    45. Re:Ignorance, mostly. by benhattman · · Score: 1

      For example, I love duck typing. I can write a class that implements read() and pass it to almost any function that expects to receive a file-type object as an argument. I can write def add(x,y): return x+y and know that it will do the right thing whether I pass in ints, floats, or strings. (Side note: dynamic typing is not the same as weak typing; you can't add 1+"2" because those types are incompatible. I can't stand working in languages that attempt to do what I mean by guessing).

      You're working too hard to make this an either/or proposition. C++, for instance, has provided statically checked duck typing via templates since it was standardized (it the language, not it templates). I'm not going to argue that C++ templates are the ideal solution, but if a compiler can check the type of arguments to verify they have a "read()" method for me, that is better than me hoping I didn't make a mistake. Or worse, hoping I didn't change the required argument signature some time in the future when requirements change.

    46. Re:Ignorance, mostly. by badkarmadayaccount · · Score: 1

      casting a string to a number seems natural, while zero initialized numbers are not, so they are treated as strings. Though it would make more sense if there was a force string option that differentiates between numbers in strings, and strings. At least that how I rationalize it. I don't know any PHP, and just a little C.

      --
      I know tobacco is bad for you, so I smoke weed with crack.
    47. Re:Ignorance, mostly. by shutdown+-p+now · · Score: 1

      casting a string to a number seems natural, while zero initialized numbers are not, so they are treated as strings.

      What is a "zero initialized number", why "08" is one (do you mean "leading zero"?). And finally, given that in math, 08 is the exact same number as just 8, why is the latter "natural" to auto-cast to number, while the former is not?

      To make matters even more complicated, PHP only applies this to integers. So e.g. $a["8.0"] is not the same as $a[8.0]. Wonderful consistency.

    48. Re:Ignorance, mostly. by Anonymous Coward · · Score: 0

      Funny thing is, 1+"2" does work in Java and in C# (and without guessing). Anyway, duck typing requires that the meaning of operator/function names cannot be overloaded. A ridiculous assumption, if you ask me.

    49. Re:Ignorance, mostly. by badkarmadayaccount · · Score: 1

      Leading zero, I stand corrected. Sorry. And math isn't programming, otherwise x=x+1 would be meaningless. Though I agree the float/int discrepancy is annoying.

      --
      I know tobacco is bad for you, so I smoke weed with crack.
    50. Re:Ignorance, mostly. by KingMotley · · Score: 1

      ASP wasn't even released until 2002. That's even two years after PHP 4.

      Actually ASP 1.0's first public (full) release was in 1996, and was available in various beta forms as far back as 1994 (May be earlier, however, that is as far back as I personally know). PHP first arrived in 1996, as had a very similiar syntax to the ASP betas that were floating around at the time.

      A complete rewrite of ASP started in 1997, had the first betas in 2000, and first release in 2002 which is now known as ASP.NET.

    51. Re:Ignorance, mostly. by Anonymous Coward · · Score: 0

      I have to agree on the last point, C for a web site would be overkill unless one is using someone's library to do sanitizing among other things. Dynamic languages fare much better for quick(er) development.

      On the other hand the poster above you gives an excellent example of why using these might be a bad idea. Not worrying about what data types are going into your function can result in someone feeding an unusual/unexpected data type and causing a crash or other undesirable behavior.

      Could this be connected with PHP's reputation for being so vulnerable to exploits and the like?

    52. Re:Ignorance, mostly. by Anonymous Coward · · Score: 0

      The static/dynamic argument is silly. If the important issue were the conflict between generalizing without worrying about it, and getting compile-time checking, we'd all be using functional languages:

      F# (one of 4 languages that ships with Visual Studio by default):
      let add x y = x + y

      Yes, that's statically typed. (add 2 "2.0") won't compile in the first place. Dynamic typing is nice because more stuff can be generic, and you don't have to sift through paragraphs of type names. Parametric polymorphism (of this sort) and type inference (of this sort) are nice for the same reasons, and they are _inherently_static_.

      My point is not to say that functional languages are better (besides, of course they are ;). Obviously there's more going on than "dynamic or static", as recognized by the history lesson in the grandparent post. Languages themselves have LOTS of different things about them. Isn't it interesting that Java doesn't have Multiple Inheritance, but Python does? Sure, but which one has a feature, and which one has a bug?

      What's important is overall experience. A huge chunk of people don't know the difference between Ruby and Rails. This is obviously heresy, but for most people, why should they? Ruby makes Rails possible, sure, but Rails makes Ruby installed on computers. .NET development is nice with Visual Studio. But without it...icky

      This whole debate makes me cry because most developers don't know much about the alternatives. Assumptions become arguments, and arguments become misinformation. Sounds too much like politics.

    53. Re:Ignorance, mostly. by JAlexoi · · Score: 1

      Please... PHP is a weakly and dynamically typed language. That brings a lot of issues with types and adding 1 to a string representing number 2.

  25. Re:Multiple Languages With .Net Always a Pipe Drea by Mongoose+Disciple · · Score: 1

    Where I disagree with you is that you seem to think Microsoft killed old-school VB/VBA development and forced a generation of terrible developers to move, however relucantly, towards object oriented programming by accident.

  26. Re:As a sysadmin by AhabTheArab · · Score: 1

    I know there's no guarantee. I'm just bitching about it. It's just that .NET is the only thing I have had these type of problems with.

  27. Re:As a sysadmin by stimuli_ii · · Score: 1

    Sir there is no mention of pancakes and without pancakes you have no arguement.

  28. Re:As a sysadmin by Anonymous Coward · · Score: 0

    You really shouldn't be a sysadmin if you can't cope with the concept of the .NET runtimes.

    It's simple:

    - If you have an application written for .NET 1.x, you need the 1.x runtime and libraries installed
    - If you have an application written for .NET 2.x, you need the 2.x runtime and libraries installed
    - If you have an application written for .NET 3.x, you need the 3.x runtime and libraries installed
    - If you have an application written for .NET 4.x, you need the 4.x runtime and libraries installed

    3.x actually uses the same runtime as 2.x, but it's still as simple as just using the same package as the version used by the application you want to run.

    What's more you can have all of them installed at once, and better still you can deploy them via WSUS so it's really no effort. .NET is a runtime and the .NET library provides a set of functions and features that are common to many applications. This means they only have to be deployed once and all .NET Applications can use them rather than having these features re-written for every application that might need such features.

    But again, if you don't know this you really shouldn't be administering Windows systems, it's been a core component of Microsoft's vision for about a decade now.

  29. Re:As a sysadmin by godefroi · · Score: 1

    (vSphere Client, for one example, requires .NET Framework 2.0 but will not work with .NET 3.0)

    I call shenanigans. .NET 3.0 is just .NET 2.0 with a few additional libraries added. .NET 3.5 is .NET 3.0 with a few more libraries and a new compiler.

    What I'd guess happened is you unknowingly installed .NET 2.0 SP2 with .NET 3.0, and THAT is what broke vSphere. Sucky software is sucky.

    --
    Karma: Poor (Mostly affected by lame karma-joke sigs)
  30. Re:Multiple Languages With .Net Always a Pipe Drea by segedunum · · Score: 3, Interesting

    Microsoft killed old-school VB/VBA development and forced a generation of terrible developers to move, however relucantly, towards object oriented programming by accident.

    Nope, it definitely wasn't an accident so I wasn't implying that. The purposefully did it. Quite why they did it I cannot fathom because it's just hurt and fragmented their developer base that grew to an extremely critical mass during the nineties. Maybe the MSDN guys got greedy and thought they could make money from getting people to rewrite everything, I don't know.

    I know people sniped at VB, but the fact is that probably billions of lines of code are sitting around written in it and it's the only rapid development platform Microsoft and Windows has. Throwing that away was not a smart move.

  31. Well if their website is any indication by Dunbal · · Score: 2, 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.

    --
    Seven puppies were harmed during the making of this post.
    1. Re:Well if their website is any indication by Again · · Score: 1

      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.

      I agree and for proof I will direct anyone who contests this point to try to automate Microsoft MapPoint with .NET. *shudder* That was much more difficult than it needed to be.

    2. Re:Well if their website is any indication by ADRA · · Score: 1

      Aw, that makes me sad. When I was developing for Windows in school, the one joy I had developing for Microsoft tech was their MSDN documentation. I hope it hasn't degenerated that much over the years.

      --
      Bye!
    3. Re:Well if their website is any indication by oiron · · Score: 1

      ...And documentation where trying to figure out the class hierarchy of OO libraries is an exercise in frustration. Compare these two: Typical MSDN page (scroll down to Inheritance) and a typical Qt documentation page.

      The Qt page has members, methods, properties and general description on one nicely formatted page, along with derived and parent classes. Also, functions are organized into groups and the entry for each function has "see also" links to other similar functions.

      The MSDN page on the other hand, has no ref links for easy navigation or linking, a useless set of declarations for that class in various languages, no explanation of the components of the class being described, and no members list (you have to go to another page for that). The members list in itself is equally bad: it's just a long list of members, with no grouping or indeed, any ordering beyond breaking it up into properties/methods/events.

      Honestly, when working on Windows, I wish I had something like man pages!

    4. Re:Well if their website is any indication by Bigjeff5 · · Score: 1

      ...but point to other pages in circular references worse than any 1990's porn sites.

      I don't know how much porn you look at, but you don't need the 1990's qualifier - the circular references haven't gotten any better.

      --
      Security is mostly a superstition... Avoiding danger is no safer in the long run than outright exposure. - Helen Keller
  32. Support Parrot by acid06 · · Score: 2

    And this is why I believe there should be more people supporting the Parrot VM.
    It is already usable and could support a lot more languages decently with better community support.

    1. Re:Support Parrot by Lennie · · Score: 2

      Agree.

      --
      New things are always on the horizon
  33. Sandboxing by NuShrike · · Score: 1

    A website has to be up 24/7 and that's only really achievable when there's really no possibility of the app and language taking the server down (although it was tough in the early days with Perl/PHP). Web required rapid prototyping and deployment (inherent to HTML) not achievable with pure native under the Apache server model. Also, the quality of the site's "developers" required a lot of "hand-holding".

    Since then, it's now a legacy tradition along with a lot of "growing up". Mega-websites are now complex apps written in many custom frameworks that could be a dynamic language with native plugins, Java, server embedded runtimes, or entirely native.

    Speed (site and development) and price has been the primary evolutionary selectors depending on the sites' needs.

  34. Drop support for .NET. and stop competitors? by Futurepower(R) · · Score: 1

    "... if Oracle is to able to stop Google from developing Android, Java will likely be avoided by any large companies for their new product. And, now this news that M$ might give up developing .NET any further adds to serve more confusion."

    The advantage of .NET, or any other mostly proprietary language methods, is that a company wanting a virtual monopoly can drop support for proprietary methods and put smaller software companies out of business.

    Byte-coded languages like the .NET languages and Java are easily de-compiled. That makes is possible for coders from a software company that wants to keep a virtual monopoly to discover how smaller companies have solved problems.

    I understand that there was an order from Sun top management that no Sun products be developed in Java.

    Remember, Microsoft stopped developing FoxPro, and didn't provide any escape path. At one time, Microsoft said there were 1,500,000 FoxPro developers. A few years later, Microsoft stopped developing FoxPro.

    Microsoft killed the XBase languages by competing successfully with them, putting quirky features into FoxPro that were not part of XBase, and then killing FoxPro without providing libraries so that FoxPro programs could be moved to C++.

    1. Re:Drop support for .NET. and stop competitors? by gbjbaanb · · Score: 1

      in many respects the same decision was taken with (traditional) Visual Basic. There'a a lot of old VB devs to whom even VB.NET is a strange new land.

      I'm surrpised MS is even keeping that around, anyone who migrated from VB is learning C# instead as that seems to be the de-facto supported language of all the .NET ones. I don't say they will ever stop supporting it, but the risk is there.

    2. Re:Drop support for .NET. and stop competitors? by Bigjeff5 · · Score: 1

      There is still a ton of development done in VB6 - I support one app myself. I discovered the VB6 community when I had to start looking for help, and there is actually quite a lot of it out there.

      VB.NET is still going to be easier to pick up for a VB6 guy than C# is, but the whole debate between VB.NET and C# is meaningless. The two are virtually identical, with really only one or two feature differences and a little bit different syntax (using {} and ; being the largest). Really, the differences between VB6 and VB.Net are a hell of a lot bigger than those between VB.Net and C#. I suspect the only real reason C# is more popular is because the syntax is closer to C/C++/Java than VB.Net is, not anything really fundamental about the two languages.

      I learned VB.NET and C# side by side, because they really are that similar. In 99% of cases the CLI code between the two is identical. In fact, most of the time C++ CLI code will be the same as VB and C#, but there are some more fundamental differences with C++ involved.

      --
      Security is mostly a superstition... Avoiding danger is no safer in the long run than outright exposure. - Helen Keller
    3. Re:Drop support for .NET. and stop competitors? by gbjbaanb · · Score: 1

      quite true, though I'm not a VB guy by any measure, we have ton of it about. I also find that when I do write C# code, I keep finding myself putting ' for comments and forgetting the ; it 'feels' so much like VB!

      I have noticed that VB.NET is the better language - there's a few more features, and the IDE helps you out a lot more, its easier and nicer than C#. Still, I stick to my argument - that C# is the "one true .NET language", unfortunately.

  35. I'm waiting for... by N0Man74 · · Score: 1

    TURTLE.NET?

    (or if you prefer, LOGO.NET).

  36. If they can do it to Google, they can do it to you by ciaran_o_riordan · · Score: 1

    (Summary of what I'm replying to: It's Google's fault, they should have paid the licence fee.)

    Problem is, if Oracle can sue Google, they can sue anyone. What if there was GNU javavm, or what if Red Hat decided to distribute the Dalvik virtual machine?

    I would, however, understand if Oracle told Google to stop using the "Java" name and trademark.

  37. Re:As a sysadmin by BitZtream · · Score: 1

    ...

    You're not an admin, at least not what qualifies as an admin where I work. Here you have to know what you're talking about to be called a sysadmin.

    The vSphere Client bug you are talking breaks due to a patch that is unrelated to .NET. Its an MSXML problem, not .NET. You can install every released version of the .NET frame work on the same machine and they do not collide with each other, each app will use the one its designed to use for. if vSphere needs the .NET 2.0 frame work it will either find it and use it, or it won't start. It WILL NOT use the 3.0 framework instead.

    Some programs don't install it because at this point ... how could you not have it? Its the new VB runtime, its on Windows update and has been so long that I barely remember that it went public after XP. Do you want the 8 or nine tiny utilities I distribute that are between 75k and 200k each to turn into 21 meg downloads because I included the .NET framework with them? No, that would be stupid.

    Don't call yourself an admin. You aren't. 8 years after a tech is released that is used in all sorts of apps and you have no clue how it works.

    Just because you can point and click in the Windows GUIs doesn't make you an admin, my dog can use the Windows GUIs to do 'admin' work. Christopher Reaves could use the Windows GUIs to 'admin'. But ... none of you are actually admins just because you can point and click.

    Yes, stupid windows point and click fucktards that call themselves admins freaking piss me off, most of my day consists of having to figure out how tards like yourself screwed up your own machine or didn't follow directions so now I have to fix it.

    --
    Persistent Volume manager for Kubernetes - https://github.com/dwimsey/openshift-pvmanager
  38. Re:As a sysadmin by AhabTheArab · · Score: 1

    I'm not saying I can't cope with it, I'm just saying it's a pain. I'm sure a lot of has to do with the fact that I'm not a Windows admin. I'm a Linux admin, so it's something I only come across every so often. Just about every sys admin I have worked with or have met has an overall negative opinion of .NET. That goes for Windows guys too. I have never heard any one of them say "Thank you Microsoft for blessing me with .NET".

    Maybe the thing that has always bugged me is that you have these different "versions" that can all be installed at the same time. I understand why it might be necessary, it's just slightly counter-intuitive and not how one expects versioning to work.

  39. Re:Multiple Languages With .Net Always a Pipe Drea by Again · · Score: 1

    Where I disagree with you is that you seem to think Microsoft killed old-school VB/VBA development and forced a generation of terrible developers to move, however relucantly, towards object oriented programming by accident.

    I just need to tell you that it takes more than programming in an object-oriented language to change a programmer's code style.

  40. Just ADO.NET and report makers? by Futurepower(R) · · Score: 1

    "... SQL Server 2008 (the core has a dependency, while the additional services are also largely .Net based these days, including Reporting Services)."

    Does just a minor part of SQL Server 2008 use .NET, such as ADO.NET, or are there large parts of SQL Server programmed with .NET?

    1. Re:Just ADO.NET and report makers? by Richard_at_work · · Score: 1

      Larger parts than just interfacing tools, and its getting more with each iteration of SQL Server.

  41. Re:As a sysadmin by Lunix+Nutcase · · Score: 1

    Then your experiences with being a sysadmin must be severely limited or your a crappy sysadmin if you can't handle something so simple.

  42. Re:As a sysadmin by AhabTheArab · · Score: 1

    I do very little Windows work. I'm a Linux admin. I keep a Windows XP VM to manage my Xen and VMware servers. vSphere worked fine on it until I had to install .NET 3.0 on it a few months ago in order to install an IBM SAN management tool. Maybe it wasn't directly related to .NET - I didn't look into it too much. It was much easier to just make a new VM specifically for vSphere

    I don't care how fucking old the tech is. If I rarely need to use it, it's not high on my list to spend time learning about.

  43. Re:Multiple Languages With .Net Always a Pipe Drea by Mongoose+Disciple · · Score: 1

    I just need to tell you that it takes more than programming in an object-oriented language to change a programmer's code style.

    Absolutely. I didn't say most of them moved very far. :)

  44. Someone didn't pay the bill for IronPython.net? by Anonymous Coward · · Score: 0

    Interesting that having just read this I go over to ironpython.net and find it's out of action, and seeming that Microsoft (admin and technical contact on the domain name) hasn't paid their hosting bill. :P

    1. Re:Someone didn't pay the bill for IronPython.net? by Ken_g6 · · Score: 1

      At least the second link I get when I search IronPython on Google still works.

      --
      (T>t && O(n)--) == sqrt(666)
  45. Re:Multiple Languages With .Net Always a Pipe Drea by Mongoose+Disciple · · Score: 1


    Nope, it definitely wasn't an accident so I wasn't implying that. The purposefully did it. Quite why they did it I cannot fathom because it's just hurt and fragmented their developer base that grew to an extremely critical mass during the nineties. Maybe the MSDN guys got greedy and thought they could make money from getting people to rewrite everything, I don't know.

    The impression I've always gotten is that, basically, they didn't want to keep supporting it. Maybe not Microsoft-the-entity, but the people who built the tools and things that were used to develop it or that interfaced with it. VB developers may have had no shame for what they were, but I kind of think the guys at Microsoft who were supporting them did (or wanted to build something cooler/better/etc.)

    I don't think a desire for rewrites was it -- the old-VB -> VB.NET conversion tool that comes with Visual Studio has exceeded my expectations whenever I've needed to update an old VB project. It's not perfect and it has some blind spots, but it's pretty good for what it is.


    I know people sniped at VB, but the fact is that probably billions of lines of code are sitting around written in it and it's the only rapid development platform Microsoft and Windows has. Throwing that away was not a smart move.

    I disagree with you here, or maybe we just have different ideas of what RAD is; I don't think throwing together a quick-and-dirty app with, say, modern Visual Studio and VB.NET is measurably harder than doing the same thing with VB6. If anything, out of the box controls have made it even easier -- VB didn't even have a datagrid at all until, what, version 6, and that's something that probably most apps you'd want to RAD would want to use.

    Sure, elitist developers (sometimes, I admit, including me) that used to bitch about VBA developers moved to bitching about probably those same people as web developers that just 'slapped a dataset on a page', but I don't think that kind of task got any harder.

  46. Re:Multiple Languages With .Net Always a Pipe Drea by gbjbaanb · · Score: 1

    apparently there was abit of a battle inside Microsoft - where you had 2 camps, one in support of backwards-compatibility (the Raymond Chens), and another in favour of throwing out the old cruft (the MSDN guys)

    It seems the 'MSDN guys' won, and then went too far so a lot of simple migration options were ignored in favour of the 'total rewrite'. We all know how well those turn out for most companies, but in this case, it was Microsoft's customers who took the hit, not Microsoft. MS didn't suffer at all, Office remained written in C++, Windows remained written in C++ (see the threats made to Richard Grimes when he publicised the lack on .NET in Vista)

  47. So Will VBScript Return To It's Rightful Place... by littlewink · · Score: 1

    as the flagship Microsoft web language? Hey, it's lasted longer than any of the .NET languages!

  48. but Sun's GPLv2'd version is safe by ciaran_o_riordan · · Score: 1

    > You only get a patent grant if you provide a full J2SE implementation,

    That might be the general case for Java, but for the GPLv2'd version of Java distributed by Sun/Oracle there's additionally the protections granted by GPLv2.

    OpenJDK is distributed under GPLv2, and sections 6 and 7 say that if you can't pass on the four freedoms, you can't distribute. It is distributed by Oracle, which means we all get the four freedoms, so a modified version, or a subset or superset would be safe.

    Right?

    1. Re:but Sun's GPLv2'd version is safe by yyxx · · Score: 1

      The GPLv2 is a license from the copyright holders to you. Oracle is the sole copyright holder. They can distribute the software in any way you like to you, they aren't bound by the GPLv2 terms, and only they can sue over license violations. So, they can distribute it to you and slap a GPLv2 on it. You can distribute it under the GPLv2 only if you can comply with the terms. Since you probably can't, you're not just violating Oracle's patents but also Oracle's GPLv2 license terms.

    2. Re:but Sun's GPLv2'd version is safe by badkarmadayaccount · · Score: 1

      IcedTea is not Oracle copyright.

      --
      I know tobacco is bad for you, so I smoke weed with crack.
    3. Re:but Sun's GPLv2'd version is safe by yyxx · · Score: 1

      IcedTea is not Oracle copyright.

      The GP argued that IcedTea derived patent rights via the GPLv2 from the patent holder and original distributor, Sun/Oracle. If it weren't copyrighted by Sun/Oracle, then you certainly wouldn't receive any patent rights that way. (Of course, large portions of it *are* copyrighted by Oracle.)

  49. Makes sense to me from MS perspective by Anonymous Coward · · 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

    1. Re:Makes sense to me from MS perspective by shutdown+-p+now · · Score: 1

      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.

      It doesn't work that way in practice. When one uses IronRuby (or JRuby), it's hard to resist the temptation to start calling all those libraries and frameworks available on those platforms (rather than writing your own) - which effectively locks you into the platform.

      That's what they did with F#. It's a syntactic ripoff of OCaml but with new changes that can't leave .NET.

      F# and OCaml share the same core language, and you can actually write code that's portable between the two - and it's quite intentional. Indeed, there are a lot of bits in F# that exist strictly for OCaml compatibility.

      They are completely different languages when it comes to OOP, though, so F# is not quite a "rip-off" on the whole - less so than (modern) C# is a "rip-off" of Java.

  50. and... by Anonymous Coward · · Score: 0

    REXX.NET, GWBASIC.NET and LOGO.NET. While we're at it, please find a way to add 360ASM.NET because I feel like being challenged.

  51. Not really by thasmudyan · · 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.

  52. another way to spin this... by jnowlan · · Score: 1
    is that Python is becoming so popular that they don't want to support it in any shape or form as it is another avenue that (can) lead away from windows dependence.

    I draw this amazing conclusion based on the trends from http://developers.slashdot.org/comments.pl?sid=1753576&cid=33241516 but using just last 12months and comparing c#, python, java, and ruby.

  53. This is surprising? by Angst+Badger · · Score: 1

    So Microsoft decided to stop pouring money into something that it can't sell and which competes with products it can sell, and that will likely be completed anyway for free by people it doesn't have to pay.

    Well, color me shocked. Here I was, thinking Microsoft was a charity, and now I find them acting like a notoriously cynical and rapacious megacorporation. Who'da thunk it?

    --
    Proud member of the Weirdo-American community.
  54. Re: continuations vs. yield return by Anonymous Coward · · Score: 1, Interesting

    I've never used Ruby or seen its continuations, but it's worth mentioning that C# has a "yield return" statement used in IEnumerator to return a value and save the current execution state in the enumerator object. This allows the the next call to the enumerator to restore the state, so it's obvious that you could implement a setjmp/longjmp with yield return plus try/finally to invalidate the jmpbufs when the calling function returns.

    Since setjmp/longjmp are possible, surely you could implement Ruby's continuations. If necessary, you could even allocate each function's call stack on the heap so that jmpbufs don't have to be invalidated when the calling function returns.

  55. F#? by PmanAce · · Score: 1

    Maybe Microsoft wants to further concentrate on the .NET dynamic language equivalent?

    --
    Tired of my customary (Score:1)
  56. RPG.NET by Anonymous Coward · · Score: 0

    It exists. It's a cool site if you're into D&D and shit.

  57. Planned obsolescence by alexmin · · 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.

    1. Re:Planned obsolescence by neminem · · Score: 1

      > Remember VB6, DDE, OLE and WIN32? I do, but not because I was around when they were new. Until a couple years ago, I was in school, out in the mythical ivory towerish land where 2 months was a "large" project, and most coding was done in a text editor, in linux, and compiled and run from command line. Now I'm out in the real world, working for a company that writes real code designed to be run by real customers (who are using Windows), and while I haven't had to write large amounts of code in older Microsoft languages/APIs, I've certainly had to *interact* with all of those outdated technologies, and holy *frack* is C# code nicer to read and modify than any of those. I won't deny that M$ loves pushing the newest and greatest thing, even when you don't care and it would just be a waste of time (hi, Silverlight), but C# is not one of those things. Seriously, if I never had to look at a CString or a _bstr_t ever again, I would be way happier.

  58. Re:Multiple Languages With .Net Always a Pipe Drea by segedunum · · Score: 1

    I don't think a desire for rewrites was it -- the old-VB -> VB.NET conversion tool that comes with Visual Studio has exceeded my expectations whenever I've needed to update an old VB project.

    Goodness me. If you think that code converter was, or is, good enough to convert any sizeable project out there then I have to question your motives really. The thing was a sad joke.

    I disagree with you here, or maybe we just have different ideas of what RAD is; I don't think throwing together a quick-and-dirty app with, say, modern Visual Studio and VB.NET is measurably harder than doing the same thing with VB6. If anything, out of the box controls have made it even easier -- VB didn't even have a datagrid at all until, what, version 6

    There are many programming tasks that just do not need the kind of object-oriented overhead that .Net and C# requires. The latter is a matter of component support with nothing to do with VB itself. A DataGrid appeared in VB5, well, a decent one anyway and there ended up being two or three. If you didn't use VB, well, you had to pretty much write your own so it wasn't like there was alternatives.

  59. Re:Multiple Languages With .Net Always a Pipe Drea by Anonymous Coward · · Score: 0

    There is another .NET language that is fundamentally different to C#: F#

  60. serious lack of commitment by nurb432 · · Score: 1

    Well, we all may not like it, but how does these 'extras' help Microsoft's core business? They aren't around for us, they are here to sell products and make money and spending time/resources on non-products dilutes their resources.

    Its too bad too, with 2.0 i was just starting to mess with IronPython. Glad i didn't spend too much time on it.

    --
    ---- Booth was a patriot ----
  61. Re:Multiple Languages With .Net Always a Pipe Drea by Anonymous Coward · · Score: 0

    Read Joel Splosky's "How Microsoft Lost The API War", particularly the "The Two Forces at Microsoft" section. http://www.joelonsoftware.com/articles/APIWar.html

  62. Only on Unix, you say? by ratboy666 · · Score: 3, Interesting

    "too bad all the Java application servers blow on anything but Unix... so in reality... with Java you get Unix OSs"

    J2EE application servers are available on Windows Server, Solaris, HP-UX, RedHat Linux (and other Linux distributions), AIX, OS/2, OS/390, OS/400.

    Are you telling me that the two Mainframe servers aren't stable? That the Linux (JBoss or WebSphere) isn't stable? And, if a J2EE server (WebSphere or WebLogic) is blowing up on Windows Server, I would really like to know.

    Back up your claim, please.

    --
    Just another "Cubible(sic) Joe" 2 17 3061
    1. Re:Only on Unix, you say? by modmans2ndcoming · · Score: 1

      I am telling you that all J2EE servers BLOW on windows.

    2. Re:Only on Unix, you say? by ratboy666 · · Score: 1

      Ok, we have established that Linux and Mainframe platforms don't "blow" with J2EE application servers, right? Your claim is focussed:

      "all J2EE servers BLOW on windows"

      Here is a white paper detailing a migration from SUN SPARC using Solaris and WebLogic to Dell running Windows 2000. Notice the performance improvement, and the author doesn't detail any problems with WebLogic on the Dell Windows platform.

      http://ftp.dell.com/app/2q01-Jaf.pdf

      Like I said, just give me some (small) supporting evidence (a bug report, a rumour, whatever). Crashing, installation, or performance issues welcome. Anything.

      --
      Just another "Cubible(sic) Joe" 2 17 3061
  63. Re:Multiple Languages With .Net Always a Pipe Drea by notknown86 · · Score: 1

    and it's the only rapid development platform Microsoft and Windows has

    You mean, other than Visual Studio + .net, right?

  64. Still need help with VM tail call support by ratboy666 · · Score: 2, Interesting

    Thanks for the description. I definitely see your point. Marking a tail call to allow the elimination of a stack frame, and allow static verification.

    But, mutual recursive functions that are compiled separately cannot be so marked. Of course, attempting to check for stack non-growth is probably not included -- the call can only be marked as a tail call if it is within the same source unit, and when doing the analysis prior to marking it has already been determined that no stack growth would be needed. The tail call marking can, however, be used to suppress any frame reallocation. By definition, there will then be no frame growth, as all bound variables simply have their previous binding.

    Still, this appears a complicated way of doing it.

    Consider:

    func() { ... func(); }

    can simply be replaced by:

    func() { for(;;) { ... } }

    and, the second case is already accommodated by the compiler. Of course the parameters may need to be rebound, without rebinding anything else. Which (since no further frames are to be created) is as simple as:

    func(int p) { ... func(new_p); }

    becomes

    func(int p) { int p_old; for(;;) { ... p_old = p; p = new_p; } }

    (or thereabouts, note that you can use the equivalent to C's "continue" to good effect). Anyway, with a tail call flag, I would assume it looks like this:

    func(int p) { ... func(new_p, tail_call=true); }

    Note that we are still missing somewhere to stuff the previous binding for p (old_p) on the tail call. In the "simplistic" approach, this storage is rather explicit. As far as flow is concerned, I still don't quite understand -- the compiler had to be aware anyway. So, I still don't understand why it is considered a feature.

    Although I haven't really thought about it, maybe inter-method tail calls? Maybe someone with Microsoft .Net VM experience can jump in and explain (I don't have the time to plow into Mono right now).

    Since I generally compile to C, and the second method requires poking the call machinery, I tend to like my original formulation. Still, .Net is a VM and not a compiler (although it does JIT compile, right?), so it's not a big deal.

    (What is likely is that I have missed something, possibly obvious, and need enlightenment).

    Thanks in advance
    Ratboy666 - deep down and full access

    --
    Just another "Cubible(sic) Joe" 2 17 3061
  65. Re:Multiple Languages With .Net Always a Pipe Drea by spongman · · Score: 1

    wait, languages that are syntactically different but that are able to say the same thing, are the same language??

    does that mean English and French are the same language?

  66. Re:Multiple Languages With .Net Always a Pipe Drea by Anonymous Coward · · Score: 0

    I know people sniped at VB, but the fact is that probably billions of lines of code are sitting around written in it...

    And since MS has declared that it will support the VB6 runtime for the foreseeable future, many of those apps are still being maintained and updated in VB6. Occasionally, someone requests *new* development in VB6 (I try hard to discourage this, though).

    ...and it's the only rapid development platform Microsoft and Windows has.

    Visual Studio 2002 and later are rapid development tools as long as you stick to C# or VB.Net (e.g., there's no forms designer for MS C++/CLI). For Windows RAD outside of MS tools, Delphi & C++Builder have been around forever and they support native development, although they've changed hands (now owned by Embarcadero). Also, people tend to forget (perhaps intentionally) PowerBuilder. Some people would assert that MS Access is a RAD development tool; those people are annoying...

    - T

  67. Re: continuations vs. yield return by shutdown+-p+now · · Score: 1

    I've never used Ruby or seen its continuations, but it's worth mentioning that C# has a "yield return" statement used in IEnumerator to return a value and save the current execution state in the enumerator object. This allows the the next call to the enumerator to restore the state, so it's obvious that you could implement a setjmp/longjmp with yield return plus try/finally to invalidate the jmpbufs when the calling function returns.

    "yield return" is pure syntactic sugar on C# level. The way it's implemented, the entire stack frame of the function that has any "yield" in it is lifted to heap as part of enumerator, and the latter gets an extra field to record current state for the state machine. It's all just classes and objects on CLR (VM/JIT) level.

    It's possible to implement setjmp/longjmp that way, but it would be pretty inefficient, as the overhead for putting locals on heap is high, and you pay it even if there is no longjmp. Exceptions would be a better approach.

    Since setjmp/longjmp are possible, surely you could implement Ruby's continuations.

    This doesn't follow, because you can only longjmp up the call stack, not down (i.e. not to a stack frame which is gone already). With call/cc, you can go to any state, even if it was returned from a function call that captured its own state.

    If necessary, you could even allocate each function's call stack on the heap so that jmpbufs don't have to be invalidated when the calling function returns.

    Yeah, you'd have to do that, and that kills performance, again.

  68. Re:What am i going to do with that dynamic type no by shutdown+-p+now · · Score: 1

    Example?

  69. Re:What am i going to do with that dynamic type no by shutdown+-p+now · · Score: 1

    We still have ExpandoObject, so you can pretend that you are actually writing in JavaScript when using C# 4...

    Anyway, even if all (including third-party) dynamic languages targeting CLR suddenly go away, "dynamic" is still immensely useful for COM stuff alone.

  70. Microsoft? We Don't Need No Stinkin' Microsoft! by Anonymous Coward · · Score: 0

    Fuck 'em. After all, they did it to us, the truly faithful users of VB6 and ASP VBscript.

    Now they do it to .NET developers, who are a dumber generation but who, when struck between the forehead with a two-by-four repeatedly, can finally get Microsoft's message: "Programmers? Programmers? We don't need no stinkin' programmers!"

  71. Re:Multiple Languages With .Net Always a Pipe Drea by FrootLoops · · Score: 1

    VB(6, the predecessor to .NET) needed to die, since it was designed for a different era that's passed.

    It has no cross platform compatibility, no built-in class library to speak of, and no template support. It's object-oriented, but in a way that allows you to never make your own classes if you choose--an interesting idea to try that, IMO, fails in the long term. Its use of built-in objects is schizophrenic: strings have no methods, but UI objects do. Numeric data types are somewhat nonstandard (Integer max is 2^15-1...). Run time error logging is terrible and requires numbering your code lines manually, without offering a stack trace.

    It also wasn't designed to support many tasks that became common: resolution independence, quality image resizing, taking the inverse cosine, scrolling, skinning, and data serialization all require you to implement it yourself or use third party libraries. Even Windows API calls require you to know the DLL name and method signature which, again, are found only with the help of third parties.

    Some of these defects could have been addressed with future versions. However, that would have required extensions to a broken system instead of a clean design made to avoid previous faults. Some changes would have been breaking, particularly better OO support. All in all, I'm glad MS decided to let pure VB die in favor of the much better-thought-out .NET family. I know it's convenient to say they did it for the money, and they may well have, but that doesn't invalidate all the other benefits of that decision.

  72. Not backing off .NET languages; backing off Ruby by k-zed · · Score: 1

    Has noone considered that maybe, just maybe the real reason is that Ruby is a terrible, terrible language with no good implementation and a community that's worse than 4chan and CounterStrike COMBINED?

    It was a fad; fad is over. Bury it and move on to better things.

    --
    we discovered a new way to think.
  73. FoxPro was the visual studio springboard by Anonymous Coward · · Score: 0

    but they also threw FoxPro and Visual FoxPro under the bus when they were "finished" with it. MS isn't so much about "tech" smarts - it's all about money smarts - EEE write large.

  74. Re:Multiple Languages With .Net Always a Pipe Drea by Anonymous Coward · · Score: 0

    As for rapid application development tools based on .NET: Visual Studio LightSwitch

  75. Remember... by Anonymous Coward · · Score: 0

    Developers might want to remember this when they try to sell you the next stolen/slightly modified language (C#...) Microsoft upper management are greedheads pure and simple - technology is just the carrot to be used to get your bucks. Anyone who has been around from the beginning of MS knows this.

  76. Re:Multiple Languages With .Net Always a Pipe Drea by oiron · · Score: 1

    (e.g., there's no forms designer for MS C++/CLI).

    Small quibble: It's there in 2003 onwards.

  77. Re:Multiple Languages With .Net Always a Pipe Drea by Bigjeff5 · · Score: 1

    I don't think a desire for rewrites was it -- the old-VB -> VB.NET conversion tool that comes with Visual Studio has exceeded my expectations whenever I've needed to update an old VB project.

    Goodness me. If you think that code converter was, or is, good enough to convert any sizeable project out there then I have to question your motives really. The thing was a sad joke.

    That was my experience as well. When I ran my fairly small VB6 app through the converter I immediately thought "Oh shit, I might as well re-write the damn thing". Which is what I'm doing, slowly anyway.

    If you were able to port it over, most of it would be pointless. All you've done is gotten the same old code in a new IDE, you've just ported over all the language deficiencies you had before. There are whole design paradigms that are different in .Net, and just moving the code over doesn't make them available to you. At the very least you'll have to re-factor the hell out of it, and it will be very similar to just re-writing it.

    --
    Security is mostly a superstition... Avoiding danger is no safer in the long run than outright exposure. - Helen Keller
  78. Re:So Will VBScript Return To It's Rightful Place. by Bigjeff5 · · Score: 1

    ASP.Net is still the flagship web language, is it not? I didn't think that changed. I thought all the Iron crap was just catering.

    --
    Security is mostly a superstition... Avoiding danger is no safer in the long run than outright exposure. - Helen Keller
  79. Overthinking this... by ratboy666 · · Score: 1

    Sorry (reply to myself) -- it's a tail call, so by definition, we don't need to keep "old_p" around. Since the exit point MUST be the end of the function, simply because the return point itself must be rendered irrelevant to the call. Therefore, there is never a need to restore the old binding for p, and we can simply assign (p = newval) prior to the loop back.

    My bad -- I must have been in an alternate reality while typing the above.

    Ratboy666

    --
    Just another "Cubible(sic) Joe" 2 17 3061
  80. Re:Multiple Languages With .Net Always a Pipe Drea by Anonymous Coward · · Score: 0

    I could argue that .NET is already a rapid development platform, a Java-like bussiness platform, and a getting-more-and-more-dynamic language:
    - If you want to develop in .NET the same way as in VB, you can; you can create huge objects full of unrelated functions, lots of global variables, and don't use any of the more advanced functionalities, and you will have nearly the same. If you need variants, you can have them in the latest releases.
    - The Java-like is trivial.
    - Dynamic language: a lot of the latest and coolest features added to C# are borrowed from dynamic languages, and I'm pretty sure that next releases will add more and more of them. In fact, I think the main reason they killed IronRuby is they can give C# most of Ruby's flagship features, so, what's the point?

    Ugly side of this: C# is becoming a huge multiheaded language which different programmers use in a complete different way; soon, we will end in a "worse than Perl or C++" scenario in which we will be unable to understand other people's code because it uses a totally different set of features we have never ever used or heard of.

  81. about time by NynexNinja · · Score: 1

    MSFT doesn't write any of their native apps in C#, so it makes one wonder why spend all this time writing these interpreted languages in the first place? It always seemed to me that Microsoft would want to detract people from writing C / C++ code so their own code would run faster without interpretation performance penalties. Similar to the way MSFT threw a curveball in the 80's when they push out GWBasic on their customers to fool them into thinking it was a real programming language, thereby stifling innovation and competition. Rather than release MSC++ or MASM as the default compiler, they put out GWBasic. It's all about smoke and mirrors over at MSFT.

  82. Another Language Holy War by Tablizer · · Score: 1

    Rather than get into an age-old static-versus-dynamic holy-war here, let me suggest that it depends on the kind of app and environment. If your app needs to be nimble, quick-to-market, and has relatively few final end-users; then use a dynamic language. If it's accounting, safety, legal, money-related, or will be packaged and shipped to thousands of customers, then use a static language.

  83. Re:Multiple Languages With .Net Always a Pipe Drea by Anonymous Coward · · Score: 0

    You're right, of course. I always get the Visual Studio native vs. .Net C++ capabilities confused because I'm much more frequently using C++Builder. Thanks for the correction.

    - T

  84. Re:Multiple Languages With .Net Always a Pipe Drea by Tablizer · · Score: 1

    A DataGrid appeared in VB5, well, a decent one anyway and there ended up being two or three. If you didn't use VB, well, you had to pretty much write your own so it wasn't like there was alternatives.

    There used to be a company called VB-Extra's that sold 3rd-party datagrids and other widgets with all kinds of fancy variations.