Hi Guys, It's all well and good learning about VB first then moving to java etc. I started writing in Assembler(INTEL) then C/C++ then MFC then java/C# etc. It really helped me understand whats really happening under the hood when I'm doing something. Esp on devices where memory is at a premium and languages that do their own(not so effective) memory management are in vogue. If I didn't know what was happening under the hood then things like converting ASCII to base64 encoding would not make sense to me. Understanding the way win32 handles the message loop and messages in general as well. If you're planning on doing any Graphics programming even in C# GDI+/Managed Direct X then knowing the underlying windows calls are essential. Or try calling a dll written in delphi using reflection from a C# program you'll get garbage out because you didn't learn that parameters are loaded onto the stack in different orders in different languages(or in the same language if specified. If you are familiar with win32 coding in C or C++ or assembler you'll know the class types for controls and the "properties" they support so you'll know what to look for in a higher level language. You'll understand how each window has a class type that is kept in an array of all the instances of that class type. So you would know that you can get a pointer to any window from it's position
HWND WindowFromPoint(xy)
or from it's CLASS name/title:
HWND WINAPI FindWindow(
_In_opt_ LPCTSTR lpClassName,
_In_opt_ LPCTSTR lpWindowName );
And you think ah, that would be so much simpler in C#, WRONG;
Sample Code(C#)
[DllImport("user32.dll")]
public static extern IntPtr FindWindow(String sClassName, String sAppName);
Example:
IntPtr hwnd=FindWindow(null,"Form1");
You're still forced to use win#@ code to get anything really fun done. Thats why I suggest learning it first, then you'll know what other programming languages MUST support. BTW going back to C is a little radical. C++ is the way(almost every coders favorite lang, operating systems (linux,Windows) were written in C++. C++ will also teach you about things like templates only recently introduced into c# as system.collections.generics, operator overloading, function pointers (delegates in C#) and so much else. If there was a functionality chart C++ would score on EVERYTHING while other languages even C# which I love would fall short. Forcing you to delete memory you allocate also makes you more conscious of how much memory you keep on the heap. For F*cks sake most "new" coders don't even know the difference between the stack and the heap. Thats why C++ coders get paid more, we know more. Basically what I'm saying is learn C++ and you'll be able to learn any other language in a week. That's a promise. And if you cannot learn it, you shouldn't be coding anyway. You should be writing queries for excel reports maybe or whatever. Plus the ENTIRE world of coders laugh at VB coders. If you go with VB at least go with VB.net that way you'll learn some of the framework (no not all of the framework is available to vb.net, it is to c#) PROVE ME WRONG.