Monday, June 8, 2009

Sad realization

I had a great time at the conference last week and learned a lot, but I had a realization about something I have been successfully ignoring for a little while. I need to learn some programming. I don't know when the day will magically get longer so I will have the time, but I need to find a way. My field is moving in a way that I really have no choice if I want to continue to be competitive. I was hoping that I could leave that to students or technicians, but I know that I won't feel comfortable with the meal I am served unless I understand what goes into the recipe. It's why I don't eat hotdogs.

Now I need to do some poking and figure out whether to start with Perl or Python. I wonder if I should shave my head now so I don't end up pulling all of my hair out.

17 comments:

  1. I will pray for you. I did Perl and it damn near killed me. A certain twitch pops up when someone says the letter R.

    ReplyDelete
  2. If you've never done any programming, I'd suggest Python. There's a good base for sequence analysis etc. And if you're not already used to a "free form" style/syntax, then Python's imposition of such won't grate on you terribly. I'm teaching it to myself right now, and it's painful, but doable.

    I'd definitely not recommend C as a first language. You may want to learn about it later, but not at this stage. Perl has a lot of bio related stuff as well, but I haven't poked much around in it.

    Now, how much programming have you actually done?

    ReplyDelete
  3. Now, how much programming have you actually done?

    "Hello world."

    ReplyDelete
  4. Yeah, go Python.

    I'd suggest "Learning Python" from the O'Reilly series as a place to start. It might assume a bit more familiarity with programming in general, but you gotta start somewhere.

    There are three things I've done to teach myself programming languages:

    1) In the beginning, just type in all the example programs presented in whatever book you're using. After testing them as shown, then I play around with them, changing one part at a time, adding new things, and making it more complex.

    2) Beyond "Hello, World" the next program I always write is to make a button that when pressed, asks you to input your name. Then it prints, "NAME, you are a motherf*cking programming master!" I always get a kick out of this and it's not as trivial as you might think. Most programs wait for input from the user, do something to it, and output it somehow.

    3) Then I try to write a program that actually has some use. Without that there's no real motivation to continue. So I think of a simple task that I might do using the mouse, and do it with a program. Example: randomly select a pdf from my "to look over" folder of pdfs, and open it. Whenever I have a moment that I want to spend looking over a paper with more detail, I just start that program.

    ReplyDelete
  5. Don't start with Perl. Perl is a powerful language, but is a terrible way to learn to program. I suggest starting with Python. It's clean and easy and (most importantly) clear.

    If you can do python, you can do any of the other languages (C, Matlab, Perl, etc. etc. etc.)

    ReplyDelete
  6. Sweet. Python sounds more badass anyway.

    ReplyDelete
  7. Hell, you can't go wrong with a language named after Monty Python, right?

    Now go away, or I will taunt you a second time!

    ReplyDelete
  8. If I told people I was spending the summer learning Perl better I feel like they would think I just got the full series of "Golden Girls" DVDs.

    ReplyDelete
  9. Bah! Python is for wusses. Learn a real badass programming language - FORTRAN!!!

    ReplyDelete
  10. Consider trying Ruby- much easier to learn than Perl and a more intuitive syntax and construction.

    ReplyDelete
  11. I am constantly amazed at the brilliant people I meet who cannot program. Programming is like statistics -- we all simply need to understand a little to be scientists, and your education has failed you by not teaching you.

    Try Python. I agree that Perl is a beautiful thing, but Python is much clearer and the tutorial online at the python website is great.

    Also I recommend the "cookbook" programming series. They give you little snippets that you can reuse and which will teach you a lot while you are actually getting the programming you need done.

    Good luck!

    ReplyDelete
  12. This is a tough call because think of all the other things you can do with your time. Been thinking about Perl because that's what all my colleagues use. I've opted to just find the right people with whom I can collaborate. It is amazing how much you can do with Excel, Access, and your alignment program of choice. I always forget everything I learn. Can't do a t-test in SAS anymore, can't even import data into R, etc. Good luck.

    ReplyDelete
  13. I beat my head against Perl for a couple months, and then I decided to try Python during a slow afternoon in the lab. I taught myself more functional Python in 3h that I'd managed with Perl in 3 months.

    This tutorial was well-written and informative for me. Perhaps it can also be of use to you.

    ReplyDelete
  14. I would also suggest python. It helps to have very specific problems that you want to solve. Also, modifying the scripts of others can be very productive.

    http://www.diveintopython.org/toc/index.html

    ReplyDelete
  15. I was leaning towards python anyway, but I think this settles it. I want to learn something that more than a few people use (Odyssey, stop making words up and calling them a programming language) because I don't plan on reinventing the wheel. I just want to build on and customize what is already out there. I thought I could go the route of hiring / working with people who can do this for me, but in the end I want to be able to understand what they are doing. I'll see how long my interest in this last, but I've least bought a couple books and plan to get the whole lab involved so we keep each other motivated.

    ReplyDelete
  16. systems biologistJune 9, 2009 at 3:32 PM

    Perl has a lot of bioinformatics modules (bioperl), there is a very good intro perl book "Beginning perl for bioinformatics", which teaches almost all of the basics and also helps you learn how to use basic bioinformatics tools. Whatever you do, don't start with R.

    ReplyDelete