Programmers becoming better, or just the hardware?

Started by
28 comments, last by griminventions 19 years, 4 months ago
Quote:Original post by Nytegard
I actually think programmers are getting worse overall...

The better compilers are making people more lazy. The more memory and hard disk are making people lazier. Trying to create a game with a 4 MHz processor and 32KB of RAM & 64 KB of diskspace on a slow access tape is completely different than with a 2 GHz processor and over 2 GB of RAM and gigabytes of diskspace (at 7200+ RPM/sec).


I agree with this. I think that as hardware has gotten better, programmers have become sloppier. I remeber back when WarCraft II came out, one of the best things that I liked about it had nothing to do with the gameplay itself. It was simply the fact that it required only an 80MHz processor to run (that was back when the stadard was 200MHz). These guys wrote tight, efficient code. These days, there are games which require a 2.8GHz processor, 64MB of VRAM and they still run like molasses. Where the programmers aiming too high or did they not program efficiently?

The one thing that I am really afraid about is that as we get farther from the low-level details, programmers will have a smaller understanding of the underlying principles that make these tools work. It is my opinion that if one wants to be really good at anything, one needs to not only know that something works but how it works as well.
Advertisement
Quote:Original post by TheWanderer
I agree with this. I think that as hardware has gotten better, programmers have become sloppier. I remeber back when WarCraft II came out, one of the best things that I liked about it had nothing to do with the gameplay itself. It was simply the fact that it required only an 80MHz processor to run (that was back when the stadard was 200MHz). These guys wrote tight, efficient code. These days, there are games which require a 2.8GHz processor, 64MB of VRAM and they still run like molasses. Where the programmers aiming too high or did they not program efficiently?


Right, so you are comparing a 2D game, which probably ran at 640*480 in 256color to a modern game which runs at least at 800*600, in 32bit color, in 3d, with more graphical content than you can shake a stick at, more sounds than they dreamt possible back then, better AI, better collison detection and general mores stuff going on...

Hey! Mr Apples, meet Ms Oranges...
having a programming job in a non-entertainment software company, and doing game programming as a hobby, i'll say that my game programming is more challenging and mentally stimulating than my job programming.

i work in the billing department at my company, and billing systems are arguably the most complex parts of companies. having designed a large part of our billing system internals and maintaining it on a regular basis, i'll say that it is not even as complicated as, say, the part of my game code that partitions, determines visibility, performs physics, and does other more complex things having to do with just the virtual envronment.

maybe it's because i'm a perfectionist, but i feel there is much less room for poor programming in a game than in, well, the billing system i maintain (or any non-real time application for that matter). i spend hours upon hours designing a game algorithm, but give much less thought to algorithms i implement at my job. at my job it's ok if a function that could run in less than a second takes more than 5 seconds. while it's enough for my job programs to simply work, for games this is just the starting point. game algorithms must take the least amount of time and use the least amount of resources, be the most aware of how other parts of the system work (i.e. the video hardware), etc. etc. you just don't see this level of detail with most other programming. while an exception might be OS designers and low level programmers in general, i don't think these are today's "average" programmers. case in point: i try to structure my game code to use less conditionals, because conditionals mean jmp instructions and jmp instructions are expensive.
Quote:Original post by _the_phantom_

Right, so you are comparing a 2D game, which probably ran at 640*480 in 256color to a modern game which runs at least at 800*600, in 32bit color, in 3d, with more graphical content than you can shake a stick at, more sounds than they dreamt possible back then, better AI, better collison detection and general mores stuff going on...

Hey! Mr Apples, meet Ms Oranges...


I was comparing WarCraft 2 with other games at the time (i.e. the ones that required 200MHz). Even so, I believe that even today you can still find examples of games which use lots of resources yet fall far short in terms of performance when compared to others with smaller requirements.

Still, point well taken. I should have presented a better comparison.
Quote:
<sarcasm >
Right. It was also very bad design .
< / sarcasm >
Here, the "use the right tool to do the right job" apply. The "Excel is slower" is nothing compared to its power when used correclty - which, you'll have to admit, was not the case here, since you found a better solution. Excel is also a spreadsheet program with support for (possibly buggy) VB macro. You do not launch ms Word to execute a single VBA script, do you?


It was you that mentioned Excel as an example that application programmers are just as concerned with performance as game programmers. And when I said that in fact they could have done it a lot better, you say that I just didn't use the "right tool". That's not really an argument on why those that programmed Excel didn't use a similar solution to vastly increase the performance, is it? It wasn't the right tool simply because it wasn't fast enough. If they implemented it more efficiently, I would use it for this particular job. It's not like I wanted to do something insane, I mean one of Excel's main uses is to evaluate functions and make all sorts of graphs, isn't it? Of course, it does that and offers many options, but performance-wise, it falls short.

Besides, I don't use Excel much, but I know my father does for his job and I listen to him complain many times about how slow it is when he needs to update many sheets that contain functions.

As for code design, which you keep bringing on, my opinion is that it's useful, but not the answer to everything. Let's face it, programming is not a science, and IMO, it will never be. Unstructured programming, if you know what you're doing, can be much more efficient. Since we're talking about game programmers, Carmack is a very bad software enginneer. He doesn't design his engines, he hacks them together. Does that keep them from being the most powerful engines of their times? Of course not.

Oh, and that seemed weird to me:
Quote:
Because I'm not a game programmer, I have been somewhat hurted by some of these words. OK, hurted is a but strong, but I believe you got my point.


We just said that in general, the average game programmer tends to be more talented than the application programmer,because let's face it, it's much harder to make a 2D scroller in C++(average gamedever) than to make an logistics/database application using RAD, and maybe writing a little code as well(average app programmer, and I know what I'm talking about). You might not be average, but amazingly good. Besides, you mentioned you know how to build OS, so you're in an entirely different league.

[Edited by - mikeman on December 17, 2004 1:46:17 PM]
Quote:Original post by mikeman
We just said that in general, the average game programmer tends to be more talented than the application programmer,
It said general programmer.

Application programming usually involes VB and a database. My mom could do that with a bit of guidance. Yeah. No shit you're better than that.
I don't know if programmers are getting better or not, but it's clear to me that the amount of knowledge required to be on the cutting edge of gaming technology is increasing at an incredible rate.

15 years ago, if you could figure out how to do a bit blit and draw lines, you were mostly set. Add in some relatively simple sound synthesizer stuff, and that's about it. The trouble came from getting it to be fast. There maybe were a couple games that toyed around with 3D, but at that point it was pretty much all wireframe or flat shaded stuff.

Nowadays, look at what all might go into a cutting edge game that people didn't even dream of back then: 3D graphics with texturing, bump-mapping, per-pixel lighting, spherical harmonics for faked global illumination in real time, environment mapping, parametric surfaces, subdivision surfaces, HDR rendering with exposure and bloom effects, rendering with arbitrary BRDFs, etc. Smoothly skinned characters with inverse kinematics, hair and cloth simulation, and rag doll physics. Worlds where objects that are kilometres away must be displayed at the same time that objects that are centimeters away are displayed, all done smoothly with no noticeable transitions. Positional audio, thousands of sound effects. Network play with dozens or hundreds of people all interacting with each other at the same time, with voice communication between them.

Datasets are getting into the range of dozens or hundreds of megabytes for a single level. It's not a coincidence that the time to make a level in Doom 3 was measured in weeks, while with the original Doom it was measured in hours.

And it isn't as if this trend is going to get any better. It's looking as if all the next generation consoles will require parallel programming techniques to get any reasonable efficiency out of them. Dual core CPUs are going to be introduced starting next year for PCs, and it isn't going to just stop there. It isn't easy to program for multiple processors.

Anyway, the point I'm making is that although the hardware is getting more powerful, which makes our jobs easier, the expectations for what we should accomplish are getting much higher, which makes our jobs harder.

j
Quote:Original post by C-Junkie
Quote:Original post by mikeman
We just said that in general, the average game programmer tends to be more talented than the application programmer,
It said general programmer.

Application programming usually involes VB and a database. My mom could do that with a bit of guidance. Yeah. No shit you're better than that.


I completely agree. After all, I don't think the term "general programmers" is valid. OS programmers and application programmers are in completely different level. Of course, I didn't say that people that build OS are worse than game programmers, because that's just not true. All those things I said were about application programmers, which is the vast majority, and you rarely encounter someone really talented there.

Although it's not like application programming is an easy field, it's just that many of the people that work there just got their degree and now see it as a routine, just get the work done with what they learned in university. When I made an application as a freelance for a company a year ago, the guys there were amazed by what it did, because I wrote tons of code, overriding most of the components functions, so it run amazingly fast and had tons of customizing options. Now, if all turns well, in the next few days I'm probably going to work at a software company with guys that build their apps in FoxPro *sigh*.
I think I'm going to keep neutral in the war general vs game programmers.
Just to agree, any idiot can write code and if statements but the main skill in programming is the design. I do the high-level design on paper, then I do the low-level design while I program as programming is now like a first language to me (started in VB 6 when 9) so I'd get bored otherwise.
I try to make all my algorithms efficient, but without spending too much time optimizing prematurely (20:80 rule).
I am probably a little too worried about the number of variables I have in my classes given the massive RAM sizes nowadays even.
I made some quite advanced programs before I got into 3D when I was 11.
Bah! Who cares about what "kind" of programmer is better? That's an impossible comparison to begin with and pointless to debate.

It boils down to interests and goals. If you want money and don't care what you code, maybe you'll pick the highest paying gig and make financial software. Maybe you want to make creative games and so you go with that. It doesn't suddenly catalyze you into a strict category of programmer "type." They all require huge quantities of knowledge and skill. Maybe you study finance, maybe you study realtime simulation.

Better languages (like C#) do indeed remove a lot of "low level" pain, but it doesn't make programmers lazy. It doesn't make problems easier to solve. It gives you better tools for the task, but it doesn't fundamentally change the fact that you have to develop algorithms and architecture just like the old, grizzled 8-bit programmers who worked in 2K of RAM.

Programmers are getting good faster these days, because there are so many great resources freely available. The internet has a huge impact, because you can learn about everything you need. Whether you get that in college or on your own, it's no better one way or another if you accomplish your goals and get the job done and do it well.

Therefore, I think the internet is the biggest impact on learning programming among all the factors, and that lets people become knowledgeable more quickly than ever. Good thing, too, because programming is more complex now because it's solving more complex problems since the hardware can handle it.

This topic is closed to new replies.

Advertisement