Hi All,

I am starting to pursue a change in career to Software Development Engineering. I want to start learning a language. I found a previous Daniweb post on this "which language first?" topic, with good replies, BUT since my ultimate goal is to work for a software development company that makes NON-web-based products, I am starting this new thread to garner responses exclusive of recommendations for web-based languages (PHP, Java, etc).

I am aware that through the course of my new, upcoming career I will end up learning quite a few languages. However, I'd like to make my first 1 - 3 be the best "bang for the buck" in terms of current applicability (i.e. market demand, now plus next 5 years).

Also, if it is helpful for you to know in your considerations on my behalf, I am already at an advanced level with regards to Microsoft Visual Basic for Access and database development and administration standards.

Thanks in advance for your time and thoughts,

KingsWeBe

> BUT since my ultimate goal is to work for a software development company that makes NON-web-based products,
Learn COBOL then.
1. There's billons of lines of code out there, and more being added by the year. It just isn't going to get replaced overnight.
2. It's very unfashionable at the moment (and has been for a while). Which means the programmer base is getting old.

Lots of code + few programmers = write your own paycheck.

There's no real answer to this question. If I had to restrict myself to three primary languages for the rest of time, they would be C++, Haskell, and Oz. If you're looking for current usefulness, or "applicability," I'd say C#, C++, and Java. But learning Java is trivial once you've done C#. I think one of your next three should be 'growth' languages, in that learning it should improve your programming ability and ability to pick up new languages quickly.

So here's my final answer: Spend a week using Python, a week using C++, a week using Scheme, a week using Perl, and a week using C#. Then, pick three languages by the following algorithm:

- Pick C# and C++.
- Of Python, Scheme, and Perl, pick the one you liked the least.

And then "learn" the languages -- meaning, learn how to use them, learn how to use them weirdly, and look at other peoples' code to see how they use them. Do it in this order: Start learning C# and the third language at the same time. After a while, focus your learning more on C++.

- Of Python, Scheme, and Perl, pick the one you liked the least.

out of curiosity why the one you like the least?

You won't learn anything new if you only stick to what is comfortable.

ok, makes sense, i am already pretty fluent in java, and am happy with it, i'm also pretty familiar with c++

i was just curious, though

>You won't learn anything new if you only stick to what is comfortable.
Right. But dont waste up your time just to learn new languages. All you will get is shallow knowledge about many thing. There's too many language out there. It's much better if you have a main language and 2-3 spare one.

Learn something you can sell, up-to-date, and popular such as Java or .NET

The reusable and marketable skill is knowing how to program, not which language(s) you've memorised. After the first 3, they all start to look alike anyway. It might take you a year to learn the first one, but the 5th will only take a month.

Being able to take a list of requirements (usually vague and contradictory), produce a design, code it and test it in a reasonable time-frame and be able to do that on a repeated basis is what gets you jobs.

Not being able to write "hello world" (or other typical homework) in 20 different languages.

Anything less than 10K lines is student homework territory.

>
Learn COBOL then...QUOTE]

I like your reasoning for suggesting Cobol. Got any recommendations for languages #2 and #3?

Different and useful - Perl
Different and obscure - Lisp
Different and psychotic - brainf**k

If business software isn't your bag, but scientific software is, then there's a similarly entrenched base of Fortran to deal with. Again (like Cobol), despite being very old, there are ISO standards which are pretty recent, which update the language for modern usage.

But my other reply about learning how to program is much more important than any specific language (like learning to drive vs. the car you choose at various points in your life).

If you rely on the Windows platform, the .NET field is getting better and better. Visual Studio 2008 has many new features.

And, if you need to run them on Linux/UNIX, Mac OS, or even portable (soon) platforms, Mono is a great way to run them.

However, I do suggest learning a scripting-esque language as well, such as Python, Ruby, Perl, Lua or Lisp (I know how to use Python and Ruby fairly well, and Lua very well). Perl and Lisp I've tried, but didn't like. The syntax was terrible.

Try a bunch, pick what you like. If you go with the "pick your least favorite" idea, think of it this way. If you're buying a new car, and you try a Toyota, a Mazda, and a Honda, and you hate the Honda because it's a rough ride and you don't like the interior and internals, but you think "heck, I hate it, so I'll buy it and learn something new in the process," where is that going to bring you? An unhappy ride to work and back each day.

One of my friend's father is a programmer

He knows Cobol and other languages.

Cobol is really useful for getting program jobs where people want to rewrite it into new languages.

Also the pay for that I heard was really high

i looked at brainf**k, and i don't get why anyone would use it, it's really confusing, and unreadable

i looked at brainf**k, and i don't get why anyone would use it, it's really confusing, and unreadable

You have no soul.

You have no soul.

Agreed. I love brainf**k.

how do you make it do anything usefull, while keeping the code readable?

well a interperator can change brainfuck into another code language and could change the other language into brainfuck.

I googled for it and found there is one written in javascript.

But it is kind of neat to see there are languages that are made that no one will use for a real world application.

And if some software development firm uses it. they sure hate their programmers.

And if some software development firm uses it. they sure hate their programmers.

agreed

I think the most practical language would be C++. It's not about how many languages you know. Believe it or not, if you know 1 fairly well, you'll be fluent with about 90% of the languages out there in about 2 hours. C++ is a great language to start with because it exposes you to real software engineering topics such as object oriented design and memory management. Java would also be a good one here. So these are my 2 picks.
I would really stay away from the .NET platform (for now). .NET language encapsulate a lot of important details of daily programming. You'll just never be able to understand/learn things as well as you would with other higher level languages.

I think the most practical language would be C++. It's not about how many languages you know. Believe it or not, if you know 1 fairly well, you'll be fluent with about 90% of the languages out there in about 2 hours.

Nope.

C++ is a great language to start with because it exposes you to real software engineering topics such as object oriented design and memory management. Java would also be a good one here. So these are my 2 picks.
I would really stay away from the .NET platform (for now). .NET language encapsulate a lot of important details of daily programming. You'll just never be able to understand/learn things as well as you would with other higher level languages.

How can you discount the .NET platform while supporting Java?

commented: Completely agree. +9

Nope.

'Nope' is your argument against what i said? Can you be more rude?
What exactly do you not agree with? At high level, all programming languages are similar to each other (not including Brainfuck and similar garbage with no potential for any kind of productive use). If you're an experienced programmer in one, your skills will transfer to another language with little effort. At a practical level you would still need to get familiar with certain techniques used by a language or ways of expressing logic of course.

How can you discount the .NET platform while supporting Java?

You may be right here. I've used Java for mobile application development while interning at Sprint. I haven't used it outside of its mobility environment. Perhaps it is as encapsulated as .NET languages. It certainly isn't on the mobility side.

'Nope' is your argument against what i said? Can you be more rude?
What exactly do you not agree with?

You didn't provide any argument for what you said, so why should I provide an argument against? An obvious counterexample is that a Java programmer couldn't adapt to C++ in two hours -- he would probably ignore templates completely or only use them in ways that Java generics can be used.

I know that learning new languages has had a significant positive effect on my productivity.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.