Alternatives to Java
Alternatives to Java
I was wondering if there is some really good alternative to Java that can be used for platform independent programming?
IMHO Java sucks when it comes to performance.
You have a few Java apps running and it takes most of the system processing time.
IMHO Java sucks when it comes to performance.
You have a few Java apps running and it takes most of the system processing time.
Only Human
Re:Alternatives to Java
Depending on what you consider a "good" alternative.
I don't know how Python (with wxWindows, GTK, or Qt bindings) does compare performance-wise.
But C++ with a good choice of cross-platform GUI and utility libraries can go quite some way, depending on what you have in mind.
I don't know how Python (with wxWindows, GTK, or Qt bindings) does compare performance-wise.
But C++ with a good choice of cross-platform GUI and utility libraries can go quite some way, depending on what you have in mind.
Every good solution is obvious once you've found it.
Re:Alternatives to Java
I would love it if I really had the power of C/C++.
What I am looking for is a tool that would help me in easing my work, especially to replace the multiple telnets and FTP's I have to do to the various servers.
If I could have a single tabbed interface to them etc, from which I could also execute commands (like CLI commands), run scripts, compile and run code etc. etc.
The problem is that I keep shifting from Linux and Windows so if I did write something it would have to be good for both.
What I am looking for is a tool that would help me in easing my work, especially to replace the multiple telnets and FTP's I have to do to the various servers.
If I could have a single tabbed interface to them etc, from which I could also execute commands (like CLI commands), run scripts, compile and run code etc. etc.
The problem is that I keep shifting from Linux and Windows so if I did write something it would have to be good for both.
Only Human
Re:Alternatives to Java
That doesn't sound very performance-critical to me. REBOL claims to be just the thing for that, and a friend of mine (DevL, he is sometimes even around on this forum) found it to be pretty nice - but expensive.
I'd try my hands on Python/wxWindows, Perl/Tk (if you are masochist) or Java - can't see how performance can be that big of an issue unless your hardware is severly limited. Hell, I'm running Eclipse on a 500 MHz PIII, and while it could sure be faster, it works.
I'd try my hands on Python/wxWindows, Perl/Tk (if you are masochist) or Java - can't see how performance can be that big of an issue unless your hardware is severly limited. Hell, I'm running Eclipse on a 500 MHz PIII, and while it could sure be faster, it works.
Every good solution is obvious once you've found it.
Re:Alternatives to Java
In some cases all we have is a Remote Desktop connection which is shared by several users.
When each uses a Java app, things get real slow.
Plus I have this sort of aversion to doing something I really like in Java if it can be done with some flavor of C (if you know what I mean)
When each uses a Java app, things get real slow.
Plus I have this sort of aversion to doing something I really like in Java if it can be done with some flavor of C (if you know what I mean)
Only Human
Re:Alternatives to Java
Pardon me while I vent; I don't want anyone to take what I say here too seriously, as it's mostly just my frustration with the programming field in general talking.
<flame irrationality="100%">
I really dislike using C for non-system tasks; it simply is too primitive for application work. Using C or assembly for general-purpose programming is the very definition of 'premature optimization'.
But then, the typical alternatives aren't much better. there's C++, which manages to combine the worst aspects of C, Ada and Smalltalk; or Java and C#, which are the same but more hyped and less efficient. These are languages which can only look good only in comparison to an utter catastrophe, such as Pascal or Visual Basic. Then there's Perl... no, let's not got there.
Unfortunately, the languages I do have some remaining tolerance for - Python and Scheme - are too marginal, too slow, too ideosyncratic, and too limited in their support software to be practical. If I wanted to create my own tools for everything, I'd be working on my OS, not on someone else's crudware apps.
I'm quite frankly fed up with all the existing languages, as a matter of fact, but sadly I'm at a loss as to how to design a better one.
</flame>
However, as a practical matter, I'm perfectly willing to work in any language - even Intercal - if I'm being paid to do it.
<flame irrationality="100%">
I really dislike using C for non-system tasks; it simply is too primitive for application work. Using C or assembly for general-purpose programming is the very definition of 'premature optimization'.
But then, the typical alternatives aren't much better. there's C++, which manages to combine the worst aspects of C, Ada and Smalltalk; or Java and C#, which are the same but more hyped and less efficient. These are languages which can only look good only in comparison to an utter catastrophe, such as Pascal or Visual Basic. Then there's Perl... no, let's not got there.
Unfortunately, the languages I do have some remaining tolerance for - Python and Scheme - are too marginal, too slow, too ideosyncratic, and too limited in their support software to be practical. If I wanted to create my own tools for everything, I'd be working on my OS, not on someone else's crudware apps.
I'm quite frankly fed up with all the existing languages, as a matter of fact, but sadly I'm at a loss as to how to design a better one.
</flame>
However, as a practical matter, I'm perfectly willing to work in any language - even Intercal - if I'm being paid to do it.
Re:Alternatives to Java
In addition to to what you mention, I'd like to note that I like Ruby a lot. I think it nicely combines the best parts of Lisp and Smalltalk.Schol-R-LEA wrote: Unfortunately, the languages I do have some remaining tolerance for - Python and Scheme - are too marginal, too slow, too ideosyncratic, and too limited in their support software to be practical. If I wanted to create my own tools for everything, I'd be working on my OS, not on someone else's crudware apps.
But, in real life, I end up using Python (which feels like a bastard son of Basic and Lisp to me) almost as much as Ruby, and the reason is interesting: of all the scripting language I've tried, Python really has the best interoperatibility with the world.
Most of the I need to write something quickly, I first check from RAA (the Ruby Application Archive) whether there's a library for any necessary bindings (I any are needed). Then I realize that something critical is missing, and then I end up writing it in Python, because Python really talks with more or less everything.
Btw: in case you haven't noticed (and probably haven't) there's been quite a bit of talk in Lisp circles about the future of Lisp (and things like whether Common Lisp is actually a good thing at all). Something interesting might actually come out of there too.
Re:Alternatives to Java
A recent lead article in a prominent German comp mag (iX) featured the various "script" languages around, and pretty much summed it up with "Perl rules the field, Ruby and Python are strong contenders with Python being in the lead for support and popularity, the rest fights for single-percent market shares". As far as I remember.
As for Python, I liked their credo, which they bastarized from Perl's "There is more than one way to do it": "There should be - preferably only - one obvious way to do it." Can't tell really whether they stood up to it, haven't done anything Python so far.
As for Python, I liked their credo, which they bastarized from Perl's "There is more than one way to do it": "There should be - preferably only - one obvious way to do it." Can't tell really whether they stood up to it, haven't done anything Python so far.
Every good solution is obvious once you've found it.
Re:Alternatives to Java
I find it that Python sometimes has the problem (that is actually worse in languages like C) that the "one, obvious" answer can radically change when a single, small, additional requirement is added. Ruby IMHO tends to avoid this better.
Ofcourse, this has to do with language's orthogonality: if different things are done with different paradigms, then at some point there is going to be a case where one will want to mix the paradigms, and if that can't be done in a nice way, then one will have to redesign at least part of one's program.
Scheme (and other applicative languages) are actually quite good at this: because everything is a function call, there's really just one paradigm. Macros do add some complications, but those usually either write complicated functions from simple descriptions, or reduce the requirement for writing lambda-functions everywhere.
Actually, even Scheme sometimes has paradigm clashes. If you think of it, we actually have to paradigms in Scheme: the "function calling" and the "value returning". Fortunately, these are easy to glue together:
;; Function that calls a function with the result of a read-char
(define (call-with-read-char f . readparam)
(f (apply read-char readparam)))
As one would expect, these types of functions are actually used in Scheme programming quite often; enough, that the call-with- prefix is more or less standard by now. Because Scheme is "tail-recursive", this works a lot more times than one would initially think. (In fact this is related to continuation passing style which is probably the most commonly used way to model control flow in things like denotational semantics).
Now, if you have a language that does more than calls functions, then you will inevitably have paradigm clashes that are much harder to resolve than this particular case.
Ofcourse, this has to do with language's orthogonality: if different things are done with different paradigms, then at some point there is going to be a case where one will want to mix the paradigms, and if that can't be done in a nice way, then one will have to redesign at least part of one's program.
Scheme (and other applicative languages) are actually quite good at this: because everything is a function call, there's really just one paradigm. Macros do add some complications, but those usually either write complicated functions from simple descriptions, or reduce the requirement for writing lambda-functions everywhere.
Actually, even Scheme sometimes has paradigm clashes. If you think of it, we actually have to paradigms in Scheme: the "function calling" and the "value returning". Fortunately, these are easy to glue together:
;; Function that calls a function with the result of a read-char
(define (call-with-read-char f . readparam)
(f (apply read-char readparam)))
As one would expect, these types of functions are actually used in Scheme programming quite often; enough, that the call-with- prefix is more or less standard by now. Because Scheme is "tail-recursive", this works a lot more times than one would initially think. (In fact this is related to continuation passing style which is probably the most commonly used way to model control flow in things like denotational semantics).
Now, if you have a language that does more than calls functions, then you will inevitably have paradigm clashes that are much harder to resolve than this particular case.
Ruby rocks!
I'd add my vote for Ruby. After I finally bothered to have a look at it some half a year back (due to all the hype about Ruby on Rails), I've been writing a lot of code in it and it has displaced Python, which I used to use a lot, as my favorite all-purpose language.
This is saying a lot, since Python isn't half bad. Ruby just manages to be more consistent and elegant (no more explicit self argument to instance methods!) and the OO meta-programming facilities it offers are second to none (well, except, of course Smalltalk, its major inspiration).
I'm currently writing a Scheme interpreter and compiler in Ruby, which has allowed me to really delve deep into the language. Also, been playing around with the OpenGL interface to create a small solar system simulation. Ruby rocks for both purposes (unless you want to start counting CPU cycles, naturally).
(There's a free online version of the 1st edition of Programming Ruby: The Pragmatic Programmer's Guide, which should serve as a very readable introduction to anyone interested.)
This is saying a lot, since Python isn't half bad. Ruby just manages to be more consistent and elegant (no more explicit self argument to instance methods!) and the OO meta-programming facilities it offers are second to none (well, except, of course Smalltalk, its major inspiration).
I'm currently writing a Scheme interpreter and compiler in Ruby, which has allowed me to really delve deep into the language. Also, been playing around with the OpenGL interface to create a small solar system simulation. Ruby rocks for both purposes (unless you want to start counting CPU cycles, naturally).
(There's a free online version of the 1st edition of Programming Ruby: The Pragmatic Programmer's Guide, which should serve as a very readable introduction to anyone interested.)
Re:Ruby rocks!
Hey, you! What's your business emulating my little home LAN, eh?Arto wrote:Also, been playing around with the OpenGL interface to create a small solar system simulation.
Oh, wait, you mean planets and stuff, right? Sorry, got carried away for a second...
;D
Every good solution is obvious once you've found it.
Re:Ruby rocks!
LOL ;DSolar wrote: Hey, you! What's your business emulating my little home LAN, eh?
Re:Alternatives to Java
Don't laugh too loud, SOLARSYSTEM is my LAN's ESSID and workgroup. My nick is "solar", and my wife is nicked "luna". And today it's one year sharp since our little star has been born, though she doesn't have an account yet on any of my machines.
Every good solution is obvious once you've found it.
Re:Ruby rocks!
Sorry, I wasn't aware that someone had already usurped half the astronomical dictionary ;D Yeah, you know, the big chunks of rock and gas flying around up there on their perpetual merry-go-around, so, nothing personal.Solar wrote: Hey, you! What's your business emulating my little home LAN, eh?
Oh, wait, you mean planets and stuff, right? Sorry, got carried away for a second...
...but, shouldn't that then be "Sol", not "Solar" ?Solar wrote: Don't laugh too loud, SOLARSYSTEM is my LAN's ESSID and workgroup. My nick is "solar", and my wife is nicked "luna".