Take the 2-minute tour ×
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've taking part in some conversations around here and it seems like choosing a programming language is an event like, wether you like coca-cola or pepsi, you cant like both. Sometimes its even worse, some people dont consider there are any other programming languages there expect the ones they prefere.

Well my question is: Is THAT important the programming language decitions? Or maybe its a marketing scheme where companies buy it and then programmes suffer it?

And further more, it should not be the other way around, companies ask for general developing skills and then train their human resources to accomplish a goal ( if the problem is concurrent, then use your concurrrent skill to develop in this specific language)?

share|improve this question
"it seems like choosing a programming language is an event like, wether you like coca-cola or pepsi, you cant like both." - You have the wrong impression then. Nobody said you had to choose. –  Jonathan Hobbs Dec 21 '10 at 5:24
@Axidos: I think he was saying that is what people seem to say, as opposed to his position, which is the opposite. –  Orbling Dec 21 '10 at 13:35
That's what i meant @Axidos , thanks for the clarification! –  guiman Dec 21 '10 at 13:46
add comment

closed as primarily opinion-based by GlenH7, World Engineer Jul 15 '13 at 16:16

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise.If this question can be reworded to fit the rules in the help center, please edit the question.

9 Answers

up vote 27 down vote accepted

A craftsman uses many tools.

His skill set does not usually depend on the make or quality of the tools, just his ease of use with them.

Learn cooking not cutlery, poetry not pens.

share|improve this answer
This emphasys my point, really nice! –  guiman Dec 21 '10 at 1:48
+1 True enough. If the endless cooking shows my wife has made be watch has taught me anything though, it's that Chefs also take much pride in the quality of their knives. –  Steve Evers Dec 21 '10 at 2:35
@SnOrfus: All craftsman place immense value, respect and pride in their tools. A good tool is a joyous thing, as it helps you excel in your craft. –  Orbling Dec 21 '10 at 3:01
But still the quality of the pen tells me whether I want to write more poems using the same pen or whether I'll be looking for a better one that suites my taste. Again, its all what your mind feels. If you feel better when using a certain language than the other, then that's it. –  kadaj Dec 21 '10 at 6:12
@jase21: True enough, if you are bound via psychology to your tool, then that is that. –  Orbling Dec 21 '10 at 13:22
add comment

As many people are saying here, Programming is a state of mind, the rest are just syntax. So try and learn as many languages, concepts, and paradigms as you can, then stick to the one you're most comfortable with.

Being specialized in a certain technology shows your dedication in learning. Good companies usually look for people with that kind of dedication, and not just people who know the technology already because they want people who can adapt to the rapid change that's happening in our field.

If the company you're applying for is really persistent in looking for someone with knowledge of the said technology, maybe you should think twice in applying for them, and look for another company who can appreciate your willingness to learn.

share|improve this answer
Quite true, i never thought about it that way. Thanks on the feedback! –  guiman Dec 21 '10 at 2:02
there are more differences than just syntax. you can write Fortran in any language, but that doesn't make them all the same. –  Javier Dec 21 '10 at 2:15
@Javier, I agree. That's why I included concepts and paradigms to the things he needs to learn, because it's not just syntax that you learn in a language. –  Terence Ponce Dec 21 '10 at 3:21
add comment

Language is a tool, in this point, THAT is not so important. but on the other hand, good language can show you the computer's world. just like c&c++. in my opinion, if you master c&c++, to learning the other language is so easy. because c &c++ could show u not only the thing about program language but also the thing about hardware. perhaps that is the reason why somebody call the c is pc's mother language.

ps,my english is very poor. wish you get it.

share|improve this answer
Totally got it, and i agree that for starters, the less tools and more manual programming (restricted apis, restricted libraries), most of the time means more learning. Once they learn their way through memory pointers, Java sound like heaven –  guiman Dec 21 '10 at 1:54
@guiman: LOL, an amusing take - learn C/C++ so that other languages will be even better. –  Orbling Dec 21 '10 at 1:59
while i support the idea of learning first low-level languages, it's very important to at least have a passable familiarity with other ideas. at the very least one really functional language, one dynamic-type and one declarative. –  Javier Dec 21 '10 at 2:14
misunderstanding! i mean , learning c/c++ could be very helpful to understand other language. because c/c++, especially c, need you to take knowledge of memory,cpu etc. THAT is very helpful to learn other language and use them better. –  C.R. Dec 21 '10 at 2:20
I have to say, I do not think I would understand languages as well if I had started high and went low. I started at 3GL, went down to 2GL (even 1GL), then up to 4GL, then 5GL. Most people spend their entire careers in 4GL, which leaves a chasm in their knowledge of how it all works. –  Orbling Dec 21 '10 at 3:10
add comment

Just like using any tool, the more you use it the more proficient you get at it. So pick your core tools and learn them well.

While general comp. sci. principals apply to all languages, sometimes you need to specialize to get the maximum benefit of your lang.

A core knowledge should consist of the following:

  • A solid performing language. C, C++, Java, Erlang, C# pick one and learn it well. This is your tool for when you have performance sensitive tasks that really do care about a few extra microseconds for processing an instruction.

  • A dynamic language that lets you prototype and build highly flexible applications fast without worrying about their perforamnce. Like web servers. Ruby, Python, and I may even mention PHP

  • And of course don't forget utility. For web programming there is just no way around it... Learn HTML/CSS/JS. For game programming probably some LUA.

Knowing just one language well is great. Knowing a bit more is incredible. Just remember you can't learn them all, don't try to.

Of course each language is a tool. I would not write a web application using C. Its just horrible. I would not, however, write a processor and time constrained background data processing job which is extremely time critical and must scale on as many machines as possible in Ruby either. Each tool is a tradeoff: Time to build, performance, quality. Chose the best one for your problem.

Having said all that. If you understand concurrent programming and can quickly pick up java's way, you will learn quickly. Having a deep understanding of C.S. techniques will get you incredibly far. Granted that knowing the insides of a language can make debugging a problem that may take weeks for one, minutes for another, because of experience. So it is both important to learn a language, and to learn techniques. Because knowledge of java will never help you write a scalable program, no matter how well you memorized the java api.

Generally what companies look for is the following:

  • Can this person problem solve well?
  • Does this person have the ability to code well?
  • Does this person have a deep understanding of the language we work with?
    • Can this person learn our system in a reasonable amount of time
    • Will this person play well with our system (i've seen people trying to code java in javascript despirately, it does not work and makes for ugly unmaintainable code)

So there is no simple answer other than brush up on your core concepts and pick a language that talks to you (you like the syntax or the way it approaches problems or the job optiosn) and solves your needs, and learn it.

share|improve this answer
+1 All good points, except... Java is suitable for performance sensitive tasks?! and "Just remember you can't learn them all, don't try to." - Says who! ;-) –  Orbling Dec 21 '10 at 13:34
@Orbling: where is Java not suited for "performance sensitive" tasks? I mentioned some in a separate answer but I've written lots of maths Java code that outperforms C++ and comes darned close to FORTRAN. Please specify? –  Xepoch Dec 21 '10 at 18:58
@Xepoch: When it's on a VM. –  Orbling Dec 21 '10 at 21:15
add comment

The best tool for the job, of course. But sometimes you'll find yourself fixing a bookshelf that requires an Allen wrench because it was built with hex keys.

share|improve this answer
add comment

I currently am working two jobs. One is building an application c#/wpf using MVVM framework.

The other is a web application with a Python backend/ javascript front end.

I can say, not all languages are the same. Some will push you down different architectural and design paths. If you're the sort of person who likes rigid interfaces, lots of compile time checking and knowing what will happen up front - go the C#/Java/C++.

If you like the duck-typing, just try it and see what falls over, let's create a variable out of the ether - then Python/Javascript.

The choice of language is also likely to match the choice of management style. Big, rigidly typed languages may suffer a bit under an Agile environment.

If you really want to stretch your brain, try doing both at the same time like I am.

share|improve this answer
add comment

In the perfect world we would have all tools available to us. Maybe I can have a bash CGI script to do a few complicated things, Perl for a few pages, PHP for some templating quick & dirties and let's throw in some FORTRAN for some batch maths processing.

But this world ain't perfect. A lot of software needs to be sold, and supported and teams and processes put behind it. Calculations may take 130% of CPU- and wall-clock time in Java over FORTRAN, but I've got a much more supported platform.

The language of choice in these worlds solves (only in part):

  • All necessary business problems,
  • A maintainable and understandable syntax (e.g. does perl fit? really?)
  • A pool of talent both captive and contract that can be demanded-in when necessary that have core competencies in the language,
  • Ability to throw hardware at the stack/language,
  • Easy middleware
  • Full connectivity support from database vendors. Like it or not, nearly all necessary data is eventually durable in a DB somewhere.
  • Can you port the whole thing to the vast majority of your customers landscapes?

Add your own list to the above. But language choice is (unfortunately) much more about being just a tool in the toolbox.

share|improve this answer
Languages like Python and Ruby can easily take the place of Bash scripts. So not really an issue :) –  Dmitriy Likhten Dec 21 '10 at 6:53
+1 For a lot of good points. I would say that these points do not effect the engineers need to know the method not the tool, only that the choice taken by businesses is heavily dependent on the type. Yes, that choice is part of our job too and is critically important. –  Orbling Dec 21 '10 at 13:25
@Dmittiy Likhten: Though Python & Ruby do lots of things, bourne and korn shells still are extremely powerful in certain arenas. Case in point within about two lines of code glue a piped/streamed PCM audio (file) trimming (dd) to processing (three separate programs) to Vorbis (oggenc) and tee'd to a cache and back to stdout out to the web. It'd be no more efficient or less-complex to get these pipes glued in any other language. –  Xepoch Dec 21 '10 at 14:40
add comment

Programming Languages are not too dissimilar from Natural languages in this sense. They can all get the job done, by conveying what you want - the ease of conveying something depends on the language. There are probably more words for beauty in French, than there are in Hindi; Chinese has a way of combining words to form bigger meta-words,that add power to the speaker; English is simple to pickup without gender, and all that extra jazz.

So, it depends. There are entire paradigms and styles of thought to choose from. Then there is ease of learning. And finally there is the need for a good support community if one has to write larger, meaningful programs.

Most languages are "abstracted" away in large projects, with a plethora of library functions, macros, templates, decorators, etc.. Lisp does this most naturally, but large projects in C-like languages tend to do this too.

All said and done, learning to program, i.e., to instruct the computer -- the machine, is most important. That skill cannot be replaced.

Languages are but means to get to an end. The choice does matter, but none too much.

share|improve this answer
add comment

There is a gradient of opinions here: from "language is a tool" to "Lisp is the only true programming language". And there are different aspects of a whole development cycle: tools, community, domain, strategic issues (licenses, budget,...), tactical issues(agile, problem solving,...).

But I, myself, definitely have opinion about syntax. "Job done" is not enough. I think it is ridicules to think about development (and specially programming) this way. If syntax, joy of clean design and success and fun are not important in programming (which anyway involves more that one programming language: a main player (like Java or C#) and secondary ones (JavaScript, bash or PowerShell)) then why the hell I should bother living such a horrible and hard life of a developer? Programming IS hard and if we continue to ignore the points that I'v mentioned, this industry is going to loose brain-power (I think I saw a MIT survey that showed this job has lost it's sexiness pretty much and there is a need for new labor and students do not like this domain very much).

So as may other discussions be valid, yet this issue must be resolved sooner or later. I am from the cult of Commodore 64 and Spectrum (and Sony MSX!) but there will be no more of this kind; and that's bad for this type of career and industry.

My obsession for a programming language bounces between Lisp and Haskell (nothing in the middle) but till that day: Scala, Clojure, F# (I do not like VM-based things much) are some pragmatic choices to be encouraged to be used. I hope Haskell and (there are others but) Gambit-C get a stable "whole development cycle" soon.

(Maybe I am wrong. But I do not think and feel so. Please enlighten me on that!)


share|improve this answer
+1 I really agree with this. I too am from the old cult and see day-to-day the fall in the industry. Though I worry about this: "living such a horrible and hard life of a developer" - it is not such a horrible life is it? It is many times less gruelling than most jobs, if mentally straining; office politics aside. –  Orbling Dec 21 '10 at 13:30
Thanks! By "living such a horrible and hard life of a developer" I meant from others' point of view not ourselves as developers. Others say:"You should be really sick to search bottom of the barrel of new designs, languages, technologies,...everyday to just make money!" And that's the point: It's not all about money as it is for an artist. So I really stand against the "job done" cult because there are many more (which are very easier and happier) carrier paths in the world with more money! So why the hell should (at least relatively smart) people waste life getting stupid ideas "Just Done"? –  Kaveh Shahbazian Dec 21 '10 at 22:31
add comment

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