Beta
×

Welcome to the Slashdot Beta site -- learn more here. Use the link in the footer or click here to return to the Classic version of Slashdot.

Thank you!

Before you choose to head back to the Classic look of the site, we'd appreciate it if you share your thoughts on the Beta; your feedback is what drives our ongoing development.

Beta is different and we value you taking the time to try it out. Please take a look at the changes we've made in Beta and  learn more about it. Thanks for reading, and for making the site better!

Mono's WinForms 2.0 Implementation Completed

kdawson posted more than 6 years ago | from the do-not-confuse-with-wind-farms dept.

Software 164

adrian.henke writes "After four years of development, 115K lines of source code, and 6,434 commits, Jonathan Pobst announces that Mono's WinForms 2.0 implementation is now complete. This announcement has been long awaited by any .NET WinForms developer who has ever tried to get an applications to work on Linux using Mono."

Sorry! There are no comments related to the filter you selected.

This will be a big help (4, Interesting)

Pikoro (844299) | more than 6 years ago | (#23398946)

Currently working on a C# implementation of a web based in house CRM system.

Going to be nice to finally be able to support our Linux desktops as well.

We'll see how porting goes and if it's really worth the trouble.

Re:This will be a big help (1)

pembo13 (770295) | more than 6 years ago | (#23399156)

So the requirements of your business problem required cross-platform support, yet you chose a tool which is decidedly not cross-platform? Why?

Re:This will be a big help (4, Insightful)

Anonymous Coward | more than 6 years ago | (#23399166)

Where did he say that cross-platform support was required? There's a big difference between something that's required and something that's nice.

Re:This will be a big help (1)

Haeleth (414428) | more than 6 years ago | (#23400102)

So you don't think it's a bit odd for any organisation that has Linux desktops as well as Windows desktops to deliberately choose a potentially-Windows-only system for developing corporate tools? Particularly one that's practically indistinguishable from Java, which runs perfectly on both Windows and Linux by design.

Re:This will be a big help (3, Interesting)

ushering05401 (1086795) | more than 6 years ago | (#23400324)

"Particularly one that's practically indistinguishable from Java, which runs perfectly on both Windows and Linux by design."

Except that Java doesn't run perfectly on Windows and Linux. Many people see C# as a language that set out to be a better Java than Java, and many people feel that on the Windows platform it succeeds. Combine that with the existing Windows install base and you have a pretty compelling reason to develop in C# over Java.

Ten years down the line, however, I could see C# facing extinction if it does not become truly cross platform.

mod parent up, please (1)

Project2501a (801271) | more than 6 years ago | (#23400464)

thanks :)

Re:This will be a big help (1)

LWATCDR (28044) | more than 6 years ago | (#23402102)

Have you ever used Java?
I do all the time. Try out Eclipse.org, Netbeans, or Jedit sometime.
They work really well on both Linux and Windows.
I find Java to be a good development system. It even works just fine on the desktop if you write good Java code.
The real problem that java had was applet abuse. Applets are really a great solution to a lot of problems. The problem was when people start to use them for things like Hover buttons and other useless stuff that now is often written in flash.. The junk also gives flash a bad name.
C#? To be honest I have not tried it. It may be good but the current versions of Java are really very nice to work with.

Re:This will be a big help (3, Funny)

WED Fan (911325) | more than 6 years ago | (#23402156)

Particularly one that's practically indistinguishable from Java

Knock knock.

Who's there?

...long pause...

Java.

The only reason, ONLY reason, to use Java is because you are psychotic and have a deep, long standing hate for your users and wish to inflict some of the most insidious pain and torment upon them.

Re:This will be a big help (1)

mweather (1089505) | more than 6 years ago | (#23402656)

I thought that was the reason to use Mono.

Re:This will be a big help (0)

Anonymous Coward | more than 6 years ago | (#23399262)

Not required, but nice to be able to offer it.

Does a hot dog stand need some picnic tables to operate? No, but they're nice if you can add them.

too little, too late? (-1, Troll)

petwalrus (645792) | more than 6 years ago | (#23398970)

It is interesting that now that Mono is getting to a more complete (and possibly usable state), most developers have moved beyond the .NET hype and onto more elegant development platforms...

Re:too little, too late? (1, Insightful)

Metasquares (555685) | more than 6 years ago | (#23399070)

What platforms? .NET is very clunky, but it still seems very popular.

Re:too little, too late? (2, Interesting)

Anonymous Coward | more than 6 years ago | (#23400368)

I'd be interested in knowing what .NET is clunky in comparison to. If you mention Apple's Objective C approach, you probably don't deserve to have an opinion here.

WinForms as a library is a little old fashioned, but in combination with Visual Studio it's very slick and one of the most productive GUI environments around for building desktop applications. If you want to build fruity super-slick GUIs, you have WPF to do that (but the Visual Studio designer isn't as nice).

There isn't a better platform on Windows for developing desktop or server applications than .NET around right now. Especially not since Visual Studio 2008 came out.

Re:too little, too late? (1)

mweather (1089505) | more than 6 years ago | (#23402690)

Tcl/Tk?

Re:too little, too late? (1)

Spy der Mann (805235) | more than 6 years ago | (#23401488)

Behold the power of marketing! This is the reason why Microsoft platforms are so popular. I still remember the days where .NET was marketed as the "next big thing" and courses and seminars were practically around every corner. But what is its real technical merit?

This is one of the reasons why I hate Microsoft. If they invested at least 10% on development what they invest in marketing, this would be a much better place.

Re:too little, too late? (1)

Da Fokka (94074) | more than 6 years ago | (#23401700)

The GP post named a reason why .NET is widely used: productivity. You do not respond to this argument but assert that anyone who like .NET must have been swayed by marketing. Admittedly, the GP post was sparse on argumentation but it was pretty informative compared to your rant.

I've been developing in C#/.NET for the past four years and I really like .NET (and I do have some experience with Java). There are three arguments why I like .NET:
  - For many design scenario's, developing in .NET is incredibly productive.
  - In C#, it's possible to write code that's both conceptually nice and productive. I am aware that I'm begging for a flamewar here but in my opinion, Java's 'everything is an object' approach sounds clean at first but makes for some really clunky code.
  - Personally I prefer the look and feel of Visual Studio.

I am aware that the last argument is entirely depending on taste and the second to last argument is at least partially a matter of taste. But the main reason why .NET is used quite widely is because of productivity.

Re:too little, too late? (3, Insightful)

DigitlDud (443365) | more than 6 years ago | (#23399112)

I'm also very interested to hear what these platforms are.

Re:too little, too late? (0, Offtopic)

flydpnkrtn (114575) | more than 6 years ago | (#23399200)

Methinks we've been trolled folks.

Re:too little, too late? (5, Informative)

nguy (1207026) | more than 6 years ago | (#23399220)

It is interesting that now that Mono is getting to a more complete (and possibly usable state), most developers have moved beyond the .NET hype and onto more elegant development platforms...

Please stop conflating Mono and .NET. Mono supports .NET, but that's not its primary API.

In fact, the primary API is the same API lots of open source software uses: Gnome, Gtk+, and many standard open source libraries. All Gnome apps using Mono use the Gtk+ APIs.

I wish there were better alternatives, but C# + Gtk# + MonoDevelop is probably the most elegant development platform right now. Nothing else really comes close. Python is a more elegant language but doesn't have a comparable IDE. Objective-C and Cocoa are messily intertwined with C and C APIs. And Java is a bloated pig.

Re:too little, too late? (2, Interesting)

revlayle (964221) | more than 6 years ago | (#23399326)

Maybe the mono devs can get an implementation of IronPython going? Then you can have Python + a damn good IDE (i was surprised how well Mono Develop is myself)

Re:too little, too late? (3, Insightful)

setagllib (753300) | more than 6 years ago | (#23399508)

IronPython already works fine on Mono, but it doesn't have IDE support. PyDev in Eclipse is pretty nice for pure Python and Jython.

Personally I'd rather work directly in Python/Ruby on GTK/Qt than go through an extra layer that is .NET. Maybe Anjuta could stop sucking and support Python, or Eclipse could have Glade integration.

And while Mono's not horrible, but it's not nearly as fast as the Sun JVM, so if I want fast bytecode I'd rather use Java than C#.

Re:too little, too late? (0)

Anonymous Coward | more than 6 years ago | (#23400012)

And Python/Qt on GTK+/Qt isn't "an extra layer" because?

Re:too little, too late? (1, Flamebait)

Alex Belits (437) | more than 6 years ago | (#23401092)

And Python/Qt on GTK+/Qt isn't "an extra layer" because?
Because Mono is sitting between a language (Python) and widget set (GTK+) as an imitation of a Microsoft product designed to shield a language (sometimes Python but mostly C#) from a widget set and OS API (Win32).

Except, of course, Win32 API is a disgusting piece of shit that should better be shielded from developers by something, and GTK+ is a widget set with a very straightforward design. Heck, Windows GTK+ port even runs on top of Win32. And so does Windows port of Qt, with absolutely no need for .Net, Mono or other additional layers.

Re:too little, too late? (4, Informative)

setagllib (753300) | more than 6 years ago | (#23401206)

It's a pretty thin layer compared to an entire extra base library + bytecode runtime + OS abstraction.

PyGTK layers:

Your code (python)
PyGTK code (python)
Python runtime (C)
PyGTK->GTK binding (C)
GTK+libc code (C)
kernel (C)

IronPython + Gtk# layers:

Your code (python)
IronPython code (python)
IronPython runtime (CLI)
Gtk# code (CLI)
Mono base (CLI)
Mono runtime (C)
Gtk# -> GTK binding (C)
GTK+libc code (C)
kernel (C)

That's a fun one to deploy, let me tell you.

Re:too little, too late? (0)

Anonymous Coward | more than 6 years ago | (#23401900)

C# (under the .NET CLR, at least, I can't speak for Mono) is jit-compiled to machine language before execution. It's stored in the file as "bytecode" (IL), but it's not run that way.

Re:too little, too late? (1)

neonux (1000992) | more than 6 years ago | (#23400628)

Alternatively you can use Boo http://boo.codehaus.org/ [codehaus.org] , which has a MonoDevelop addin : http://monodevelop.com/Download [monodevelop.com]

Boo is an object oriented statically-typed programming language for .NET/Mono with a Python inspired syntax and a special focus on language and compiler extensibility.

It actually has the feel of Python but has also all the features .NET can offer (contrary to IronPython)... and performance [Boo is on par with C# since it is statically-typed by default... you can use dynamic-typing where you really need it])

Re:too little, too late? (1)

samkass (174571) | more than 6 years ago | (#23399402)

"And Java is a bloated pig."

At the risk of feeding the trolls, in what way is C# + Gtk# + MonoDevelop less of a bloated pig than Java? Java is actually a very fast, extremely productive platform to develop on with a top-shelf toolchain (in fact several).

Re:too little, too late? (1)

sumdumass (711423) | more than 6 years ago | (#23399530)

I don't know about the definition of bloated, bit it is a pig on resources and slow as hell on my older computers. Perhaps that is the inference he was attempting to make.

Now, X seems to slow some things down a little but I haven't really seen the comparative mono applications act in the same ways as java seems to. However, it should also be noted that I can't really compare apples to apples here because I don't have applications doing the same things in similar ways written in the different languages to really compare. I do know that something like the Angry IP Scanner which recently went Java is slower compared to previous windows versions. But that isn't exactly mono though.

Re:too little, too late? (1)

siDDis (961791) | more than 6 years ago | (#23399674)

Java is very fast and I think these numbers speaks for them self http://www.bytonic.de/html/benchmarks.html [bytonic.de]

Re:too little, too late? (1)

Corwn of Amber (802933) | more than 6 years ago | (#23400278)

Java is fast? Go try to run Azureus and weep.

Oh, you do? And you think it is fast? Try utorrent on Windows or Transmission on OSX or KTorrent on Linux some time.

Re:too little, too late? (1)

LarsWestergren (9033) | more than 6 years ago | (#23400334)

Java is fast? Go try to run Azureus and weep.

The performance of a single benchmark is hardly indicative of a whole platform... you might as well say - "Linux is fast? Go try run Azureus and weep".

Re:too little, too late? (3, Interesting)

Corwn of Amber (802933) | more than 6 years ago | (#23400484)

Okay.

"Java might be a great development platform, but the performance of java apps on the desktop is so pitiful they're painful to use."

More?

"Sever-side apps written in Java have great perfs, however, which is easily explained since they're meant to be run on a score of UltraSPARC hyperthreaded multicore CPUs that command a ton of RAM."

Better that way, yes, you're right.

Re:too little, too late? (0)

Anonymous Coward | more than 6 years ago | (#23400856)

I am SO hot for you now.

PS: Yes, I'm a guy.

Re:too little, too late? (1)

DuckDodgers (541817) | more than 6 years ago | (#23401922)

Java loads a huge number of libraries at startup, and then as it translates its bytecode into machine code there is a lag. So the code startup is a very royal pain in the ass.

But once your Java application or server is running, the performance of a decent Java app can be within 20% of C++, which is plenty quick and much faster than any scripting language equivalent. You don't need a commercial grade server.

I'm not saying Java's the greatest language. But a lot of people seem to think the language is stuck in 1995.

Re:too little, too late? (0)

Corwn of Amber (802933) | more than 6 years ago | (#23402280)

Not only code startup... I meant to say that Java programs, even JIT compiled, even natively compiled, are teh suck for perfs.

In the case of Azureus, it's just a case of hammer meets screw : an app that runs quasi continuously, gobbling up cycles and RAM like crazy, all because it's coded in Java so that the devs get to write it once and debug it everywhere. Or package it everywhere, with that process' own problems.

It just should not have been programmed in Java, especially since it's supposed to run continuously (no one stops BitTorrent clients after downloading just one linux ISO. That's the story for the suits, remember? We're among ourselves here.).

And it's not like a BT client sits idle all the time! HEAVY I/O there, from/to disk and network. So, inefficient code that gets indirected four times before any actual operation running all the time doing heavy I/O : well, that explains the need for

a score of UltraSPARC hyperthreaded multicore CPUs that command a ton of RAM.


Not that Java is bad, it's just Not For The Desktop. A fast, portable lib that abstracts everything platform-specific? Qt.

Not even beginning to speak about how my hackintosh beachballs for MINUTES when loading webpages with applets...

Java is for servers. Servlet. Repeat after me. Serv-let. A ton of RAM and two hundred "hyper"threads running in one hundred cores on fifty CPUs. THAT runs Java fast enough. On the desktop, forget it. Applets take hours to load, apps can be written once, but have to be debugged everywhere, several indirection layers to each and every instruction, ugly interfaces that NEVER EVER look right, and can't update over once a second (and thus feels sluggish with a load of 0,1)...

Now, writing JSPs, on the other hand, that is sweet. Powerful and ... dunno, it just feels good.

Oh, about the 20% : I believe you. 20% of perf of equivalent C++ code, that's a 80% perf loss, it's about right. It's okay, I would not want to write C++ Server Pages. And since they would need five times more code, they'd have about the same perfs on the same hardware.

Re:too little, too late? (1)

John Betonschaar (178617) | more than 6 years ago | (#23400822)

The only thing slow about Java are the GUI libraries and the initial VM startup, for non-interactive stuff it is actually very fast. Anyone wanting to develop GUI applications using Java should use some kind of native GUI library through JNI.

Re:too little, too late? (1)

AmaDaden (794446) | more than 6 years ago | (#23402406)

Very true. Because of this Java's current market is web sites. I'm not referring to applets but rather JSPs. It runs as a server so the start up time is a non-issue. Since it is being used to generate HTML and not really render anything in the native environment it does not touch the GUI libraries. Because of this is makes an excellent platform for web apps. Off the top of my head I know it's used by ebay and a few banks. It's also the back bone of the Google web toolkit so it's what runs gmail and several other google things. By design it can be written such that you can design a web site so that you can't tell it's running JSPs so it's hard to really tell who is using it.

Re:too little, too late? (4, Insightful)

Simon Brooke (45012) | more than 6 years ago | (#23401048)

Java is fast? Go try to run Azureus and weep.

Oh, you do? And you think it is fast? Try utorrent on Windows or Transmission on OSX or KTorrent on Linux some time.

People can write slow programs in any language. The question is, can moderately competent programmers write fast, efficient, maintainable programs in them? Pointing to one example is pointless. Back on topic, a quick check on Alioth [debian.org] will show you that overall, Java is faster than C#/Mono but uses more memory (although on some benchmarks the opposite is the case). It's also worth pointing out that although Java is not faster than C++ on any benchmark, it's substantially slower on only three. In general the performance of a program has much more to do with good design and good algorithms than it has to do with choice of language.

latency != perf (1)

Corwn of Amber (802933) | more than 6 years ago | (#23402428)

Yeah, but a GUI app that has an FPS of one and below is UNUSABLE CRAP.
That's the case of Azureus.
That's not the case of, say, Paint.NET (Bad example, I know, it's just the most widely-used .NET program vs the most widely-used Java program).

Benchmarks don't mean shit. .Net code does not take an age and an half to load 150 megs of libs and gobble up about as much RAM. It does not ruin my browsing with its "Java runtime loading, go plant some coffee trees and by the time you've harvested, dried, fermented, roasted, shipped, ground, and used them, I might have finished loading, unless it's near harvest season already; in which case, come back next year when your applet gives its ridiculous ripple effect on half the webpage so that it's illegible save for the 200 pixels above the smeared text".

I win.

Re:too little, too late? (0)

Anonymous Coward | more than 6 years ago | (#23402794)

.NET got to learn from Java's mistakes, so the most egregious problems are not found there.

A few things that help improve performance and memory use include:

* Value types (instead of limitations on objects).
* Generics supported in the VM (code sharing + code paths optimized for the type; On Java there are no generics in the VM).
* Stack-allocated objects.
* P/Invoke (avoiding the whole JNI)
* No mandatory exception catching, less bloat.

Value types and generics are probably responsible for a large chunk of memory savings. This means that small data structures do not need to be wrapped in "objects", they are represented in the same way that a C struct is represented.

Re:too little, too late? (0)

vux984 (928602) | more than 6 years ago | (#23399424)

Python is a more elegant language but doesn't have a comparable IDE.

I somewhat disagree.

The use of indentation alone to convey semantics is an extremely annoying flaw. It makes python code particularly susceptible to mangling. I like that I can write C# code (or code in most languages), copy and paste it, or make significant edits, and then simply tell the IDE to reformat it.

I also like that C# checks typing at compile time. I fail to see a worthwhile advantage to how Python does it. The more simple bugs you can fix during compilation the better. I concede that Python makes certain types of action easier, since you can basically have 'anonymous interfaces', but in practice it leads to more errors, and really only saves a little bit of coding effort, in my opinion.

Meanwhile C#3 extension methods, lamda expressions, and linq syntax in particular are truly a pleasure to work with.

I'm not going so far as to say c# is more elegant than python, and c# has its flaws too... and I'd put them both in the running for most elegant language... but python's semantic indentation drives me nuts. There's nothing that fundamental to C# that annoys me the same way to the same extent.

Re:too little, too late? (0)

Anonymous Coward | more than 6 years ago | (#23399516)

Python's an interpreted dynamic language, C# is a compiled static language. Trying to use one like the other is a recipe for a headache.

The two don't really compete so much as solve completely different problems. Personally, I love Python for writing all those throwaway programs I need to scratch various itches. Dynamic typing means you're not worrying about defining 500 lines of boilerplate classes before you even get down to coding logic.

Meanwhile, I use a static, compiled language whenever I want strong type guarantees. This is generally any largish, non-trivial project that needs some form of rigorous structure. (These are fewer and farther between than one might think, though.)

Of all the scripting languages, I think I like Python the most. But I still develop in plenty of other languages; it's just a nice option to have. One of the best things about Python is how well it integrates into C, and by extension, any language that supports C interfaces (aka, all of them worth mentioning).

Re:too little, too late? (1)

Saffaya (702234) | more than 6 years ago | (#23399800)

I can write C# code (or code in most languages), copy and paste it, or make significant edits, and then simply tell the IDE to reformat it.
Which IDE do you use ?
I have nothing like you describe when working with C++ under Visual Studio.

Re:too little, too late? (2, Informative)

Anonymous Coward | more than 6 years ago | (#23400010)

Ctrl-A, Ctrl-K, Ctrl-F

Re:too little, too late? (0)

Anonymous Coward | more than 6 years ago | (#23400026)

ctrl-shift-f in eclipse to reformat
ctrl-shift-o to fix all includes/imports

Re:too little, too late? (1)

ThaReetLad (538112) | more than 6 years ago | (#23400056)

VS2008 has this, as does the Visual Assist VS plugin for all previous VS versions

Re:too little, too late? (0)

Anonymous Coward | more than 6 years ago | (#23399994)

Glad you're happy.

Personally I think that since indentation is pretty much required anyway, you may as well have the language take advantage of it for you.

I just find Python so much more consise than C#, all the extra fluff in C# doesn't seem to help reduce bugs, as opposed to the extra verbosity in Python over Perl, which does reduce bugs.

It's just a shame that IronPythonStudio is nowhere near as good an IDE as VS is for C#, and Python really does _need_ an IDE. Oh, and that Linq looks like an ugly add-on in Python whereas it's part of the language in C#.

By far my favourite thing is that I can continue writing in my favourite language while happily calling code you've written in yours and everything works flawlessly. Thanks to Mono, I can also take code I've written on windows and run it on both MacOS and Linux. It's hard to get into religious wars when tools work together!

Re:too little, too late? (3, Interesting)

Anonymous Coward | more than 6 years ago | (#23400650)

wish there were better alternatives, but C# + Gtk# + MonoDevelop is probably the most elegant development platform right now.

You'll find that that's because C# was designed with an IDE in mind. Everything is statically typed (for intellisense) and the object oriented nature allows for easy code completion. Even look at the new LINQ (Allows you to query arrays/lists/etc. in memory)

var result = from dataType in myCollection
                                                            where .....

Notice how it the IDE will have enough information to offer you code completion the whole way though. Even though it'd be more intuitive to format it more like SQL.

So in closing, Python can never even hope to have an IDE that matches C# or any language designed for the purpose.

One word (0)

Anonymous Coward | more than 6 years ago | (#23402048)

"MonoDevelop is probably the most elegant development platform right now"

not even close... one word: EiffelStudio

Re:too little, too late? (3, Informative)

malevolentjelly (1057140) | more than 6 years ago | (#23399356)

Say what you will about Mono, I think Microsoft's implementation of .NET is actually a pretty strong contender. If you need to solve a problem in Windows really fast, it can be pretty insanely convenient. I think Powershell in Windows Server basically uses a .NET machine for its shell interface. If you ever need Windows machines and Unix machines to talk to eachother, a Mono compatible implementation could be even more convenient than having Python talk to .NET, which isn't too hard to begin with.

But can I actually use it for anything? (5, Insightful)

beoba (867477) | more than 6 years ago | (#23399028)

..and still nothing on whether WinForms is legally safe to use.

Re:But can I actually use it for anything? (0)

Anonymous Coward | more than 6 years ago | (#23399092)

What's Microsoft going to do, call the police?

Re:But can I actually use it for anything? (1)

edalytical (671270) | more than 6 years ago | (#23399144)

Worse, call the layers.

The police are to busy raiding trailer parks, writing traffic tickets, busting drug users, and harassing kids.

Re:But can I actually use it for anything? (4, Funny)

Vectronic (1221470) | more than 6 years ago | (#23399558)

"Worse, call the layers"

Which layer? does Mono have a self-destruct layer?

using System.Microsoft.Infringement;

public static void Main(string[] args)
{
      If (Patents.Count > 0)
      {
            ForEach(Match match in Patents
            {
                  Console.WriteLine(match.patentname + ": " + match.patentcode);
            }
      }
}

Error Buffer Overflow

Yeah, yeah... you meant "lawyers" I know... and I dont code in C# so it might not do anything anyways...but... "call the layers" made me laugh...

Re:But can I actually use it for anything? (1)

YttriumOxide (837412) | more than 6 years ago | (#23399624)

I know you said you don't code C#, but really that's no excuse for missing a close bracket at the end of the ForEach statement (which, just FYI, should be "foreach" in C#, this isn't VB.net!)

Anyway, I laughed, and if I'd had mod points, you'd have got a "Funny" from me.

By that standard linux isn't safe to use either (1)

leftie (667677) | more than 6 years ago | (#23399680)

SCO still has a few law schools worth of lawyers on retainer, and a new group of big bucks sugar daddies to fund a few more rounds of lawsuits.

These extremists are not going to surrender. They see open source/free software as a form of communism. These are not the sort of people who call off an already declared war. They are going to keep on filing new lawsuits until they manage to land their lawsuit in the courtroom of a judge who is just as warped and extreme as they are.

Re:By that standard linux isn't safe to use either (1)

Corwn of Amber (802933) | more than 6 years ago | (#23400306)

Or until they run out of courtrooms. There are only so many circuits to sue and file appeals in, and once it's before the Supreme Court, the judgement is pretty final meseems.

And how do you think Alito will feel about Linux? (1)

leftie (667677) | more than 6 years ago | (#23400612)

Scalia? Roberts? Thomas?

The final judgement by the Roberts & Co. is not likely to be one you're gonna like.

Re:But can I actually use it for anything? (0)

Anonymous Coward | more than 6 years ago | (#23401398)

So, Microsoft fans aren't the only ones to employ FUD.

Would be awesome... (1)

jwkfs (1260442) | more than 6 years ago | (#23399038)

If only Microsoft weren't up to 3.5 already. I just kid. Admittedly I haven't looked in depth at any of the versions of .NET > 2.0, but they didn't really seem to have any super awesome new features that I really wanted.

Re:Would be awesome... (5, Informative)

batkiwi (137781) | more than 6 years ago | (#23399422)

Info for you: .NET 3.0 is 4 additional dlls, otherwise it IS .NET 2.0. Same runtime/etc. It adds:

-WCF: GREAT new tech. You write a module, and then expose it remotely via config. So if you want to change from Remoting to Compliant Web Services you simply change a config setting. Or you can expose simple services via REST. It abstracts "transport" from "functionality".
-Cardspace: dud. Single sign on/identity mgmt which is being replaced by openID it seems. Cool idea though.
-WPF: Cool new xml based description language to fully abstract process from gui much in the way ASP.NET does. It also lets UI designers "skin" apps seperately from the app code itself. VERY nice tech, especially the bindings.
-WF: Nice tech, not quite mature but neat to use. It allows for program logic to be described in an xml format (XAML) and shown in a gui designer. I really like workflow tech NOT because it lets business users program (it DOESN'T) but because it gives you an artifact that users can understand AND CONFIRM. .NET 3.5 is enhancements and bugfixes of 3.0 PLUS LINQ. LINQ is either the best thing ever, or the worst thing ever, depending on who you ask. I think "both." LINQ allows you to apply "sql-esque" syntax to any IEnumerable provider. So if you have an in memory collection of animals you can do:

var monkeys = from animal in myAnimalsCollection
                              where animal.Type == monkey
                              select new {animal.ID, animal.Name, animal.BirthDay};

foreach(var monkey in monkeys) .... do stuff

Re:Would be awesome... (4, Informative)

setagllib (753300) | more than 6 years ago | (#23399550)

LINQ is nice, except it's decades too late. Of the languages in common use today, Python and Ruby have much better alternatives to linq built in (and have had them for many years), and even new languages like Scala support similar functionality.

Your example in Python with a list comprehension, broken down into multiple lines for clarity:

monkeys = [
    (animal.id, animal.name, animal.birthDay)
    for animal in myAnimalsCollection
    if animal.type is monkey
]

And a comprehension of multiple lists is similar:

pairs = [
    (a, b)
    for a in range(10)
    for b in range(10)
    if b == a * 2
]

You have been able to do that for many years in Python, and yet Microsoft fanatics act like it's something new and innovative.

Re:Would be awesome... (1)

mikeburke (683778) | more than 6 years ago | (#23399666)

Does the python version read from a database or an XML document?

The LINQ syntax does that. It's not just a fancy way of iterating over an in-memory collection.

Re:Would be awesome... (1, Informative)

Anonymous Coward | more than 6 years ago | (#23400006)

Python containers can read from whatever source they are designed as they are iterated. LINQ seems to be syntactical sugar not unlike list comprehensions.

Re:Would be awesome... (4, Informative)

makapuf (412290) | more than 6 years ago | (#23400308)

The python version reads from an iterable, so it can be a request from a DB or an XML file sending its result one by one. In the case of the Db, the filtering will however be done by python and not in the DB.

However, there are alternative ORM python syntax to DB mappings, such as django syntax

AnimalCollection.filter(type='monkey')[:10].order_by('age')
(talking about simple orms, not full sqlalchemy table declaraions)

Being able to customize filtering of container classes for iterators definition would be cool anyway.

Re:Would be awesome... (1, Interesting)

Anonymous Coward | more than 6 years ago | (#23400108)

You have been able to do that for many years in Python, and yet Microsoft fanatics act like it's something new and innovative.
And Python copied the idea from Haskell, yet Python fanatics act like it was something new and innovative. I bet Haskell took the idea from somewhere else too...

Re:Would be awesome... (1)

setagllib (753300) | more than 6 years ago | (#23401142)

Like I said, I'm only talking about *popular* languages and I didn't claim it was innovative in Python. Python does it and does it well, and unlike Haskell, Python enjoys wide real-world use.

Re:Would be awesome... (1)

adrian.henke (852642) | more than 6 years ago | (#23400240)

> Python and Ruby have much better alternatives to linq built in (and have had them for many years) It's not about the shiny syntax, its about having an additional layer to grab data from datasources like SQL or XML. You can use the same LINQ syntax to deal with data from all kind of data sources, that's what it is all about.

Re:Would be awesome... (4, Informative)

Just Some Guy (3352) | more than 6 years ago | (#23402338)

You can use the same LINQ syntax to deal with data from all kind of data sources, that's what it is all about.

All the usernames on a Unix system:

print [line.split(':')[0] for line in file('/etc/passwd')]

Dates from an SQL table:

sth.execute('select invdte from invoice where invid=%(invid)s', {'invid': 1000090340})
print [row[0] for row in sth]

Search Google for "list comprehensions" and print the text of every "<a href" tag on the page:

import urllib2
import BeautifulSoup

agent = 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)'
url = 'http://www.google.com/search?q=list+comprehensions'
google = urllib2.Request(url, headers={'User-Agent': agent})
soup = BeautifulSoup.BeautifulSoup(urllib2.urlopen(google).read())
print [link.contents for link in soup.findAll('a')]

Basically, anything Python can loop across works inside a list comprehension. It's a basic construct of the language.

Re:Would be awesome... (1)

Cyberax (705495) | more than 6 years ago | (#23400758)

LINQ is different - it's STATICALLY checked while Ruby's or Python's versions are dynamic.

LINQ also introduces type inference, anonymous types and extension methods to C#. While none of this is new, I have not yet seen another _popular_ language supporting it.

Re:Would be awesome... (2, Insightful)

setagllib (753300) | more than 6 years ago | (#23401172)

When you already have a dynamic language, type inference, anonymous types and extension methods are implicit. I'm not arguing every language should be dynamic, but the additions to C# are just solving problems specific to static languages. That's fine - static languages are still much faster than dynamic ones. Just saying, as far as languages go, C# is the one playing catchup, and with about a 20 year gap for many features.

Re:Would be awesome... (1)

plague3106 (71849) | more than 6 years ago | (#23401948)

I don't think I'd call Ruby in "common use." Or Python for that matter; still lots more Java, C# or PHP it seems. Also, Linq is "built-in," so I'm not really sure why you are trying to imply it's not. Granted it's a bunch of compiler magic (aka syntatic sugar), but it's proving to be EXTEREMLY useful.

I think "MS fanatics" are excited about it because it's now in the tools they use. I don't know of that many python / ruby developers that target the MS platform exclusively..

Re:Would be awesome... (0)

Anonymous Coward | more than 6 years ago | (#23401386)

Wow, you should write documentation for Microsoft. Great roundup of those technologies!

Re:Would be awesome... (1)

godefroi (52421) | more than 6 years ago | (#23402136)

More accurately,

2.0 is the base framework.
3.0 is 2.0 plus some new libraries.
3.5 is 3.0 plus some new libraries and a new compiler.

You can use all the new neato stuff from ".NET 3.5" or "C# 3.0" like extension methods, lambdas, type inference, etc on the 2.0 framework if you compile with the 3.5 compiler.

Re:Would be awesome... (1)

plague3106 (71849) | more than 6 years ago | (#23401880)

You should check out Linq. Also, I'm loving Wpf for creating UIs. Controls that I had to either spend hours coding myself or lots of money purchasing I can now easily create on my own.

Honestly, there are a lot of things in C# i would love to see in Java; real generics, explicit interface implemenation, etc.

"This announcement has been long awaited ... (4, Funny)

Helmholtz (2715) | more than 6 years ago | (#23399042)

...by any .NET WinForms developer who has ever tried to get an applications to work on Linux using Mono."

All five of them.

Re:"This announcement has been long awaited ... (1)

pembo13 (770295) | more than 6 years ago | (#23399134)

Some people realllyyyyy like .NET. I use .NET all the time, but I can't say I like it half as much as Python.

Re:"This announcement has been long awaited ... (1)

neonux (1000992) | more than 6 years ago | (#23400602)

Have you tried Boo ? http://boo.codehaus.org/ [codehaus.org]

Boo is an object oriented statically-typed programming language for .NET/Mono with a Python inspired syntax and a special focus on language and compiler extensibility.

It has the best of both worlds ;)

Re:"This announcement has been long awaited ... (2, Informative)

Anonymous Coward | more than 6 years ago | (#23400828)

Any language that requires me to pay attention to white-space as much as Python should be dragged into the streets and beaten.

Sorry.

Re:"This announcement has been long awaited ... (1)

imess (805488) | more than 6 years ago | (#23399180)

Where's the other 4?

Re:"This announcement has been long awaited ... (1)

Alex Belits (437) | more than 6 years ago | (#23401170)

One of them is, I guess, Miguel himself.

Still three left.

Re:"This announcement has been long awaited ... (4, Funny)

thegrassyknowl (762218) | more than 6 years ago | (#23399426)

Five? I think you should stop rounding up to a whole hand!

Mono is good stuff (1)

Ed Avis (5917) | more than 6 years ago | (#23400162)

Come on now, this is a pretty significant step. Lots of Slashdotters must be stuck developing Windows .NET applications and would love to find a way to deploy them on Linux. If you haven't tried it, Mono is pretty cool: copy your .NET executable to Linux and run

% export MONO_IOMAP=all
% mono my_program.exe

You might be surprised how well it works.

Very nice (4, Funny)

nuzak (959558) | more than 6 years ago | (#23399158)

> I use .NET all the time, but I can't say I like it half as much as Python.

I know what you mean -- ELF just doesn't hold a candle to Perl.

Re:Very nice (1, Informative)

jamesh (87723) | more than 6 years ago | (#23399360)

I can kind of see the point you were trying to make, but .NET doesn't just refer to the bytecode interpreter - it also refers to the runtime libraries etc, which is I think the point that the GP was trying to make.

The fact that python can run under .NET confuses the issue a bit too... but I think most of us can get our heads around it :)

SWF GUI builder? (2, Interesting)

IBBoard (1128019) | more than 6 years ago | (#23399928)

Does this mean we can finally get a SWF GUI builder in MonoDevelop on Linux?

I've got a couple of apps I wrote while I was using Windows and now I use Fedora Linux. The back-end library code and my newer apps that use GTK# are fine to edit in MonoDevelop, but I've got a VirtualBox install with WinXP and Visual Studio in it for now so that I can update the System.Windows.Forms layouts when I need to.

Hopefully the "API complete" also means they'll fix some of the odd rendering I've seen at times :)

Re:SWF GUI builder? (1)

wasbridge (1190863) | more than 6 years ago | (#23400848)

I have a Flash like IDE for linux Open Dialect google it or http://dialect.openmodeling.net/ [openmodeling.net] (use the google cache if its down). Its C# using GTK# and Flex for a backend. The linux version that I have up is old so you may wanna build from in Mono

Re:SWF GUI builder? (1)

IBBoard (1128019) | more than 6 years ago | (#23401492)

I meant System.Windows.Forms, not Shockwave Flash ;)

But why the Win32 style in WinForms? (3, Interesting)

master_p (608214) | more than 6 years ago | (#23399990)

From the blog:

You can use handles in Winforms, they just do not map to an actual HWND on non-Win32 systems, but you can definitely use them, and you can even override WndProc methods on derived classes from Control and process a pile of WM_ messages that Mono's Winforms actually builds on.

Why WndProc, HWND and WM_ messages are still there? I understand Microsoft built a software monopoly by mixing Window System management and a GUI toolkit together (and transferring it to .NET ensures that monopoly), but isn't .NET supposed to be one of the most advanced toolkits out there? Having to rely on WndProc, HWND and WM_ messages seems a very bad design for me (I've been developing MFC apps for a decade now and I know of the numerous problems that might come up), and unfortunately Mono WinForms copied that in order to be compatible with .NET.

Initially I thought 'wow, a contender to Qt/Java for building cross-platform apps', but after reading the blog and being an supporter of anything but Win32 (the ugliest API ever written), I will think twice before using Mono or .NET for cross platform development.

Re:But why the Win32 style in WinForms? (0)

Anonymous Coward | more than 6 years ago | (#23400054)

I would rather say the largest/most complete API ever written.

Re:But why the Win32 style in WinForms? (3, Interesting)

jonwil (467024) | more than 6 years ago | (#23400074)

Use GTK# if you want a cross-platform UI toolkit based on .NET.

This work on WinForms is intended to provide a way to run .NET applications written for Windows on top of Mono. And for doing that, it has to be compatible with the Microsoft implementation of WinForms.

Re:But why the Win32 style in WinForms? (1)

master_p (608214) | more than 6 years ago | (#23402078)

But if I want my app to be cross platform, why not right it in GTK# from the beginning?

Re:But why the Win32 style in WinForms? (3, Insightful)

Haeleth (414428) | more than 6 years ago | (#23400114)

unfortunately Mono WinForms copied that in order to be compatible with .NET.
Um, yes, Windows compatibility was kind of the entire point of supporting Winforms, you know?

If you don't want to be compatible with Win32, use GTK#.

Mono's WinForms 2.0 Implementation Completed (0)

Anonymous Coward | more than 6 years ago | (#23400442)

s/Implementation/Infringement/

WinForm (1)

sproketboy (608031) | more than 6 years ago | (#23400890)

WinForms is so 2 years ago. It's MPF now. Here's a good article on the failings [arstechnica.com] of .net.

Re:WinForm (1)

0xdeadbeef (28836) | more than 6 years ago | (#23401684)

And by good, you mean several pages of vague, unsubstantiated fanboy whining, with only one paragraph about .NET that hints at, but does not name, the stupidity of InvokeRequired [microsoft.com] .

WinForms 3.0? (0)

Anonymous Coward | more than 6 years ago | (#23401912)

I guess this means that Microsoft will come out with WinForms 3.0 now. Good luck playing catchup!
Load More Comments
Slashdot Login

Need an Account?

Forgot your password?