LinuxQuestions.org
Help answer threads with 0 replies.
Home Forums Tutorials Articles Register
Go Back   LinuxQuestions.org > Forums > Non-*NIX Forums > Programming
User Name
Password
Programming This forum is for all programming questions.
The question does not have to be directly related to Linux and any language is fair game.

Notices


Reply
  Search this Thread
Old 08-02-2005, 07:15 PM   #1
flamesrock
Member
 
Registered: Aug 2003
Distribution: Gentoo 2006.1
Posts: 405

Rep: Reputation: 30
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

Last edited by flamesrock; 08-02-2005 at 07:17 PM.
 
Old 08-02-2005, 07:29 PM   #2
ilikejam
Senior Member
 
Registered: Aug 2003
Location: Glasgow
Distribution: Fedora / Solaris
Posts: 3,109

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

Dave
 
Old 08-02-2005, 07:34 PM   #3
flamesrock
Member
 
Registered: Aug 2003
Distribution: Gentoo 2006.1
Posts: 405

Original Poster
Rep: Reputation: 30
So Java can produce cutting edge 3d-graphics, as well as fast compiled code?
 
Old 08-02-2005, 07:56 PM   #4
werdnA
LQ Newbie
 
Registered: Jul 2005
Location: Iowa
Distribution: Fedora/Suse
Posts: 2

Rep: Reputation: 0
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.
 
Old 08-02-2005, 07:57 PM   #5
Matir
LQ Guru
 
Registered: Nov 2004
Location: San Jose, CA
Distribution: Debian, Arch
Posts: 8,507

Rep: Reputation: 128Reputation: 128
Well, it doesn't meet all your needs, but I'd give Python a serious look.
 
Old 08-02-2005, 08:04 PM   #6
ilikejam
Senior Member
 
Registered: Aug 2003
Location: Glasgow
Distribution: Fedora / Solaris
Posts: 3,109

Rep: Reputation: 97
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
 
Old 08-02-2005, 09:07 PM   #7
lowpro2k3
Member
 
Registered: Oct 2003
Location: Canada
Distribution: Slackware
Posts: 340

Rep: Reputation: 30
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

Last edited by lowpro2k3; 08-02-2005 at 09:12 PM.
 
Old 08-02-2005, 09:18 PM   #8
Matir
LQ Guru
 
Registered: Nov 2004
Location: San Jose, CA
Distribution: Debian, Arch
Posts: 8,507

Rep: Reputation: 128Reputation: 128
I need to learn x86 assembly. I know sparc, but not x86 yet.
 
Old 08-02-2005, 09:24 PM   #9
vharishankar
Senior Member
 
Registered: Dec 2003
Distribution: Debian
Posts: 3,178
Blog Entries: 4

Rep: Reputation: 138Reputation: 138
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.
 
Old 08-02-2005, 09:34 PM   #10
elyk1212
Member
 
Registered: Jan 2005
Location: Chandler, AZ USA
Distribution: Mandrake/Mandriva 10.2
Posts: 186

Rep: Reputation: 30
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.
 
Old 08-02-2005, 09:52 PM   #11
sundialsvcs
LQ Guru
 
Registered: Feb 2004
Location: SE Tennessee, USA
Distribution: Gentoo, LFS
Posts: 10,649
Blog Entries: 4

Rep: Reputation: 3934Reputation: 3934Reputation: 3934Reputation: 3934Reputation: 3934Reputation: 3934Reputation: 3934Reputation: 3934Reputation: 3934Reputation: 3934Reputation: 3934
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.
 
Old 08-02-2005, 09:57 PM   #12
ilikejam
Senior Member
 
Registered: Aug 2003
Location: Glasgow
Distribution: Fedora / Solaris
Posts: 3,109

Rep: Reputation: 97
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
 
Old 08-02-2005, 10:30 PM   #13
flamesrock
Member
 
Registered: Aug 2003
Distribution: Gentoo 2006.1
Posts: 405

Original Poster
Rep: Reputation: 30
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.

Last edited by flamesrock; 08-02-2005 at 10:33 PM.
 
Old 08-03-2005, 12:41 PM   #14
elyk1212
Member
 
Registered: Jan 2005
Location: Chandler, AZ USA
Distribution: Mandrake/Mandriva 10.2
Posts: 186

Rep: Reputation: 30
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.
 
Old 08-03-2005, 05:01 PM   #15
flamesrock
Member
 
Registered: Aug 2003
Distribution: Gentoo 2006.1
Posts: 405

Original Poster
Rep: Reputation: 30
Actually, Scheme was my first language, but I forgot most of it.

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


Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off



Similar Threads
Thread Thread Starter Forum Replies Last Post
Future of Linux, Future of BSD ? tarballed Linux - General 28 01-01-2012 04:04 PM
Future colinstu General 4 06-17-2005 05:55 AM
Choosing a scripting language joeljkp Programming 5 10-27-2004 04:36 PM
In the future... sandy_obrien Linux - General 1 06-10-2004 03:08 AM
Choosing a language... dtaliafe Programming 7 01-23-2002 06:59 PM

LinuxQuestions.org > Forums > Non-*NIX Forums > Programming

All times are GMT -5. The time now is 10:14 PM.

Main Menu
Advertisement
My LQ
Write for LQ
LinuxQuestions.org is looking for people interested in writing Editorials, Articles, Reviews, and more. If you'd like to contribute content, let us know.
Main Menu
Syndicate
RSS1  Latest Threads
RSS1  LQ News
Twitter: @linuxquestions
Open Source Consulting | Domain Registration