Today, researching technology has landed me in some interesting places:
Bochs - The Open Source IA-32 Emulator.
Somewhat of an understatement, the "Virtual-PC-like" project Bochs emulates the processor, basic hardware, and BIOS. You can install many versions of Windows and Linux within a Bochs emulation. This is great if you want to try a Linux distribution or even develop your own OS within a simple crash proof environment when you don't have an extra PC lying around.
Win32 Program Disassembler - A Win32 disassembly project by Sang Cho. It's a bit dated, but the full source is provided and there's some good links to other disassembly and decompilation sites.
X86 Machine Code - An old-school site with lots of good assembly information and links. One link that stood out in particular was to an extensive list of interrupt calls.
Saturday, February 02, 2008
Thursday, January 24, 2008
Fields of Programming
When programming, especially in games, there's a lot more you'll need to know than just generic C++ and basic Data Structures. Listed below are some of the fields of study that you'll probably run across.
OS Specific Programming
On Linux, this might be the X Windows system.
On Windows, this is the Win32 API, specifically messaging and windowing.
Raster / 2D Graphics
GDI (Windows)
DirectDraw (Windows)
Vector / 3D Graphics
OpenGL (Cross Platform)
Direct3D (Windows)
Networking
berkley sockets (*nix)
Winsock 2 (Windows)
Interfacing SQL / Databases
Depends on the database. Some popular ones:
MSSQL
MySQL
PostgreSQL
Oracle
Music and Sound
OpenAL (Cross Platform)
DirectX Audio (Windows)
Script / Language Parsing
There are many different techniques and theories for parsing.
The LUA scripting language has been popular to implement lately.
Assembly / Machine Language
An understanding of the inner workings of your program can be invaluable.
Assembly can be used to optimize sections of code, though this is discouraged in some circles because it makes the program non-portable to other machine types.
Also, if you intend on writing an assembler you'll need to know assembly.
When programming, especially in games, there's a lot more you'll need to know than just generic C++ and basic Data Structures. Listed below are some of the fields of study that you'll probably run across.
OS Specific Programming
On Linux, this might be the X Windows system.
On Windows, this is the Win32 API, specifically messaging and windowing.
Raster / 2D Graphics
GDI (Windows)
DirectDraw (Windows)
Vector / 3D Graphics
OpenGL (Cross Platform)
Direct3D (Windows)
Networking
berkley sockets (*nix)
Winsock 2 (Windows)
Interfacing SQL / Databases
Depends on the database. Some popular ones:
MSSQL
MySQL
PostgreSQL
Oracle
Music and Sound
OpenAL (Cross Platform)
DirectX Audio (Windows)
Script / Language Parsing
There are many different techniques and theories for parsing.
The LUA scripting language has been popular to implement lately.
Assembly / Machine Language
An understanding of the inner workings of your program can be invaluable.
Assembly can be used to optimize sections of code, though this is discouraged in some circles because it makes the program non-portable to other machine types.
Also, if you intend on writing an assembler you'll need to know assembly.
Sunday, November 11, 2007
Distributing Visual C++ Applications
In recent years (and recent Visual Studio versions) Microsoft has unintentionally made it much harder to distribute C++ applications.
The reason for all the grief is a new dependency file MSVCR80.dll (Visual Studio 8.0/2005) or MSVCR90.dll (Visual Studio 9.0/2008). The DLL file handles initialization and cleanup of The C++ Standard Libraries among other things. If your swapping applications with another developer then you probably won't have a problem, but if you try to send your app to someone without the latest Visual Studio they're going to run into a nasty error message.
The solution Microsoft suggests for solving the problem they created is to wrap the Visual Studio redistributable in an installer. This is okay, but what if your program is too small to warrant an installer? Running a tutorials site, it doesn't make sense for users to have to install each demo application. My solution was to just compile under Visual C++ 6.0, which is arguably the best in the VC product line anyway.
References:
Deployment (C++)
http://msdn2.microsoft.com/en-us/library/zebw5zk9(VS.80).aspx
The reason for all the grief is a new dependency file MSVCR80.dll (Visual Studio 8.0/2005) or MSVCR90.dll (Visual Studio 9.0/2008). The DLL file handles initialization and cleanup of The C++ Standard Libraries among other things. If your swapping applications with another developer then you probably won't have a problem, but if you try to send your app to someone without the latest Visual Studio they're going to run into a nasty error message.
The solution Microsoft suggests for solving the problem they created is to wrap the Visual Studio redistributable in an installer. This is okay, but what if your program is too small to warrant an installer? Running a tutorials site, it doesn't make sense for users to have to install each demo application. My solution was to just compile under Visual C++ 6.0, which is arguably the best in the VC product line anyway.
References:
Deployment (C++)
http://msdn2.microsoft.com/en-us/library/zebw5zk9(VS.80).aspx
Visual Studio 2005+3
Microsoft is releasing the 2008 edition of their software development studio later this month so I decided to take a minute to download and review their public available beta.
There really isn't enough improvements from VS 2005 to warrant a new release. The user interface is the same. Intellisense still doesn't work well. The .Net Framework 3.5 doesn't add anything for a C++ native application programmer. In essence Visual Studio 2008 is nothing more than a Service Pack for Visual 2005.
References:
Release Date Announcement
http://www.microsoft.com/presspass/press/2007/nov07/11-05TechEdDevelopersPR.mspx
Visual Studio 2008 Feature Specifications
http://msdn2.microsoft.com/en-us/vstudio/aa948851.aspx
There really isn't enough improvements from VS 2005 to warrant a new release. The user interface is the same. Intellisense still doesn't work well. The .Net Framework 3.5 doesn't add anything for a C++ native application programmer. In essence Visual Studio 2008 is nothing more than a Service Pack for Visual 2005.
References:
Release Date Announcement
http://www.microsoft.com/presspass/press/2007/nov07/11-05TechEdDevelopersPR.mspx
Visual Studio 2008 Feature Specifications
http://msdn2.microsoft.com/en-us/vstudio/aa948851.aspx
Saturday, October 07, 2006
Three Books Every Windows Programmer Should Own
Today I'm going to be reviewing some of what I think are the most important books for any aspiring C/C++ Windows programmer.
Programming Windows Fifth Edition
by Charles Petzold
This book is truly the Windows programming bible. Petzold covers all the basics of a Windows application, such as, events and messages, the GDI, and dialog boxes. The book also hits on some advanced Windows programming like multiple-document interfaces, multithreading, and creating and using DLLs.
Advanced Windows Third Edition
by Jeffrey Richter
Jeffrey Richter is in the know when it comes to Windows architecture and programming. The first few chapters cover architecture topics like kernal objects, and memory architecture. The later chapters he moves on to programming topics such as advanced memory management, multithreading, structured exception handling (SEH), and many other advanced topics not covered anywhere else. This book is a must for any serious Windows programmer.
Note: There's a fourth edition of this book titled Programming Applications for Microsoft Windows that covers Windows 2000 and some 64bit programming topics. This book, however; is out of print (though I'm not sure why) and fairly expensive even on auction networks such as Ebay.
Network Programming for Microsoft Windows
by Anthony Jones and Jim Ohlund
Not a part of the Win32 API, but still very much a core part of Windows. Network Programming is the offical reference for the Winsock 2 API (besides MSDN). While I don't compleately agree with the author's writting style, or programming methods, this book provides an excelent overview.
Programming Windows Fifth Edition
by Charles Petzold
This book is truly the Windows programming bible. Petzold covers all the basics of a Windows application, such as, events and messages, the GDI, and dialog boxes. The book also hits on some advanced Windows programming like multiple-document interfaces, multithreading, and creating and using DLLs.
Advanced Windows Third Edition
by Jeffrey Richter
Jeffrey Richter is in the know when it comes to Windows architecture and programming. The first few chapters cover architecture topics like kernal objects, and memory architecture. The later chapters he moves on to programming topics such as advanced memory management, multithreading, structured exception handling (SEH), and many other advanced topics not covered anywhere else. This book is a must for any serious Windows programmer.
Note: There's a fourth edition of this book titled Programming Applications for Microsoft Windows that covers Windows 2000 and some 64bit programming topics. This book, however; is out of print (though I'm not sure why) and fairly expensive even on auction networks such as Ebay.
Network Programming for Microsoft Windows
by Anthony Jones and Jim Ohlund
Not a part of the Win32 API, but still very much a core part of Windows. Network Programming is the offical reference for the Winsock 2 API (besides MSDN). While I don't compleately agree with the author's writting style, or programming methods, this book provides an excelent overview.
Friday, October 06, 2006
A Year in the Life of CoderTutorials
Today we're celebrating the anniversary of CoderTutorials by rolling out a new look. While it isn't the exact date, it's finally is feeling like we've been around a year. Here are some milestones in the CoderTutorials history:
09/10/05 - Codertutorials hosted at ATSPACE.COM
09/11/05 - Domain name registered at NetworkSolutions
01/07/06 - Changed web host to HostGator and Domain registrar to GoDaddy
03/23/06 - Changed web host again to IX Web Hosting
03/29/06 - Changed web host once more, to Site5
Site5 and GoDaddy have my best regards. Site5 for being honest, fast, and reliable. GoDaddy for being cheap. Here's to another great year.
Cheers,
09/10/05 - Codertutorials hosted at ATSPACE.COM
09/11/05 - Domain name registered at NetworkSolutions
01/07/06 - Changed web host to HostGator and Domain registrar to GoDaddy
03/23/06 - Changed web host again to IX Web Hosting
03/29/06 - Changed web host once more, to Site5
Site5 and GoDaddy have my best regards. Site5 for being honest, fast, and reliable. GoDaddy for being cheap. Here's to another great year.
Cheers,
Thursday, October 05, 2006
Quick Links I - Java
My humblest apologies for not keeping the site more updated. There's a new (cleaner) design in the works as well as several C++ and Java tutorials. Now, from my link collection:
- Get started programming Java with About.com's Quickstart to Java.
- Once you're started, About.com's Java Tutorial Series is a great follow-up.
- Tutorials and articles from novice to professional at Java Coffee Break.
- Borland has a relatively good Sockets Tutorial.
- Check out this collection of Open Source Projects
- Get started programming Java with About.com's Quickstart to Java.
- Once you're started, About.com's Java Tutorial Series is a great follow-up.
- Tutorials and articles from novice to professional at Java Coffee Break.
- Borland has a relatively good Sockets Tutorial.
- Check out this collection of Open Source Projects
Tuesday, April 11, 2006
A quick and much needed update.
There are quite a few exciting things in the works at CoderTutorials.
First of all, there are several new tutorials on the way. While I'm not exactly sure when they'll be done, I know the answer is "soon".
Also, I'm in the process of setting up forums that you'll be able to access from the community section on the left side of the main site.
Look forward to more updates soon.
First of all, there are several new tutorials on the way. While I'm not exactly sure when they'll be done, I know the answer is "soon".
Also, I'm in the process of setting up forums that you'll be able to access from the community section on the left side of the main site.
Look forward to more updates soon.
Subscribe to:
Posts (Atom)