Programming 101

Through a happy coincidence, I attended a programming workshop presented by Joe Osborn, a software engineer, game designer, and my fiancé. Since our schedules have been wacky lately, we decided that I would go with him to campus to work on my own research today. But his presentation was too interesting to ignore, and I found myself taking notes.

Joe Osborn preparing for his workshop on programming at USC

Joe Osborn preparing for his workshop on programming at USC

Joe started with some pointers:

  1. Self-directed learning: In order to really learn a programming language, it needs to be self-motivated “otherwise it won’t stick.” Start with a programming language that makes sense to how you understand the world. If you’re good at/interested in math, start with a language that uses mathematical functions.
  2. Google it: Google is tremendously important and useful to learning how to program, as is Stack Overflow, a Q&A site for programmers. ”Generally if you have a programming problem, there is someone who has solved it.”
  3. When in doubt, try it: ”It’s not worth it to take the time and reason about it, just stick it in and try it.” ”Plug it in, run the numbers, and see what happens.”
  4. Ask your friends: ”If none of the above work, ask your friends.”

Environments

As computers got more complicated, we lost the “basic prompt.” What we have now is a bunch of different environments that we have to install to use.

Low Inertia Languages

All of these environments are really self-contained — download it, run it, and start playing — low inertia to get it running

  • Gamemaker Lite: draw tiles that say “move an object forward” or “stop an object,” good for prototyping, Windows only
  • Scratch: created by MIT, for graphical programming and can be used for games, click and drag, no syntax to worry about, “get used to the idea of thinking in steps”
  • Max/MSP: visual, “like programming with a flow chart”
  • PLT Scheme: language similar to Lisp, basic principle is “function applications,” “One of the classic learning languages,” great book called How to Design Programs, highly recommended, often used it to teach programming
    • (circle 10) will create a circle 10 pixels wide.
  • Squeak: created in 1980, environment for Smalltalk, “Squeak gives you a big interface, like an OS inside an OS,” some really cool features like any text can be treated like code and then run, breaks down barriers between running the program and writing the program, Squeak Wiki, Smalltalk designed to be accessible to everybody

More Involved Languages

  • Python: Windows and Mac installers, editing text files
  • Ruby: very simple as far as languages go, why’s poignant guide to Ruby (PDF)
  • Adobe Flex: not as friendly as other environments, but there is a huge community of users — lots of community support, Flash is applicable to Flex

One of the really nice things about programming, is that as soon as you learn one thing, it’s easy to learn something else.

Every good programmer needs to really hate the language they’re using at some point, and want to make a new one.

Everyone who programs has an opinion; everyone is biased.

If you learn any of these languages, it will be a lot easier to learn other languages.

2 Responses to “Programming 101”

  1. Erin Says:

    Very interesting! Tell Joe congrats – where was the presentation?

    As for his pointers, they could easily apply to the library world:

    Self-directed learning: When starting a new job, adding a different responsibility or skill to your current job description, etc., it will always be more successful if you’re interested. I think a positive and engaged attitude is really important in new endeavors.

    Google it: I Google things at work all the time. Even on the reference desk. When my boyfriend and I have a technology question at home, we Google it. You can usually always find something. It might be the answer or it might spark you to figure out the answer on your own. I love the Internet because it gives you access to such a range of experiences that people have kindly shared.

    When in doubt, try it: I think lots of libraries should do this more, but it might be difficult with the current financial environment. We do too much talking about it, thinking about it, etc. We need to just try it and see what happens! Life is too short not to :)

    Ask your friends: A given in libraryland. Whenever I have a question (work or persona related), I know I can count on my colleagues to give me the straight up. Or at least some amusing anecdotes.

    Great post, Melissa. Loving the new blog look too.
    -Erin

  2. Kiyomi Says:

    I would say that you can expand the first 4 points even further to apply to almost everything in life.

    1) If you are self motivated and curious you will try new things and evolve as a person.

    2) Search for basic information/direction/communities about your latest interest online.

    3) You never really know if anything in life will work without trying it so just do your best and then go for it. You will learn more if you fail than if you succeed but you can never succeed without trying!

    4) “Ask your friends.” – This is such great advice about anything you are intersted in and pursuing. Friends and family tend to have varied backgrounds and great advice on just about everything. You don’t have to be an expert on everything because you can ask your friends and learn from their experience.

    I second Erin’s liking of the new blog (it works now in I.E. too!)

    ~Kiyomi

Leave a Reply