Archived

This topic is now archived and is closed to further replies.

2600, DOS, and yes, game programming

This topic is 5815 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

I too was sad to see the moderator close the DOS threads. I feel choosing a platform (and OS) is an important step in the software lifecycle. I think the arguments and naration that 2600 has given about DOS being good for games (keeping the mod happy) is quite funny really. Sure, I have never used a scope on a chip and all of that because I never really cared. However, I was there before doing all of the ''DOS stuff'' back in the days of Yor also. I may have missed his point, but 2600 seems to be one of those people who think if you have not actually toiled the soil with your hands, you have no right to use that new spiffy tractor. Yep, I know assembly (some companies here in Japan still like to use it still), did 13h, and know how to ride the old hardware pretty good. Times have changed now, and the hardware must be ridden a little differently to get the same performance. Just because someone starting today has DirectX and does not have to worry about the ''gory details'' anymore does not make them any less of a programmer or designer. Personally, I am envyous they don''t have to waste their time programming to just to be able to handle something like the memory layout differences of VGA and SVGA. There is still A LOT to be learned in DirectX terms alone. Just look at all of these threads from people comparing and finding techniques! Re-use is a Good thing, really.

Share this post


Link to post
Share on other sites
I couldn't disagree more

I first started programming before most people on these forums were born. Remember the Acorn Electron? I was one of the first people to own one, in the mid 1980's. I was programming in assembly within a year (or less) of owning one. The relevance here, is that in the user guide, I was taught about binary arithmetic, registers, the stack, the CPU before anything else. It seems today that most kids haven't got a clue as to how they work. There's a good analogy here ... many people can drive - but you can't deny that it's better to understand what goes on under the bonnet. It's makes you more understanding. If you understand cars, you're not gonna scream the engine when it's cold. It's about time that people were taught about how computers work, then let them loose with such beasts as C/C++. It will only make those people better programmers.

I write software for a living, as does a mate of mine. We often talk about optomisations that would go over many peoples heads. I really don't mean to sound like I want to put people off programming because I don't. But for the sake of a fews days research, they would be much better off. Let's face it - how many people actually know about such simple things as signed numbers, two's complement, etc? Not many i'd guess.

For those of you that fall into the catagory above, please take some time to learn the basics. You will not be disappointed, I promise.

As for the DOS thing ... what year are we in now? 2002? Why harp on about 30 year old technology? I don't whinge about betamax's being better than VHS - just accept that change is the way forward in the long run. And please don't tell us about DOS being more powerful - there were never any optomised drivers for DOS. When comparing CPU time within a DOS vs Windows (or Linux/Mac/Unix) environment, Windows (etc) will always win in this day and age.

Just my thoughts

Edited by - Shag on February 4, 2002 9:28:34 PM

Share this post


Link to post
Share on other sites
Oh no! I was not trying to say basic computer science and math education was not necessary! Knowledge needed for optimizations and advanced arithmatic are still needed today as much as they were before. If someone mistakes DirectX replacing the need to understand binary math or knowing advanced data structures, that is their own fault, and will soon learn it in order to make anything worth while, or have low quality software.

It just seems that some people try to imply if they were not using punch cards, there is no way for them to grasp these fundamental concepts. A good CS course at college (or even a book) still teaches all of the basics. If the new game degrees do not, then someone should be shot.

I think people today are still learning the important stuff. Sure, a major amount of people will not touch assembly today, but it is not a bad thing! I sure don''t miss it, and avoid any contracts or jobs that have it in the job description.

On DOS: I too would love a internet broadcast of the funeral of DOS.

Share this post


Link to post
Share on other sites
With regard to assembly - I must admit that I''m getting lazy nowadays! I will revert to it when I absolutley have to - But only as an optomising excercise.

But back to the main topic. Too many people jump straight into the likes of C++ without any understanding of basic programming skills. These are essential. Your profile says you are a lead programmer - so you know what I mean. I''ve had the dubious pleasure of working with some real idiots over the years, who thought they were programming gurus, when in fact they didn''t know what they were talking about. One thing I have learned - talk is fine - but seeing practical results is very rare!

Share this post


Link to post
Share on other sites
Once again I whole heartedly agree with getting the basic education. I only wish a good education cured all cases
of ''programmer big head'' many people have. But the same thing
goes for many professions.

But, I must ask why you think a programmer starting with C++ is a bad start? With modern languages holding an OO theme, I do not see why someone would need to bother with C (for example). Sure, printf is all fine and good, but I think it is great people are introduced to classes at the get-go. Your thoughts?

Share this post


Link to post
Share on other sites
I''m probably the wrong person to ask that question! I''m not a great fan of OOP in gaming, but when I have my professional hat on, I use OOP all the time.

But my feelings are that people should start with an easier language, like VB or Delphi. This will teach them basic programming algo''s without the overhead of learning the Win32 API etc. This encourages people to learn. The trouble with C++ etc is that people get bored with the basics and want to jump straight into more complex things. At least VB for example is a very immediate language, where you can test functions in the immediate window without going through the whole compilation process each time.

Don''t get me wrong though - if someone is prepared to sit down and learn C++ properly, then it''s probably the best way to start programming. But they will need patience and dedication.

Share this post


Link to post
Share on other sites
Please remember, there are other compilers except for VC++.
I learned C and C++ using TurbeC++ and RHide. I agree that
learning the win32 lib. from the start is WAY too much.

VC''s IDE does intimidate though.

Do not worry, your opinion of C++ is just as valid as anyone else''s. Colleges still disagree, and as far as people go, everyone has a different argument. I was just wondering what thoughts on the subject you might have.

Share this post


Link to post
Share on other sites
So very close to closing this thread..

Generally, when another moderator closes a topic they don''t intend for it to be opened again in a new post. However, there doesn''t seem to be anything wrong with this post as of yet, so I''ll let it go for now.. just don''t do it again .

----------------------------------
FaceHat Software -- Wear the hat.

Share this post


Link to post
Share on other sites
quote:
Original post by Taulin
But, I must ask why you think a programmer starting with C++ is a bad start? With modern languages holding an OO theme, I do not see why someone would need to bother with C (for example).



Because the basics should be learned first. OOP is a very abstract concept, and can probably learned right away by a newcomer to programming, but it may make it more difficult and time consuming to actually figure out the basics and how they affect programs on the whole.

At least with C and assembly language, you can gain a pretty good understanding of how the compiler does things and how computers in general work. That might not be so obvious in C++ if you spend a lot of effort on OOP, because much of the underlying architecture your programs will be running on are not "object oriented."

A lot of programmers scoff at assembly language nowadays, but just about all of the really skilled ones actually do know it and have worked with it in their past. So, while they say "I''m glad I don''t have to work with assembly language anymore", they still have the experience, whether they think it helps them or not.

I''m not a programmer by profession, I''m just a hobbyist right now, but I''m in touch with a lot of programmers, professional or not, and all of them know assembly language, whether they still like it or not. For what it''s worth, none of the programmers I know who lack assembly knowledge are competent by my standards. Maybe they''ll get along fine in the work place, but I''m not letting them get anywhere near my projects.

quote:

Sure, printf is all fine and good, but I think it is great people are introduced to classes at the get-go. Your thoughts?


OOP is often over-rated. Even though I have little need for it, I know it''s invaluable to many applications and is becoming more and more useful in areas where you can get by without it. But, it is not the solution to everybody''s problems, and just because it''s OOP doesn''t mean it''s good. If you don''t need OOP, don''t use it!

Learn the basics first if you really want to do cool stuff. If you only have a passive interest in programming, maybe the uttermost basics aren''t necessary, but otherwise, if you love computers, are bright, and truely want to get into this stuff, spend some time at a lower level than C++. Who cares if DOS is dead? It''s an incredible learning tool.

Share this post


Link to post
Share on other sites
quote:
I''m not a programmer by profession, I''m just a hobbyist right now, but I''m in touch with a lot of programmers, professional or not, and all of them know assembly language, whether they still like it or not. For what it''s worth, none of the programmers I know who lack assembly knowledge are competent by my standards. Maybe they''ll get along fine in the work place, but I''m not letting them get anywhere near my projects.


If your just a hobbyist, saying you won''t let anyone near your projects if they don''t know asm is just plain ignorance.

A lot of good points have been brought up to "learn the basics".
And we have defined what most consider basics and advanced techniques and it''s all true...

But what about thinking it as old technology and new technology?

I present a counter point that maybe older programmers are less compentent and are hinder by old programming styles, and that newcomers are able to move quicker and produce better techniques because they have fresh minds.

-Pac

-Pac
"The thing I like about friends in my classes is that they can''t access my private members directly."
"When listening to some one tell about their problem (whether it''s code or not), don''t listen to what went right or wrong, but what they assumed....."

Share this post


Link to post
Share on other sites

Starting in C++ does not mean jumping into classes. There are many C++ traits that should be learned from the start, like using references, and possibly cout (sorry, I am still a printf guy). Of course there are many more advanced features of C++ that do not even involve classes also. As programmers learn the basics of programming itself, becoming accustomed to the target language of choice is better in the long run than picking up habits from a language you do not plan to use in the future (just look at my printf habit). Once again, just because someone is using C++ does not mean they have to use all of its functionality at the beginning.

I am also not saying C++ is the perfect language to learn on. The point is someone should not be forced to use old methods in the process of learning to make new technology.

Pactuul : About people and not wanting to learn, that is far too true in many cases. I have met many people that have at least come to terms with themselves and admitted to me they do not want to learn anything new. But they always go on to say something like as a programmer, they will never need to learn anything new.

Shag, about colleges: the one I went to made the switch from C to C++ when I was in grad school. Other colleges are trying Java, etc.

Senshi : uhhhh...geeze, Thanks.

Share this post


Link to post
Share on other sites
I started learning C++ two years ago. I got a firm grasp with the language after a year and started learning Win32 and DDraw simultaneously for another year.

Here I am after two years. I haven''t learned asm but I plan to. I''ve put OOP code into practice as well as implemented several design patterns.

I do not regard myself as a very good technical programmer. I do not know the level stuff as you might say. But I do know how to control high level stuff pretty well. I find that it''s only natural to practice OOP concepts and patterns.

Sometimes, I find that more important. I rarely do optimisations (I don''t know asm). What is important to me is that the code is elegantly structured so that it is easier to make changes or add improvements.

Ease of coding goes a long way if you know what you''re doing. If you think that I should learn low level stuff, I agree with you. I''ll probably to do that, but when I do, I wouldn''t neccessarily break all my code if I were a good high-level coder.

Share this post


Link to post
Share on other sites
That brings up a good point. In one of the DOS threads, someone said the young people don''t worry about certain optimizations (like sticking 8 flags into one byte) because they let the computer handle the extra processing of throwing 32 bits at it.

I tend to agree with Darkor on this one. Because we have faster computers and processors, it allows us to be more structured in our coding practices, and not have to find tricks and use other low level languages like asm to achieve acceptable performance.

But this is a GOOD thing! Even if my code on today''s machine gets the same performance as pure asm on an older machine, mine is most likely easier to read and maintain. I would rather work with nice structured, well written code that has a little speed deficit than go back to the days of getting my Bresenham(sp) line working in asm at top speeds again. But what speed problems am I having? I get three times the frame rates doing three times the amount of things on today''s machines than I did on my older machines.

The biggest speed increases I have ever witnessed came from architecture and structure (like the infamous using a tree instead bubble sort). With today''s compilers, the days of optimization through asm are fading fast it seems.

Share this post


Link to post
Share on other sites
Please excuse my intrusion upon your intelligent posts.

Most of you should agree, nontheless, that any task performed on a high level language will always be performable with more efficiency in a general sense by assembly language.

Besides, there will always be assembly, if you think about it, just as humans should always continue to be born with their tongues in them (I hope), no matter what language they speak.

Share this post


Link to post
Share on other sites
Just because a person doesn''t know asm does not mean they are a bad programmer. It''s just like any other field, you have your idiots and your non-idiots. I agree that it is important to learn the underlying architecture of the machines you are programming on and any CompSci program worth its salt will teach all this stuff, but on this board you will find a lot of people who are hobbiests and learn all this stuff in their spare time. They don''t have time to learn 10 different languages, it takes them long enough to learn 1. It''s not what you have learned that makes you a good programmer. I have come across many poeople who can breeze through school getting A''s in all their computer courses, but put them in a real programming situation and they don''t know a mouse from a power supply. It''s the way a person thinks that makes them a good programmer, not what platform they program on or not that they know 30 languages. This is no different than OpenGL vs DirectX, C++ vs Java. Choose what you like and work with it, but don''t trash other people for choosing something different than you.

ps. At least in this thread you guys talked about this intellegently, rather than bashing like 2600 did.

---
Make it work.
Make it fast.

"Commmmpuuuuterrrr.." --Scotty Star Trek IV:The Voyage Home

Share this post


Link to post
Share on other sites
Those threads were closed because this is not the place to argue a "my OS is better than your OS" point. It''s as simple as that. Also this is not the place for elitist comments implying that you shouldn''t program games if you use libraries instead of ASM! Lay off the advocacy and keep on-topic, and things will be fine. Anyone who is sensible will realise that different tasks require different tools, and the ''tools'' in this case can be operating systems. There is no ''right'' operating system for games. It depends on what you''re writing and who you''re writing for. So arguing it on a general level is (a) pointless and (b) off-topic.

(And no, I am not some Windows freak: in fact, I was programming in assembly years before I even knew what MS-DOS was.)

[ MSVC Fixes | STL | SDL | Game AI | Sockets | C++ Faq Lite | Boost ]

Share this post


Link to post
Share on other sites
my 2 cents. this only applies to those on the path to becoming a elite professional programmer. i cannot speak for hobbyiest, because i do not know what the hobbyiest would be seeking to accomplish.

i don''t think it is a imparative that every programmer learn assembly language. assembly langauge is machine specific. who says you are going to be working with Intel x86 chips forever. if anyone has taken a look at IA64 (Itanium), it is (natively) very different than x86. as well as MIPS, PowerPC, SH4, etc.

what i do think is imparative; is understanding computer architecture. understanding (ALU''s, shifters, cache, pipelining, branch prediction, and the other million computer techniques) will undoubtably increase your demandability as a programmer. just like a writer (english) must understand the constructs of the english language. just like a basketball player must understand the mechanics of shooting and passing.

for instance, if you understand how compilers and linkers work, you will not be posting the question "i get this unresolved external error". if you understand 3D theory, you will not be asking "OpenGL vs. Direct3D" questions. and so on, and so on....

you will not limit yourself to OOP or procedural programming. you will understand both paradigms have a time and a place. you will not limit yourself to C, C++, VB, or Java. you will find it fairly easy to code in any language, because you will understand the language is just syntax. algorithms remain the same.

IMHO, the problem is everyone is in a rush. this only hurts the industry as a whole. while RAD is a good concept, i find it unacceptable that a program is released and only works after patch 7.18b. take your time, develop your skills, and think about what you want. only you can know what you want....


peace.

To the vast majority of mankind, nothing is more agreeable than to escape the need for mental exertion... To most people, nothing is more troublesome than the effort of thinking.

Share this post


Link to post
Share on other sites
Read this...

http://www.gamedev.net/community/forums/topic.asp?topic_id=78662

Share this post


Link to post
Share on other sites
VxG: i agree.

To the vast majority of mankind, nothing is more agreeable than to escape the need for mental exertion... To most people, nothing is more troublesome than the effort of thinking.

Share this post


Link to post
Share on other sites
quote:

If your just a hobbyist, saying you won''t let anyone near your projects if they don''t know asm is just plain ignorance.



No, not at all. I stand firmly by my statement.

I''ve done a fair bit of work with emulation, so I''ve seen first hand how hopelessly lost people get if they''re not at least somewhat proficient in assembly language.

As for non-emulator related projects, even if they don''t use assembly, the few programmers I''ve worked with who don''t have a handle on assembly language don''t put out the kind of work I need. I know someone who''s a pretty decent coder when it comes to Windows applications and has used DirectX, but doesn''t know what any of the bitwise operators do, even though he uses them occasionally (with DirectX calls, for example.)

Perhaps that last case isn''t a great example, because bitwise operators can be learned without resorting to assembly language.

quote:

Just because a person doesn''t know asm does not mean they are a bad programmer.



Of course not. It was never my intent to say that. But there is often a sharp difference between a programmer with assembly language background and one without.

quote:

I agree that it is important to learn the underlying architecture of the machines you are programming on and any CompSci program worth its salt will teach all this stuff, but on this board you will find a lot of people who are hobbiests and learn all this stuff in their spare time.



From what I''ve heard, CompSci knowledge is not always adequate.

I know people who do work at _very_ large software/hardware companies, and I often here bad things about people fresh out of college who have learned everything they know about programming from Computer Science courses. They avoid "gotos" like the plague, but can''t give a reason as to why ("That''s what they told us to do."), they will over-use OOP, they insist on making multi-threaded programs when there is no need for threads, etc, etc.

quote:

i don''t think it is a imparative that every programmer learn assembly language. assembly langauge is machine specific. who says you are going to be working with Intel x86 chips forever. if anyone has taken a look at IA64 (Itanium), it is (natively) very different than x86. as well as MIPS, PowerPC, SH4, etc.



But that''s one of the beauties of knowing assembly language: Once you master one, you can pick up new ones in no time! For simple processors, I just grab a reference manual and am able to pick it up as I go along. More complex processors like PowerPC, MIPS, and the SuperH series aren''t much harder.

Since I learned X86 assembly first, I don''t know if the same would hold true if I had learned SH-2 assembly first. I suspect it might not, because X86 programming does take a bit more time to learn (because you''ll probably be working with the PC, which is a quite complex platform), and you pick up a lot more knowledge and experience while you''re at it.

quote:

what i do think is imparative; is understanding computer architecture. understanding (ALU''s, shifters, cache, pipelining, branch prediction, and the other million computer techniques) will undoubtably increase your demandability as a programmer. just like a writer (english) must understand the constructs of the english language. just like a basketball player must understand the mechanics of shooting and passing.



If you want to take that analogy further:

You have to work at a level where ALUs, shifters, cache, pipeling, and branch prediction become important; just as a writer has to gain experience using basic and complex English constructs; just as a basketball player has to practice shooting and passing.

Reading about it is not enough. Learning on your own often helps people learn better. Having it spoonfed by some book isn''t always enough, you might actually have to dabble in it a bit before you get it. I''m not trying to imply that you _must_ do everything you read in order to understand, but for certain things, you do, and I think computer architecture is one of those things. Building a new computer system from scratch is excessive (unless you really want to get into computer engineering, maybe ), but assembly language is not.

Also, as you mentioned, computer technology does change rapidly, and tomorrow''s CPUs and GPUs may be drastically different from those of yesterday, but if you''ve worked with assembly language before, you might understand the new technology better, or at least make more intelligent assumptions about how it works regardless of whether or not assembly language will be useful in itself. If all of your knowledge comes from a Computer Science text book, you might not be able to "get it" as well as someone else.

quote:

IMHO, the problem is everyone is in a rush. this only hurts the industry as a whole. while RAD is a good concept, i find it unacceptable that a program is released and only works after patch 7.18b.



And is learning assembly language really going to slow you down so much that it will hurt you? Maybe if you''re already working, it will, but what about teenagers just starting out? It''s not going to kill them to try to get their feet wet with assembly language.

---
Bart

Share this post


Link to post
Share on other sites
quote:
Original post by XCHG
Most of you should agree, nontheless, that any task performed on a high level language will always be performable with more efficiency in a general sense by assembly language.



For all *practical* purposes, I would have to disagree with you. That may be theoretically true, and there may be that 0.1% of assembly programmers that can do this, but for the other 99.9% of programmers that know assembly (even a lot of the good ones), you would be very hard pressed to beat a compiler as good as (lets say) VC++ for optimization, especially when it comes to things like pairing instructions.

Share this post


Link to post
Share on other sites
LordKronos: this argument holds true for Intel x86 under the Windows environment. and, while Windows (tm) maybe the biggest platform, let''s not forgot that there are other processors (hundreds, maybe thousands). and with IA64 on the horizon, new compilers, new techniques for the Windows (tm) desktop environment. let''s not be closeminded. you may argue against assembly language (tho, i wouldn''t). you cannot argue against understanding computer technology.

To the vast majority of mankind, nothing is more agreeable than to escape the need for mental exertion... To most people, nothing is more troublesome than the effort of thinking.

Share this post


Link to post
Share on other sites