|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
GameSpy
Grudge ![]()
|
![]() |
|
![]() |
||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
![]() |
![]() ![]() |
![]() |
![]() |
||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
![]() |
![]() |
![]() ![]() A Critical Look at Programming Languages All this week GameSpy is opening the doors and lending an open microphone to some of the brains behind our favorite games. Find out what they have to say about the current state of gaming and its future. Edited By - Dave "Fargo" Kosak, Illustrations by Penny Arcade
When you read about linguistics, the study of human languages (not computer languages), a recurring theme is:
While Linguists have long been studying this phenomenon in relation to human languages, it's not too hard to apply the same analysis to programming languages and see that, indeed, our programming attitudes--and even our decisions about what kinds of games to create--are deeply influenced by our language. Programming Language Evolution Let's start by looking at the evolution of programming languages over the last 20 years. To illustrate, I've made a chart, comparing generations of programming languages to techniques which they enable:
Some Disclaimers
At this point, some of you are going to complain about the "practical advances" above since some of those advances had started occurring before the new programming paradigm took hold. For example, some GUI's were developed in C, even though I call them an advancement of C++. I'm just being practical here. Yes, you could develop user interfaces in C, but they were extremely kludgy in those early days, and didn't become mainstream until the advent of object-orientation and GUI class hierarchies. Here, in analyzing programming language advancements, we're not going to dwell on which advancements are technically feasible, but rather which ones are practical. As everyone knows, C++ code can be run through a translator (such as CView) and converted to C. And C can be run through a translator (called a compiler) and converted to assembly language. This means that, at a raw technical level, everything you can do in C++ is possible in assembly language. But on a practical level, writing object-oriented programs in assembler is extremely difficult and error-prone, and therefore not something sane programmers attempt.
Next, the list of languages I'm covering here is far from complete, but at least one candidate is represented from each major generation of languages. What I say about "C" also applies to Fortran, Pascal, and even Verilog and VHDL in a certain sense. The "C++, Java, and UnrealScript" analysis is applicable to the other major object-oriented languages like Simula and SmallTalk. You will also notice an entire category of languages missing, the functional languages represented by Lisp, Haskell, and Miranda; they are interesting research topics, but we're sticking to languages with ample applicability to shipping applications and games. This article is about practice, not theory. Next: Digital Circuits
|
![]() |
![]() |
![]() |
![]() |
![]() [send feedback] [send news] [jobs] [home] [corporate] [developers] [advertise] [legal stuff] ![]() © 1996-2002 GameSpy Industries. ![]() |
![]() |