kcw | journal | 2000 << Previous Page | Next Page >>

In college, I satisfied my high-level math requirement by taking a class in Numerical Analysis Using Computers, or some such title. The class covered two things, some advanced mathematical formulas and ways to implement them in Fortran and C, and the limitations and caveats of solving mathematical problems on a computer. The very fact that computers currently don't represent irrational numbers efficiently means that the person running the calculations has to keep in mind the errors that computers will introduce into a computation.

When I took this class I did not understand any of the formulas. The class description had the suggestion that you should have taken some of the other high-level math classes, but it was not required. And in truth, it wasn't required as I did fine in the class. I just had to implement the algorithms in C, not understand them, although it would have helped. It was frustrating to go to session after session where the class talks about this or that formula and me have no idea what the heck they're talking about, always hoping that perhaps I would eventually start to understand some of the esoterics.

Well, it never happened, and that class was probably the one I felt the most lost in. I'm reminded of this class because the last couple of weeks have been almost as frustrating as taking that math class almost a decade ago. I've been trying to learn how this big code system works and even with the help of a coworker it has been slow going.

We have a base application written in C++ and running on Windows NT. This is our application (from a company we purchased a couple of years ago) which talks on one side to various 3rd party middleware applications (really we only talk to two currently) and on the other side it talks to our Java-based Call Center platform. Conceptually simple but now that I'm actually working in this area (the C++ application and the low-level layer of our Java platform) I feel like a simpleton.

One of the problems is the different models I have to deal with. The 3rd party middlewares have a certain API, naming system, and call model while the C++ application has a slightly different (though equivalent) API, naming system and call model and our Java platform has a third set. It's been confusing trying to match this event in the middleware to this event in the C++ app to this event on the Java side.

Not only that but I have to deal with different programming styles and the C++ language. On the Java side we have software that one or two coworkers wrote, with their naming styles and programming methods. I especially have a hard time with the inheritance hierarchy, which I don't use in my programming work, and some of the naming conventions. The C++ application was written by people who are no longer working here, though the actual enabler layer that converts middleware events to our events was written by a coworker (actually, one was already written so we've only added one enabler).

C++ is a difficult language to deal with, compared with Java. Class definitions can be split up among multiple files and the naming conventions are totally different. Of course, I haven't used C since college and never had to use C++ before (although I did read an Learn C++ book a couple of years ago; notice how I say "a couple of years ago" when I'm not sure and it's more than a year but less than a decade). I hate pointers and double deferencing pointers and all that stuff. It makes the code harder to follow and I need all the help that I can get.

In any case I'm slowly getting the hang of the code. My coworker and I have gone over a half-dozen bugs so I have a better idea of where to fix stuff and what does what. I still haven't fixed any code bugs myself and I believe that once I do one, the rest will be a lot easier.

Copyright (c) 2000 Kevin C. Wong
Page Created: August 18, 2004
Page Last Updated: August 18, 2004