learning a second programming language

mikha used Ask the Experts™
I know , this question sounds vague, but if anyone wants to share some interesting findings or experience.

I am a C# programmer. I have always wanted to learn a second language and considering few.

does anyone wants to share any experience, where they learned or migrated to second language and were totally impressed with the second language or how things were done in a different framework?
Watch Question

Do more with

Expert Office
EXPERT OFFICE® is a registered trademark of EXPERTS EXCHANGE®
Paul MacDonaldDirector, Information Systems

Knowing C# you wouldn't have too much trouble with java or javascript.  C#.Net would be a natural as well.  I work a lot in VB.Net and ASP.Net today, but have used C, C#, COBOL, FORTAN, and more versions of BASIC than I can remember.

Because most languages are not task-specific, they have to afford ways to do things that programmers want to do.  Commands and syntax change, but if you're a good programmer, you'll figure out any language you tackle.  In that light, while some languages are easier to write or read or do more things with fewer commands, I don't ever remember being blown away while using a new language except when I used FoxPro.  It was a shame when Microsoft killed it.
Eduard GherguArchitect - Coder - Mentor


Some relevant choices (complementary with C#) could be SQL, JavaScript/TypeScript. Today, good knowledge of a language is no longer sufficient. You need to know about databases, different frameworks that are highly used.
nociSoftware Engineer
Distinguished Expert 2018

The mentioned languages are all compiled languages.

An interpreted language like Python, perl  might give another view on what they can accomplish.
And it more about API's & "frameworks"...  so checking those out might payoff also.

Or a low code environment like node-red f.e.
Success in ‘20 With a Profitable Pricing Strategy

Do you wonder if your IT business is truly profitable or if you should raise your prices? Learn how to calculate your overhead burden using our free interactive tool and use it to determine the right price for your IT services. Start calculating Now!

Eduard GherguArchitect - Coder - Mentor

SQL and JavaScript are NOT compiled languages. TypeScript is a transpiled language, which means that the output it's another programming language that it's JavaScript in this particular case.
Also, it's worth to mention knowing about software engineering principles and practices.
But, it depends a lot on your interest. There are many technology areas that you can study about. A good direction is to study C++ that can offer you a deeper knowledge of many different technologies and the technical decisions that they're based on. For example, all .Net technologies are based on C++.
nociSoftware Engineer
Distinguished Expert 2018

@Eduard, Your comment wasn't visible when typed my comment So indeed Those are not compiled languages.

Another worth while  excise may be to write some simple programs in a machine language like 6502 (apple II) or Z80. simple CPU's.
it gives an idea what happens on the bottom layers.
ste5anSenior Developer

It surely depends on what interests you have:

- Data analysis: Python, R
- AI: Python, Prolog, SmallTalk
- Functional programming: Haskall, D, JavaScript
- Modern databases: SQL, JavaScript, Python
- App development: Java, Swift
- Concurrent programming: Rust, Go, Nim, Erlang

The hard part is mostly getting familiar with the standard libriares.

It depends on your future projects, customeres and personal future targets.

Sometimes it is not just a matter of speed, flexibility, documentaion etc., but has also to do with adaptability, compatibility, standards, teamworking etc.

So, it is very wrong just asking what "impresses" more, since what matters is: what is it good for!!?!

Finally, in order to answer you question I have to know first:
1. What are you going to use it for?
2. Which is your target Development or Market audience?

If you have no answers yet, then, all languages are good for something
  1. Are you a graphics developer?
  2. Do you need to create Commercial /  Database-based Applications?
  3. Are you developing games?
  4. Are you in the Video/Music Industry?
  5. Are you working for a research group?
  6. Are you developing Tools/Libraries for others?
  7. Do you work alone or with (small or big) Teams?
Java would be extremely easy for you to learn as C# actually evolved from Java (when Sun refused to make changes Microsoft wanted to the language).  So they're almost identical.  But Java will open some new doors for you career-wise as it's more widely used than C#.

However, if you want to learn a language to really expand your knowledge, then JavaScript is a great choice.  However, it's a truly terrible language (apologies to any who love it) - it's just something which evolved from the needs for a scripting language and suffers from a lack of actual language design.  However, while that's all true, it is extremely widely used and enormously valuable to know.  Just go in with your eyes open - it's nothing like as clean as C#.  If you do decide to learn this then please also read
to see the parts of the language to actually use and the parts to avoid.  Written well, JavaScript can be very solid.

If you're looking for other interesting languages - where you're really interested in understanding other language concepts, then cooler and newer languages to consider could include Kotlin (which to my mind is an enhanced version of Java/C# - more concise and much better type system with compile type checks to make nulls a thing of the past etc.) or Go (which is very interesting due to its speed and takes a different approach to many things like error handling and concurrency than older languages like Java/C#).

There's lots of great choices out there.  Don't be too afraid to experiment.  You can learn enough about a language to play around with in just a few weeks and in a few months you'll know if you're enjoying the new language or wishing you could rush back to C#.

Good luck,

David FavorFractional CTO
Distinguished Expert 2018

As noci suggested, you might learn a language like Python or PERL or PHP.

What language you choose will depend on your reason for learning.

For example...

1) PERL - I write PERL code nearly every day to support server level functions + custom code because PERL, to me, is very fast writing to produce working code + also very easy to debug.

2) PHP - If you're considering how to boost your income, PHP runs on every Web server especially as the native language for WordPress.

3) Python - Similar applications as PERL, quickly writing one off code or large project code.

4) NodeJS - Vaguely similar to PHP, as a Web server + API language.

So start with your reason for learning a 2nd language + work from there.

Tip: Learning PHP will add most daily income to your bank account.
It depends whether you are learning "to understand" or "to work". I would pick the languages that are completely different.

For both purposes, SQL is a good choice. These days various forms of using a database, and almost always a dialect of SQL is used. It enhances your view to processing data using a completely different (mental) approach.

Python is a good language that (for me) replaces the older alternative for "toolsmithing". The code simple for simple things, and it can grow to huge application. However, I like it more as a replacement for shell/cmd, and for small utilities.

C is a good language "to understand internals". Unless you work with embeded systems, writing some kind of libraries (say even modules for Python), you will not use it very often. But it is close to hardware, and you will enhance your mental pictures how the things work in the computer.

C++ is a good language when you need both power and abstractions. Start with the latest standards (at least C++11) as the standard makes C++ more friendly also for beginners. It is the superset of C, so you can learn both C and C++ using the same compiler/IDE.

Do more with

Expert Office
Submit tech questions to Ask the Experts™ at any time to receive solutions, advice, and new ideas from leading industry professionals.

Start 7-Day Free Trial