How to learn "real" programming, computer-close, to become a real guru? hehe

Started by
8 comments, last by Afterlife 22 years, 8 months ago
I don't want to end up just another ordinary programmer who uses DirectX or whatever to do everything. I want to make libraries like DirectX myself , "hack" (not talking about viruses or anything bad) even if nececcary. I know I sound like just another newbie who dreams of the impossible, but I have a different attitude. Are there books you can recommend for reading directly from the byte streams sending them and so on. Or are those things to be learned your self, if so how? I don't except it to happen in a few years, but I'd like to know the way to begin a way for being a guru . There must be other newbies like me here. So you real gurus (if there are any of you here ), reveal your paths to the divine godship of guruness . Oh and, is C/C++ "enough" for being a good computer-close programmer or do you need to learn something like Assembly? (Laugh at me, and I will first learn computer-close programming, then hack on to your computer and fry your motherboard, mwahahaha :D) Edited by - Afterlife on July 30, 2001 4:41:58 PM
------------------------------If there be no heaven,may there atleast be a hell.-------------------------------Afterlife-
Advertisement
quote:
Laugh at me, and I will first learn computer-close programming, then hack on to your computer and fry your motherboard, mwahahaha :D

Note to self: Don''t run any of Afterlife''s demos.

Learn assembly. That''s the only way you''re going to make something fast enough to compete with the other api''s out there. Also be prepared for pain. Lots of it. There''s a reason api''s exist.

-fel
~ The opinions stated by this individual are the opinions of this individual and not the opinions of her company, any organization she might be part of, her parrot, or anyone else. ~
I''d say "don''t bother" APIs like DirectX, OpenGL & even higher APIs for full 3D engines have literally tens or hundreds of man years worth of work put into them. There is simply no way a single programmer can effectively compete. Think about it, even if directX only took 5 guys a year to write - it will take you 5 years to write. More likely to took 20 PhD''s a year or more to write......hmmmm

Just my $0.02
Brad
Ok lets just say I want to learn how to "control" and "monitor" the inner parts of the computer. I''m sure there are ways of learning that... Because I don''t just want to be a simple api game programmer, i want a little more than that. To be able to atleast modify existing apis get the possibility to be an api programmer. Are all that sort of jobs done with Assembly? I heard a rumor that Windows(atleast some version) was made with c...
------------------------------If there be no heaven,may there atleast be a hell.-------------------------------Afterlife-
Most system software nowadays is written in C (perhaps some even in C++). Quite often, parts of them are implemented in assembly, but very seldom is the whole program/library implemented in pure assembly. There simply is no reason; C is pretty ''close to the metal''.
Your main problem in writing such an API is speed. Sure, you could write your own basic api for graphics in assembly, just as if you were writing some ModeX stuff in Dos.

However, DirectX accesses the graphics card directly in order to achieve hardware acceleration. This therefore means it knows how a vast and diverse range of graphics cards work and function in order to cater for each user's individual system.

Without hardware acceleration in your API, you'll be stuck with just copying system memory buffers to the graphics memory each frame. There is only so much speed you can get out of this, even in the finest tuned assembly. DirectX has this implemented for older cards where hardware acceleration is unavailable/limited.

You could quite probably improve on DirectX's software emulation of hardware acceleration, however, if you were interested in some direct manipulation of pixels etc. for alpha blending or the like. But then you may as well use DirectX as a base anyway for the initial setup of your app (setting screen res etc.), all of which would be quite a feat to program in itself.

Writing your own such API as DirectX would take a lifetime, as well as a large budget to purchase all your test hardware. However, for purely learning purposes I guess you could find some documentation on your current graphics card and play about with some of its functions in assembly. I'm not sure how feasible getting, or implementing, this information would be though.

Trust me, leave it to Microsoft

--
Russ

Edited by - rah on July 30, 2001 8:02:45 PM
Perhaps Afterlife's goal is not to write graphics API's and low level stuff on his own, but to write such code professionally for a company such as microsoft, developing low level systems software, device drivers etc...

If so, you should definitely study computer science and some electronics and computer hardware stuff at a university/college level.

Or if you for some reason don't want to do it for a living, and don't mind using Linux; the Linux kernel hackers or XFree86 people would probably appreciate people like you, willing to write low level stuff (at least when/if you know what you're doing ).

You could also check out the Wine project and/or other projects working on getting DirectX to work under XFree86/Wine. (Wine is a kind of windows emulator for the X Windowing System (used under Linux/UNIX/*BSD etc...). WINE is a recursive acronym, meaning: Wine Is Not an Emulator, so it's not quite an emulator, more of a compatibility layer for running windows programs under the X Windowing System).

Edited by - Dactylos on July 30, 2001 8:21:06 PM
One of the best abilities of a guru is noticing when he/she doesn''t have to write code, and focus on the important stuff. Get a couple of thick books, I''ll make a list of a couple at the bottom of the post. Get a copy of Linux, no doubt about it, and if you''re fairly proficient at c/c++ head over to www.linuxassembly.org and tune up on assembly, and get to know how to use gcc so you can use it without consulting a manual. If you have a broadband connection then by all means use it, surf the web for any and all info you need and want. If encryption is your thing then search for some of the main algorithms like RSA, DES, AES, Blowfish, etc.

Books:

Black art of 3d game programming by Andre Lamothe
Several books on tcp/ip and firewalls(no specifics)
Hacking Exposed 2nd edition by Scambray, McClure, and Kurtz
Anything that you find that''s interesting!


Websites:

grc.com
www.analogx.com
www.gamedev.net
www.linuxassembly.org
www.google.com (Search away!)
My objective is not yet to "do", but to learn how to.

Thanks, for your tips. I think Assembly on c/c++'s side is a good idea and I'll go with that for now.

(late answer, I have been interrailing )

Edited by - Afterlife on August 7, 2001 6:31:10 PM
------------------------------If there be no heaven,may there atleast be a hell.-------------------------------Afterlife-
Once you learn assembly and C; if you want to program "close to the metal" in Windows you need to get your hands on a 2000 machine along with another windows computer, the NT DDK, and the kernel debugger (WindBags). This lets you handle interrupts and execute code in ring 0 and debug your code remotely, prerequisites for writing device drivers.


Magmai Kai Holmlor
- Not For Rent
- The trade-off between price and quality does not exist in Japan. Rather, the idea that high quality brings on cost reduction is widely accepted.-- Tajima & Matsubara

This topic is closed to new replies.

Advertisement