Programming 101
September 4th, 2009Through 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 started with some pointers:
- 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.
- 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.”
- 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.”
- 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.
