Hacker Timesnew | past | comments | ask | show | jobs | submitlogin

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.


Huh? C#'s had Nuget quite a while ago now.

Why are Java developers always like 5 years behind on C# improvements?

And build systems are something g you set up one afternoon, why are you so fixated on a tiny part of the programming process?


... And Nuget is always behind Maven.

... 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.


>monadic collection operations like map, select, etc

There is nothing 'monadic' about select. SelectMany yes, but not Select. That's equivalent to map in other languages.


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?


just guessing but if all statements are terminated with a ; instead of a newline it allows statements to be split up into multiple lines?


What about the counter case of one statement needing more than one line?


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.


And some languages don't check types for you before running the code and it's almost 2014 now, can you imagine?


Ruby, Python, even PHP checks the types of values before executing operations on the values.


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.


Exactly. They check the types. They don't burden the programmer with such tasks.




Consider applying for YC's Summer 2026 batch! Applications are open till May 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: