Simpler IDE + more permissive VB language = script magic?

I just wanted to take a moment to acknowledge an interesting series of entries by Mike Schinkel (here and here) that were followed up by a reply by Eric (here) and a further reply by Mike (here). To be honest, my reading attention span can be very short and I find my eyes glazing over when I start to read longer-winded blog entries, but these did catch my attention. (My short attention span is, of course, very ironic given that I can be kind of long-winded myself…)

To grossly oversimplify Mike’s points, he feels that

  1. The Visual Studio IDE is too complex for many users.
  2. The Visual Basic language as it stands now is too difficult for many users.

I have absolutely no argument with point #1. The kitchen-sink approach to VS IDE development has had its upsides, to be sure, but the resulting behemoth is a bit too complex even for my taste. And I’ve gotten this same feedback from others as well. This is definitely something we’re working to address in the future.

Point #2 is a little more interesting. There’s the usual problem with the overwhelming size of the Framework and how to make that digestible, but Mike also raises the question of strictness. He makes the argument (echoed by Don Box and others) that many programmers would do better with a world that’s more typeless and less strict than the one they get on .NET. As someone who lives day to day in a strongly-typed world (so to speak), this seems somewhat counter-intuitive: less typing usually equals less performance and less compile-time checking, leaving problems to be discovered at runtime. In fact, one of the major features of this release, generics, is specifically about making it easier to have *more* type safety and better performance at runtime. So the persistent voices in favor of scripting appear to be swimming against the tide. The question is: are they right?

To be honest, I think the whole question deserves more thought. We purposefully spent a lot of time making sure that things like operator overloading and generics work with late binding in Whidbey, so it’s not like we’re closing down that avenue of possibility. But, hmmmm…. Dunno. I’m just going to have to think about it some more.

(“Top minds are working on it“? Does that mean I also get to take a look at the Ark of the Covenant too?)

23 thoughts on “Simpler IDE + more permissive VB language = script magic?

  1. Pingback: Miscellaneous Ramblings

  2. RichB

    I’m a C# developer now but was a VB3 developer a long time ago. I always loved the ease with which GUI and database-based applications could be developed in VBClassic but was always frustrated that I hit the ceiling too soon. That’s why I’m a C# developer now.

    However, I also believe that VB.Net is too complex! It has stopped being a RAD, ad-hoc development tool and become a tool which requires thought and architectural design prior to coding. I believe VB.Net should be aimed at developers who don’t need to write large applications. It should be aimed at high productivity development for small-scale applications. I would go as far as saying that it perhaps should be a procedural language rather than an OO language!

    In many ways, the Macromedia tools (Director and lately Flash) have taken over the spot which VB used to hold. Many people build fantastic software with Flash and its scripting language and although Macromedia have been focussed on the web for a long time I believe that if they focussed their energy a little more a the LOB market, they could take a large chunk away from disenfranchised VB6 developers.

    Reply
  3. Matt

    VB’s permissiveness has always allowed bad programmers to write bad code.

    At the same time, however, it presented a very low hurdle for people to learn how to program. VB6 was a great way for people to learn programming because it was so so easy to get a (bad) program running.

    Strict type checking and a large framework help good programmers write good code. After cutting one’s teeth on VB, these additional coplexities and checks help. But operator overloading, putting everything in classes and modules, namespaces, assemblies, etc. are very intimitdating to the new programmer.

    VB is indeed losing its status as a beginner’s language, I think. Kinda ironic, given the meaning of the acronym BASIC, don’t you think?

    Reply
  4. Scott Mitchell

    I recently wrote a piece similar to Mike’s on my blog – Is ASP.NET Too Hard? (http://scottonwriting.net/sowblog/posts/852.aspx)

    In the end, I think .NET has closed off (or made it much harder to progress toward) the developer market for those who are, in actuality, scripters and not professional developers. This, of course, has both pluses and minuses. Personally, I love the shift .NET has taken, as it makes ASP.NET development much more of a "real" computer science field rather than scripting. But at the same time, it’s closed off the market to many folks I’ve known and worked with, people who lack the background, but were still able to enter the space because of the low barrier to entry…

    Reply
  5. Mike Schinkel

    I don’t think .NET has to be for one or the other, I think it can be for both. The core of .NET can suppprt an easy layer (I called it VBScript.NET) and a professional layer (VB.NET, C#).

    One thing I HOPE does NOT happen is Microsoft hears this message and think what’s being asked is to make VB.NET the easy end of the .NET spectrum and C# the professional end. I chose to program in VB.NET instead of C# for many reasons (which I’ll blog about someday) and I don’t want my essays having people think I’m advocating VB.NET loose its ability to do more complex things or limit its ability to participate in large, complex systems.

    Instead, I think what we need is a way for newbies to first become productive with .NET (VBScript.NET as one possibility), and then to rapidly gain skills so they can quickly become better programmers and use all the robustness features VB.NET and C# have to offer.

    Reply
  6. Carl Franklin

    I think what we need is a new type-less VB-style language for application programming only, but leaving VB.NET in-tact. It seems to me that the type-less stuff is superior when you’re developing high-level apps or scripts simply because it allows you to apply the technology quickly with less learning curve. Let’s face it, that is a big reason why VB was so popular. However, I love strict typing, and would still want to use it to develop in VB.NET.

    Maybe it’s possible that with generics technology, the compiler could do some magic under the hood to strongly type typeless variables at compile time. If it doesn’t understand how to cast, maybe it could ask the programmer.

    Carl

    Reply
  7. Alex Kazovic

    There are 3 things I am ideally looking for:

    1.To spend more time writing business logic (That’s what my employer pays me for). I still spend too much time writing things like plumbing. In fact I think this is one of the reasons Excel is so popular; you can immediately start typing in a formula (business logic)

    2.To spend less time writing code that is hardly ever executed. I spend a large amount of time handling things like edge conditions and exceptions. This time (writing code) is disproportionate to how often this code is used. Maybe a more declarative approach would help.

    3.The ability to use the same model from both a high level and when I need to dig down. E.g. It’s easy for me to drag a data adapter onto a windows form and start interacting with a data source quite quickly without writing too much code, But is isn’t easy to extend this as the data access code is mixed in with the presentation layer. So for me to extend this I need to extract the data access code from the presentation layer.

    Reply
  8. Steve Davey

    Not entirely sure who would benefit from the ‘dumbing down’ of VB.Net, but for my collegues and myself, we would certainly fail to see the advatanges.

    We’re just looking at .Net as a platform to work on in and will almost cetainly need enterprise-like stability and robustness along with the flexibility that VB.Net can give. If people wish to learn to program effectively and well then they may as well set their standards high from the beginning and avoid learning bad habits. If they just want to knock up some low scope applets then well, VB6 hasn’t been banned! I don’t imagine the lack of MS support from next year probably won’t hurt them too much.

    One thing that will help people avoid spending too much time on the ‘plumbing’ is a good application ‘framework’. If I may, I’d like to reccomend Mr Lhotka’s book Business Objects with VB.Net. At a prevous company (producing internet banking and retail banking software) we used concepts from the VB6 version of his book to great effect.

    One thing I will say is I miss the old SDI setting on the IDE. But then I’m odd like that!

    Reply
  9. Karl

    I prefer to have as many errors revealed at compile time as opposed to runtime. And guess what? My clients like it better too! I’ve said it before, and I’ll say it again, I want VB.Net to have a new option called "Option Clean" that forces you to write even cleaner, more structured code…forget having one that assumes more than it should. As Matt said, VB allows bad programmers to write bad code..and VB.Net is no different.

    On the flip side, I agree that things have gotten a lot harder. I’m surprised by this hole left by Microsoft…but the way I see it, it’s just one more step away from me having to inherits someone’s crappy code.

    Reply
  10. RichB

    I’ve had to work on crappy VB code, crappy ASP code and crappy C# code. Any language can be abused.

    For example, I could write you a 400 line method in C# which used copy and paste liberally throughout the method, used 1 character variable names, no comments and the odd Goto.

    Cyclomatic complexity would hover around the 100 mark. Try understanding all that!

    Reply
  11. Raj Chaudhuri

    Steve Davey: there’s at least one more person in the world who’s odd like that; I miss the SDI IDE mode TERRIBLY.

    Reply
  12. Rob Conley

    SDI mode is great for programming with multiple monitor. Far better than the dance I have to go with the current IDE.

    Reply
  13. simon geering

    Raj / Rob; I don’t know about missing SDI but what i find hard to understand is the reason why, when you enable MDI in options, you lose the document selection tab strip ?

    Why can’t we have MDI IDE (ala vb6) with all the benefits of tiled code windows AND have document selection via a tab strip (ala .net default layout) in the same way you can in products like TextPad ?

    Reply
  14. Mike Schinkel

    Steve Davey>> If people wish to learn to program effectively and well then they may as well set their standards high from the beginning and avoid learning bad habits. If they just want to knock up some low scope applets then well, VB6 hasn’t been banned! I don’t imagine the lack of MS support from next year probably won’t hurt them too much.

    It has been purported that Marie Antoinette once said "Let them eat cake", which is a roughly equivalent sentiment.

    Reply
  15. Karl E. Peterson

    I gotta tell ya, it’s just incredibly amusing to watch the persistent hand-wringing going on in the VFred world. The patronizing concern over how to be accomodate those whose code you’d certainly never want to inherit, nor even lower yourselves to reading, is pretty hilarious from an outside perspective.

    Microsoft *had* the market whooped. Then let it loose.

    Want to bring the Classic VB crowd to .NET?

    Bring Classic VB to .NET!

    For a group proud of the way it can logically parse the world and all that matters, the level of resistence to this simple notion is astounding. Not that it’s not understandable, of course.

    Y’all finally have the exclusive club you always wanted. The heathen scripters have been bannished. Now, the terrifying reality of how boring it is to be all alone is setting in.

    Reminds me of that "ancient Chinese wisdom" — Be careful what you wish for!

    Reply
  16. Pingback: Karl's .Net Blog

  17. Pingback: Panopticon Central

  18. Pingback: Panopticon Central

  19. Mike Gale

    I’ve seen productivity increase by a factor between 12 and 20 times when a system became more responsive. (This was a mainframe system many years ago, by chance I was working on it alone one night, it normally did a lot of time sharing overhead.)

    In other words two weeks work done in a day.

    Scripting languages are like that too.

    The secret is feedback within a "thought beat" to changes that you make. I really love environemnts where the programming keeps up with the mind. VBScript, query building, spreadsheets come to mind. Then you go a "compile it, unit test it EVERY TIME) system and your mind goes to sleep. Changes the way you operate completely. It’s slow and it’s often not much fun.

    Reply
  20. dennis bartlett

    Question is: what’s the purpose of the language? To get apps written for windows so that windows becomes the norm (widely used)? Or to force all to become super-techies so thay can write thought out proggies?

    My take is that "non-thought-out" proggies don’t get to market anyway, or don’t get sold.

    So what happens here? VB becomes complicated and Microsoft loses market share. Dumb move!

    Simple.

    Reply
  21. Pingback: Panopticon Central

  22. Pingback: Panopticon Central

  23. Pingback: Panopticon Central

Leave a Reply