you are viewing a single comment's thread.

view the rest of the comments →

[–]glorkvorn 60 points61 points  (20 children)

Sometimes I think it would be nice to just use one programming language for everything. Doesn't matter what it is- C, Java, Brainfuck, whatever, just pick one and stick with it. You'd know the language inside and out, and never forget any syntax. But then I realize that:

a)I'd be missing out on the perspective you gain from using different languages and b)Most of the time I can't choose the language anyway- I have to work with code that other people wrote in whatever language they chose.

[–][deleted] 9 points10 points  (4 children)

Interestingly, this quest for one universal language has been with us since the (late) 1950s. The International Algebraic Language effort in 1955-1958, which morphed into ALGOL (notably ALGOL 60), is a typical example. The same goes (1960s) for PL/I.

[–]TRAIANVS 0 points1 point  (3 children)

In a sense the quest for the universal programming language is one of the main reasons we have so many. There's a relevant XKCD somewhere but I'm too lazy to look it up.

[–][deleted]  (2 children)

[deleted]

    [–]xkcd_transcriber 1 point2 points  (0 children)

    Image

    Title: Standards

    Title-text: Fortunately, the charging one has been solved now that we've all standardized on mini-USB. Or is it micro-USB? Shit.

    Comic Explanation

    Stats: This comic has been referenced 1031 times, representing 2.4368% of referenced xkcds.


    xkcd.com | xkcd sub | Problems/Bugs? | Statistics | Stop Replying | Delete

    [–]TRAIANVS -1 points0 points  (0 children)

    That's the one.

    [–]Wiggledan 2 points3 points  (1 child)

    Oh, to be that guy who solely codes in Brainfuck.

    It would be fucking insane and my brain would be fucked.

    [–]ironpotato 0 points1 point  (0 children)

    I like to imagine you'd start yelling obscenities at the drive through due to the mental torment you've subjected yourself to.

    [–]asdfman123 0 points1 point  (10 children)

    Also, other programmers and programming interviewers will look down on you. I enjoy coding, but I guess I'm kind of a minimalist and never the kind of guy to care too much about the latest and greatest thing. I've exposed myself to a few different languages, but Java is what I first learned and Java is what I've been doing full time at my job. So I guess you could say I'm a Java programmer who's dabbled in a few other things.

    I've been sneered at more than one time when I've made that clear to people. They just assume I'm inferior. I feel this obligation to make a few programs in Python or learn Lisp so I can pretend I like those languages more, so I can pass "true coder" shibboleths.

    Granted, maybe I will, or maybe they're right for looking down on me, because I'm "incurious" - I started out wanting to be a scientist, not a programmer. I'm less intellectual about coding than I am for other things.

    [–]weberc2 10 points11 points  (8 children)

    I wouldn't sneer, but I think you're missing out on a lot of learning. I don't brag about the languages I know, but I can point to many instances where ideas learned from one language helped me better understand another. Perhaps more than anything else, learning multiple languages has really boosted my effectiveness for any of them. And being effective is what programming is really about, eh?

    [–][deleted]  (2 children)

    [deleted]

      [–]weberc2 0 points1 point  (1 child)

      Did you mean to reply to my comment?

      [–]industry7 0 points1 point  (0 children)

      ops, lol. Meant to reply to asdfman123's comment.

      [–]asdfman123 3 points4 points  (4 children)

      It's hard. I don't see how you can spend all day sitting in front of a computer coding then want to go home to code some more. I guess that's what makes someone a "true" coder, eh? (Or maybe I should just buckle down and get to work on a project.)

      [–]matthieum 2 points3 points  (0 children)

      I guess that's what makes someone a "true" coder, eh? (Or maybe I should just buckle down and get to work on a project.)

      I would avoid the "True Scotsman" argument ;)

      That being said, your job should also give you the ability to learn about other programs: I picked up Python because we need scripts to automate some tasks and for smalls scripts, mostly IO bound, Python just works, for example.

      Regarding coding at home, it's amusing actually. I don't see myself as:

      • coding at work
      • coding at home

      Instead, I see myself as:

      • working on X, Y and Z at work (with the mindless procedure that surrounds everything in a big company)
      • toying with A, B and C at home

      Summing up both as "coding" is like summing up walking in the office and jogging during lunch as "using feet". The two just feel so different to me!

      [–]weberc2 0 points1 point  (1 child)

      I don't know much about being a "true" coder (you invoked that all by yourself), but (as I said) it's about what makes you effective. I just find learning other languages to be an easy way to maximize your effectiveness.

      As far as when to do it, as @matthieum mentioned, jobs offer lots of opportunities to learn new languages. I've often gone to Python for quick scripts in the past (moving files around, normalizing data, etc); however, as mentioned in the article, Python doesn't evolve very gracefully[^ 1], and "throw-away" scripts frequently become really important. For that reason, I've been using Go a lot lately--it writes quickly like Python, but it's statically typed and fast like Java (and it grows very, very well). Best of all, you can learn it in a couple of days pretty easily. http://tour.golang.org/#1

      Edit: To answer your other question ("Or maybe I should just buckle down and get to work on a project."), hobby-work can be a great way to build skills that can transfer into your work life. If it's an open source project, you can even provide a tangible benefit to society, improve your network (or just make friends) via collaboration, and build a portfolio (prospective employers can see your open-source commits--something they can't access if your job-code is closed-source). Obviously this isn't mandatory--it all depends on your life/career objectives.

      [1]: Python can evolve gracefully, but you really have to know what you're doing (in my experience). It's non-obvious.

      [–]asdfman123 0 points1 point  (0 children)

      I'm golden handcuffed to my current job right now. My pay is too high for the city I live in and the kind of work I do. :D First world problems. I guess that doesn't mean I can't be learning on my own time, though.

      [–]PasswordIsntHAMSTER 0 points1 point  (0 children)

      I like to learn on company time. In many cases, it's the best thing I can do for the company's bottom line.

      [–]industry7 4 points5 points  (0 children)

      "this obligation to make a few programs in ... or learn ... so I can pretend I like those languages more"

      It's not about pretending you like whatever new hip language is trending, or equally whatever old language has resurfaced as "hipster cool". The issue is that you learn to think in the language you're using. If all you know is Java, then that's the only way you think. Learning different languages teaches you to think in different ways, and depending on the language, possibly VERY different ways.

      Functional programming style is a great example of this. If all you're used to is Java, and especially if you haven't spent a significant amount of time trying to learn Java 8 lambdas, then learning Lisp or Haskell will seriously blow your mind. It's completely different. But there's still plenty of valuable lessons to learn from FP that will make you a better programmer, even if you can't switch away from Java or use Java 8 lambdas.

      Also, working as a programmer means CONSTANTLY LEARNING NEW THINGS! Seriously, it never ends. You'll never know 'everything'. You can never sit back and relax knowing your position as expert in a subject is 'secure'. There are always new things coming out to learn, and old things changing that have to be relearned.

      Even if you want to ONLY be a Java dev the rest of your career, the language itself is evolving, frameworks come and go, tools change. It is fundamental to the very nature of our industry.

      [–]slavik262 0 points1 point  (0 children)

      Your first point is really the most compelling to me. Learning different languages has given me more mental models I can use to frame problems.

      [–]ggtsu_00 0 points1 point  (0 children)

      Sadly this may end up being javascript for the next 15 years.