[MUD-Dev] (no subject)

Brian 'Psychochild' Green brian at psychochild.org
Sun Nov 26 20:28:36 CET 2000


Some comments.

John Buehler wrote:

> Also, I don't want anything to do with
> weakly-typed languages - aka script languages.  They are a nightmare to
> debug when you get above some trivial number of lines of code.  All checking
> happens at runtime and you have to rely on testing in order to find out if
> your system works.  Fast and loose only works for one iteration of coding.
> If you then want to build on that first iteration, you quickly find out how
> messy things can get.

In one of my first jobs I spent a year maintaining a 16-bit
framework-based Windows application written in C/C++.  It relied on some
libraries.  It was mapping software with lots of custom features.  The
application probably had tens of thousands lines of code.  It was
fragile and a bit buggy.

I also spent a bit under two years working on Meridian 59.  The basic
client and server were written in C while the game mechanics were
written on the server side with a custom, weakly-typed scripting
language.  The code for game mechanics was several thousand lines of
scripting.  It was fragile in certain areas, and was buggy just like any
other online game.

Given this experience, I heartily disagree with John's statement above. 
Maintenance of either system was horrific.  Meridian 59 was probably a
bit more tolerable because it was something I gave a damn about.

There is one important difference, though.  The application I maintained
for my earlier job was theoretically written by programmers.  These were
people that at least had enough training and/or patience to get the code
to compile.

The Meridian code, however, was not so lucky.  Often people with little
programming training (Hi, Damion!) were adding to major sections of the
code.  Yet, I would say that it was not any harder to work with than the
other project.  If anything, the individual modules were better defined
because the programmers didn't try a whole lot of "neat" things to
"optimize" the code.

Admittedly I haven't been programming professionally as long as John
has, but I've developed a few of my own theories that have been echoed
by some of my colleagues and friends.

First, you should use the tool most appropriate for the job.  There are
no silver bullets on the technical side of things.  Damned near
everything is a tradeoff: size vs. speed, memory vs. processor,
development cycle vs. maintainability, etc.  I am always wary when
someone claims they have the "perfect" answer with no mention of
tradeoffs.

As a side note, longer development cycles are great in theory, but they
aren't happening.  The trend in the game industry is to shorten the
cycles to get product out quicker.  As I left 3DO, the typical cycle for
a game given an existing graphics engine was 6 months.  Not what I'd
call comfortable, since about a third of that can be spent in "crunch
mode".

Second, you simply cannot save bad programmers from themselves.  I like
to think that I'm a good programmer and have enough sense to plan what
I'm going to do.  Some people aren't as disciplined.  These people will
always put together haphazard code, no matter what you do.  They will
find ways to make their jobs "easier" and your job as a maintainer a
living hell.

All the things that John's preaching about components vs. inheritance
sound quite similar to what the Object Orientated (OO) fans said about
OO vs. procedural programming back in the day.  Don't get me wrong, I am
an OO programmer myself; I also think that components sound interesting
and John's posts have spurred a bit of research.  Yet, I don't think
that OO is a panacea, and doubt that components will be one, either.

Just my opinions.

--
"And I now wait / to shake the hand of fate...."  -"Defender", Manowar
     Brian Green, brian at psychochild.org  aka  Psychochild
       |\      _,,,---,,_      *=* Morpheus, my kitten, says "Hi!" *=*
 ZZzz  /,`.-'`'    -.  ;-;;,_   "They're not bugs, they're 'place-
      |,4-  ) )-,_..;\ (  `'-'    holders for code that works.'"
     '---''(_/--'  `-'\_)         - Andrew Kirmse, Meridian 59 creator
_______________________________________________
MUD-Dev mailing list
MUD-Dev at kanga.nu
https://www.kanga.nu/lists/listinfo/mud-dev



More information about the mud-dev-archive mailing list