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