Mono's WinForms 2.0 Implementation Completed 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."
Re:too little, too late? (Score:5, Informative)
Please stop conflating Mono and
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? (Score:3, Informative)
Re:Very nice (Score:2, Informative)
The fact that python can run under
Re:Would be awesome... (Score:5, Informative)
-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.
var monkeys = from animal in myAnimalsCollection
where animal.Type == monkey
select new {animal.ID, animal.Name, animal.BirthDay};
foreach(var monkey in monkeys)
Re:Would be awesome... (Score:5, Informative)
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... (Score:1, Informative)
Re:too little, too late? (Score:2, Informative)
Re:Would be awesome... (Score:5, Informative)
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:"This announcement has been long awaited ... (Score:2, Informative)
Sorry.
Re:too little, too late? (Score:5, Informative)
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:Would be awesome... (Score:5, Informative)
All the usernames on a Unix system:
Dates from an SQL table:
Search Google for "list comprehensions" and print the text of every "<a href" tag on the page:
Basically, anything Python can loop across works inside a list comprehension. It's a basic construct of the language.