I have about 2 years experience with C++ and know JAVA a lil bit. I want to be the person who can do just about ANYTHING on the computer. I am also 15 so i want something that will benefit me later(i plan to be a software engineer). Do i need to go web development way or learn something like python? I don't really know(i do some opengl and sfml for games on c++ so thats outta the way)....really i want it to be so that when i goto college i can be lazy:)
OCaml is probably the easiest of the three to pick up if you've only ever used imperative languages. I haven't looked at it too deeply, so I can't say much about it. The one thing I've heard that might be noteworthy is that its compiler tends to generate quite fast code for a functional language. It supposedly rivals C in some cases.
Haskell is the weird one but also (IMO) the most interesting one. Like OCaml, it's statically typed and uses type inference to forgo type declarations. Unlike OCaml, it's purely functional and uses lazy evaluation. The latter allows such things as infinitely large data structures that are constructed as needed.
Scheme is a dialect of Lisp, the archetype of functional languages. Unlike OCaml and Haskell, it's dynamically typed (which I personally don't care much for). One interesting aspect of Lisp is that it lets you treat data as code and code as data, so such things as self-modifying code is relatively easy to do in Lisp.
These are very interesting languages, but mostly academic and with little use in industry.
Learn Scala, because it offers almost all the goodies of the above three, but it has much more usage in industry, and, thanks to binary compatibility with Java, it inherits all the good stuff from Java - lots of production level libraries and good performance.
Well if you are going to mess with python then you should possibly try Lua as it is a good scripting language. Plays nice with C/C++ under Linux (not sure about Windows though because I've got to where I code mostly under Ubuntu). I've also been told Haskell and Lisp too when I talked about learning languages. I've toyed with assembly just for fun as I've found that a lot of companies still use it to squeeze as much speed out as they can.
I like Java for it's library support, ubiquity and top-notch tooling. Not necessarily for the language itself; C# does many things better at the language level, for example, but Mono doesn't even come close to being a good enough replacement for the .Net framework on non-Windows platforms so I stick to Java and other JVM languages (JRuby, Jython and Scala, mostly) for most x-platform work I do.
I don't hate Java, I was actually trolling (that's not to say I don't dislike it, just that I don't dislike it very strongly).
I agree with you on everything except for Mono not being good enough, I think it is, so I do use it on non-Windows platforms. The only irritating thing about Mono is when you have .Net DLLs which rely on native DLLs, because then you have to mess around with dll.config files and environment variables to get Mono to map foo.dll to libfoo.so. Once you've done that, though, it's fine (unless the library is only distributes as native Windows DLLs; then you're screwed, but that's not Mono's fault).
Android apps run on a VM called Dalvik which reads the app's executable file(s) and interprets what's called bytecode. Any language that can be converted into Dalvik bytecode can be run on Dalvik. At the moment I know that Java and C# can. There is also an app called SL4A which lets you run scripting languages like Python.
i really would like to stay away from .NET ANYTHING i hate micro$oft with a passion....don't even get me started with apple ill buy M$ over apple anyday....anyway Lua sounds good to me ive always wondered what it was. Thanks for all the suggestions and as far as me and how i feel about java im still skeptical but lets all be honest.....it's here to stay for a lil while anyway....Thanks again!
If you're looking to get a quick programming position (might not be the best pay, but still), then I'd go with either .NET, Scala, or Java in the order that I've mentioned them. If you want to land a high paying job, learn FORTRAN. I say this because most of the old FORTRAN gurus are either dead or dying and there aren't many people out there to maintain legacy code.