Amanda Silver - Getting into Visual Basic.NET

Play Amanda Silver - Getting into Visual Basic.NET
Sign in to queue


Amanda Silver is a program manager on the Visual Basic team.

We wondered what VB 6 programmers needed to know about Visual Basic.NET.

We also asked her to tell us the three things that make a great Visual Basic programmer.

In a separate video we just uploaded Amanda talks about VB's lineage (Basic was Microsoft's first product).





Download this episode

The Discussion

  • User profile image
    Ok, Amanda just makes too much sense! Smiley
    I've been programming VB since version 3.  When .Net came around and I couldn't show Form2 I just closed Visual Studio and went back to VB6.  It really was frustrating.  If it wasn't for the "Student Evangelist" program, I think I'd still have VB6 laying around.  Now I love VB.Net and I'm really appreciating Object Oriented Programming!  It's too damn cool! Smiley  (Inside I miss WinForms too, ASP.Net really took over)

    I would love Amanda to expand on how to really make use of the framework, something she just mentioned.  I remember the days of going through the Win32API definitions trying to make use of all those cool APIs.  I use the Object Browser tool with .Net when I look for those cool features you don't find readily avaialble, but I still find myself bringing some old WIN32APIs into .Net to do things because I really can't find them.  Such things as Windows Handles of Open Processes is what I can think of right now when I needed to automate an external program.  (Heh, reminds me of SendKeys Smiley)

    Great interview, really confirmed my views.
  • User profile image
    Beer28 wrote:
    VB is nice for people starting out. I started programming windows on VB5, though I had done programming on other systems before that.

    If it weren't for VB, I wouldn't be able to code C/C++ on linux with the intel compiler today. Thanks VB.

    That is very insulting. VB6 was a full programming language that can do almost anything C++ can do. The few limitations that it does have can be programmed around.

    I can build Win32 and MFC (shudder) applications in VC++ now but yet I find that when I need to write an application for my own consumption I will start VB(6) and it would have been written and debugged in half the time - with better results normally.

    VB(6) does not stifle creative freedom which is something lower level languages are very good at, even if you get more freedom to do other things (most of which programmers don't bother with). is not very good, it doesn't feel the same. Simple things that worked in VB6 and you would expect to work in its 'big brother' don't work any more. For example = Right() Left() Len(). Not to mention that has moved from a base of functions over to a base of classes, so for new things now you would never consider typing NetFunction(Thing) you would be doing Thing.NetFunction(). Which although in theory simpler it is not what VB is about it is what C++ is about.

    VB6 - Day to day, '5min' programs (these can be more complicated than SOME people's C++ apps).

    C# - Stuff? - Too time consuming for quick write-out apps however has advance features such a multi-threading.. so I would use this for 'something' .. ? - Compiling Other people's code.

    VC++ - When I am learning about memory pointers and the fun and wonder of how to cause a memory leak by mis-typing a single letter. I very very rarely write non-learning applications in VC++. I also rarely set my self on fire..

    Java - They make me..

    VBScript - When I need it.. More than you might expect.

    About the Win32 thing, you know that the average VB6 programmer knows MORE about the Win32 system than those that do C++. I also love to hear the C++ bitching about how lame it is calling an API  directly when they are doing the exact same only via a library call! (or a .Net call)

    You learn a great deal about Windows and how things work.

    Video: I find it ironic that she uses the Win32 as an example for why VB6 is worse than .net - but once you figure out the pattern I find finding a Win32 call (using the API-List tool) hell of a lot faster than searching though libraries of libraries of libraries of the .Net framework.

    Anyway you get more freedom with direct Win32 calls. only allows you to do what Microsoft wants you to do.
  • User profile image
    Sven Groot

    Manip, I hate to say this, but I could not disagree with you more.

    I started programming in GW-BASIC. I worked my way up via QuickBASIC 2.0, QuickBASIC 4.5, Visual Basic 3.0, 4.0 (both 16 and 32-bit editions), 5.0, 6.0, .Net 2002 and now 2003 (and partly 2005). I have worked professionally (i.e. for a job) with VB6 and VB.NET.

    I think VB.NET is the greatest thing to happen to VB ever. Making VB truly object oriented was utter genious. I find that using the Object Oriented paradigm I can do what I need to do much faster and more reliably than in VB6. I haven't used VB6 anymore for years now, and I say good riddance.

    For one thing you mention that certain things don't work anymore (Left() etc.) but that's simply not true. Those things all still work. I can still do Trim(somestring) or go the .Net way and do somestring.Trim(). I can do MsgBox("hello") or MessageBox.Show("hello"). I can do Val(somestring) or Convert.ToInt32(somestring). I can do vbCrLf or ControlChars.CrLf. All those global functions that VB6 used are still there, in the Microsoft.VisualBasic assembly.

    You say Thing.NetFunction() is the C++ way. It's not. The people who invented C++ did not invent OO.

    Thing.NetFunction() is the OO way of doing things, and Object Orientation is simply a better way of doing things. If NetFunction is an operation on Thing's class, it makes more sense to have it as a member than as a global function.

    And you can still call Win32 functions in VB.NET. In fact, the new Declare syntax is richer, and with <DllImport> you have even more control over what happens. With the Marshal class you can manipulate pointers and handles and all kinds of things in ways that are near impossible to do in VB6.

    And many, many more things that took serious API hacking in VB6 are just plain possible in VB.NET. For instance overriding a forms WindowProc, which in VB6 isn't possible without some really wacky stuff, and in VB.NET takes overriding the base classes WndProc.
    What if you want to extend an existing control in VB6? It leads to unnatural solutions because VB6 has no inheritance.

    To make a list like yours:
    VB.NET: Whenever I do anything where I have the freedom of choosing the environment myself, it's always VB.NET. Whether its a quick 10 line program I need or a large multi-component application.

    C#: I only use it to do really wacky InterOp stuff. Marshal is nice, but not very readable, so in some cases I prefer unsafe code. In this case 99% of the time the C# code will be in an assembly that I call from VB.NET.

    Managed C++: Only when Declaring all the functions and structs I need for InterOp becomes more work than the rest of the program. Also called from VB.NET code.

    C++: I used to use it quite extensively, but nowadays I only use it when the make me at Uni and for non-Windows development. I still think, from a language design perspective, this is the most interesting language I know.

    Java: use it sometimes, but not real often.

    VBScript: can't remember the last time I used it.

    JScript: client-side HTML scripts.

    VB6: Don't use it anymore.

    I'd go so far as saying that VB.NET is freedom, and that VB6 only allows you to do what Microsoft wants you to do.

    If you claim otherwise, I dare you to write a Console Application in VB6.

  • User profile image
    Sven Groot wrote:
    If you claim otherwise, I dare you to write a Console Application in VB6.

    No problem:

    I still use VB6 because 1) I feel that .Net built desktop applications are resource hogs and 2) All of my tools and code modules are already written in VB6 and I don't want to do them over again.

    I'll stop using VB6 when it stops working.
  • User profile image
    Sven Groot

    I know writing console apps in VB6 can be done, just not without some serious weird stuff. That was my point.

    I'm not bashing VB6 per se, as said I spent years with it being my #1 programming environment. It's just that, imho, it pales next to VB.NET.

    And I actually like VB syntax. Especially the fact that it doesn't use curly braces. Not that I have anything against curly braces, I just like End If better. But hey, I'm just weird like that. Wink

    My very first program ever:
    10 PRINT "Yesterday I didn't know what a program was."
    20 PRINT "Today I'm a programmer."
    30 END

  • User profile image
    I just LOVE VB, and now Amanda too!

    It DOES make sense what she says, really couldn't have said it better myself Smiley

    Amanda, please continue the great work you and your team do with VB!
  • User profile image
    She's cute.
  • User profile image
    She is a very beautiful and inteligent lady! Great video guys!
  • User profile image
    Amru Yusrin
    VB.Net is now not for Basic programmer, but it just like C++. It's so hard to used and understand. It seem VB.Net philosiphy is away from simplicity to program your computer....
  • User profile image
    Sven Groot
    Oww, that's not a very nice font size.

    Anyway, I don't agree with the "VB is for beginners thing". Yes, VB is relatively easy to learn, but that doesn't mean it's just for beginners.

    I never understand programmers that seem to think that something that isn't complex can appeal to experienced programmers as much as to beginners.

    I know C++. I fact, I think I would not be exaggerating if I say that I know C++ better than at least any other student (and quite possibly most of the teaching staff too) at Leiden University. I certainly know it better than the teacher that taught it to me (no disrespect to him, he's a great guy, and he knows what he needs to know to teach it to first year, but when you get to the really interesting stuff, he's not the one to ask).

    Still, I'll greatly prefer VB.NET for 95% of the projects I do. I have created high-grade applications in VB.NET that would've taken me 3 times as much work (if not more) if I'd had to do them in C++.

    Currently I'm working on a project for Uni, the Data Integration Wizard, which we have to do in C++, simply because we have to seemlessly integrate with the existing DataConversionTool, which was written in Visual C++ 6 and Borland C++Builder 5 (and don't get me started on the horrors of using C++Builder...). During the course of developing this, I can't remember how many times I've thought "if this was VB.NET, it'd take 10 times less code." I've firmly rediscovered what a pain it is to do COM from C++, which I'd previously managed to lock away in my subconscious.

    Granted, C# would have exactly the same benefits over C++ as VB.NET. C# has a few advantages over VB.NET, and VB.NET has a few advantages over C#, in the end it's purely a matter of style and preference which you choose. Still a lot of people see C# as a much more viable "professional" language than VB.NET. But that wasn't what we were talking about. We were talking about C++ vs. .Net.

    I will not say that .Net is more powerful than C++. Being a so-called lower language, C++ is closer to the metal, and therefore you can do more with it. But for a lot of real-world projects, higher languages like VB.NET or C# can get the job done just as well as C++, but with less development time, less lines of code, and generally also less bugs.

    I don't even see the two as competing. I would never, ever pick C++ to do a typical GUI or data-driven app (unless forced to do so by outside forces). If I need performance, or system-level code, then I'll pick C++.

    In the end, it's all a matter of preference, and if any of you like programming complex GUIs using nothing but the bare Windows API, that's your perogative. I just don't agree that just because it's not as complex as C++, stuff like VB.NET, C#, or even Java is necessarily less powerfull or "for beginners".

    End of rant.
  • User profile image
    At 2:56 in the video, she admits that she is a "tool".  Smiley
  • User profile image
    If I'd known there were cuties like that on the team, I might not have switched to C#. Wink
  • User profile image

    Why does it always have to be a man thing to get distracted by appearences and why don't women make comments on how Scoble's warm voice make them weak in the knees? Smiley

    Keep on the good work.


  • User profile image

    Everything the VB writes in managed code is in VB. This includes the following Whidbey features:

    * The project designer (that cool thing that puts your property pages in the main window)
    * The settings and resource editors
    * All the property pages for managed languages
    * ClickOnce support in Visual Studio

    VB rules!

  • User profile image
    For the love of God, someone please upgrade this server.  You see about five seconds of video, then it has to stop and buffer more content....then you get another five seconds, etc.  I'm on a corporate LAN that has a pretty fast connection too.  I guess I'll have to just always download the videos instead... so much for the great Windows Media 9...geez...

  • User profile image
    "VB is for beginners...yada, yada, yada."

    Tell you what. Show me your C/C++/MFC/ATL/WTL code for even a simple data-entry form and I'll show you why VB isn't for beginners.
  • User profile image

    What I loved about vb6 was that it was easy to get stuff put together to do easy things. What I hated hated HATED was having to do anything to do with the API. it screamed "HACK" to me because you were going outside of the bounds of what VB could do. It required encyclopaedic knowledge of the API, or hours searching for the right thing - neither of which appealed to me.

    Now VB.NET does away with that I am a happy man. Not only that but I am a better programmer as I now use real OO methods, patterns & practices.


    I think the danger of people moving from vb6 to is that it is almost too easy to carry on doing things in the same way you always did. I would encourage anyone moving from Vb6 to .net to take some time to learn the differences, rather than take the easier route and learn the similarities.

  • User profile image
       Having started my programming career with a small little program called "edlin" which eventually evolved into something more recognizable, "edit.exe" I can say that .NET is a welcomed edition of VB.  

       Once proceedure programming began its descention with the onset of "OBJ", the fundamentals of BASIC as a language have stayed the same.  Even in BASIC's most evolved state, .NET there are trace similarities between GW-BASIC and .NET.  Obviously the Syntax and paradigm has changed but the core structure has remained the same. For that I am grateful.
  • User profile image
    My three:

    i) Ideas, a recognized spiritual prescence.
    ii) The ability to place these ideas in an orderly arrangement, a design.
    iii) The ability to communicate these designed ideas within the artificial environment of "The Tool."
  • User profile image
    mikestu wrote:
    For the love of God, someone please upgrade this server.  You see about five seconds of video, then it has to stop and buffer more content....then you get another five seconds, etc.  I'm on a corporate LAN that has a pretty fast connection too.  I guess I'll have to just always download the videos instead... so much for the great Windows Media 9...geez...
    I had the same problem, until one day I was messing around with the settings in WMP and discovered that my bandwidth wasn't set correctly.  Fixed that, and the buffering has been smooth ever since.
  • User profile image
    The discussion on when using what language makes me think of this one ...

    Maybe a new category should be added for old VB6 programmers:

    OO wannabie

    using System;

    class MyString
       string _myString;
       public MyString(string myString)
          _myString = myString;

       public static implicit operator string(MyString s)
          return s.ToString();

       public override string ToString()
          return _myString;

    class Class1
       static void Main(string[] args)
          MyString s = new MyString("Hello World");

  • User profile image
    WayneB wrote:
    "VB is for beginners...yada, yada, yada."

    Tell you what. Show me your C/C++/MFC/ATL/WTL code for even a simple data-entry form and I'll show you why VB isn't for beginners.
    Hooah! Im lovin you style WayneB Cool

    Cool video...
  • User profile image
    Dear all new friends...

    first i want to apolygize if i'm wrong entering room , because i'm a very-very new beginner.

    to all friends, i want to ask :
    I develop an application using Microsoft Excel 10 Object Library in Microsoft .NET environment, But it's not fully succesful in many operations that i've done are success (e.g opening file,assigning cells, operating formulas, saving to file etc) except quitting/closing the EXCEL object.

    because,while my application was running, i opened the task manager i still saw EXCEL proccess running there fiuhhh... it drive me crazy .. whereas i add the (XL.Workbooks.close and XL.quit) line everytime i've done using the object

    does anyone experience that problem and know that problem? please let me know...

    thank u so much
    God Bless U All

    Ferry Avianto
    PT. Aisin Indonesia

Add Your 2 Cents