Upper-level languages, such as Basic, C, and a multitude of others, are where most programmers these days feel at home. They provide users with an amazing amount of built-in functionality, and allow the programmer to escape from having to deal with the machine that is being programmed on, and instead focus on the details of the program design. For viruses, this makes them easy languages to start in, but there are several obstacles. The first is that most upper-level languages simply were not made to program at a base systems level, even in C this is not easy. As a result, most viruses that are in this genre are primitive [usually overwriting] in their reproduction mechanism, although their activation routines can be impressive. Another really important disadvantage is that high-level languages often create files that are at the very LEAST 10k and often much higher - not very efficient for a virus. With this overhead, a memory-resident virus is impractical as it would usually be noticed by the user when a rather large chunk of memory disappears for no apparent reason.