Why C# teams try to port C++ engines to pure C# quite often(?), but Java dont?

Well the server/client VM distinction is slated to go away.

And, at risk of sounding like an ignorant Java basher, I have one C# app so far on my machine which is Sony’s PSP media manager and I actually read a reviewer that said "… It’s GUI makes Java look speedy… "

A speed daemon its not. Now maybe its a crappy C# program. Its only one data point but riught now its the only datapoint I have.

And we all knwo about lies, damn lies, and benchmarks, right? What sort of independant benchamrks are there and what are their test cases?
AIUI C# always compiles completely before running, so ist going to get an unfair (and untrue) advantage on your typical C type microbenchmark.

You’re missing the point - benchmarks are irrelevant. Microsoft’s marketing is managing to convince C++ users that C# is just as good if not better. If theres one thing that Java’s history provides, its that programmers are just as suceptible to marketing and bias as everyone else.

Creating a decent GUI app in Java or C# requires programmer to adapt a new way of doing it used to be. If they come from VB or Delphi IDEs things don’t go similar, far from that.

I know one name who jumped from Java wagon to C# wagon. Anders “The Delphi Man” Helsberg from Borland, one of the core members creating C# language. I remember reading (maybe is an internet gossip), he tried everything to bring a true properties attribute to Java classes. And he wanted to implement delegate methods for listener patterns but both were rejected by Sun. Both which he did in Delphi previously.

Then Microsoft came along, bought him to create a new language. He saw his moment to recreate properties+delegate once again. He was first sent to Hawaii with his family for few months holiday before started working at Microsoft :slight_smile:

Java is great and I use Java daily basis. I want to use it for every aspect of programming. But boring business part and corporation projects force me to study C#/asp.net technology. I have managed to avoid any project assignents so far, but my luck is running low every week :frowning: :frowning:

Is it my impression or there’s a sense of inevitability in some posts lately? In an old job I also got forced to learn C#, the solution was: I got a better job in a better company to work with Java all day long (and Perl, nothing is perfect).

There are so many Java jobs, there is no need to learn C# to get another job. Really.

Cas :slight_smile:

many game gaints use or have used java in there games, server side perhaps but I’d doubt ppl or managers want next to java, another language like c# its redudant.

I started ‘porting’ irrlicht along time ago during a slow period at work. I say ‘porting’ because I never intended to create a complete port; I was just bored. I got part way through the math classes then work picked up again.

The thing that sucked about going from c++ to java was operator overloading. Everyone wants to overload vector and matrix operations ::slight_smile: . My personal preference is to not use operator overloading, even in c++, so it was even more of a pain. Then those overloaded operators trickle down into the rest of the code and it becomes right squidgy.

Arena Wars, I read a article/interview in a german gamedev mag. Pretty much the same as the oddlab interviews, a bit longer and one has to exchange C# with Java. :wink:

That’s a excactly my experience, SUN’s client vm very similiar in speed. Maybe the Java 5 client is a bit slower, but version 6 is definitely faster! And yes, testing was done with a real app (a 3d virtual beergarden), which I’ve ported from c# to Java.
Of cource winforms are faster, but hey with swing you got a fully skinable, plattform idependent GUI, which is also really fast since Java 6 :slight_smile:
(Offtopic: I read that there will be layout managers in .NET 3.0, hehe)

Btw. can anyone tell why peoble are so f5#king interested in delegates? I mean anomymous classes are a better coding style and and you are not limited to a single method. Or what about properties, if every class attribute would be a property I woud prefer that, but having both is no win. And last but not least my favorite thing about the java language is that it uses late-binding, it’s really thumb to have to now wether a method will be possibly overriden…

(sorry for the last part, just my 2 cents :-X)

No, I got that point. I was only commenting on Jeff’s performance comment… and I’m aware of how misleading benchmarks can be.

[quote]If theres one thing that Java’s history provides, its that programmers are just as suceptible to marketing and bias as everyone else.
[/quote]
Replace “programmers” with “inexperienced and/or bad programmers” and I agree completely. Most of the people that really know what they are talking about aren’t so easily fooled. In the last decade the market has been flooded with shitty programmers… I know, I’ve been going through resumes like crazy and the pickings are slim. People entered the field because some guidance counsellor told them to, they have no natural abilty, no aptitude for it, and no passion. Some of them have the interest but sadly not the learning ability to pull it off.

It is precisely because of this influx of code drones that “bad Java” gets written and those that should know better point at the bad code and say “see, Java is slow and ugly and I hate it”
It is precisely because of all of this hype and the generally poor skills of the programmers that Sun’s marketing fails… they can only generate real data and attack things logically… they can’t create a “buzz” with double talk like MS. :slight_smile:
(Ok, Sun does their share of marketing BS too… but it was fun to vent.)

[quote]Um… no offense B but I smell the smell of FUD here…

Can you actually name the “lot of Java engineers” who desigend on and/or worked on C#?
[/quote]
Well, I was kind of assuming (and I think it’s a pretty common assumption) that all of the MSVM folk who weren’t allowed to “embrace and extend” java during the court case that lasted for most of the last five years must have been doing something, especially given the timing of the relase of the MSIL interpreter.

All the benchmark discussions are completely irrelevant anyways. To get anything meaningful you would need to benchmark a whole development process, start to finish, time spent writing code, time spent debugging, problems that come up after release, the whole thing. And once you’re testing that the outcome is more that you’re testing the skills of developers or development teams rather than the language unless you have many teams working independently on the same project at the same time and I can’t honestly see anyone caring enough to do that…

That’s what I was feeling, too much fundamental differences in C++ and Java language to make some parts of the port quite difficult. You will need to hack an engine logic heavily. Porting to C# is more transparent due to a wider similarities (structs, operator overloads, inout ref arguments,…).

Still, creating a java game engine does not mean to close eyes. Borrowing bits here and there from opensource C++/xyz language engine does pay off and speed implementation phase. I presume its perfectly valid to borrow code crosslanguage if license models match.

I wish we had these three options in Java:

  • delegate instead of anonymous classes for listener pattern
  • true properties, not just getXXXX/setXXX naming convention “properties”
  • struct object (use this http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4820062 page to read pros+cons+feelings)
  • operator overloading (see how annoying BigInteger is for business math apps)

First two of which Anders “The Delphi Man” Helsberg tried to bring Java, but was rejected.

Assuming th port was a smart port and not a straight port, and you did a tuning passin java, then Id agreee thats probably a reasonably fair data point.

Well, I was kind of assuming (and I think it’s a pretty common assumption) that all of the MSVM folk who weren’t allowed to “embrace and extend” java during the court case that lasted for most of the last five years must have been doing something, especially given the timing of the relase of the MSIL interpreter.
[/quote]
Well given the speed and capabilities of where the MSFt folsk stopped their Java efforts, I find it difficult to justify the idea that C-sharp is a generation after Java.

Its fairer I think to say that they are, at the msot, at the same development level in C# as the rest of the community i in Java.

The original statement implies otherwise,. at least to my eyes.

I’m not sure that it is in terms of VM performance, they seem much similar. It does have some very nice syntactic sugar to it, though and I would say that it’s a bit quicker to develop with, especially for client-side programs where you have to do any significant degree of UI stuff, but maybe I just know the platform a bit better where that is concerned. For web development Asp.net is easier to work than J2EE and for most work that I do J2EE would be a sledgehammer to crack a nut, but again that is an irrelevance cos Rails is going to sweep the board on that front over the next few years.

Surely cheap CRUD webapps are easier to do in a lot of places outside J2EE. Just take a look the number PHP sites out there, I fail to see how this is “news” and how Rails will do any better than PHP and other scripting languages.

And I used PHP before coming to Java, mostly for opensource hype, and it’s an experience I’d rather forget.

I don’t recall saying it was news, but if we’re discussing the relative merits of C# one of them is that Asp.net is a pleasure to develop with and I haven’t used any equivalent jsp solutions- they may exist, but very few ISPs offer java hosting and most of them offer windows hosting.

If you haven’t used Rails though you really can’t comment on it - firstly it’s based on a very powerful and expressive language and secondly it does so much of the routine stuff for you automatically, all the things that you end up doing for every project are just done, right there, when you show it your database. Its nothing that couldn’t have been done by anyone but it is the first time I’ve seen it done in one place by a basic platform. There is a lot of Rails hype at the moment, but there genuinely is a nugget of gold at the heart of it.

I try to be broadly language-agnostic, but Ruby has really impressed me.

I believe “borrow” is quite different than “porting”.

I’m not going to argue that those ideas are “bad” because we get addicted to such things (generics are really good), but…

I think people put WAY TOO MUCH importance and little syntactic sugar details. Such things (your specific cited things) won’t make a difference in the big picture! And some could even cause more harm than good! What’s the point!?

People should compare platforms in terms of needs (your needs) and the perspective the platform gives. I’d hate to see Java becoming like Perl! Ten ways to do the same thing.

PS.: Java doesn’t force you to use get/set for everything. And I have noticed that several Java programmers have the (bad) habit of creating a thousand Java Bean classes for exclusively holding data without even thinking. Maybe what we need is not a “property” keyword but a deintoxication clinic for Java Beans addicts.

An example of “how things can go bad” is when I was experimenting XMLBeans for parsing a big XML file. Ok, the tool is fine and it works, but I ended with gazillion classes with get/set !! That was nuts! The good and old DOM would do the job with far less code, writing code using DOM would be less trouble than using 1000 automatically generated classes.

I don’t recall saying that C# was bad. But now that you touched the subject I have to say that you were probably using the wrong tools when developed in Java. That would explain it.

Ok, you didn’t say that “Ruby is designed for happiness” in your standard believer preach. Hehehe Sorry, I couldn’t resist. :slight_smile:

I don’t recall saying that Rails was bad, but cheap CRUD webapps are not new and I showed that much of the “ease” was already performed by other languages such as PHP.

As far as I know PHP is (was?) the language of cheap CRUD webapps, the area where Rails shine, J2EE is not there. So the competitor of Rails is PHP not Java.

I’m sure you’re right, although Rails scales (which also rhymes!) and it certainly has PHP whipped on that front.

Maybe they reviewer wrote about the applet on yourpsp.com/, which downloads psp stuff (videos, pirctures,…) directly on your psp.

Actually, this applet is pretty cool, because it establishes a usb connection, which isn’t easy in Java…

Well, it was not a straight port. IMHO, java and C# aren’t that similiar than most argue. But what really surprised me is was not that the java server vm was faster, but it also seems to have a higher floating point precision, which I noticed while playing with the pathfinder parameters… any ideas why the server vm is more accurate? ::slight_smile: