Advertisement

Is DOS dead?

Started by March 29, 2000 03:23 PM
107 comments, last by Mr Master 24 years, 7 months ago
You know what I think? YOU KNOW WHAT I THINK!!!! I think this post is getting too much attention, is what i think! The original topic was "Is DOS dead?", and I know that it is. If you''re still developing in DOS, hoping one day DOS will once again reclaim its previous position in the programming world, WELL TOO BAD, IT AIN''T GONNA HAPPEN! As the world gets lazier (and yes, the world is getting lazier), OS get more easier to use, and DOS ain''t easier to use for the common, non-technical user than Windows is. DOS is in its deathbed, maybe not totally dead yet, but its dying. Quick. Windows in slowly dying alos, believe it or not, as Linux, BeOS, and other OS slowly rise from the ashes (of other OSs, that is ).
quote: Original post by Topgoro
By the way, someone sugested that the Pentium should have been designed to only work in protected mode or something similar. Well, guess what, real mode is needed to initialize protected mode. Otherwise, how to set up the memory mappings, selectors, etc?

Well, that was me, and guess what, i have done code for initializing PM so i know how it works. But can you imagine having descriptor tables on processor die(some kind of small memory, reserved part of L1 cache for example) , not in system memory ? so on reset they would all be default values, and bios would just grant the highest privilege to code that it boots.
Actually, argument ''real mode is needed'' is quite stupid, because RISC''s for example (and probably many other arhitectures that i dont know of) live happily without any real/virtual modes.

comment on one other post-
quote: In fact Linux has never crashed on me, and i use it on a 586 @ 100mhz, compare that to frequent crashes on my Windows Athlon 500mhz box and you see why linux is a great OS.

Well simple calulation shows that in second case your processor runs approximately 5 times faster and thus encounters bugs 5 times moreoften

one more thought->good operating system these days would consist of nothing more than set of defined abstract interfaces and layers (driver<->protocol, protocol<->application), the fewer the better. In this case every software piece just needs to comply exactly(heres the catch) to these interface standards. if it crashes, then its just a hardware or driver problem ... if its slow, then application or hardware is slow, cant blame us we didnt write it!

-kertropp

C:\Projects\rg_clue\ph_opt.c(185) : error C3142: 'PushAll' :bad idea
C:\Projects\rg_clue\ph_opt.c(207) : error C324: 'TryCnt': missing point
-kertropp C:Projectsrg_clueph_opt.c(185) : error C3142: 'PushAll' :bad ideaC:Projectsrg_clueph_opt.c(207) : error C324: 'TryCnt': missing point
Advertisement
quote: Original post by Zipster

You know what I think? YOU KNOW WHAT I THINK!!!! I think this post is getting too much attention, is what i think! The original topic was "Is DOS dead?", and I know that it is. If you''re still developing in DOS, hoping one day DOS will once again reclaim its previous position in the programming world, WELL TOO BAD, IT AIN''T GONNA HAPPEN! As the world gets lazier (and yes, the world is getting lazier), OS get more easier to use, and DOS ain''t easier to use for the common, non-technical user than Windows is. DOS is in its deathbed, maybe not totally dead yet, but its dying. Quick. Windows in slowly dying alos, believe it or not, as Linux, BeOS, and other OS slowly rise from the ashes (of other OSs, that is ).


I agree, but for my part, I am just trying to ilustrate why people (or at least me hehe) is reluctant to the switch from DOS.

Well, I hope Windows loses it''s first place for a superior (performance wise) OS, from a "friendlier" company.

Topgoro
We emphasize "gotoless" programming in this company, so constructs like "goto hell" are strictly forbidden.
quote: Original post by Kertropp

Well, that was me, and guess what, i have done code for initializing PM so i know how it works. But can you imagine having descriptor tables on processor die(some kind of small memory, reserved part of L1 cache for example) , not in system memory ? so on reset they would all be default values, and bios would just grant the highest privilege to code that it boots.
Actually, argument ''real mode is needed'' is quite stupid, because RISC''s for example (and probably many other arhitectures that i dont know of) live happily without any real/virtual modes.


Well, I guess you are technically right. But please note PC''s are not the only use for that processor. Everyone else using it (embedded systems etc) would also be afected and if they are using any real mode they would also have to invest $$$ to upgrade it. And what you are recomending is not exactly what Intel is doing with it''s IA64?

In short, look at the Commodore Amiga, if I am correct, some of it''s models where incomplatible in some aspects with previous models, everyone was upset at that. You can not just change things like that and expect everyone to be happy. (Especially if it costs $$$$.)

Topgoro
We emphasize "gotoless" programming in this company, so constructs like "goto hell" are strictly forbidden.
I vote for bringing back Neanderthals!



short: Games run on windows. Office stuff runs on windows.
Nerd stuff runs on linux, with some office stuff and some games.
Linux = reasonable.
Windows = Used 90% of the Time.
Dos = Dead

Money is in windows.

Not using too many verbs, make simple for you dos users.

Heheh


#pragma DWIM // Do What I Mean!
~ Mad Keith ~
**I use Software Mode**
It's only funny 'till someone gets hurt.And then it's just hilarious.Unless it's you.
quote: Original post by Topgoro

The point is: people who can not afford a new computer like to play games and *BUY* software.

And what do you like better, people investing money to buy your sofware, or investing it in purchasing new hardware, and then don't have enough money left to buy your software?


This seems to be declining into a personal rant believe me, I've got my share too


quote: Original post by Topgoro

And no, there will be no end to this (rather fruitless, but intereting for some) discussion. I do like windows, but hate having to wait almost a minute on a Pentium 450/128MB for a 1 megabyte image to load when I open it from an email atachement. Or a little aplication I wrote using 11MB of ram, when the actual applcation is hardly 50k and I hardly dinamically allocate 4k of ram. See why people don't want to let DOS go?

But anyway, thank you for your time (and patience!)


A 450MHz processor -- funny, I've got one, with only 64MB of RAM, and it takes almost 500ms (on a slow day) for a 1MB, 24-bit image to load. I think you are talking about your modem or network connection.

I also didn't know it was possible to write a program like that (50K + 4K != 1,024K). Are you sure your numbers are correct? Are you sure Windows wasn't just growing the swap file or some other memory consuming task at the time? If you were using that much memory, it has to be a bug in your program, and if you weren't using that much memory, then you can't complain about Windows using 11MB for itself because you weren't using it at the time. If you had requested it, Windows would have given it to you -- that's how multi-tasking OSes have to work.

There is no end to exaggerations about Windows!

(I wonder, if people added up all the exaggerations about Windows, how much RAM would it take to run a couple programs simultaneously (Paint, Wordpad, IE5, and maybe a game)? I'd estimate about 768MB of RAM and a 3GHz processor...that is, if there is actually a limit to the exaggerations...)



- null_pointer
Sabre Multimedia


Edited by - null_pointer on 4/6/00 7:46:03 AM
Advertisement
well, lets clear up some things here...


1) Just because i said dos was a horrible system, it doesnt mean i love windows.

2) just because i hate hungarian style coding, and how windows messaging is set up, that doesnt mean i love DOS.

3) Just because i hate hungarian style coding, that doesnt mean I am an unorganised ''hacker''. Quite the contrary, I have my own coding styles:

Small, 100% object oriented code modules. This way, it is not possible to forget what I am working with.

lets look at some actual Microsoft hungarian code...

virtual LRESULT MsgProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam );


lol, i just want to puke looking at this. Naming the variables with the same exact name of its type, is UGLY, horribly written code.

what the fuck does ''HWND hWnd'' explain to me? Absolutely nothing useful.

and in the windows tradition of making code as complex as possible, they typedef everything 80 times just to make it confusing.

LPSTR, STR*, TCHAR*, LPTCHAR, and char* are all the same exact things.

why the hell couldnt they just use normal char*''s? Are they intentionally trying to confuse people?

God, i am so glad microsoft lost the trial, they deserve to die.



===============================================
"Tell brave deeds of war."
Then they recounted tales, -- "There were stern stands And bitter runs for glory."

Ah, I think there were braver deeds.
This is my signature. There are many like it, but this one is mine. My signature is my best friend. It is my life. I must master it as I must master my life. My signature, without me, is useless. Without my signature, I am useless.
DOS is fast. DOS is stable. Windows is neither. It''s that simple... I am just getting into DirectX programming, and I am impressed with it''s abilities; but it will NEVER be anything like DOS.

It really looks like DOS is dying, but I am still writing for it because it''s the MOST FUN. Where else can you use all kinds of fancy hardware tricks and be rewarded with exquisite bursts of speed?

For anyone who would argue the superiority of DirectDraw, I have this to say: "MODE X"...
quote: Original post by null_pointer
A 450MHz processor -- funny, I''ve got one, with only 64MB of RAM, and it takes almost 500ms (on a slow day) for a 1MB, 24-bit image to load. I think you are talking about your modem or network connection.

All rigth, this one is not valid, because now I remember that my email is using the IMAP protocol on a LAN (10MB, i guess) and if I am correct, the image must be downloaded before being displayed. (By the way, we have a T1 here ) But even this is still too slow.

quote:
I also didn''t know it was possible to write a program like that (50K + 4K != 1,024K). Are you sure your numbers are correct? Are you sure Windows wasn''t just growing the swap file or some other memory consuming task at the time? If you were using that much memory, it has to be a bug in your program, and if you weren''t using that much memory, then you can''t complain about Windows using 11MB for itself because you weren''t using it at the time. If you had requested it, Windows would have given it to you -- that''s how multi-tasking OSes have to work.

Actually, this time I checked and the correct numbers are: executable 24k and the text file it loads is 14k. Hardly 38k in total. When I start the application, I go to the Windows NT task manager/processes and it says it''s using 2.5 mega bytes, when I open the text file it jumps to 2.6 (well, may be I scrwed up when I said 11MB , but that''s too much any way. By the way, the app is small and written in assembler, that''s why it''s only 24k.

But anyway, a 128MB system can''t handle 38k without involving virtual memory?

quote: There is no end to exaggerations about Windows!

But some of them are well deserved.

But anyway, DOS is *COMERCIALLY* dead and there''s nothing anyone can do about it, and still thing that if Windoze was better implemented (handling resources correctly, the Knowledge Base wasn''t so full of bug reports, etc) not many people would be refusing the switch.

Topgoro
We emphasize "gotoless" programming in this company, so constructs like "goto hell" are strictly forbidden.
quote: Original post by Anonymous Poster

Dos and Windows are basically one OS. Dos after version 6.something was basically combined with windows, and windows needs Dos. None of them can be called an OS by themself, except for under < 6.something. And yes, Windows is basically just .dll's and drivers.


DOS 7.0 and 7.1 are completely independent of Windows. See my above post about removing all Windows files -- you can simply copy the DOS 7 files I listed and make a boot disk. Presto! Instant DOS rebirth! (I used to use a DOS 7 boot disk for my DOS games, before I figured out how the DOS VM settings work in Windows...)


quote: Original post by Mithrandir

lets look at some actual Microsoft hungarian code...


virtual LRESULT MsgProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam );

lol, i just want to puke looking at this. Naming the variables with the same exact name of its type, is UGLY, horribly written code.

what the fuck does 'HWND hWnd' explain to me? Absolutely nothing useful.


First, you are confusing MS code with Hungarian Notation. Hungarian Notation is simply a set of prefixes that determine: 1) scope, and 2) type. They allow these things to be easily recognized within any statement using a variable named according to these conventions.

LPARAM and WPARAM are typedefs (or C #defines -- doesn't matter for this discussion) that ease the transition from 16-bit to 32-bit and beyond. They are defined solely for messaging, and probably echo the same names used in Windows' internal source code.

virtual applies to classes and is NOT part of the Windows API. That snippet you gave is obviously from MFC. MFC uses the exact same syntax as Windows API in all possible ways to ease the transition from Windows API. I do not like the MS syntax, but I do like Hungarian Notation. They are separate, whether the guy who developed Hungarian Notation worked for MS or not.

HWND hWnd tells nothing of the variable's purpose, because it is BAD coding style. I do not like it either. Any good variable name needs three things to be readable: 1) type, 2) scope, and 3) purpose. While MS code uses Hungarian Notation, Windows API code is decidedly lacking in the purpose section.

Also, code without some kind of prefix/postfix system for the variables lacks: 1) type and 2) scope. Neglecting either type, scope, or purpose is equally bad code. Naming something like this:


char* buffer[10];



is just as bad as doing this:


char* pChar[10];



I don't care if you can go back and read your code 2 months or 2 years or 2 decades from now, what matters is whether other people can read it. Designing commercial software nowadays means working with other people. Naming conventions for variables simplify the process considerably, and people who fight and kick and scream about it are like little children who can't take their medicine because they think it will taste bad!

Here is a short description of Hungarian Notation, as close as I can remember it (some parts might not be exact, but you can see the layout):


    g_ - global scope
    s_ - static scope
    m_ - member of class, struct union and used within member functions

    sz - null- (or zero-) terminated char string

    c = char
    n - int
    l - long
    s - short
    f - float
    d - double

    p - pointer- (or indirection-) type

    u - unsigned


Understand? Hungarian Notation is just a system of prefixes -- not a complete naming convention that dictates that you have to name everything exactly like its type.

Try these examples:


lXYPosition = usX + usY * lMemoryPitch;

ulPixel = cAlpha + (cRed << 8) + (cGreen << 16) + (cBlue << 32);

g_pDisplayMemory[lXYPosition] = ulPixel;



Without knowing the rest of the source code, can you tell what that snippet does? Here's a recap:


    lXYArrayPosition is a long holding the X,Y position in a one-dimensional array.
    usX and usY are unsigned shorts that hold the desired coordinates.
    lMemoryPitch is a long holding the actual width of the memory.
    cAlpha, cRed, cGreen, cBlue are chars holding color values
    ulPixel is the actual pixel built from the color values
    g_plDisplayMemory is a global long pointer to display memory
    All variables except g_plDisplayMemory are local to the function.

    What does the function do? Plots a 32-bit pixel.


It's only ugly if you don't know how to use it. Utility can sometimes be more beautiful than the way the code looks. Do you know how much data was stored in those few prefixes? That whole paragraph of explanation that I wrote up. All you have to do is memorize 10 or 20 prefixes and you can tell all that in the blink of an eye.


quote: Original post by Mithrandir

and in the windows tradition of making code as complex as possible, they typedef everything 80 times just to make it confusing.

LPSTR, STR*, TCHAR*, LPTCHAR, and char* are all the same exact things.

why the hell couldnt they just use normal char*'s? Are they intentionally trying to confuse people?


First, MS provides such things because there are MANY standards for strings. It is an extension for Hungarian Notation, and (IMO) a rather poor one. However, it does have some merit. The 'T' prefix stands for Unicode. 'LP' tells you that the pointer is FAR (and probably preserved for compatibility with 16-bit Windows). 'P' simply means pointer. These things are all in UPPERCASE because it is good practice to put macros in C (because that's C's (IMO, poor) implementation of typedefs) in all UPPERCASE. It's an established principle. They also made the Windows API in a C++-only form, called MFC. As I stated before, the poor coding in Windows API is simply echoed in MFC, as it must be.

Everything has a purpose -- look for it before trying to make a fool out of the MS programmers.


quote: Original post by Topgoro

But some of them are well deserved.


No exaggeration is well-deserved. And why are you complaining about Windows accessing 2.5 MB of virtual memory (or whatever number you posted) -- obviously, your program uses that much. If Windows REALLY took 2.5 MB of virtual memory to open a 14 KB file, let's calculate how much RAM it would take to open a 1 MB image file: hmm...187 MB of RAM?


quote: Original post by Topgoro

But anyway, DOS is *COMERCIALLY* dead and there's nothing anyone can do about it, and still thing that if Windoze was better implemented (handling resources correctly, the Knowledge Base wasn't so full of bug reports, etc) not many people would be refusing the switch.


If Windows didn't handle resources correctly, it wouldn't even load...

The KB is full of bug reports because of the required compatibility with 16-bit code. How many problems have you run into when trying to upgrade your code to use something new? Upgrading an Operating System is A BIG DEAL. Lots of work, lots of bugs, lots of testing, and the KB is still full of bugs. And it's mainly the fault of compatibility. As I said before, if MS started over, there would be almost zero bugs in the KB applying to the new OS. Backwards compatibility is any OS's biggest burden, and Linux will eventually fall under it too... The only way to eliminate those problems completely is to simply cut off many old users and start afresh.


quote: Original post by VGASteve

For anyone who would argue the superiority of DirectDraw, I have this to say: "MODE X"...


ModeX is 320x240x8 -- WOW! Oh, wait a minute, my game does 1024x768x32 fine in DirectDraw...


People, there are two steps to posting Windows facts:


    Step 1 - Think
    Step 2 - Post



All you need to do is follow them in that order...




- null_pointer
Sabre Multimedia


Edited by - null_pointer on 4/6/00 5:10:49 PM

This topic is closed to new replies.

Advertisement