high vs low level programming

Cameron La Rue cameronl@qwest.net
Wed, 7 Mar 2001 01:32:28 -0700


    I rarely comment on the plug lists because I don't have too much experience
with the topics discussed. However, this is an area I find really interesting. I
write back end code for a .com. Most of the time I'm doing java, python or perl.
Lots of xml/xsl, database stuff, etc. I've been thinking about the difference
between architecting systems (like doing object models, data models, etc) and
working on the low level stuff.
    Lately I keep bumping into problems that I have a lot of trouble solving,
usually because they're a level or two below the area I'm comfortable with. For
example, I spent a couple weeks trying to debug a java application. I was sure
there was an error in the design of the application itself. When I would stress
test it with apache bench and a single thread, it would work fine. Two threads
concurrently would cause it to choke. So I thought I had a race condition or
something that I wasn't seeing. Turns out that there are problems with the JVM
running on an SMP linux box. I don't think I would have ever solved that problem
on my own. I never thought to question the underlying code because it's so out
of my league. Our resident low level expert tracked down the problem for me.
    It's pretty amazing when you consider the differences between the various
levels. Using a language like java, you can code a pretty sophisticated app
without a lot of knowledge about what's going on behind the scenes. That's
really nice- it lets me get work done in less time. But when there's a bug, I
don't always know where to start looking to solve the problem. All the time I
saved by having these features abstracted away is suddenly lost as I struggle to
understand what's really happening. Low level knowledge (and more experince in
general) would have been really nice.
    As far as discussions on this list, I'd like to see how people solve
problems at the high level and the low level. For example, high level topics
that are interesting to me are: what kind of data model is appropriate in
situation X? Or in situation Y, what's a good design pattern to use? Say you
have multiple machines that need to communicate asynchronously. Maybe having a
queue that holds messages and broadcasts them to all objects registered as
listeners? Those would be cool topics.
    Low level topics are harder for me to articulate. Lack of experience again
:) But an interesting low level discussion might give me the motivation to
experiment with c so I become a better programmer in the long run.

Cameron

----- Original Message -----
From: "Deepak Saxena" <deepak@csociety.purdue.edu>
To: <plug-devel@lists.PLUG.phoenix.az.us>
Sent: Wednesday, March 07, 2001 12:19 AM
Subject: high vs low level programming


>
> I decided to look through the archives for this list and seems
> that discussion is sporadic.  So I'll kick up a topic of discussion
> that's not directly Linux related, but has much to do with
> SW development.  How many people here are low level hackers
> (c, asm, bit fiddling in hardware, etc) and how many are more
> into high level (C++, perl, DB, xml, SOAP, etc)?  I'm mainly
> a low level hacker who can write perl and php scripts to
> put up little web sites but a lot of high level concepts such
> as design patterns, complex OO, things .net, CORBA, etc really
> confuse the hell out of me at times.  What's other people experiences
> with different levels of software development? What about those that
> have started with one and gone the other way? I believe and have
> seen first hand that it's a lot easier to go from  being a low
> lever coder to a high level one than vice versa.  What I've noted
> is that a lot of high level programmers haven't had the exposure
> to hardware concepts and that makes it really hard to grasp
> how the code actually maps to hardware bits.
>
> Comments, flames?
>
> g'night,
> ~Deepak
>
> --
> Deepak Saxena - deepak@csociety.purdue.edu - phone://602.790.0500
>
> Code Monkey, MontaVista Software, Inc. - THE Embedded Linux Experts
>
> call me 'evil' call me 'tide is on your side' anything that you want
> anybody knows you can conjure anything by the dark of the moon
>   - Tori Amos, "Suede"
>
> _______________________________________________
> Plug-devel mailing list  -  Plug-devel@lists.PLUG.phoenix.az.us
> http://lists.PLUG.phoenix.az.us/mailman/listinfo/plug-devel
>