Slashdot Mirror


Ask Slashdot: How Often Do You Switch Programming Languages?

An anonymous Slashdot reader writes: I always see a lot of different opinions about programming languages, but how much choice do you really get to have over which language to use? If you want to develop for Android, then you're probably using Java...and if you're developing for iOS, then you've probably been using Swift or Objective-C. Even when looking for a job, all your most recent job experience is usually tied up in whatever language your current employer insisted on using. (Unless people are routinely getting hired to work on projects in an entirely different language than the one that they're using now...)

Maybe the question I really want to ask is how often do you really get to choose your programming languages... Does it happen when you're swayed by the available development environment or intrigued by the community's stellar reputation, or that buzz of excitement that keeps building up around one particular language? Or are programming languages just something that you eventually just fall into by default?

Leave your answers in the comments. How often do you switch programming languages?

203 of 331 comments (clear)

  1. When you pry my keyboard from my cold dead fingers by macker · · Score: 5, Informative

    But then, I only fry firmware-burgers, so 'C' and assembler are it...unless you wanna count all the assembler flavors, then it would be 2 or 3 times a day...

    --
    (T)he (O)ld (M)an
  2. So far, I don't by Anonymous Coward · · Score: 1

    I've been using C/C++ for almost everything for 15 years now.

    1. Re:So far, I don't by over_optimistic · · Score: 1

      What about scripting needs? How do you do c++ scripts?

    2. Re:So far, I don't by mugurel · · Score: 1

      env.exec("bla bla bla blaa ");

      why do you think you need scripts anyways?

      So what language is "bla bla bla blaa " then? You're basically telling us that you write your bash scripts without proper syntax highlighting ;-)

    3. Re:So far, I don't by TheRaven64 · · Score: 5, Interesting
      C++ has recently replaced a lot of scripting language usage for me. C++14 has most of what I want from a scripting language:
      • First-class closures (and the 'auto' type on parameters in lambdas in C++14 is really useful).
      • Mostly automatic memory management (shared_ptr / unique_ptr).
      • Regular expressions.
      • Fast I/O
      • A rich set of efficient built-in data structures (associative arrays, lists, vectors, sets)
      • Reasonable performance
      • Multithreading
      • The ability to package my scripts into a library for embedding in other applications later

      For small programs, compiling C++ at -O0 takes under a second and the result runs faster than any interpreted language.

      --
      I am TheRaven on Soylent News
    4. Re:So far, I don't by jellomizer · · Score: 4, Interesting

      C/C++ is good for canned software meant for wide deployment where you have fine tweaking of the performance so it can run fast on a big set of software. However scripting languages are good for those internal jobs that need to be fast enough but programmed quickly without all the rigor, so you have a useful app running quickly.
      Most of my programs I make are server side and I rely on scripting languages to do much of the grunt work because they can do it without the fuss of C.

      --
      If something is so important that you feel the need to post it on the internet... It probably isn't that important.
    5. Re:So far, I don't by Anonymous Coward · · Score: 1

      Exactly, as long it's not completely trivial, C++ (11 and later) is a great compromise between efficiency, conciseness, clarity and maintainability.
      I've seen large bodies of Python code become unmaintainable (essentially impossible to delete dead code because of excessive interdependencies that nobody understands and only cause a runtime error once in a blues moon). Compiled languages have a decisive advantage for code that has to be maintained over the long term. And try to get any decent multithreading out of Python, language in which virtually every statement implies memory allocation and freeing.

    6. Re:So far, I don't by Anonymous Coward · · Score: 1, Insightful

      I've seen large bodies of Python code become unmaintainable (essentially impossible to delete dead code because of excessive interdependencies that nobody understands and only cause a runtime error once in a blues moon).

      <sarcasm>As opposed to other programming languages, where even if the software architects and developers are not properly trained, the resulting code is still maintainable.</sarcasm>

    7. Re:So far, I don't by AK+Marc · · Score: 1

      I don't consider scripting a "programming language". If one considers scripting a "language" then I change languages every few minutes, as REGEX would then be a language, and it's used inside many tools and applications I use on a regular basis. And it's essentially a scripting language for parsing.

    8. Re:So far, I don't by pr0fessor · · Score: 5, Funny

      So you are the one that writes all those scripts in the task scheduler with no error handling or logging that fail all the time and make my life a living hell.

    9. Re:So far, I don't by Marxist+Hacker+42 · · Score: 1, Insightful

      My sentiments exactly. I'm currently reverse engineering a major enterprise-level mission critical report- and it's data acquisition is based entirely in SSIS, DTS, and VBS scripts, over 300 of them, run from a task scheduler.

      GRRRR.

      --
      SJW: a person who perceives an injustice, and while correcting it, commits a greater injustice.
    10. Re:So far, I don't by Shompol · · Score: 1

      There is a couple of lint/purify programs for Python that look out for what is usually caught by compiler and beyond.

    11. Re:So far, I don't by nine-times · · Score: 1

      Would it be better if he were using task scheduler to schedule compiled C++ apps with no error handling or logging?

    12. Re:So far, I don't by gfxguy · · Score: 1

      I agree... I used PERL for a while for some cron jobs; I encountered an engineer who was going to take over that project and when we discussed it, he whined that all PERL is unreadable garbage.... until he saw my scripts, which were well commented and didn't do obscure things just because I could. I now largely write in Python - both using Django and with PyQt for end user applications. I'm not saying I'm god's gift to programming, but I separate out my classes logically, and while I might use the occasional list comprehension, the code is, IMO, very readable. If I were writing for an outside audience I'd have stuck with C++, but since it's all internal to my company, I'm a lot faster with Python. I do need to write some .Net stuff occasionally (because of software APIs that I'm using). I guess the real answer is "it depends on what I'm doing." I'm fortunate (again, IMO), to have a wide variety of job responsibilities (some of them not even programming). It keeps things interesting.

      --
      Stupid sexy Flanders.
    13. Re:So far, I don't by gmack · · Score: 1

      For me, it depends on the complexity of the script. I can do some pretty crazy things with Bash, but at some point just hammering it out in C is less work.

    14. Re:So far, I don't by trawg · · Score: 1

      Do you have any examples of script-esque C++14 code? I haven't touched C++ for a zillion years but your post made me intrigued and I'd like to have a tinker with it to see if I could get up to speed with it easily enough to start trying to replace some scripts with it.

    15. Re:So far, I don't by pr0fessor · · Score: 2

      Let me guess they are tied to some kind of integration and reporting services that combines many systems that really aren't services they are just a bunch of crap with no documentation and the moron that cobbled it together from a million articles he googled no longer works there.

    16. Re:So far, I don't by Alomex · · Score: 1

      This. C++ has undergone four major revisions in the last 20 years and finally a small powerful core is starting to emerge there. Add the issues with Java because of Oracle ownership and the choice for a major compiled programming language is C++.

    17. Re:So far, I don't by jellomizer · · Score: 1

      No most of the time, I have a rather rigorous error checking. As if they don't work it is usually a big headache for everyone.
      However a lot of it are Cron jobs/schedule jobs that does all the cleanup work, because the maker of that C/C++ Application just doesn't have the time or the ability to fix.

      --
      If something is so important that you feel the need to post it on the internet... It probably isn't that important.
    18. Re:So far, I don't by DrXym · · Score: 1

      Well that's complete bollocks. Maintainability has little to do with the language and a lot to do with the design, discipline and rigor with which the code was written.

    19. Re:So far, I don't by DuckDodgers · · Score: 1

      I haven't used C++ in eleven years, and I was an especially bad novice when I did use it. If someone was to learn C++14 from step 1 (or step 0, I suppose) today, what would you recommend as a starting point that leads into the useful/safe shared_ptr/unique_ptr stuff, etc... etc...?

    20. Re:So far, I don't by TheRaven64 · · Score: 1

      Not that are particularly informative to anyone else - my typical requirement for scripting is take some data from somewhere, do some simple stats on it, and spit it out in another format. I'm happy to answer questions though.

      --
      I am TheRaven on Soylent News
    21. Re:So far, I don't by Marxist+Hacker+42 · · Score: 1

      Worse. He still works here, but I'm not allowed to talk to him because 5 programmers before me have quit after dealing with him. It's also just one report- or so they tell me, I've already found evidence that the system spews XLS files to random network locations that I do not have access to. Nobody seems to know who this guy's customer list is, who is accessing this report or this information, and he downright brags about "breaking down silos" .

      Yes, though he started quite a bit earlier (some of this code dates to the early 1980s, accessing DB2 systems), it's pretty clear he taught himself to code and has NO idea what he's doing.

      Due to the political nature of the project, I'm obviously not going to reveal any identifying information- but this is for a large multinational and what this guy has done has enabled a lot of just-in-time logistics. Unfortunately his manager has retired, and his new manager took one look at this and said "WHAT THE HELL HAVE YOU DONE?!?!?!?"

      I'm still in the documentation stage of this project and I can already tell them what he's done- created a mess that will take a three year project to clean up and replace.

      --
      SJW: a person who perceives an injustice, and while correcting it, commits a greater injustice.
    22. Re:So far, I don't by TechyImmigrant · · Score: 1

      That sounds like he wasn't given sufficient engineering resources at the start to engineer a clean solution. So the single non programmer was left to hack it together and couldn't possibly produce a solution engineered with the kind of validation and documentation characteristic of well engineered, robust solutions.

      --
      I should use this sig to advertise my book ISBN-13 : 978-1501515132.
    23. Re:So far, I don't by pr0fessor · · Score: 1

      Been there, done that, will probably have to do it again. The last time I had an issue like that I was lucky enough that I could just start over with a commercial solution that supported the three systems involved but that's not very common.

    24. Re:So far, I don't by naris · · Score: 1

      I've been using C/C++ for over 30 years, Java for 15, assembler for way more than 30, BASIC, PERL, SQL, etc... Fortunately I have not had to do COBOL, PL/1 or JCL in quite some time (though PL/1 is not bad).

    25. Re:So far, I don't by T.E.D. · · Score: 1

      C++ has recently replaced a lot of scripting language usage for me. C++14 has most of what I want from a scripting language:

      Early on in my career, after much experimentation, I found that the following hierarchy suffices for pretty much all my programming needs. The basic idea is that you start at the left, and then move to the right when the problem grows past what the language can easily support:

      grep < sed < awk < full-blown compiled language of your choice (C/C++/Ada/Java, etc).

      Notice there's no intermediary "scripting language" between awk and a compiled language. Arguably, awk is sort of a junior-league scripting language. If your task grows past that, no sense splitting hairs any further. Time to use a full-blown compiler.

    26. Re:So far, I don't by Marxist+Hacker+42 · · Score: 2

      He's a parts salesman who did this without checking with IT. So you're absolutely correct. Zero budget other than his own salary, that became two rogue servers living under his desk and his laptop.

      --
      SJW: a person who perceives an injustice, and while correcting it, commits a greater injustice.
    27. Re:So far, I don't by flargleblarg · · Score: 1

      s/PERL/Perl/g;

      Perl is the name of the language. perl is the name of the binary. PERL isn't anything.

    28. Re:So far, I don't by Marxist+Hacker+42 · · Score: 2

      Zero chance of that in this case. Too much dataflow, from 15 different systems near as I can tell. I just hope he doesn't quit suddenly requiring a policy password change- he's hardcoded passwords in EVERY FREAKIN SCRIPT!

      --
      SJW: a person who perceives an injustice, and while correcting it, commits a greater injustice.
    29. Re:So far, I don't by bjohnson · · Score: 1

      More likely he's a parts salesman who needed this for his work and IT had "other priorities" so he hacked something together to get his job done.

      Users, like the internet, route around obstructions.

    30. Re:So far, I don't by pr0fessor · · Score: 1

      I've seen systems on solaris with lots of cron jobs that quietly run for ever... the crap that get's me is when you have a bunch of vb, js, and bat files that are never documented and cobbled together by admins or report analysts that really aren't software developers.

    31. Re:So far, I don't by Marxist+Hacker+42 · · Score: 1

      Trouble is, it wasn't just his job. We still don't know all of his customers, but we count at least 323 people using his main report with several hundred drill downs through COSMOS (and who knows who is using the XLSs that he's putting out on random network attached storage locations).

      I'm hoping that when we approach a few of them and say "this system is no longer maintainable and we're going to have to replace it with a supported production system" they'll cough up the bucks to do so.

      --
      SJW: a person who perceives an injustice, and while correcting it, commits a greater injustice.
    32. Re: So far, I don't by Marxist+Hacker+42 · · Score: 1

      " Does what he made work or not? "

      Works for now, but with the way he has it coded, if he dropped dead tomorrow, all it would take is invalidating his IT account to make it stop.

      " If it does then why are you bitching? If you don't like it, rewrite it. "

      Which is what I'm doing the preliminary documentation to do right now. He not only did not do comments, he didn't do requirements documents.

      " If you can take 10 minutes to make a script that delivers data in a xlsx format why would you waste 10 days making some fancy C program to do the same?"

      Maintainability for the future. Right now, he's the only one who understands how it works, he's the sole maintenance on this project, he's the one point of failure if it does fail (there are certain manual processes he's doing that he didn't have the scripting ability to make work).

      The hard part is that it's more than him who is relying on this; management relies on these reports now and is asking us every day "can you support it yet"? And the answer right now is "No, this is unsupportable code, if this guy left tomorrow it would be inaccessible and worthless within a week"

      --
      SJW: a person who perceives an injustice, and while correcting it, commits a greater injustice.
    33. Re:So far, I don't by TechyImmigrant · · Score: 1

      The quickest way to find these people is to stop putting the data there, and replace it with a file saying "call me".

      --
      I should use this sig to advertise my book ISBN-13 : 978-1501515132.
    34. Re:So far, I don't by Marxist+Hacker+42 · · Score: 1

      I'm currently not allowed to do that, as I am not allowed the network access to even see what is being saved there. I can read the code, but I do not have the same rights as the person whose system I am trying to reverse engineer.

      But in the case of him leaving, that is going to be my exact suggestion: as we change the password in scripts that output XLS files, comment out the code and write out an XLS file that says "call me".

      --
      SJW: a person who perceives an injustice, and while correcting it, commits a greater injustice.
    35. Re:So far, I don't by TechyImmigrant · · Score: 1

      I have a habit of leaving comments in code of the basic form "Call me before you touch this code".
      I have also deliberately inserted a compilation error that happens unless you set the right value in a header, along with a comment with the above "call me" message.

      Then when the code is incorporated into a product, someone ends up hitting the problem, finding the comment and calling me. So I get the chance to make sure they aren't messing up the security critical code. Otherwise finding this person would be difficult and we would find the errors caused by people meddling with my code after the product is released.

      --
      I should use this sig to advertise my book ISBN-13 : 978-1501515132.
    36. Re:So far, I don't by Marxist+Hacker+42 · · Score: 1

      Something wrong with using source control automated build events in your environment?

      Still, neat idea. Except this dude has already burned IT so much that my bosses do not even want him to know I exist, lest we give ourselves several weeks worth of emergency overtime fixing his code.

      --
      SJW: a person who perceives an injustice, and while correcting it, commits a greater injustice.
    37. Re:So far, I don't by TechyImmigrant · · Score: 1

      Something wrong with using source control automated build events in your environment?

      Yep, so very, very wrong.

      In my case it's RTL, not software. So there's build for simulation, build for emulation, build for FPV, build for FPGA synthesis and build for silicon synthesis. The trick is to make it fail on the latter but not on the first four.

      A prime example.. Chips are made of digital circuits and analog circuits. When you have an analog circuit in a chip, you can't simulate it in a logic simulator and it makes no sense in FPV but you need the BMOD to work in FPGA, emulation and simulation, so you design a synthesizable circuit to emulate the analog circuit sufficiently for the whole thing to work. This is called a BMOD (Behavioral Model). It would be really bad if someone took the BMOD and synthesized it to silicon, rather than going and getting the analog circuit from whoever makes it an plugging it in in place of the BMOD. So making the BMOD fail in synth for silicon and not in the other domains is exactly the right thing to do. It debugs the build process of the customer and let's me know who needs help.

      If it was software, I wouldn't do that.

      --
      I should use this sig to advertise my book ISBN-13 : 978-1501515132.
    38. Re:So far, I don't by Marxist+Hacker+42 · · Score: 1

      Yep. Can't do that just with a compiler condition, and chances are the build system isn't integrated with source code control to begin with.

      --
      SJW: a person who perceives an injustice, and while correcting it, commits a greater injustice.
    39. Re:So far, I don't by dublin · · Score: 1

      Yep, but for every one of you, there's someone like the (smart, maybe too smart for his own good) intern who wrote the first large Perl program I had written (an enterprise program designed to collect and report machine hardware and software configurations for all Unix machines in the Fortune 10 corp we worked for.)

      The problem was that his approach was the polar opposite of yours - there were few comments, and he prided himself on "cleverly" using idomatic Perl - the kind of crap that looks like modem line noise "but it saves 20 lines of code!" No matter, becasue several weeks later, even he couldn't understand what his code did. It was a really good system, but absolutely unmaintainable as written, and impossible to really bring along in to the future.

      I've only used Perl for one other project since then, and ESR and I chatted about this at O'Reilly's Open Source conference here in Austin years ago - he had recently switched to Python largely because he found he also couldn't read his own Perl code just a few months after writing it. I think unless you're disciplined enough to 1) really not use Perl the way it encourages you to, and 2) REALLY document your code, since Perl code itself is NOT AT ALL self documenting, then Perl is a losing bet.

      What you can do with Perl is amazing, but it's awful for anything you need to fix, maintain, or grow, since both its syntax and it's insistence on many ways to do things means it's probably the closest thing to a write-only language ever to gain any real traction.

      --
      "The future's good and the present is nothing to sneeze at." - Roblimo's last ./ post
  3. every 2-3 years by Anonymous Coward · · Score: 1

    I guess it generally comes with job switching and many times, it involved learning a new language

  4. I'm an agnostic by Anonymous Coward · · Score: 1

    I switch when the job requirements suit a particular language or another. Right tool for the right job, right??? Right???

    1. Re:I'm an agnostic by jellomizer · · Score: 1

      Unless you are working on a team then you need to compromise on what language to use.

      --
      If something is so important that you feel the need to post it on the internet... It probably isn't that important.
  5. How many pieces of hardware are in the system? by JoeMerchant · · Score: 5, Informative

    Small embedded ARM processors: C

    Mid-sized embedded Linux: C++

    Bloaty multi-core GUI with printer drivers, etc. running on Windows: C#

    Cloudy web servery type stuff: Javascript

    And, all of these can be found in a single shipping product. Go Team Silo Go! Hope it sticks when you toss it over the wall!

    1. Re:How many pieces of hardware are in the system? by Dutch+Gun · · Score: 4, Interesting

      For me, it's not as much the hardware as the requirements of the software. I'm a game developer, so the engine and game are in C++, of course, no matter the platform. Our tools generally run on Windows, and productivity is more important than performance, so some of us use C#, while some other studios have used Java, from what I understand. If we need an extension language for our tools, maybe something like IronPython. If we're porting to Mac, toss in a bit of Objective-C. The web programmers use a lot of JavaScript, of course. Toss in some Lua as an embedded scripting language. There are probably a couple of minor cases I'm forgetting, but that's the bulk of it for my work.

      --
      Irony: Agile development has too much intertia to be abandoned now.
    2. Re:How many pieces of hardware are in the system? by Anonymous Coward · · Score: 1

      That's the way many game engine developers go. Lower levels are shaders, C++ for data loading, and scripty 4GL stuf like LUA to allow the artists/level designers to make changes without annoying the programmers. Lets the producers and designers fight it out between themselves. Just about any commercial application will end up having a script engine to allow users to configure their own workflow.

    3. Re:How many pieces of hardware are in the system? by TechyImmigrant · · Score: 1

      How small is small? Last project I worked on I programmed a STM32F103 (72 MHz Cortex M-3 with 64 kB of RAM and 512 kB of Flash) in C++, and it was way more pleasant than C.

      Smallness is relative.

      If you can use a C compiler for your platform, it's not as small as things that are too small to support C.

      --
      I should use this sig to advertise my book ISBN-13 : 978-1501515132.
    4. Re:How many pieces of hardware are in the system? by TechyImmigrant · · Score: 1

      Fair enough. When I'm using C it's usually as a wrapper to hold assembly. C++ would not solve my problems.

      --
      I should use this sig to advertise my book ISBN-13 : 978-1501515132.
  6. Well... by Pseudonym · · Score: 1, Insightful

    ...about every 2 hours, on the current job.

    Having said that, I speak over 60 programming languages (to varying levels of fluency) at last count, and I do the Pragmatic Programmers thing of doing another one every year. I may not be the best person to ask.

    --
    sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
    1. Re:Well... by Anonymous Coward · · Score: 1, Insightful

      Having said that, I speak over 60 programming languages (with the same fluency as a first-semester German student trying to speak Russian, because, 'hey, close enough, amirite?')

      FTFY

      Unless you have been programming for about 300 years, there is zero chance you have achieved fluency in more than 2 or 3 of these programming languages. Being able to print "Hello world," does not count as fluency, any more than being able to say, "Hello, my name is Robert," counts as fluency in a human language.

    2. Re: Well... by Anonymous Coward · · Score: 1

      If you've been programming a while, you'll find its a just question of remembering each languages quirks and idiosyncrasies. There are very few actual idioms to learn, functional, object oriented, event driven, and declaritive, maybe. After that its mostly syntatic sugar, which is why I always think "oh no not another one" whenever yet another new language comes out that adds absolutely nothing new. Of course, there is a slight amount of catch up and refamiliarisation to do when switching to one you've not used in a while, but its nowhere near as hard or impossible as you might believe.

    3. Re:Well... by Pseudonym · · Score: 5, Insightful

      Unless you have been programming for about 300 years, there is zero chance you have achieved fluency in more than 2 or 3 of these programming languages. Being able to print "Hello world," does not count as fluency, any more than being able to say, "Hello, my name is Robert," counts as fluency in a human language.

      Once you get past the first 6 or so, assuming you chose them carefully, the similarities are apparent. But if it helps, merely being able to write a nontrivial program in a given language doesn't mean that you can call yourself a "X programmer".

      Consider what it means to be a Java programmer. I know Java, the language, extremely well. Well enough to write a conforming Java 1.7 to bytecode compiler, I would think. Now here's what I don't know: JSF, Spring, Swing, Maven, Ant, Struts, Android SDK, Eclipse RCP, etc. It's knowing a decent amount of that stuff that which lets you call yourself a "Java programmer" in good conscience. I can write programs in Java, but I'm not a Java programmer.

      --
      sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
    4. Re:Well... by Pseudonym · · Score: 3, Informative

      Disconnect your computer from the internet, and write a fully conforming Ada 2012 compiler in Common Lisp.

      Interestingly, Ada isn't one of them. Nor is Python, interestingly.

      If you're curious how I got to 60, there are a lot of languages in there which are distinct languages with distinct specs, but are essentially dialects.

      Consider the Turner family of languages, for example. I've used KRC, Miranda, Orwell, Miracula, and Haskell. All of them are distinct languages with their own specs. I can remember writing a Prolog interpreter in at least three of them. I can still explain to you some of the key differences between them. if you know two of them you know them all, and besides, one of them is still around.

      Other examples of distinct-but-close-enough languages which I have used in a nontrivial manner are Eiffel and Sather, SML and O'Caml (never used Alice), Smalltalk and Newspeak, Object Pascal and Delphi, Agda and Coq (never used Epigram), PostScript and Forth, Java and Modula-3.

      And then there's logic languages. I've used (again, seriously used) Prolog, Datalog, Mercury, Oz, Gödel, and KL1. All of them are distinct languages with crucial differences, but so closely related that once you know two of them well (say, one dynamically typed and one statically typed variant), you can get quite productive in most of them within an afternoon.

      Oh, and four different assembly languages.

      --
      sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
    5. Re:Well... by Anonymous Coward · · Score: 1

      Achieving high level of competency in more than 10 programming languages is possible but requires a lot of time. 60 is just too much of a stretch though unless he does nothing but eat, sleep and program for decades.

    6. Re: Well... by Pseudonym · · Score: 1

      100% correct. I only claimed to speak 60 programming languages, not to know the idiosyncrasies of their standard (and not-so-standard but still required) libraries. That makes the exercise a bit easier.

      --
      sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
    7. Re: Well... by prefec2 · · Score: 3, Informative

      60 looks a little bit too mich, but Ehen I look back, I learned several BASIC dialects, Z80 assembler, Turbo Pascal, 8086 ASM, Fortran, C, Modula-2, Scheme, Elisp, Prolog, Objective-C, PHP, Java, Xtend. That are 15 counting the Basiscs AS two languages. I also used XSLT, XSD, Corba which are a transformation language, a data model language and a component interface declaration language. I also know some stuff in HTML, CSS, SQL, EQL,bash, csh, make, ant and maven.
      So if I count all those DSLs as programming languages, I am close to 30. Maybe he can provide us with a list.

    8. Re:Well... by CastrTroy · · Score: 5, Insightful

      I get where you're coming from. Being a programmer in "X" is more about knowing the tools and available libraries than it is about knowing the language itself. Somebody who works with C# could probably be very productive un VB.Net within a day or two, even though the languages appear quite different. On the other hand, C# and Java look quite similar in their syntax, but generally don't have much in common in terms of actually working with them. It might take a month or more to get reasonably productive it you switched from C# to Java.

      --

      Anthropic principle: We see the universe the way it is because if it were different we would not be here to see it.
    9. Re:Well... by K.+S.+Kyosuke · · Score: 1

      There's probably some differences between formal and natural languages in this case. First, there's not that many concepts, so the more languages you learn, the fewer newer things eventually come up. If you learn, say, Java and Standard ML, that's a certain amount of work, but now learn C# and Ocaml and it probably turns out to be an incremental effort - and a lot of it is actually libraries, I'm quite sure. Second, fluency in formal languages may not necessarily have the same bar as in natural languages. Think about the median programmer. That's probably not that much of a high bar, is it? Someone capable (and daring) of even venturing into a few dozen languages probably isn't a median programmer to begin with so comparing him to a median corporate code monkey, even with a better grasp of one language, probably isn't fair.

      --
      Ezekiel 23:20
    10. Re:Well... by K.+S.+Kyosuke · · Score: 1

      even though the languages appear quite different.

      Aren't the libraries basically the same?

      --
      Ezekiel 23:20
    11. Re:Well... by K.+S.+Kyosuke · · Score: 1

      Why would anyone write an Ada 2012 compiler in anything is beyond me. But CL is probably not a bad choice, if you feel this desperate need to reinvent the Algol/Modula wheel.

      --
      Ezekiel 23:20
    12. Re:Well... by K.+S.+Kyosuke · · Score: 1

      "Somebody who works with C# could probably be very productive un VB.Net within a day or two, even though the languages appear quite different"...?

      --
      Ezekiel 23:20
    13. Re: Well... by K.+S.+Kyosuke · · Score: 1

      To elaborate, I was commenting on the fact that merely swiching syntax is much less work than switching syntax, semantics, and the whole API. I was not referring to Java where the switch (from C#, for example) implies switching the first, the third, and quite a lot of the second.

      --
      Ezekiel 23:20
    14. Re:Well... by Pseudonym · · Score: 1

      Somebody who works with C# could probably be very productive un VB.Net within a day or two, even though the languages appear quite different.

      And on the other hand, someone who has worked for years in C#.Net might take months to get up to speed with Unity 3D.

      --
      sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
  7. With every project. by Marc_Hawke · · Score: 3, Interesting

    Or at least it's the project that determines the language.

    I use half a dozen different languages every day. You can double that if you look over the past year. There are a lot of factors that go into choosing a programming language and "what's new and cool" rarely is one of them.

    The two biggest factors are 'what is the execution environment?' and 'what are the interface requirements?' Basically, 'who is going to run it' and 'what does it have to talk to?' (and they are closely related)

    Next comes 'what are the related/currently existing projects already written in?' It's rare that you want to rebuild the whole thing. (Although sometimes that's exactly what you want to do.)

    After that, I'll look at the available libraries and tools, but for the most part everything worth using is adequate in those areas.

    Finally, if it makes it that far, I'll pick something I'm familiar with, just the make the whole project faster and less work.

    Overall, it's been quite a few years since the 'language' of the project was something I even worried about. "When in Rome, do as the Romans do."

    --
    --Welcome to the Realm of the Hawke--
  8. Stay the course by bidule · · Score: 3, Insightful

    There's no point in changing language often. You stick to one and master it. I have a coworker who handles most legacy apps, it doubles the time taken to make fixes because he's in the wrong context.

    I'd say 5 years is a good run for a language, you can return to it in a day later on. Sure you can do a quick hack in a non-mastered language, but your style aint stable and 3 months down the line it'll be spaghetti.

    --
    ID: the nose did not occur naturally, how would we wear glasses otherwise? (apologies to Voltaire)
    1. Re:Stay the course by arth1 · · Score: 1

      but your style aint stable and 3 months down the line it'll be spaghetti.

      Come on, admit it, that is true of every single project that is non-trivial or not a small managed part of something larger.

      I'm sure it's possible to make spaghetti code out of Forth, but I don't think it could be done without great effort.

      Haskell is pretty immune too, but when you mix penne, ziti, rigatoni and macaroni, something will invariably disappear inside something else.

    2. Re:Stay the course by serviscope_minor · · Score: 1

      There's no point in changing language often.

      Sure there is, mostly because you can't use quite a lot of languages for quite a lot of tasks without considerable effort and there are other reasons why one language is more suitable than another.

      For Android interfacing I use Java. For interfacing with Java programs I use Java and a bit of C++ for native speed. For image processing and computer vision stuff, I usually use C++. Systems programming on Linux I do in C++. For the Unity game engine I use C#. For embedded things I use C++ if I've got gcc or C if I only have IAR. On the odd occasion I have to touch the back of a web browser, then Javascript is the only choice. Hacking around mathematical stuff (i.e. not tied into a larger program), it'll often be Octave, but sometimes C++ depending. Mashing text files 9/10 times done with AWK, specifically GAWK. And then of course there's the shell scripting for tying things together. Occasionally I bump into other languages like Python because I have to hack stuff from someone else and it's in Python.

      Most of those aren't an active choice, they're more passive choices forced by the constraints of the system you're working on. The prevelance of C++ there is because if all things are equal I tend to reach for C++. Things are rarely equal.

      --
      SJW n. One who posts facts.
    3. Re:Stay the course by angel'o'sphere · · Score: 1

      Hm, I did not do any C++ for nearly 10 years.

      Then 3 years ago I had to imllement a set of 'unit tests' and inspired by JUnit I wrote a test runner and about 12 tests.

      Took me a bit more than a day.

      Except for a typo and a missing include it compiled and run on fhe first compile.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    4. Re:Stay the course by Drethon · · Score: 2

      Personally I haven't been given the option to master a language by my employers. I tend to focus on the best design for a program, regardless of the language I'm working in. Most programs don't need to be perfectly optimized and internet searching provides advanced techniques without taking too much time.

      I started out learning Java in college but only learned basic object oriented before moving to a mixed C/C++ embedded environment. After five years in this environment, my company went through a massive turnover in 2009 and I took a development job programming Ada. This lasted for a year or so and I shifted back to a C environment. During this time I dabbled in other languages that were required for the environment, DOORS DXL for scripting in Telelogic DOORS requirement environment, bash and DOS scripting, occasional work with perl, LabWindows and a few others. My most recent job was developing simulation programs with C# GUIs, C++ back end and visual basic scripting. During this time I taught a class in Java, which I had not used in five years but could pick right back up again thanks to a high level experience with programming theory, rather than specific applications.

      Don't get me wrong, mastery of a specific language has its place. Language masters can produce extremely efficient programs, which is something that seems to be often overlooked these days. On the other hand I've found understanding programming without being language specific helps me design programs that are more flexible and easier to read for someone familiar with any language.

      YMMV.

    5. Re:Stay the course by gfxguy · · Score: 1

      I agree - I think the best money comes from being a master of something, rather than a jack-of-all-trades programmer, but at the same time I think my job is a lot more interesting because I don't have to work on the same project forever. I go from web development (python with django) to simple user applications (python with pyqt) to plugins to our graphics software (whatever .Net, which is actually something really nice about MS development), to custom scripting languages for other graphics software. I came out of college with a strong C programming skill, while teaching myself C++ (C++ and object oriented programming were not yet being taught at my school), and I went through a number of languages (both scripting and compiled) before settling on my current, rather small, set of languages. One thing is it never gets boring around here.

      --
      Stupid sexy Flanders.
    6. Re:Stay the course by Drethon · · Score: 1

      Maybe more money by mastering one language, but that seems to result in a lack of job. I'll stick with a tad lower pay and never being without a new job when needed. Definitely keeps things from getting boring.

  9. Re:Is this question from five years ago? by Aighearach · · Score: 1

    I'm using Ruby for portable code, and plain C for Android-only. There are lots of options. The world is full of plenty.

    I do still end up writing a few lines of glue in Java, though.

  10. Every other script... by Maow · · Score: 3, Funny

    ... it keeps things interesting.

    Besides, I hate Bob in QA and it gives him conniptions trying to read it.

  11. As a system administrator, not a developer... by Celti · · Score: 2

    ...I basically have three areas I write in.

    There are the short and sweet (I mean, we all intend them to be short and sweet, no matter how unwieldy they get) system administration scripts. Those are basically always bash, although after I write them I always go "Damn, I keep meaning to try execline and forgetting it exists!"

    There's frontend Web dev. Javascript rules the day here, until WebAssembly finally gets... assembled.

    Then there's "everything else", which for the first ten years I wrote code meant Perl. I also flirted with Ruby and Haskell, didn't like Python much, despise PHP and used it anyway when debugging the seemingly-endless string of PHP webapps out there, and somehow convinced myself C/C++/C# were too hard for me to learn.

    Then I discovered Rust, and now it's basically my favourite language for anything. Rust has actually made me seriously consider moving from administration and support to development (if anyone local was hiring entry-level Rust developers, anyway!). Will I consider other languages in the future? Probably. But I'm going to consider Rust first.

  12. Re:When you pry my keyboard from my cold dead fing by Anonymous Coward · · Score: 1

    I still do some 8080/Z80 programming for my collection of CPM / TRS-80 machines. Also a little 6809/68HC11 for some embedded controller boards we made 20 years ago.

    I even wrote a printer driver for a Heathkit 6800 system , had to enter all the hex codes in by hand via the keypad,
    at least I had an assembler that generated the hex for me.

    Managed to even squeeze a 256 step sine/square/random signal generator at 100Hz into an 8MHz 8051 derivative, had to count clock cycles on that one.

    Ahh the good old days.

  13. Comment removed by account_deleted · · Score: 5, Interesting

    Comment removed based on user account deletion

  14. In the last two months by phantomfive · · Score: 1

    In the last two months, I've used three different programming languages, maybe more.

    The disturbing thing about the question is that it seems to assume you can only program at work. If so, I feel sad for you......you've never caught the enjoyment of programming.

    --
    "First they came for the slanderers and i said nothing."
    1. Re:In the last two months by Z00L00K · · Score: 1

      It's not a question of switching, it's adding another tool to the toolbox. No matter if it's Perl, C++, C, C#, Java, Classic Basic (Yes, some solutions are out there using that still), Cobol, Bash, Makefiles etc...

      Often a project consists of not a single language but three or four at the same time considering the need to automate builds and testings and wrapping the software.

      --
      If builders built buildings the way programmers wrote programs, then the first woodpecker would destroy civilization.
    2. Re:In the last two months by gfxguy · · Score: 1

      ... Classic Basic (Yes, some solutions are out there using that still), ...

      Laughing because I am right now rewriting a GW-Basic program I wrote for my dad, originally in 1985, updated a couple of times in the 80s. He's been using it ever since in his accounting practice, jumping through hoops to keep it running. I'm finally rewriting it in .Net so that it can use Windows printing on Windows versions later than XP. But, in other words, if anyone thinks that statement is wrong, I promise you it's not!

      --
      Stupid sexy Flanders.
  15. Man, I'm glad I got out of IT by DNS-and-BIND · · Score: 5, Informative

    One thing I do not miss (besides being woken up by the pager) is having my knowledge obsoleted and being forced to learn new things. Oh, but you're supposed to never stop learning, stay young, blah blah blah. Bullshit, that's a bunch of pro-corporate propaganda. Now, I learn something...it sticks. 5 years later, I still know the thing. In fact, after 5 years I'm probably quite good at it. I will stay quite good at it until it changes (slowly or not at all) or I die. Sure, new laws and regulations come along every so often and they must be mastered, but it is nothing like IT. I like this way much better than becoming an expert and then having to start all over at square 1.

    --
    Shutting down free speech with violence isn't fighting fascism. It IS fascism!
    1. Re:Man, I'm glad I got out of IT by beheaderaswp · · Score: 1, Offtopic

      I'm going to go ahead and agree with you. I'm semi-retired. And while I still play with computers- the thought of going back into IT makes my stomach turn.

      It's also true that the IT business has changed so much and is now driven by certifications and buzz-words rather than by talent or skill. Heck when I started working for a Fortune 100 in the mid 1990s I didn't even give out a resume. I had a *reputation*.

      It was only after the housing crisis and economic meltdown that I needed a resume. Apparently, financial meltdowns make a persons over qualified or too expensive. One interview I went to had me seated with three other guys in a waiting room. I knew two of the guys- both of them thought if I was there that they would not get hired. But apparently the three of us were not hired- but rather the recent college grad we didn't know. He probably worked cheap and had the right certs.

      But regarding what programming language- I'd use the lowest level one which pragmatically makes sense.

      --
      Another consultant who stuck it out.

      "We are the Priests, of the Temples of Syrinx..."
    2. Re:Man, I'm glad I got out of IT by OrangeTide · · Score: 1

      Man, what a drag it is to learn new things. We should all be able to step out of school with our diploma and never have to study or practice anything new again.

      --
      “Common sense is not so common.” — Voltaire
    3. Re:Man, I'm glad I got out of IT by interiot · · Score: 1

      There are some fields, such as banks and embedded work, where code bases stay around for a while. For example, at the bank where I worked, many of our Unix boxes were Solaris and AIX versions from 10+ years ago. Too old for my tastes. But still you worry that the longer you stay there, the more the rest of industry is leaving you behind and you might be stuck in this niche.

    4. Re:Man, I'm glad I got out of IT by interiot · · Score: 1

      Common man, be nice. I know we're anonymous here, but there's a human on the other side.

    5. Re:Man, I'm glad I got out of IT by Anonymous Coward · · Score: 1

      That would be an MBA.

    6. Re:Man, I'm glad I got out of IT by iCEBaLM · · Score: 2

      Oh man, that's good to know that my knowledge of 10Base5 and 10Base2 network cabling is still useful, and my knowledge of netinfo, netware, appletalk, amigados, PC IRQ conflict troubleshooting, pascal, and of course, the ever popular frame relay. So glad I studied frame relay. because you just told me all my knowledge is never obsolete! I think I'm gonna go out and setup a windows 3.11 workgroup right now!

    7. Re: Man, I'm glad I got out of IT by prefec2 · · Score: 1

      You do not need to learn so many things all the time. At least if you have an understanding of basic concepts. They pop up in most languages used today. Even the transition between Java domain and C# is easy to handle, as the libraries contain similar concepts named in a similar way.

    8. Re:Man, I'm glad I got out of IT by Drethon · · Score: 1

      Languages may become obsolete but knowing how to program never becomes obsolete. Problem solving, interacting with people, identifying gaps in the program design, these skills will always be needed by employers as few programmers understand these skills when they first enter the workplace. Some have a hard time ever learning these skills.

    9. Re:Man, I'm glad I got out of IT by HornWumpus · · Score: 1

      I installed a DOS lanmanager client on an ancient (but still useful) PC based machine tool about a year ago. It was on a local network segment as I had to render the server insecure so lanmanger authentication worked.

      Good thing I never throw anything away. I knew I'd need an ISA ethernet card eventually.

      --
      John McAfee 'It was like that time I hired that Bangkok prostitute; to do my taxes, while I fucked my accountant'
    10. Re:Man, I'm glad I got out of IT by Lennie · · Score: 1

      Learn to see the forest, not the threes.

      Can I suggest not to look for jobs that ask you do just one thing.

      Many of the things learned in one language or part of IT can be used/applied in an other.

      If using a different language makes what you learned from other languages obsolete you are doing it wrong.

      --
      New things are always on the horizon
    11. Re:Man, I'm glad I got out of IT by Tablizer · · Score: 1

      Learn how to bullshit. I don't like to condone it, but it's what my successful colleagues have done. Learn just enough about new fads to sling the lingo to recruiters etc.

      It's a Dilbertian world out there and those who master Diltertian ways win.

    12. Re:Man, I'm glad I got out of IT by Tablizer · · Score: 1

      I see one of your languages is VB.

      While Microsoft's development "stack" has become a pain to install, configure, and keep updated; Microsoft does have a certain consistency with many aspects of their languages themselves, such as function names and behavior, and syntax. My knowledge of VB Classic and VBA from the 90's is still largely applicable to their dot-net offerings. From that aspect, I have to give MS credit (while kicking them for 100 other dumb actions).

    13. Re:Man, I'm glad I got out of IT by Tablizer · · Score: 1

      I went into actually engineering and prefer it much more. Unless you're in R&D things change at a slower pace ... because nobody wants unproven equipment running in their plant

      Yet, co's are happy with unproven software fads. Go figure. I guess until IT fad chasing kills somebody, the Pointy-Haired-Bosses will keep falling for buzzwords.

      "In the news today, due to a Mongo DB, a man had his brains sucked right out of his skull..."

    14. Re: Man, I'm glad I got out of IT by Tablizer · · Score: 1

      Language change is only a portion of the total volume of change. You have lots of tool stack changes also, such web UI libraries (which break when a new browser version comes out), no-sql databases (often used where they shouldn't be), "corporate standard" code editor changes, having to use anonymous functions because the language has a crappy OOP model, etc.

    15. Re: Man, I'm glad I got out of IT by prefec2 · · Score: 1

      Yes you are right, but still UI libraries are all very similar too. They all have some sort of canvas, buttons, sliders, scrollbars, composite views, and a set of options how you can layout them. Many of them have a boxing model similar to HTML, but there are also "rule"-based approaches and some with absolute positioning. In the end it is just more of the same. The same applies to databases. Yes every SQL DB has their specialties, but there is always a way to get an auto increment index ,views etc. No-SQL databases are a little bit more diverse, but they store records/objects/rows or nodes (which you should know from graph theory and which should be familiar to you from datamodels/meta-models which have the same property). It is also no big difference between protocol realized via functions (like in Corba, RPC and similar stuff) and via request URIs. True you have to learn how a "call" is expressed, how values are passed and whether you can pass references or not. Therefore, usually you need a month transitioning to a new area.

    16. Re: Man, I'm glad I got out of IT by Tablizer · · Score: 1

      It appears I didn't explain the problem I encounter clear enough. I agree that the general concepts remain mostly the same, but the details and bugs and work-arounds and oddities and exceptions-to-the-rules are different.

      These tools are often buggy or overly complex or don't play well with other addons and it takes time to learn the idiosyncrasies and experiment. One ends up micromanaging scroll bars or drag-and-drop oddities etc; things that should be settled after the idioms have existed for 30 odd years.

      When one masters a tool it becomes almost reflex such that one is productive and feels productive. If it's full of (new) glitches and idiosyncrasies, then you waste a WHOLE lot of time fiddling with nagging details.

      One should be mostly focusing on converting domain logic to UI's, not micromanaging a scrollbar that doesn't work right in browser version x.340282 because Google or MS failed to test that version with JQuery version y.492923 or whatnot. Browser ui's are the wild wild west still. (I've proposed moving most of the render load to the server in another topic to avoid client-version-combinatorial-explosions.)

      I want to do real work, not babysit needy finicky pixels. That gets so fscking boring, and the customer is tired of paying for such fiddling also. Sometimes I want to outsource such fiddling to a $2/hr coder in the 3rd world, but that just perpetuates crap UI tech, and often a security risk.

      The industry has a problem, but most coders don't care because it's job security. If ui's worked properly, I best at least 1/2 would be laid off.

    17. Re: Man, I'm glad I got out of IT by prefec2 · · Score: 1

      Yes you are right. It is exhausting to learn all the oddities which come in play after you realized and implemented 80% of the project. However, the most oddities you encounter in the second phase of language and platform learning. First, you learn the grammar and simple project and build setup. Second, you learn APIs and will realize or participate in a bigger project. This is also the time when most oddities are haunting you. Yes, I agree there should be none, but I also agree there exist. Furthermore, there are new oddities in every version of the tooling. Finally, after a couple of month (depends on your employer or customer) you know 80-90% of all nastiness of the new platform, tooling and language(s). Therefore, the number of show stoppers become seldom. This is because some oddities appear regularly. These you learn quickly, which reduces the amount of time you are surprised of them (and you usually evade them). It is like learning a human language, you need only a tiny vocabulary to be able to make most conversations. The vast majority of vocabulary is only the icing on the cake (even though no icing makes the cake experience dull).

      You are also right that it sucks that in such things like UI widget sets, there are still issues and that there appear new issues and that they stay. It is also interesting to see that all past stupidities are repeated every 10-20 years.

    18. Re: Man, I'm glad I got out of IT by Tablizer · · Score: 1

      Finally, after a couple of month (depends on your employer or customer) you know 80-90% of all nastiness of the new platform, tooling and language(s). Therefore, the number of show stoppers become seldom.

      I always find new stumpers that take a bunch of fiddling. For example, every time Microsoft releases a new browser, bunches of applications often don't work right on it. It's not just me, also other teams and vendor products.

      Over-HTTP-GUI needs a big fat juicy rethink. We are doing it wrong and wasting perhaps hundreds of billions of dollars world-wide forcing a square peg into a round hole.

    19. Re: Man, I'm glad I got out of IT by prefec2 · · Score: 1

      You are very right on this one. What we do is remote displaying application UI. We did such things with VNC and X11. However, both are not the right thing. But trying to do it with a hypertext markup language is odd. JavaScript is odd too. But this is a total different story ;-)

  16. Is it webscale? by Gumbercules!! · · Score: 2

    I use MongoDB because it's webscale. I also pipe data to dev/null because it's fast as hell.

    But seriously, for web stuff, php/javascript and for Windows server work, believe it or not, VB.NET, because that's what the code I've got to work with was written in.

    1. Re:Is it webscale? by gfxguy · · Score: 1

      I don't care if it makes people cringe (see a few posts above), but the right too for the right job doesn't mean a specific language, it means if you have a broader knowledge of languages, you pick the one that works best for you to solve a certain task. I mention this because you mention PHP, and it has gotten a really bad reputation. I get why some people don't like it, and I moved on to Python/Django for web stuff, but when I switched from PERL (and also using Tomcat/JSP) to PHP, it was night and day - and I did what I had to do in probably less than half the time, and I never really got that proficient at it, either.

      It's an interesting discussion because you obviously have people that have been working in the same kind of programming domains for years, while a good number of us switch to completely different projects. For me it's everything from simple scripts to scrape data from somewhere, simple cron jobs, small end user applications, web services, and plugins for several different systems that require different scripting languages or APIs (the latest is .Net, which allows me to choose from a variety of languages - something that MS has actually done right and deserves some props for).

      --
      Stupid sexy Flanders.
  17. Going by the book... by __aaclcg7560 · · Score: 1

    I just bought a used book from Amazon, "Writing Compilers and Interpreters: An Applied Approach," by Ronald Mak (1991 edition), to write an interpreter and compiler in an ancient dialect of C written for DOS-based C compilers, and the target language is probably an equally ancient dialect of Pascal. The 1991 edition supposedly has working C code, whereas later editions has C++ code that doesn't translate into a modern dialect. After this, I'm going to write a BASIC interpreter and compiler.

  18. Everyday by Anonymous Coward · · Score: 1

    Bash shell - miscellaneous scripts
    Perl - glue programs/scripts
    Java - webapp
    Javascript - webapp frontend
    Obj-C - iOS app
    PL/SQL - database triggers

  19. Have a core and use others by chromaexcursion · · Score: 1

    I've been doing C/C++ for decades.
    I've picked up some Java, Python.
    Can do C# when it's the front end (I'm not a GUI guy).
    Of course shell script is always useful.

  20. How many times do you switch back? by EmperorOfCanada · · Score: 4, Interesting

    I have switched computer languages many times. Some times for good, some times just for a project, but often I find a "better" language, only to find that it has many dead ends or other problems. My present primary language is actually two: Python and C++. With these two there isn't much I can't do. Where one is weak the other is strong.

    That said, there are some situations where another language is called for. Javascript is pretty much the defacto browser language. Thus I would never try Python or C++ in the browser as that would just be horrible. But I don't really see Javascript as a great a language outside the browser as some people claim. Then there are scripting languages. I use Lua where I give users the ability to extend my programs through scripts because Lua is wonderfully tied into C++ through some awesome language extensions, they are tight and small. So would I say that I switch programming language when I jump to Lua or Javascript?

    That all said, some languages are pretty much dead to me. Java is solidly in the trash, .net is solidly in the trash, perl is solidly in my past, and very happily Objective-C is in the dumpster and I set it on fire.

    I think that an interesting question would be more, "What language(s) do you presently use, what languages are your last 5 years of code largely in, and what languages are presently on your list of languages you are interested in exploring?"

    1. Re:How many times do you switch back? by worldtech-a3x · · Score: 1

      What's wrong with Perl ?

    2. Re:How many times do you switch back? by Drethon · · Score: 1

      Can't speak for the GP but I've found perl a fair language but a little too specialized. If I need a good regex I toss it in one of the C languages (usually C# these days), rather than go out and use perl. Though my programs usually just have basic file parsing so I may not be the proper target developer.

    3. Re:How many times do you switch back? by tomhath · · Score: 2

      Python can do anything Perl can do. With the added bonus that you can read the code the next day and understand what it's doing.

    4. Re:How many times do you switch back? by gfxguy · · Score: 1

      I've used PERL for a variety of things, including my first CGI scripting, but switching to PHP was like night and day, and my website development took a fraction of the time - a very small fraction, like 1/3 to 1/5 the time, maybe even less. PHP was just designed for it, and PERL wasn't. PERL is great at text document processing, that's what it was made for - now people have shoehorned in a variety of things that it's capable of doing, and that's great, but it hardly makes it the best tool for most things. Even for system scripting, Python is a lot easier for me.

      --
      Stupid sexy Flanders.
    5. Re:How many times do you switch back? by worldtech-a3x · · Score: 1

      It's possible to write readable Perl code, it's up to the coder.

      The issue with Python is that it uses whitespace / indentation for syntax. I guess that's not a problem when using a good IDE that handles whitespace automatically though.

    6. Re:How many times do you switch back? by EmperorOfCanada · · Score: 1

      Someone said that perl is the language where you come back from lunch and can't understand what you did that morning.

      While some will argue that it is up to the coder, I say that certain languages encourage bad form, while other languages push their "good" form so hard as to make them unpleasant. Perl really demands that you squish what would be 30 lines of clean code into a single awesome Regex.

      My hands down cleanest code is written in simple Python, I say simple because there seems to be this "expert" movement where they call things Pythonic if you put the same 30 lines of clean code into one single stupid line.

      They had better be careful as this perversion of Pythonic ideology will drive off the desirable groups such as new programmers from, say, the scientific community.

    7. Re:How many times do you switch back? by EmperorOfCanada · · Score: 1

      I followed roughly the exact same path. People seem to love crapping all over PHP, yet like Javascript on the browser, the domain of PHP is getting data to and from the database and out to the web. It is simply fantastic at this. Would I make anything else in PHP if I could, hell no. But it is like a speciality tool such as a socket wrench. It puts nuts on, it takes nuts off. It isn't a hammer, it isn't a shovel.

    8. Re:How many times do you switch back? by EmperorOfCanada · · Score: 1

      I have built plenty of sites with PHP, python, C++, and perl. Hands down PHP is the best at getting data in and out of some sort of data store. Some of the sites were very busy commercial sites with effectively 100s of thousands of dynamic pages for products and their associated details, etc. These sites would be peaking out around 20,000 views per minute nearing Christmas with many of those being sales transactions. These sites typically ran on under 10 dual cpu run of the mill servers with no amazing attributes. The servers were completely underwhelmed by the traffic.

      Other PHP driven backends for mobile apps were serving in the range of 10000 simultaneous users who were usually hitting the servers around twice a minute with either some data to store or a request for other details. This was handled by two servers, one with redis and the other with apache and PHP. The web server was pretty good with around 16 cores on 2 CPUs.

      We were all ready to jump in and C++ the crap out of any part that needed it but the measurements were showing 20ms responses on most requests. Reducing this to 0ms would not have had any benefits.

      The reality that I have discovered is that the two choke points for most REST or web servers is the datastore, and the network distance to your customers. So getting a CDN or spreading your servers out closer to your customers, combined with making sure your datastore has enough RAM to do most operations in RAM is where the speed and capacity will come from. PHP has never been a problem. While C++ would buy some unnecessary speed, the development time would cost piles. Python would be slower, although I regularly use it for offline stuff such as ML or just plain old data massaging, and node.js is similar and would have similar arguments to PHP it just isn't the way I have gone.

      So while you say you wouldn't use it for something more than 100 users, I don't know what on earth you would recommend other than nodejs as a replacement. What you might be thinking about is PHP when combined with some of the nightmare frameworks that the script kiddies love. Most of the frameworks that get the most press are bloated piles of steaming dogshit that are the classic solutions that will get you to 90% done and leave you hanging at 90% for the next 2 years until your startup runs out of cash. The worst being that if you used one of really crappy popular frameworks and have any success you will find scaling to pretty much be impossible and that you are throwing absurd numbers of servers at very small workloads.

      To press home my PHP point, I have done simple from memory datastore websites that were completely adequate for maybe up to 1000 views per minute on a Raspberry Pi.

  21. Depends. by Yaztromo · · Score: 2

    I've been a developer on some pretty damn big projects. The kind of projects used by Fortune 500 companies -- everything from end-user facing applications all the down to low-level infrastructure projects.

    If there's one thing I've noticed about all of these large projects over the years, it's that there is rarely ever only one programming language in use. Web apps will use Javascript on the front end and one or more language son the back-end. Large scale C/C++ apps will have a variety of scripts surrounding them. Every project needs an installer, some form of scripting for the build processes, deployment, automated QA, and (frequently) database management. There may even be a mobile app attached to the project. I've had to switch between C/C++, Bash scripting, Java (with JNI), SQL, and REXX, all in the same project.

    The point being, if you work on a large enough project, and aren't a junior developer, you're probably switching between a bunch of different languages already. Those languages are probably fairly stable (i.e: you probably won't see too often where you change a massive project from Java to C#), although I've certainly introduced new languages and processes to big projects to make "dumb" processes smarter. The ability to do that, however, often comes when you get to a point in your career where you can specify and/or contribute to significant architectural changes.

    I've also been fortunate enough to work at a few places where you can spend 10% of your time working on personal interest projects. If you're fortunate enough to be in such an organization, this is a great time to try out new languages that interest you. If not, find (or start) a project in the interesting language of your choice, and work on it in your own time. If you make it Open Source, and put it on GitHub or the like, you can include it as experience on a resume.

    Yaz

  22. At will by MrKaos · · Score: 2

    I switch between languages several times a day, sometimes I use two at once, doesn't everybody who codes? I have a method for understanding the capabilities of a language by implementing some design patterns when I learn a new one, which is pretty fun to do. I have no shame, I am a geek!

    Sometimes the features of one language teach you something new that you can apply to other languages. Learning is addictive, it's why I love programming.

    Is it just me or does anyone else get the feeling that these odd questions are being asked by recruiters trying to figure out how technologists work?

    --
    My ism, it's full of beliefs.
  23. Switch? by MetaKey · · Score: 1

    Well, I switched from FORTRAN77 to C in 1981. Switched from C to C++ in 1990. Still using C++. Clients hire me to do C++. The right guy for the job I always say. For fun these days I have also been doing some Arduino stuff. Kinda refreshing. Reminds me of the old days..

    1. Re:Switch? by thinkwaitfast · · Score: 1

      Reminds me of the old days..

      That's the only reason I do computers anymore. The new stuff is not so fun, even with arduino and rpi. I recently (re)started with my old atari computer. Still works after 36 years. Reading the retro sites, I never realized how much it was targeted toward gaming.

    2. Re:Switch? by TheRaven64 · · Score: 1

      The BBC Model B was just about simple enough that one person could understand all of it, from the gate-level layout of the CPU up through the software stack. And it was just about powerful enough that you could play fun games and do real work on it (though not quite enough RAM for a useful spell checker). It's a shame that there isn't really a modern equivalent. The RPi is far too complicated (especially if you throw in Linux or similar on the software side) and the BBC Bit is too simple.

      --
      I am TheRaven on Soylent News
  24. Re: When you pry my keyboard from my cold dead fin by Anonymous Coward · · Score: 5, Funny

    Grandpa, Mom says you need to get off the computer.

  25. Daily? Hourly? by Dixie_Flatline · · Score: 1

    How do you mean "switch". At my work we have a main dev language and a couple in-house languages that are used to generate code. I also use emacs as my main programming environment, so I write a little bit of elisp weekly, probably. Or do you mean how often do I abandon a language and move to a new one forever? In that case, not once in 15 years.

  26. Re:Is this question from five years ago? by chipschap · · Score: 1

    Xamarin

    Obviously one I'm not familiar with, but had you not said it was a programming language I would have bet heavily on it being a psych med.

  27. Maintenance vs New Creation by brian.stinar · · Score: 1

    How often is it that you have a brand new system, in which you get to choose your language? Unless you are independently wealthy, or part of a funded started (indirectly independently wealthy, partially) the answer is probably not very often. Whenever someone has a brand new, completely open, technological problem, they have a green field.

    This is not very common, at least for me. I have a BS + MS in computer science, worked for three years as an employee in two companies, and now own my own small software company (with two guys I pay to write code for me) and have been in business for myself for four years. I charge enough money to pay my people, and my bills, through revenue. That means, by definition, that my customers have to be able to pay. I live in a poor state, without a tidal wave of venture capital. Almost everyone here has a legacy system, which is generating them money, which they can use to pay us. Those systems come with constraints.

    There have been three times in my 10+ years of experience creating software during which I was able to 100% choose everything technology related for a project. Once was part of a barely funded start up. The other was part of a successful business that contracted with my company to greatly expand their eCommerce, completely scrapping their existing system and letting me choose everything. The third is ongoing - a customer described their problem in a high level, and nothing existed to solve it. For the third example, I am bound by (light) constraints regarding the other system we are interfacing with, and it has to be web-based. Otherwise, my more than full time experience, has been as a maintenance programmer, or as a manager over a team of maintenance programmers. This guy is way more eloquent than I am about the subject, and way smarter + more successful. Think about what the very successful people have to say about these kind of things.

    I think different people, in different states, have different approaches. The most poorly organized organizations, and ventures, had very few constraints. They didn't have to answer to anyone about their technological choices, and typically had money to "build something." Sometimes that results in beautiful leaps forward, for humanity as a whole. I think most of the time it doesn't. Maintenance programming means you are maintaining something useful, for someone that is interested in paying you. You'll also learn new skills, and new languages / technologies / tools, just out of necessity, rather than being freely chosen, with no constraints.

  28. Many times daily by AchilleTalon · · Score: 1

    Given the set of products we have, from a single provider, I have to switch between: python, javascript, vendor specific language, java, bash, perl, xslt, power shell and sql on an almost daily basis. I rarely end a day dealing with a single language. Unfortunately, no C/C++ at my working place.

    --
    Achille Talon
    Hop!
    1. Re:Many times daily by Nyder · · Score: 1

      Why is C/C++ not allowed at your job?

      --
      Be seeing you...
    2. Re:Many times daily by AchilleTalon · · Score: 1

      I don't know exactly, it was decided few years before I was hired. But I suppose it has something to do with type safety of the language, popularity among vendors in relation with us. PHP was also withdrawn from the list of authorized languages for web sites.

      --
      Achille Talon
      Hop!
  29. I wish I could choose when to switch languages by hibiki_r · · Score: 1

    I am doing infrastructure for a well known, yet not public SF company. I've had days where I had to write code in 5 languages, going from interpreted languages with almost no type support, to Scala's type battleship. This raises problems for learning: I learned Scala somewhere else, doing nothing but Scala for months. When you can dive deep into a language, it's easy to remember it, and then bring back the knowledge on command. But without a deep dive, it's really hard to learn a language, especially when you deal with a bunch of similar ones. I never have to do much Ruby, or much Python, so they never stick in my head, and the lack of a compiler means I often write terrible, broken things. Maybe if I only wrote ruby for 3 months, then only python for 3 months, then maybe they would stick, but that's not now infrastructure work goes.

  30. I don't. C for life. by Nyder · · Score: 3, Interesting

    C does what I need it to do. Only thing I'd switch to is probably assembly, since that would make the code run faster.

    --
    Be seeing you...
  31. Don't be Dogmatic by Plus1Entropy · · Score: 4, Interesting

    You should almost never have the mentality of "I don't use such-and-such-a-language", whether it's because you don't like semicolons, hate whitespace requirements, or some other bullshit reason (come at me, I know you're out there :P). That doesn't mean you can't prefer one or the other, or even gripe about it to your co-workers; just don't let it get in your way.

    If you've done enough programming and know at least 1-2 languages fluently, you should be able to pick up another very quickly (less than a week). Often, at a particular company or on a particular project, you don't get a choice. If you do, the requirements of the project will force you to choose between 2 or 3. If you happen to be in a situation where you have absolute control and get the final say on what language to use, then you should choose the one that is best for the job.

    But when I say "best for the job", I don't necessarily mean in some theoretical, push-your-glasses-up-your-nose sense. I mean what will allow you to do the best you can to achieve the requirements of the task at hand. If the task at hand is to teach yourself something, choose a language you're less familiar with. If it's to meet the requirements of a client in a reasonable amount of time, choose a language you are more familiar with. If the application is computation heavy and speed is a requirement, choose a more efficient language. If you are not the sole developer, choose a language that your co-workers would be more comfortable with using.

    Often (read: always), more than one of these factors will be relevant. It's up to you, individually or as part of a team, to weigh them and determine the best choice. That is what it means to be an expert.

    Simply put, you should switch languages whenever you deem it necessary to do so. To know when it's necessary, you have to expose yourself to a lot of different languages.

    --
    Only crack the nuts that crack. You don't put the ones that don't crack in the sack.
    1. Re:Don't be Dogmatic by jouassou · · Score: 1

      If you've done enough programming and know at least 1-2 languages fluently, you should be able to pick up another very quickly (less than a week).

      I hear this a lot, but I respectfully disagree. Rather, if you know at least 1-2 languages fluently you should be able to pick up another based on the same programming paradigms very quickly. For instance, it definitely didn't take a week to learn Haskell, even though I knew a lot of other programming languages at the point I first started to play with it. And I'm quite sure most people spend more than a week learning object-oriented program design properly.

    2. Re:Don't be Dogmatic by Plus1Entropy · · Score: 1

      Fair enough, I was generalizing a bit. Just about everything I said in the GP could have a * next to it (which was kind of the point).

      You won't be an expert at the language within a week, but you'll be familiar enough with the syntax and most of the operators to be able to read and understand someone else's code, and begin writing some of your own, with a Google search here and there to clarify something.

      There are always outliers. As you said, object-oriented programming: if you've never really dealt with classes, inheritance, polymorphism, etc., it will definitely take some more time to get the hang of. The first time you deal with an Assembly language springs to mind as another good example. And as an AC above mentioned, if you're a masochist, there's always brainfuck, lol.

      You definitely piqued my curiosity about Haskell. I'd heard of it in passing, but never really looked into it. Just based off the code snippets on the Wikipedia page I can absolutely see what you mean. In the spirit of this thread, what made you decide to pick it up? Where do you find it more useful than other languages, and why?

      --
      Only crack the nuts that crack. You don't put the ones that don't crack in the sack.
  32. More often than... by PsiCTO · · Score: 1

    I bet I have used languages with the same frequency as this kind of question comes up on /. -- current favourite is alpasisp+++^21

    Seriously, it's all just syntax, convention, and architecture, so I don't bother to track. Off the top of my head, I'm up to 30+ "languages" in 30+ years. Throw in media (yes, starting with punch cards), then it gets worse.

    I think a more relevant question is how often does one advance their architecture, paradigms, and most importantly debugging skills. Anyone can write a program that compiles and does something. Building something that is understandable, useful, usable, and maintainable, now that's a discussion.

    1. Re:More often than... by tlhIngan · · Score: 2

      I bet I have used languages with the same frequency as this kind of question comes up on /. -- current favourite is alpasisp+++^21

      Seriously, it's all just syntax, convention, and architecture, so I don't bother to track. Off the top of my head, I'm up to 30+ "languages" in 30+ years. Throw in media (yes, starting with punch cards), then it gets worse.

      I think a more relevant question is how often does one advance their architecture, paradigms, and most importantly debugging skills. Anyone can write a program that compiles and does something. Building something that is understandable, useful, usable, and maintainable, now that's a discussion.

      Exactly. It's not about chasing languages - it's knowing the concepts behind the language. Knowing the concepts means a language is really syntax, idioms and keywords.

      And once you know that, you also realize that a big part is libraries. But once you know a library, like say the C library, you realize that when you need a function, there's usually going to be a library for that. Like if you need to date calculations, there are C libraries to do that, so you if you need to a date calculation in another language you know there's got to be an API for that.

      Here's the thing to understand - at the very lowest level, you have machine code. It's what the processor executes, it's all the processor knows. Anything you toss on top has to be translated to that - it doesn't matter if it's assembly, C, C++, Java, BrainF**k or any other programming language you can dream up (SQL, say). In the end, it all boils down to machine code.

      And even more abstractly, every processor derives its instruction set from an limited implementation of an abstract Turing machine. The Turing machine defines what a "computable" or what a computer can actually do (this applies to hardware like FPGAs too - FPGAs can do a lot, but they only can do computable things).

      Once you understand this, you can be one with the machine, and realize what a programming language actually is.

      Contrast this to regular human languages where language evolved due to history - the history of English is derived heavily from the history of the world - the barbarians of Great Britain, through the Roman Empire, etc. Which makes it easy if you're learning a shared history language (perhaps a Romantic language), but much more difficult when there's little shared history (say, Asian languages).

      The computer has one language and every abstraction on top of that is still limited by the base.

    2. Re:More often than... by PsiCTO · · Score: 1

      Huh?

      Sorry, I meant Jacquard cards. So back off, n00b, before I forward my copper plate etching of me punching out your great-great-great-great-great-ugly-grandpa!

      :-)

  33. Like you have a choice? by Anonymous Coward · · Score: 1

    OK, this breaks down into two domains:

    If you are programming for a personal, or one person project, you have -some- choice, depending upon the target platform.

    If you are joining a pro shop, the decisions have already been made. You either know the language and paradigm, or you convinced someone in your interview process that you could come up to speed in an acceptable amount if time.

    I honestly fail to understand these debates.... logic is...... logic, once you understand it, the programming language is just a tool to express it.

    And on that note, shitty, faulty code, that does not parse input properly AND handle exceptions is the root cause of almost all of the security problems we deal with, and it does not matter in what language the shitty code was written.

    Oh, and NEVER try to invent your own crypto, unless you have a PhD, and THEN get it peer reviewed. But that is algorithmic, not programmatic...... and almost certainly not language specific.

    Red

  34. Switch? by drolli · · Score: 5, Interesting

    I dont switch. I start to use programming languages when is see it fit and stop to use them when I see it fit. It is not a 'Everything in one language' thing. Depending on the project, languages switch positions.

    1987-1990: Basic
    1988-today: Assembler
    1989-1993: Pascal
    1990-today: C/C++
    1995-2010: perl
    1996-today: octave/matlab
    1999-2005: Autolisp
    2000-today: Java
    2002-today: Python
    1995-today: bash
    2007-2011: tcl/tk

  35. I switch from C to assembly ... by Ihlosi · · Score: 1
    ... whenever I realize something can't be done (or only in convoluted ways) in C.

    Then again, I also work with small targets (couple of ten kB RAM, couple of hundred kB Flash).

    Oh, and I switch to Matlab script occasionally, when determining what the small devices should actually do.

  36. Re:Is this question from five years ago? by johnw · · Score: 1

    Can anyone explain why some people have such an irrational hatred of Ruby?

    There are some really bad languages out there (Ruby isn't one of them) but none seems to garner quite the same mindless abuse.

  37. Fairly regularly by DaphneDiane · · Score: 1

    I do compilers, low level OS stuff, debuggers, code analysis tools, so I'm always having to switch languages or keep up with other languages. When I have more of a choice my current preferences are a mixture of C++14, Perl and Assembly ( especially PowerPC ). Modern C++ is a pretty nice language and I consider it distinct from C++98 and earlier. I also have way too much fun playing with meta-programming when I can. And template meta-programming is always fun for adding another level. Wrote a binary object file parser once that was pretty much all default member initializers ( thanks C++14 ) and template meta programming. Why write a function when the compiler will do it for you, especially when you are writing another compiler.

  38. I'm a regular switcher by treczoks · · Score: 1

    I work at the real bottom of it. While other people think about "which OS (version) do I have to work on?", I sometimes don't even have a processor to work with.
    I do FPGAs with VHDL, ARM CPUs in C and assembler, usually without any OS at all (think graphical UI on a machine with 2 kilobytes of RAM!), maybe with some library routines (not a full OS) for networking. Sometimes I have to work on the PC side of things, so I have a good part of my build chain (anything after the C and VHDL compilers to create update packages, etc), the communication libraries for my PC programmers, or simple tools in C and Perl, and sometimes BASH. And if it comes to worse, I do a bit of SQL, PHP, HTML, and even Lotus Script.

    Switching between VHDL and C is so common, at the moment I have two VHDL and one C project open, and I work both - usually, while the VHDL synthesizes (10-15 minutes for one build), I write the test routines in C.

  39. Let's see... by jcr · · Score: 1

    Used BASIC , FORTRAN and Pascal in school ('76 to' 82), used Tandem TAL, 6502, Z80 and 68000 assemblers, FORTH, C, C++, and Postscript at various jobs until I started using NeXTSTEP in 1989, used Obj-C from 1989 to the present, and I started using Swift when it came out two years ago.

    So, Obj-C was my main language for around 27 years. I expect that Swift will be what I use from now until I stop coding altogether.

    Along the way, I also had occasion to use Perl, various shells, and a tiny bit of Python and COBOL.

    -jcr

    --
    The only title of honor that a tyrant can grant is "Enemy of the State."
  40. Re:Is this question from five years ago? by JaredOfEuropa · · Score: 1

    When you have options, go for what you already (more or less) know. I have a fair amount of C/C++ experience, about 4 years of Objective-C on iOS, and a bit of C#. When the time came to start writing for Android, choosing Xamarin was a no-brainer.

    --
    If construction was anything like programming, an incorrectly fitted lock would bring down the entire building...
  41. Root by Roger+W+Moore · · Score: 1

    How do you do c++ scripts?

    You use a package like ROOT which we use at CERN for data analysis. The original author had the idea that he would save physicists the time to learn a separate scripting language by using interpreted C++ as a scripting language. As you can imagine this did not work out very well. Firstly C++ has an appallingly bad syntax for scripting use and secondly there are many features they were unable to script like virtual functions.

    The result that the scripting language was more of a C+/- which was badly documented and also very buggy. One of the worst ones I ever found ws actually using compiled code where adding a blank line i.e. just a new line character to the source code caused duplicate symbol errors due to using the C preprocessor to generate a symbol which only differed by the line number the macro was called on!

    Debugging in general was also bizarre because the error messages you got rarely if ever pointed you to the problem and the memory management is also extremely unclear. The only thing which kept it somewhat usable was the development of the python interface...which of course completely undermined the original vision of scripted C++.

    1. Re:Root by cheesybagel · · Score: 1

      I'm happy enough with TCSH.

  42. The best tool for the job by CptLoRes · · Score: 1

    Unless you are in one of those 'multitasking' environments where everybody is feeling very busy but efficiency is crap, you can pretty much stick to the language that best suite the work you are doing.

  43. Re:Is this question from five years ago? by TheRaven64 · · Score: 4, Informative
    There are two things that make people hate Ruby:

    The first is the implementation of the language. You start with Smalltalk, take out the bits of Smalltalk that are difficult to compile, and then end up with an implementation of a language that is slower than something like Squeak / Pharo, which are simple bytecode interpreters. That doesn't fill anyone with confidence in the language. I can understand Ruby not being faster than a JIT-compiled Smalltalk, but there's no excuse for it not having been faster than a reasonable Smalltalk bytecode interpreter from day one.

    Then there's the community. The Ruby community spent a good decade taking 30-year-old ideas and claiming that Ruby had made them possible, that Ruby developers had invented them, and this is why Ruby is so awesome. Rails is a good example of this. ORMs have existed since the '80s. WebObjects was arguably[1] the first ever web app development framework and it included EOF, which did the same thing as Rails in Objective-C (later in Java) and has had an open source reimplementation since the late '90s (GNUstepWeb, later SOPE, the latter of which is used by [Scalable] OpenGroupware.org). Oh, and WebObjects had much better developer tools than Rails, supported multithreading long before Ruby was able to run multithreaded, and was an order of magnitude or so faster.

    [1] There's some disagreement, related to announcement / beta / shipping dates, but it's either the first or second.

    --
    I am TheRaven on Soylent News
  44. Rarely by jandersen · · Score: 3

    I always see a lot of different opinions about programming languages, but how much choice do you really get to have over which language to use? If you want to develop for Android, then you're probably using Java...and if you're developing for iOS, then you've probably been using Swift or Objective-C. Even when looking for a job, all your most recent job experience is usually tied up in whatever language your current employer insisted on using. (Unless people are routinely getting hired to work on projects in an entirely different language than the one that they're using now...)

    Choice? Nowadays not a lot, I think; when I started way too long ago, you would choose a language that was accessible (in my case, one that I could find manuals for), then choose a job that required it. But back then you could get any number of jobs simply for being able to code. I started off with assembler, BASIC and FORTRAN in the 70es when programmers wrote in all upper case, added COBOL and PASCAL (still upper case languages back then) in the 80es, then C. I got into C++ in the 90es (because "The Future Has Arrived, And It Is Object Oriented"), and in the last decade or so I have used a much diverse range of languages - ksh and python for scripting, C, C++ and Java for application development, as well as whatever else was required on occasion. But C has been my main language for most of that time.

    Maybe the question I really want to ask is how often do you really get to choose your programming languages... Does it happen when you're swayed by the available development environment or intrigued by the community's stellar reputation, or that buzz of excitement that keeps building up around one particular language? Or are programming languages just something that you eventually just fall into by default?

    I think most developers really just code with whatever is used in their project, and will be able to change from one language to another with little difficulty. If I should make a guess, I would say that you start off early in your education by choosing the language that best suits your particular sphere of interest - GUI, back-end, kernel or whatever - but you will inevitably get infected by other languages over time. Personally, I have never paid much attention to what is popular or fashionable, but then I'm not a great follower of trends in general; I just use what seems best suitable. I suppose, when you build up your experience, you begin to notice that the differences between all those languages are fairly minimal - there's the old languages that seem to be made of cast iron and concrete, like COBOL and FORTRAN, there's a load of C style languages (including C++ etc), and then there are the "exotic" languages, if you will excuse my choice of words.

  45. Are you confusing languages with platforms? by Torp · · Score: 1

    Most programming languages are the same imperative/OO thing, and after 5 or 6 you just don't care any more. If the project allows, do choose the best one for the job, even if mixing, but don't get too held up on this. As a previous poster said, the main programming language is... English.

    Now switching platforms is another problem, and that can hurt a bit. Still, after a while the pain dulls.

    --
    I apologize for the lack of a signature.
  46. Re:When you pry my keyboard from my cold dead fing by jellomizer · · Score: 1

    I guess you are still working on that project.

    --
    If something is so important that you feel the need to post it on the internet... It probably isn't that important.
  47. Re:Is this question from five years ago? by angel'o'sphere · · Score: 3, Funny

    I looked at the syntax of Ruby once, immediatly hated it, and never looked at it again.

    --
    Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
  48. HOW OFTEN by invictusvoyd · · Score: 1

    DO YOU SWITCH SPANNERS

    1. Re:HOW OFTEN by VernonNemitz · · Score: 1

      It is possible that one must eventually stop switching languages. A major reason to acquire knowledge is to use it. If you are constantly learning stuff, how much using are you accomplishing? About 1974 I had a FORTRAN class in college. There was a mainframe with keypunch machines and punch cards to feed into the computer. I never got to use FORTRAN for anything after college, but must have remembered some basics, because when home computers started being popular in the early 1980s, they all had BASIC and I learned that language very quickly, self-taught. A couple years after that, and there was more I wanted to do than the computer's memory could hold, so I got a book on 6809 Assembly Language and taught myself that. I happened to like that language it a lot, and did some fun projects like modifying the computer's ROM code (it could be EPROMmed) so that a full-screen editor replaced the wimpy line-editor that came with the computer, my new code fitting in the same space as the old code. That was all hobby-type stuff, and then a friend suggested I could help his small business if I learned a BASIC-like language called "CLIPPER", which was designed for database management in the days before SQL, and competed with languages like dBase III and FoxPro. That was interesting and fun; I figured out a way to put CLIPPER code inside a database, and get the program to pull blocks of its own code from the database as needed, and run them. We stopped worrying about the overall size of the program and memory limitations ("640K ought to be enough for anyone", hah!), after that. But the small business was too small and didn't survive, so when another friend mentioned a programming job if I learned C, I got the Kernighan and Ritchie book from the library and taught myself that. Since they say C has all of the advantages and all the disadvantages of Assembly, I liked that language a lot, too. I could reminisce more, but instead I'll just mention some more languages I've used to some degree or other, over the years: QBASIC, Delphi (aka Object Pascal), C++, C#, SQL, 8086 Assembly, GAP, HTML/CSS, PHP, and JavaScript. Sometimes I feel a bit like the character Rufo in Heinlein's "Glory Road", who said something like, "I've forgotten how many languages I know, but when I hear one, I speak it." Nowadays I'm back to hobbyist programming. If any nerds out there are interested in a few rather mental but free JavaScript games and puzzles, built into web pages so accessible by any Operating System on any device that has a modern standards-compliant browser , go here. I'll be adding more in due course, including some multiplayer games.

    2. Re:HOW OFTEN by gmack · · Score: 1

      Do not forget the time lost each time the programmers rewrite the project in a new language. Eventually the software has to actually do things and going from PHP to Python and then to Ruby etc just delays the actual release.

    3. Re:HOW OFTEN by laird · · Score: 1

      I'm not sure why you think anyone would switch languages so frequently they don't release any functional software. I've never seen that happen on any project, other than research where the point was learning the language, not building functionality. :-)

      You don't switch languages for no reason. Generally you only do a full ground-up replatforming of a system very rarely (10-15 years), and then because the advantages of the new platform over the old one are compelling. And there could have been hundreds of releases. For example, converting a system with thousands of users from Citrix/VB/Access to Angular/Node/MongoDB has lots of advantages. :-) But you don't do that sort of thing to a system on a weekly basis...

    4. Re:HOW OFTEN by gmack · · Score: 1

      I wish I lived in your world. I have watched products fail because people kept replacing the software foundation (language database). I've seen programmers change technologies on 2.0/3.0 releases. I've watched programmers run into trouble and then try replacing the language as the means of fixing the issue(it rarely works). Some programmers and their managers are addicted to shiny. At a previous employer one programmer went crying to my boss because I wouldn't let him replace perfectly working C with Erlang.

    5. Re: HOW OFTEN by hackwrench · · Score: 1

      The successor to QBASIC forever. QB64. If it doesn't have a feature you want you are encouraged to learn how to add it to your personal copy and even stand a good chance having it incorporated into the mainline language if you want to submit it.

  49. Right tool for the job by whatUsay · · Score: 1

    Being a software development consultant I get to work on various projects throughout the year. With every new project I tend to choose the language and tools that suit the project best.

    And if you're working on Android, I would say it's worth taking a look at Kotlin instead of Java for your next project.

  50. Re:Is this question from five years ago? by K.+S.+Kyosuke · · Score: 1

    Pharo is not a simple bytecode interpreter anymore. Not even Squeak is, I believe. Nobody who has the option of using Coq/Spur is using the plain VM.

    --
    Ezekiel 23:20
  51. Truely switching? Once a decade ... roughly. by Qbertino · · Score: 2

    I don't do ActionScript anymore (for Obvious reasons) and I've been doing more serious JavaScript lately (same reasons).

    I moved into 'serious' PHP roughly 5 years back and will probably use it for another few years. I do various PLs on the side (C#, Python) but not as a mainstay.

    I've been trying to pick up a truly compiled language (C++) for decades and now will probably finally do so. I generally like to pick up languages I expect to use until the day I die. That's why I only use FOSS PLs - ActionScript was a sole exception to that.

    My 2 Eurocents.

    --
    We suffer more in our imagination than in reality. - Seneca
  52. NEVER by aglider · · Score: 1

    I said it!

    --
    Sent as ripples into the electromagnetic field. No single photon has been harmed in the process.
  53. Everyday by technomom · · Score: 1

    Full stack coding switching between Java, JavaScript. There's a lot of markup (HTML, XML) and SQL in there too.

  54. I code in FORTRAN90 by ctrl-alt-canc · · Score: 1

    and there is no switch statement, it is just called SELECT CASE...END SELECT, you insensitive clod!

    1. Re:I code in FORTRAN90 by DoofusOfDeath · · Score: 1

      C's "switch / case" statement is bush-league. I once worked with a FORTRAN77 program that used a big "indexed goto" statement. My team almost got tattoos to commemorate surviving that one.

    2. Re:I code in FORTRAN90 by OrangeTide · · Score: 1

      gcc's goto addresses(&&) make it easy to generate goto tables at run time. I believe gforth still uses the extension.

      --
      “Common sense is not so common.” — Voltaire
  55. Entirely up to me by jouassou · · Score: 2

    I'm doing theoretical physics, and for the last couple of years, roughly half of my time has been comprised of numerical simulations. I'm free to choose the language I want for the programming part, since the main results that I'm paid to produce are not the simulation codes themselves, but the physical predictions they result in. (In practice, I started this project using Matlab, but it was too slow so I ended up rewriting it in Fortran 2008 for computation and Python for data visualization.)

  56. How often do I *think* about changing? by DoofusOfDeath · · Score: 2

    Every time the C++ standards committee get together.

  57. Ada is still hot (to me) by ryuo · · Score: 1

    Ada is my first love, and it's been my primary language since 1985. Unfortunately, nobody has wanted systems built in Ada since the 1980s, so I've had to settle for Ada dialects such as PL/SQL and PL/pgSQL.I've had to code in the more modern languages as well, and given the contributions these languages make to project failures, I'm firmly of the opinion that if you want a large system built to last, build it in Ada.

  58. Never by Bristol_92 · · Score: 1

    I have never switching programming languages. But does they change themselves over time?

  59. switching languages? by l3v1 · · Score: 1

    It's a stupid question. I never switch languages. I use several. Hell, by the time I finished highschool I was quite fluent in half a dozen. That was 19 years ago, extrapolate. I have favorites, not many, but usually I code in what's easier to do what I want to do, or in what is specifically requested. That's it. The question is still stupid.

    --
    I am putting myself to the fullest possible use, which is all I can think that any conscious entity can ever hope to do.
    1. Re:switching languages? by mlheur · · Score: 1

      I came to say something similar - use the right tool for the job.
      I take it you didn't see the folllow-up question that makes the actual overall question much less stupid: "how often do you really get to choose your programming languages"?
      To that I answer: every time except when working on Skyrim Mods. That's because I program for a hobby and to make my job easier, but it's not my job. When I got out of school I realized I like programming too much to ruin it by getting a job as a programmer, so I went in as an admin instead.

  60. Oh about once a semester... by XxtraLarGe · · Score: 1

    I'm a CIS adjunct, so it changes from semester to semester for me. This summer semester, I'm teaching advanced web design, so that includes JavaScript. Fall Semester will be web programming w/databases, so it will be either PHP w/MySQL or ASP.NET w/MS SQL--haven't decided yet, though I'd prefer PHP. Spring semester is usually an intro to programming course, and is either Java or Visual Basic, depending on where I'm teaching.I also used to teach Unix Shell Scripting & DOS batch files, but those courses were discontinued.

    --
    Taking guns away from the 99% gives the 1% 100% of the power.
  61. Comment removed by account_deleted · · Score: 2

    Comment removed based on user account deletion

  62. Really depends on the context... by Junta · · Score: 3, Interesting

    In my work, we deal with a wide variety (basically a large number of existing projects lead by other groups). So not only language, but style guidelines, processes, everything we adjust continuously to match whatever project we are working on at that moment.

    I have been in other positions where you must not use anything but the one true process, language, and style guideline as set forth by the company standards.

    In terms of when I *choose* for starting new, it's based on the available skills of the team I can put together. Despite all the 'oh language X is better than language Y', 99% of the time it doesn't really matter. You can do most things in any language, so it's most important to select whatever your team is most comfortable with. Yes, the potential performance and resource utilization may be better in some languages versus others, but most of the time with average teams, design choices will matter far more than runtime/compiler differences.

    --
    XML is like violence. If it doesn't solve the problem, use more.
    1. Re:Really depends on the context... by info6568 · · Score: 1

      You can do most things in any language, so it's most important to select whatever your team is most comfortable with.

      This is really important when working on groups. Even more important that the company decisions, because the good art produces good results (when forced to do complex things on not well known platforms, these things become real nightmares).

      But returning to the original question, I think that depends on what you do. For me, it is usual to switch between Bash, C++, Javascript, PHP or even my own configuration languages in an hour when working with multi-tier products. To pretend that everything can or that even "must" be done with only one language is not real.

  63. Frequently is the answer by DrXym · · Score: 1
    It is incredibly important to learn more than one programming language. The best way is to choose some non-trivial project that would be appropriate for a new language and implement it. Repeat and over time you will gain substantial knowledge and experience in a range of languages.

    It's not just all about languages of course since claiming to be a C++ programmer says squat of your ability to write a GUI. And writing a GUI for a desktop is different from one on a phone or on the web for that matter. So breadth of experience is important and feeds into the next thing. It also demonstrates to prospective employers that you are capable of learning new and can adapt your thinking. Even if you haven't learned tech X, you make have skills from tech Y which are transferable.

    1. Re:Frequently is the answer by DavidHumus · · Score: 1

      You are correct that the delivery environment is more different than the language used; similarly, different problem domains have far greater differences than do programming languages. In fact, as many have already noticed, most programming languages are extremely similar. From Fortran to Python, there's a very small difference if you're familiar with languages that are outliers: ones like Forth, Lisp, APL, J and K.

      This is probably not unrelated to the fact that progress in programming languages has been glacial compared to progress in hardware.

  64. Use the right tool for the job by jeepies · · Score: 1

    This is a somewhat silly question. Programming languages are tools and you use the right tool for the job. How often does a carpenter grab a different tool out of his toolbox? As often as he needs it. Your first paragraph gets to the point. If you're programming a particular target, then there's probably one or two tools best suited for it. Use that one!

    Using the head of a screw drive to drive a nail might work, but why would someone do that when there's a hammer?

  65. What is fluency? by bradley13 · · Score: 1

    What is fluent? I haven't quite been programming for 300 years (only 40), but during that time I have certainly been fluent in at least eight languages. Some similar (Pascal/RatFor, C++/Java), others fairly different (Prolog, Lisp). The thing is, there are two aspects to fluency, and the second one is problematic:

    - The syntax and semantics of the language. This is only difficult if you're learning a new paradigm. Once you know a particular paradigm, learning a new language in that paradigm is relatively easy.

    - The built-in libraries, plus whatever external frameworks you need. This is essential knowledge, if you are going to be effective and productive on a particular project. At the same time, this is problematic, because there are zillions of frameworks, and they are continually changing.

    I have always thought that job postings that require a particular language, or a particular framework, are stupid. A good programmer with a broad background can learn what they need in a few weeks (caveat: see the note above about new paradigms). A bad programmer, well, they're useless even if they have experience in some specific technology. Heck, this doesn't even make sense for entry-level positions: New programmers, fresh out of school, are going to require serious training and mentoring anyway, before you can trust them on business-critical systems.

    --
    Enjoy life! This is not a dress rehearsal.
    1. Re:What is fluency? by nmb3000 · · Score: 1

      What is fluent?

      I would expect someone claiming to be fluent in a programming language to be able to sit down, cold, and write code in that language which would compile (or interpret) without syntax error and solve the problem at hand. If interviewing for a job, they should be able to whiteboard with the language without hesitation. If you cannot do this, you are not fluent with the language, but you might be familiar with it. Most people probably will not be fluent unless they're actually writing code with the language on a regular basis. Whether or not a job opening requires fluency probably depends on the amount of time available to get the new hire productive; if they need to learn C++ from scratch that just increases the training overhead, no matter how proficient they are with Smalltalk.

      Frameworks should fall into a separate bucket. As you say, there are hundreds and more all the time. Being familiar with the most common is a good idea, since they're used so often, but experience with a framework should only be a plus and not a requirement.

      --
      "What do you despise? By this are you truly known." --Princess Irulan, Manual of Muad'Dib
      /)
    2. Re:What is fluency? by Pseudonym · · Score: 1

      You'll notice something interesting: My offhand calculation of "300 years" was in response to someone claiming fluency in 60 languages - which derived from my estimate of about 5 years per language to acquire true fluency.

      My exact words were "varying levels of fluency". You may have missed that carefully-chosen wording. If so, then your response makes sense to me now.

      Being able to regurgitate 3 pages of grammar rules doesn't make you fluent in a human language.

      Indeed it does not. The vast majority of human language acquisition is vocabulary, which is what enables you to communicate with other people. Programming languages don't have an equivalent of this.

      I maintain (and I know this from experience) that if you can already program in a modern functional language (say, Scheme or Haskell), Prolog, and are already familiar with the pi calculus model, then you can pick up the Erlang language in an afternoon, and most of the main idioms and gotchas in a week. Admittedly it helps that Erlang is an extremely well-designed language, of course, but it really is that easy. However, to call yourself an "Erlang programmer" with a clear conscience, to be productive in the areas where Erlang shines, you need to know OTP inside and out. That takes months to learn and years to master.

      Like any skill, achieving fluency in a programming language requires a lot of practice - hands on application of the language to your chosen (or assigned) problems, [...]

      Ah, now here's one thing where I think I had an advantage: Compiler writing (which was my "problem" about 20 years ago), as well as fostering an interest in collecting different programming languages just to see what makes them tick, has a special property in that it's almost all algorithms and data structures with a bit of I/O. You are working with the core language and standard library (i.e. not third-party libraries or frameworks) almost all of the time. If your problem space resembles that, it's very possible to know enough about programming languages of all types to be up to speed in a a new language in a surprisingly short amount of time.

      Nowadays, of course, you'd want to use something like LLVM if you're compiling to real CPUs. But even then, it's a matter of learning the native LLVM binding given that you already know half a dozen LLVM bindings.

      If you care about GUIs, networking, databases, mobile, or what have you, then yes, that takes work. However, you would have to do that same work if you were moving to a different problem space anyway. Someone who rightly calls themselves a "C# developer" with 10 years experience might not be as productive as you might hope if you sat them down in front of Unity 3D for the first time.

      --
      sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
    3. Re:What is fluency? by Pseudonym · · Score: 1

      I would expect someone claiming to be fluent in a programming language to be able to sit down, cold, and write code in that language which would compile (or interpret) without syntax error and solve the problem at hand.

      Hmmm... I'm not sure I buy that. Someone who has used a language a lot naturally writes more conformant code, but this isn't actually a useful skill. In almost all programming languages, it's a better use of your time to manually check the intent of the program before feeding it to the compiler, rather than the syntax. Detecting and diagnosing syntax are one of those things that compilers are extremely good at to the point where it's not worth wasting a programmer's time doing it.

      Requiring that someone's whiteboard code is 100% syntax-correct would eliminate many "assertive programmers" (in the Gerard Weinberg sense). Having said that, I think we could all tell the difference between a trivial error that the compiler would catch and someone who really doesn't know what they're doing.

      --
      sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
  66. Re:16+ Languages from FORTRAN to IA-64 by cardpuncher · · Score: 1
    I think my list overlaps - but it covers a similar timespan:

    BASIC, FORTRAN, PL/1, APL, COBOL, BCPL, C, ALGOL, Pascal, Various assembly languages (6502, S/370, PDP-11, VAX), C++, Java, Perl, PHP, C#...

    And at that point, I do care: C# and Java are too confusingly alike-but-different to make a convenient fast switch. It's not just IT - I have the same problem with Dutch and German.

    But maybe that's just because I'm getting old and/or my brain is now full.

  67. Use VHLL for rapid extention by yes-but-no · · Score: 1

    Except in embedded systems and few webscale systems, performance is really not an issue in most software. What is needed is how easy it is for a human to program and extend it. The issues of 90s n before is not there now for most applications. Programming is getting a human thought/idea ..model it into a mathematical problem/model and from there the faster n easier the machine (language) can help, it's better. e.g you say you want a collection of data to be sorted, using some thing as key/ordering; and not care how the machine/language does it for you.

    C may still be good for those embedded/performance critical; for rest I see language like python does the human-idea/algorithm to final-result much faster. It enables you to think in high level data structures/data manipulation and not worry about machine level issues. The higher you can abstract things, the faster and more easily you can extend the software. And s/w is an iterative task; you never know how the system is going to grow; so the easier it is to extend it's better.

  68. itinerant shuffle by epine · · Score: 1

    Just resting: APL
    In my sleep: C/C++, template metaprogramming
    Intermediate: R
    Passable: Perl, Python, shell
    Long past: BASIC
    At least once: Java, Pascal, OpenCL, Lua, VHDL, Snobol, Prolog, Forth, Lisp, TeX
    Thoroughly evaluated: JavaScript

    A few months back I looked at that list and decided I needed to add some tools more concurrency oriented, and something from the functional camp.

    Learning rapidly: Elixir/Erlang/ELM, Go

    My strategy in learning a language is to consume as much material as possible from the language designers, from during the language's actual design process.

    YouTube makes my learning style ten times less difficult to arrange than it used to be. I keep a personal wiki, and I'm an extraordinarily efficient note-taker, so I care very little precisely what sticks in the first pass, so long as I manage to identify the language's motivating ideals and community norms.

  69. Many... by JacobA.Munoz · · Score: 1

    2016 - MS .Net 4.0
    2015 - jsRender, jsViews
    2014 - Raspbery Pi, jQuery UI
    2013 - SVG, d3, RSS
    2012 - jQuery, Ruby, nodeJS/node-webkit
    2011 - Android
    2010 - Arduino
    2009 - Linux (Ubuntu), GTK+, SSH
    2008 - Mono Framework 2.6 (C#)
    2007 - MS T-SQL & Microsoft SQL Managment Studio
    2006 - PHP, MySQL, AJAX
    2005 - MS .net Framework 2.0 (C#)
    2004 - Python, PBasic (microcontroller code)
    2003 - RealBasic (Mac)
    2002 - JavaScript, DHTML
    2001 - MS .net Framework 1.1 (VB)
    2000 - C++, Java, VBA
    1999 - Linux (RedHat), bash
    1998 - Visual Basic, HTML
    1997 - PowerBasic
    1996 - QBasic
    1994 - GWBasic

    ...and I can still fondly remember:
    10 color (int(rnd * 16)): print chr$(int(rnd*127)+127): $k = inkey$; if len($k)=0 goto 10

  70. Only when forced to do so by elgholm · · Score: 1

    I wrote my own scripting language in Oracle PL/SQL (!) a couple of years back, and since then I write as much client-code I can in my own language.
    Why? Because I can.

    Sure, there's the odd project here and there where my clients, or the other "developers" they've hired, tries to force me to use some hocus-pocus-library - in Java/Python/PHP/Perl/you-name-it, which the project "absolute requires", but no one really understand why, or can tell me what it actually does. Essentially everything they try to force-feed me is a wrapper for some normal https-communication with XML/JSON parsing, or some fundamental economical/statistical calculation, but in 100 MB compiled code... I normally just rewrite the stuff I need in my own language, or in Oracle PL/SQL... I understand why I shouldn't "reinvent the wheel again", but I'm old-school, and my wheels turn faster than your wheels, and uses less memory, and has no known security holes, and are not dependent on yada-yada-yada, and... you get the idea.

    I have seen so many "job openings" for people who knows about "programming language X" or "programming language Y" etc etc, and I fail to understand why the language-decision are being made by the guys hiring. Wouldn't it be better to let the actual developers choose? Hire problem-solvers, not syntax-gurus.

  71. Switch? Why switch? by gweihir · · Score: 1

    I have a set of tools, and I use the one I think is best for the job. Sometimes I will evaluate something new or less used, but only if I think it is still a good fit. People that have a default tool and use it for everything may "switch" after a time, but having a default tool that is not a good approach in the first place.

    --
    Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
  72. Re:16+ Languages from FORTRAN to IA-64 by hughbar · · Score: 1

    Yes, I'm part of this thread, as a 65 year old. I first wrote a little FORTRAN program in 1966 to calculate Ï to run on an ICL mainframe that was part of the UK steel industry. Because computer time was so expensive, 'they' (management) wouldn't let it loop and loop.

    On my list is Filetab: https://en.wikipedia.org/wiki/... as mad as Perl and, like Perl, very useful.

    --
    On y va, qui mal y pense!
  73. every 10 years by micahraleigh · · Score: 1

    At 35 I'm a subscriber to the 'switch every 10 years' philosophy.

    Started in C++ in 2004. When I tried moving to Raleigh I found there were too many local C++ developers and too few C++ positions, so I took a pay cut to switch from Linux/OSS/C++ to .NET web stack. The two Linux/OSS/C++ companies are either tanking or have their employees giving very negative reviews and leaving. Five years later I'm making more now, but it was a big shift and I'm not sure I'm going to do it again.

    Think I might switch to R at some point if it gives me an edge on the age discrimination thing.

    Basically I'm flying by the seat of my pants.

  74. Language is the wrong focus by luis_a_espinal · · Score: 1

    How Often Do You Switch Programming Languages?

    This is the wrong focus. A more accurate (and interesting question) is how often do you switch stacks or architectures?

    Embedded programming using, say, the Wind River toolchain can be quite distinct from doing Linux systems programming using the GNU tool chain. And these two are quite distinct from Windows systems programming using (duh) Windows toolchains. And these are all done (typically) in C. Similarly, C++ programming on Linux will be different from Windows programming, and more so when we start adding stacks and libraries like Qt when the objective is to use Qt's higher level capabilities instead of OS portability (which sometimes is not a bad thing.)

    Same with Java. Right now I'm doing core Java, dealing directly with NIO, threading, etc, all outside the safety net of a container. For better or worse, our work does not use OSGI (and that would have been a very distinct type of work if such an architectural choice have been made.)

    That is quite distinct from EE development. Working specifically to stay within a web container can be quite distinct from working on something *that exploits* every nook and cranny off an EE container. Then you can throw Spring (and/or OSGI) into the mix which can cut through every one of these dimensions in the Java world. And let's not get started when you move into a completely different paradigm (say vert.x)

    In Javascript, this is even more radical since modern Javascript (for better or worse) has become some sort of meta-language that sits below a higher-level framework or architecture - be it jquery or dojo or extjs in the recent past, AngularJX, backbone, React and what now in our current times. Each of these poses a learning (and possibly architectural) challenge.

    One sees the same with Python and Ruby to a lesser extend.

    The .NET world provides more continuity in how things are build and a developer can, with relative ease, jump back and forth from C# to Managed C++.

    And in the application space you have an additional dimension - application data storage. SQL or NoSQL. That will change how you design and code.

    So the question that is more relevant is, how often do you change platforms and stacks. Because you could very well be using the same language for 6 years and have experienced a significant development and architectural shift.

  75. Re:16+ Languages from FORTRAN to IA-64 by gfxguy · · Score: 1

    I disagree - you can pretty much do anything with any general purpose programming language, that part is certainly true - but some things are vastly simpler to do using the "right tool for the right job." Only masochists would use Fortran or COBOL for writing a web service, and if you're talking about manipulating copious amounts of textual data, a scripting language like PERL will be a lot easier than C. Of course, if you're writing system scripts, you're not going to want to do it in COBOL. So cringe away - but there certainly are "right tools for the right job." I'm not implying only one language is good as solving problems in any particular domain, but that some languages are simply not suitable (in that it's a lot more work, and a lot more prone to problems) for certain domains of problems.

    --
    Stupid sexy Flanders.
  76. Depends on libraries by g01d4 · · Score: 1

    For anything outside hardware control it depends on which language has the most relevant libraries in the problem domain, where the code you write is simply the glue. You don't want to spend time reinventing the wheel unless it's a hobby or an educational project. No need to switch unless you're changing problem domains.

  77. JOVIAL by Killer+Instinct · · Score: 1

    I didnt see JOVIAL mentioned here yet. My first job out of school required me to program in JOVIAL. It went well...learned ADA, C, C++ after that... Wrote in a few others (took existing code and added functionality or fixed bugs) but not fluent. It feels like once I knew how to program the language didnt really matter. Sure it took a few days to spin up, and maybe a few weeks to get really good at a new language, but there is plenty of online stuff and usually someone else had been around longer then I and didn't mind teaching me a few tricks....in 2010 I switched over to Linux Admin full time. I enjoy it more the programming (after 20 years needed something new) but I could still pick up ADA, JOVIAL, C/C++ and be back in the grove within a few weeks...

    --
    #include bier;
  78. Re:I don't. C for life. by T.E.D. · · Score: 1

    does what I need it to do. Only thing I'd switch to is probably assembly, since that would make the code run faster.

    This suffers under the misapprehension that you, as a human being, will be able to optimize for your processor (likely a pipelined architecture, perhaps with decades of inherited nits in it) better than your C compiler. You could be one of those handful of assembly gods for which that is true (or you could have a compiler with a freakishly shitty optimizer), but that's highly unlikely.

    Of course there will be specific small cases where you might catch it doing something that can be improved, but in the general case assembly-level optimization these days is a problem best left to the compiler. This is why most C compilers have ignored low-level crap like the "register" keyword for years. ("Oh look! The human thinks he can optimize register allocation better than me. How adorable!")

  79. Regularly by Hylandr · · Score: 1

    About every 5 years I am picking up the latest languages that have survived the fashion-burnout because it's what Employers are looking for.

    --
    ~ People that think they are better than anyone else for any reason are the cause of all the strife in the world.
  80. Once every 15-20 years, so far by talexb · · Score: 1

    I started with C in 1981, and used that (with a side-trip to Pascal) till about 1998, at which point I started tinkering with Perl. I have used Perl solidly since then, but just downloaded Go this week and started to tinker with that. So Go could be by next language. Who knows.

  81. Right tool for the job by Arkham · · Score: 1

    I routinely work on iOS (Swift, ObjC, some C), Android (Java, some C/C++), Xamarin (C#), Java Server, and .NET server. Lately we've been using Swift 3 server for some POCs. On the mobile side, you have very limited choices.

    You can do native, which means Java on Android and Objective-C and Swift on iOS. You can do compile-to-native, which for me is C# on Xamarin, compiled to the native languages (C on iOS and C#Mono to JNI to Dalvik on Android) You can do Web-UI or Pseudo-UI with tools that work off Javascript such as Phonegap, Fiori, Titanium.UI, etc, but these generally lead to poor user experience.

    On the server side, your choice is generally dictated by whatever the architect who designed it decided in the beginning (if you are lucky, this was you). Everyone comes in and wants to rewrite the ancient thing that sits on the backend, but it's often not worth it. I love J2EE but it's not what I'd recommend today for a new project. We're actively exploring Swift on the server, but it's not really production ready yet and won't be until the fall at least.

    --
    - Vincit qui patitur.
  82. The first one is the most difficult... by johnlcallaway · · Score: 2

    Once someone learns basic concepts, such as if..then..else, loops, pointers, and recursion for example, many programming language skills come down to syntax, libraries, and debugging. I jumped from programming COBOL for 15 years to C, C++, and Java without any issues, so I'd guess that someone who is a decent developer to begin with shouldn't have too much of a problem shifting gears to most other languages. I've also worked in a smattering of other languages (PL/I, FORTRAN) and far too many '3rd generation' tools. I even once modified code for a proprietary language I didn't even have a manual for.

    Logic, pointer theory, and spatial relationships are probably the hardest things for anyone to understand. Those that can comprehend basic logic constructs and are able to 'see' code in their head can probably easily shift from language to language with ease. Those that struggle with any language probably will have a difficult time picking up new ones.

    I think the biggest deterrent to learning new languages today isn't syntax or how the language works, it's the libraries and associated debugging skills. I had far more trouble learning C, C++, and Java libraries than I did learning the actual language. Modern IDEs make it a bit easier with predictive typing and on-screen syntax checking. But trying to figure out how to read a file or output to the screen can be extremely difficult in some languages because of all the possible options with all of the different libraries. Fortunately, anyone skilled in Google can usually find code examples rather quickly.

    And then there is debugging, which I think is still an art. Many years (decades??) ago, I had a developer come to me with a persistent bug he couldn't fix. After he explained it to me, he started to show me the code. I stopped him, and told him to go look at a specific part of the program, he was missing a period. He thought I was pulling his leg, but left and came back shortly and asked how I knew what the problem was without even looking at the code. I remember saying to him 'Scott .. the only difference between you and me is I've already made that mistake several times'. Debugging, like libraries, in any language takes significant experience to get good at.

    --
    I rarely read replies, it's my opinion and if you thought about your opinion a little more, I'm OK with that.
  83. Horses for Courses / Multiple Times a Day by Jonathan+C.+Patschke · · Score: 1

    My primary work product is a C/C++ manufacturing process-control application with bits of Lua and Perl embedded in it. Surrounding it are some web services, which I generally write in Python and Perl, with the front-ends obviously in Javascript.. There are some backend data-crunching services that process XML, and I've written those in Java.

    A totally separate media-oriented project is a spitball of shell scripts, Perl, Javascript, and C, which I'm slowly replacing with Python, C++, Javascript, and Go. It's less a case of tossing the old code to replace it with something nifty and more the case of refactoring the code into a better-fitting implementation, now that we have a decade or so of use-cases to reflect upon.

    I used to be a "C or GTFO" sort of guy until I realized how much time I was wasting by reimplementing hash tables and B-trees wherever I needed them. Python and Perl are decidedly Not Fast, but if they don't have to be fast, I can save a lot of stress and reduce the technical debt of code maintenance by writing the program in something where the problem domain fits better idiomatically. Sure, Java is annoying, but if you need to fan-out a couple hundred threads of data crunching, and your source data and results are in XML, the only thing that might fit better is C#.

    I once read the suggestion to learn a new programming language every year. Do this. Get past "Hello, World," and at least solve toy problems. If you came from C, your whole world will change when you "get" map. If you came from Javascript, you'll have a whole new appreciation for the machine when you grok pointers. Try writing a piece of code in a functional style in a nonfunctional language (especially C) and discover how the language works against you and your resulting code is woefully inefficient.

    Then, you'll be in a great position to embrace whatever tools you find and select the best one for the task at hand.

    --
    Pining for the days when The Glorious MEEPT!!! graced SlapDash with his wisdom.
  84. Depends on the Day by sick_em · · Score: 1

    I enjoy programming and have gotten to the point where I can pick up and start home projects on a whim. Normal workdays usually involve Python, maybe JavaScript and a heavier language, usually C/C++ or Java, now Scala. Of course build system DSLs are a plenty: make, cmake, autotools, pants, scons, etc. When I home I pick a personal project, with the language depending on the use case. Things that can possibly see the light of day get prototyped in Python. Experiments are usually Lisp or something new that helps solve the issue. Actual code I'm trying to release is Java for Android, C++ for performance, and Vala for home libraries which compiles to C.

  85. The language isn't the problem by AlanObject · · Score: 1

    For me learning the language is only about 15% of the cost. The rest are learning the tool chain, best practices, and above all the usage of the available libraries or class libraries. I'll be nearly any competent C programmer can switch to Java faster than they can make the transition from GtK to Swing.

  86. Still on FORTRAN/77 by tmjva · · Score: 1

    MANMAN software On HP's MPE/iX 7.5

    --
    Tracy Johnson
    Old fashioned text games hosted below:
    http://empire.openmpe.com/
    BT
  87. All the time by neminem · · Score: 1

    I switch programming languages all the time: half the time I'm writing code in C#, the other half the time I'm writing code in javascript. I jump between them frequently, even in the same project! :p [/totally not what you meant]