C# is Java with perhaps 200% syntax improvement. The things I use most often with e.g. Ruby - monadic collection operations like map, select, etc. - is there in the form of Linq, with select, where, etc. A concise, type-inferred lambda expression goes a long, long way.
The .net ecosystem isn't as evolved as Java, for sure. But I don't think maven is a good implementation of a dependency management system either, nor is it particularly good as a build system.
I still don't see any C# developers that are 200% more productive than Java developers due to limited infrastructure around the C# ecosystems.
Say anything about Maven but the recent discussion about embedding Bundler to Gem is just one step closer to be like Maven (now if they merged Rake+Gem+Bundler then Maven is). Even if Maven is not "good enough", .NET is thousand miles behind Java when it comes to dependency management and build system.
Google-Guava, as ugly as the syntax is, is good enough for most of us. Java 8 is around the corner so meh.
... And C# devs always borrow patterns and best practices from the Java ecosystem, so I think it's you guys who are always 5 years behind us.
... If you're using MSBuild or Nant and can set up an adequate build system in one afternoon, either your project is super simple crud, or you're not using enough tools to ensure proper engineering/verification, or you're the top 5-10% people who can bent .net build tools according to your needs, or you're exaggerating.
If you think that we shouldn't sweat over build scripts then that seems to be a hint that you have not dealt with large projects.
Sure there is! Monads generate liftM, so if you live in a place so bereft of explicit semantics as to call major parts of your standard library "monadic" without specifying which monadic context to which you refer... Then you may as well drag functor and Applicative along with you.
The weakening of the concept is inevitable now that everyone has been taught to not be afraid of it even if they have no clue why it exists.
Any language today that still requires to mark end of line with a semi colon, has in my opinion outdated syntax. Most people put one statement per line, so why is it required and not optional?
1) Line length is arbitrary, and there is no finite limit
2) You can have an escape sequence for a new line
With that said, I disagree that having to mark the end of a statement with a semi-colon is obsolete syntax. Statements and lines should not have to be 1-to-1, even if most code is written as such.
That's not true, at least with Python. It uses duck typing, there is no type check before execution. It just runs the code you give it, if you try to call a method that doesn't exist (split on a integer), it will just give an error.
The .net ecosystem isn't as evolved as Java, for sure. But I don't think maven is a good implementation of a dependency management system either, nor is it particularly good as a build system.