[java] Sharp Java

Started by
50 comments, last by Sneftel 17 years, 6 months ago
Quote:Original post by Son of Cain
Something that nobody disagrees with is the fact that, what really counts, is your ability to solve problems using good OOP (and generally, programming) practices, in whatever language you decide to use.

And also, being proficient in more than one language helps a lot; If you can, learn Java, C#, and perhaps one or another scripting language, or languages like Python and Ruby. Being tied to a language may "tarnish" your ability to judge the best solution for a given problem.


I agree with this totally.

How long does it take anyone who has been programming for a while to learn a new language? A week? If you know how languages work -- it doesn't take long to pick up a new language.

The same goes for libraries. The ideas are the same, and most of the patterns are the same, and where they differ can be learned as work progresses.

Language comparisons are difficult to quantify, because most ideas that are central to a language create a double edged sword (there's always a trade off).

If you go with C# how many different liscenses are you going to have to pay for yearly? From your competitor MS?


L-
"Education is when you read the fine print; experience is what you get when you don't." -Pete Seegerwww.lucid-edge.net
Advertisement
To learn a new language certainly takes more than a week, even if you are already a somewhat skilled programmer.

Why?

Because, syntax apart, the real asset a language has is the standard API it carries, plus the community developed libraries that give support to it. Even if you learn how to use a language in one week, to use it efficiently is a matter of weeks, at the very least.

But, it's true that, once you program in a concept-related language, you can pick up a new one faster than when you switch from a structured or procedural to an OO language, for example. It's easier to learn C++ from Java, than to learn ol' Pascal from Java.
a.k.a javabeats at yahoo.ca
Quote:Original post by Son of Cain
Because, syntax apart, the real asset a language has is the standard API it carries, plus the community developed libraries that give support to it. Even if you learn how to use a language in one week, to use it efficiently is a matter of weeks, at the very least.
More than that, each language has its own quirks, idioms, and conventions that take time to pick up. Java and C# are closer than most in this respect, but they are not the same.
SlimDX | Ventspace Blog | Twitter | Diverse teams make better games. I am currently hiring capable C++ engine developers in Baltimore, MD.
Quote:Original post by Alpha_ProgDes
Not quite. C# is actually ANSI/ISO standard which means anyone can write a standard implementation. It's not a Microsoft-only language. Though MS puts alot of effort and resources into it.


And that means what? A standard doesn't guarantee interoperability, if you use .Net on Windows you are locked with Windows and to Windows specific APIs.

Quote:Allow me to slightly add to that. Yes, J#, C#, VB.net, Boo, F#, IronPython all can use the .NET library and because they all compile to the same bytecode you can even intermingle one language with another. But please please don't use managed C++ when you can use C#. Believe me you WANT to use C#.


Yes, and Java has more than 70 languages running on the JVM, so what?

Quote:C# and Java do resemble each other. But that's the keyword resemble. C# at this point in the game, language-wise, is a far more powerful language than Java (though that may change with Java 6). You should check the C# 3.0 spec (actually there's a thread about it if you search for it). Very flexible and powerful.


C# is bloated. Bloated without hope. Microsoft adds whatever it wants, the way it wants without any consideration with backward compatibility (that's why .Net is a joke in the enterprise). Trust me, in a few years C# will be the new Perl, 10 ways of accomplishing the same task.

Questionable choices such as operator overloading alone should keep conscious developers away from this Microsoft trap.

Quote:Don't knock C# because MS touts it rather publicly. It's a good language with a wonderful editor. C# works with Visual Studio (MS compiler) and Mono (open-source, Novell backed compiler). So technically C# is as open sourced as Java. It's just that MS' version of C# is more mature than Novell's version, but that's changing as well.


No, it's not. We are able to run Java code unmodified in many platforms and you can't do the same with C#. Visual Studio relies on Windows specific APIs, that means that an application written for Windows can't run on Linux.

I have been reading this forum for awhile and notice two things:

- There are a lot of .Net cheerleaders around, trying to push it to any newcomer, and creating FUD about Java all the time;

- I am not sure how these so-called Java developers stand this quiet. Why don't you just answer to this obnoxious behaviour? By any chance the "cheerleaders" are the owners of the forum?

Seriously, this is a Java forum, anyone marketing Microsoft proprietary stuff (yes, doesn't run on any platform unmodified) should be considered a Troll and treated as such.
Quote:Original post by Promit
The usual term is expressivity -- the ability of a language to succinctly convey at a conceptual level the tasks that are being performed.


A.k.a "bloat", a language misdesigned from the start that had "new concepts" added as an afterthought based on the latest fashion.

Microsoft could really have done much better, oh they could! But they decided to just copy Java plus with a bunch of C++ crap in it (operator overloading anyone?), now they are adding stuff like crazy in the hope of beating Java, someday.

God, I wouldn't like to be a .Net programmer in 5 years, that will be a hell to work with.

Quote:Original post by Anonymous Poster
- I am not sure how these so-called Java developers stand this quiet. Why don't you just answer to this obnoxious behaviour?


Because it's a total waste of time. Correct the FUD when you see it and move on. It's pointless getting into "My Daddy can kick your Daddy's ass" sort of flamefests. Put the info out there and let people form their own opinions. Be comfortable in the fact that Java works for you, you know how to use it, and that you see benefits in using it. Everyone else will follow their own noses, whether it lead them to Java, C# or other pastures. If Joe Blow thinks Java sucks eggs and C# is the best thing ever -- who cares? We are all wired differently, there's no one-size-fits-all solution, so on and so forth.

Let the ranters and ravers rant and rave by themselves and keep writing your Java apps.

Quote:Original post by Aldacron
Quote:Original post by Anonymous Poster
- I am not sure how these so-called Java developers stand this quiet. Why don't you just answer to this obnoxious behaviour?


Because it's a total waste of time. Correct the FUD when you see it and move on. It's pointless getting into "My Daddy can kick your Daddy's ass" sort of flamefests. Put the info out there and let people form their own opinions. Be comfortable in the fact that Java works for you, you know how to use it, and that you see benefits in using it. Everyone else will follow their own noses, whether it lead them to Java, C# or other pastures. If Joe Blow thinks Java sucks eggs and C# is the best thing ever -- who cares? We are all wired differently, there's no one-size-fits-all solution, so on and so forth.

Let the ranters and ravers rant and rave by themselves and keep writing your Java apps.


Seconded. Couldn't have said better myself.
Blind Evangelism is as vicious as FUD - it distorts facts and mislead people.

a.k.a javabeats at yahoo.ca
Quote:Original post by Anonymous Poster
Quote:Original post by Alpha_ProgDes
Not quite. C# is actually ANSI/ISO standard which means anyone can write a standard implementation. It's not a Microsoft-only language. Though MS puts alot of effort and resources into it.


And that means what? A standard doesn't guarantee interoperability, if you use .Net on Windows you are locked with Windows and to Windows specific APIs.

Remember that J2ME doesn't work the same on every mobile device (cell phones anyone?), so in that respect Java falls into the same trap. Also, there are people who have programmed in Java for Win, Linux, and OSX and have had to change their code slightly to get it to work properly for each platform. So if a user looking for cross-platform development wants to use C#, then that user will use Mono. If he targets Windows, he'll use .NET. The library/code changes are minimal when switching from a Mono-C# to a .NET-C# and vice versa.

Quote:
Quote:Allow me to slightly add to that. Yes, J#, C#, VB.net, Boo, F#, IronPython all can use the .NET library and because they all compile to the same bytecode you can even intermingle one language with another. But please please don't use managed C++ when you can use C#. Believe me you WANT to use C#.


Yes, and Java has more than 70 languages running on the JVM, so what?

So, I was answering his question about language interoperability in .NET and also responding to his statement about Managed C++ being the best to use in .NET.

Quote:
Quote:C# and Java do resemble each other. But that's the keyword resemble. C# at this point in the game, language-wise, is a far more powerful language than Java (though that may change with Java 6). You should check the C# 3.0 spec (actually there's a thread about it if you search for it). Very flexible and powerful.


C# is bloated. Bloated without hope. Microsoft adds whatever it wants, the way it wants without any consideration with backward compatibility (that's why .Net is a joke in the enterprise). Trust me, in a few years C# will be the new Perl, 10 ways of accomplishing the same task.

True, .NET 1.1 code breaks in .NET 2.0. But at least MS has taken it upon themselves to improve the language and the library setup. I'll admit to not having use Java or C# in anything non-trivial. But the MS library setup is far more intuitive than Java's. That alone makes my coding life much easier.

Quote:Questionable choices such as operator overloading alone should keep conscious developers away from this Microsoft trap.

Well that's a coding philosophy issue. But C# allows function overloading as well as operator overloading so a developer can use whatever style is more intuitive and comfortable to him.

Quote:
Quote:Don't knock C# because MS touts it rather publicly. It's a good language with a wonderful editor. C# works with Visual Studio (MS compiler) and Mono (open-source, Novell backed compiler). So technically C# is as open sourced as Java. It's just that MS' version of C# is more mature than Novell's version, but that's changing as well.


No, it's not. We are able to run Java code unmodified in many platforms and you can't do the same with C#. Visual Studio relies on Windows specific APIs, that means that an application written for Windows can't run on Linux.

As I bolded, in many but not all platforms is Java able to run unmodified as I noted above. Mono also can run C# unmodified on many platforms as well. Just to be clear, I only mentioned .NET when the OP asked about it. Other than that I kept my discussion to the languages. You seem to be arguing that Java is a better platform and language than .NET and C#. This kind of subtle back and forth can confuse the OP and other readers when it's not clear that you are about the Java Platform or the Java language.

Quote:I have been reading this forum for awhile and notice two things:

- There are a lot of .Net cheerleaders around, trying to push it to any newcomer, and creating FUD about Java all the time;

Nowhere in my post have I cheerleaded C# or even .NET. I only responded to dispel misconceptions about the both. Also, nowhere in my post have I knocked or said anything ill about Java (language or platform).

Quote:- I am not sure how these so-called Java developers stand this quiet. Why don't you just answer to this obnoxious behaviour? By any chance the "cheerleaders" are the owners of the forum?

If anything, they cheerlead Python [smile]

Quote:Seriously, this is a Java forum, anyone marketing Microsoft proprietary stuff (yes, doesn't run on any platform unmodified) should be considered a Troll and treated as such.

The OP is on a Java forum asking about C#. Also as it has been said before, C# is not MS proprietary. So for a meaningful discussion maybe [in another thread] we should discuss Java, the language and Mono & C#.

Beginner in Game Development?  Read here. And read here.

 

Quote:Original post by Alpha_ProgDes
Remember that J2ME doesn't work the same on every mobile device (cell phones anyone?), so in that respect Java falls into the same trap. Also, there are people who have programmed in Java for Win, Linux, and OSX and have had to change their code slightly to get it to work properly for each platform. So if a user looking for cross-platform development wants to use C#, then that user will use Mono. If he targets Windows, he'll use .NET. The library/code changes are minimal when switching from a Mono-C# to a .NET-C# and vice versa.


Terrible analogy. Cell phones aren't PCs. Cell phones, unlike PCs, have the most varied configurations of hardware that could cause an application to run differently. Java does its job in keeping a standard API to work with.

The problem with .Net is not cell phones, it's PCs! I have worked with Java for some time now, and I develop for various platforms (Unix and Windows), and I never had the need to "change the code slightly" from one platform to another.

Quote:Well that's a coding philosophy issue. But C# allows function overloading as well as operator overloading so a developer can use whatever style is more intuitive and comfortable to him.


The problem is that we don't work in shells, we work in teams. The developer doesn't have a choice at all. Would you turn down a job because you found out whoever designed the application used operator overloading and you "don't use operator overloading"? That's ludicrous.

At each new feature added, the developer MUST know it, even if he doesn't use it because he might work with some system that uses it.

BTW, it's clear how operator overloading can be terribly misused.

Quote:As I bolded, in many but not all platforms is Java able to run unmodified as I noted above. Mono also can run C# unmodified on many platforms as well. Just to be clear, I only mentioned .NET when the OP asked about it. Other than that I kept my discussion to the languages. You seem to be arguing that Java is a better platform and language than .NET and C#. This kind of subtle back and forth can confuse the OP and other readers when it's not clear that you are about the Java Platform or the Java language.


If you know what Java ME (cell phones) then you know that is subset of the Java's APIs. YOU CAN'T REALLY EXPECT TO RUN ECLIPSE IN THERE, DO YOU? So what's the point of "not able to run unmodified". PCs applications should run fine.

Quote:Nowhere in my post have I cheerleaded C# or even .NET. I only responded to dispel misconceptions about the both. Also, nowhere in my post have I knocked or said anything ill about Java (language or platform).


What about "language-wise C# is far more powerful"? If that's not cheerleading then Microsoft advertisements aren't advertisements.

Readers should be aware that the AP in this thread is both a liar and an idiot.
SlimDX | Ventspace Blog | Twitter | Diverse teams make better games. I am currently hiring capable C++ engine developers in Baltimore, MD.

This topic is closed to new replies.

Advertisement