Sat Mar 18 10:08:27 EST 2000
While reading the projects, some issues came up multiple times, and I may not have noted them in the individual comments that were sent back to you. This page is a brief summary, in no particular order.
No matter what, you want to follow the KISS principle ("Keep It Simple, Stupid") as much as possible. One example: don't focus on efficiency early (if ever). It's unlikely that the speed difference between Java and C would ever matter for what you're doing.
Bear in mind that even small modifications to big programs, like gcc, gdb, emacs, and so on, can turn into a time sink. Remember ed.c? gcc is about 200 times bigger.
In general, use what's already available unless building your own component is the point of what you're doing. For example, adding a regular expression search (and replace?) capability to your editor is a fine idea. But see if you can lift the code from the simple grep we did in class, or from ed.c, rather than inventing your own.
This seems to apply in particular to Visual C++ and Microsoft Foundation Classes, which several groups want to use. My sense from personal experience and talking to colleagues is that MFC has a very steep learning curve, and you could spend a lot of time just getting off the ground. If no one on your team has C++ or MFC experience, and you want to use Windows, you might consider Visual Basic as an alternative; it's much easier to get started with, and has the same access to Windows and components as C++ does. (The instructor and at least some of the TA's profess total ignorance of MFC, and will not be able to help if you get stuck.)
An example: several projects intend to provide revision control with RCS or CVS or perhaps something they create themselves. Don't use those directly. Instead, define an interface that specifies what revision control facilities you want, then write the implementation that maps these into whatever RCS or CVS provides. Similarly, define what syntax highlighting facilities you want in an interface; the simplest implementation will ignore requests, and you can gradually improve it as time permits.