It all started with Scheme

A language of balanced parenthesis: it was the bane of my existence in my first programming class. I can remember my classmates hating the textbook for the class, but I actually enjoyed reading it. This class taught me how to program side by side for the first time. I happened to have a partner that had taken a c++ class who really taught me about abstraction and other basic coding techniques. And I was learning the semantics of scheme faster than he was, so I would sit at the computer and type while he figured out how to organize our railroad program. I had no idea that this was actually a coding technique, I just thought that the system worked well and therefore we should use it.

My next programming class taught me about IDEs and Google Code repositories. It was these two tools that would shape every programming assignment and CS class up until right now. Eclipse was suggested as a tool that we should use for our first object oriented language, Java. Here is a list of everything I love about my IDE:
  • Automatic formatting and indentation correction
  • Renaming a variable or function in multiple places at the same time.
  • Automatically generating “dumb code” (getters, setters)
  • The vast library of plugins available (SVN specifically)
  • The organizational concept of projects and a “Workspace”
  • Support for every language I have had to deal with thus far.
  • Extremely easy-to-understand debugging.
  • Mouse-over documentation popups
  • Autocompleting functions
  • Generating Classes
  • Automatically generating comments
  • Automatically generating documentation
Google code taught me how to share my code with a partner efficiently, so it was easily maintainable, and so that we could both work on it and merge all changes together after one of us had completed a part of the assignment.

What I am unfamiliar with in this class is the concept of software modeling. I have always had the problem of knowing almost exactly what I want to build in my head, then drawing it, but having trouble translating it to code. I had no concept of UML until I bought our textbook for the class, and I feel having an actual knowledge of a real system will benefit me in this area. I also am very interested in code generation from these diagrams. Efficiency and automata are some of my favorite things, and any product that can do those, I am going to use.

Another unfamiliar topic I have always wanted to learn about are regular expressions. I would read xkcd all the time and wonder what the hell Randall was talking about. And now I am starting to learn exactly how powerful they are. A very useful search program i use on a minutely basis, Everything, supports regexes and now that I slightly know what I am doing, it has made searching much more accurate.

edit 10/3/11, incorrect link to "everything"


  1. IDEs are certain very helpful tools to use when programming. I've also been using Eclipse since having been in 1902, and I even used it during the summer when it was the IDE of choice at the company I had an internship at. I'd have to agree that most of the features of it that you pointed out are slick and can save a lot of development time (especially the auto-generating of getters/setters). The only problems I've had with using Eclipse have been figuring out how to handle complex compilations (such as .war files with all your necessary libraries) and an incident where I was refractoring a private field of a single class but variables across multiple classes were refractored. Granted these problems were probably just me experiencing some sort of ID-10-T Error, but they still caused me headaches. Right now, I'm trying to figure out how to use Eclipse for C/C++, but am deterred by the fact that libraries are not found by default (unresolved inclusion warnings or something like that). Know of a quick, global fix for that?

    -Steven Vukelich

  2. Having knowledge of an actual system for software modeling will not only benefit you, but it will probably benefit all of your teammates on every collaborative project you will work on down the line. When we learned how to use regular expressions a couple weeks ago, I thought they were pretty cool tool and knew they would come in handy for future programs, but now I'm just excited to come across an xkcd where they're used!

    -Madeline Johnsen

  3. Ah, Scheme... I shared your frustration with its verbose syntax in 1901. Fortunately we were introduced to IDEs with Eclipse for Java in 1902. It's true, IDEs are great for managing projects, debugging, etc.

    However, I've also sympathized with some arguments against them. Since most of us do not spend our days churning out binary machine code, we are already using tools called programming languages. It gets pretty absurd when you need an IDE to abstract a language which itself is an abstraction. This is why I appreciate the simplicity of languages like Python, with simple syntax, terse expressions, and convenient paradigms. Combining that with a decent text editor like VIM, as well as a UNIX shell and its various utilities, there isn't a whole lot more you can do with an IDE, except chew up your RAM. At least that is what some argue.

    Interesting blog though, thanks for provoking some thoughts.