Programming C in contextually-unaware text editors is just so much more satisfying and productive than C#. I mean, I absolutely hate having a development environment that has fail-proof project-wide refactoring capabilities. Code-completion saves me way too much time digging around in incomplete/missing man pages and makes me cranky. Features like delegates/events, CodeDOM, runtime type introspection with user annotations, asynchronous methods, LINQ, generics, or high-performance bare-metal programming with managed-code ease/safety just take all the fun out of programming. Type safety with generics makes apps too robust and takes all the exciting danger out of C or Python and makes life depressingly boring. All the time saved and extra quality in apps is letting far too many developers get high-paying jobs in the industry instead of being forced to work at Starbucks and rewriting the Linux desktop paradigm for the fiftieth time in their evenings off, and that just sucks.
I hope all the bright, talented, enthusiastic people at Microsoft who work on C#/.NET and enjoy making better programming environments burn in Hades for working for such an evil company. Hopefully Miguel goes blind and is stricken deaf and dumb for supporting Microsoft's evil plans of creating pleasant, productive, and powerful development tools. All the hard-core, experienced C++ super-devs who keep trying C# and going "omg this is amazing" are clearly just being bought off by Bill Gates or Ballmer or some other evil Microcraftian elder being.
Obviously to everyone one of us, Miguel starting Mono had absolutely nothing to do with C# actually being a really awesome language. It's all part of a secret plot to DESTROY LINUX FOREVER by making it just too darn easy to actually write high-quality applications. Without the inefficient development cycles of C or the infinite number of AttributeError exceptions large Python apps generate, we wouldn't be able to revel in the glory of the early 1970's that is UNIX.
Posted May 31, 2012 6:08 UTC (Thu) by hfg22 (guest, #84898)
[Link]
You're confusing C# and Mono's implementation of C#.
Perhaps if the C# language was separated from Mono (ie. without all the .Net cruft) there might be something worthwhile. For example, adding C# support to GCC or Clang.
Also, what does C# bring to the table that is not present in C++11 ?
And Mono on Linux?
Posted May 31, 2012 16:53 UTC (Thu) by rriggs (subscriber, #11598)
[Link]
What does C# bring to the table that is not present in C++11?
Ever try to develop a context-free AST for C++? It's impossible as long as the C preprocessor exists. This makes full-featured, error-free refactoring tools impossible.
Don't get me wrong, simple refactoring tools are possible. It's the "full-featured" and "error free" part that's not. Change or add one #define and the whole program changes meaning. I've refactored code that could be compiled on both Unix and Windows. After a fairly simple automated refactoring on a Linux system, the Windows build no longer worked. That's because the Windows-specific code was invisible to the refactoring tool.
With that said, it's all a trade off. I can do things with the C++ pre-processor in terms of code generation that's impossible to do in C#. But for most general programming needs refactoring tools, runtime introspection, and the ability to freely mix static and dynamic languages are far more valuable.
And Mono on Linux?
Posted May 31, 2012 21:48 UTC (Thu) by Cyberax (✭ supporter ✭, #52523)
[Link]
How about LINQ? Including PLINQ and other nice xLINQs. Or dynamic typing?
>With that said, it's all a trade off. I can do things with the C++ pre-processor in terms of code generation that's impossible to do in C#. But for most general programming needs refactoring tools, runtime introspection, and the ability to freely mix static and dynamic languages are far more valuable.
If you want to do complex metaprogramming (and I think one shouldn't do it easily) then you should use a good language. For example, Nemerle ( http://nemerle.org/About/ ) can do things C++ preprocessor can only dream of while staying refactorable and autocomplete-friendly.
And Mono on Linux?
Posted May 31, 2012 9:42 UTC (Thu) by dgm (subscriber, #49227)
[Link]
> Programming C in contextually-unaware text editors is just so much more satisfying and productive than C#
Yeah. It's incredible how anybody could event get the simplest code written. To be frank, the claim that a bunch of amateurs could even create something as complex as Operating Systems, compilers or database engines seems just ludicrous. Unless they secretly are using Big Corp. Secret Sauce(TM), that is... Wait a minute! I just had an idea for a lawsuit that's going to make me RICH!
Mono and no Visual Studio
Posted May 31, 2012 14:15 UTC (Thu) by man_ls (subscriber, #15091)
[Link]
I am too old to try to rebate your most trollish points, like Linux devs being Starbucks workers. But it is funny to see that you believed the hype of managed platforms...
I used to believe that IDEs, autocomplete, automatic refactorings, runtime environments and so on made my life simpler. That is, until I started coding Python with vim and found out that I was much more productive -- and happier! Then I continued with JavaScript and PHP, same tools, same result. Going back to Eclipse for some Android coding was like going to the parents' house and finding that everything is small and a bit shabby, and things that didn't work still don't work right.
Sure, all those fancy features of Eclipse, RAD or Visual Studio would make your life easier... if they worked all the time, and they didn't bring such a baggage of boilerplate to make the simplest tasks, and always guessed right what you actually want to do.
Nowadays I find an Xfce terminal with a few vim tabs open is productive bliss. When you get the hang of it, doing refactorings by hand is almost as productive and much less error prone. I would use such a setup for Android development too, except that the baggage of the framework is so high that it is nearly impossible. Even with an IDE it is just painful. C# is, just by virtue of being a modern Java clone, just as bad. I have not used ANSI C lately, but it is hard to imagine anything at that level of pain.
No wonder it takes an IDE to refactor these monsters...
Mono and no Visual Studio
Posted May 31, 2012 14:35 UTC (Thu) by Cyberax (✭ supporter ✭, #52523)
[Link]
PHP?
You're clearly doing something wrong if you can't use modern tools to your advantage.
Mono and no Visual Studio
Posted May 31, 2012 14:51 UTC (Thu) by man_ls (subscriber, #15091)
[Link]
Perhaps it is a case of two "wrongs" making one "right": using vim to edit PHP forces me to write code so dumb and simple that it is impossible to fall into one of the many PHP pitfalls. Not using elaborate graphical tools means that I feel just as home on a headless server using SSH than on the local machine. Developer bliss, I tell you...
Mono and no Visual Studio
Posted May 31, 2012 21:26 UTC (Thu) by wahern (subscriber, #37304)
[Link]
There's a vim clone plugin for Visual Studio. I've never used it, but I knew someone who loved it.
This may be it: http://www.viemu.com/
Mono and no Visual Studio
Posted May 31, 2012 22:01 UTC (Thu) by apoelstra (subscriber, #75205)
[Link]
Note that this plugin costs an additional $100.
Very irritating, given that no programming editor for Linux would ship without such essential functionality.
Mono and no Visual Studio
Posted May 31, 2012 22:21 UTC (Thu) by man_ls (subscriber, #15091)
[Link]
That would be like tying a horse behind your motor car to simulate the bliss of horse riding. For me the fun is in having your whole environment be Terminal, Bash and vim; not in having vim-like functionality in an IDE.
Mono and no Visual Studio
Posted Jun 1, 2012 1:06 UTC (Fri) by nix (subscriber, #2304)
[Link]
Meanwhile, I went the other way, moving from an Emacs with cc-mode and basically nothing else (so I had autoindentation and that was all), to an Emacs-with-CEDET-and-GLOBAL setup, giving me automatic near-instantaneous semantically-aware tagging and some degree of refactoring across entire multi-language projects. And it's really really useful. (I just wish the syntax highlighting used the same engine rather than being based on, ew, regexps.)
And Mono on Linux?
Posted May 31, 2012 16:19 UTC (Thu) by cmccabe (guest, #60281)
[Link]
There are plenty of statically typed, managed languages as good or better than C#. Java, Scala, Vala, and Golang come to mind. These languages have active open source communities, which you can and should join if you feel a burning desire to convert the C and Python-using heathens.
C# itself is just a rehash of Java with a few small improvements and a lot of Windows-specific libraries. The game plan was to make a non-portable version of Java. Microsoft tried to do this with Visual J++, but Sun wouldn't allow it, so they created .NET.
This gets explained every time the topic of C# comes up, but some people just never get it. There's no point in a C# runtime for Linux, because the whole point of C# is non-portability and reliance on Windows-specific libraries.
And Mono on Linux?
Posted May 31, 2012 16:27 UTC (Thu) by raven667 (subscriber, #5198)
[Link]
> This gets explained every time the topic of C# comes up, but some people just never get it. There's no point in a C# runtime for Linux, because the whole point of C# is non-portability and reliance on Windows-specific libraries.
Maybe people understand you but just don't agree with you.
And Mono on Linux?
Posted May 31, 2012 16:54 UTC (Thu) by Cyberax (✭ supporter ✭, #52523)
[Link]
Java (and Scala) are tied to Sun/Oracle/OpenJDK JVM. Which has its own strengths and weaknesses.
Vala is something that nobody outside GNOME really use and Golang is not yet used widely.
By now C# is definitely _not_ a rehash of Java. C# 1 was Java with a bit different syntax, C# 2 was a better Java (with real generics) and C# 3 is a vastly better language than Java. Personally, I'd use it for my projects if I had a really good VM for it (no, Mono does not cut it) and a good Linux IDE for it.
And Mono on Linux?
Posted May 31, 2012 23:06 UTC (Thu) by bjartur (guest, #67801)
[Link]
What about Ada?
It has been successfully used for mission-critical projects in the transport sector (think, most flight control systems and a railway system or two). I don't know how well it works on Windows, but it works.
And Mono on Linux?
Posted Jun 1, 2012 0:06 UTC (Fri) by Cyberax (✭ supporter ✭, #52523)
[Link]
IMO, Ada is a bit braindead. It's mislabeled as a 'safe' and 'reliable' language because a lot of high-profile reliable software is written in it. So it has a lot of stuff that was thought necessary back in 70-s for reliable language (for example, range checking for numeric types) and a great resistance for new features. For example, lambdas and closures are unthinkable in Ada-style code.
However, real reliability in software in Ada is achieved by thorough reviews and testing, not really by any virtues of the language itself.
The state of art for reliable software has moved on - we now have languages with dependent types and typesets, for example.
And Mono on Linux?
Posted Jun 1, 2012 5:00 UTC (Fri) by cmccabe (guest, #60281)
[Link]
I know I shouldn't get involved in Yet Another Programming Language Flamewar, but come on. Java is too tied to Oracle-- compared to Mono? (Especially given the recent court rulings?) Vala and Golang are not used widely enough on Linux-- compared to Mono? Just add "compared to Mono?" to any one of your statements and it instantly becomes clear how ridiculous they are.
I understand that some people may be more familiar with C# compared to other languages, but that's not a reason for dismissing them outright. There literally are open source programming languages for every taste, from the most lax old-school Perl coder to the most fastidious functional programmer. Let's try to light a candle rather than curse the darkness.