Sign in to follow this  

Is learning different languages good?

This topic is 3458 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hi I personally enjoy starting new languages, but according to what I read in another thread, it's best to choose one and stick to it. Would I end up getting confused in the future, if I took a few languages at the same time? Thanks in advance

Share this post


Link to post
Share on other sites
It's best to choose one and become proficient with it. But it's not sufficient. A competent developer will probably have an arsenal of at least half a dozen languages he's comfortable with, and will be expanding that as much as possible. Frankly, I'd say that anyone who isn't proficient in at least three or four significantly dissimilar languages is basically incompetent.

Share this post


Link to post
Share on other sites
If you don't know any languages, pick one and learn it well.

Once you learn your first language, learn several others, ideally founded on different programming paradigms (i.e., learn a procedural language, an OO language, a functional language, etc).

If you're relatively new to programming, trying to learn several languages at once may be confusing, but once you have some experience under your belt learning new languages is a good thing.

Share this post


Link to post
Share on other sites
Learn to program. That practically requires you to learn a syntax to program with. Once you learn to program pretty well, and get some program design under your belt then other languages become beneficial. Before that point, they may (depending on the person) be too difficult to learn efficiently or you're too inexperienced to really grasp some of the benefits/nuances.

But yes. Quite good once you get out of the beginning stages.

Share this post


Link to post
Share on other sites
Quote:
I personally enjoy starting new languages, but according to what I read in another thread, it's best to choose one and stick to it.
As a beginner, it’s best to form a very good foundation in one single language. You will struggle to develop as a programmer if you aren’t very good in a language. Furthermore, being able to effectively use a language requires a certain amount of time and experience with it.

Quote:
Would I end up getting confused in the future, if I took a few languages at the same time?
You would. Learn one language at a time. But do intend to learn, as Promit said, different languages. Save it for the future when you can comfortable write programs in at least one language.

Share this post


Link to post
Share on other sites
I've mainly worked with C#.
So your saying for me to learn one language at time, right?
But how do I know if I've had enough of one language and I'm ready to start another?

Share this post


Link to post
Share on other sites
I would say learning new paradigms is more important than learning new languages. You should probably try to pick a main language since becoming really good in one language will generally take a long time. You know when you're done with that language as far as proficiency goes when you're not learning anything new.

I would try to learn all the stages of what goes into a computer though:

  1. Maths (Welcome to school)

  2. Theory of computation

  3. Physics

  4. Analog electronics

  5. Digital electronics

  6. Modern CPU design

  7. X86 and M68k assembly

  8. As many data structures and algorithms as you possibly can

  9. C

  10. Compiler theory

  11. Ada

  12. Prolog

  13. Haskell

  14. Software engineering

  15. C++

  16. Work on open source projects, contribute and share with others. Be open to critique, there's no faster way to gain experience than by being taught. the quick proliferation of knowledge through social interactions is what separates us from most animals. You should have plenty of free time as a student.

  17. C# or Java (Welcome to the work force, enjoy your stay)

  18. Keep getting aquainted with new technologies that you apply in order to solve tasks.

  19. Every 5 - 10 years learn whatever technology is up and coming and make that your livelihood.


Looking back this feels like a somewhat solid approach. I would say you should be able to go in one end and come out the other in about 8-12 years depending on talent level. You'll have to learn a lot of intermediate technologies like XML, SQL and so on in order to solve your tasks at work. This is probably more of a recipe for a computer engineer than a computer scientist. If anyone wants to add more steps please do, I need it for my army of mad computer engineers I'm creating.

Share this post


Link to post
Share on other sites
Quote:
Original post by Promit
It's best to choose one and become proficient with it. But it's not sufficient. A competent developer will probably have an arsenal of at least half a dozen languages he's comfortable with, and will be expanding that as much as possible. Frankly, I'd say that anyone who isn't proficient in at least three or four significantly dissimilar languages is basically incompetent.


Dissimilar? So I guess Lua (imperative/procedural), C# (object-oriented), and Scheme (functional), wouldn't cut it?

Share this post


Link to post
Share on other sites
For C# I would say when you have used the following in non-trivial projects (most games will do - maybe not pong) - and can argue why you used what where:

Object oriented programming:
- encapsulation
- inheritance
- composition
- design patterns

Delegates and events:
- event based programming
- first class functions
- caption of variables from the outer scope

Copying/passing semantics:
- by reference
- by value
- when are they equivalent?

The list is by no means complete, but it's a start. By then you will probably have mastered the less interesting things such as syntax and other pecularities of C#.

EDIT: Oh, and in my opinion, you can skip 3, 4, 5 and 6 of asp_ and not miss it at all, as long as you stick to software. And his list of languages is pretty arbitrary; just learn an object oriented language (C# is fine), a functional language (ML or Haskell probably), a declarative language (SQL is useful), and maybe a logical language (Prolog will do).

Share this post


Link to post
Share on other sites
Quote:
Original post by Alpha_ProgDes
Quote:
Original post by Promit
It's best to choose one and become proficient with it. But it's not sufficient. A competent developer will probably have an arsenal of at least half a dozen languages he's comfortable with, and will be expanding that as much as possible. Frankly, I'd say that anyone who isn't proficient in at least three or four significantly dissimilar languages is basically incompetent.


Dissimilar? So I guess Lua (imperative/procedural), C# (object-oriented), and Scheme (functional), wouldn't cut it?
I'd say C, C++, and C# are "different enough", but C# and Java aren't, if that makes sense.

Share this post


Link to post
Share on other sites
Quote:
Original post by Promit
Quote:
Original post by Alpha_ProgDes
Quote:
Original post by Promit
It's best to choose one and become proficient with it. But it's not sufficient. A competent developer will probably have an arsenal of at least half a dozen languages he's comfortable with, and will be expanding that as much as possible. Frankly, I'd say that anyone who isn't proficient in at least three or four significantly dissimilar languages is basically incompetent.


Dissimilar? So I guess Lua (imperative/procedural), C# (object-oriented), and Scheme (functional), wouldn't cut it?
I'd say C, C++, and C# are "different enough", but C# and Java aren't, if that makes sense.


C = procedural
C++ = multi-paradigm
C# = OOP
Java = OOP

That's a gross oversimplification but I get it. Thanks.

Share this post


Link to post
Share on other sites
Quote:
Original post by Promit
Quote:
Original post by Alpha_ProgDes
Quote:
Original post by Promit
It's best to choose one and become proficient with it. But it's not sufficient. A competent developer will probably have an arsenal of at least half a dozen languages he's comfortable with, and will be expanding that as much as possible. Frankly, I'd say that anyone who isn't proficient in at least three or four significantly dissimilar languages is basically incompetent.


Dissimilar? So I guess Lua (imperative/procedural), C# (object-oriented), and Scheme (functional), wouldn't cut it?
I'd say C, C++, and C# are "different enough", but C# and Java aren't, if that makes sense.


Hm. When I hear "dissimilar languages" I think something like C++ vs Haskell or Haskell vs Prolog. Oh well...

Share this post


Link to post
Share on other sites

This topic is 3458 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this