Home iKnow Main menu

    > Home > Blog > Windows Development
separator


Windows Development

General development

"What do you say to people when they say that programming is not demanding?

Ask them if writing a small 100 page novel in English without a single spelling or grammatical error is mentally demanding.

Further explain to them that this novel is actually someone else's story that you have to write as they explain it to you.

That person only speaks Chinese (luckily you are bilingual), so you have to translate it from Chinese to English as you go.

Then to top it off, the person isn't exactly sure what the story they want is, so they can only help you get it right by informing you when you have done it wrong from their vague descriptions.

You have to complete this in 3 days.

Now is it demanding?
"
- Dan McGrath

Windows Development

Standard Windows development stack Most standard software applications for MS Windows (like MS Office, Internet Explorer, Firefox etc) use a combination of C/C++ as the programming language, MFC/QT/wxWidgets as the framework and Win32 as the bottom layer in Windows (organizations often use C# and .Net for internal development).

The C/C++ language is a very powerful and complex language, and most programmers only use a subset of it. C++ is a multi-paradigm, general-purpose programming language. This means that it can be used for both low-level (drivers, OS) and high-level (applications) development, and you can choose between procedural, object-oriented and generics style programming.

Similarly, each of the wrapper libraries MFC, QT and wxWidgets are very powerful and very complex, and most programmers only know a subset of one of them. The wrapper libraries also evolve differently, and you cannot change from one library to another.

This means that choosing a library "locks you in" for the future, and you cannot control any changes to the library.

In contrast to the wrapper libraries, the Windows API (Win32) is a very stable foundation which is designed to be backwards-compatible. This means that even when Windows and the Windows API evolve, most programs will continue to work without changes (a program can run on Windows 95, 98, XP, Vista and Windows 7 with minor/no changes if programmed correctly).

Ideally, the MFC/QT/wxWidgets wrapper libraries should make programming against the Win32 API easier, but the complexity of each library and the big difference between each library often increases complexity instead of reducing it.

The programming language should make the wrapper libraries easier to use, but the complexity of C++ often makes even the most basic tasks difficult.

"If you think C++ is not overly complicated, just what is a protected abstract virtual base pure virtual private destructor and when was the last time you needed one?"
- Tom Cargill, C++ Journal, Fall 1990

PpcSoft iKnow development

PpcSoft iKnow development stack PpcSoft focused on development for Windows Mobile devices in the early days, and this limited the number of available frameworks. Win32 was the only dependable framework as others were "work-in-progress" on Mobile (if available at all).

Interacting with the Win32 framework directly is possible, but very cumbersome, so it was decided that a small wrapper library named "AI Framework" should be developed for easier and faster future development.

As most other companies, PpcSoft only uses a subset of C++, but with a few unique features resulting in a language we nicknamed C* (C star) to simplify documentation.

The goal of both C* and the AI Framework is to reduce complexity and make the programming easier and more productive.



External links

- The Law of Leaky Abstractions (Joel On Software)
- Good software takes ten years. Get used to it. (Joel On Software)

- How many Microsoft employees does it take to change a lightbulb? (fun)

About

My name is Atle Iversen, and I'm the founder of PpcSoft (read more).

Contact me at atle.iversen@ppcsoft.com

RSS feed

Most popular

KM 3.0: This time it's personal
PKM, filtering and Information overload
iKnow vs. OneNote vs. Evernote
The power of checklists
Synchronizing multiple computers

Latest articles

iKnow 2011 released !
The Memex

Windows Development
Programming Productivity
C* - C star
iKnow minor update
iKnow and information overload

Using iKnow for movies
Using iKnow for research
Efficiency and Scalability
iKnow for Mac/Linux
E-learning

PKM, filtering and Information overload
Note: Grammar Mistakes
PpcSoft iKnow Help
Price, service, features
Note: Life

Yellow notes
Note: xPeople
Usability: Full-text search
Personal Wiki
Usability: Font size

KM 3.0 Part IV: A practical KM system
KM 3.0 Part III: The KM process
KM 3.0 Part II: The value of knowledge
KM 3.0 Part I: What is KM ?
KM 3.0: This time it's personal

Usability: Incremental search
Synchronizing multiple computers
Note: First Aid
iKnow vs. OneNote vs. Evernote
Wikipedia + Google = iKnow

Usability: Copy / Paste
Note: Poems
Note: Google
Usability, Simplicity, Productivity
Productivity Secrets

The power of checklists
Capturing vs. Sharing knowledge
Second-sibling problem
Note: 2Do
Note: Creativity

Note: Productivity
E-mail
Information overload
Productivity
Enterprise 2.0

Personal KM
The Greatest Thing
Social Media
The Answer
About





Copyright ©2002-2012 PpcSoft. All Rights Reserved. | Sitemap | Contact Us