Ok, what does all of this have to do with programming language design ?

A great deal.

In object oriented languages one is used to things like:

Form.caption = "some text"
Button.caption = "some text"

Button.top = 20
Button.left = 30

In the WIN32, this does not exist. In the WIN32 to change the text of a dialog or a button control one would either call a flat API or send the window a message like this:

SetWindowText hWindowHandle&, SomeTextinAsciiZFormat

or

SendMessage hWindowHandle&, %WM_SETTEXT,0, VARPTR(SomeTextString_which_isNullTerminated)

The PowerBasic compiler (which ThinBasic emulates) uses a command like:

DIALOG SET TEXT hDialogHandle&, "some text"

or

CONTROL SET TEXT hDialogHandle&, ControlID&, "some text"

These commands are simply wrappers for the above WIN32 methods.

You can see that WIN32 coding is a far cry from object oriented coding.

True WIN32 coding is more procedural in style, while dot.net coding (and other Microsoft languages) are more object oriented.

Objects are something inherent to modern programming languages, rather than the core of Windows.

This love affair with OOP is what has caused Windows to bloat into the monstrousity it is now.

Microsofts C++ expert Herb Sutter discusses this in his talk "Why C++ ?":

http://channel9.msdn.com/posts/C-and...b-Sutter-Why-C

He explains how Windows Vista was Microsofts attempt to do everything with the operating system using a managed language (aka. dot net) and how it was a failure (slow and bloated basically) because of this. Why ?

Because performance can only be found using native coding (in Windows this means the WIN32) and more low level approaches to coding. Now personally I don't think he goes far enough, because C+ programmers still use a degree of OOP, but he faces the real problem with modern computer devices (including mobile), which is poor performance and managed languages just don't cut it.

Now personally I would go a step further. OOP has added too much extra overhead to our software today, making it more difficult to debug and also bloated.

Don't believe this ?

Ask any professional programmer today to try to develop some software and tell them they can only use a computer with less than 1 gigabye memory and a CPU which is less than 1 ghz. They would laugh in your face and say it can't be done. Now ask them to develop some software using a 10 year old Windows XP computer with only 256 meg ram and a 20 gig harddrive. Again they would laugh in your face.

Now tell them you want the software they develop to run just as well on a Windows 98,XP or 2000 machine with only 256 meg ram or less as it does on a modern PC and they will say it is impossible.

But it is possible and it can all be done using native coding using the WIN32 API.

Look at how tiny ThinBasic is. The entire installation (once installed) is about 28 megabytes. Impressive. This is why the use of PowerBasic really makes a difference in its development.