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
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"