"Demo Scene" Coding Vs. "Real" Coding:
Deep within the underground of computing culture is what's known as the "demo
scene", a loose community of computer programmers who mainly program what's
known as a "demo", essentially a tiny program which functions as an
electronic ad or greeting card. Demos are often used to advertise BBSes, or
to give greetings from/to various other underground groups (cracker groups,
pirate groups, etc.)
Demo programmers are very concerned with how their demos look and sound.
These are the focal points of a good demo program. After all, any beginning
programmer can produce a program that simply displays text for greeting the
local cracker groups; Demo scene programmers are marked by their ability to
produce eye-candy effects and catchy music with compact program code.
Although the demo scene is an undeniable part of the computer underground,
and there is no doubt that the coders within this culture can do some neat
tricks with a few lines of code, it is questionable whether they are "real"
programmers or simply tricksters playing around with toys. The fact is that
most demo programming relies on fairly simple techniques to produce their
effects, some kind of algorithm or code sequence which will produce something
that looks impressive on a screen, but in fact is not so hard to program. In
the old days of computing, demos were called "display hacks", which were
considered fairly trivial tricks used to make pretty designs on the screen.
The legendary hacker Bill Gosper, for example, invented a display hack called
"smoking clover" which made a striking image of a multicolored four-leaf
clover. Although display hacks were fun, they were considered trivial.
Today, however, the computing scene has changed somewhat. Advances in
computer hardware technology have made graphics a big thing because of games,
and the demo scene is thriving. Demo coders are often regarded as highly
skilled programmers, awed by those unfamiliar with computer programming.
Yet demo coding, and in fact graphics programming in general, is (perhaps
surprisingly) quite far removed from real-world programming.
There is a misconception among the non-programming public that all computer
programming is the same, and once you know how to program a computer, you can
program any type of application, be it a spreadsheet, a web browser, or a
game. In actuality, graphics programming relies on a series of specific
techniques which must be specially learned, and which are not usually taught
in general-purpose programming courses or books, since they are so specific.
Let me make an analogy here. There are courses in piano playing which teach
the student how to play certain popular pieces of music. They show the
student what keys to press on the piano, and the student memorizes the key
positions, so the tune can be later played from memory. However, these
courses teach nothing of music itself (properly known as "music theory"). The
student, upon finishing such a course, will be able to play very well, but
will still know nothing of scales, keys (as in "key of C", not the actual
physical piano keys), or sheet music notation, all topics of important study
for the "real" musician. Although this student may be a great performer able
to impress some friends, he or she will still know nothing about music.
Graphics programmers are often similar. They are regarded as brilliant
programmers because they can make such stunning scenes, yet in fact, many of
them are not well-versed in the workings of any computer language and don't
know many real-world programming concepts like memory management or code
optimization. This is not to say that ALL graphics programmers are this way;
Many, in fact, know a lot about every kind of programming. But it must be
understood that being able to make a great display hack does not make you a
great programmer. If you want to be a good programmer, you must learn a lot
about all aspects of computers and your language of choice (be it C, Pascal,
or whatever). Don't concentrate specifically on making graphics. In fact,
unless you plan to seriously go into graphics as a game programmer or some
other kind of profession which focuses on graphics, you probably shouldn't
learn much about graphics programming at all, since it has little to do with
any other kind of programming.
The more you know about programming, the better a programmer you'll be. So
learn as much as you can.