Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

leroymuc

macrumors newbie
Dec 8, 2006
12
0
Munich, Germany
Good Java programming can be quite scalable, but this requires more hardware. And thus, more wasted energy. Let's conserve!
Let's not be shortsighted. Do we live in a world of human brains that get more and more complex, powerful, and unfallible? No. We do live, however, in a world of increasingly complex problems to be solved. And we live in a world of computing technology evolving at an extremely high pace. Now, should we worry about the computers being overloaded or rather our brains?

The way to cope with high complexity is abstraction. Java (and other strictly object-oriented languages, like C#) is abstraction. That's all.
 

leroymuc

macrumors newbie
Dec 8, 2006
12
0
Munich, Germany
You could get all that with D and not have a horrible runtime component.
The problem is that in C and C++ you can, but you don't have to. Programming in a clean and modern way often seems overkill to beginners and if they are given a programming language that allows ugly, old-fashioned procedural coding, then they will go ahead and do it that way. Then, however, they will never appreciate the real advantages of clean OOP - as probably you never did.

Java is a non-deterministic bloat machine, and anybody who would champion its usefulness for anything other than Fisher Price Baby's First Programming Language is no computer scientist.
Hehe, that statement just adds to the impression that you have no idea what you're talking about, yet quite a big mouth. Actually I used to reason the same way before I really got deep into large-scale Java and C# projects.
 

darkwing

macrumors 65816
Jan 6, 2004
1,210
0
Let's not be shortsighted. Do we live in a world of human brains that get more and more complex, powerful, and unfallible? No. We do live, however, in a world of increasingly complex problems to be solved. And we live in a world of computing technology evolving at an extremely high pace. Now, should we worry about the computers being overloaded or rather our brains?

The way to cope with high complexity is abstraction. Java (and other strictly object-oriented languages, like C#) is abstraction. That's all.

Yes let's abstract Java and C# to the bin where they belong.

Are computers getting more advanced? Hrm. It's the same stuff from the 70s only getting faster and smaller. Where's the next big step? Atomic computing has not evolved to the level of general purpose yet. Multi-cores... yeah, a newer achievement but still another build on top of previous designs. Where's the next big thing? Oh well maybe it'll never come.

Java and other languages that run inside a VM provide nothing more to OO than a language like C++ does. Good programming practices and leaving a lot of things to the compiler reduce run-time overhead and make efficient code. Trying to say a language is good because it may help against the human element is ludicrous when you consider the runtime sacrifice.

Besides, if Java is so powerful and flexible why are JVMs written in C++?

The problem is that in C and C++ you can, but you don't have to. Programming in a clean and modern way often seems overkill to beginners and if they are given a programming language that allows ugly, old-fashioned procedural coding, then they will go ahead and do it that way. Then, however, they will never appreciate the real advantages of clean OOP - as probably you never did.

Let's see. For over 8 years I worked at a medical device company, and the last 4 years of that was for hard realtime embedded systems running on small footprint PCs under Linux. The realtime and kernel side was done with C (RTAI and kernel modules) while the GUI was done in c++. In 2000, I designed an entire set of GUI classes (framebuffer) for C++ and then abstracted that to work with other output devices. (An LCD screen over a parallel port, and curses for a text-based interface.)

Don't presume to tell me that I don't understand OOP.

Hehe, that statement just adds to the impression that you have no idea what you're talking about, yet quite a big mouth. Actually I used to reason the same way before I really got deep into large-scale Java and C# projects.

Oh yes, I don't know what I'm talking about. :rolleyes: Clearly you can't hold a real discussion so you're going to insult me instead.

Would you like a copy of some of the tests I wrote in java and c++? They're sorting algorithms. They also have the exact same syntax. On one of them, the c++ version was over 1000 times faster on my (at the time) 1 ghz g4 PB. Wow! :eek:

And as for the comment about the bloat? Well, guess which used less memory? (way less) :)
 

leroymuc

macrumors newbie
Dec 8, 2006
12
0
Munich, Germany
Let's not be shortsighted.

Are computers getting more advanced? Hrm. It's the same stuff from the 70s only getting faster and smaller. Where's the next big step?
You certainly have an idea of the number of abstraction levels in a modern computer nowadays (including the operating system). A computer in the 70s that was just a bit slower than today, as you point out, would not be able to cope with just two of them at a time. Another level of abstraction in the form of a virtual machine is negligible on the medium to long term. Thats all I'm saying.
 

darkwing

macrumors 65816
Jan 6, 2004
1,210
0
Let's not be shortsighted.

You certainly have an idea of the number of abstraction levels in a modern computer nowadays (including the operating system). A computer in the 70s that was just a bit slower than today, as you point out, would not be able to cope with just two of them at a time. Another level of abstraction in the form of a virtual machine is negligible on the medium to long term. Thats all I'm saying.

Some people consider an OS to be a VM. We discussed this in my undergraduate OS class. I do not consider an OS to be a VM because if this were true, then all processes would have a separate virtual cpu. While this may appear to be the case, the fact that there is only one set of page tables per CPU, these have to be swapped out often. This helps with the separation of processes yes, but adds tremendous overhead on what the CPU is capable of. Of course, we can't have a computer in today's world without this level of abstraction and thus it is necessary.

What Java and C# provide in its abstraction is not necessary, and thus becomes meaningless overhead.

I want abstraction where practicality and performance meet. Not for abstraction's sake.
 

rtharper

macrumors regular
Sep 6, 2006
201
0
Oxford, UK
Also, contrary to what most programmers think (and beginning CS students), there are other programming paradigms than procedural and OO. After more than 20 years churning out one type of code or another, I've gotten involved with a completely different paradigm: functional programming. Whether you work with Haskell or Erlang or.... I would recommend it go any CS student. It gives you a completely different take on software design.

Exactly my point! =) I have found multi-paradigm and functional programming languages to be the best for complex tasks. If performance is number one they are not your best pick, although Haskell is very fast using the Glasgow Haskell Compiler. I use functional programming for tasks all the time, and something nothing is faster in terms of dev time, and the code is often extremely elegant. Python and Lua both offer certain benefits of functional programming languages, namely lazy evaluation and first-class functions, allowing the creation of higher order functions.

darkwing said:
This is the argument most Java fanboys use. C++ is bad because it's "hard to use." Don't blame a language because you're an incompetent programmer. C++ is mostly type safe, and where it isn't it can provide much flexibility. Regardless of that, there are many compilers that are stupid (won't enforce enum types for example) but a good compiler can be set up in such a way that it will enforce typing with warnings at least.

Funny, my previous posts in this thread say I dislike Java, just that I dislike C++ even more. C++ is hard to use--It allows the programmer to make too many mistakes, as proven by the number of poorly coded applications written in it. Sure, it is quite possible to write solid C++ applications, and they exist, but I would go so far as to suggest that a language should facilitate this process if it is well designed, and that C++ does not. It's syntax is poorly suited to the OO paradigm, and don't get me starting on this like operator overloading, which in C++ allow such obfuscation as never before seen.

I have written full applications in C++ before--I hope I never repeat the process again (and as I go off to get my MSc and PhD, I will hopefully just be so terminally unemployable that it won't be an issue =p). Is Java better? In some ways. I always say choose the language that suits the task best, and I rarely find that to be C++, esp with C, Java, and C# around (as well as higher level languages such as Haskell, Lisp, Python, and Lua).
 

rtharper

macrumors regular
Sep 6, 2006
201
0
Oxford, UK
Some people consider an OS to be a VM. We discussed this in my undergraduate OS class. I do not consider an OS to be a VM because if this were true, then all processes would have a separate virtual cpu. While this may appear to be the case, the fact that there is only one set of page tables per CPU, these have to be swapped out often. This helps with the separation of processes yes, but adds tremendous overhead on what the CPU is capable of. Of course, we can't have a computer in today's world without this level of abstraction and thus it is necessary.

What Java and C# provide in its abstraction is not necessary, and thus becomes meaningless overhead.

I want abstraction where practicality and performance meet. Not for abstraction's sake.

Most people would consider garbage collection and automatic memory management, plus completely cross platform libraries that run on any platform with a VM to be within the realm of practicality. And this isn't true for just Java. Look at Lua, Python, Haskell, Lisp, D...while platform specific libraries exist for these languages, so do a lot of platform independent ones. Can't say that I always feel the same about C++, esp for concurrency and Threads.
 

jsw

Moderator emeritus
Mar 16, 2004
22,910
44
Andover, MA
Java is a non-deterministic bloat machine, and anybody who would champion its usefulness for anything other than Fisher Price Baby's First Programming Language is no computer scientist.
Gosh. Guess all those web people aren't computer scientists.

Guess the large-scale software I work on is kiddieware.

Java is immensely useful. Anyone who bases the utility of a language solely on its performance characteristics is no software engineer. If such people are defined as "computer scientists", then my respect for that title has diminished.

Speed is only important when it is insufficient. Doing something 1000 times faster than it needs to be done isn't any better than doing it as fast as it needs to be done.
 

bobber205

macrumors 68020
Nov 15, 2005
2,182
1
Oregon
Well put.

If what you do takes 2000 cycles in java or 200 is C++ but 1,000,000 cycles take a second, who really cares?
 

darkwing

macrumors 65816
Jan 6, 2004
1,210
0
Funny, my previous posts in this thread say I dislike Java, just that I dislike C++ even more. C++ is hard to use--It allows the programmer to make too many mistakes, as proven by the number of poorly coded applications written in it.

This is the "wah wah the language is too hard for me so let me stick with something easier" argument that makes me sick. :rolleyes:

Plenty of techniques out there to save yourself time and energy and prevent human error in c++.
 

darkwing

macrumors 65816
Jan 6, 2004
1,210
0
Gosh. Guess all those web people aren't computer scientists.

Guess the large-scale software I work on is kiddieware.

Java is immensely useful. Anyone who bases the utility of a language solely on its performance characteristics is no software engineer. If such people are defined as "computer scientists", then my respect for that title has diminished.

Speed is only important when it is insufficient. Doing something 1000 times faster than it needs to be done isn't any better than doing it as fast as it needs to be done.

Well then why can't we both be happy? Why can't Java be re-done so that the syntax and class structure are the same, but it doesn't run in a VM and it can be mapped to the platform/OS it's running on? Then all my problems with it go away.

Why does a language that makes kiddie programmers brag about not having pointers have NullPointerExceptions?
 

darkwing

macrumors 65816
Jan 6, 2004
1,210
0
Most people would consider garbage collection and automatic memory management, plus completely cross platform libraries that run on any platform with a VM to be within the realm of practicality. And this isn't true for just Java. Look at Lua, Python, Haskell, Lisp, D...while platform specific libraries exist for these languages, so do a lot of platform independent ones. Can't say that I always feel the same about C++, esp for concurrency and Threads.

Memory management and thread concurrency always seem to kinda "design themselves" every time I write a program of some sorts. I guess being competent means you don't have to use slow interpreted VM languages just so you can write some code.

Thank goodness Objetive-C 2.0's GC is optional. I consider that a best of both worlds scenario.
 

rtharper

macrumors regular
Sep 6, 2006
201
0
Oxford, UK
Well then why can't we both be happy? Why can't Java be re-done so that the syntax and class structure are the same, but it doesn't run in a VM and it can be mapped to the platform/OS it's running on? Then all my problems with it go away.

Why does a language that makes kiddie programmers brag about not having pointers have NullPointerExceptions?

Because Java bases its memory management on garbage collection, uses a universal Thread concept that not only dictates the use of threads, locks, and semaphores, but also all of its RPC libraries and GUI libraries--that's the point. Java is syntactically similar enough to C++ that without these features it's pointless to exist on its own. And these features aren't trivial.

Your point about pointers shows a little ignorance. References are exposed in C++ (and called 'pointers') but they exist in nearly every high level language. Most languages more high level than FORTRAN and C are call by need or call by reference. Many of the naysayers of C++ point out that explicit pointers are probably one of the most issue-creating problems in C++. I myself am against the use of pointers as they are not type safe and make it impossible for the compiler to see a lot of errors that lead to unpredictable behaviour. I concede, however, that they are very powerful, but if you are doing that sort of manipulation I'd rather use C and cut out the OO overhead anyway.

darkwing said:
This is the "wah wah the language is too hard for me so let me stick with something easier" argument that makes me sick.

Plenty of techniques out there to save yourself time and energy and prevent human error in c++.

If you're referring to formal program proofs and formal methods, I'm familiar with them and have used them. If you're referring to other less rigorous techniques, that's fine, too. My question would be why? Why would you favor a program where you have to work extra hard to program clearly and correctly? To me, that is the sign of a poorly designed language. Is it too hard for me to use? No. I've used it. I've also used several other languages that prove to be superior in their clarity and utility. Do they sacrifice some performance? Yes, but not that I could tell.
 

rtharper

macrumors regular
Sep 6, 2006
201
0
Oxford, UK
Memory management and thread concurrency always seem to kinda "design themselves" every time I write a program of some sorts. I guess being competent means you don't have to use slow interpreted VM languages just so you can write some code.

Thank goodness Objetive-C 2.0's GC is optional. I consider that a best of both worlds scenario.

Care to provide an example of decent complexity. Personally, having written numerical analysis algorithms in massively parallel implementations (gaussian elimination, primality testing, jacobi relaxation, to name a few), OS features, and concurrent database applications, that if you ever wrote a system of decent complexity, these aspects do not "design themselves". If they did, CSP, CCS, CBS, and Pi-calculus would be rather

Also, regardless of the ease, threads behave differently in different libraries. Using the Win32API versus pthreads versus java is different, but only in Java can you write one application whose thread implementation is cross platform.

As for memory management, it is something every programmer should know about, but sometimes it's not something you want to write, nor should you have to. Garbage Collection systems are often so efficient that there is no PRACTICAL performance difference, and the point is that you never worry about pointer issues or (for example) buffer overflows. And don't tell me they aren't an issue, as they're the reason for most security flaws in large systems (and small ones, for that mebber)
 

ryan

macrumors 6502
May 17, 2002
283
0
Denver, CO
You could get all that with D and not have a horrible runtime component. Java is a bad idea because of how it was implemented. Even Sun won't use it for anything crucial.

http://www.archub.org/javamemo.txt
http://www.pcworld.com/article/id,109301-page,1/article.html

You realize that both these articles refer to only Java on Solaris, and the second is 4 years old?

Java is a non-deterministic bloat machine, and anybody who would champion its usefulness for anything other than Fisher Price Baby's First Programming Language is no computer scientist.

Google, Apple, Nintendo, along with tens of thousands of other companies, certainly don't feel that way.

In any case, I've never understood why people hate certain languages so much. I've seen slow, bloated applications written in Java, C/C++, C#, Ruby (among others) and sure, I've muttered under my breath about the developer that wrote the code but it has never caused me to damn the language itself.

To the original poster, go back a read rtharper post #8; it is by far the most balanced, well thought out post I've seen in this entire thread.
 

darkwing

macrumors 65816
Jan 6, 2004
1,210
0
f you're referring to formal program proofs and formal methods, I'm familiar with them and have used them. If you're referring to other less rigorous techniques, that's fine, too. My question would be why? Why would you favor a program where you have to work extra hard to program clearly and correctly? To me, that is the sign of a poorly designed language. Is it too hard for me to use? No. I've used it. I've also used several other languages that prove to be superior in their clarity and utility. Do they sacrifice some performance? Yes, but not that I could tell.

All your arguments reek of "c++ is too hard for me, so I'll defend the one I'm capable of using."

You said it yourself. Pointers are very powerful. I don't have to work extra hard to have thread concurrency and memory management in c++. It's all very simple and easy to do, provided you take the time to learn how to do it properly.

In my software engineering 2 course as an undergrad, I had a professor who is a total java fan. He had us take a C implementation of a red-black tree program and convert it to Java. The thing that ticked me off most about this is Java has no concept of pointers to pointers (or references to references) so it requires a class wrapper every time you do it. With java's new templates, this would be a bit more powerful of course, but that wasn't available at the time.

BTW, the C version ran in about 81 ms and the Java version took over 1.2 seconds to do its thing. Ouch! Now that's performance I can see!

You realize that both these articles refer to only Java on Solaris, and the second is 4 years old?



Google, Apple, Nintendo, along with tens of thousands of other companies, certainly don't feel that way.

All those nice Java cell phone games that get 2-4 frames per second really demonstrate how awesome Java is! :rolleyes:

Whether they refer to Solaris or not, it's rather funny to see Sun themselves saying that Java isn't viable for any serious commercial application.

I suppose Google's search engine does all its back-end database stuff in Java. OSX is obviously written in Java, as are iPhoto, iMovie, etc etc. And the Wii must be programed entirely with Java as well. This explains the last-gen graphics.

I never thought of it that way!
 

darkwing

macrumors 65816
Jan 6, 2004
1,210
0
what java can't do

I just demonstrated (in C) a complete distributed object framework with demo application fully secure using ccmmac validation with aes256 encryption to some co-workers. It all fit in under a k of ram and under 10K of ROM and ran on a $1.25 piece of crap processor. The fact that the key is 256 bytes, that's pretty good actually.

Java can't even print "hello world" with resource constraints that small. :rolleyes:

And I know many of you will say that isn't the sort of application you would use Java for, so the point is moot. However, you'd all be the same people who will sit there with a straight face and tell me how flexible Java is.
 

rtharper

macrumors regular
Sep 6, 2006
201
0
Oxford, UK
In any case, I've never understood why people hate certain languages so much. I've seen slow, bloated applications written in Java, C/C++, C#, Ruby (among others) and sure, I've muttered under my breath about the developer that wrote the code but it has never caused me to damn the language itself.

It's important to take into account the context of the argument. The quality of a given application isn't what makes me praise or damn a programming language. It's my experiences with various languages and my personal opinions based upon my knowledge of programming language theory. Personally, I tend to be against non-type safe languages. I understand the need for them (pointers, for example, allow for some pretty elegant string manipulation and sorting methods), but I think the descendants of C in terms of syntax and their use of pointers is a bad thing for programming languages. From a compiler point of view, it makes program correctness checking very difficult, and often times impossible.

Also, I tend to think that, given the hardware available these days, for complex reasoning, high level languages utilising lazy evaluation (especially functional programming or multi paradigm languages) are a suitable platform for a lot of programming these days because a) they allow the programmer to focus on the algorithm instead of other issues b) the code is often elegant, easy to read and c) most of these languages are written in a defining language such as a C that allows the creation of primitive functions that are super fast, and combining them in a higher level language can oftentimes stil l yield excellent performance. They are often easier to debug, too ;)

darkwing has gotten rather snarky and claims I'm praising Java, which I'm not. I've said it again and again, the right language for the right task. I don't think Java should be used for RegExp string manipulation. I DEFINITELY don't think GUI programs should be written in it. I would never recommend it for embedded apps. But, as people have mentioned, resource constraints aren't always the main concern. Neither is real time response. I DO think it can be a valuable pedagogical tool, it can be great for web applets, and it has decent use for utilities where there are multiple target platforms. The fact of the matter is that often APIs should be developed and C and C++ because of their performance gain, but I don't believe that they should be written FOR C and C++ as much, and allow people to code in other, higher level languages instead. This is not a unique or new idea, though it is gaining popularity, now.
 

rtharper

macrumors regular
Sep 6, 2006
201
0
Oxford, UK
I just demonstrated (in C) a complete distributed object framework with demo application fully secure using ccmmac validation with aes256 encryption to some co-workers. It all fit in under a k of ram and under 10K of ROM and ran on a $1.25 piece of crap processor. The fact that the key is 256 bytes, that's pretty good actually.

Java can't even print "hello world" with resource constraints that small. :rolleyes:

And I know many of you will say that isn't the sort of application you would use Java for, so the point is moot. However, you'd all be the same people who will sit there with a straight face and tell me how flexible Java is.

It is moot. I've never said (and you're talking to me, because I'm the one posting) that Java is appropriate for all occasions. It isn't even appropriate for most. There is no beat-it-all language. I also noted you said C, which I have discussed as useful many times. Incurring the additional overhead for C++'s OO paradigm is a different story, and not part of what you said.

I'd also be interested how you wrote a distributed object framework in a purely structural/procedural programming language.
 

jsw

Moderator emeritus
Mar 16, 2004
22,910
44
Andover, MA
darkwing: your arguments seem to be entirely based on speed and size of the executable. You seem to have no concern for speed of development, maintainability, team-oriented aspects of using a language, etc. By your line of argumentation, a motorcycle is always superior to a sedan.

How many professionally sold applications developed with a team have you completed?

How many 100K+line apps have you maintained?

How many cross-platform apps with GUIs have you worked on?

I spent 5 years professionally developing with C. 7 with C++. 8 with Java. Java is far and away a vastly better language for large-scale team-oriented development of most user-oriented applications. I thought I'd miss pointers. I don't... haven't needed them yet.
 

darkwing

macrumors 65816
Jan 6, 2004
1,210
0
It is moot. I've never said (and you're talking to me, because I'm the one posting) that Java is appropriate for all occasions. It isn't even appropriate for most. There is no beat-it-all language. I also noted you said C, which I have discussed as useful many times. Incurring the additional overhead for C++'s OO paradigm is a different story, and not part of what you said.

I'd also be interested how you wrote a distributed object framework in a purely structural/procedural programming language.

You're right that there's no beat it all language. I made an online UNO game during school that used a Java applet client and a c++ server running on Linux. Definitely the best of both worlds. Clearly c++ did not offer me an easy way to make an applet.

I read an interesting article a few years back about how Microsoft has driven developers away from Windows programming and more towards web based designs. Why can't people see the Macintosh is here in all its glory and needing DEVELOPERS DEVELOPERS DEVELOPERS!! :)

You can research the basis for the technology by googling for "emWare" and "emit". emWare was purchased by Panasonic, and I work with a team of people locally with a sister-team of sorts in Japan. The purpose for the project I mentioned was to prove such things can be done in a small scale.

The neat thing about that project was that it was talking to c# apps using existing code, too. Somebody wrote a bridge application from our little serial port board to a broader tcp network.

darkwing: your arguments seem to be entirely based on speed and size of the executable. You seem to have no concern for speed of development, maintainability, team-oriented aspects of using a language, etc. By your line of argumentation, a motorcycle is always superior to a sedan.

Incorrect. A motorcycle can't hold 4 people comfortably, but a C application (let alone C++) can do anything Java or some higher level language can do and typically more efficiently. (If implemented correctly.) In some cases it becomes harder (my applet example) but things can be done. When you draw the line that cpu cycles should make up for incompetent programmers, then computer science as a whole goes down the tubes.

How many professionally sold applications developed with a team have you completed?

About 7.

How many 100K+line apps have you maintained?

2

How many cross-platform apps with GUIs have you worked on?

3

I spent 5 years professionally developing with C. 7 with C++. 8 with Java. Java is far and away a vastly better language for large-scale team-oriented development of most user-oriented applications. I thought I'd miss pointers. I don't... haven't needed them yet.

I agree that Java is a good language for a team environment. So is c++. One of the benefits to OO paradigms and design-by-contract languages in general is that you get a good team environment.

I'd rather have top-notch people developing an app that will run fast and be efficient than a bunch of mediocre people basing their language of choice on what's easier for them to grasp.
 

plinden

macrumors 601
Apr 8, 2004
4,029
142
Just because C++ can do something Java can't doesn't make it a hack. It simply makes it a much more flexible (and powerful) language.
You know the funny thing about this? I am a Java "fanboy". But I'm also a C++ "fanboy". And a Python "fanboy". I'm definitely not a PHP or a Perl "fanboy"

I just shudder when I think about writing a webapp in C++, without Tomcat, JSPs, Servlets, JAAS, JMX, Log4J etc. And I've done that, back in 1999-2000. We had a team of 20 working on a project that ended up needing just five developers when we switched to Java. You see, Java isn't slow when written well, and raw speed is not the most important thing in enterprise software. It was much less expensive for my employer to increase (by about 25%) the number of front end web servers than to pay 15 developers at > $100,000 per year.

On the other hand I shudder when I think about writing a game in Java.

One thing you need to realize if you want to be a professional software engineer, when you start talking about fanboys, you become unable to think about what's the best tool for the job. In the past year I've worked on two Java web applications, a C++ plugin for the Darwin Streaming Server, a Python based web service and have attempted to maintain Perl code written by another programmer. Apart from Perl, which is a incredibly powerful and flexible language that takes a particular kind of person - not me - to be expert at, and the choice between Python or Java for the web service (a decision I didn't make - I don't think it was a bad decision for what it did) each of the languages I worked with were the best ones for the job.

Hell, I'd even code in C# if I had to work in a Windows-only environment.
 

darkwing

macrumors 65816
Jan 6, 2004
1,210
0
One thing you need to realize if you want to be a professional software engineer, when you start talking about fanboys, you become unable to think about what's the best tool for the job. In the past year I've worked on two Java web applications, a C++ plugin for the Darwin Streaming Server, a Python based web service and have attempted to maintain Perl code written by another programmer. Apart from Perl, which is a incredibly powerful and flexible language that takes a particular kind of person - not me - to be expert at, and the choice between Python or Java for the web service (a decision I didn't make - I don't think it was a bad decision for what it did) each of the languages I worked with were the best ones for the job.

Hell, I'd even code in C# if I had to work in a Windows-only environment.

Of course, and I already mentioned an example of using Java for a web app. I'd use c# for Windows but only because I need to have more experience with it than I do to be more well-rounded. If I was doing a serious app where performance was an issue, I'd probably stick with win32. (I'd not use Windows at all if I could avoid it!)

I really like Python and I like it more than Perl, but I feel perl is kinda ugly when it comes to classes.

I don't feel that Java has any business at all being a server language. For simple things that are mostly IO bound, it's great. But when you need some real power behind it, it lacks heavily.
 

angelneo

macrumors 68000
Jun 13, 2004
1,541
0
afk
All those nice Java cell phone games that get 2-4 frames per second really demonstrate how awesome Java is! :rolleyes:
I have no idea how old is your frame of reference, a lot of the current java games, even those 3D ones, are running fine and smooth on the current phones.
 

darkwing

macrumors 65816
Jan 6, 2004
1,210
0
I have no idea how old is your frame of reference, a lot of the current java games, even those 3D ones, are running fine and smooth on the current phones.

2 different phones since 2003. My current phone (razr v3x) has crappy motorola software and no java games. (I think Motorola has the worst software people... just look at their cable boxes)
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.