Creating the scanner for our new programming language was an interesting challenge and a good introduction to object-oriented C++ programming for me. I have had previous experience in object-oriented programming and I believe I had great success in applying my skills in C++. Initially, I was a little worried about doing non-trivial object-oriented programming in a C family language. C++ is not as forgiving as Java, the language I had previously learned. Having run into some major roadblocks programming in C in my operating systems class, I had my doubts as to how this assignment would go. Luckily, C++ proved not to be as bad as I thought and I was able to write effective code and implement functionality relatively quickly. Given, this assignment was not a very elaborate one but I thought the process of coding and my transition to C++ went well.
Though the assignment was fairly painless, not everything went as smoothly as planned. It was hard to figure out exactly what to do with all of the TokenMakers corresponding to different keywords and constants. There were so many of them and it was hard to decide what their scope was supposed to be, global, local, or static? Eventually, we decided on static. This decision was made somewhat arbitrarily, but we decided that it was best to only initialize the variables when the Scanner class, in which the variables are used, is created, and to only initialize them once. For this, assigning them as static variables in the Scanner class seemed to be the best idea.
Working in pairs went very well. My partner is also my housemate so collaboration was quite easy. We are both similarly motivated individuals and we are taking many of the same classes so finding time to work together was easy. A few minor hitches occurred when using Subversion but eventually these got fixed. I am becoming more experienced with SVN so these mishaps are becoming easier to resolve each time they occur. Our workload was quite evenly split with both of us doing similar work and both of us creating high quality code.
Overall, we were very successful on this iteration, all of our test cases, which are in our opinions, exhaustive, passed. Collaboration was smooth and painless and I don't know what I would want to change in the next iteration as we experienced a high degree of success in this one. We will likely continue developing the next iteration in the same style as this one. Our process of writing small bits of code, shortly after writing test cases, then making sure the tests passed before the next piece of code is written, worked nicely for the scanner. We find no reason to change this process for iteration 2.