Well, what you say is true, but SDL is supposed to be a low level API.
I wouldn't call it a low-level API, just that it has tight focus on what it's supposed to do. As such, it doesn't need to be messy; that's just poor design.
For a dead-simple graphics API, check out TinyPTC, which is unfortunately Windows-only. But the design is absolutely beautiful.
I'm not sure what defines a top person in the software world according to this list. Grady Booch defined UML, which is much loved and much hated, but I'd hardly call that a reason to be a top person. Miguel of Ximian fame is there, though I'm hard pressed to think of why. He's proven to be much more of a self-promoter and follower than a leader or innovator (Gnome, Mono).
Feels like there should be more people on here who aren't just well known, but are solving hard problems. Should writing a famous and influential piece of software 20 or 30 years ago count? (If so, where are Ken Iverson and Ivan Sutherland?) Should writing something that becames popular count, even if it isn't necessarily all that good or relevant these days?
1. It works. 2. It's cross-platform. 3. It's not trying to do too much.
That said, SDL isn't particularly well-designed otherwise. It's awkward. There's too much underlying info exposed to the user. The "surface" abstraction is muddy, in that you can accidentally run without hardware acceleration too easily, and you do easily do other things that hurt performance simply because you didn't pay attention to barely documented flags.
IBM defined the PC at that time, and deserves a large share of credit for taking the PC out of the hobby shop and into the mainstream.
A strange comment. At the time, the Apple II+ was the serious computer, with stores devoted just to selling 'em. VisiCalc--the ultimate business software--was written for the Apple II.
"IBM defined the PC" is a phrase I don't know how to interpret. I guess, yes, IBM created the original x86-based computer with the monicker "Personal Computer" on it, aka the PC. But we all know that. But the phrasing makes it seem like there were all these PCs out there, and IBM set the standard for them. That's hardly true. The IBM PC paled in comparison to what else was available at the time, at least for the first few years of its life (until the IBM PC AT came along, and the typical PC had more than 64 or 128K in it).
Actually, running benchmarks, it's found that the GC OCaml uses is faster than the repeated brk()s you get with C's malloc()/free(). If you profile it out, brk() is really expensive when you're dealing with a segmented heap/arena.
Yes, GC can be faster than C's malloc/free, but that's not what I'm talking about. I'm talking about statically allocating your memory, as is the norm in embedded systems. Then you have no malloc/free overhead and no GC overhead, period.
One of the advantages of functional languages that is not often mentioned is that it is relatively easy (at least in comparison with imperative languages) to implicitly parallelise the code.
This has been a cited advantage of functional languages since the 1970s, but it hasn't come to fruition. In theory, yes, it's a big win, but in practice it's very difficult to do.
But isn't this in general true of all languages? I mean, to write C code to the highest potential, you have to occasionally drop down and inline some cryptic ASM to punch up those few routines that are slow and commonly called.
Well, not quite. In C you pay as you go. You essentially have a direct mapping to common hardware. You can go faster, yes, but the improvement generally isn't worth it unless you're targeting specific weirdness like MMX or SSE2.
OCaml has some significant overhead that comes from the language definition. There's garbage collection, which while fast is certainly not free. Floating point values in mixed-type tuples are heap allocated (that is, the floating point values--doubles, actually--are separate heap objects). There's the classic issue with functional languages that the simple and easy way to build a list either involves stack space for each element or a full reversal of the list (not in place) at the end.
I fully agree with you that readability is worth a hit in performance. I use interpreted languages all the time, and compiled OCaml is certainly much faster than them. But OCaml advocates need to be careful about claiming their language is as fast as C/C++, because it generally isn't true. It's only true if you drop the nice features and write grungy C-style code, and then only in certain situations. This does not mean it is a bad language, however.
OCaml code can rival C++ code in benchmarks...if you write OCaml that looks like C++. Yes, the OCaml code is still probably safer in the end, but the OCaml solutions to many of the benchmarks are just nasty. The prettier, straightforward solution is often 2-4x slower than the C++ version. So is OCaml fast? Yes. But please be careful here.
Can one tell me why I should learn python and not any other programming language anyway?
I expect this isn't the answer that true Python devotees would express, but here goes anyway: It's a very high-level, very dynamic, language that's reliably cross-platform.
"Very high-level" differentiates it from Java, which I see as more mid-level. It's also different than Perl 5, which is higher-level than Python in some ways, but convoluted and crusty in other ways (anything involving nested data structures, for example).
"Dynamic" means you can test code interactively, you don't a build process, you don't waste time enumerating things and creating redundant headers and so on.
"Reliably cross-platform" is the key. This is where Scheme and Lisp and Haskell fall down. Lisp has a standard definition, but the community is fractured by there not being a standard implementation. You can argue that diversity is good and all that, but it does tend to hurt overall. Python has a huge number of standard library modules as a result.
Or rather, it was when it was released about 10 years ago. Since then, a lot has happened to other languages, and not much to Delphi. Java (and C#) have garbage collection and metadata in a simpler type system. Perl and python have other advantages.
You're comparing apples and oranges. Delphi is essentially a low-level language. It's higher-level than C, but it's not in the same class as C# and Python. In terms of a language that pulls few tricks behind your back, but still gives you close-to-the-machine power and cleanliness, Delphi is spectacularly well-designed. Delphi compiles on the order of 100x faster than C++, plus doesn't have perceptible link times, for example. That's enough reason to make it a viable alternative to C++ for Windows-oriented projects.
Price and licensing killed Delphi
on
Delphi Renaissance
·
· Score: 4, Insightful
Delphi is some kick-ass technology. It's a solid language, it compiles like *lightning* (essentially instaneous since ~1997), zero link times, and the provided libraries are great. Maybe not greater than.net, mind you, but an excellent alternative that was there many years earlier.
Delphi used to be the darling of the small developer and hobbyist programmer. Not only did you get all of the above benefits, but the standard edition was only $70. An absolutely brilliant alternative to Visual C++ and Visual Basic.
But then Borland quietly upped the price and changed the licensing. It used to be Standard for ~$70, Professional for ~$500, Enterprise for ~$1000. Then they changed it so the cheapest edition you could use in a commercial environment was $1000+. The only other version is Personal, around $100, but it is strictly license-bound to be used for learning the language and writing applications that other people don't use. Borland essentially made a one-line change to the license that forced programmers to jump to a product that costs 10x more. The result? Delphi web-sites and tutorials and hobbyist-written programs in Delphi dropped like a rock. Too bad, Borland.
-Real-time 3d graphics of cinematic quality will always be too slow for general purpose CPUs.
But Sony hasn't said that the Cell is going to be used for graphics. It's the CPU, not the GPU.
-developing a game with AI that needs ten times the power of todays CPUs will take many man years and may not be that welcomed by the console audience.
Irrelevant. But CPU power iis used by other expensive things, like inverse kinematics and physics. And let's not ignore the benefits of letting developers use languages that aren't so low-level as C.
-It's very difficult to do multithreaded apps, and the difficulty rises exponentially with the number of threads.
For traditional threaded applications, yes, but not if you use a sane method of handling large numbers of processes, like CSP (the book on which, BTW, was published 20 years ago).
OK...so according to some marketdroid "Current PC architecture is nearing it's limits". I bet he owns stock in the company that it trying to sell you the new stuff! Last I checked AMD and a few other BILLION dollar companies were still in business.
I think there's little doubt that in the performance arena, PC CPUs have leveled off in the last two years. Instead of across the board performance boosts, everyone is talking multi-core and 64-bit. Two years ago, the 3GHz P4 was king. Today it's still more or less a top-end chip. This is much different than, say, five or six years ago.
Yes, the visuals are nice, but ditto for just about any game released these days. The physics are nice too, but again, these are par for the course. HL2 uses what's becoming the industry standard for physics--Havok--which is used in many other games, including console games.
The biggest downside to HL2 is that it is the most linear game in a long, long time. You go into a room. You kill everyone. Then there's exactly *one* way out...and you need to find it.
In fact, even the AI for this game is pre-placed and scripted. Characters are set in positions X, Y, and Z and shoot at you. There's only minimal intelligence of any kind.
The ultra-high scores being given to this game are puzzling. It's nowhere near the magnum opus that I was expecting. It's a very, very, linear "figure out what the designer wants you to do" sequence of events. It's good, but nowhere near great. I'd give it a 7/10 at best, but overall it's a step backward for game design.
Re:A wee bit disappointing...
on
Joel On Software
·
· Score: 2, Insightful
After reading this book, I actually decided Joel was much LESS clever than I initially thought. Most of his knowledge is directly from Microsoft, you might as well read a Microsoft training manual. Yet it's plainly obvious he fails, for a LONG time, to grasp.NET
Joel is smart, but he's decidedly old school in many ways. Or rather he's old school for the typical reason people are old school: because he's resistant to change. This is common among technical people in my experience. First they rant about how awful something is. Then they grudgingly use it. Then they become advocates.
Penny Arcade is funny, but I found myself somewhat turned off to it after reading your game industry commentary for a while. Initially this was simply because while I thought PA was well-done and witty, the associated commentary from the authors was less so. Then it got to where I was disagreeing with you enough that I lost interest in the comic. It's kinda like finding out someone in a band whose music you like has some personal habits or beliefs that put you off. It shouldn't affect what you think of the music, but it naturally does. Do you see the commentary as an integral part of your web presence?
Engberg's piece is vicious, petty, simplistic and insulting. There's a great deal of value in to be found in weblog journalism.
I disagree. The vast, vast majority of even the *good* weblogs are simply rehashes of information the author found elsewhere: why he or she liked something, disagreed with something, etc. Someone agreeing or disagreeing with a news story, and telling the world why, is not journalism. It's a letter to the editor.
It's clear that Pixar didn't have the chops prior to this film to do action sequences, because prior to this, the feeling of moving in a three dimensional space just wasn't there.
You mean like those action sequences in Toy Story, Toy Story 2, A Bug's Life, Monster's Inc, and Finding Nemo?
It's clear that Pixar didn't have the chops prior to this film to do action sequences, because prior to this, the feeling of moving in a three dimensional space just wasn't there.
What that says is that the country is very strongly divided and polarized. What it does not say is that the belief that Bush is the "worst in US history" is "widely accepted." The two points are distinct and separate.
What it says is that world leaders, nobel prize winners, and other highly intelligent people have decried Bush as the worst president in American history, but that a huge percentage of Amercians voted for him anyway because they see him as a fundamentalist christian with high morals.
49% of the country voted against Bush. (Yes, 49% 51%.) But also...
30 of 35 countries favor Kerry (GlobeScan/PIPA poll).
And there have been numerous well-known, well-respected people calling the Bush administration the worst in US history. You don't see this often--or ever.
Seriously, Bush is the worst president in the last 50 years. This is widely accepted and discussed; it's not my simple-minded view. He does things that no one would tolerate in the person running the company they work for, let alone a powerful country, like completely ignoring all the facts presented to him and making calls based on unfounded instinct.
So how the hell did he get elected? A combination of:
1. People, especially people over 50, who blindly vote for "their" party candidate. 2. A bizarre, misguided group who regard Bush as having high morals. I'm as dumbfounded as anyone here, but just watch how often this comes up in analyses. 3. A similarly bizarre, misguided group who seem to think that Iraq was responsible for the 9/11 attacks and Bush is keeping them from attacking us again. 4. Voting for the status quo is safer than a new guy. 5. Nobody really liked Kerry all that much. The anti-Bush people latched onto him because he's all we had.
This is a good argument for changing how a president is elected. For a good read, see Peter Norvig's Hiring a President.
find that flickr actually has too many features. It's hard to which of the dozens of different pages you need to go to in order to do what you want to do. Also, it's kind of ugly, which is important for a visually-oriented site.
True. I like and use Flickr (bought a Pro account, even), but its creators have been very confused about what they are creating. At first there was a solid "sharing photos you found" slant, including a live chat in which you could post photos from your collection. And there were generally too many features based around chatting and goofy forums that had nothing to do with photography or sharing photos.
Now at least they are focused on people taking their own pictures, sharing them with others, and people commenting on the ones the like.
but at this price, looks like Nintendo is in for some serious competition
Game Boy Advance
cost: $100
battery life: 15-19 hours [*]
PSP:
cost: $195
battery life: 5-6 hours [*]
[*] as stated by manufacturer, real times are shorter
Obviously you're talking about competition for Nintendo's upcoming DS, but that GBA is a monster to reckon with...one with a excellent library of games.
Well, what you say is true, but SDL is supposed to be a low level API.
I wouldn't call it a low-level API, just that it has tight focus on what it's supposed to do. As such, it doesn't need to be messy; that's just poor design.
For a dead-simple graphics API, check out TinyPTC, which is unfortunately Windows-only. But the design is absolutely beautiful.
I'm not sure what defines a top person in the software world according to this list. Grady Booch defined UML, which is much loved and much hated, but I'd hardly call that a reason to be a top person. Miguel of Ximian fame is there, though I'm hard pressed to think of why. He's proven to be much more of a self-promoter and follower than a leader or innovator (Gnome, Mono).
Feels like there should be more people on here who aren't just well known, but are solving hard problems. Should writing a famous and influential piece of software 20 or 30 years ago count? (If so, where are Ken Iverson and Ivan Sutherland?) Should writing something that becames popular count, even if it isn't necessarily all that good or relevant these days?
SDL has a couple of things going in its favor:
1. It works.
2. It's cross-platform.
3. It's not trying to do too much.
That said, SDL isn't particularly well-designed otherwise. It's awkward. There's too much underlying info exposed to the user. The "surface" abstraction is muddy, in that you can accidentally run without hardware acceleration too easily, and you do easily do other things that hurt performance simply because you didn't pay attention to barely documented flags.
IBM defined the PC at that time, and deserves a large share of credit for taking the PC out of the hobby shop and into the mainstream.
A strange comment. At the time, the Apple II+ was the serious computer, with stores devoted just to selling 'em. VisiCalc--the ultimate business software--was written for the Apple II.
"IBM defined the PC" is a phrase I don't know how to interpret. I guess, yes, IBM created the original x86-based computer with the monicker "Personal Computer" on it, aka the PC. But we all know that. But the phrasing makes it seem like there were all these PCs out there, and IBM set the standard for them. That's hardly true. The IBM PC paled in comparison to what else was available at the time, at least for the first few years of its life (until the IBM PC AT came along, and the typical PC had more than 64 or 128K in it).
Actually, running benchmarks, it's found that the GC OCaml uses is faster than the repeated brk()s you get with C's malloc()/free(). If you profile it out, brk() is really expensive when you're dealing with a segmented heap/arena.
Yes, GC can be faster than C's malloc/free, but that's not what I'm talking about. I'm talking about statically allocating your memory, as is the norm in embedded systems. Then you have no malloc/free overhead and no GC overhead, period.
One of the advantages of functional languages that is not often mentioned is that it is relatively easy (at least in comparison with imperative languages) to implicitly parallelise the code.
This has been a cited advantage of functional languages since the 1970s, but it hasn't come to fruition. In theory, yes, it's a big win, but in practice it's very difficult to do.
But isn't this in general true of all languages? I mean, to write C code to the highest potential, you have to occasionally drop down and inline some cryptic ASM to punch up those few routines that are slow and commonly called.
Well, not quite. In C you pay as you go. You essentially have a direct mapping to common hardware. You can go faster, yes, but the improvement generally isn't worth it unless you're targeting specific weirdness like MMX or SSE2.
OCaml has some significant overhead that comes from the language definition. There's garbage collection, which while fast is certainly not free. Floating point values in mixed-type tuples are heap allocated (that is, the floating point values--doubles, actually--are separate heap objects). There's the classic issue with functional languages that the simple and easy way to build a list either involves stack space for each element or a full reversal of the list (not in place) at the end.
I fully agree with you that readability is worth a hit in performance. I use interpreted languages all the time, and compiled OCaml is certainly much faster than them. But OCaml advocates need to be careful about claiming their language is as fast as C/C++, because it generally isn't true. It's only true if you drop the nice features and write grungy C-style code, and then only in certain situations. This does not mean it is a bad language, however.
OCaml code can rival C++ code in benchmarks...if you write OCaml that looks like C++. Yes, the OCaml code is still probably safer in the end, but the OCaml solutions to many of the benchmarks are just nasty. The prettier, straightforward solution is often 2-4x slower than the C++ version. So is OCaml fast? Yes. But please be careful here.
Can one tell me why I should learn python and not any other programming language anyway?
I expect this isn't the answer that true Python devotees would express, but here goes anyway: It's a very high-level, very dynamic, language that's reliably cross-platform.
"Very high-level" differentiates it from Java, which I see as more mid-level. It's also different than Perl 5, which is higher-level than Python in some ways, but convoluted and crusty in other ways (anything involving nested data structures, for example).
"Dynamic" means you can test code interactively, you don't a build process, you don't waste time enumerating things and creating redundant headers and so on.
"Reliably cross-platform" is the key. This is where Scheme and Lisp and Haskell fall down. Lisp has a standard definition, but the community is fractured by there not being a standard implementation. You can argue that diversity is good and all that, but it does tend to hurt overall. Python has a huge number of standard library modules as a result.
Or rather, it was when it was released about 10 years ago. Since then, a lot has happened to other languages, and not much to Delphi. Java (and C#) have garbage collection and metadata in a simpler type system. Perl and python have other advantages.
You're comparing apples and oranges. Delphi is essentially a low-level language. It's higher-level than C, but it's not in the same class as C# and Python. In terms of a language that pulls few tricks behind your back, but still gives you close-to-the-machine power and cleanliness, Delphi is spectacularly well-designed. Delphi compiles on the order of 100x faster than C++, plus doesn't have perceptible link times, for example. That's enough reason to make it a viable alternative to C++ for Windows-oriented projects.
Delphi is some kick-ass technology. It's a solid language, it compiles like *lightning* (essentially instaneous since ~1997), zero link times, and the provided libraries are great. Maybe not greater than .net, mind you, but an excellent alternative that was there many years earlier.
Delphi used to be the darling of the small developer and hobbyist programmer. Not only did you get all of the above benefits, but the standard edition was only $70. An absolutely brilliant alternative to Visual C++ and Visual Basic.
But then Borland quietly upped the price and changed the licensing. It used to be Standard for ~$70, Professional for ~$500, Enterprise for ~$1000. Then they changed it so the cheapest edition you could use in a commercial environment was $1000+. The only other version is Personal, around $100, but it is strictly license-bound to be used for learning the language and writing applications that other people don't use. Borland essentially made a one-line change to the license that forced programmers to jump to a product that costs 10x more. The result? Delphi web-sites and tutorials and hobbyist-written programs in Delphi dropped like a rock. Too bad, Borland.
-Real-time 3d graphics of cinematic quality will always be too slow for general purpose CPUs.
But Sony hasn't said that the Cell is going to be used for graphics. It's the CPU, not the GPU.
-developing a game with AI that needs ten times the power of todays CPUs will take many man years and may not be that welcomed by the console audience.
Irrelevant. But CPU power iis used by other expensive things, like inverse kinematics and physics. And let's not ignore the benefits of letting developers use languages that aren't so low-level as C.
-It's very difficult to do multithreaded apps, and the difficulty rises exponentially with the number of threads.
For traditional threaded applications, yes, but not if you use a sane method of handling large numbers of processes, like CSP (the book on which, BTW, was published 20 years ago).
OK...so according to some marketdroid "Current PC architecture is nearing it's limits". I bet he owns stock in the company that it trying to sell you the new stuff! Last I checked AMD and a few other BILLION dollar companies were still in business.
I think there's little doubt that in the performance arena, PC CPUs have leveled off in the last two years. Instead of across the board performance boosts, everyone is talking multi-core and 64-bit. Two years ago, the 3GHz P4 was king. Today it's still more or less a top-end chip. This is much different than, say, five or six years ago.
Another linear shooter springs to mind, I think its name was 'Half Life'.
Yes, and the world has moved on since then. Both Doom 3 and Half-Life 2 are nostalgia pieces.
Yes, the visuals are nice, but ditto for just about any game released these days. The physics are nice too, but again, these are par for the course. HL2 uses what's becoming the industry standard for physics--Havok--which is used in many other games, including console games.
The biggest downside to HL2 is that it is the most linear game in a long, long time. You go into a room. You kill everyone. Then there's exactly *one* way out...and you need to find it.
In fact, even the AI for this game is pre-placed and scripted. Characters are set in positions X, Y, and Z and shoot at you. There's only minimal intelligence of any kind.
The ultra-high scores being given to this game are puzzling. It's nowhere near the magnum opus that I was expecting. It's a very, very, linear "figure out what the designer wants you to do" sequence of events. It's good, but nowhere near great. I'd give it a 7/10 at best, but overall it's a step backward for game design.
After reading this book, I actually decided Joel was much LESS clever than I initially thought. Most of his knowledge is directly from Microsoft, you might as well read a Microsoft training manual. Yet it's plainly obvious he fails, for a LONG time, to grasp .NET
Joel is smart, but he's decidedly old school in many ways. Or rather he's old school for the typical reason people are old school: because he's resistant to change. This is common among technical people in my experience. First they rant about how awful something is. Then they grudgingly use it. Then they become advocates.
Penny Arcade is funny, but I found myself somewhat turned off to it after reading your game industry commentary for a while. Initially this was simply because while I thought PA was well-done and witty, the associated commentary from the authors was less so. Then it got to where I was disagreeing with you enough that I lost interest in the comic. It's kinda like finding out someone in a band whose music you like has some personal habits or beliefs that put you off. It shouldn't affect what you think of the music, but it naturally does. Do you see the commentary as an integral part of your web presence?
Engberg's piece is vicious, petty, simplistic and insulting. There's a great deal of value in to be found in weblog journalism.
I disagree. The vast, vast majority of even the *good* weblogs are simply rehashes of information the author found elsewhere: why he or she liked something, disagreed with something, etc. Someone agreeing or disagreeing with a news story, and telling the world why, is not journalism. It's a letter to the editor.
It's clear that Pixar didn't have the chops prior to this film to do action sequences, because prior to this, the feeling of moving in a three dimensional space just wasn't there.
You mean like those action sequences in Toy Story, Toy Story 2, A Bug's Life, Monster's Inc, and Finding Nemo?
It's clear that Pixar didn't have the chops prior to this film to do action sequences, because prior to this, the feeling of moving in a three dimensional space just wasn't there.
What that says is that the country is very strongly divided and polarized. What it does not say is that the belief that Bush is the "worst in US history" is "widely accepted." The two points are distinct and separate.
What it says is that world leaders, nobel prize winners, and other highly intelligent people have decried Bush as the worst president in American history, but that a huge percentage of Amercians voted for him anyway because they see him as a fundamentalist christian with high morals.
That's a novel definition of "wide."
49% of the country voted against Bush. (Yes, 49% 51%.) But also...
30 of 35 countries favor Kerry (GlobeScan/PIPA poll).
And there have been numerous well-known, well-respected people calling the Bush administration the worst in US history. You don't see this often--or ever.
Seriously, Bush is the worst president in the last 50 years. This is widely accepted and discussed; it's not my simple-minded view. He does things that no one would tolerate in the person running the company they work for, let alone a powerful country, like completely ignoring all the facts presented to him and making calls based on unfounded instinct.
So how the hell did he get elected? A combination of:
1. People, especially people over 50, who blindly vote for "their" party candidate.
2. A bizarre, misguided group who regard Bush as having high morals. I'm as dumbfounded as anyone here, but just watch how often this comes up in analyses.
3. A similarly bizarre, misguided group who seem to think that Iraq was responsible for the 9/11 attacks and Bush is keeping them from attacking us again.
4. Voting for the status quo is safer than a new guy.
5. Nobody really liked Kerry all that much. The anti-Bush people latched onto him because he's all we had.
This is a good argument for changing how a president is elected. For a good read, see Peter Norvig's Hiring a President.
A sad day indeed.
find that flickr actually has too many features. It's hard to which of the dozens of different pages you need to go to in order to do what you want to do. Also, it's kind of ugly, which is important for a visually-oriented site.
True. I like and use Flickr (bought a Pro account, even), but its creators have been very confused about what they are creating. At first there was a solid "sharing photos you found" slant, including a live chat in which you could post photos from your collection. And there were generally too many features based around chatting and goofy forums that had nothing to do with photography or sharing photos.
Now at least they are focused on people taking their own pictures, sharing them with others, and people commenting on the ones the like.
but at this price, looks like Nintendo is in for some serious competition
Game Boy Advance
cost: $100
battery life: 15-19 hours [*]
PSP:
cost: $195
battery life: 5-6 hours [*]
[*] as stated by manufacturer, real times are shorter
Obviously you're talking about competition for Nintendo's upcoming DS, but that GBA is a monster to reckon with...one with a excellent library of games.