??xml version="1.0" encoding="utf-8" standalone="yes"?>伊人久久综合成人网,久久精品国产AV一区二区三区,丁香五月综合久久激情http://www.shnenglu.com/linnet/gamezh-cnWed, 07 May 2025 15:48:48 GMTWed, 07 May 2025 15:48:48 GMT60Why doesn't Linux need defragmenting?http://www.shnenglu.com/linnet/archive/2012/02/08/165161.htmllinnetlinnetWed, 08 Feb 2012 08:33:00 GMThttp://www.shnenglu.com/linnet/archive/2012/02/08/165161.htmlhttp://www.shnenglu.com/linnet/comments/165161.htmlhttp://www.shnenglu.com/linnet/archive/2012/02/08/165161.html#Feedback0http://www.shnenglu.com/linnet/comments/commentRss/165161.htmlhttp://www.shnenglu.com/linnet/services/trackbacks/165161.html

                                                                                                           src link

. . . That is a question that crops up with regularity on Linux forums when new users are unable to find the defrag tool on their shiny new desktop. Here's my attempt at giving a simple, non-technical answer as to why some filesystems suffer more from fragmenting than others.

Rather than simply stumble through lots of dry technical explanations, I'm opting to consider that an ASCII picture is worth a thousand words. Here, therefore, is the picture I shall be using to explain the whole thing:


  a b c d e f g h i j k l m n o p q r s t u v w x y z

a 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

b 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

c 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

d 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

e 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

f 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

g 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

h 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

i 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

j 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

k 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

l 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

m 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

n 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

o 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

p 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

q 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

r 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

s 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

t 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

u 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

v 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

w 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

x 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

y 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

z 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

 

This is a representation of a (very small) hard drive, as yet completely empty - Hence all the zeros. The a-z's at the top and the left side of the grid are used to locate each individual byte of data: The top left is aa, top right is za, and bottom left is az. You get the idea, I'm sure. . .

We shall begin with a simple filesystem of a sort that most users are familiar with: One that will need defragmenting occasionally. Such filesystems, which include FAT, remain important to both Windows and Linux users: if only for USB flash drives, FAT is still widely used - unfortunately, it suffers badly from fragmentation.

  

We add a file to our filesystem, and our hard drive now looks like this:


  a b c d e f g h i j k l m n o p q r s t u v w x y z

a T O C h e l l o . t x t a e l e 0 0 0 0 0 0 0 0 0 0

b 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

c 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

d 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 T O C

e H e l l o , _ w o r l d 0 0 0 0 0 0 0 0 0 0 0 0 0 0

f 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

 

(Empty rows g-z ommitted for clarity)


To explain what you see: The first four rows of the disk are given over for a "Table of contents", or TOC. This TOC stores the location of every file on the filesystem. In the above example, the TOC contains one file, named "hello.txt", and says that the contents of this file are to be found between ae and le. We look at these locations, and see that the file contents are "Hello, world"


So far so good? Now let's add another file:


  a b c d e f g h i j k l m n o p q r s t u v w x y z

a T O C h e l l o . t x t a e l e b y e . t x t m e z

b e 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

c 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

d 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 T O C

e H e l l o , _ w o r l d G o o d b y e , _ w o r l d

f 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

 

As you can see, the second file has been added immediately after the first one. The idea here is that if all your files are kept together, then accessing them will be quicker and easier: The slowest part of the hard drive is the stylus, the less it has to move, the quicker your read/write times will be.

The problem this causes can be seen when we decide to edit our first file. Let's say we want to add some exclamation marks so our "Hello" seems more enthusiastic. We now have a problem: There's no room for these exclamation marks on our filesystem: The "bye.txt" file is in the way. We now have only two options, neither is ideal:

  1. We delete the file from its original position, and tack the new, bigger file on to the end of the second file - lots of reading and writing involved
  2. We fragment the file, so that it exists in two places but there are no empty spaces - quick to do, but will slow down all subsequent file accesses.

To illustrate: Here is approach one


  a b c d e f g h i j k l m n o p q r s t u v w x y z

a T O C h e l l o . t x t a f n f b y e . t x t m e z

b e 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

c 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

d 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 T O C

e 0 0 0 0 0 0 0 0 0 0 0 0 G o o d b y e , _ w o r l d

f H e l l o , _ w o r l d ! ! 0 0 0 0 0 0 0 0 0 0 0 0

 

And here is approach two:

 

  a b c d e f g h i j k l m n o p q r s t u v w x y z

a T O C h e l l o . t x t a e l e a f b f b y e . t x

b t m e z e 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

c 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

d 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 T O C

e H e l l o , _ w o r l d G o o d b y e , _ w o r l d

f ! ! 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

 

Approach two is why such filesystems need defragging regularly. All files are placed right next to each other, so any time a file is enlarged, it fragments. And if a file is reduced, it leaves a gap. Soon the hard drive becomes a mass of fragments and gaps, and performance starts to suffer.

Let's see what happens when we use a different philosophy. The first type of filesystem is ideal if you have a single user, accessing files in more-or-less the order they were created in, one after the other, with very few edits. Linux, however, was always intended as a multi-user system: It was gauranteed that you would have more than one user trying to access more than one file at the same time. So a different approach to storing files is needed. When we create "hello.txt" on a more Linux-focussed filesystem, it looks like this:


  a b c d e f g h i j k l m n o p q r s t u v w x y z

a T O C h e l l o . t x t h n s n 0 0 0 0 0 0 0 0 0 0

b 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

c 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

d 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 T O C

e 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

f 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

g 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

h 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

i 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

j 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

k 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

l 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

m 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

n 0 0 0 0 0 0 0 H e l l o , _ w o r l d 0 0 0 0 0 0 0

o 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

p 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

q 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

r 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

s 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

t 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

u 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

v 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

w 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

x 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

y 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

z 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

 

And then when another file is added:


  a b c d e f g h i j k l m n o p q r s t u v w x y z

a T O C h e l l o . t x t h n s n b y e . t x t d u q

b u 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

c 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

d 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 T O C

e 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

f 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

g 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

h 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

i 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

j 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

k 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

l 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

m 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

n 0 0 0 0 0 0 0 H e l l o , _ w o r l d 0 0 0 0 0 0 0

o 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

p 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

q 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

r 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

s 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

t 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

u 0 0 0 G o o d b y e , _ w o r l d 0 0 0 0 0 0 0 0 0

v 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

w 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

x 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

y 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

z 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

 

The cleverness of this approach is that the disk's stylus can sit in the middle, and most files, on average, will be fairly nearby: That's how averages work, after all.

Plus when we add our exclamation marks to this filesystem, observe how much trouble it causes:

 

  a b c d e f g h i j k l m n o p q r s t u v w x y z

a T O C h e l l o . t x t h n u n b y e . t x t d u q

b u 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

c 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

d 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 T O C

e 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

f 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

g 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

h 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

i 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

j 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

k 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

l 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

m 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

n 0 0 0 0 0 0 0 H e l l o , _ w o r l d ! ! 0 0 0 0 0

o 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

p 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

q 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

r 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

s 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

t 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

u 0 0 0 G o o d b y e , _ w o r l d 0 0 0 0 0 0 0 0 0

v 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

w 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

x 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

y 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

z 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

 

That's right: Absolutely none.

 

The first filesystem tries to put all files as close to the start of the hard drive as it can, thus it constantly fragments files when they grow larger and there's no free space available.

The second scatters files all over the disk so there's plenty of free space if the file's size changes. It can also re-arrange files on-the-fly, since it has plenty of empty space to shuffle around. Defragging the first type of filesystem is a more intensive process and not really practical to run during normal use.

Fragmentation thus only becomes an issue on ths latter type of system when a disk is so full that there just aren't any gaps a large file can be put into without splitting it up. So long as the disk is less than about 80% full, this is unlikely to happen.

It is also worth knowing that even when an OS says a drive is completely defragmented, due to the nature of hard drive geometry, fragmentation may still be present: A typical hard drive actually has multiple disks, AKA platters, inside it.

Let's say that our example hard drive is actually on two platters, with aa to zm being the first and an to zz the second:


  a b c d e f g h i j k l m n o p q r s t u v w x y z

a 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

b 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

c 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

d 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

e 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

f 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

g 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

h 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

i 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

j 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

k 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

l 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

m 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

 

  a b c d e f g h i j k l m n o p q r s t u v w x y z

n 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

o 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

p 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

q 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

r 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

s 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

t 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

u 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

v 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

w 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

x 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

y 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

z 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0


The following file would be considered non-fragmented, because it goes from row m to row n, but this ignores the fact that the stylus will have to move from the very end of the platter to the very beginning in order to read this file.


  a b c d e f g h i j k l m n o p q r s t u v w x y z

a T O C h e l l o . t x t r m e n 0 0 0 0 0 0 0 0 0 0

b 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

c 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

d 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

e 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

f 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

g 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

h 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

i 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

j 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

k 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

l 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

m 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 H e l l o , _ w o

 

  a b c d e f g h i j k l m n o p q r s t u v w x y z

n r l d ! ! 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

o 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

p 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

q 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

r 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

s 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

t 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

u 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

v 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

w 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

x 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

y 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

z 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

 

I hope this has helped you to understand why some filesystems can suffer badly from fragmentation, whilst others barely suffer at all; and why no defragging software came with your Linux installation. If not, I'm always open to suggestions 

You may also be interested in fighting fragmentation on Linux and why deleting just isn't enough.

 



linnet 2012-02-08 16:33 发表评论
]]>
John Carmack Interviewhttp://www.shnenglu.com/linnet/archive/2009/06/18/87928.htmllinnetlinnetWed, 17 Jun 2009 19:33:00 GMThttp://www.shnenglu.com/linnet/archive/2009/06/18/87928.htmlhttp://www.shnenglu.com/linnet/comments/87928.htmlhttp://www.shnenglu.com/linnet/archive/2009/06/18/87928.html#Feedback0http://www.shnenglu.com/linnet/comments/commentRss/87928.htmlhttp://www.shnenglu.com/linnet/services/trackbacks/87928.html?/a>

藏在q后的h

John Carmack是一个几乎不需要介l的人——Id Software的创始h。该公司开创了W一人称击cL戏,q且独立地改变了PC动作游戏的定义。从Commander Keen到DoomQ再到QuakeQCarmack/id的游戏吸引了数百万玩安宵达旦地在计算机屏q前击退他们的对手?/p>

? q?2月底QFiringsquad和Gamers.com获得了一个难得的ZQ与John Carmackq行一ơ长旉的、面寚w的访谈。我们利用这ơ机会进一步了解了John作ؓ一个普通h——而不是一个程序员——的一面。我们还向John 询问了他和Id未来的发展计划,以及他对于游戏行业的现状及其发展方向的看法。下面问题以_体字显C,John的回{以普通文字显C?/p>

Firingsquad: 你今q多大?

John: 29岁?/p>

FS: 你是否认为结婚会影响你的~程工作Q?/strong>

John:不。如果这h我就不会l婚了?/p>

FS: 那么你和Anna KangQJohn的妻子,原来在id software供职Q通常是怎样渡过一天的Q?

John: 最q我们一直在搭徏一些火模型。我接受了一ơ访问,有h问我在十几岁时的情况Q我提到了火、炸弹和一些类似的物品。我惌很有,我喜Ƣ这栗当Ӟ 现在您可以到互联|上?#8220;我想要这个、这个和q个?#8221; 他们现在拥有比我以前所用的强大得多的火——这些动力强劲的火箭h每秒2000牛顿的推动力Q?/p>

FS: 你和Anna会进行一对一的网l对战吗Q?/strong>

John: 在昨天我们q一块玩了Appleq个游戏QAnna与其中的一个玩家开玩笑——她t了他一脚。我当时正在与其他一些h开会,所以他们玩了一会,而她一? 在逗他玩。但是当我开完会Ӟ他们把我Dq个家伙的房间里Q让我坐下。我q行了反击,取得了一ơ小规模的胜利。正如我所预料的,我听C她从建筑物的? 一侧发出的诅咒声。她仍然认ؓ另外一个家伙在游戏最后魔术般地获得了技能!

FS: 我阅M你在以前接受的一些访谈的内容Q其中你提到了炸弹等物品。你是一个不听话的小孩,对吗Q?/strong>

John: 是的Q现在回忆v来,十几岁时的我在很多方面就像是一个傲慢自大的讨厌鬼。这些年来我已经逐渐成熟h。现在回惛_q_我认为当时的我表现ƈ不好。我的意思是Q尽我很聪明——我当时已经开始编写计机E序Q但是我l常分不清是非?/p>

FS: 如果你需要给在自q学校中存在像你这L孩子的h提点Q你会说什么?

John: 我已l清楚地知道了我惌做什么。我惌~程——我?2岁时深知这一炏V我知道Q这是我惌做的Q而且我清楚地知道我想要实现的目标。你不能L说世 界亏Ơ你惌得到的。但是的有些时候需要ؓ一个孩子提供一些必要的帮助。我的父母从来没有真正地了解我,因而我没有得到我想要的计算机。我为此责怪了? 母亲近十年Q但是我们现在都已经淡忘qg事情了?/p>

? 时我感到非常沮Q因为我清楚地知道我惌做什么,但是我却无法做到。h们习惯于认ؓQ如果你惌从事计算机工作,你需要进入MITQ再C家公司工作, 成ؓ一名工E师Q遵?#8220;公认的发展道?#8221;。但是我从大学辍学了Q随后创Z我自q公司。我的弟弟选择了一条更加符合惯例的道\。他获得了一个学位,成ؓ 了一名股经UhQ而这正是我母亲希望他做到的。他q得不错Q但是ƈ不能像我一h有很多辆法拉利跑车来让父母感到自豪?/p>

我现在可以说Q我和我的母亲现在相处得很好。我们可以讨些事情和回忆q去Q她意识到她在某些方面犯了错误。但是这有什么用Q她不会再抚d的孩子?/p>

Carmack 对于q态度

FS: 你现在已l非常富有——这对你有什么媄响?

John: 我现在拥有的财富以让我无需再l工作;我的不需要再工作了。这U自q感觉非常好。因为只要你拥有_的钱来维持你的生z,你就不必听命于Q何hQ也不需要想法设法赚更多的钱。尽有很多人已l非常富有,但是他们仍然屈从于拥有更多胦富的诱惑?/p>

我基本上拥有我所需要的一切。我已经拥有_的胦富来l持我自己和我的家h的正常生z,因此Q没有Q何h、Q何公司可以对我生严重的影响?/p>

FS: 是否存在一些领域,你认Z可以利用你的财富施加影响Q?/strong>

John: 我尽量不像这栯虑问题。在推动其他事情斚wQ我量做到不要太主动。我希望直接解决事情的技术方面的问题。当然我可以用钱来解决一些事情,但是我更希望用直接的方式解决问题?/p>

q就是ؓ什么我不是一位很好的l理。我是一位工E师Q所以我惌直接解决问题。我希望把环境徏立一P以便更好的解决问题,管在很多情况下我意识到q需要完成更大规模的目。但是这q不是只有我才能做到的?/p>

我非常擅长这个领域的工作Q而且恰好我很喜欢它,因而我q不惌{到其他的领域。我的胦富以让我提前退休,但是我喜Ƣ我现在的状态?/p>

在这斚w我很反感某些公司的做法。一些创始h原先是非常出色的工程师,但是现在成了他们的部门的ȝQ因而主要从事管理工作,而不是工E项目。同Ӟ他们所理的大部分员工在处理实际工作方面远q不如他们当初的水^?/p>

? 希望q样的事情永q不要发生在我n上。我希望永远处于行业前沿Q从事实际的开发工作。当Ӟ回到q后阅读资料、研I理论和获得更加q泛的视角也会带来一? 好处Q但是如果你不了解开发的具体l节Q例如工E项目与真实世界的联p,你就会变成一个只会夸夸其谈的理论家。你可以从理论家的所作所为和一个从事真正的 开发工作的工程师的工作之间看到q种巨大的差别?/p>

? q去的两个项目中Q我的时间被分成了几Dc我有大U三个月的时间进行纯_的理论研究。我目前正处于这个阶D,在这期间我需要与不同的hq行合作。随后我? 用大U?6个月的时间从事项目的开发工作。更多的x研究性质的工作对我来说相当重要,但是我ƈ不希望将我的大部分时间用于理论研I。我认ؓQ研I的关键 在于扑և一U新的方法,但是当您惌真正地采取行动时Q仅仅拥有这些理论知识是q远不够的?/p>

专注和灵?/a>

FS: 你对工作的专注让人惊叏V看来你是唯一适合现在q项工作的h?/strong>

John: 专注非常有用。在现在q个环境中,我认Y件是一U几乎最理想的介质。但是如果不做这一行,我可能会成ؓ一名工E师或者某U意义上的科学家。我可以从事M一U?#8220;科?#8221;?/p>

? 件具有很多与众不同的优点。从事物理试验的研究人员需要用一q的旉q行准备和制作工P然后q要׃q时间来分析试验l果。但是在开发Y件时Q你可以? 即看到运行结果。你只需要坐在那里对E序q行反复的调试。你可以立即q行E序。对于所有智力探索活动来_q是最Ҏ适应的工作方式。我很庆q自qzd q个软g业非常繁荣的时代?/p>

我再ơ想起当我还是一个年MhӞ我没有我惌的计机。我感到非常沮。我觉得 ?#8220;正在错过一个很好的Z”。我觉得自己应当~写q些游戏Q例如早期的Apple II游戏。我之所以感到由L沮Q是因ؓ我觉得自己错q了最x机。当然当时我q不知道我可以抓?#8220;下一?#8221;最x机?/p>

你读qSteven Levy写的《黑客》吗Q?/p>

FS: 读过Q这本书非常!

John: 我在十几岁的时候读了这本书。在看到W三章时Q我感到“天啊Q这才是我应该做的!”大约10q以后,我回惌v来自己当时的xQ?#8220;如果那本书有W四章,也许我会加入那个行业?#8221;q是一个非常有的x?/p>

现在看这D늻历会觉得很有意思。当我是一个年Mh时我觉得错过了自q最x机。因为当时是PC的早期发展阶D늚黄金时期Q我己没有抓住那ơ机会深感遗憾?/p>

FS: 你是否认为编E工作和想法{变ؓE序代码的过E激发了你对~程的兴?或者是你在Apple II和PC发展早期所玩的某些游戏Q?/strong>

John: 我可以说出我当时非常喜欢的游戏的名字Q但是我真正喜欢的是q行抽象的编E。我喜欢q项工作的很多独特之处?/p>

很多人加入游戏行业的原因是他们喜欢游戏Q而且乐于创新?/p>

? 对编E的热爱则来自于一U更加抽象的感觉。我可以从ؓLinux~写讑֤驱动E序中获得很大的乐趣。我q喜Ƣ编写数据库理E序或者其他程序,因ؓ在开? q程中L会遇C些有的问题。有些事情可以给我带来更多的满感。图像和游戏很可能是~程工作中最能给人带来成感的领域?/p>

FS: Z么呢?

John: 因ؓ你可以得到非常Ş象的反馈信息。当你编写一个图像算法时Q它可以Zl制一副图片。尽数据编E会通过其他的方式给Z满感,但是人类昄对可视的 对象和必通过W号理解的事物更感兴。这是图像编E极具吸引力的基本原因。但是我们必进行很多方面的研究。我喜欢q项工作的所有领域,但是游戏开发? 是会让你在克服一些极h战性的问题之后才能领会到它l你带来的满x?/p>

我在早期很喜ƢRPG游戏Q例如UltimasQWizardrys和所有类似的游戏。我为Apple II开发的一些非常早期的游戏基本上就是Ultima的翻版。我q喜Ƣ所有的l典x游戏?/p>

FS: 从某U意义上_你是否认?#8220;龙与C?#8221;是你所希望看到的、带有一定的文字和对话的游戏模式Q它是否像Quake引擎一P是一U可以在其中d各种内容的游戏结构?

John: 它就像是能够从头开始开发新的游戏,使用一U对你没有Q何限制的Ҏ?/p>

? 实上Q我们最初打将Quake开发ؓ一个RPG游戏——ƈ不是一个完全意义上的RPG游戏Q而是一个奇qL戏。但是因为Quake的复杂的开发流E,? 后来的发展完全偏Mq个轨道。我一直非常愿意说明我们在刚开始时Ҏ们所开发的游戏制定的目标。尽它们成Z与我们的目标截然不同的游戏,但是我很? 意最l的l果。我们不大可能在开发一Ƒ֥q?角色扮演游戏?/p>

FS: 我听说你减少了你?#8220;龙与C?#8221;的管理工作?/strong>

John: 从Wolfenstein开始,整个公司都在每个周末玩我们所开发的游戏。玩游戏的时间在我们开发Doom阶段有所减少。我们去q纯_ؓ׃开发了几款? 戏。但是它׃我们不少旉。要完成的工作,你必ȝ一天时间玩游戏Q再用一天时间准备,但是我现在不可能再ؓ其他的工作牺?0%的时间?/p>

FS: 你有一U特别的专注和灵感——你可以怎样改进一个算法或者技术。你多久会遇Cơ这L悟Q?/strong>

John: 我认为很多h都过于强调顿悟的重要性。顿悟的很重要Q但是只有在你清楚地了解一工作的来龙去脉之后获得悟。事实上Q很多出色的工作q不是顿悟的l? 果,而是辛勤工作的结果。很多h都误以ؓ悟是最重要的。有时候它的确是,但是?5%的情况下它仅仅是你对你所掌握的知识的冷静分析的结果?/p>

让工作成功的关键q不是一个天才的决策Q而是500个明智的选择。更加重要的是始l做出明智的决策。制定一个天才的决策和很多^庸的决策q不如在整个q程中始l制定比较明智的决策。你必须要做出很多正的军_?/p>

? 使在开发完Quake 3之后Q我的Q务清单上仍然有数千个有待q一步改q的l节。因此,关键在于了解所有必d成的工作Q进而找?#8220;最有效的击球点”。例?#8220;q些工作可以完成 大量的Q务,但是会带来一定的副作用?#8221;或?#8220;完成q项工作可能需要几天时_但是它会让其他一些环节变得不太稳定,因此我不会去做这工作?#8221;

我当然希望遇到顿悟——当时我可能正在做某工作,忽然间意识到可以采用一U更好的Ҏ。这的确非常有用Q但是我不能指望q种情况每天都会发生。实际上比较常见的情冉|Q当我回到家里时我可以告诉AnnaQ?#8220;今天我想Z一个新LQ?#8221;q种情况相当常见Q而且非常有用?/p>

开放源?/a>


FS: 很多人都认ؓ你是全世界最的游戏工E师之一。你认ؓ在今后几q中Q这个世界上是否q有_的Q务和深度来让你保持够的兴趣Q?/strong>

John: 当然Q还有很多难题需要解冟뀂目前,我正在利用我的很多闲暇时间开发一些基于Linuxq_的程序。我已经完成的一工作是为Linux~写两个3D驱动 E序Q即在这个^Cq行大量的编E。作Z名开发h员,q对我非常有用,因ؓ我做了大量高层次的、APIU别的编E工作,但是我应当l深入到pȝ? 层。通过开发设备驱动程序,~写一些深入到g内部的部|E序可以开阔我的眼界,让我可以从整个流E的角度看待各项工作。有很多E序员只知道层的开? ҎQ而不知道E序工作的基本原理,q主要是因ؓ他们无法“看到”pȝ的内部结构?/p>

我正在考虑着手的另外一工作是(因ؓ我喜Ƣ清楚地从最高层到最 底层的所有技术细?׃些时间开发我自己的网l堆栈,以便q行研究和学习。我q做了一些我惌试的试验,以便在串行驱动程序和分组驱动E序的层ơ上? 解操作系l实际上\由时间和排序所支出的开销。我希望从我们通常用于通信的协议层下面获得一些信息?/p>

FS: 仅仅是在Linuxq_上,q是也包括Windows和Macq_Q?/strong>

John: 关键是在Linuxq_上开展这些工作更加方便,因ؓ你能够获得你所需要的所有信息。尽Linuxq不能取代Windows成ؓL的桌面操作系l,但是它的具有一些独C处?/p>

吸引我这样做的原因是有h为Matrox昑֍~写了一? Linux驱动E序。我对它q行了测试。显然它不能兼容Quake 3。因此我军_它下蝲下来仔细研究。我对它的出色的工作机制留下来深ȝ印象。尽它的速度不快Q但是它几乎可以说是一个功能齐全的、高质量的程序。但 是它在纹理的交换方式斚w存在明显的缺陗他们交换的是最q用的U理Q而不是最用的U理Q因而你可以在屏q上看到明显的失真?/p>

我很清楚它的工作方式Q因而我?#8220;太好了,它提供了源代码?#8221;因此我决定下载源E序、进入CVS库和所有文Ӟ按照我的x改进代码Q发现程序缺Pq将其消除!整个q程非常明确?/p>

由此得出的结论是QApple的驱动程序曾l也存在相同的缺陗? 因此我们可以在两个驱动程序中发现相同的缺P但是对于LinuxE序来说Q我可以直接q入源程序,消除q个~陷。尽在很多层次上仍然存在不障,? 是具备这U能力非帔R要。从Ҏ上说Q如果你在用一个源码完全开攄pȝ旉C一些问题,你可以花旉自行解决q个问题。你不需要等待别人的帮助。你 不需要低C气地L帮助Q也不需要等待补丁发布,而通常q样做会降低旉的利用效率,但是如果某个问题真的让你头疼不已Q你可以直接查看源代码,解决q? 个问题。这会让人感到非常振奋?/p>

关于Linux的其他问?/h2>

FS: q就是你对待问题的态度——亲手解决问题。你q不想等待别人来发布一个升U程序,而是愿意自己动手?/strong>

John: 是的Q这正是ؓ什么在我对|络或者其他问题进行研I时Q我更愿意用Linuxq_。如果需要,你可以取出操作系l的某些部分Q告诉自己:“好的Q现在我惌把这一部分完全删除Q因为我惌做一个试验?#8221;你可以获得自由发挥的I间?/p>

我认为,在未来几q中QY件的可用性将日益得到重视。有很多l济势与此有关。你看Chg?00元的PC?0元的Windows使用许可。如果h们只x行一些非常基本的dQ他们很可能希望获得一个免费的操作pȝ?/p>

Linux界有很多疯狂的支持者,他们的观Ҏ时缺乏够的理性。但是,在关于Linux的实际优势的宣传中的存在着一些真实情c?/p>

FS: 你很x技术,而且你鞭{自׃断进步。但是你是否考虑q找一个上司来帮助你学习新的技能?

John: 我知道在某些工作上聘L理h员可以带来很多好处。我们在W三季度末聘请了Graeme来帮助我们管理部分业务。但是它q没有对我的工作方式产生实际的媄 响,因ؓGraemeq没有蛮横到q涉每项具体的工作。事实上Q我自己对工作的安排往往好过大部分管理h员给我制定的工作计划?/p>

我也意识C我的个hl织能力的局限性。我会将几千件事情放在我 的Q务清单上Q而且常常是从头开始对所有事情进行排序。我的确认ؓ如果有个人的主要工作是保我知道和了解所有这些Q务的重要性就好了Q因为每个h的组 l能力都存在一定的不。你自己可能不会q样做,但是有些事情是因ؓ你一直不愿意d理而最l汤。我已经意识C让某个h帮我安排工作的好处?/p>

最q我在找一个h来对一些程序——尤其是Linux驱动E序—? 的OpenGL性能q行兼容性测试。我为此~写了大量的E序Q我也尽量设法将qg事负责到底,但是我知道我需要采取多U方法来实现我的目标。我希望~写一 个完的E序Q但是我也深深意识到Q在我的有限的时间里Q我不可能做到面面俱到?/p>

有时候有一个专门负责帮助你的助手会带来很大的方ѝ但是这Ҏ来说仍然只是一个理Z的问题。我怿q样做会有所帮助Q但是还没有看到实际的效果?/p>

FS: Zl织能力以外Q能否将一位管理h员视师Q你觉得可以从谁w上学到对自己有用的知识Q?/strong>

John: 实际上,我几乎向每个人学习。这是十几岁时的我和现在的我的主要区别之一。当我十几岁Ӟ我的x是:“我比我周围的人都聪明Q因此我完全不用理会别h? 什么?#8221;我在大学的几个学期中都是如此。现在回惌v来,我觉得我采用了错误的处世Ҏ。是的,也许我的比教授聪明Q但qƈ不意味着我不能从他n上学到对 我有用的知识?/p>

现在我的处世Ҏ是,我愿意向与我一同进行编E的M同事w上学习知识。我很珍惜我与Brian Hook一同工作的时光。我从他w上学到了一些更好的C语言~程标准和如何更加严格地使用struct和const——而我q去q不q样做。这Ҏ非常? 要,因ؓ我通过他提高了自己的技术水q뀂另外还有Graeme——我看到他从Java库中q速地扑ֈ自己所需要的信息——而我往往是从头做P到处查找q? 些信息,因而花的时间比他长得多?/p>

某hq要成Z?#8220;更好?#8221;开发h员或者程序员才有值得你学习的知识Q这是我在过?0q中获得的一个非帔R要的l验。到处都有值得你学习的? 识。如果你拥有正确的学习态度Q那么把自己攑֜一个信息丰富的环境中会对你很有帮助。如果你想从M地方获得你想要学习的知识Q而不是寻找一个将所有信? 都集中到一L有用信息 “宝库”Q你必须能够从你所能接触到的Q何地Ҏ集对你有用的信息?/p>

在开发Quake的过E中Q我们聘请了Michael Abrash。我为此Ȁ动不Ԍ因ؓ我曾l通过他以Dobbs博士为笔名发表的很多文章中学习了大量基本的PC~程技能——包括汇~语a和图像编E。因? 我对能够于他合作感到非常高兴。我从他那里又学C很多知识Q但是有的是,我有一阵子感到非常不舒服,因ؓ他在~程斚wҎ非常Z。Michael? 知识非常渊博Q但是我的长处是学习新知识的能力很强?/p>

因此Q我几乎从我合作q的所有程序员w上都学C很多知识?/p>

FS: OKQ你刚才提到从周围搜集有用的信息。你怎样看待非技术性的信息来源——例如书c和电媄Q?/strong>

John: 我这几年来最喜爱的书是由Vernor Vinge撰写的《A Deepness in the Sky》。在电媄斚wQ我不知道我所说的是否有参考意义。我ƣ赏了大部分好看的电影。《玩hd?》非常出艜y—我很喜Ƣ这部电影?/p>

FS: 《黑客帝国》呢Q?/strong>

John: 《黑客帝国》非常精彩。我喜欢所有精彩的U、动作和cM的电影。我不是很喜Ƣ意义深ȝ电媄。我看电q目的Ua是ؓ了娱乐。有些电影实际上改编自我们开发的游戏。我们的游戏相当于计机游戏界的施瓦辛格电媄?/p>

Quake 和简z?/h2>

FS: 你认Zh们ؓ什么喜ƢQuake 3?

John: 我们希望通过Quake 3辑ֈ的目的就是让你可以在玩游戏时全n心地投入其中。对于华丽设计或者其他特点的吹嘘Q以及试囑֜游戏上强加一个传奇或者故事的做法毫无意义。一个游? 的真正h值在于让你在玩游戏时感到有趣。关键ƈ不是击|游戏Ҏ或者完成某Q务,而是要让战斗真正有趣?/p>

必须有些让你惌采取行动的Q务。h们不会因为玩垒球游戏而真的去玩垒球;必须有一个本w很有意思的战斗。我认ؓ我们在这斚w做得不错。我们期望,q且的确从我们的拥护者那里得C大量的反馈信息?/p>

肯定有些玩家希望玩更加复杂、更加具有挑战性的游戏。对于游戏来_q是一个可行的发展方向Q但是它可能会导致游戏内核的发展停滞不前。你可以在玩 飞行模拟游戏时体会到q一点,因ؓq些游戏要求你在开始游戏之前阅LO长的使用手册。而在q去的飞行模拟游戏中Q你要做的就是蟩q飞机、v飞和击。这? 游戏可以l玩家带来真正的快乐。而在有些严肃的模拟游戏中Q你必须让自q信你真的辑ֈ了娱乐的目的?/p>

也可以像q样来开发第一人称击游戏Q即要求玩家了解现在发生的情况,各种工具的用方法,以及各种战略{——而玩家ƈ不想要知道这些,他们希望? 只是坐下来玩游戏。也许有很多人喜Ƣ这L游戏Q但是我q如此。我没有旉学习游戏的各U知识。我从来不玩那种需要学习大量复杂的知识的游戏。我只喜? 玩一些简单的、迅速上手的游戏Q它们让我可以立卌入游戏,享受一D늾好时光。我认ؓ与我一L游戏玩家是上面那U喜Ƣ复杂游戏的玩家的五倍以上?/p>

FS: 你最q一ơ玩过2时的、非id出品的游戏是什么?

John: 很可能是Nintendo 64q_上的F-Zero X ——一ƾ赛车游戏?/p>

FS: 你是否考虑q开发一ƾ赛车游戏?

John: 我们曄在推出Wolfenstein 之后讨论q这个问题? 当时我正在研I一些三l象?landfield技术,我们制作了一些汽车行驶的单演C。但是我们从来没有采取Q何措施来这个想法付诸实施。但是如? 我们真的开发一ƾ赛车游戏,那肯定也属于非常有趣的赛车类游戏——例如F-Zero游戏Q而不是非怸肃的赛R模拟游戏。这里我要再ơ指出,游戏界有很多 有效的发展途径Q但是我有我自己的个人爱好。我的爱好恰好让我们既可以开发出成功的游戏,又可以让游戏h我所认ؓ的真正的׃性?/p>

Id公司的下一ƾ游?/h2>

FS: 你认Z的个人爱好ƈ不是开车,而是火箭发射器?

John: 游戏的目的就是娱乐。模拟游戏从来没有让我获得愉快的感觉Q包括飞行模拟、赛车模拟和所有类似的模拟游戏。我知道它们在某些方面具有一定的׃性。它肯定不会像我说的Q?#8220;q些游戏非常枯燥Q所有h会喜Ƣ它?#8221;。但是,它们q不是我喜欢的游戏类型?/p>

在我刚刚喜欢上RGP游戏Ӟ我的生活因ؓ其他一些事务而变得越来越忙碌Q因而我没有很多旉用来玩游戏。我一直都很喜Ƣ简单的卯u游戏。尽从 Gauntlet到Quake 3Q它们已l发生了很大的变化,它们的基本理念仍然没有改变——你需要四处奔跑、打败敌人、拾h器、及时进入下一兟뀂这是一个从Ҏ上非常有效的、核? 的、首要的游戏元素Q我对将相对较ؓcM的游?例如Quake、Quake 2和Quake 3)制作成具有不同风格的游戏q不觉得有什么不好。就像L人玩赛R游戏和飞行游戏一P现在也L会有各种各样的第一人称击游戏。我认ؓ我们的每个项 目都得到了重要的收获。我们的下一个游戏可能会采用一U完全不同的方式Q因为ƈ不是公司中的每个人的x都与我一栗因此下一ơ我们可能会E微改变一下我 们的{略Q但是我们还没有做出最l的军_?/p>

FS:它仍然是一Ƅ一人称游戏吗?

John: 它很可能仍然是一Ƅ一人称游戏Q但是它不一定是一Ƒ֊作游戏。Graeme和我一直在讨论很多游戏的设计创意,q且探讨了我们目前拥有的各种选择Q但是我们还没有准备好讨ZQ何细节。它很可能是一Ƅ一人称游戏——这几乎是肯定的?/p>

FS: 我刚才在惻I如果idq入RTS或者其他类型的游戏领域Q可能会出现非常有趣的情况——这像Blizzard从RTS转向开发动作RPG一栗?/strong>

John: 我不是一个真正的实时战略游戏玩家。实际上Q我从来没有真正坐下来玩q一ƾSLG游戏。这不是我喜Ƣ的cd。它与第一人称游戏完全不同——后者是最有现场感的游戏?/p>

实时战略游戏是最没有现场感的游戏之一。你只是指挥你的军队Q而不是你自己在游戏中冲锋陷阵。我x们还是会l箋开发第一人称cL戏。从W一人称? 戏{向第三hU游戏只是一步Q但是我认ؓ肯定有其他一些公司更加擅长开发第三hU游戏,例如那些在开发指挥战略方面更具实力的公司?/p>

与游戏行业的很多Z同,我ƈ没有在计机上制作电qx。而正是这U想法导致了很多公司陷入困境。有些游戏设计h员认Z们是导演Q而我认ؓ? 应当摆正自己的位|。我只是一名游戏设计师Q而不是一名电影导演。这也是促很多公司转向W三人称游戏的原因。第三hU显然更适于昄人物动画q样的特 效。Steed肯定希望开发更加重视动ȝ游戏Q但是这可能q不是我们的下一ƾ游戏的开发重炏V我们还没有最l决定,但是我肯定将l箋开发第一人称游戏?/p>

关于游戏行业

FS: 你把在计机上制作电p?#8220;很多公司陷入困境的原?#8221;的说法很有意思,因ؓ有很?D昑֍公司——例?dfx和Nvidia——实际上?#8220;把好莱坞引入台式?#8221;作ؓ他们的宣传重炏V?/strong>

John: q个现象存在很多有趣的问题—? 一个是以最高的质量发挥今天?D引擎的威力所需要的人力正在q速接q好莱坞所需要的电媄布景人员的数量。就像现在,Quake 3q远没有真正地达到我们所能制作的视觉效果的最高水qI但是只有q样我们才能保持_快的开发速度?/p>

但是如果有hҎq个圣诞节推出的产品了解了今q的技术水q之后说Q?#8220;我想要制作出视觉效果最惊h的、最接近电媄的游?#8221;Q那么他可以制作q超 qh们目前所看到的视效水q的游戏。相关的技术都是现成的。这是q去一q中游戏行业的发展趋势,其是一些特D的效果Q例如各个层ơ的完全U理渲染Q需 要场景设计h员加入进来,以不同的方式设计他们的场景,以及利用模型构徏所有这些特效。这L努力现在可以被用在计机游戏中。而过dƈ不是q样?/p>

在我们开发Doom和QuakeӞ我们q没有能力投入如此多的h力。如果你需要设计一个房间、一条走廊和另外一个房_你应当采用的Ҏ是:走廊、模块、模块、天花板。这是你所能做的一切,因此我们所能开展的工作受到了严重的限制?/p>

FS: 你L支持以规模较的团队开发游戏;q是否意味着孩子们可以在自家的R房中和伙伴们一同开发游戏?

John: 我们q没有充分地发掘出所有可能的游戏U类。很多h在很多方面对游戏行业有所不满Q而事实上的确很多发行商ƈ不喜Ƣ发行创意新颖的游戏。来? Definition 6的Chris Hecker 一直在用多U方法推q物理游戏;他开发了一些新奇的游戏。他所开发的游戏使用了一个新颖的创意。他q制作了一个简短的游戏演示。这个游戏将物理作ؓ它的? 心原理,但是它ƈ不是?#8220;让我们将物理加入一个第一人称设计游戏”一栗它是一个非常独特的游戏。它采用了一个很好的游戏设计Q而且与物理学密切相关。但 是发行商对它一炚w不感兴趣?/p>

q的非常糟p,但是与此同时Q我们也可以从其他一些事情上看到一些积极的q象Q例如有些h通过在互联网上销售他们所开发的一些简单的游戏而赚? 大钱Q例如每q通过被下载的游戏获得几千元的收入。我Ҏ感到非常振奋Q因为我们可以清楚地看到Q有些h可以通过开发主之外的游戏赚钱Q这U情况因? 互联|而成Z可能?/p>

我们在公司创建早期以׃n软g的Ş式获得了成功。通过最初的Keen三部Ԍ我们每年的收入达C10万到15万美元。通过W二个三部曲Q我们每q? 借助׃n软g获得的收入达C50万美元。这q是在我们进入正式的商业销售市Z前。现在看来可以比当时做得更加。这的确很有意思。但是由于货架上需 要占用成本费用和货架I间Q发行商q没有兴发行创意新颖的游戏。我信肯定有一些新的游戏种cL准备崭露头角Q但是面临着一些阻力?/p>

Id不是一个发行商

FS: 你对Halo感兴吗Q?/strong>

John: 我看q它的媄片;看v来非常出艌Ӏ现在的问题是无法根据屏q截图来判断一个游戏的好坏Q因ZQ何一个不够胜ȝ渲染引擎都可以渲染某个特定的场景。关键在 于各个对象能否无~地q接C赗Bungie拥有很多杰出的游戏设计h才。他们从事游戏行业的旉和我们差不多。他们很多年来就像是id在Macq_? 的媄子。但是现在他们已l走在了前面Qƈ在PCq_上取得了一些重要的成果。他们表现得非常不错?/p>

FS: 再回到开创新的游戏种cd来自发行商的d的话题,你是否有兴趣帮助推广新的游戏U类Q例如提供一些资金来发行q些游戏Q?/strong>

John: 我肯定不xZ个发行商。Id内部p个问题讨Z很多q。五q以前,所有的游戏开发公叔R希望成ؓ发行商,因ؓ当时有很多小型发行商。后来这些小型开 发商逐渐被合qؓ量大型发行商。我们就q个问题讨论了很长时_而且我们自己发行了最初的Quake׃n软gQ但是当与发行商达成协商之后Q我们很可能 损失了一些利润,因ؓ发行商的业务理往往相当p糕。但是最后所有h都达成了一致意见——尤其是在我们看到很多发行商的合q和倒闭之后——做一个开发商? 做一个发行商好得多。因Y件开发商是这个行业中比较清楚的部分,你只需要交付CDQ再通过邮g接收支票。但是,作ؓ一个发行商Q你需要处理行业中的很? 你根本不x触的混ؕ部分Q例如代理商在取走ƈ售出你的产品之后付费{。我一点也不想接触q方面的业务?/p>

FS: 或者利用你的媄响力来说服一些发行商Q你知道Q也怽应该利用q个Z?/strong>

John: 我不会投入太多。我会对q样的事情时发表一些意见,但是我不会对一些我知道没有_的时间和_֊来努力的事情提出承诺。事实上Q这对于我保持对主要工作 的专注非帔R要。我愿意不去理睬大量的琐事。这一炚w帔R要,因ؓ如此多的事情都可能需要占用我的时间。可以从很多面;cM处境的h的生zM看到q样做的 重要性:整天都有Z停地找他们,从而得他们无法开展Q何工作,因ؓ惌辑ֈ某个目的的h会给他们拨打电话和发送电子邮件——对他们q行讉KQ或者请? 们提Z个业务徏议?/p>

有时候我会因为没有完成更多的工作而感到内疚。尤其是在即到来的一q中Q有很多不同的硬件设计工作需要完成,而且每个人都没有一个明的发展? 向。我告诉自己Q我应当参与到开发工作中Q帮助所有h达成一致意见,因ؓ我的C使得我比较适合扮演q样的角艌Ӏ微软在很多斚w很乐于听从我的徏议,很多 g公司肯定也愿意这样做。他们对我存在一定程度的重。但是在开发Quake 3期间Q我没有旉来从事这斚w的工作?/p>

现在我可以四处宣传一些想法,但是我深知,即是现在,我也不能完全投入q项工作Q因为尝试ƈ带领整个行业沿着我所希望的方向向前发展实际上是一个全职的工作。我q没有狂妄到认ؓ世界没有我就转不了。因此我惌说的是,我会量提供帮助Q但是我不会全n心地投入q项工作?/p>

关于Trinity

FS: 让我们换个话题,我读到的一文章提到在Quake 3成功推出之后Q你准备花更多的旉研究引擎?/strong>

John: 我目前正在开展多引擎研I工作?/p>

FS: Trinity是其中之一吗?我想Z一直对“Trinity”有些qh不解?/strong>

John: 我一直不知道Z么每个h都对Trinity感到qh不解。在推出Quake之后Q我开始研I新的渲染技术,Z都将其称?#8220;下一个引?#8221;或者其他名U? Michael Abrash我们采用Intel的做法:用一条附q的x命名你的下一个项目。达拉斯有条名ؓTrinity的河Q所以我们就下一个项目的名字取ؓ “Trinity引擎”。当Ӟ我们最l没有将其用于某个项目,因ؓQuake II是Quake I的箋作,而且我没有在Quake II上用[Trinity]Q因而没有Q何一个项目采用了q项技术。刚才我们谈C我当时所做的工作。在开始开发Quake IIIӞ我针对不同的渲染技术编写了六个不同的研I引擎?/p>

但是q仍然只是我所从事的研I工作。其中包?个三l象素项目,1个空间扭曲项目,1个照明图目Q其中的一部分工作成果后来成ؓ了Quake III引擎?/p>

有一件事一直是id和我的技术指导工作的真正实力之一。你可以? C些公司紧紧抓住某个聪明的创意不放Q有些你可能耳熟能详的游戏则是以一个创意ؓ核心q行游戏开发。而我q不受限于某个特定的创意的束~。正如我刚才所 说的Q在开始开发Quake IIIӞ我有六个不同的Q务需要完成。我观察了所有这些Q务,然后对自pQ?#8220;q些d更加单明了?#8221;但是我们为Quake III所做的工作实际上是很多Ҏ中的一U比较正的Ҏ。我现在q有很多d需要完成。但是没有h会在上面贴上法标签Q所以我需要亲自评估所有这些不 同的d?/p>

三维象素和曲U?/a>

FS: 你刚才提C三维象素Q而且你正在开展这斚w的研I。你是否认ؓ3Dg公司应当x三维象素加速?你怎样看待已经推出的三l象素游戏,例如“三角z部?#8221;Q?/strong>

John: 三维象素开发?我过ȝ写过一些三l象素引擎。实际上Shadowcaster——即Raven的最初名U——的早期版本中就曄使用了三l象素地面。但 是在我们重新~写该程序,以便更多C用多边ŞӞ我们三l象素地面删除了。用三维象素技术显C对象可以带来一些实际的好处Q因为它可以通过多种方式? 您提供完整的U理和轮廓细节。我在刚开始开发Quake III时编写了q两个三l象素引擎,我当时认为我可以让它们完全通过软gq行Q但是它只能提供相当低的分L率。根据你所能达到的水^Q以及硬件多边Ş的生 成速度Q在q种情况下ƈ没有必要使用q项技术?/p>

我分析了内存存取模式Q你可以用硬件做一个三l象素光q追t器Q它所使用的硬件资源远q少于我们现在在q行各种三角形光栅处理时实际所用的资源。我 认ؓ它在很多情况下可以提供更加具有吸引力的视觉效果。但是它的确很难理解Q因此我不太愿意向h们推荐这L技术。我知道我做了一些介l性的演示Q但? PC行业能达到现在的g水^的根本原因是我们都可以借鉴SGIq个例子。我们拥?#8220;q显然可以发挥作用,你看他们已经做到?#8221;的说法的实际证据Q因而问 题就在于如何挑战q最l超q他们的成W?/p>

如果要推荐某U全新的技术,有h会说Q?#8220;你应当让你的工厂生三维象素芯片Q你应当试q项技术,q向它投资几百万元?#8221;我不愿意q样做,因ؓ? 们ƈ没有一个完整的证据来表明我们在开发引擎时有必要采用这Ҏ术,也不能证明它可以带来_的渲染改q。如果有人真的做了一个三l象素开发工P你可? 得到它的深度|q将其与现有的三角Ş混合Q这可能会是一个有的中间步骤Q但是坦白的_我ƈ不认为它会占用如此多的硬件资源。由于现在每个h都在x 设法让自q产品独树一帜,所以可能会有h用这U技术作为宣传的噱头Q但是肯定仅此而已Q因Z们还不知道具体怎样使用q项技术?/p>

我认为现在有些非常具有潜力的技术,但是我ƈ不能肯定q就是未来的发展方向Q因为尽这些技术适用于环境的开发,而且你可以将它们用于一些出色的? 用,但是q不清楚它们是否适用于角色的开发。你可能会说Q?#8220;也许你必ȝ一个变形矩阉|个模型,然后当你对它q行Raycast渲染Ӟ让光U在接触 变Ş|格时{向?#8221;但是我还没有~写q这UY件版本。只有在我可以提供一个显CU技术的工作方式Q而且它看h比你直接可以实现的效果更好的情况下,? 才会向别人推荐这Ҏ术。我现在q没有时间来做这件事情,因ؓ我有一些迫在眉睫的研究d需要完成?/p>

但是我认Ҏ术具有一些重要的潜力Q有可能会成Z个有的发展方向。我现在真正惛_所有h介绍的技术是更高阶的表面渲染Q包括曲Uѝ细分表? {。现在每个h都对q些技术非常感兴趣。在使用了两q时间之后,我发现它们ƈ不像宣传得那样出Ԍ它们存在不少问题。你直接从外面往往发现不了Q对于一? 开发h员来_必须要深入内部才能看到这些技术的本质?/p>

如果你曾l读q相关的研究文献Q了解贝赛尔曲线的工作方式,你可能会惻I哦,q项技术非常出Ԍq正是我们在三角形单元之后的前进方向。你q没有意 识到所有的“实际”问题Q例如用无效的、标准的Q但是退化的边缘。你不能随意地划分一条曲U쀔—除非将其提高到两侧的^面。你不能通过调整其他部分q接 两个交叉炏V所有这些细微的不最l会造成很大的不便,其是在比较困难的情况下Q你很难全面C解发生问题的环节。三l象素技术也存在所有这些问题,q? 是我ؓ什么不愿意上台演讲Q描l未来的q景Q因为很多技术从表面上看来很Q但是当你深入到它们的内部时Q往往会得出相反的l论?/p>

对竞争的看法

FS: 既然你打重新开展研I工作,那么q是否会对id的下一ƾ游戏的推出旉产生一定的影响Q?/strong>

John: q取决于我们最l决定下一步采取什么措施。我目前正在开发的两种技术都适用于现有的Quake 3框架Q因此这些新技术可能会被加入到下一个品中?/p>

目前我们得到了一个非帔R要的ZQ即我们可以使用q个牢固的? E_的、可扩展的、灵zȝ引擎Q从而将我们的开发重Ҏ在游戏设计上Q而不需要考虑引擎的开发。。? 从一位管理h员的角度来说Q这无疑非常有利。但是,如果我们q样做,我现在正在开发的技术很可能不会在三q、四q甚x长的旉内被用于新的产品。对于技 术的发展来说Q这是相当长的一D|间。因此我们需要一个真正强有力的激励来促我们一些新技术加入到下一个品中?/p>

FS: 你是否通过玩其他游戏和观看竞争Ҏ的品来开展研I工作?

John: 我经常玩UnrealQ将来我可能会喜Ƣ玩Unreal Tournament——尽我现在q没有玩q款游戏。另外,我还会玩很多演示版的游戏。我不会q行一ơ真正彻底的调查Q玩遍市Z的每ƾ游戏。通常我只 是在别h玩最热门的新游戏时旁观一下。而我不会花很多的旉玩其他的游戏。当Ӟ我玩Quake 3的时间超Z其他M一ƾ游戏?/p>

FS: 公司中是否有专h负责q项工作Q?/strong>

John: Christian和Graeme会玩大部分新游戏。过LBrandon负责玩每个游戏。当他在idӞ所有信息都会从他那里过滤一下。Tim也经常出 于一些研I目的玩游戏QTim在浏览其他游戏方面表现得相当责Q而Graeme?Christian 玩其他游戏的主要目的只是׃?/p>

Carmack的研I?/h2>

FS: 你能否简单地介绍一下你的研I内容?

John:我现在正在开发的一个渲染引擎技术是一个更好的照明? 型。Quake 2 在计中d了发性照明,它可以带来真实的光线反射效果Q但是很多h实际上ƈ不喜Ƣ这U技术,因ؓ它消除了一些阴影,从而让更多的对象陷入黑暗之中,? 这比较W合实际情况——很多h都喜Ƣ更为明昄阴媄。在Quake 3中,我们重新只用了一个直接照灯Q这在一定程度上是因为我不想在曲U上q行有限元放计。另外一Ҏ术将让设计h员可以在M地方渲染U理和划? 轮廓Q从而让我们可以手动改进对象的显C效果。因此,主要有两个研I方向。实际上Q它们可以被l合CP或者共同用。它们都l我带来了一些有的技? N。这些技术可能会在我们的下一ƾ品中得到展示?/p>

我的其他一些研I内容与游戏引擎无关。我正在利用Web摄像头进 行一些视觉研IӞ例如一U头部跟t装|。我可以利用q种装置Q在游戏中加入一些有的内容。例如当你来回摇你的头时Q你在游戏中扮演的角色也会做出同L 动作。或者像一U支持全息照相的H口界面Q你只需要移动你的头Q就可以改变你的形象。我q不认ؓWeb摄像头用于够快的速度Q在没有显著延时的情况下? Cq目标,但是q仍然是一个相当有的技术。你可以利用面部表情{,它提高到新的水q?/p>

我认些技术的应用会过我的惌。所有短旉的不q箋都是 ׃输入/输出讑֤的变化所引v的。当Z开始用鼠标q行各种操作Ӟ事情发生了变化。我认ؓ“计算?#8221;已经具备_的实用性,以对对象?#8220;鼠标 ?#8221;的媄响。毕竟,有些事情只能通过鼠标完成Q而不能依靠键盘。这仍然处于自由猜想阶段?/p>

现在出现了一些有的应用Q因为我们现在运用了_强大的CPUq算能力Q可以进行一些相当复杂的计算。与很多囑փ技术不同,它还有很多尚未解决的研究问题。很多h正在研究q些NQ但是我们没?#8220;SGI实例”来知道怎样对象组合到一起和提高q算速度?/p>

我所感兴的最后一个研I方向是实现更加通用?D技术,例如? 够在3D世界中利用其他的渲染工具(例如HTML)开展工作,以及能够建立不与某个特定游戏相关联的型|络I间。我认ؓ我们可以构徏一个基设施框架? 我们可以开发一Ƅ一人称设计游戏Q但是框架具有够的通用性,因而我们可以用它完成其他Q务?/p>

所有现有的软g昄都是针对W一人称击游戏而设计的Q但是h? 以后可以利用q些技术执行其他一些有的d。通用化L要付Z菲的成本。你可以通过技术的专用化提高它的工作效率,但是在某个{折点你可能会发现通用 化的成本q不是很高,而拥有一个更加通用的^台所带来的好处更加显著。我认ؓ3D游戏目前正处于一个这L转折炏V?/p>

现在的我们与两年前大不相同。当时我们仍焉要考虑每一个很短的 帧来提高一点点性能。由于硬件加速的发展——尤其是轮廓加速的实现Q以及速度更快的CPU和容量更大的RAM的出玎ͼq种情况已经不复存在。我认ؓ我们? 通用q_的速度可以辑ֈ专用版本?0%以上Q同时可以利用这个^台处理大量其他的、有的d?/p>

l合性问?/a>

FS: 你希望徏立一个永久性的Quake世界Q让Z可以在其中进行对话和交流吧?

John: 是的Q甚至不一定与Quake有关。我认ؓ在利用介质通信斚w有很多有的工作需要完成。你会看Ch们互怺,在一个服务器上会面等。这斚w有很多潜? 的发展方向。我不会其UCؓ虚拟现实Q因为VR已经成了一个与M和毁灭联pd一L名次。从来没有一家成功的VR公司Q但是我认ؓ其中很多公司p|的原 因都是当时ƈ没有相应的技术来实现他们的创意。在很多情况下,创造力和创新精都会受到技术发展的限制?/p>

Doom是一个典型的例子。我们用了很多的聪明、才智和创造力才开发出了DoomQ但是所有这些聪明才智在五年之前q不能生Q何作用,因ؓ当时的技术限制得h们不可能开发出像Doomq样的游戏。有些时机是适合出现新的创新技术的?/p>

我认为在未来几年中,会出现很多q样的创新技术,例如3D界面的通用化。每个h都用一U含p的、空想的Ҏ预言互联|和Web在未来的某个时候拥有一?D界面。但是没有h提出真正实现q个目标所需要的具体l节。现在可能是实现q个目标的时机,但是也可能不是?/p>

我很xq些研究方向Q而且我将从事所有这些研I工作。最l我把那些最有前途的技术研I到底?/p>

FS: 你是否徏议年Mh上学Q?/strong>

John: 如果你是Z正确的理׃学,那么学校是一个很好的学习知识的场所。大学可能是一个信息极Z富的环境。我现在回想我的大学生活Q会觉得我浪费了很多宝贵的时光。我当时应当使用他们的图形工作站和其他设备学习知识?/p>

如果你只是ؓ了获得一个学位,以便扑ֈ一份满意的工作Q那么我q不支持。如果你上学是ؓ了结识聪明h、拓展知识面和学习新知识Q那么我完全支持。有 些h在大学的收获比我上面列出的多得多。至于我Q我一直都是那U只会看产品手册的学生。我喜欢q种学习方式Q但是ƈ不是所有h都喜Ƣ这栗我q不认ؓ大学 是一个不好的地方Q但是我q不支持q样的观点:“你必M大学Q这是唯一的成功之?#8221;。原因很单,它ƈ不是唯一的成功之路?/p>

我认为,臛_对于一些年ȝ、发展迅速的行业(例如互联|和游戏设计)而言Q才能和一份表明你的工作经验的历比学位更加重要。我从来不问别h“? 是否有一个学位?”我更兛_的是“你做q什么?”如果要从坐在译֠里参加考试或者在安~写游戏E序来证明你所拥有的天赋之间进行选择Q我认ؓ后者不׃ؓ 一条合理的成长道\?/p>

FS: 最后一个问题——你现在玩的是什么游戏机Q?/strong>

John: 我在家经常玩的游戏机是Nintendo 64Q但是除此以外我们还拥有Playstation、Saturn和其他一些游戏机?/p>

Firingsquad ?Gamers.com 非常感谢John和Anna抽出旉接受我们的访问。我们的q篇文章得到了广泛的好评Q我们希望在不久的将来访问您所喜爱的其他程序员。请到我们的留言板上发表您对本访问的看法?/strong>



linnet 2009-06-18 03:33 发表评论
]]>新年W一?/title><link>http://www.shnenglu.com/linnet/archive/2009/01/15/72049.html</link><dc:creator>linnet</dc:creator><author>linnet</author><pubDate>Wed, 14 Jan 2009 17:10:00 GMT</pubDate><guid>http://www.shnenglu.com/linnet/archive/2009/01/15/72049.html</guid><wfw:comment>http://www.shnenglu.com/linnet/comments/72049.html</wfw:comment><comments>http://www.shnenglu.com/linnet/archive/2009/01/15/72049.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/linnet/comments/commentRss/72049.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/linnet/services/trackbacks/72049.html</trackback:ping><description><![CDATA[     摘要: 学习一下vc9中CSplitterWnd创徏视图的方?nbsp; <a href='http://www.shnenglu.com/linnet/archive/2009/01/15/72049.html'>阅读全文</a><img src ="http://www.shnenglu.com/linnet/aggbug/72049.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/linnet/" target="_blank">linnet</a> 2009-01-15 01:10 <a href="http://www.shnenglu.com/linnet/archive/2009/01/15/72049.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://www.shnenglu.com/" title="精品视频久久久久">精品视频久久久久</a> <div class="friend-links"> </div> </div> </footer> <a href="http://www.ktze6z.cn" target="_blank">þþƷվ</a>| <a href="http://www.yue1h.cn" target="_blank">þþƷ18</a>| <a href="http://www.ozxt.cn" target="_blank">Ļձ޾þþ</a>| <a href="http://www.antsgogo.cn" target="_blank">ɫվ޷ľþò</a>| <a href="http://www.yvresse.cn" target="_blank">þõӰ</a>| <a href="http://www.zjuny.cn" target="_blank">þþƷAV뽿ɫ </a>| <a href="http://www.lyddcy.cn" target="_blank">þþþһ</a>| <a href="http://www.tbssyc.cn" target="_blank">99þù¶Ʒ</a>| <a href="http://www.masradio.com.cn" target="_blank">޾ƷƷþ99</a>| <a href="http://www.bfnzt.cn" target="_blank">˾þ</a>| <a href="http://www.huangshanlife.cn" target="_blank">aaþ</a>| <a href="http://www.153u.cn" target="_blank">Ʒ99þþþþ</a>| <a href="http://www.bjztxdty.cn" target="_blank">þ99þóѲ</a>| <a href="http://www.jaqw.cn" target="_blank">þþþ뾫Ʒ</a>| <a href="http://www.geekon.com.cn" target="_blank">þþþۺĻ </a>| <a href="http://www.caribbeanlagoon.com.cn" target="_blank">޾Ʒһۺ99þ</a>| <a href="http://www.liuzirui597.cn" target="_blank">þù鶹91</a>| <a href="http://www.bestsilm.cn" target="_blank">þþøƵ</a>| <a href="http://www.changde8.cn" target="_blank">ƷþþĻ</a>| <a href="http://www.fengdingjun.cn" target="_blank">þþþùƷŮӰԺ</a>| <a href="http://www.flycard.com.cn" target="_blank">þѹƷ</a>| <a href="http://www.gcxv.cn" target="_blank">ƷŮþþþavˬ </a>| <a href="http://www.jinziwan.com.cn" target="_blank">޹˾þһþ</a>| <a href="http://www.zqbd.com.cn" target="_blank">ۺϾþۺ</a>| <a href="http://www.8hi6.cn" target="_blank">þ޾Ʒ˳ۺ</a>| <a href="http://www.vedz.cn" target="_blank">97þþƷһ</a>| <a href="http://www.guidegogo.cn" target="_blank">޾Ʒþþþþ</a>| <a href="http://www.ds361.cn" target="_blank">ۺϾƷþ</a>| <a href="http://www.6kk.org.cn" target="_blank">99þˬ޾ƷŮ</a>| <a href="http://www.uushipin.cn" target="_blank">ھƷþþþӰԺձ </a>| <a href="http://www.hnhanzhi.com.cn" target="_blank">˾þô߽AVۺӰԺ</a>| <a href="http://www.xbfiyz.cn" target="_blank">þˬ˾ƷƵ</a>| <a href="http://www.yzx777.cn" target="_blank">Ʒŷ޺ձþ</a>| <a href="http://www.shipin168.cn" target="_blank">þþƷһԡ </a>| <a href="http://www.dr-knoell-consult.com.cn" target="_blank">99þþƷëƬѲ</a>| <a href="http://www.mingyixiu.cn" target="_blank">޹һ˾þþƷ</a>| <a href="http://www.ondai.com.cn" target="_blank">þþþ޾Ʒվ </a>| <a href="http://www.htja.com.cn" target="_blank">þԾƷ</a>| <a href="http://www.hlccbxw.cn" target="_blank">þֻƷ99re66</a>| <a href="http://www.h8443.cn" target="_blank">þþþƷ</a>| <a href="http://www.thesmarterwaytofaster.cn" target="_blank">˼˼þ99ֻƵƷ66</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>