Tell me more ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I started my programming career with BASIC, during 9th grade. I learned a bit of BASIC by writing simple programs to add, subtract and to print. Then I went to the university and took Computer Information and Systems Engineering. In the first year I was taught C, and I have good command over it.

Next I learned C++ in the second year. It just taught me some knowledge of OOP. Now I am doing PHP (along with HTML). I have not mastered C++, BASIC or PHP. I am now planning to move to mobile development. But I feel that I have not covered everything in the languages I learned.

Does it really matter?

share|improve this question
11  
Well, learning more doesn't hurt, does it? :) – missingno Dec 30 '11 at 22:16
15  
@missingno Depends on the language. Visual Basic, for example... – Izkata Dec 30 '11 at 23:54
1  
@Izkata: What's wrong with VB? – Dynamic Jan 1 '12 at 17:04
2  
@Jae - Where do I begin? Perhaps the broken type system (some native VB types are not automation compatible and can't be used with COM types such as Collections) or the painful error handling (want a stack trace - catch and rethrow the error in the error handler of every single procedure). Form definitions hidden in opaque module headers, the propensity to generate hidden COM references behind the scenes and not clean them up properly. Basic reference counding garbage collection imposed with its tight coupling to COM perhaps? There's a few, just OTOH. – ConcernedOfTunbridgeWells Jan 1 '12 at 18:26
3  
It hurts not to learn bits of many programming languages. – asfallows Jan 2 '12 at 4:39
show 7 more comments

13 Answers

up vote 40 down vote accepted

We're all just learning bits of programming languages. I would only consider the language implementers to be those who are a 10 out of 10 in the knowledge of a language.

Learning multiple languages, and paradigms, is the only way to develop a "taste" for what you like and don't like. If you only learned one language, you wouldn't even be able to really decide whether you even like it or not.

You're actually doing it the correct way. You will be able to reuse the most important fundamentals you learn in each while getting exposure to different syntax, libraries, and frameworks.

share|improve this answer
7  
"We're all just learning bits of programming languages" isn't it the truth! – TehShrike Dec 30 '11 at 20:30
11  
I like this answer, except it's less "what you like", and it's more "the right tool for the job". No one should be using the same language to solve every problem. That would make a bad software developer. Each language and paradigms have pros and cons. – user606723 Dec 30 '11 at 21:57
1  
Given that compilers and interpreters have bugs, I don't think it's humanly possible to get to 10 for most languages. – jmoreno Dec 30 '11 at 22:39
5  
I don't think even the people who write C++ compilers understand C++. Individually, I mean. Obviously collectively, they have to somehow understand the entire language, but I don't think that there is a single person on this planet who understands all of it. In fact, the committee members are usually quite clear about the fact that they all understand only their own area of expertise. Similarly in Java: Martin Odersky recently said that he believes there are only 3 people in the world who understand wildcards. And from the tone of the e-mail I got the impression that he did not include himself – Jörg W Mittag Dec 31 '11 at 2:20
2  
in that group, even though he actually designed Java Generics (together with Phil Wadler, of course). Although, to be fair, wildcards were added to his design without his consent, in fact, against his express dissent. – Jörg W Mittag Dec 31 '11 at 2:29
show 3 more comments

If you're still in university, it shouldn't matter yet that you don't feel you've covered everything in any of the languages you know. Understanding the common fundamental theories behind these languages is much more important. Once you understand the basics, you can learn the details of other languages when you need them.

share|improve this answer
5  
In my first two years I think we picked up a new language every 3 - 4 weeks to go with the Pascal that was the basis of most of our project work (1982-85) - some of those were functional languages. Part of the point was to try and ensure that we separated "programming" from "coding" – Murph Dec 30 '11 at 19:25

I believe that the most important in programming is to understand the different paradigms.

In your question, you mentioned Object-Oriented Programming (OOP). If you mastered this topic, you should be able to explain it using only pseudo-code and essentially some graphical modelling representation (such as UML class diagrams).

Whether you decide to use Java, C++ or C# (...) is up to you or to the company you work for, but what is really important is to understand/recognize the different problems and decide the best model to solve them. A very important way to solve problems in programming is to use the design patterns which you can discover in this reference book.

As for embedded languages, I believe the important thing is to understand the different problems associated with such technologies.

In a metaphoric way, I'd compare this to writing a good scientific book; what is important is the theory you expose, the problems you manage to solve, and so on. Whether you write the book in English, in French or in Japanese is not that important in the end.

That said, it is also important to know the specifics of a particular language if you want to specialize in that technology in order to exploit it very efficiently.

share|improve this answer
2  
+1 for the paradigms. It's not important to focus on the syntactic sugar of the X or Y language (of course you need that if you use the X language every day at work); what is useful is to study different paradigms because IMHO they help you to be more open-minded and creative in problem solving. – faif Dec 31 '11 at 21:53

In my opinion, there's little point in changing language very frequently. You'll never actually grasp any of them. Especially some like C++, where some people spend a decade writing the language and still have their code look like C.

If you can't write best practices in a language, then don't move on, IMO. That means that covering more than a couple will take many years, if not decades.

share|improve this answer

I think it won't hurt to learn a bit of many different languages, but at the same time you should learn at least one or two in depth.

share|improve this answer

it's good to study languages from different programming paradigms at least! Procedural, declarative, functional, object-oriented, prototypical, and dynamic language - each class of programming offers its own bit of insight as to how to organize and solve a problem. Eventually you discover one or more paradigms that you're most productive and happy with, and use it.

share|improve this answer

I've used many languages during my career, like AMOS Basic, Java, C++, PHP, VB6, Delphi etc. Today I use C#, JavaScript, Ruby and some Clojure at work, and I've also played with Pyhton, Erlang, Common Lisp and Scheme.

But this fall I wanted to make a special x-mas calendar for my blog, and decided to familiarize myself with and solve a particular problem in 24 additional languages. This was a great experience, I learned a lot, and I highly recommend doing this once you have some programming experience.

My answer to you is this: Learn a couple of languages really well (they should be quite different), but make sure you sample and familiarize yourself with many.

Today it's important to know both OOP and FP (functional programming) well, and you should also be comfortable in both a very static and a very dynamic language.

PS: My blog is in Norwegian, but if you'd like to see the list of languages I covered you can have a look here.

share|improve this answer

I learn what I need to learn in a particular language when I need to learn something new. The "trigger" that tells me I need to delve deeper into a language is that a particular bit of code looks ugly or clumsy, appears unmaintainable or is difficult to test or comment. Often these triggers point to my lack of knowledge of a particular programming idiom, style, data structure and so on.

share|improve this answer

Learning multiple programming languages is good practice and is necessary nowadays; as many times you can't always use your language of choice for everything.

The benefits of seeing how other languages do things will help you as a programmer; even if occassionally when you are jumping around you make syntactical mistakes (e.g., is checking for inequality !=, ~= or <>). You should be careful though to learn more than just the syntax of a language, but best practices within a language as well as just general good software engineering skills. Stuff if you learned C and then learned C++ you should make sure when you are writing C++ code that it is in the style of C++ code (rather than just C with a few new keywords. That is you have multiple classes/objects, prefer references/smart pointers over raw pointers, etc.

share|improve this answer
1  
Don't get me started on If x <b>=</b> 5 Then. I have to double check all my C code for like a week after maintaining anything related to BASIC. – user606723 Dec 30 '11 at 22:07

Definitely not. Of course you also want to make sure you are learning different styles of languages. Learning both C# and Java will not expand your mind in any major way, but learning Java and Haskell will.

Check out the Book Seven Languages in Seven Weeks, which will walk you through an intro to Ruby, IO, Scala, Erlang, Prolog, Clojure and Haskell. IF you enjoy languages you will love that book.

share|improve this answer
Learning C# after Java might expand your mind thanks to its functional programming (and other features Java is lacking). But if it's just for learning, Haskell will be probably much better, because of how purely functional it is. – svick Jan 5 '12 at 18:17

Well, C and C++ won't do you any harm in mobile programming. You can use both with Cocoa Touch or the Android NDK, and sometimes you need to for performance. Also, sometimes you want to because you want to write code that runs on several platforms. In that case, assuming you're not just using a third-party framework, you can write your app in C/C++, and compile in platform-specific wrappers for required native elements (for example, the only way to get an OpenGL context on iPhone is by using the native CAEAGLLayer class).

So it's like the more tools you have in the drawer, the more options you have for getting the job done. You'll find you have a preference for certain ones as you specialize in various kinds of tasks. If you only do UI stuff, C might not be your all-time favorite. I would worry more about the kinds of things I wanted to get done, and then learn any tool I needed to do them.

share|improve this answer

It's actually about as useful as learning a little bit of French, Spanish, English, Arabic, Hindi, and Chinese while never knowing any one of them well.

share|improve this answer
3  
I have no idea what were you trying to say by that. – svick Jan 5 '12 at 18:14

On the contrary, I think it hurts when I don't/am not able to learn a new programming language. It may be because of the lack of time or some other reasons. As far as I see, programmers/software developers are in love of challenging the languages, putting better things/products, and when you see that you are doing same thing always, you don't feel good. So you want a new challenge, a new language, something new to learn and put more products by it.

So I think it gives me excitement to follow new languages, new libraries, new approaches, new technologies. But I don't have time to get all of them, and people may not be able to go enough deep always. So it hurts not to learn more; but doesn't not hurt to learn more.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.