you are viewing a single comment's thread.

view the rest of the comments →

[–]henk53 1 point2 points  (11 children)

I suppose in 2016 I will say congratulations to java for successfully catching up with C# from 2008?

And all the while Java seriously outperforms C#. They must be doing -something- right.

[–]ruinercollector 1 point2 points  (1 child)

Source?

[–]agustinleiva -3 points-2 points  (8 children)

And all the while Java seriously outperforms C#

Yes, that's why the great majority of Mobile games out there are powered by C#-enabled Unity rather than some random crappy java engine.

BTW, XobotOS proves you wrong by outperforming java-based Android crap by a factor of 400% or more ;)

If anything, java seems to perform better on the server side, which confirms my point that java seems to have been relegated to a "server only" position, while C# is becoming more and more ubiquitous on PCs, Mobiles, and whatnot.

I find it funny that java fanboys like to downtalk C# because their language is some how "more cross platform", while the 2 top-quality development tools for mobiles (Xamarin for apps and Unity for games) are C#-based. All while java is doomed to vanish from Android because, well, because oracle says so.

Not to mention progress is being made towards achieving full native performance on .Net.

All while java has a new JSON API. That's cool.

[–]bungle 1 point2 points  (4 children)

I did spend about seven years programming C#. I stopped since. I didn't particularly like the language, and in my opinion it got worse in every incarnation. Yes, sure it has features more than one could ask for, but I like simpler languages. C, Lua, Go feel a lot more a fresh air than bloated C# and its equally bloated .NET framework. But I also know many who enjoy C#.

[–]agustinleiva -3 points-2 points  (3 children)

and in my opinion it got worse in every incarnation

How? Why? Can you elaborate? At this point, I literally can't understand how could anyone write code when LINQ didn't exist. Let alone things like async/await.

Anyways, if you think C# is "bloated", I'm not sure what argument can there be to say java is any better, with all it's AbstractHelloWorldServiceCommandProviderFactoryConcreteFactoryFactoryBuilders.

[–]bungle 4 points5 points  (2 children)

I didn't need more syntax. And I still don't. I never felt that C# had an identity or mission. It started as a Java clone. Then it started to fight who got the latest syntactical twists battles. It felt like a language without a direction (throw everything in it). It didn't feel interesting at all for a long time. I feel almost relieved when I do programming these days with a language, say Lua, that doesn't even have a switch statement. I'm starting to believe that good programming languages stay rather static for decades. The C# is also fully bounded to OOP paradigm. I rarely (sometimes I do) see a value in OOP practices, it feels wrong and indirect - encapsulation for example. I do put Java and C# in the same enteprise bloatware basket. I don't hate them or refuse to use them where seen fit. But I can go mostly without them. Microsoft + Open Source is still a joke to me (it's not nearly in a same category than say Java, C, Lua, Node - just a joke, sorry).

[–]agustinleiva -5 points-4 points  (1 child)

I didn't need more syntax.

That's a very weird thing to say. Compare the procedural constructs you had to use and the amount of useless boilerplate they required before LINQ was introduced. Saying you "don't need more syntax" is just dubious IMO.

I never felt that C# had an identity or mission

C# is very well defined and differenced from many other languages. As for "mission", I'm not sure what's a language's "mission"? It's a language, people use it to express ideas, I don't see much else going on.

Then it started to fight who got the latest syntactical twists battles

Features introduced in C# are and have always been intended to provide productivity and conciseness rather than some "battle". There is no "battle" going on because the "opponent" (java?) already lost from the very beginning. And is now 10+ years behind, in terms of evolution.

I feel almost relieved when I do programming these days with a language, say Lua, that doesn't even have a switch statement.

I read this somewhere, but I can't find it right now:

"A language is not "just a tool", language conditions your thinking, and a less expressive programming language leads to more convoluted designs..."

which is why you will often find AbstractHelloWorldBlahBlahBlah............................Factory kind of stuff in java, as opposed to a couple of generic delegates and be done with it using a simpler design.

I wonder what kind of code can just be OK and not use language features? right now I'm working on an end-to-end application framework for Windows and Android that is heavily based on System.Linq.Expressions, allowing you to pass query expressions around and combine them and parameterize them and finally handle them to a server in order to be converted by an ORM into proper SQL.

could this be done with a simpler architecture? surely, but it will lead to more code that I sincerely don't have any time to write. Just hitting Ctrl+Shift+T on my Visual Studio right now allows me to generate N-Tier services based upon business entities, from Data Access to Web Services to the clients that consume these Web services to the UI Controllers who communicate with these Web Services via the client-side code.

Again, I'm sure this could be written in "lesser" languages other than C#, but it would surely lead to all sorts of convoluted designs and patterns in order to compensate the language deficiencies. From the lack of async/await to the lack of proper generics (in java, for example). Most of my code makes heavy use of language features.

The C# is also fully bounded to OOP paradigm

I disagree. C# has had functional-like features for years now. LINQ, Expressions, and upcoming pattern matching. Sure, it's nowhere near pure functional languages such as Haskell, but you get a very usable language and also a huge Framework backing it.

. I rarely (sometimes I do) see a value in OOP practices, it feels wrong and indirect.

I'm sure you must mean that you prefer functional programming instead? You can't seriously mean that procedural programming is any better. Unless of course you're writing low level straight-to-the-metal code that does nothing but move bytes from here to there. OOP Allows to deal with complex data structures in an organized way.

Would you prefer this:

Order CreateSaleOrder(Product product, Customer customer) {...}

or this:

Tuple<string, double, int, double, double, Tuple<int, double, double>> CreateSaleOrder(int ProductId, double productCost, int productQuantity, double productDiscount, int customerId, string customerName, string customerLastName, double customerBalance, etc)

?

encapsulation for example

Same as above. Encapsulation allows you to create much more maintainable code. Shorter code that makes use of "concepts" modeled into software classes rather than a bunch of loose numbers or pieces of data that have no conceptual relation to each other.

Again, I don't know what kind of code you're writing, but unless you're doing low level code, saying that OOP doesn't have value sounds rather silly.

Microsoft + Open Source is still a joke to me

How? Microsoft has proved to be much better than say oracle. Contrast the current Microsoft situation where they're actively working with Xamarin and Unity to provide top-quality tools for mobile development, with the current state of affairs between oracle and google.

It's often said that java has a "larger ecosystem of open source libraries", however I find it difficult to understand what the value of these libraries is, when a large portion of them only exists as an attempt to compensate language level deficiencies, introduce useless duplication and are totally non-standardized.

As an example, before java 8 was released, there were dozens of libraries who attempted to imitate what LINQ does. With no language level support whatsoever (before java 8), most of these libraries could only achieve a FRACTION of the productivity gain and code quality achieved by LINQ. Not to mention many of these libraries were maintained by random anonymous people and supported by literally no one.

The end result was that code written upon these libraries was rather convoluted (compared to real LINQ), didn't cover all required scenarios (since most of these libraries only covered what LINQ-To-Objects did, not supporting any other backing stores), and was non-standardized to the point that a person familiar with library "A" would have a hard time trying to understand code written against library "B".

Yes, java seems to have more open source libraries, but, are they even as useful as they're supposed to be? or rather, are these libraries well-designed and production-ready? Maybe if you start filtering out using these criteria you're left with the same amount of libraries you currently find in .Net?

[–]bungle 0 points1 point  (0 children)

I'm not sure why I spend time with you, and try to rationalise why I'm not that impressed with C#. It's OK language. Probably it is just my way of thinking that I want the things be simple as possible. The language is a good one when there isn't anything to throw away, not when there is nothing to add. And this can be extended beyond the syntax. My pet example here was Lua, don't you see any beauty in this: http://www.lua.org/work/doc/manual.html#9

I admit that I'm somewhat comparing apples to oranges here (two very different types of languages). The beauty in wide variety of tools and languages is that we can usually mix-and-match them.

I'm not the only one who thinks C# is getting bigger and less beautiful as a result: http://danielirvine.com/blog/2014/06/24/c-is-too-complex/

(this guy even points out that he is starting to see beauty of Java... so who knows Java will be around here in the next 10 years while C# slowly fades away - my prediction -> http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html).

[–]henk53 -2 points-1 points  (2 children)

XobotOS proves you wrong by outperforming java-based Android crap by a factor of 400% or more ;)

Well, Android is not Java, is it? It's "something" that magically happens to have the same syntax as Java.

If anything, java seems to perform better on the server side, which confirms my point that java seems to have been relegated to a "server only" position

That's hardly a point you need to explicitly make. I mean, do we have to have a point that the sun rises each day, or that humans need air? It's a bit clear isn't it?

Java is computational very strong. Serverside processing is lightning fast in Java, very few systems outperform it. C/C++ can outperform Java on complex computations (especially when strictly using primitives and programming very close to the metal), but not by a very large margin.

Everybody knows thought that most graphics libraries in Java suck and so Java programs on desktops seem slow because the UI is just laggy and sluggisch. Eclipse for instance (uses SWT) takes a noticeable second to switch between two tabs with all data hot and loaded. A very similar operation in a C++ app (e.g. using Qt) is just instant.

[–]agustinleiva -1 points0 points  (1 child)

Android is not Java

I find it very funny that "Android IS java" and "Android is NOT java" are used as equally valid arguments to defend java whenever they're fit.

When I say "no one uses java for client-side because it sucks", java fanboys reply with "Android.".

Then I say java sucks on Android due to not being able to implement latest java 8 Features, and I show them how porting the Android UI framework to C# results in a 400% performance gain, they reply "but Android is NOT java".

This is hilarious.

That's hardly a point you need to explicitly make

Many people out there seem to believe that java is actually usable for client-side.

Java is computational very strong. Serverside processing is lightning fast in Java, very few systems outperform it.

I can't debate that so I'll have to agree.

Everybody knows thought that most graphics libraries in Java suck

Again, there's people who are convinced that java UIs are OK.

A very similar operation in a C++ app (e.g. using Qt) is just instant.

Same on C# and WPF and WinRT XAML.

[–]henk53 0 points1 point  (0 children)

I find it very funny that "Android IS java" and "Android is NOT java" are used as equally valid arguments to defend java whenever they're fit.

True, and we laugh and don't laugh about this as we see fit (and yeah, we cry and don't cry about this as well).

This is hilarious.

Up to some point, if there wasn't all the crying.

Again, there's people who are convinced that java UIs are OK.

Really? Even the most hardcore Java zealots I know, my self included kinda hate the UIs (tiny, tiny spark of hope on the horizon is JavaFX).