LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Programming (https://www.linuxquestions.org/questions/programming-9/)
-   -   Choosing a Language for the Future? (https://www.linuxquestions.org/questions/programming-9/choosing-a-language-for-the-future-349393/)

flamesrock 08-02-2005 07:15 PM

Choosing a Language for the Future?
 
So I'm an accomplished Python programmer, have decent experience with C, PHP, Pascal and assembly, but can't decide what to learn next. Whatever it is, my intention is to learn it inside out.

I want a language that is:
-good (powerful, not dumbed down)
-relevant in the job market
-will be relevant in future
-can be used for hobby programming as well as work
-can be used cross platform without too much difficulty
-the language must keep me interested
-should be able to perform different tasks (3d graphics, CLI, desktop applications)
-preferably fast executing compiled code

>I liked C#, but mono is still in it's infancy, and since I use Linux 90% of the time it may not be the *best* choice due to lack of 'Forms'.

>C++ is powerful and relevant, but feels like an old beast that takes longer to do things with (in my limited experience.)

>Java is too boring and cumbersome

>I considered objective-C but it's propriety, no? And how relevant it will be in the future?



What should I pick? Am I overlooking anything??

-thanks

ilikejam 08-02-2005 07:29 PM

Hmmm, you've pretty much described Java. Shame you feel that way about it.

Dave

flamesrock 08-02-2005 07:34 PM

So Java can produce cutting edge 3d-graphics, as well as fast compiled code?

werdnA 08-02-2005 07:56 PM

You really should give C++ a try. Not only is it extremely powerful, it it also very interesting on many levels.

It is very relevant to the workplace now and for the foreseeable future.

Cross platform is very doable with libraries like Trolltech's Qt (www.trolltech.com).

There are also many other free libraries that let you do a ton with little code. Check out the Boost library (www.boost.org) if you are not familiar with it already.

Matir 08-02-2005 07:57 PM

Well, it doesn't meet all your needs, but I'd give Python a serious look.

ilikejam 08-02-2005 08:04 PM

Java can certainly do 3D. Their 'Project Looking Glass' desktop environment is Java based:
http://www.sun.com/software/looking_glass/
There are bindings to OpenGL from Java, so it should be about as cutting edge as you like.

Using the Sun JRE, Java bytecode can be of a similar speed to C (and in some cases faster). Depends on what you're doing. Hava a look here:
http://www.idiom.com/~zilla/Computer...benchmark.html

Dave

lowpro2k3 08-02-2005 09:07 PM

I'm betting the farm on learning assembly, C++, C, Java, Linux API's and graphics API's. Hopefully my choice works out for me. I like assembly because I learn 10x more about other languages when I program in it. I'm drifting further and further from MS programming which might bite me in the ass one day, but we'll see.

Quote:

Originally posted by flamesrock
>Java is too boring and cumbersome
I felt like this for a little while, but I gave it another serious try. Have a look at the JFC/Swing tutorial and maybe give it another shot? Thats what I did at least ;)

I see Linux only getting bigger, so like I said I'm kind of putting my eggs in that basket. Other than that, the only "in-demand" thing I see getting big is Java/XML/Web Apps, and I kind of see web apps getting much bigger once we get faster Internet. Its easier to create UI's in a browser window, and the general public doesn't like installing software.

Just my 0.02

- lowpro2k3

Matir 08-02-2005 09:18 PM

I need to learn x86 assembly. I know sparc, but not x86 yet.

vharishankar 08-02-2005 09:24 PM

C/C++ will be around for a long time...

Simply put, entire Operating Systems have been coded in C and C++ (with assembly of course). Most OSes have native C or C++ APIs too. These languages won't disappear for a while yet.

Learning these languages is a very safe bet in the forseeable future.

elyk1212 08-02-2005 09:34 PM

Yeah, there are 3d APIs written in the standard release SDKs. But it will never be as fast as a true compiled language. It is compiled to a byte code that is interpreted by the Java Virtual Machine. It is fast, but CANNOT ever be as fast as native, since there is this abstraction/interpretation.

I recommend java as it is heavily type safe, making for VERY reliable code that is easy to bug check.

sundialsvcs 08-02-2005 09:52 PM

Pick one! :)

You've obviously been around this block before. The more languages you learn the easier each one becomes. They're the tools in your toolbox. You never know when you'll need to use a new one.

I don't think you need to try to learn every new language "inside and out" because pretty soon the learning process becomes repetitive. It's probably better to acquire a somewhat-in-depth exposure to a wider variety of languages, at this point.

ilikejam 08-02-2005 09:57 PM

Quote:

Originally posted by elyk1212
It is fast, but CANNOT ever be as fast as native, since there is this abstraction/interpretation.
That's not strictly true. The JIT methods used in modern bytecode interpreters can cache frequently used code, which can result in faster execution. The interpreter can also provide speedups by analysing code on the fly, and avoiding situations where memory would normally be transferred to and from main memory, instead of remaining in cache or registers.

That said, for 99% of the people, 99% of the time, yes Java will be slower.

Dave

flamesrock 08-02-2005 10:30 PM

Hmm... I am leaning more towards c++. At my school, they teach mostly in Java so I will gain Java experience, like it or not. The question is, is it worth it? Python/Jython are a lot more fun and just as fast.


Any opinions on c#?

edit to add:
oh -- and I do plan on learning more than one. The plan is to learn them one at a time and not fill my brain with any unnecessary languages.

elyk1212 08-03-2005 12:41 PM

Quote:

That's not strictly true. The JIT methods used in modern bytecode interpreters can cache frequently used code, which can result in faster execution. The interpreter can also provide speedups by analyzing code on the fly, and avoiding situations where memory would normally be transferred to and from main memory, instead of remaining in cache or registers.

That said, for 99% of the people, 99% of the time, yes Java will be slower.
I am aware of workarounds and caching, but these are just enhancements and special cases that do not change the paradigm. A lot of this has been around since interpreted languages began. Perl Does this on Apache's mod-perl etc. Still, any time there is an initial redirection, there will be a delay somewhere in the execution, whether it be the first invocation or later. JIT compilation produces a delay somewhere, this is the general statement that can be made. As in analysis, we always have to consider the general WORST case. Anyhow I just studied this exact concept 2 years ago on my CSE exam (in my 68k assembler class). It is not based on opinion or any subjective leanings towards favorite languages.

Anyhow, if you analyze it as an algorithm that needs to compile N lines, then execute. Perhaps I could consider that a O(N) + O(1) = O(N) algorithm. While just execution with no parsing would be a O(1) algorithm (and in the case of a cached method, this method invocation would also be O(1), but probably not the whole program. Also it is a special case). Again, we always have to consider general case analysis, which as you know is ALWAYS in the WORST CASE.... That's what discrete math's big O analysis entails :).


Want to learn a VERY strange and function related program that has its roots in Lamda calculus? Try out Scheme. It is required of all Computer Engineers at my local university. Good for learning Computer Science, not necessarily for writing many programs. But, learning different approaches to programing help with languages you already know.

For writing practical largely scalable OOP programs I have to again recommend Java AND C++. Notice the AND, as I think Both are VERY important to learn. C++ for the pointer concepts that you miss in some other languages, and Java for learning base OOP concepts with minimal complexity. Also I LOVE the cross platform possibilities of Java.

flamesrock 08-03-2005 05:01 PM

Actually, Scheme was my first language, but I forgot most of it.

C++ it is, I guess! I might reconsider Java in the future.


All times are GMT -5. The time now is 02:30 AM.