Reasons To Use Mono For Linux Development
Nerval's Lobster writes: In the eleven years since Mono first appeared, the Linux community has regarded it with suspicion. Because Mono is basically a free, open-source implementation of Microsoft's .NET framework, some developers feared that Microsoft would eventually launch a patent war that could harm many in the open-source community. But there are some good reasons for using Mono, developer David Bolton argues in a new blog posting. Chief among them is MonoDevelop, which he claims is an excellent IDE; it's cross-platform abilities; and its utility as a game-development platform. That might not ease everybody's concerns (and some people really don't like how Xamarin has basically commercialized Mono as an iOS/Android development platform), but it's maybe enough for some people to take another look at the platform.
You just shouldn't bother. It's not worth the risk.
“He’s not deformed, he’s just drunk!”
We have a LONG memory of Microsoft's past behavior.
Why use a Java clone instead of just using Java?
Maybe because some people prefer C# to Java? They aren't exactly the same, after all: https://en.wikipedia.org/wiki/Comparison_of_C_Sharp_and_Java.
How can we continue to believe in a just universe and freedom to eat crackers if we have no ale?
While I have never work in C# myself, the ability stop code in a debugger, write some code, and then continue executing (compiling your code in real-time) seemed like a really awesome feature (as a C++ guy, we don't get to do this).
The Unity engine is also quite popular and an increasingly popular choice is C# for use with it.
Maybe Microsoft can make one useful invention every decade?;)
-- Political fascism requires a Fuhrer.
True but it seems kind of ridiculous to choose an entire platform based on some minor differences in syntax.
I suppose if you're already really familiar with the Microsoft software stack, like you used to build VB apps and have already invested a great deal in Microsoft's tools it might make sense.
But otherwise, it's a smaller ecosystem with fewer libraries, fewer developers, fewer choices, fewer large scale deployments to learn from.
Mod me down, my New Earth Global Warmingist friends!
I work on a embedded Linux system running Debian Jessie armhf on a Cortex-A5 processor. At some point someone programmed a Web user interface for the system using Mono for Linux. The installation of Mono was difficult, requiring several hundred Mo of space on the filesystem and some trick to get the last package revision. Then the application was started and take all the processing load for almost 4 minutes. At his point it was eating near half the memory available on that embedded system. This was socking, especially for me that like to use qooxdoo for WebUI because it's basically a static file that need no compilation and have a very minimal memory footprint. Finally the guy switched to node.js for the WebUI on that system. The installation was easy, the startup compilation last now less than a single minute and the memory footprint is below 20%, all of that with a more complete demo that with Mono.
The only reason to use Mono is really to get Windows developers onboard.
But that's a long shot. Linux works because there are plenty of developers in mentioned programming languages that support it.
Since Java isn't terribly popular in Linux, .NET has no chance.
1. C# Is a Great Language
me: Yes it is.
2. There's a Great Free IDE: MonoDevelop
me: Finding a decent IDE is not a problem anymore. You can find something for every language.
3. Mono Supports Mobile Development
me: So does Java and Swift. Why does EVERY article out there think you have to pick just ONE language and be stuck with that choice forever???
4. Mono Is Cross-Platform
me: Python, Java, C, C++, Ruby, and many, many more are all cross-platform, too!
5. Mono Powers Games Development
me: The guy is totally right. He has some great examples, too.
Please just don't think, that you MUST use C# to get into game dev. For example, you can have much faster prototyping with PyGame. You can really learn to code in Swift over a weekend, if you have mastered one similar language well.
My advice to you is: pick any language, become good at it. Just don't do VB.NET or I will have to kill you.
Microsoft will do what it has always done; develop a technology, push it everywhere it can, then let it stagnate, and deprecate it in favor of the newest and bestest thing ever, before announcing that the next version of Windows will be the last to support it, so be sure to buy our new even more expensive suite of development and distribution tools while you can!!!!
Java is a reasonably mediocre language with a mediocre set of standard libraries, but you know what, I'm fairly confident that the application I write in Java today will still be usable in a decade (heck, I've got Java utils running that I first wrote in 2002 to 2003). In other words, Java may be far from perfect, but it is an enormous ecosystem with enormous penetration, particularly in the enterprise world. Even if I bought into the notion that C# is lightyears better than Java (which I don't), it is almost never purely about objective or subjective technological superiority.
Beyond that, if MS keeps to its word to port .NET over to other platforms, why on the hell would I want to use a crappy half-completed variant like Mono?
The world's burning. Moped Jesus spotted on I50. Details at 11.
Late '90s software development for Windows sucked. And Windows sucked because it crashed for the slightest of reasons. And there was Visual Basic. And there was the latest hype in town: Java. Roll in .Net with C# and Visual Studio. Pretty neat and fairly idiot-proof IDE, decent set of libraries, managed execution to lower the amount of BSOD's and introduce a new language to extinguish both VB and Java.
None of these reasons was relevant outside the MS world. Plenty of languages, IDE's, editors available on Linux, some say even too many. No BSOD's, no VB. Oh wait, there's one reason: that wanker Miguel de Icaza.
"I'm not much interested in interoperability. I want substitutability. I want to be able to throw your software out."
Why should I care if you do any linux dev?
I hate to say it, but given the choice between ORACLE and Microsoft.. Fuck Oracle.
If you were me, you'd be good lookin'. - six string samurai
If you mean can you write graphical Linux programs the run on x11 out Wayland, the answer is yes absolutely. Gtk and Gnome bindings were some of the earliest tools for mono. In fact monodevelop is a gtk app, written in c#. Gtk turns out to be a pretty good fit for c#
"Chief among them is MonoDevelop, which he claims is an excellent IDE; " ... which made my jaw drop.
Monodevelop is a fucking awful, AWFUL piece of software. Bloated, slow, and broken hundreds of ways.
And you know what? We don't use any of that stuff, because we want our code to be COMPREHENSIBLE. Lambdas don't do anything for me that I can't do with a loop, and at least I can see instantly "Yep, that's a loop!" For the very few cases where it might be helpful, that's great, but its really VERY few cases. I have yet to write one.
Yeah, yeah. We've heard this before. Back in the day, people were saying the same things about those new-fangled "for" and "while" loops. After all, we want our code to be comprehensible! A loop doesn't do anything for me that I can't do with a goto, and at least I can see instantly, "yep, that's a control flow transfer!".
Meanwhile, people have embraced the new tools (which are the majority outside of the Java land - even the C++ guys have and use lambdas now), and they became idiomatic, and standard libraries were upgraded to rely on them - making them both more powerful and easier to read. As it happens, I use both C# and C++, and it's a rare day at work that I don't use a lambda anywhere. Looking at other people's [quality] code, it's mostly similar. And guess what? It's all still perfectly readable, so long as you take some time and learn how it works. In most cases, in fact, it's more readable than the code that it replaced, and more maintainable to boot (because DRY).
Java's generics are fine. They do the most important part of being generics perfectly well. Again, the things that you seem to want of them are things that negatively impact maintainability in most cases.
I was referring mostly to type erasure, obviously. How does getting read of that negatively impact maintainability?
In the meantime, Java now has this beauty. Because they can't just say Func<T>, and have it work well for primitive types.
As for DRY... I'm at a loss why anyone would think that you'd repeat yourself in Java.
If you don't have first-class functions in a language, you'll be doing a lot of of DRY for that reason alone (yes, you can use anon classes instead, but no-one actually does because it's so verbose it defeats the point). If I have to explain how and why that works, then you should probably go read some FP tutorial.
I think MS certainly looked carefully at Java and in some very minor ways improved on the syntax, but at worst the difference is small,
You think wrong, and you didn't bother to investigate enough to make such a conclusion. This was kinda sorta true 14 years ago. It's not true now. Things that C# has that Java does not include e.g. dynamic and async/await, neither of which are "very minor ways".
with Java's vast arrays of libraries, frameworks, and tools, its hard to beat.
It's kinda like the iOS app store. Sure, it has 3 million apps, but in practice you need maybe 30 for any particular case, and 300 across everything. I won't dispute that Java has more libraries, but pretty much any mainstream language/platform these days, including .NET, has all the libraries that matter, for the simple reason that all of them have a fairly large community that will write or wrap one if they need it. I don't recall ever running into a situation where I couldn't find a library to do something that I needed to do, in any popular language.