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?

331 comments

  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 Anonymous Coward · · Score: 0

      So which is it?
      You can't say you don't switch language, and then say you use two entirely different languages.

      I'm going to guess C++, and you've never really learnt C, otherwise you wouldn't think you could say C/C++

    3. Re:So far, I don't by Anonymous Coward · · Score: 0

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

      why do you think you need scripts anyways? or what fundamental difference you think there is between a script and a program? there isn't any.

      and choice? there is no choice, it depends what you want to do or what you get hired to do.

    4. Re:So far, I don't by Anonymous Coward · · Score: 0

      AngelScript!

    5. Re:So far, I don't by Anonymous Coward · · Score: 0

      Not OP AC, but fifteen years for me also C++. I've integrated both lua and a couple inhouse developed scripting languages. I think C++ was the last language I learned not counting the scripting and web languages that took about half a day to pick up enough to do what I needed, like soap, html, xslt if those are even considered languages (??). Prior to this is was whatever the job required where I'd hit all the big ones and a few proprietary languages and even 'wrote' one myself for hardware development.

    6. 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 ;-)

    7. 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
    8. 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.
    9. 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.

    10. 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>

    11. 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.

    12. 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.

    13. 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.
    14. Re:So far, I don't by Anonymous Coward · · Score: 0

      If it's Turing Complete, then it's a programming language.

    15. 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.

    16. 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?

    17. Re:So far, I don't by Anonymous Coward · · Score: 0

      I don't believe you.

      C is a programming language.
      C++ is a programming language.

      C/C++ is not a programming language. They are totally different things. Just because one has mostly backwards compatibility doesn't mean they're the same language. You don't say "C/Objective-C," do you?

    18. 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.
    19. 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.

    20. 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.

    21. 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.

    22. 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++.

    23. 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.
    24. 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.

    25. 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...?

    26. 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
    27. 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.
    28. 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.
    29. 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.

    30. 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).

    31. 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.

    32. 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.
    33. 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.

    34. 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.
    35. Re: So far, I don't by Anonymous Coward · · Score: 0

      I don't get it. Does what he made work or not? If it doesn't then change his password and shut it down. If it does then why are you bitching? If you don't like it, rewrite it. You would have had to anyway if he never made it to begin with. Many times just because something isn't pretty doesn't mean it doesn't work. 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?

    36. 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.

    37. 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.

    38. 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.
    39. 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.
    40. 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.
    41. 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.
    42. 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.
    43. 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.
    44. 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.
    45. 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.
    46. 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. Since I love to program and also do it as a hobby by Anonymous Coward · · Score: 0

    Maybe the question I really want to ask is how often do you really get to choose your programming languages...

    Since I love to program and also do it as a hobby, every time I start a new hobby project or go looking for an open source project with which to get involved I have the opportunity to switch languages. Specifically, if I want to learn a new language I'll typically go find a book, read it, then either start a new project or find an existing project with the specific aim of exercising the language that currently interests me.

    At work it's pretty much Java all the time (with a little Python thrown in for good measure), but then it is a solid language so I don't mind it very much at all.

  5. 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.
    2. Re:I'm an agnostic by Anonymous Coward · · Score: 0

      Exactly. I switch languages multiple times a day if the job requires it. C++ or C# back-end code, Javascript client-side code, Bash or Python scripting . The occasional bit of Objective-C.

    3. Re: I'm an agnostic by Anonymous Coward · · Score: 0

      I use the language my boss tells me to use for the engagement. Java/C++/.NET/JS (yes, it's scripting) /XML/SQL / PL-SQL.

      Being a generalist sucks

  6. 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 Anonymous Coward · · Score: 0

      This is true.

    2. 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.
    3. Re:How many pieces of hardware are in the system? by Anonymous Coward · · Score: 0

      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.

    4. 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.

    5. 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.
    6. Re:How many pieces of hardware are in the system? by Anonymous Coward · · Score: 0

      What I mean is that usually if you can use C, you can use C++ too, nowadays people are programming Arduinos (AVR) in C++. In my opinion C++ is a much more pleasant language than C (classes, namespaces, references, const, etc.). Of course if you try to go crazy with template black magic your code won't probably fit the available memory.

    7. 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.
  7. Depends by Anonymous Coward · · Score: 0

    How often I switch projects and whatever's the best language to do it in.

    Pointless being tied to one and limiting oneself.

  8. 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 Anonymous Coward · · Score: 0

      Those quirks and idiosyncrasies extend to each languages respective standard libraries, and the differences in those and the amount of gotchas is huge.

    4. 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});
    5. 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});
    6. 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.

    7. 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});
    8. 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.

    9. 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.
    10. 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
    11. 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
    12. 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
    13. Re:Well... by Anonymous Coward · · Score: 0

      No the libraries are very different. If they were the same then it would be trivial to write a transpiler that mapped java classes to dotnet classes. Even somethign as simple as an iterator is very different between the two.

    14. 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
    15. Re: Well... by Anonymous Coward · · Score: 0

      What, he's right, aside from typing "un" instead of "in". My last job was C# for new dev work, but loads of legacy VB.net. New starters without vb.net experience would pick it up immediately, with outbursts of "Eww, that's horrible" when they bumped into their first use of generics or anonymous delegates.

    16. Re: Well... by Anonymous Coward · · Score: 0

      Where you've been is not the same as where you're now.
      Can you tell me with a straight face that you can sit down and write something in all those languages right now?

    17. Re: Well... by Anonymous Coward · · Score: 0

      If you've been programming a while, you'll find its a just question of remembering each languages quirks and idiosyncrasies.

      Once again, being familiar with the quirks and idiosyncracies are *what makes you fluent.* Fluency is described as being able to speak, read, write a language in an easy and accurate manner. In other words - it's pretty "natural" to you.

      You are NOT fluent just because you know that perl requires a semicolon at the end of its lines, and python has some strict rules about indentation.

      It is impossible to be "fluent" in 60 programming languages for the same reason it is impossible to be "fluent" in 60 human languages, unless you're C-fucking-3PO: you don't have the time to have become fluent in all of them, because becoming fluent requires you to be familiar with, and comfortable with, all of the idiosyncratic quirks of the language.

      I know French pretty well - many years of study, and a mother & grandparents who are and were fluent speakers. French is derived from Latin, and very similar in many ways to Spanish, Portuguese, Romanian, Italian, Catalan, Provençal, and Romansh. But my knowledge of French does NOT make me "fluent" in any of those other languages. I can muddle through text written in any of them with a dictionary and some patience, but that does not make me fluent.

    18. Re: Well... by Anonymous Coward · · Score: 0

      You wrote, "to varying levels of fluency." Unless you meant:

      "I speak 2 or 3 with a reasonable degree of fluency, and then 57 or 58 with only enough fluency to "Hello World!", then you are still full of shit.

    19. Re:Well... by Anonymous Coward · · Score: 0

      They are. In fact, they're exactly the same. The same instance, even. VB.Net and C# both compile to MSIL (bytecode for .Net CLR), and both vbc.exe and csc.exe use the same set of installed libraries to compile against. Usually these are located in C:\Windows\Microsoft.Net\Framework[64]\{framework-version}\. The GAC keeps these copies ready for reference, loading, and use even when they're not located in PATH (and they aren't by default).

    20. 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
    21. 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});
    22. Re:Well... by Anonymous Coward · · Score: 0

      Yes, the libraries are the same. The languages have different syntax, terminologies, and features however. The most glaring (apart from the OO differents) that comes to mind is VB.NET's support for XML literals and control over strong types (option strict) and explicit declarations (option explicit).

    23. Re:Well... by Anonymous Coward · · Score: 0

      The libraries in all .NET languages will be the same.
      For example, System.Drawing.Color is still System.Drawing.Color vs java.awt.Color in java.

    24. Re:Well... by Anonymous Coward · · Score: 0

      >No the libraries are very different. If they were the same then it would be trivial to write a transpiler that mapped java classes to dotnet classes.

      You know that this exists in both directions, right?

  9. 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--
  10. Is this question from five years ago? by xxxJonBoyxxx · · Score: 0

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

    In my (corporate) neck of the woods, people have been flocking to Xamarin (C#-based) for multiplatform mobile development for the past two years. Final tune-ups can be performed by a limited number (or contracted) platform-specific folks, but not much original "guts of the code" is being developed on "just" Android Java or Apple's proprietary languages these days.

    1. 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.

    2. Re:Is this question from five years ago? by Anonymous Coward · · Score: 0

      I'm using Ruby for absolute shit code,

      Fixed that for you.

    3. 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.

    4. Re:Is this question from five years ago? by Anonymous Coward · · Score: 0

      I'm using Ruby for portable code, and plain C for Android-only.

      Why don't you use Ruby for Android? Not portable enough?

      Is it that it isn't really portable or that the performance is too bad to be practically portable?

    5. Re: Is this question from five years ago? by Anonymous Coward · · Score: 0

      And why's that?

    6. 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.

    7. 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...
    8. 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
    9. 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.
    10. 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
    11. Re:Is this question from five years ago? by Anonymous Coward · · Score: 0

      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.

      Xarmarin is not a programming language. Its the name of a company/product recently purchased by Microsoft. Xamarin lets you write apps for Android and iOS in C#.

    12. Re:Is this question from five years ago? by Anonymous Coward · · Score: 0

      I don't hate Ruby but whenever I took a look at it, I found nothing special. It just looks bland and uninspiring, like any slow dynamic language that has similar features but none of the advantages that e.g. CommonLisp offered in the 90s already and with none of the academic coolness that functional languages like ML or Haskell have .

      So I never found a reason to use it, neither a practical nor an intellectual reason. It's just one of those "duh, I guess it gets the job done for the folks who use it" languages.

    13. Re:Is this question from five years ago? by Anonymous Coward · · Score: 0

      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.

      I suspect you're talking about the post-Rails Ruby community. I got no such impression back in 2003-2004, when Rails did not yet exist and its hypetrain had not brought carfuls of new developers to Ruby.

    14. Re:Is this question from five years ago? by Anonymous Coward · · Score: 0

      I like ruby, the language. It was the first object-oriented language that made sense for me. (Maybe I shouldn't have started with the early versions of perl5 and MASM, M$'s macro assembly with added objects...) Yes, it is slow; when I tested it on regex bashing a 15MB text dictionary, about 1/3 the speed of perl. But if I can write something fast, get a coffee while it is running and still be able to figure out what the code does when I get back, that'll do.
      The community, however, that's just arrogant, hostile, just all-round avoid.

    15. Re: Is this question from five years ago? by Anonymous Coward · · Score: 0

      Perl?

    16. Re: Is this question from five years ago? by Anonymous Coward · · Score: 0

      It's a tool suite as well as a company. As a tool, it allow you to write iOS and Android apps using C# as the previous poster noted. Is it write once, run on either platform? Not quite. The code had been bloated because of the runtime. I would be interested in knowing if they solved that problem.

      Personally, I would like to see Google adopt Swift and bridge the Android libraries. Still won't be write once - but it's a whole letter better than C#.

  11. 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 Anonymous Coward · · Score: 0

      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.

    2. 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.

    3. 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.
    4. 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.
    5. 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.

    6. 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.
    7. 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.

  12. JavaScript by Anonymous Coward · · Score: 0

    I assume you don't include switching between JavaScript and PHP / C# / Java. That would be many times a day in my case when I'm working on a website. But I also have another contract where I use Node.js and Unity, so in that case the switch between JavaScript and C# is really a different context.

  13. Never by Anonymous Coward · · Score: 0

    I don't switch programming languages, I learn new ones. I know C, C++, Objective C, Fortran, Java, G (Labview), Python, Mathematica, Ladder logic, GLSL, OpenCL kernel language , Logo, Basic, php, JavaScript, lisp, and more than likely things I've forgotten about. Hell I created my own custom language interpreter in g. I apply what I've learned from every programming language to solve problems in whatever language I'm currently working in.

    If you are asking when to change languages you're asking the wrong question. I never switch languages I only learn new ones.

  14. 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.

  15. Re: When you pry my keyboard from my cold dead fin by Anonymous Coward · · Score: 0

    Twice a day

  16. As often as I'm asked to by Anonymous Coward · · Score: 0

    Approximately every 3 months I switch "main" language. In the last 12 months I've worked in Java, C++, Python, and C# depending on whichever project my employers see fit to have me on next.

  17. A better question by Anonymous Coward · · Score: 0

    How often do you tackle a project using a language you haven't touched in years to dust off your knowledge and demonstrate your fluency?

  18. 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.

  19. 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.

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

    Comment removed based on user account deletion

  21. Do Domain Specific Languages Count? by Anonymous Coward · · Score: 0

    For what I do, a lot of problems are more easily solved through domain specific languages than constantly using a general programming language. So I might make a small framework in a standard language, but all the important stuff is all defined in human readable text files. Like: Default 20min operation timeout, Start operation XX, Start operation YY, Wait for operation XX to finish, etc...

    The best part of that is if you develop each command as a module than you can reuse them on other projects. The interns kind of hating having to learn all the modules, but having them saves a ton of development time. Code reuse when done right is extremely efficient.

  22. 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 Anonymous Coward · · Score: 0

      It's not a question of switching, it's adding another tool to the toolbox.

      Yes! This man or woman needs to be modded to +6 and beyond.

    3. 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.
  23. 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 Anonymous Coward · · Score: 0

      JavaScript libraries are constantly being reinvented!

    2. 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..."
    3. 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
    4. Re:Man, I'm glad I got out of IT by Tablizer · · Score: 0

      having my knowledge obsoleted and being forced to learn new things

      While this may come across as get-off-my-lawn-ish, I do largely agree because most of dev is catering to fads or ideas over-sold beyond their useful niche.

      It used to be OOP that was over-hyped, and after a while people learned it's good for some things but not everything.

      Now JavaScript, Functional Programming, parallel programmimg, and databases lacking joins, group-by, and ACID are being hyped. They have their place, but it's not everywhere.

      And there is pair programming and all variations of agile shit. And don't even get me started about UI (non) standards, I'll rant for days.

      Commercial entities don't make money if everything stays the same such that there is a financial incentive to hype fads. The IT industry is full of bullshit, and we waste a lot of time chasing bullshit, buzzwords, and eye-candy instead of doing useful work. The Ferengi's are in charge and have the Vulcans by their pointy balls.

    5. 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.

    6. 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.

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

      That would be an MBA.

    8. 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!

    9. 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.

    10. 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.

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

      The IT industry is full of bullshit, and we waste a lot of time chasing bullshit, buzzwords, and eye-candy instead of doing useful work.

      Could not agree more. What strategy would you recommend for a software developer to stay relevant (as s/he will be judged by recruiters let's say)?

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

      I went into actually engineering and prefer it much more. Unless you're in R&D things change at a slower pace (and even there things are much more structured and planned out). Part of this is because nobody wants unproven equipment running in their plant, maybe because they don't have tons of venture capital to burn and need to be productive instead.

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

      > to start all over at square 1.

      I see one of your languages is VB.

    14. 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'
    15. 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
    16. 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.

    17. 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).

    18. 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..."

    19. 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.

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

      Well, you're close to correct.

    21. 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.

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

      I have seen the difference between developing in a stable environment and developing in an environment where the next wonderful new must-have is always appearing at the horizon. In the first environment people spent their energy on building business applications, in the second environment a shocking amount of energy was spent on the platform that could have been spent on business needs. That is not an improvement, change for the sake of change is idiotic, stability has value. New developments should be adopted at a pace dictated by the needs of the business, not by the needs of the party selling development tools.

      Not all knowledge becomes obsolete, but to be able to apply it in rapidly changing environments you still need to constantly learn a lot of new stuff, and chances are that when you grow older at some point you'll find it it going too fast to keep up. And people who can (still) keep up with the pace are wasting loads of energy too, although they may not be aware of it because they haven't experienced working in a stable environment.

      You are clearly either too young or too stupid to realize that.

    23. 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.

    24. 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.

    25. 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.

    26. 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 ;-)

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

      Things you learn are never "obsoleted". Ever.

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

      Pointing out stupid and ridiculing it is a public service.

  24. I only program in solder by Anonymous Coward · · Score: 0

    I don't change.

  25. Switch? What do you mean, switch? by Anonymous Coward · · Score: 0

    I'll use whatever I feel like, or think best fits the program, whatever is available, or whatever the job requires. Asking how often I "switch" is asking how often a tinkerer "switches" toolsets between woodworking, metalworking, electronics, house painting, house cleaning, cooking, you name it.

    The analogy of a nearly but not quite entirely unusable toolset is an apt one, and in that light it's quite amazing people try so hard to make it work against the odds. Me, I'm not about hammering the problem into my preferred solution providing tool by any brute force necessary. I'm about finagling a solution from the grasping hands of the problem without it realising it's been robbed. That's an entirely different mindset, and one in which the posed question has no meaningful answer. So, if this is the question you feel the need to ask, now you know what your answer ought to be. Curiously, there are a few other languages with "fits all problems" mindsets and corresponding toolset analogies. The one with the moustaches, for example.

  26. 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.
  27. An even better question by Anonymous Coward · · Score: 0

    How often do you want to get fired for whipping up something in a language nobody else in your department is familiar with, simply because you thought it would be a fun exercise in "dusting off your knowledge and demonstrating your fluency?"

    1. Re:An even better question by OrangeTide · · Score: 0

      This is the reason I give when I suggest to the SW director to fire anyone who starts using Python at work.

      --
      “Common sense is not so common.” — Voltaire
  28. 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.

  29. Many times a day? by Anonymous Coward · · Score: 0

    Seriously, right tool for the job you're doing. I script things in various languages and write low latency C++ at the same time. Who gives a shit?

  30. 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

  31. 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.

  32. Pretty much never by Anonymous Coward · · Score: 0

    I can do all that I need to with JavaScript/Node.js and PHP. Can code in a variety of other languages (perl, Python, C/C#), but never saw the need to switch really.

  33. 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 Anonymous Coward · · Score: 0

      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.

      I get your point. I really like Python, but not crazy about C++. If you had to, would you consider switching from the Python & C++ combination to a Python & some other language that would have the same combined strength?

    5. 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.
    6. Re:How many times do you switch back? by Anonymous Coward · · Score: 0

      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.

      Turn in your geek cred card at the door on your way out. PHP shouldn't be used unless the application is expected to have no more than 100 users. And I know that some foolish companies have banged against PHP and thrown enough hardware at the problem to make it work but that's a bit like constructing a skyscraper using only wood. Perhaps its possible and even impressive, but shows a distinct lack of wisdom.

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

    8. 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.

    9. 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.

    10. 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.

  34. What kind of question is that? by Anonymous Coward · · Score: 0

    Perhaps Slashdot needs a new motto?
    Slashdot news for script kiddies.

    Computer scientists and engineers select the right tool for the job. Programming language doesn't matter as much as being able to solve the problem or task efficiently.

    1. Re:What kind of question is that? by Anonymous Coward · · Score: 0

      Computer scientists and engineers select the right tool for the job. Programming language doesn't matter as much as being able to solve the problem or task efficiently.

      That's a cool sentiment, but in the business world, programming language is selected for a variety of reasons -- "best tool for the job" is hardly the greatest concern.

      You've got your top-down reasons like which language has the cheapest programmers or which language the business is already using or which language the CTO was recently dazzled by.

      Then you have your bottom-up reasons, like which language cult the current staff belongs to (e.g., javascript, rust, clojure, etc.), or which language the staff wants to pad their resume with before they leave.

      Thankfully, there are enough languages out there which are good enough for most jobs, so despite really trying to screw over themselves, the IT industry can usually manage to limp along anyway.

    2. Re:What kind of question is that? by Anonymous Coward · · Score: 0

      Yes they do. And most programmers aren't computer scientists and engineers, so they have absolutely no control over language chosen. They just work until they are made obsolete and then, if they are lucky, switch to the next language chosen by people who matter.

  35. In some places, you do have a choice by Anonymous Coward · · Score: 0

    The company I work for has many infrastructural services and is actually quite open to alternatives. Once we were all Ruby and Java, but now we have a group developing production code in Kotlin and a production service written in Elixir. These newer languages have internal champions who worked really hard to establish that there was value and that there were not big risks.

  36. I don't know... by Anonymous Coward · · Score: 0

    ...I've been programming in Fortran on cards for 50 years so I can't tell how often I swap until I pick up one of them new fangled languages like APL. If that happens in ten years, then I can answer "60 years" but until then, I have no idea.

  37. 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

  38. 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.
  39. 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
  40. 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.

  41. 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.

  42. 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.

  43. Whenever I want by Anonymous Coward · · Score: 0

    Lisp, Python or C# by choice. I'm moderately fond of ObjC and Swift.

    C#, Python and JS for work, occasional PHP if I'm unlucky.
    SourcePawn (ugh) or LPC (MudOS) for funnies.
    Perl when I'm too lazy to port legacy stuff to something maintainable.

    Started programming in Turbo Pascal, moved to Turbo & Netwide Assembler, then Lisp, LPC, C, C++, and onwards. First professional programming job was in PHP, of all things.

    Overall preference: Python, since there's almost no mental translation happening. It maps very closely to the way I structure code in my head.

  44. 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!
    3. Re:Many times daily by Anonymous Coward · · Score: 0

      There is no such language as C/C++.

      Writing it like that shows extreme ignorance of both C and C++

  45. 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.

  46. 3 times per lifetime by Anonymous Coward · · Score: 0

    BASIC -> Pascal -> C -> grave

    1. Re:3 times per lifetime by Anonymous Coward · · Score: 0

      Yeah i heard grave is the shit. Everyone will try it once!

    2. Re:3 times per lifetime by Anonymous Coward · · Score: 0

      When us old programmers die, we go to the big mainframe in the sky.

  47. As often as I have to change my underwear. . . by Anonymous Coward · · Score: 0

    when you pry them out of my cold dead hands.

    Uh, wait a minute.. .

  48. Some changes are easier than others. by Anonymous Coward · · Score: 0

    You can change or add a language on the job and then apply for a position in a new job.
    Some positions don't expect to hire people profficient in a specific language. Mainly in large companies which can afford a significant ramp up period or companies using rare languages.
    I did various small jobs doing C and Pascal. Including translating PL1 to C. My first real full time position after graduating was in Java and I more or less stayed in that world for the last 13 years. I did a foray doing a non hands-on position in C#. And currently write Scala which largely grows from Java developers. Though I write small amounts of code in many languages.
    My wife on the other hand did 8 years of developing C++ on windows at various companies and was feeling stuck, believing thus isn't a technology stack with much future in good companies. But eventually found a position doing Linux kernel development and then transfered internally to a Python position.

  49. 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...
  50. 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 Anonymous Coward · · Score: 0

      I hate the whitespace requirements of whitespace. I don't use malbolge because I'm not smart enough. I'm never going to use lolcode because I hate cats.

    2. Re:Don't be Dogmatic by Anonymous Coward · · Score: 0

      What about brainfuck? I code all my government apps with it.

    3. 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.

    4. 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.
    5. Re:Don't be Dogmatic by Anonymous Coward · · Score: 0

      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).

      For the Algol class of programming languages, this is a given. But try the exotics like Prolog (No loops), Notes Macro Language (No loops, either, and a very sick language concept that took even me quite some time to master), or VHDL/Verilog - which are a totally different beast, totally ourdated language structures, lack of about any modern programming concept, and, by the very principle of what they are doing, hard to grok cause-and-effect relations.

      And while programming languages are one thing, as soon as you have to work with assembler variants, it is a totally different game.

  51. 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 Anonymous Coward · · Score: 0

      starting with punch cards

      They're called HOLLERITH cards, newb.

    3. 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!

      :-)

  52. Whatever was needed mostly by Anonymous Coward · · Score: 0

    Before college, it was some Pascal because that's what the client was already using. That was in the client's apartment.

    During college, a professor had some existing Fortran code needed to be worked with. There was also a project out of a guy's livingroom that I prototyped in Basic and then my friends came onboard, said WTF man this needs to be assembly langauge. They were right so we made it so. Other projects were in assembly language and C because, we were working directly with the hardware mostly. Oh and there was a little Pascal for some classic MacOS apps.

    Towards the end of college and right after it was classic MacOS apps using C++ (MacApp framework).

    A few years later Java came along and our team decided to move to that.

    Then I joined PayPal and it was all existing custom C and C++. Eventually there were 100% new projects using Java and I was all on that, going back and forth from day to day between the old C/C++ and the new Java code.

    After PayPal, I had a chance to learn and use Python at a small startup that had some code needing an owner. Alas they ran out of money and shut down. The next two employers had existing Java code needing attention.

    Next language will likely depend on what the employer needs but, I have zero interest in PHP!

  53. All the time by Anonymous Coward · · Score: 0

    At work we code in Java, C, C++ and Python. We simply choose the language best suited for the task at hand. Of course, many stick to the parts written entirely in Java or C++, but some of us shuffle around, but sometimes we have to make functionality, which are best spread between languages.

    In my oppinion a good programmer can easily cope with different languages - and will be better from it because you can be inspired from how things are done over in the other language.

  54. Hourly by Anonymous Coward · · Score: 0

    Mostly its Systemverilog, tcl and c for me but now and then a script in bash, ruby or perl. And then there xml, makefiles, lisp and several custom formats on top of that

  55. Rarely.. by RightSaidFred99 · · Score: 0

    I pick what I like and use it, currently. For UNIX stuff that means Python, though I'm forced to use Perl a lot as well. For Windows stuff or if I have carte blanche I use C#/.NET.

    I think if you're really good in two languages and can swing back into another one or two that you're "rusty" at, you're fine. This cock measuring contest about knowing 15 languages is fucking silly and childish.

  56. Whatever the job / project requires by Anonymous Coward · · Score: 0

    Currently I prototype personal projects in Python or C# depending on the need. Javascript for now-rare-to-me web dev. At work, 99% Python because Openstack.

  57. 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

  58. Re:I don't. C for life. by Anonymous Coward · · Score: 0

    You think, but it's unlikely to be the case now days.
    Compilers and Binary JIT optimizers can make optimizations you could never imagine were possible.
    The days of hand optimizing assembler for programs are over with. Only place that skill is particularly useful or relevant is in toolchain development.

  59. 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

  60. Re:I don't. C for life. by Anonymous Coward · · Score: 0

    Would it? I wasn't ever able to write better assembly code than GCC with O1 and I guess it is the same for many people. Super scalar CPU is hard to optimize, how am I supposed to know that generated ASM code with 2 times instructions and 1.5 times cycles required for all of them will execute in half the time compared to my own hand-written code?

  61. Re:I don't. C for life. by Anonymous Coward · · Score: 0

    Compilers are good for the mainstream architectures.
    For fringe architectures you have to be happy if the compiler generates code that does approximately what you intended.

  62. 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.

  63. 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.

    1. Re:Fairly regularly by Anonymous Coward · · Score: 0

      I agree with you, C++14 is awesome, but it also a very complex language, I new hires have real problems dealing with it.

  64. 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.

  65. 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."
  66. Re: When you pry my keyboard from my cold dead fin by Anonymous Coward · · Score: 0

    8051 needs to die! $5000 for a compiler to write for texas instruments current bluetooth chips...

  67. English by Anonymous Coward · · Score: 0

    Not sure about you guys, but while I've used everything from Basic to Bash to C family, and every language Du Jour of the past 20 years all the way to in house DSL's when I need to perform implementation tasks.

    But when I do the real work of programming I do this shit in English.

    Programming isn't a single task. It's a series of actions involving asking questions regarding requirements and seeking out the best answers to those questions.
    The process of answer seeking usually reveals the right language for the particular sub task at hand, but rarely is a program so trivial it is composed of a single subtask. So we end up with a mix of whatever languages will produce the best results for the tasks they need to handle.

    I've been involved in writing everything from special purpose drivers for microcontrollers and smartcard apps that need recover from tearing (someone pulling the card out prematurely) all the way on up to mission critical corporate infrastructure where downtime can be quantified not in hours but in kilodollars per minute.

    Furthermore, I find that the longer I do this professionally the less satisfaction I obtain from being an implementor. I'll learn a new language as it's gaining relevancy, so I'm in the loop and understand what's creators envisioned it's usecases to be. In general thoug most languages are general purpose DSLs and as such really do have limits to what you can do with them before you are no longer using the best tool for the job and start to produce a maintenance or security nightmare.

    Rarely have I used any single language to pull it all off except English. Whether I'm asking questions of my customers, or explaining what we need to do to my subordinates, it's English all the way. :D

  68. 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 Anonymous Coward · · Score: 0

      Weird that they were unable to script virtual functions, though. They are fairly easy to implement if you don't need high performance, only really hard if you want dynamic dispatch to be as static/compile-time as possible and fast.

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

      I'm happy enough with TCSH.

  69. 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.

  70. 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.

    1. Re:Rarely by Anonymous Coward · · Score: 0

      I agree. I started coding at my first job out of school in 1981 in RPG on an IBM System/34. Now I am on an IBM i and 35 years later I still code in RPG. I will retire coding in RPG, and then probably do consulting in RPG.

      The language has changed ALOT! But businesses always have need to keep their software running. I have jokingly told many people that my skills are so out of date that they are in style again. This is not exactly true since my skills are very up to date with the current practices within the language. When I started there was no Internet, at least not for common folk. Now I can build web services and communicate with most anything while still using RPG. For me, my skill set keeps me in demand so there is no real need to switch. I am in demand because of my advanced skills in my language - if I switched languages I would start all over at the bottom of the supply chain. No thanks.

  71. 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.
  72. 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.
  73. Half dozen times per day by Anonymous Coward · · Score: 0

    C# to Java to ANSI C/C++ to Python and back.... pretty much every working day....

  74. 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.

    6. Re:HOW OFTEN by Anonymous Coward · · Score: 0

      It's a good idea to develop in one language and debug or verify in another language for objectivity. Thus Python or Focus are frequently used for verification.

    7. Re: HOW OFTEN by Anonymous Coward · · Score: 0

      Switching language is like switching from French to German or English to Spanish. You switch because it's the best library or it's what is used at some place, but add to that using it because it's the best tool to do the task. Python can quickly tie things or script efficiently, assembler is what can optimize very important libraries, C is almost universal, etc

    8. Re:HOW OFTEN by Anonymous Coward · · Score: 0

      It's possible, but so far, I haven't found it to be highly probable.

      Learning a new language allows you to see new ways of doing things (assuming you learn some of the ins and outs). Every language designed was made because someone couldn't do what they wanted in an existing language / vm. Ok, so every serious language (leaving out the ones which are obviously just there because some people have a sense of humor (eg Shakespeare) and some people have a twisted sense of humor (Perl... ehm, I mean, whitespace!, yes, whitespace! (: ).

      The point is this: every time I've learned a new language, it's shaped how I write the languages I already know. F# changed how I write C#. C# changed how I write Javascript, and so on and so forth, turtles all the way down. Sometimes learning a new language makes me appreciate the features I already know in other languages (I'm looking at you, R), sometimes learning a new language teaches you new respect for formatting and "just getting along" (Python). Sometimes a new language teaches you about constraints (Lua), sometimes about being mad careful about memory (C/C++), sometimes it's about what can be cobbled together (ie, quick wins) -- bash/zsh/sh. Sometimes it's about understanding the lowest-level stuff (asm, IL), sometimes about dealing in sets instead of procedures (SQL, R). Sometimes it's a reminder that more words may initially seem more readable, but just become a PITA (VB/VB.net) or that even if a language seems like it's "for dummies", you can still accomplish the same thing as more "respected" languages (VB/VB.net again). Sometimes learning a language makes you learn how to listen very carefully to its proponents: (Tcl: "everything is a list" and "everything is a command" -- when that truly sinks in, there's a blinding moment of clarity; it takes a day or two). Sometimes a "language" is just descriptive (document languages: HTML, XML, JSON, YAML, CSS) but sometimes they can be bent (XSLT). Sometimes a language teaches you to embrace the warts for all the cool stuff (Javascript) and sometimes a language tells you about how it was designed when you have seen some of the others that inspired it (Ruby). Sometimes a language seems more long-winded than it actually is and pleasantly surprises you (Java, particularly v7 on Android had some nifty tricks up its sleeve). Sometimes hacking something in a language gives you enough chills to not want to go back there (for me: Erlang, though I'm open to trying again) -- and even that is a positive learning experience.

      There's not one of them I'd wish to unlearn to get the time back. Indeed, I'm trying to get together the self-motivation to learn either Rust or Go -- no particular reason other than perhaps it teaches me how to use my current tools better.

  75. Re: Programming languages by Anonymous Coward · · Score: 0

    I've nearly mastered Windows XP.

  76. Re: When you pry my keyboard from my cold dead fin by Anonymous Coward · · Score: 0

    Isn't that a TI problem, not 8051 problem?

  77. 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.

  78. Twice by Anonymous Coward · · Score: 0

    Between the early 90's and today, I've switched from machine language to C and C++, and recently to Python. I don't think I will switch to another favorite any time soon.

  79. Sounds like my gripe with language standards... by Anonymous Coward · · Score: 0

    Between dropping traditional C support in C compilers around '00, to all the new breakage thanks to C++11 compatibility in C11 for legacy code, to various library related breakages as a result of the above, ugh!

    Once you have standardized a language it should NOT change. If you need a new revision due to failures of your definition, then you should treat it as a wholly new language and NOT shit all over the legacy code, causing hundreds of new issues of 'legacy code', 'transition code', and 'new code' all of which work fine on their expected compiler versions, but all of which fail if you try and move them backward, forward, or onto the only compiler release that works on your one esoteric processor that wasn't supported before, and now isn't supported after.

    While somebody will no doubt say 'You have the source, you can fix it!' How many people practically have the knowledge AND time to deal with fixing their compiler's hardware support, their code, and any programming/language definition mistakes that are/were/will be in their compiler toolchain?

    Just as examples, both gcc and clang STILL miscompile certain snippets of code 20+ and 10+ years later meaning the two compilers may not be interposable for non-trivial programs and breakage that occurs may not be visible until it is too late. Combine that with different standard c++ libraries, different c++ versions, different c versions, and different years of code generation and you can end up with a morass of corner cases that all subtley break just enough that somewhere down the line you find out you have tons of garbage data that was just close enough to keep working, but not enough to give you the results you needed now, years later, with no easy way to recovery. Sure this is a stretch of an example, but the bugs are all there and I'm sure more than a few of you have run into many of them when bringing legacy code up to compliance, or rewriting modern code to compile on a legacy system. How do *YOU* do it?

  80. Re:I don't. C for life. by Anonymous Coward · · Score: 0

    You know that there are still lower performance processors in use, do you?

  81. 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
  82. NEVER by aglider · · Score: 1

    I said it!

    --
    Sent as ripples into the electromagnetic field. No single photon has been harmed in the process.
  83. 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.

  84. 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
    3. Re:I code in FORTRAN90 by Anonymous Coward · · Score: 0

      And your point?

      C labels have type "int *", and you can create an array of them and jump to them.
      It's obscure, but still permitted (even if discouraged...) in most C environments.
      Initializing them is interesting, but it's certainly possible to cadge together a
      threaded intepreter... using goto , where expression is not a label.

  85. 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.)

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

    Every time the C++ standards committee get together.

  87. 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.

  88. Never by Bristol_92 · · Score: 1

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

  89. 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.

  90. hourly, Matlab, Python, C, Ruby by Anonymous Coward · · Score: 0

    Matlab/Octave for quick simulations and signal processing
    Python for scripting and controlling equipment, and some data analysis
    C for embedded processors
    Ruby for running test scripts, since the test engine only accepts Ruby.

  91. Rarely switch by Anonymous Coward · · Score: 0

    I stick with C++ (primary), C (interface with many libraries), bash, and a little Python -- That is because most of my work involves data analytics, parallel simulation on compute clusters. For me compute time is #1 factor (as several of my simulations run for 4-6 days on 100 cores).

  92. 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.
  93. Re:16+ Languages from FORTRAN to IA-64 by Anonymous Coward · · Score: 0

    And that's what most folks don't understand, it's just syntax. And when I see supposed computer "scientists" say the "right tool for the right job", cringe.

    This isn't construction, dentistry or surgery. It's one thing when you're programming on metal and you're stuck with whatever is there, but if you're manipulating data, any language will do just fine just as well.

    If one has to use "the right tool for the right job" in order to implement an algorithm, then they really haven't mastered their craft.

  94. Comment removed by account_deleted · · Score: 2

    Comment removed based on user account deletion

  95. 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.

  96. Re:16+ Languages from FORTRAN to IA-64 by Anonymous Coward · · Score: 0

    Nearly my own history, exactly. As languages evolve, so do the programmers.

  97. 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.

  98. 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?

  99. I've never gotten to pick my lanuages by Anonymous Coward · · Score: 0

    outside of personal projects of course. When it comes to professional work, the languages one uses are usually either dictated by whatever's currently in use at the company/project. For new projects, it's often times obvious which one you should use.

    Now I have worked with folks (usually young and inexperienced) who always want to switch to using whatever the hot, new language of the day is but that's usually a waste of time and a mistake.

  100. From the wisdom of the master foo by Anonymous Coward · · Score: 0

    This story:
    http://catb.org/esr/writings/unix-koans/recruiter.html

  101. 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 Anonymous Coward · · Score: 0

      Like you, I've been programming for 40 years too, but used fewer languages as primary. I delivered real programs in several other languages, but don't really consider myself "fluent" unless I did it for an extended (multiple years) period of time.

      I agree that the million and one libraries and frameworks and OSes (there used to be quite a few :-) and application environments (realtime control of a device vs a business report from a database) are more involved to become fluent in than the base languages.

    3. Re:What is fluency? by Anonymous Coward · · Score: 0

      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.

      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. Your claim of 8 languages over 40 years, I'm far more inclined to believe. 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, refining your technique, learning the ins and outs, understanding the quirks and common idioms. 5 years is, in my experience, just about enough time to really achieve *fluency* with a language, where you understand enough of the rules and idioms that you can "speak" it naturally.

      Being able to regurgitate 3 pages of grammar rules doesn't make you fluent in a human language. Nor does it make you fluent in a computer language. Fluency comes from long hours of practice and application, not from reading a couple blog posts and writing a hello world program.

    4. 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});
    5. 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});
  102. Frameworks by Anonymous Coward · · Score: 0

    In my personal life, I switch between languages when I feel like it. I've used about twenty-five so far (I counted). There was one year when I used over ten. These days, I tend to stick with the same half dozen for most things.

    In my professional life, I have to choose the best tool for my coworkers' joint ability to maintain. Do I want to tell my manager that it's worthwhile to make everyone on the team learn Dart so I can get this one thing done in six days instead of eight? No; I'd be the only person willing to maintain the thing.

    Frameworks are more important. People tend not to think quite as much of frameworks than of languages, but it can take longer to learn a framework, and it can be more constraining. For instance, at my job we have an ember.js application. No one on the team knows Ember. We can't maintain the application very well. It would take bloody ages to learn Ember compared to how long it took me to learn Javascript.

    Conversely, I wrote a service in nodejs because we expected to open source it. More people know nodejs than Vertx, and the setup feels lighter. Because the platform was built on async IO, all the libraries you find play nicely with that model. Vertx, on the other hand, is built on Java but requires you to find libraries that will never block the main loop -- not a particularly natural or easy thing.

  103. These days, you're expected to know it all... by Anonymous Coward · · Score: 0

    and I work on a few different projects, so on a daily basis I switch between Java, "old" JavaScript, ES6 JavaScript, Perl, PHP, batch programming, SQL. It used to be confusing, but when you're an old geezer like me, it becomes second nature. I sometimes miss the days when I did UNIX programming with nothing but Perl, C, and shell scripting.

  104. 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.

  105. 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.

  106. 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.

  107. 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

  108. 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.

  109. 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.
  110. 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!
  111. All the time... by Anonymous Coward · · Score: 0

    Sounds like the OP isn't a programmer yet.

    While not trivial, it's certainly not hard, once you learn the foundations to start writing in another.

    On my average day I write Ruby, Swift, and Erlang. On my less average Java, Scala, and JacaScript.

  112. Re:I don't. C for life. by Anonymous Coward · · Score: 0

    It's true. Why do I love C?
    In 20 years of programming in C, it has never failed me.
    There are very few other things in my life that I can say that about.

  113. How often do I change languages by Anonymous Coward · · Score: 0

    The writer and the editor seem to be on different pages. I'll try to answer both.

    -- How much choice do you really get to have over which language to use?
    Actually I usually get a LOT of choice in language. The business is interested in two thing:
        1) getting the project done (so it can get paid) and
        2) being able to maintain the project so that future requests from the customer can be handled.

    As long as you address those two factors - language/framework/architecture choice is up to you. Of course, this is a loaded question - for example: I prefer Perl or Ruby - but the last scripts I wrote were in Python - because most of the team knows Python and point #2.

    -- How often do you switch programming languages?
    Or - more to the point - how often do you learn new languages.

    I started professionally programming in 1994. Most of the languages (except SQL and Python/Perl) that I use on a daily basis were invented yet. (Java, Javascript came later).

    Professionally I find I have to "reinvent" myself every 5 years or so. Could be longer; could be shorter - but on average it seems to be about that long. I do NOT HAVE to "reinvent" myself, but I find it useful to do so (better pay, better opportunities, chances to leave jokers behind).

    That said - I do NOT learn a new language every 5 years. Rather I'm always learning a new languages (Go, Elixer, Haskell, Rust, Ember, Angular, React are on my list or I am currently studying them). And that's before I look at non-language items (Design Patterns, Architecture, etc.)

    Some people hate that (quote: "Oh, but you're supposed to never stop learning, stay young, blah blah blah") That's fine. Personally I wouldn't have it any other way. I HATE being bored. YMMV.

  114. Why would you switch? by Anonymous Coward · · Score: 0

    If it works and it doesn't mandate being US Government spyware then use it.

    If some still-alive CIA spook threatens to harm you or your family if you don't put spyware in it.. kill them.

  115. Re:16+ Languages from FORTRAN to IA-64 by Anonymous Coward · · Score: 0

    Unless you are a franatic job hopper (may not be voluntary given the trends these last 10 years), it is successful projects that determine what languages survive and successful projects do not change languages very often.
    On the other hand, most folks who depends on a paycheck from writting code probably uses a handful of different languages every day because languages (or large frameworks in general purpose languages) get their power from specialization. So I use some mixture of Java, SQL, Groovy, shell scripts (not even counting the different flavors of frameworks in Java) every week these days.
    As somebody who got their first paycheck writting RPG-2 in 1969 and moving on to IBM 360 assmember, PL/I, SQL, C, C++, Java with brief flirtations with other less well known stuff along the way.
    While competentcy (knowing the idioms) with the tool at hand is important, knowing why you are doing things is what separates the adequate from the brilliant. And that really does not depend on the specific language unless it is something totally brain dead or grossly inappropriate.
    This obsession with language for language's sake I blame on HR and PHBs who put out requisitions for programmers with 10 yrs experience in Swift for their next killer iOS app.

  116. 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.

  117. 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.

  118. 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.
  119. Do you get to choose your programming language? by Anonymous Coward · · Score: 0

    I rarely got to choose a programming language, but rather used what the boss ordered me to.

  120. 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.

  121. 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;
  122. At least daily, sometimes hourly by Anonymous Coward · · Score: 0

    I write in several different languages and like to switch things up.

  123. It depends on the application by Anonymous Coward · · Score: 0

    If I'm compiling a big whopping gob of code I make a whole lotta build scripts using bash. If its the application directly driving the device, then the natural choice is C. If its a small time-critical application, then also C. If its a web page, then usually something like PHP or JavaScript (Both have serious problems, but are portable 'good enough for the network' code. Anything backend will be done in a real language anyway. I don't really know why anyone uses Java. I had real hopes it would be dead by now. It should have gone the way of COBOL at least 10 years ago. Its almost as fast as COBOL, is only about 40% larger than a COBOL program of similar use, and only has a syntax of about 500,000,000 built in routines, 90% of which you need to be familiar with before you can do anything useful. It is a good language for doctors who make money treating programmers with carpal tunnel syndrome. There are other languages around that have specific uses (If you program windows phone then you want to use .net or C#, provided you have all the licenses and gold certified stickers to enable full access along with the double-secret developers only extra libraries and exclusive-group development tools in the microsoft clean room).

  124. 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!")

  125. 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.
  126. 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.

  127. 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.
  128. 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.
  129. 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.
  130. 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.

  131. Ah, I was about to post a related question: by Anonymous Coward · · Score: 0

    WHY would anybody switch languages?

    I never have. I just learn new ones as needed. Glad to see I'm not alone and all common sense has not departed this site.

    I still have unused punch cards in a box around here some place, I used to keep a paper tape in my drawer as a reminder of how easy things have become.

    I've coded assembly for more processors than I can recall, written in FORTRAN, COBOL, BASIC, C, C++, C#, RPG, Forth, Pascal, Modula-2, Python, Java, JavaScript, and probably others I forgot to name. I expect to learn more over the years ahead and will love or hate the new ones as appropriate, though I must confess that while I found C# interesting, I'm not that impressed by most of the post C++ stuff.

    At their core, they are all the same: just a human-friendly wrapper for standard low-level concepts that can be implemented in assembler if needed. The point is to understand how computers actually work, down on the metal. Everything else is just fluff. I use some OOP concepts even in assembly - even did coding in a structured version of assembly using a tool called SALUT on an 8MHz PC back in the 1980s. It's all just keywords and syntax, and what's available for a particular platform, and what other members of any team for any project are willing/able to use. I'm every bit as comfortable with a bloated IDE as with a text editor and command line. Toggle switches and LEDs are still fine for me.

    I presume you're in a similar spot. I'm always dismayed when a younger programmer gets all wrapped-up in a particular language or fad - they just don't seem to get it at all. Above the ones and zeros it's all just wallpaper.

  132. 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.

  133. 3 Python by Anonymous Coward · · Score: 0

    I'm not a developer or programmer in any sense of the words, but I got tired of writing things like shell/batch scripts as a system admin years ago and tried learning Python (I also tried Ruby and Lua). I just needed something that I could standardize on for automating and monitoring regular system tasks and parsing text or modifying data to move from one application to another. I needed something that I could write once on any system (logic structure) and quickly modify to run on any other system. Python fit the bill and was very easy to learn. Since I'll probably never develop full fledged applications, I'll most likely stick with Python for the foreseeable future. Why tax my brain on another language when I learn more and more about Python and it works perfectly for what I need to accomplish?

    1. Re:3 Python by Anonymous Coward · · Score: 0

      System tasks and messing with text is not Pythons sweet spot. Perl and Ruby are infinitely better than Python for both those tasks.

  134. 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
  135. 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]

  136. Re:16+ Languages from FORTRAN to IA-64 by Anonymous Coward · · Score: 0

    Bullshit

    Try scientific computing with Erlang. Can it be done? Sure. Will it be more efficient in both developer and run time over a scientific language? Fuck no.

    Try massively distributed computing with C or Matlab. Can you do it? Sure. Will it be more efficient in both developer and run time? Fuck no.

    There are languages that are not only more suited but completely more competent in certain domains than others.

  137. The best question by Anonymous Coward · · Score: 0

    How often so you want to get fired because you don't program on your own time?

    Answer: Every job until you stop getting offers because you fell behind.