Link to home
Start Free TrialLog in
Avatar of mikha
mikhaFlag for United States of America

asked on

learning a second programming language

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?
Avatar of Paul MacDonald
Paul MacDonald
Flag of United States of America image

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.
Hi,

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.
Avatar of noci
noci

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.
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++.
@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.
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.
Hello,

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
https://www.amazon.com/JavaScript-Good-Parts-Douglas-Crockford/dp/0596517742
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,

Doug
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.
ASKER CERTIFIED SOLUTION
Avatar of pepr
pepr

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of mikha

ASKER

I closed this question , but wanted to mention one thing I forgot to note in the question. I wanted to see which language is good for a financial application, which can have lot of calculations and precision is important.

I'm pretty sure lot of modern languages have robust support for calculation , but is there a language which is preferred?
Hi,
It depends on the level that you'll be required to work at. If it's a low level, probably it will be required to do it in C++. There are implementations done in Java or C#, too. For higher-level programming, probably python will be an option.

There are a couple of books for Financial area like:
Introduction to C++ for Financial Engineers: An Object-Oriented Approach
C# for Financial Markets

My advice is to look at job descriptions for positions in this area to see what are the requirements and get started from there.
The key for financial work is being able to ensure the precision of mathematical operations so you know when and if rounding is occurring.

Java and C# both have support for types which after designed to handle this.  E.g. Check out BigDecimal in Java.

If you use a language without direct support for this (like C++ say) you'd need to find a library or be very careful with the code you write.
The crux for financial systems is exact calculations with NO or the LEAST amount of rounding....
So string arithmatic / decimal arightmatic are prefered..
There are few  languages with Excelent support for these datatypes. Common Business Oriented Language.. aka COBOL. or Programming Language one (PL/1)
COBOL does arbitrary precision calculations. for any number, except for numbers with clause usage = computational.
PL/1  has data types like DECIMAL FIXED PRECISION (20,2) for 20 digit number with 2 decimals. (and support in printing etc).

Floating point is not usable as some numbers are only an approximation. 3.33 as a float is never exact (f.e.).
That said  Fixed point numbers are easy to simulate using integers.   You will need 64bit integers to accomodate 17( or 18) digits of precision. with 32 bit integers 8 (or 9) decimals are the limit).
Several languages support libraries to do extended precision, bignumbers, decimals... (simulated using integers or character or BCD strings)
So it is not the language but support libraries that implement those: Python, Java, C, C++...