Helios to those last two questions, I mean how would I make the computer move and click the mouse, or type the keyboard on its own? |
Why would you want to do that? There certainly are ways to do it, but I want to know what you ultimately want to do with it to perhaps suggest a better approach.
How do you make a library for a language for something the language does not have already (just curious)? |
Depends on what the library will be doing. For example, a library like libbz2 that only loads files and decompresses them only needs the standard library and the CPU, since compression is mostly number crunching. When this is the case, the library could just as easily be coded directly into the application, since it has no external dependencies.
A GUI toolkits like wxWidgets is an abstraction layer between the main application and the system calls (
http://en.wikipedia.org/wiki/System_call ), which in this case do things like opening windows and such. These libraries could also be coded directly into the application, at the cost of losing the layer and, consequently, portability. However, depending on the kind of library, statically linking may not be practical. Qt, for instance, is ~1.5 GB total.
Multimedia, specially graphics, libraries like OpenGL, OpenAL, and DirectX also use system calls, but instead of using them to communicate with the OS, they use the OS to communicate with the hardware. In this case, statically linking is never practical.
Then, finally, kernel drivers. These are at the lowest level of abstraction right next to the kernel and communicate directly with the hardware. The OS uses them to abstract away from the hardware and to possibly enable special functions in the specific model.
So we have:
Hardware <- Firmware (if it exists) <- Kernel and drivers <- System calls <- 2nd type libraries* <- Language <- 1st type libraries* and user's functions <- Main application
*Following the types I used above. Libraries are only classified by their linking type, but I couldn't find any other short way to refer to them.
Will I need to know math or anything important to use said libraries? |
I'll tell right now: only very few types of applications use anything more advanced than high school math. If you know what a logarithm is and know your boolean algebra, you more or less know all the math you'll need.
The exceptions to this rule are mathematical application, obviously, and graphics programming. So to answer you other implicit question,
I've heard of Ogre3d, I've been visiting the website for years but I've stopped myself from using it because I don't know what to do with it, and I don't know the math. |
There isn't more math required to use Ogre then there is to use any other library. When I said "graphics programming" I mean actually writing your own rendering engine. Since Ogre is already written, you don't need to.
Phew! Okay, it's way too late, now.