Slashdot Mirror


Making an Argument Against Using Visual-Basic?

ethan_clark asks: "I work for a small company (< 10 employees) as a software engineer. The company got its start with a software product written by the owner in VisualBasic. He hired me to assist in rewriting the software – only catch is, he's stuck on having it re-written in VisualBasic. This scares me, but I honestly can't make a good argument against VB because I'm not familiar enough with it. So my question is twofold: I am looking for some confirmation to my suspicion that VB isn't the greatest language for large projects; and If VB isn't good, arguments against using it. If it is good, what arguments would you use to argue for it (for my sake)?" If you are going to argue against a language, it is best if you do so after you become familiar with it so that you can argue fairly on its merits and deficiencies. VisualBasic, like just about every other language, has its place. For the sake of discussion however, what tasks would VisualBasic not be suited for?

690 comments

  1. Can .Net Provide a Vehicle for alternatives? by MurrayTodd · · Score: 4, Insightful

    Forgive my overall ignorance--I'm a Mac and Linux and Java person, although I've written a bit of VB in a job years ago--but does anyone know if moving to VB.Net allows a phased-in approach to introducing at least some C# programming down the road?

    Do the .Net languages allow a decent functional "Mix 'n Match" capability? If so, I'd make sure the VB rewrite was in VB.Net (or are there VB.Net idiosyncrasies that would justify sticking with the old VB6?) and then I'd learn C# really well. At some point in the project some component might fall under the "this will really suck under VB, and we can tackle it much better by writing this piece in C#" which will let you get a toe-hold on the idea of using a better language.

    That's the way I helped a Fortune 500 company start adopting Linux back in 1998... the friendly and subversive way!

    As for the tasks VB are not suited for (again, I only know VB6, not VB.Net) the biggest glaring omission in my experience was the lack of decent Regular Expressions, or Hash Tables / "Dictionaries"--unless you link to the VBScript/IE6 library like everyone used to. On the other hand, there are IMOHO problems with languages like Perl that make them bad for a number of solutions, but that hasn't stopped nutty fanatics from treating them like "golden hammers".

    While I'm writing disclaimers, there are a number of commercial applications out there written entirely in VB. In all cases I've observed, they "evolved" out of a simple and useful app and fell into being examples of the most counter-intuitive user interfaces and over all "kludginess".

    --
    Murray Todd Williams
    1. Re:Can .Net Provide a Vehicle for alternatives? by Edward+Teach · · Score: 4, Informative
      The good thing about the .NET languages is that they compile to the same "bytecode". In Microsoft's case, this is the MSIL that runs on the CLR. You can mix and match all you want. Just create a library of C# classes and you can use them in any of the .NET languages. The reverse is true, that you can write code in VB.NET and use that library in any of the other .NET languages.

      .NET simply provides the programmer with the ability to program in the language they either know better or in a language that seems better suited to the job, without taking a performance hit, since they all compile to the same intermediate language.

      .NET 2.0 takes this to even more extremes, in that, more toolbox items are available and virtually all of the components are data aware. Also, Visual Studio 2005 Pro includes a development IIS instance and SQL Server 2005 Express is included.

      Check out the Visual Studio Website for more information.

      --

      Setting his threshold to 5, Sparky eliminated most of the trolls on /.

    2. Re:Can .Net Provide a Vehicle for alternatives? by Osty · · Score: 5, Informative

      Do the .Net languages allow a decent functional "Mix 'n Match" capability? If so, I'd make sure the VB rewrite was in VB.Net (or are there VB.Net idiosyncrasies that would justify sticking with the old VB6?) and then I'd learn C# really well. At some point in the project some component might fall under the "this will really suck under VB, and we can tackle it much better by writing this piece in C#" which will let you get a toe-hold on the idea of using a better language.

      .NET languages are all pretty much interoperable, so long as you make sure to build your assembly as CLSCompliant (which may limit usage of some language features). The main problem is that VB.NET is quite a bit different from VB6. For someone who's only ever done VB code, it's easier to learn VB.NET than C#, but for everybody else you may as well start directly with C#. In the past, I'd have advocated building your UI with VB and calling C++ COM objects for any heavy lifting. Now, I'd recommend you go C# and do everything there.

      As for the tasks VB are not suited for (again, I only know VB6, not VB.Net) the biggest glaring omission in my experience was the lack of decent Regular Expressions, or Hash Tables / "Dictionaries"--unless you link to the VBScript/IE6 library like everyone used to. On the other hand, there are IMOHO problems with languages like Perl that make them bad for a number of solutions, but that hasn't stopped nutty fanatics from treating them like "golden hammers".

      You get regular expressions and collections with .NET (though not as many different collections as in Java, unless you bring in the J# assemblies for your project). You also get generics, anonymous methods (anonymous delegates, lambda functions, closures, whatever you want to call them), and quite a bit more cool stuff, though I have no idea how well that's exposed through the VB.NET language. Even cooler than that, you could subversively write modules in a functional language like F# (a dialect of ML) and nobody'd know the difference from their VB.NET or C# environments. (yeah, you can do that with Java as well.)

    3. Re:Can .Net Provide a Vehicle for alternatives? by Anonymous Coward · · Score: 0

      You can't mix and match code within a project, although you can use vb/net libraries fine within c# programs and vice versa.

      They also do not compile to the same code (despite what MS say), vb programs use a different runtime, which is why mono has somewhat good c# support and hardly any VB support.

    4. Re:Can .Net Provide a Vehicle for alternatives? by plover · · Score: 2, Insightful
      Any app can devolve into kludginess unless there's a strong approach to coding shared by every single one of the maintainers. VB6 isn't magic that attracts crud any more than C++ or Java (other than increasing the number of potential idiots who think they know how to program in VB.)

      Any user interface, regardless of language, should be usability tested at every major release. A lot of developers are horrible at adding interface widgets because they're too wrapped up in the solution rather than the problem. How often have you heard someone do something like this: "I just solved the corrupt index problem by adding a StackWalkAndRebuildAllIndexes() routine. I stuck this big ol' "WALK THE STACK" button right on the front screen so JohnsonCo. will quit calling me at 5:00 on Friday afternoons." And the product ships with a stupid WALK THE STACK button right on the front screen.

      Strong design is the best cure. Failing that, rigid and annoying development processes will at least delay the implementation of the cruft, along with your valuable modifications. :-)

      --
      John
    5. Re:Can .Net Provide a Vehicle for alternatives? by Osty · · Score: 1

      You can't mix and match code within a project, although you can use vb/net libraries fine within c# programs and vice versa.

      Said more correctly, you can't mix and match code within an assembly (generic term for "a compiled chunk of code", which could be a library (dll), an executable (exe), or even a separate sandbox within another assembly (.NET's XML serializer generates an assembly on the fly to serialize or deserialize XML, for example)). A "project" in Visual Studio compiles to a single assembly, either dll or exe, while a "solution" (which most people would think of as a "project") encompasses one or more "projects". Each "project" in your solution can be written in whichever language you like (MC++^WC++/CLI, C#, VB.NET, J#, F#, JScript.NET, IronPython, etc). The caveat is that your code must conform to the Common Language Specification (CLS) which is essentially a subset of language features that all .NET languages must implement. Languages are allowed to implement more features than those defined by CLS, but should not implement less. This does provide for some pretty arbitrary restrictions (no unsigned types), and some inclusions that may mean extensions to a language (like method overloading, which didn't exist in VB6). You can usually do what you want without worrying about CLS compliance, but every now and then you will get caught up in an issue where what you want to do in one language won't be accessible by another.

    6. Re:Can .Net Provide a Vehicle for alternatives? by NutscrapeSucks · · Score: 1

      > Said more correctly, you can't mix and match code within an assembly

      Actually, it's possible, but Visual Studio won't let you do it.
      http://blogs.msdn.com/junfeng/archive/2005/02/12/3 71683.aspx
      http://www.abstractvb.com/code.asp?A=1055

      --
      Whenever I hear the word 'Innovation', I reach for my pistol.
    7. Re:Can .Net Provide a Vehicle for alternatives? by killjoe · · Score: 0, Troll

      "You can mix and match all you want. Just create a library of C# classes and you can use them in any of the .NET languages. "

      Yes, just like COM. Remember how you used to be able write activex objects in any language and call them from any other language. It's just like that except it doesn't support all languages, only languages that are .NET ready or have been modified to run on .NET.

      Oh and it's a little slower and eats more memory. That too.

      --
      evil is as evil does
    8. Re:Can .Net Provide a Vehicle for alternatives? by lsproc · · Score: 0

      I have been a VB programmer since 3.0 for Windows. Recently I have learnt C# and knowing VB.NET does help. I have to say though that .NET is a waste of time and money as the programs it creates are huge and memory hungry. VB6 apps are a lot lighter but you dont have a common runtime. If you want to learn C# from VB.NET I would reccomend downloading c# express and registering it so you can get Visual C# 2005 Build a program now. Its a great book to help you transition. I think the reason that MS got rid of the VB interface in MSAS and turned into C for Defender because of modularity which is a bit contradictory to all of the flying boxes on the visual basic box.

    9. Re:Can .Net Provide a Vehicle for alternatives? by Anonymous Coward · · Score: 2, Informative
      VB.Net and C# are essentially identical.
      The only difference in the real world is that VB.Net programmers are usually the low-skilled guys who can't learn a new language in a couple of days.
      Not at all.

      I consider myself to be a fairly skilled programmer, but I prefer VB.Net over C#, although I code in both, per project team requirements. It's a matter of personal preference over the syntax - some people like to use very verbose languages, similar to English, while some prefer something dense, similar to Klingon. I'd be the happiest person ever if someone made AppleScript.Net :)

      But, as you've said, the languages in question are essentially identical. It's the framework that matters, not the language syntax.

      You can't learn VB.Net and not know C#, and vice versa, as the differences are something you pick up in half an hour. There's an equal number of crap VB.Net and C# programmers out there, and prefering one language over another doesn't make you better or worse at your job. It's a flawed analogy from the very beginning, as the difference between VB.Net and VB6 is *extremely* large. It's a whole other universe, and it's not like all the VB6 programmers just switched to VB.Net one day - that's impossible.
    10. Re:Can .Net Provide a Vehicle for alternatives? by Anonymous Coward · · Score: 2, Informative

      Lots of good points, but also a few corrections...

      Visual Studio doesn't include a dev version of IIS - it's based on cassinni. And not only in the pro edition - the standard and express versions also have it (all of them do).

      And SQL Server Express is toally free, whether it's bundled in whatever edition of VS you're using (BTW, SP1 is out, and there are some new downloads for the express ed - oh, and new Books Online too). There are also free editions of Oracle and DB2 (and PostreSQL is free, and ...)

      Why VB.NET/C#? Indeed MSIL and interoperability (different languages). There are a bunch of others if you ever want (F#, IronPython, etc).

      -Full OO goodness. That's a major plus in my book
      -Not end-of-lifed. Not only you get bugfixes, but also improvements - and a bright future for the dev platform (hence for your apps)
      -No DLL hell (and tons of win32 apis you gotta know and all).
      -A *MAJOR* selling point too is the extra stuff you can get. With VB6, you got VB6 and that's pretty much it as for tools. VB.NET/C# wise, there are metric FUCKTONS of wicked great stuff... From ORM tools (NHibernate, DLinq, LLBLGen, - dozens of them), code generators (MyGeneration, Codesmith, ...), lots of the good stuff we see in the java world (NHibernate, NDoc, NCover, NUnit, NThis, NThat...), great TDD tools (TestDriven.NET, NCover, ...), loads of great libs (like the Enterprise Library and WSE 3.0), AJAX libs like Atlas (if you're suckered into the web 2.0 thingy), many many wicked 3rd party apps (VisualAssist X, Jetbrains Resharper and DotTrace, etc), decent SCMs are available or can be integrated (CVS/SVN/Perforce/VSTS/whatever you like), etc.
      -A half decent IDE that's out of this century (VS6 is teh suck big time)
      -Another GREAT plus in my book is the ability for the code to be ported to either Mono, or to J2EE using tools like Grasshopper (converts into Java bytecode)
      -More niceties avaialble the day Vista ships (like a built-in workflow framework, and a great enhancement to WS/Remoting/MSMQ/WSE namely - oh, and shiny GUI things too I guess)

      That list could be much, much longer if someone had enough time to spend. VB6 is dead in my book. Legacy code to support? Port it or too bad. I *WOULD* turn down a job that was VB6 coding/maintenance (or keep it temporarily to pay bills as a last resort while I find something else).

    11. Re:Can .Net Provide a Vehicle for alternatives? by MrAnnoyanceToYou · · Score: 2, Funny

      See, he should just convince his boss to do it in LISP. I mean, the syntax isn't that bad, really, once you get around it, and GUI's are EASY in LISP. You just do paren-based dot-matrix representation.

    12. Re:Can .Net Provide a Vehicle for alternatives? by ems2 · · Score: 0, Troll

      Java and .NET virtual machines are stack based, a side-effect of being designed by language programmers as opposed to chip designers. Translating from a stack based language to a register-based assembly language is a "heavyweight" operation. This means Java's and .NET's compilers and virtual machines have to be many times larger and slower than a register based virtual machine. Anyone who blames the slow down on something else has no clue (i.e. the toolkit). In contrast, Inferno's virtual machine (dis) - being designed by chip designers - was inspired to use a register based system that more closely matched the internal workings of real-world processors. They found, as RISC designers would have expected, that without a load-store design it was difficult to improve the instruction pipeline and thereby operate at higher speeds. They felt that all future processors would thus move to a load-store design, and built Inferno to reflect this.

    13. Re:Can .Net Provide a Vehicle for alternatives? by Jugalator · · Score: 3, Informative

      As for the tasks VB are not suited for (again, I only know VB6, not VB.Net) the biggest glaring omission in my experience was the lack of decent Regular Expressions, or Hash Tables / "Dictionaries"--unless you link to the VBScript/IE6 library like everyone used to.

      Just FYI about .NET:

      VB.NET directly supports dictionaries, even by using generics.

      It also suports reasonably powerful regular expressions via the System.Text.RegularExpressions namespace.

      --
      Beware: In C++, your friends can see your privates!
    14. Re:Can .Net Provide a Vehicle for alternatives? by ClosedSource · · Score: 1

      No, it's not like COM. You can derive new classes in one .Net language from an existing class in another .NET language. You can't do that using COM.

    15. Re:Can .Net Provide a Vehicle for alternatives? by Ravatar · · Score: 2, Informative

      Wrong, you can use COM+ to call .NET com-visible(which you set) assemblies. An example of that can be found here.

      By the way, in terms of speed .NET has been found to run nearly on par with C++ in many cases, and memory use is sometimes better (although usually similar) thanks to automatic garbage collection.

    16. Re:Can .Net Provide a Vehicle for alternatives? by Anonymous Coward · · Score: 2, Insightful

      You obviously have no real experience at all from abstract machines and compilation to native code. The difference between stack based and register based abstract machines is marginal, and there is no clear-cut advantage to either variant.

    17. Re:Can .Net Provide a Vehicle for alternatives? by blacksway · · Score: 1

      Actually Visual Studio 2005 will let you, provided you start the project as a Managed C++ project - you can then add any type of class file to it (VB.Net and C# anyway).

    18. Re:Can .Net Provide a Vehicle for alternatives? by ilovegeorgebush · · Score: 0

      Why in gods name do you think thats an advantage?
      In a large organisation, with plenty of applications and developers, it becomes a DISADVANTAGE to have applications written in so many different languages. This is what annoys me about .NET. This is not an advantage, it creates a codebase where you have a collection of Jack of All Trade developers, and no consistency when it comes to support.
      Sticking to one or two languages in an organisation helps with consistency in developement, support and justifying new ventures - being able to write an application in COBOL, C# or VB.NET is NOT an advantage, its another MS gloat that has no realworld use.

    19. Re:Can .Net Provide a Vehicle for alternatives? by Heembo · · Score: 2, Funny

      Which means, you can write a thin .net layer that has a entire Java backend! W00T!

      --
      Horns are really just a broken halo.
    20. Re:Can .Net Provide a Vehicle for alternatives? by Tim+C · · Score: 1

      Oh and it's a little slower and eats more memory. That too.

      And my X2 4400+ with 2GB of RAM cares why?

      Seriously, unless you're using old hardware, the extra requirements really aren't a problem. If you are using old hardware, perhaps you ought to be using old software to match.

    21. Re:Can .Net Provide a Vehicle for alternatives? by hitmark · · Score: 3, Insightful

      and thats the attitude that leads us to having a future windows version that wants a 3D card for basic desktop operations, and eat 15GiB of storage space...

      --
      comment first, facts later. http://chem.tufts.edu/AnswersInScience/RelativityofWrong.htm
    22. Re:Can .Net Provide a Vehicle for alternatives? by Kombat · · Score: 1

      and thats the attitude that leads us to having a future windows version that wants a 3D card for basic desktop operations, and eat 15GiB of storage space...

      Hardware is advancing whether we ask it to or not. So why not take advantage of the better hardware by adding language features that make the programmer's job easier? Automatic garbage collection, cross-platform intermediate bytecode, and some runtime interpretation. If it makes the programmer's job easier, then it will result in fewer bugs, and more robust software. Why not do it?

      Do you think we should all still be writing C++ to-the-metal in Visual Studio 6.0 on Windows 98? And just relishing how incredibly quickly our programs run (and occassionally crash) on the otherwise ridiculously unnecessary CPUs and RAM in modern machines?

      --
      Like woodworking? Build your own picture frames.
    23. Re:Can .Net Provide a Vehicle for alternatives? by Pulse_Instance · · Score: 1
      Do you think we should all still be writing C++ to-the-metal in Visual Studio 6.0 on Windows 98?

      To answer your exact question NO. However, I do think we should all be writing C++ to-the-metal in the editor of your choice to run on Windows XP / Server 2003 / Vista. Sure the overhead your talking about isn't much but why waste the hardware on overhead when you can take full advantage of it.

    24. Re:Can .Net Provide a Vehicle for alternatives? by spectre_240sx · · Score: 1

      A) A 3d card is only required for Aero-Glass. You can still use Vista without one.
      B) Who doesn't have a 3d card in their computer now?
      C) Having 3d accelerated desktop makes things much nicer. Moving windows without tearing, drop shadows* without slowing things down, new ways of task management (e.g. Expose) etc.

      * Drop shadows aren't just for looks. They make it much quicker to figure out the z ordering of windows.

    25. Re:Can .Net Provide a Vehicle for alternatives? by sbrown123 · · Score: 2, Informative

      The good thing about the .NET languages is that they compile to the same "bytecode". In Microsoft's case, this is the MSIL that runs on the CLR.

      That is not always true. Unless you put the following line in your AssemblyInfo file your class library, it is likely the resulting byte code can not be used by other .NET languages:

      [assembly: System.CLSCompliant(true)]

      Visual Studio 2005 Pro includes a development IIS instance

      It's actually Cassini. The only real nice thing about this is that Cassini is much lighter than IIS and doesn't run as ASPNET user.

      a development IIS instance and SQL Server 2005 Express is included.

      Oh gawd they can keep that pile of crap.

      more toolbox items are available and virtually all of the components are data aware.

      I don't see a real advantage here except that novice programmers may be able to put together a cheap CRUD app. I have yet to see a client actually want only this bare minimum application though.

      There are also some major issues I have found with VS2005:

      1) It is very slow. I think they wrote the bugger in .NET because you can actually watch the thing redraw itself at times. This from a Pentium 4 with a 1G of memory? I fear the day they upgrade to Vista with this bloated beast in tow.

      2) ADO 2.0 looks promising but there seems to be a huge lack of vendor support. Oracle support is still in beta mode.

      3) The database wizard seems to only support Microsoft database connectors and Oracle. There is no way to add new ones.

      4) Visual Studio hides files from the programmers view. I know they did this to make it "easy on the eyes" for novice programmers but it plays hell when your working as a team with a version control system. And when you delete projects or solutions you will find out that they are actually STILL on the harddrive. Its more of a "remove from view" option than true removal.

      5) No Subversion support. There is a plugin called Ankh that does okay but it is limited. I have no idea of any support for CVS.

      6) Partial classes? What the f***! This wouldn't be so bad if .NET used Java's strict file naming convention but now I find that I am looking for these "other parts" all over the place.

      Mono looks more promising and has a larger selection of languages. It also works on multiple platforms whereas Microsoft's implementation will only work on Windows. There is also rumor on the .NET forums that Microsoft will be releasing new API functions to .NET that will only work on Microsoft Vista. If this is true you can kiss backwards capability goodbye.

    26. Re:Can .Net Provide a Vehicle for alternatives? by fitten · · Score: 2, Informative

      a development IIS instance and SQL Server 2005 Express is included.

      Oh gawd they can keep that pile of crap.


      I don't know much about the IIS instance, but SQLServer2005 Express is decent for its intended purpose... a development environment.

      There are also some major issues I have found with VS2005:

      1) It is very slow. I think they wrote the bugger in .NET because you can actually watch the thing redraw itself at times. This from a Pentium 4 with a 1G of memory? I fear the day they upgrade to Vista with this bloated beast in tow.


      Odd, I haven't had this problem and I have a similar system to what you describe (you have no description of your video card, though, but I've used it on Intel integrated graphics on a laptop with few issues. Plus, redraw effects are very subjective. Some who see the redraw actually see it complete in a second, which may be an issue for some but not for others. Anecdotal evidence is fun!

      2) ADO 2.0 looks promising but there seems to be a huge lack of vendor support. Oracle support is still in beta mode.

      In my experience, Oracle support for Windows development environments has *always* been in beta mode.

      3) The database wizard seems to only support Microsoft database connectors and Oracle. There is no way to add new ones.

      I haven't tried, so what you say may be true.

      4) Visual Studio hides files from the programmers view. I know they did this to make it "easy on the eyes" for novice programmers but it plays hell when your working as a team with a version control system. And when you delete projects or solutions you will find out that they are actually STILL on the harddrive. Its more of a "remove from view" option than true removal.

      This depends on which you use. There's a "remove from project" and there's a "delete". "Remove from project"... removes it from the project (removes the entries from the makefile) and that's it... just like it says. The "delete file" option deletes the file (you can look to see that it was moved to the trash can even, if you want.

      5) No Subversion support. There is a plugin called Ankh that does okay but it is limited. I have no idea of any support for CVS.

      It doesn't support CVS. This isn't necessarily an issue with the product. Perhaps you should talk to the 3rd party suppliers of those products to ask for plugins, instead?

      6) Partial classes? What the f***! This wouldn't be so bad if .NET used Java's strict file naming convention but now I find that I am looking for these "other parts" all over the place.

      Don't use them if you don't want. I personally don't like using them, either, so I don't use them. I personally dislike Java's strict file naming rules/conventions for a number of reasons.

      Mono looks more promising and has a larger selection of languages. It also works on multiple platforms whereas Microsoft's implementation will only work on Windows. There is also rumor on the .NET forums that Microsoft will be releasing new API functions to .NET that will only work on Microsoft Vista. If this is true you can kiss backwards capability goodbye.

      That's "forward compatibility", not backwards. Backwards compatibility means that Vista will run XP applications. Forwards compatibility means that XP will run Vista applications. There are few systems that support forwards compatibility. Did Linux 2.4 support forwards compatibility with all 2.6 APIs, for example?

    27. Re:Can .Net Provide a Vehicle for alternatives? by Tower · · Score: 1

      Well, though my T42p is capable (2GHz, 2GB RAM), it isn't nearly an X2 4400+ and the number of laptops with 1GB or less of RAM and 1.2-1.6GHz processors are quite prevalent, especially since these are the most commonly sold new ones... not quite old hardware. Just different.

      There's no excuse for wasting tons of space that isn't specifically needed for performance. There's no excuse for slow performance unless you are working very hard at saving space. Wasting space and slow performance both is either bad design or lazy.

      --
      "It's tough to be bilingual when you get hit in the head."
    28. Re:Can .Net Provide a Vehicle for alternatives? by fean · · Score: 2, Insightful

      B) Who doesn't have a 3d card in their computer now?
      90% of laptop owners
      80% of windows users

      Even current integrated graphics won't cut it with Vista... And really, how many computers will have been purchased between now and Vista? I'm guessing that the amount of computers purchased that have adequate Video Cards to run Aero will be less than half, so this does little to really change the ratios.

      You're right, computers without amazing video cards will be able to run Vista, but the whole point of this thread is that the parent suggested the "Fuck the low-end users, write inefficient code that requires a half-gig framework to be installed to run the 5 meg program" approach... (Net 1.1, Net 2.0, and the new XAML/Sparkle based frameworks will total well over 400 megs...)

      Just because you can make a program doesn't make you a programmer... Write a program, write it well, don't use a framework unless it actually benefits the program, not just because it's there. (Because who says it'll be on the client computer?)

    29. Re:Can .Net Provide a Vehicle for alternatives? by Chazmyrr · · Score: 1

      You missed the point. Some of the time, you don't need super speed as much as you need inexpensive to maintain.

      Oh, and you should be using C instead of C++. Sure the overhead your talking about isn't much but why waste the hardware on overhead when you can take full advantage of it.

    30. Re:Can .Net Provide a Vehicle for alternatives? by KevMar · · Score: 4, Insightful

      Just because you can have several languages does not mean that you should.

      Where the true advantage of the .net is the common library of functions. syntax is just that, syntax. If you can code it in C#, than you can code it in VB.Net.

      Im a C# programmer at heart, but the existing codebase here is VB. I migrate it to vb.net as needed and all new stuf is coded that way.

      vb.net is not the same old vb6 that you grew up with. It now has all the advantages of C#, but with the VB syntax. When your employer is clueless about .Net, just explain to him its VB7 and that VB6 is loosing support.

      --
      Im a gamer, not a grammer major. This post is full of spelling and grammer mistakes.
    31. Re:Can .Net Provide a Vehicle for alternatives? by Anonymous Coward · · Score: 0

      To make the coders life easier. It depends on the project, really. If you are doing a 3d flight sim which downloads current locations of real planes and sticks them in the air with you, and has AI to add more, and simulates the people walking below and inside the plane adjusting gravity ever so slightly, then you want all the power you can get.

      If you are writeing an accounting app, or a small client, or Yet Another Tetris Clone, you don't need all of that power, and the coder having nice libraries and dev tools is more important.

    32. Re:Can .Net Provide a Vehicle for alternatives? by Anonymous Coward · · Score: 0

      Just curious, what is the conversion rate between regular tons and metric fucktons?

    33. Re:Can .Net Provide a Vehicle for alternatives? by jbplou · · Score: 2, Insightful

      How can you say C# is better than VB.NET? If you set your compile options correctly they compile the same in most cases. What matters more is the quality of the programmer and you will get better code. If I could get a good VB.NET programmer I would take him over 4 bad C# programmers and vice versa. The languages are basically the same.

      I've written in both, the main advantage C# has is that it is less verbose but that doesn't make it better, it probably makes it more difficult for inexpierenced programmers to read.

    34. Re:Can .Net Provide a Vehicle for alternatives? by Bert64 · · Score: 1

      Because even your modern machine can run less inefficient apps at once as it could run efficient apps.
      There is no excuse for inefficient code, and such inefficient code is a slippery slope, it just gets worse.

      --
      http://spamdecoy.net - free throwaway anonymous email - avoid spam!
    35. Re:Can .Net Provide a Vehicle for alternatives? by MighMoS · · Score: 3, Insightful

      That's just ignorant. And I'll tell you why you should care. Because no matter how fast your processor is, I'm guessing your hard drive still only spins at 7200 RPMs. Meaning that those binaries that are getting larger and larger will take longer and longer to load because your hard drive still has to read all that (now larger) data. Also, internet connections aren't getting terribly faster, so downloads now take longer. Oh, and I like to multi-task. I'll the kind of guy who likes to leave programs open (for continuity) while gaming. And the less resources everything else is taking means the more FPS I get out of my FPS's.

    36. Re:Can .Net Provide a Vehicle for alternatives? by sbrown123 · · Score: 2, Interesting

      Odd, I haven't had this problem and I have a similar system to what you describe (you have no description of your video card, though,

      I don't think I have ever had to worry about a graphics card for 2D widget blitting. Why is VS2005 different? I have also noticed this same slowness in another large .NET app called Paint.NET.

      6) Partial classes? ...
      Don't use them if you don't want.


      It is not me that is creating these freaks of nature, but rather VS2005 GUI editor. It uses these partial classes for code behinds.

      I personally dislike Java's strict file naming rules/conventions for a number of reasons.

      Work on something of scale in .NET with multipe coders and you will begin to wish you had it. And even though you can enforce certain rules in your area for coders to follow you are not able to enforce these same rules on others who code you may reuse in your project. I think Microsoft left the strict naming out to appease C++/C programmers but didn't fully understand the disadvantages in doing so.

      That's "forward compatibility", not backwards. Backwards compatibility means that Vista will run XP applications. Forwards compatibility means that XP will run Vista applications.

      You just pointed out the big difference between Microsoft's .NET and Java: .NET is tied to the OS. That is just silly. Why are they unable to release the runtime (virtual machine) for "older" operating systems like XP? Why should I have to compile code, which is actually just bytecode and not machine code, for two different platforms? I know my Java 1.5 apps still work on Windows 95, 98, Me, 2000, XP, and Vista. Why is .NET so limited?

    37. Re:Can .Net Provide a Vehicle for alternatives? by mikaelhg · · Score: 1, Informative

      Project Semplice brings people with Visual Basic skills to Java the cost-effective way.

    38. Re:Can .Net Provide a Vehicle for alternatives? by hitmark · · Score: 1

      ok so i was a bit tactless in my statment. im just saying that when one add a feature, make damn sure to optimize the hell out of it.

      --
      comment first, facts later. http://chem.tufts.edu/AnswersInScience/RelativityofWrong.htm
    39. Re:Can .Net Provide a Vehicle for alternatives? by hitmark · · Score: 1

      who needs to figure out the Z order of windows?

      just make sure that the active one is on top and clearly marked as being active ;)

      windows without tearing. that was done a long time ago, and without the need for 3D chips. i belive most any 2D capable chip today have some kind of double buffering feature.

      and if i dont need to use "aero glass", why on earth is microsoft spending time developing and pushing it? as for who does not have a 3D card in their computer. my parents, thats who.

      --
      comment first, facts later. http://chem.tufts.edu/AnswersInScience/RelativityofWrong.htm
    40. Re:Can .Net Provide a Vehicle for alternatives? by cronot · · Score: 1

      Oh and it's a little slower and eats more memory. That too.

      I second that. And that's a pity, really. The platform is so slick and well structured that makes me wish I could write every app on it. But given its performance, its just not feasible.

      My anedoctal case: recently I needed a very simple and brain-dead app, whose only purpose is to start and stop a couple of Windows services. It was for my personal use only, just something to prevent me from wasting time having to type commands at the prompt, and to train my skills too. So I decided to tackle it in VB.net. I've programmed in VB6 in the past, and while I've been more on *nix camp recently (PHP, Python, Perl, etc.), I felt it was time to get more in touch with .Net. So, there I went. I couple of hours (mostly spent digging documentation and testing) and I had the app done.

      Alas, for every "first-start", it takes about 10 seconds to load. And as I said, it's a very simple program, less than a hundred lines. The app took longer to load than to do what it was meant to do. And as the app objetive is so simple and straight-forward, I couldn't afford it taking so long to load - I'd rather start the services I wanted by hand. So, as an additional exercise, I rewrote the app on VB6. It look a little longer, but I did it. This ones starts up almost instantly. Both executables (VB6's and .Net) have about 30Kib. The load time spent on the .Net app is obviously because it loads up the .Net libraries or VM or whatever, before starting the app. So I'm sticking with the VB6's version.

      Again, that's a pity. The code for the .Net version of the app looks so much cleaner and understandable than VB6's version. I guess .Net is more suitable for enterprise-class applications, where load times doesn't matter, and you have a lot of memory to keep the program always open.

    41. Re:Can .Net Provide a Vehicle for alternatives? by IAmTheDave · · Score: 1
      and thats the attitude that leads us to having a future windows version that wants a 3D card for basic desktop operations, and eat 15GiB of storage space...

      Hey, if you're still running a 386, you should still run Windows 3.1 or DOS. Nothing wrong with progress.

      --
      Excuse my speling.
      Making The Bar Project
    42. Re:Can .Net Provide a Vehicle for alternatives? by whimmel · · Score: 1

      Just because your development platform is powerful doesn't mean that your target client's machine is going to be powerful.

      "It runs great on my machine!" doesn't cut it when your client has to upgrade 100 computers to run your carelessly inefficient code.

      --
      Does the name Pavlov ring a bell?
    43. Re:Can .Net Provide a Vehicle for alternatives? by sbrown123 · · Score: 1

      Oh, I forgot to comment on this:

      There's a "remove from project" and there's a "delete". "Remove from project"

      I'm currently using Visual Studio 2005 Professional Edition (8.50727.42). I may be behind on some update that fixes this because I do not have the options you are talking about.

      For files, I can delete them or remove them (that is, ofcourse, if I can see them as I complained in my earlier comment about how VS2005 hides files). For projects, which is what I was commenting on, there is only the "Remove" option which only removes it from the solution but not the harddrive. There in no "remove" or "delete" for solutions.

    44. Re:Can .Net Provide a Vehicle for alternatives? by WinDoze · · Score: 1

      Do you think we should all still be writing C++ to-the-metal in Visual Studio 6.0 on Windows 98?

      Gasp! Most certainly not!

      We should all be writing C++ to-the-metal in Visual Studio 6.0 on Windows XP. At least that's what I do.

    45. Re:Can .Net Provide a Vehicle for alternatives? by fitten · · Score: 1

      Odd, I haven't had this problem and I have a similar system to what you describe (you have no description of your video card, though,

      I don't think I have ever had to worry about a graphics card for 2D widget blitting. Why is VS2005 different? I have also noticed this same slowness in another large .NET app called Paint.NET.


      You've stated my point. I don't see any blitting slowness on my machine. I use VS2005 as well.


      6) Partial classes? ...
      Don't use them if you don't want.

      It is not me that is creating these freaks of nature, but rather VS2005 GUI editor. It uses these partial classes for code behinds.


      Yes, it uses partials. The few times I've seen them is when it seperates your code from the generated stuff. It's kinda nice actually... it keeps you from mucking around with the generated stuff by not having it in the file that you will be editing. No accidental deletes and such...

      I personally dislike Java's strict file naming rules/conventions for a number of reasons.

      Work on something of scale in .NET with multipe coders and you will begin to wish you had it. And even though you can enforce certain rules in your area for coders to follow you are not able to enforce these same rules on others who code you may reuse in your project. I think Microsoft left the strict naming out to appease C++/C programmers but didn't fully understand the disadvantages in doing so.


      Yes, I have done so and I'm glad I didn't have it. I've had it in Java and, while it wasn't a show-stopper, it was sometimes needlessly annoying. In either case, it isn't a huge issue. I simply dislike it, I don't loathe it and I'm not fanboish towards not having it. I'm not a fanatic over either development platform and I'm not an OS religious fanatic, either. What works for you just *might* not work for everyone.


      That's "forward compatibility", not backwards. Backwards compatibility means that Vista will run XP applications. Forwards compatibility means that XP will run Vista applications.

      You just pointed out the big difference between Microsoft's .NET and Java: .NET is tied to the OS. That is just silly. Why are they unable to release the runtime (virtual machine) for "older" operating systems like XP? Why should I have to compile code, which is actually just bytecode and not machine code, for two different platforms? I know my Java 1.5 apps still work on Windows 95, 98, Me, 2000, XP, and Vista. Why is .NET so limited?


      Nothing prevents it. Microsoft just writes the vm for each machine. What you said was: There is also rumor on the .NET forums that Microsoft will be releasing new API functions to .NET that will only work on Microsoft Vista. If this is true you can kiss backwards capability goodbye.

      If you target any components of anything to a future version of an API, you have the same issue. The same goes for Java or anything else. Tie Java to some Linux 2.6 kernel APIs and see if your Java runtime will run on 2.4. 2.4 is not forward compatible with 2.6. However, 2.6 is fairly backwards compatible with 2.4 (a Java program you write on a 2.4 based runtime will most likely work on a 2.6 system). Or... write your Java program to call the 2.6 kernel APIs directly (C interface). Run your Java app, bytecodes and all, on a 2.4 system and see what happens. You seem to want your Java 3.0 (when it comes around) apps to run on a Java 1.5 runtime, by your examples. Odds are, Java 1.5 will not be forward compatible with Java 3.0. .NET is no more limited than Java (and vice versa) in this regard. If Microsoft supplies a patch or some kind of runtime that provides the Vista API equivalents back onto the older XP (thus building forward compatibility into XP), then you can do it. The Windows API is changing... if these new APIs are ported back to XP then i

    46. Re:Can .Net Provide a Vehicle for alternatives? by Crussy · · Score: 1

      Mind posting those benchmarks, because I call bullshit. .net is on par with java if not worse for both speed and memory usage. If your c++ app runs as slow or uses as much memory as a JIT'ed app, you are doing something wrong.

    47. Re:Can .Net Provide a Vehicle for alternatives? by Doctor+Faustus · · Score: 1

      I'm guessing your hard drive still only spins at 7200 RPMs
      As hard drive densities increase, there are more bits in that physical space.

    48. Re:Can .Net Provide a Vehicle for alternatives? by sbrown123 · · Score: 1

      You've stated my point. I don't see any blitting slowness on my machine. I use VS2005 as well.

      Then why did you ask what graphics card I was using?

      Yes, I have done so and I'm glad I didn't have it.

      The problem C# developers experience is the problem of quickly locating classes across multiple projects within one or more solutions. In Java, the forced namespace and file naming convention makes this extremely easy. In C#, you end up using the IDE's poor Find function or the questionable Object Browser. Moving code is also very painful since its not always just an easy case of "cut and paste". You said you prefered not having this defined structure, but what is the actual benefit of not having it?

      If you target any components of anything to a future version of an API

      Oh, my fault. I see the issue that you were hung on. I should have written it as such:

      There is also rumor on the .NET forums that Microsoft will be releasing new byte codes to .NET that will only work on Microsoft Vista.

      There. Like I said earlier, this is similar to the change from 1.0 to 1.1. I must stress that this is ofcourse only a rumor though. Java is also suppose to add a new byte code (1) with their release of 1.6 Dolphin. The major difference is the Java change is suppose to be an "add" whereas the supposed .NET change is a "add and replace". Any "replace" will break backwards compatibility.

      Tie Java to some Linux 2.6 kernel APIs and see if your Java runtime will run on 2.4. 2.4 is not forward compatible with 2.6.

      Bytecode is not machine code.

      You seem to want your Java 3.0 (when it comes around) apps to run on a Java 1.5 runtime, by your examples

      I just compiled a "Hello World" with a Java 1.5 compiler and it runs fine on a Java 1.1 virtual machine. So what? Is this suppose to be impossible?

      NET is no more limited than Java (and vice versa) in this regard.

      Again, left something important out. I should have said Microsoft .NET is limited. Mono seems to have better coverage amongst the platforms since they have virtual machines that can run on various platforms and OS's, new and old. I think that developers who use Mono are at an advantage because of this. There's no reason Microsoft couldn't do the same but I fear they use .NET as a way to force people in to upgrading operating systems to make $$$. It could also be that they have no incentive to support any other platform than the most current version of Windows.

    49. Re:Can .Net Provide a Vehicle for alternatives? by fitten · · Score: 1

      Yes, I have done so and I'm glad I didn't have it.

      The problem C# developers experience is the problem of quickly locating classes across multiple projects within one or more solutions. In Java, the forced namespace and file naming convention makes this extremely easy. In C#, you end up using the IDE's poor Find function or the questionable Object Browser. Moving code is also very painful since its not always just an easy case of "cut and paste". You said you prefered not having this defined structure, but what is the actual benefit of not having it?


      Particularly, Java makes massive trees both for source and for intermediates and for final output. It's just annoying. The namespace of the object defines where it is in the final assembly. After that, in Java it's just annoying having to traverse all the directories to find stuff.

      If you target any components of anything to a future version of an API

      Oh, my fault. I see the issue that you were hung on. I should have written it as such:

      There is also rumor on the .NET forums that Microsoft will be releasing new byte codes to .NET that will only work on Microsoft Vista.

      There. Like I said earlier, this is similar to the change from 1.0 to 1.1. I must stress that this is ofcourse only a rumor though. Java is also suppose to add a new byte code (1) with their release of 1.6 Dolphin. The major difference is the Java change is suppose to be an "add" whereas the supposed .NET change is a "add and replace". Any "replace" will break backwards compatibility.


      That's a fairly important point to leave out... it changes the entire conversation :) With your new addition, I would agree that removing bytecodes would be an issue for backwards compatibility. We'll have to see if this is rumor or fact. I imagine that it would cause a huge issue for tons of 3rd party vendors if it happens.

      Tie Java to some Linux 2.6 kernel APIs and see if your Java runtime will run on 2.4. 2.4 is not forward compatible with 2.6.

      Bytecode is not machine code.

      You seem to want your Java 3.0 (when it comes around) apps to run on a Java 1.5 runtime, by your examples

      I just compiled a "Hello World" with a Java 1.5 compiler and it runs fine on a Java 1.1 virtual machine. So what? Is this suppose to be impossible?


      Again, this stems from your ommission. It was one of the few ways I could think of quickly to tie a Java program with a specific version of an OS. Put in your ommission, and I agree because the Java 1.x standards define the bytecode set. Any removal or addition to the set should result in a major version number bump, IMO. So, within a major version number, there is some idea of forwards compatibility.

      NET is no more limited than Java (and vice versa) in this regard.

      Again, left something important out. I should have said Microsoft .NET is limited. Mono seems to have better coverage amongst the platforms since they have virtual machines that can run on various platforms and OS's, new and old. I think that developers who use Mono are at an advantage because of this. There's no reason Microsoft couldn't do the same but I fear they use .NET as a way to force people in to upgrading operating systems to make $$$. It could also be that they have no incentive to support any other platform than the most current version of Windows.


      Yes, I've used Mono as well (and liked it). Still, it's difficult to say that Microsoft should make CLRs for lots of different platforms. After all, the CLR is a (real) standard, approved and documented by a worldwide standards body and is available for anyone to implement (unlike others...), like the Mono guys do. I'm on the fence about the rest of the forms library and such. I personally think it'd be in Microsoft's best interest to open them up, but I can see good arguments against it, as well.

      So, after the addition of a few things that you left out, I think we largely agree (except in places of personal preference sometimes).

    50. Re:Can .Net Provide a Vehicle for alternatives? by Breakfast+Pants · · Score: 0, Offtopic

      Take this to email; it's a borefest.

      --

      --

      WHO ATE MY BREAKFAST PANTS?
    51. Re:Can .Net Provide a Vehicle for alternatives? by izomiac · · Score: 1

      Progress and bloat aren't the same. Take Azureus and uTorrent for example. Azureus can probably do more, but uTorrent is growing in popularity. I'm not trying to imply that Azureus is bloated necessarily, just that resource usage does matter, even if modern computers have power to spare.

      I use BeOS myself even though I have a 3GHz P4 & 512 MB of RAM. It can only do 90% of what I need to do (Linux can probably do 92% though I use XP for the other 10%). The reason I prefer it to XP (or Linux)? It's faster. It's actually spoiled me. I don't have to leave my computer on all the time, or find some way to entertain myself while it boots. I've heard of people getting their cold boot time to under 5 seconds (plus what the BIOS takes). Opening folders takes about half the time as XP or Linux, and launching non-ported programs is also much faster. I also get a response immediately when I start hitting a sequence of hotkeys. None of this, Windows Button, U, H and then waiting another couple seconds before seeing a response. You really don't realize how slow XP is until you use something faster.

    52. Re:Can .Net Provide a Vehicle for alternatives? by Bhikku · · Score: 1

      I'd be interested to know why you think SQL Server 2005 Express is a pile of crap. It's FAR better than the previous version "MSDE". Personally I'm pretty impressed with it.

      --
      Have you ever imagined a world without hypothetical situations?
    53. Re:Can .Net Provide a Vehicle for alternatives? by sbrown123 · · Score: 1

      Sorry if our technical conversation ruined your concentration in trying to find porn. Shouldn't you be getting back to your finger painting anyways?

    54. Re:Can .Net Provide a Vehicle for alternatives? by Fulcrum+of+Evil · · Score: 1

      Hardware is advancing whether we ask it to or not. So why not take advantage of the better hardware by adding language features that make the programmer's job easier?

      How does demanding a 3D card and an assload of disk and memory make my job easier?

      Do you think we should all still be writing C++ to-the-metal in Visual Studio 6.0 on Windows 98?

      C++ to the metal? what the hell?

      --
      "We returned the General to El Salvador, or maybe Guatemala, it's difficult to tell from 10,000 feet"
    55. Re:Can .Net Provide a Vehicle for alternatives? by pilkul · · Score: 1
      90% of laptop owners
      80% of windows users

      Even current integrated graphics won't cut it with Vista...

      Where did you hear this? The most common crap integrated graphics card for current laptops and low-end desktops is the Intel GMA950, and it's Vista-ready. That's the only reason its 3d capabilities are there, since the card sure can't run very many games.

      Just because you can make a program doesn't make you a programmer... Write a program, write it well, don't use a framework unless it actually benefits the program, not just because it's there. (Because who says it'll be on the client computer?)

      You seem to be assuming that everything is an application for mass distribution. That's not the primary use of these frameworks at this time (the only mainstream managed-code software I know of is Azureus). But if you're a company needing a custom application, you can't afford an elite experienced programmer to spend years coding it in C++. You're going to hire an average code monkey and give him the most high-level framework that does the job, and who cares about efficiency because buying new hardware is a lot cheaper than paying programmers' salaries. And that framework is going to be on clients' computers because you installed it there!

      In the context you program in it may not be the best solution, but there's a reason why Java and increasingly .NET is dominant in corporate environments.

    56. Re:Can .Net Provide a Vehicle for alternatives? by Ravatar · · Score: 1

      Here you go... performance comparison of unmanaged C++ vs .NET

      I think you might be confusing .NET's JIT compilation with the way that Java code is interpreted. Check out this link for more information on the .NET JIT process.

    57. Re:Can .Net Provide a Vehicle for alternatives? by plague3106 · · Score: 1

      Write a program, write it well, don't use a framework unless it actually benefits the program, not just because it's there. (Because who says it'll be on the client computer?)

      You've obviously never used the .net framework, because it offers quote a bit that benefits the program.

      And if users WANT to run your program, you'll make sure the framework is there. Or did you forget the time before which DX was included by default with the OS?

    58. Re:Can .Net Provide a Vehicle for alternatives? by plague3106 · · Score: 1

      What a waste of time.

      A simple app that starts and stops services dosen't need something like .net. It doesn't even need VB6. A simple command script would do what you wanted.

      No one is claiming you should write device drivers in .Net. Nor does it replace what can be done in a simple command script. But for applications which are complex and you must maintain, its an excellent choice.

    59. Re:Can .Net Provide a Vehicle for alternatives? by plague3106 · · Score: 1

      In a large organisation, with plenty of applications and developers, it becomes a DISADVANTAGE to have applications written in so many different languages. This is what annoys me about .NET. This is not an advantage, it creates a codebase where you have a collection of Jack of All Trade developers, and no consistency when it comes to support.

      No, it doesn't creaet a codebase where you need to know multiple languages, you and your company do that. There's no reason you can't mandate C# for everything.

      The advantage of so many languages is that developers from many different backgrounds can start .Net with a language they are already familiar with syntax-wise. All you need to do is learn about any differences and the framework.

    60. Re:Can .Net Provide a Vehicle for alternatives? by fean · · Score: 1

      Don't get me wrong, .NET framework has a lot of prebuilt stuff in that makes development quicker and easier. BUT there are MANY programmers out there who use .NET for everything, even when they don't need it. If it comes down to "I have to spend another couple days to program this widget from scratch, or I can use .NET but make my users download the 150 meg framework..." That's just lazy programming...

      I'm not saying .NET doesn't have it's benefits, it keeps poor programmers from making really bad security mistakes. It makes some repetitive things easy to add in... But if Joe Blow comes along to a download.com to download your .NET Bittorrent program and sees your 1 meg file + 150 meg framework, or uTorrent's 150k download, guess which one he's going to pick.

      uTorrent is a prime example of what can be done with smart programming... it's a beautiful program with nearly every feature offered by competitors, no framework needed, works with windows 95+, doesn't hog memory space, doesn't leak memory, offers user customization (skinnable buttons) and adheres to every standard it deals with (specifically bittorrent standards... encrypted sessions, DHT/Private Trackers, etc...)

      When I say "Benefit", I mean "this program won't function without these things that .NET provides"... There are lots of bells and whistles that you can add to your program with .NET... but most of what .NET provides can be reproduced with a little elbow grease. You should have a real need for something you use in the framework to use it. (and really, this is the same for ALL frameworks.... .NET, Java, even Ruby on Rails... don't use it just because it'll let you make a program with more bells... use it because it actually enhances the function, or spend the time programming the bells yourself)

    61. Re:Can .Net Provide a Vehicle for alternatives? by Anonymous Coward · · Score: 0

      So says Richard. You are a completely clueless moron. Get a life.

    62. Re:Can .Net Provide a Vehicle for alternatives? by Bastard+of+Subhumani · · Score: 1

      I agree. If you can't write device drivers in C080L, then you should jolly well write your accounting suite in assembler.

      --
      Only three things are certain; death, taxes, and apocryphal quotations - Ben Franklin.
  2. Which version of VB is it? by blincoln · · Score: 5, Insightful

    VB = 6 is unadulterated crap. VB.NET isn't half bad, although I much prefer C#.

    --
    "...always new atoms but always doing the same dance, remembering what the dance was yesterday." -Richard Feynman
    1. Re:Which version of VB is it? by km790816 · · Score: 5, Insightful

      Mod the parent up.

      This is the *huge* issue, that will make or break your decision.

      If it's VB6, run for the hills. It's end-of-lifed.

      VB.NET is a great place.
      You'll be able to leverage all of the .NET platform pieces (ASP.NET, SQL integration, WinForms, Avalon, etc).
      You'll be able to mix-n-match C# code.
      There is continuing investment in the language and tools. There's already a page dedicated to VB9 with some awesome features I wish were going to be in C#.

      If you're betting on a Windows environment, VB.NET is a great place to be.

      Your first choice should be "Are we going to bet on .NET?".

      If the answer is yes, VB.NET vs. C# vs. Managed C++ is a secondary call.

    2. Re:Which version of VB is it? by jma05 · · Score: 2, Informative

      >> You'll be able to mix-n-match C# code.

      Actually you can. The IDE might not support it though.
      http://discuss.fogcreek.com/dotnetquestions/defaul t.asp?cmd=show&ixPost=471

    3. Re:Which version of VB is it? by KarmaMB84 · · Score: 1

      You should still be able to mix and match assemblies. In a big project everything should be componentized (assemblies!) anyway. I remember mixing Managed C++ with C# within the IDE in VS2k3

    4. Re:Which version of VB is it? by abandonment · · Score: 0, Troll

      I agree completely. I've run into, i think maybe 2 programs that actually require the .net runtime (i refuse to install it), and even so there are multiple versions of the runtime, it's not clear which is which or which you need to run said program, etc...

      run a program without the .net runtime and it just crashes saying 'missing dll' - if this is so crucial to the microsoft 'platform', you'd think that they'd at least KNOW which dll's are those that require dot net and give you an appropriate message etc...

      in my opinion, if you are writing an application that depends on an external library to be REQUIRED, which may or may not be installed on the users' machine, then you are going to run into problems.

      Since it sounds like this is a product that will be used outside of a controlled environment (ie withing a specific company, you know what you are running the app on), then you are asking for a technical support nightmare.

      the only remotely successful installation of a vb-based application was for an ntranet applicatoin for a software company i used to work for, but even this was the result of 'gee, we need a quick app, lets use VB because it will let us develop it super quick' and ended up being used for like 10 years, as the company expanded 1000% times the size, and kept trying to keep the program running & working etc...

      anyways, that's a whole other story - this was back in vb 5 (or prior) days when you couldn't even make a 'real' vb application mind you...but then again, anything that requires a 'runtime' to me isn't a real application. java, yes i'm looking at you.

    5. Re:Which version of VB is it? by KDan · · Score: 2, Insightful

      You'll be able to mix-n-match C# code.

      That has to be somewhere in the manual of permanent employment as one of the tricks of the trade... "introduce technology that no one else understands so that you're the only person who can maintain it". If the original poster's boss has any brain cells, he'll refuse to have any C# lying about unless he has more than 1 programmer capable of working with it.

      Daniel

      --
      Carpe Diem
    6. Re:Which version of VB is it? by binkzz · · Score: 4, Funny

      "If it's VB6, run for the hills. It's end-of-lifed."

      It's not entirely useless; I'm using my three VB6 MS books as a stand for my monitor to get to the right height. The only downside is that I continuously have 'VB 666' staring at me in the face.

      --
      'For we walk by faith, not by sight.' II Corinthians 5:7
    7. Re:Which version of VB is it? by Anonymous Coward · · Score: 1, Insightful

      And right here is the biggest reason for not developing product in any Microsoft environment:

      If it's VB6, run for the hills. It's end-of-lifed.

      VB.NET is a great place.


      Lessee, VB6 is end-of-lifed so use VB.NET. But what happens when Microsoft decides that VB.NET is end-of-lifed? Well, you can start all over again!

      I have participated in several development projects (not products, just internal software utilities) that started in one version of VB, were rewritten for the next version of VB and then rwritten yet again for the next version! Microsoft has a vested interest in making sure that users must buy the newest version of any of their IDE software development platforms. They enforce it by using their operating system. Even if you want to stick with an older version of the software to prevent having to entirely rewrite stuff, you quickly (like the next version of Windows) find that code produced with the old IDE no longer runs on the latest version of Windows. Due to their constant tinkering with the API's, one version of VB was decidedly not compatible with the next.

      The reason VB.NET is the rage now is because it was supposed to be the underpinning for the new Vista OS. It is also rumored to be a large part of the reason Vista is late. You really wanna hook your wagon to that star?

    8. Re:Which version of VB is it? by hey! · · Score: 5, Insightful

      If it's VB6, run for the hills. It's end-of-lifed.

      This is a critical point, and bears on the way the boss is making the decision. Professional programmers don't like VB because, as a language, it is not very good. But that doesn't mean the boss is being stupid. No. He's actually making the decision using a fairly reliable algorithm: repeat what has worked in the past.

      The problem with this algorithm is that it can fail when the future is sufficiently different from the past. As in the platform being not supported anymore.

      VB is not so much a bad language as an obsolete (and mediocre) one. But it isn't just a language -- it's an IDE and an operating environment with widgets and libraries and so forth. And in the other aspects that VB is relatively strong for some kinds of tasks. Visual Basic is Visual -- it really encourages you to think and work in terms of concrete visual objects. For a professional programmer, this is higly limiting, because a lot of problems you deal with aren't visual. Limiting isn't necessarily bad if the problem you're working on falls squarely in the middle of them.

      You just don't do complex programming in VB. It's perfectly adequate for simple form based clients to a client/server style database backed applications that lack demanding scalability or support requirements. Most VB programs consist mostly of short event handler scripts around form components. The tight coupling of business logic to UI code is anethema to systems programmers. Clearly it is bad architecture, but the purpose of architecture is to reduce the cost of development and maintenance. In these kinds of applications, being able to get the application working quick enough outweighs any architectural drawbacks.

      I think the sweet spot for you would be C# and Visual Studio. The way you lay out forms and such is the same as in VB 6, and these days learning how the bits is the real work on the learning curve, not the language. Forms in C# hava a Java/Swingish kind of MVC pattern, but it's really only one new design pattern you need to deal with. Once he's got the hang of it the boss can pretty much see a one to one correspondence between bits in the old VB app and a new C# app. You could go with VB.NET, but really for the kind of cmdbtn_click scripts of a typical VB app, there is no reason a VB6 programmer couldn't look at, understand, and maintain the same script in C# without having to swallow the whole C# enchilada.

      And C# is a modern, well designed language. This means that if you have a piece of work that is sufficiently complex to worry about reuse, maintainability, scalability or other advanced requirements, you can address them properly. Many of the best practices and frameworks from Java have their counterparts in C#, such as O-R mapping, unit testing and so forth.

      IN any case, you're in for tough sledding Dealing with a guy who has built a business where he does everything is difficult. These guys seldom can make the leap to creating a company that is bigger than they can handle personally. Even if they understand change is necessary, and that they can't do it themselves; even if they hire people to create change, they usually end up fighting change tooth and nail. Often they undermine the efforts of anybody to do anthing independently, such as book keeping or filing. Everybody is running a three legged race with the boss, and since he only has two legs, there's a lot of waiting around for him to catch up so he can toss all your recent work into the crapper.

      Underneath this behavior is fear and beneath fear is insecurity and ego protection. Probably against all expectations, this guy has made a reasonable success so far; he has customers who send him enough money that there's more work than he can do himself. And since he didn't get where he is by saying no, he hired more people. But he'd probably be happier if it was just him. He may not know how to supervise people or even run a bu

      --
      Post may contain irony: discontinue use if experiencing mood swings, nausea or elevated blood pressure.
    9. Re:Which version of VB is it? by Klanglor · · Score: 1

      VB6 is only crap for those who doesn't know how to use it! it makes amazing and fast programme when u know how to use it properly :P

    10. Re:Which version of VB is it? by trezor · · Score: 3, Insightful

      In all fairness, this differs from the old VB runtime just how?

      Currently there are 3 versions of the .NET Framework. v1.0, 1.1 and 2.0. I would assume any newer Windows installation at least comes with v1.1 by default, which most current .NET-applications depend on. Oh noes! I have to click "Windows update" and wait 30 seconds! My, oh my.

      As for "refusing to install it". How zelous can you get? Do you refuse to install Sun's JVM as well? Yes, I see you think java ain't a real platform as well. Do you refuse to install perl or php when you write web-applications as well?

      Now let me tell you about the real world: If an application does useful stuff, and uses a framework that cut development time to a tenth, that is not just a real application, but anyone remotely interested in costs will find that framework great. So will probably most realworld developers who care about getting stuff done without wasting their time on rewriting the same generic code 50 times per project.

      Since it sounds like this is a product that will be used outside of a controlled environment (ie withing a specific company, you know what you are running the app on), then you are asking for a technical support nightmare.

      "Install the .NET Framework version 2.0 available at Windows Update or download it from this link.". Yeah, that was, like, you know, the worst of technical support nightmares.

      I know this is slashdot, but I can't believe this zealous rubbish got mod'ed "Insightful" and not "Troll".

      --
      Not Buzzword 2.0 compliant. Please speak english.
    11. Re:Which version of VB is it? by DrXym · · Score: 2, Insightful
      If the answer is yes, VB.NET vs. C# vs. Managed C++ is a secondary call.

      Stay the hell away from managed C++ if you can avoid it. There is precious little reason to use C++ unless you intend to do something unsafe such as call Win32 or other unmanaged code so managed C++ is something of a misnomer. The only reason to use it in my opinion is if you have some legacy C++ that you need to abstract behind an object and expose into .NET land.

      It's also worth pointing out that if ever the day arrives where Mono is interchangeable with .NET that C# is a future proof option. Managed C++ is unlikely to happen on Linux for a host of reasons, and I suspect that MS only support it since it's a great way to muddy the waters for Mono and cross-platform development in general - just like the ease with which they allow you to use COM interop or PInvoke.

    12. Re:Which version of VB is it? by FuzzyDaddy · · Score: 1

      But it is end of lifed, and no longer supported. Some of our code was VB6 based, and it needed to be redone in .NET to run on computers with newer versions of Windows. It was a lot of effort for no benefit on our side.

      --
      It's not wasting time, I'm educating myself.
    13. Re:Which version of VB is it? by Crayon+Kid · · Score: 1

      The only downside is that I continuously have 'VB 666' staring at me in the face.

      Fer goodness' sake, turn that book to face the other way. It'll make you go blind.

      --
      i ate crayons when i was a kid and now i have two braincells and the blue ones taste nicer
    14. Re:Which version of VB is it? by after+fallout · · Score: 1

      You should have a windows ME book in there too.

    15. Re:Which version of VB is it? by binkzz · · Score: 1

      I don't want my house to burn down, I'm pushing it as it is.

      --
      'For we walk by faith, not by sight.' II Corinthians 5:7
    16. Re:Which version of VB is it? by after+fallout · · Score: 1

      If you use GTK# then Mono already is basically a stand in replacement for .NET. The largest unfinished portion of Mono is Windows.forms (but as the team of the op is a VB group they might not even actually know how to write Windows GUI, instead relying on the drag and drop interfaces provided by VB).

    17. Re:Which version of VB is it? by Anonymous Coward · · Score: 0

      "VB is not so much a bad language as an obsolete (and mediocre) one."

      I don't think VB6 is really that bad at all. It's end-of-lifed, unfortunately, so it's really hard to buy a copy. But unlike VB.Net, you don't need Windows.Forms.classname.another.classname.that.tak es.up.the.screen.so.you.cant.read.the.statment.wit hout.scrolling. And the environment and compiled code are much faster than I expected - I tried rewriting a computationally intensive bit of code in Borland C++ and the VB6 code was just as fast (I was very suprised by this). And there are a few odd things missing from VB.Net that may be critical in certain circumstances, like support for DDE. (Rarely used these days, but you may need it if you have to talk to some older programs.)

      Where VB6 is lousy is that using class modules is _slow_, probably 10x slower than using regular variables or function calls. And, class modules are the only way to get pointer-like or OO-like functionality. But from when I've tried VB.Net, it's slow _all_ the time.

      If you're dealing with scientific-type people who grew up on Fortran, VB6 (with minimal use of class modules) will be very natural for them. And while I can't say I'm a big fan of Fortran, good old procedural programming isn't a bad thing. It's not trendy, but it gets the work done. Object oriented and components are good too, but it's just another style.

      And, I'm not sure I understand your odd sense of pity. "Poor guy...built a business by himself. I bet he doesn't know anything, even though he has customers willing to give him more money than he knows what to do with. And I'm a L33T programmer, unlike this sorry guy who only wrote the whole working program by himself. I bet he doesn't know anything about writing software, I better be patronizing rather than work with him." The poster just says he's being hired to rewrite code in VB6, and you're offering psychoanalysis of the employer.

      Now, it'd be good to rewrite in some other language, but mostly from the point of view that Microsoft has EOL'd VB6. (I don't particularly like VB6, but I've yet to see one thing that .Net improves.)

    18. Re:Which version of VB is it? by Anonymous Coward · · Score: 0

      VB 6 > VB.NET

      Y?

      because vb 6 compiles to native code.. Meaning you dont have to install the 20mb or so of the .net runtime.
      so many people seem to hate vb because they think its easy...Try writing a true multithreaded app in VB 6 (as i have), when u have achieved that you are free to comment on the language.

      The fact is most people who dismiss VB 6 have never programmed anything substancial in it.

      There is zero point in learning vb.net, c# is better.

      The only advantage VB6 had was it compiled to native windows code so small downloads and no need for runtime (except on windows 98).

    19. Re:Which version of VB is it? by ransom1982 · · Score: 1

      Doesn't C code itself require a runtime? How do you determine the difference?

    20. Re:Which version of VB is it? by Anonymous Coward · · Score: 0

      VB got a bad rep because of its simplicity. Any fool can write a simple program with it without having to know a bunch about programming. But it does have huge uses if you are a real programmer and understand programming concepts. It can be a real quick tool to use.. but saying that here is pointless because of the type of people here. It's like saying Marvel Comics are great in the middle of a DC convention. I honestly don't know why these can of worms keep getting opened, the opinions here are so biased its not even funny.

      I have been a programmer for a little over 15 years, and I can honestly say that I use the language that best suits the application. And I have used Visual Basic 6 quite extensively, still do, and will until it no longer serves my purpose.

      The only type of programming that it doesn't serve use for is game programming and low level operations unless you are just a script kiddy with no knowledge of programming, and then it becomes a horrible horrible environment.

    21. Re:Which version of VB is it? by Schraegstrichpunkt · · Score: 1

      It's a company with less than 10 employees. I've worked at such a company. Chances are, most languages are ones that only 1 or 2 programmers are capable of working with. Heck, the company probably only has one or two programmers.

    22. Re:Which version of VB is it? by Schraegstrichpunkt · · Score: 0, Troll
      But that doesn't mean the boss is being stupid. No. He's actually making the decision using a fairly reliable algorithm: repeat what has worked in the past.

      I'm unconvinced. I think he's making the decision using a fairly unreliable algorithm, being: make technical decisions you don't understand.

    23. Re:Which version of VB is it? by Anonymous Coward · · Score: 0

      Who the fuck rated you Insightful? VB 6 was and is a "good" language in that it quickly and effectively does its job. It's NOT the language's fault that some people misuse it. For 99% of application -- especially those that are not speed-critical -- there is nothing wrong with using classic VB.

      You're hanging off of the VB-Sucks bandwagon and waving your hat around like a fool. Grow up.

    24. Re:Which version of VB is it? by hesiod · · Score: 1

      > if you are writing an application that depends on an external library to be REQUIRED, which may or may not be installed on the users' machine, then you are going to run into problems

      That's a complaint I have with many programs written for Linux. They want all these libraries to be installed already, don't include them, and don't tell you how to get them, if they even tell you WHAT libraries are missing. Usually it'll just say that some random file is missing instead of the package that's missing.

    25. Re:Which version of VB is it? by Anonymous Coward · · Score: 0

      "Mod the parent up."

      Your post is a perfect example of why people should ignore this message board. Modding up an article because it fits the template of "_______ is bad because it blows." is absolutely idiotic. When you make a claim, you provide evidence or logic to support that claim. This escapes most of the participants here.

    26. Re:Which version of VB is it? by Cunk · · Score: 1

      "But unlike VB.Net, you don't need Windows.Forms.classname.another.classname.that.tak es.up.the.screen.so.you.cant.read.the.statment.wit hout.scrolling."

      A trivial point but if that really bothers you look into the Imports statement.

      --

      I am the inventor of the hilarious refrigerator alarm.
    27. Re:Which version of VB is it? by alnjmshntr · · Score: 1

      How does a post like this get modded insightful - it says nothing. vb 6 may or may not have been crap, but in many ways, such as debugging, com integration and forms development, it was *way* ahead of everything else - things like runtime debugging, which was just introudced into the .net 2.0 ide's was standard in vb6. And this made it a very fast language for development compared to c++, especially if you used com extensively.

      Before you say vb6 is crap I suggest you write a com object in c++ and a vb6. Notice anything different?

      --
      If I had created the world I wouldn't have messed about with butterflies and daffodils. I would have started with lasers
    28. Re:Which version of VB is it? by NorbMan · · Score: 1

      And yet, the boss hired a programmer who doesn't know anything about his preferred language.

    29. Re:Which version of VB is it? by Thuktun · · Score: 1

      He's actually making the decision using a fairly reliable algorithm: repeat what has worked in the past.

      The trouble comes in when managers believe something worked if you eventually reached your intended destination, regardless of what happened in the middle.

      You can deliver a gigabyte of data from one coast to the other on 9-track magnetic tape in a rusty VW bus that belches smoke from its exhasut, but there are a spectrum of faster, more efficient ways of meeting that goal.

      (I'm not slamming any languages here, just pointing out that whether something "worked" is sometimes subjective and misleading.)

    30. Re:Which version of VB is it? by BalanceOfJudgement · · Score: 1

      Imports System.Drawing

      Public Class DoSomething
              Private m_MyTextyObject as Text.StringBuilder
      End Class

      Ok, so here's the $1000 question:

      Which Text namespace am I using there? You know it intuitively because it's followed by the StringBuilder object; but the compiler only sees "Text" and wonders "Ok, am I supposed to resolve to System.Text or System.Drawing.Text?"

      It's a tiny problem and one that still exists in C# with 'using', but sometimes there's just no way around the full namespace resolution.

      Not really an argument for or against either VB.NET or C# but one annoyance that comes with namespace/package-based application building.

      --

      We are the fire that lights our world.. and we are the fire that consumes it.
    31. Re:Which version of VB is it? by BalanceOfJudgement · · Score: 1

      "You need to get the boss out of your work, outside of course of agreeing on things like budgets, milestones and requirements."

      Hehe. The company where I work only does government contracts - try telling THOSE guys what language you're going to force them to accept. For the part of the government I work for, there's a huge rivalry between the East and West coast divisions. As a consequence, each coast always wants exactly the opposite of what the other coast did.

      We did one project for the East Coast division and they wanted it in Matlab (they wanted a GUI in freaking MATLAB.. ugh.. and they wouldn't take no for an answer because their own guys ONLY know Matlab). When it came time to replicate the project for the West Coast, they wanted... C#. So we get to write everything over again. And the biggest reason they do this is simply because they don't like each other, I have no idea why. Maybe competing for budget money or something.

      Anyway my point is, doing government work we are rarely given the choice of what language to use. An office mate of mine is currently stuck "upgrading" one of their old pieces of software and they are refusing to let him update it to C# - they want him to rewrite it in VB6, which you can't even buy anymore!

      It's an annoying situation, to say the least..

      --

      We are the fire that lights our world.. and we are the fire that consumes it.
    32. Re:Which version of VB is it? by BalanceOfJudgement · · Score: 1

      The .NET languages (VB.NET, C#, J#, F#) compile to byte-code - this is an intermediate language that is then intepreted by the .NET runtime, which should be specific to the platform it is operating on (this way, only the runtime is platform specific instead of the language, libraries, and compiler all being platform specific).

      With C code, the libraries and compiler are platform specific, because C compiles to native code. It requires no runtime; it runs straight on the computer's CPU.

      --

      We are the fire that lights our world.. and we are the fire that consumes it.
    33. Re:Which version of VB is it? by Doctor+Faustus · · Score: 1

      I tried rewriting a computationally intensive bit of code in Borland C++ and the VB6 code was just as fast (I was very suprised by this).
      By computation, do you mean math? String handling is generally CPU and RAM-bound, as well, and VB6 has abysmal performance at that.

    34. Re:Which version of VB is it? by DrXym · · Score: 1
      But how many real world apps use GTK#? Certainly there are some but they are vastly outnumbered by those written with Windows.Forms. Until Mono adequately supports the defacto standard, there is little chance of it becoming more mainstream. Even aside from Windows.Forms, most real world apps drag in COM, PInvoke or unmanaged code somewhere along the line. But getting one of the critical APIs for UI development would be a good start.

      I really don't see much hope for Mono in its current form. It works well for what it is, but it isn't a viable replacement for .NET as Microsoft chooses to define (and redefine it). The weird thing is that complex GPL apps like #Develop provide the perfect platform for honing its compatibility and providing a great alternative to .NET on XP where it would be most useful. So what does the Mono community do - waste time porting #Develop from Windows.Forms to GTK#, tossing out most of the functionality in the process and making it Linux specific.

    35. Re:Which version of VB is it? by Klanglor · · Score: 1

      Oh well its business. you have to keep on changing to create jobs for everyone.

    36. Re:Which version of VB is it? by cow-orker · · Score: 1

      But that doesn't mean the boss is being stupid.

      Damn well he is. Any boss, who tells his engineers what tool to use, is stupid. It doesn't matter if the prescribed tool is crap (VB), inferior (C#) or good (Lisp), he should simply trust his engineers to know best.

    37. Re:Which version of VB is it? by abandonment · · Score: 1

      Yes for your information, I do refuse to install Java as well for the same reasons.

      I don't need a 20 megabyte process running in the background 'just in case' i might decide to run a Java application at some point. This whole 'need a runtime' technique of programming is complete garbage as far as i'm concerned.

      My point about the 'technical support nightmare' is that alot of programs that require the .Net framework do not indicate that they do, and if they do, provide a link to the ms download site, but don't indicate which version they require - I ran into this the other day - decided to actually bother to download the .net runtime to try out a program that I thought useful. There was a link from the application developers site to the MS download site to grab the .net installer.

      So I go there, download the .net runtime that they linked to, and try to install the application again. But NOOO, I installed the 2.0 .Net runtime, this application needed the 1.1 runtime...bah.

      At this point I've wasted 20 minutes trying to install a demo of a program that I now will never use or even attempt to purchase - lost sale.

      This is not zealotry, this is common sense analysis of how your non-technical users view your programs. If you want to support the MAJORITY of computer users, you simply cannot assume that they even KNOW that they can go to windows update to install the runtime that they need. Nor should they be required to, in my opinion.

      It's like visiting a webpage for the first time. You go to view something that potentially might interest you - but NOO this website is using 'internet 3.0' or whatever, and you need to update your browser, get some plugin, whatever - doesn't matter if it's the most common plugin (ie flash for example), you have immediately written off a percentage of your user base by forcing them to do this.

      This is the same reason that we use OpenGL for our game engine - features & functionality JUST WORKS - games don't require some ultra-new version of DirectX, ultra-new 'just released beta' drivers for our users video cards etc like most game engines require.

      Shit should JUST WORK - it shouldn't force your users to jump through hoops.

      Software developers are the worst at this. The whole paradigm of forcing your users to be ultra-tech savvy needs to change in order for the so-called 'mass market' to care about our products.

      Do you need to install some custom runtime, drivers, update your whole operating system (ie halo 2 pc) or other ridiculously stupid shit just to read a book or watch a movie?

      All of this is a self-perpetuating scam inflicted on the world by hardware vendors & operating system vendors & software developers. The cycle needs to break. /end rant

    38. Re:Which version of VB is it? by Anonymous Coward · · Score: 0

      Calm the fuck down. You dislike the process, refuse to take part in it, and have your reasons for doing so. Let the rest of the world make their own decisions about the subject. If I give an application to a client that requires .NET Framework 1.1, I give it to them on a CD with the .NET Framework 1.1 on it- simple as. If I'm in their business (like having a dev machine onsite) then I'll put it on the machines myself. This is no conspiracy, there are no Virtual Machine Illuminati out to get you, you're just a bitter asshole who looks for things to get angry at.

    39. Re:Which version of VB is it? by Anonymous Coward · · Score: 0

      ssss

    40. Re:Which version of VB is it? by abandonment · · Score: 1

      who's not calm? i don't recall swearing a blue streak, claiming conspiracies etc - this is the state of the industry - and it is a ridiculous state to be in.

      instead of flaming me, how about answering the claims with reasons why a virtual machine is such a good idea?

      i'm a 'bitter asshole' because i've had to work in an industry that continues to perpetuate the same issues onto it's customers again and again - and these same issues affect my business as a software developer. and since things aren't looking like they are intending to change any time in the future, it will only continue to get worse and worse.

    41. Re:Which version of VB is it? by Anonymous Coward · · Score: 0

      Dude, MATLAB is teh suk.

      (you all know it's true, but trollmark this anyway)

  3. support by Anonymous Coward · · Score: 0

    Start with there is no future support for it.

    End with the extreme restrictions to platform.

  4. Give us a bone! by morcheeba · · Score: 4, Informative

    What kind of project are you working on? The only description you provided is "Large". That could mean 3D FPS, relational database, mission-critical embedded vision system for an interstellar satellite, a cross-platform OS... all very different projects, and probably not suitable for VB.

    Picking the right tool really requires a better understanding of your project.

    Beyond the general problem, what are your expectations for reliability/testability, schedule, maintainability, expandability, performance?

    If the owner is the only one qualified to improve the product, Visual Basic might be a good choice.

    I once worked for a company that had an extremely accurate satellite propagation program. The problem was it was written in GWBASIC and did not run in a text-only mode (EGA graphics required!). For fun, I tried to convert it to C, but gave up - pure spaghetti code. The author became the head of a 200-person engineering department -- best leave it in GWBASIC and let him support it.

    1. Re:Give us a bone! by Stormwatch · · Score: 4, Funny
      What kind of project are you working on? The only description you provided is "Large". That could mean 3D FPS, relational database, mission-critical embedded vision system for an interstellar satellite, a cross-platform OS...
      Or Duke Nukem Forever. Who knows...
    2. Re:Give us a bone! by PygmySurfer · · Score: 3, Funny

      Nah, it sounds like their project is much farther along than DNF.

    3. Re:Give us a bone! by grammar+fascist · · Score: 1

      Nah, it sounds like their project is much farther along than DNF.

      Heck no! This project is only on its first rewrite!

      --
      I got my Linux laptop at System76.
    4. Re:Give us a bone! by beedle · · Score: 1

      Mod the parent up cause he hit it on the head. In order to correctly determine which language is right for the job, first we must know what the job is and what are the short term and long term objectives that hope to be achieved through this project from all stakeholders/

    5. Re:Give us a bone! by Anonymous Coward · · Score: 0

      Thanks :-)

      My background is embedded engineering, so I don't solve all problems in software. My current project uses an FPGA, microcontroller, and PC -- three different tools. Plus a custom PC board -- two more tools.

      That diversity tends to make me more aware of what I use to solve problems.

      - Morcheeba

    6. Re:Give us a bone! by ethan_clark · · Score: 1

      It's a mediacal office billing and patient scheduling system. The scheduling piece isn't so big, but the billing one is something of a monster. A relational database is involved, and for the current version, performance is becoming a SERIOUS issue for our clients with more than about 2 or 3 computers using the same database. The owner is looking to get away from doing coding/support, but it seems like he still wants to be able to jump in and contribute from time to time (hence his desire for keeping it in VB).

    7. Re:Give us a bone! by morcheeba · · Score: 1

      Neat. I honestly don't know much about VB, but I would think this would be one of the things it would be better at.

      Is the database part of your product? Maybe a good compromise would be modifying it to connect to a different (faster) database. That way you can keep your essential stuff (GUIs, look+feel, billing), but still improve the speed.

      If you do translate it, I would think the owner could still jump and and modify it. It's usually easier to do that in a foreign language than to architect a new project. He'll have examples of similar procedures, so he could add new ones or modify existing ones. That might make it an issue for support, though -- it's can be harder to debug in a different language.

      Good luck!

  5. Couldn't agree more! by pilot1 · · Score: 5, Funny

    VisualBasic, like just about every other language, has its place.

    And it's called hell.

    1. Re:Couldn't agree more! by twitter · · Score: 3, Funny
      VisualBasic ... has its place. And it's called hell.

      You can tell the difference?

      --

      Friends don't help friends install M$ junk.

    2. Re:Couldn't agree more! by LifesABeach · · Score: 1

      I was banging my head on the wall trying rationalize the twisted ignorent pride of VB. Thank you; You brought clarity to a subject that causes me to "Vapor Lock."

    3. Re:Couldn't agree more! by ems2 · · Score: 1

      Hey hands off! We don't need you to crap up Inferno.



      In case your English is absolute crap. Inferno is a synonym for hell

    4. Re:Couldn't agree more! by cyber-vandal · · Score: 1

      VBA and VBScript makes my life a lot easier, so, as with any language, it's horses for courses.

    5. Re:Couldn't agree more! by William+Robinson · · Score: 1

      And it is RIP there since 31 March 2005.

    6. Re:Couldn't agree more! by Anonymous Coward · · Score: 0

      Fuck off, fanboy.

  6. Re:Umm by homeobocks · · Score: 2

    The latest VB apps (VB.Net) aren't executed an operating system, they run on the .NET runtime, which is largely cross-platform through projects like Mono.

    --
    MOUNT TAPE U1439 ON B3, NO RING
  7. Rethink your approach, perhaps by plover · · Score: 5, Insightful
    A fair argument against VB6 is that it's at end-of-life. Microsoft has dropped support. You find a bug in it and it's all yours. But honestly, there just aren't that many bugs left in VB6 that aren't already known.

    There's a different point of view you need to seriously consider: who's signing your paycheck? It's not Microsoft, is it? I thought not.

    Consider meeting your boss in the middle. It's possible your boss is set on VB6 because he can read it fluently. Perhaps you could convince him to port it to VB.net. VB.net might not be so different that it would scare him. The GUI isn't all that different. And the .net framework would allow you to gradually expose him to other languages (C# or C++/CLI.) And it would allow you the opportunity to use a language with better libraries than VB6.

    Have you dug a bit to find out why he's so pro-VB6? Maybe he's biased against .net because it's an interpreted language (like Java)? Perhaps half of his client base is all still running Windows 95 on 90 MHz pentiums, and .net is not an option for them. Maybe he'd be OK with C or C++ compiled to native executables, as long as there are no .net requirements. Microsoft's latest version of C/C++ has a strong push towards safer coding with bounds-checked versions of all the standard library functions. That might be good enough for him.

    Or maybe he just has only two or three long-term clients that are stuck on Windows 3.1, but they've been with him for 25 years so he feels he has to support them into the far future. Consider buying them a few cheapo PCs to run your software: $400 each for a few bottom-feeder Dells would go a long way with customer goodwill, and would allow the rest of you to move into the 21st century of tools. And a $1200 hardware investment is much less money than your time spent struggling with old tools.

    If he built a successful business around a piece of software, the chances are good he's smart enough to listen to rational arguments. So don't be irrational by kicking in your heels and saying "no! no! no!" unless you really enjoy job hunting.

    --
    John
    1. Re:Rethink your approach, perhaps by owlman17 · · Score: 2, Informative

      I'd mod the parent up if I had any points. I couldn't agree more. The most compelling reason to gradually (if not immediately) move away is that VB6 has reached end-of-life. Your boss would do well to listen to you that you ought to at least _begin_ to move away.

      Just ignore most of the ad hominem remarks against VB6 here. I hate Microsoft as much as the next /.er but I made a living off VB6 for several years. Sure, VB6 won't make Doom 4 or Linux kernel 2.8, but it did and still has its merits. Its just that its on its way to being another Visual Foxpro.

    2. Re:Rethink your approach, perhaps by Otter · · Score: 5, Insightful
      If he built a successful business around a piece of software, the chances are good he's smart enough to listen to rational arguments.

      Better yet, given that he's built a succesful business by writing version 1 in VB and that you don't actually have any rational arguments, why not defer to his judgment? The worst that can happen is that the next time this question comes up, you'll have a useful opinion instead of just vague concern that VB isn't 1337 enough.

    3. Re:Rethink your approach, perhaps by Anonymous Coward · · Score: 0
      But honestly, there just aren't that many bugs left in VB6 that aren't already known.

      Ok, but if there were, how would you know?

    4. Re:Rethink your approach, perhaps by Spacejock · · Score: 3, Interesting

      Agreed. I wrote (and still maintain) a very powerful stock market charting app almost entirely in VB6. Yes, I use a couple of DLLs for intensive calculations but the GUI and 99% of the code is VB. It works, it's stable, and the users love it. Wish I could say the same about a number of other apps sitting on my computer.
      In summary: don't blame VB for shitty programs, blame the programmer. And if you'd rather write in something else, why should I care? I'll judge you on the results, not the language used to write it.

    5. Re:Rethink your approach, perhaps by Anonymous Coward · · Score: 0

      hate Microsoft as much as the next /.er but I made a living off VB6 for several years.

      As they say, a three month contract to write a database will feed you for a quarter; a three month contract to write a database in VB will feed you for life.

    6. Re:Rethink your approach, perhaps by LoztInSpace · · Score: 1

      I can't agree more.
      I would like to think he was scared because he has somehow blagged his way into a job in a language he is not familiar with. Unfortunately I think he is scared because "it is VB and for reasons I am unable to undersand or articulate I think it is wrong".
      If it was me I'd count my blessings and STFU until I could speak from a position of knowledge & understanding rather than one of ignorance.
      The arrogance of some people astounds me. The owner has built a product good enough to create a company around and this employee thinks it's all wrong on grounds he can't actually specify. Unreal. I'd be scared of being given the boot as soon as they discover what a prick he is.

    7. Re:Rethink your approach, perhaps by adrianmonk · · Score: 3, Informative
      Have you dug a bit to find out why he's so pro-VB6? Maybe he's biased against .net because it's an interpreted language (like Java)?

      Aiiighghghghhhhh!!!! Why, why, why do people keep saying this?!

      Java is a compiled language. The Java source you write gets turned into native machine code. It's just that the compilation happens at runtime, unlike with many other languages where it happens earlier. Same process, different time.

      It's not like this is a new concept. For one thing, the documentation describing it has been up on the Java web site for years. For another thing, people on Slashdot have been saying it for years. And for another thing, LISP environments that do incremental compilation to machine code at runtime have been around for at least, what, 15 years? Some quick googling indicates that language environments that compile stuff to native machine code at runtime have been around since 1968.

      And heck, it's not as if it's even all that high tech or complicated in certain ways. You don't need something as esoteric as the internals of a JVM to see machine code being generated at runtime. If you want to see it happen on something simple, go to your nearest Unix or Linux machine and type "tcpdump -d not port 53". Notice that it spits out machine code? Now try some different filter expressions like "not host 127.0.0.1" or "host 127.0.0.1 and tcp and port 25" and watch how the assembly code changes. Yes, that's right -- even tcpdump compiles code at runtime, at least it does so with the packet-matching code, which is where the speed is really needed.

      So hopefully it's not too hard to comprehend now that modern JVMs do the same thing, and as far as I know, so does the .NET virtual machine.

    8. Re:Rethink your approach, perhaps by Vo0k · · Score: 1

      The worst that can happen is that you'll still be able to say "I had a bad feeling about it, but nooo, you insisted on VB and now you see?"

      --
      Anagram("United States of America") == "Dine out, taste a Mac, fries"
    9. Re:Rethink your approach, perhaps by overbaud · · Score: 1

      The main point is that the guy heading the project and putting up the cash has stated a business requirement. Your paid to provide a solution, which is an application that meets the business requirements, so deal with it, unless you want to tell the stakeholder determining the requirements that you know more about what his business needs and how his business runs than he does. Corporate software exists to support business not the other way around.

      --
      Users... the only thing keeping 1st level support from being the bottom feeders.
    10. Re:Rethink your approach, perhaps by suv4x4 · · Score: 1

      Maybe he's biased against .net because it's an interpreted language (like Java)? .NET is not an interpreted language, it's JIT compile language: first compiled to a common opcode format, then compiled to machine code, and the common runtime executes that directly as a binary code.

      Java also isn't interpreted, except for small mobile devices and the very old Java runtimes.

    11. Re:Rethink your approach, perhaps by jyda · · Score: 1

      But honestly, there just aren't that many bugs left in VB6 that aren't already known.

      I know what you mean, but how would you know? Couldn't this be said for all software?

      --
      "Just because I don't care, doesn't mean I don't understand." - Homer Simpson
    12. Re:Rethink your approach, perhaps by something_wicked_thi · · Score: 5, Informative

      Aside from it being at end-of-life, there are plenty of other, more technical, reasons why VB6 is a bad choice for many projects, especially large ones. I say this coming from a long history of writing and maintaining VB6 code, not because I have a bias against the language.

      VB was my second language and VB6 does vastly improve the VB experience, but there are several large problems: it doesn't support inheritance (only polymorphism); it is very difficult to use advanced features of the Windows API, it is very hard to debug and profile, and finally, it can lead to extremely unstable code.

      The VB6 language supports a feature where you can implement an interface, similar to Java or C# interfaces, or C++ pure virtual functions. It does not, however, support a method to inherit methods from another class. Thus, you often find yourself writing reams of code to delegate to another class that has a common implementation of various functions. Furthermore, if an interface changes, all the classes that inherit that interface must also be changed. That can lead to a rather large maintenance headache. Furthermore, changing the interface often plays havoc with the IDE's parser, so it can no longer tell which methods on the class are inherited in the Intellisense functions.

      More advanced features of the Windows API require you to copy and paste large bits of function and constant declarations into your code, and you have to jump through all kinds of hoops just to properly use the registry, system tray, or message handlers. I.e. if you want to catch a certain message sent to a window, you have to use SetWindowLong to override the message procedure of the window (you pass in the address of another procedure, which you acquire by calling "Address Of"). There is also all kinds of problems with passing pointers to structs, since you can't get a pointer in VB6. I.e. often, many window procedures require a struct with a pointer to another struct. There are hacks to get that, such as allocating a new memory buffer (using the LocalAlloc API), using CopyMemory to copy the VB struct into the memory location, then passing the pointer you got from the LocalAlloc call in as a struct member, and then using CopyMemory after the call to put the data into the VB6 struct. There are also undocumented functions to retrieve the address of variables, but there is, of course, no way to dereference a pointer, short of copying the data into a VB struct, or doing some fancy copying to change what an object points to (but that plays havoc with the reference counting).

      Next, you've got the instability issues. Using *any* of these features leads to instability. Under normal circumstances, things work alright, but if you try to run the application in the IDE while you've got a custom message handler set up for a window, then the moment you hit "Stop" to end execution, the whole IDE crashes. The reason for this is that the VB6 IDE runs the app inside the IDE's process, so if your app causes a GPF or similar, the whole IDE goes with it. It also makes it a real pain for debugging, since setting breakpoints inside the window procedure often causes crashes.

      Finally, it's very difficult to debug a VB application. If you've ever looked at the assembly output of the compiler, it's absolutely horrendous. Trying to step through it in WinDebug or something similar is just about impossible. The only way to debug it is with source code and full symbols, but even that is rather difficult sometimes. For example, most of the magic happens within the VB6 runtime (just about every VB statement is implemented as a call to the runtime; even assignment), so it's very difficult to follow what is really going on underneath the hood.

      Those are my main problems with it. I also don't like many other things. For example, VB is really slow. Slower than .NET, in my experience. Every benchmark I've ever run has VB losing by at least an order of magnitude. For example, I wrote an MD5 algorithm in VB (no small feat since VB has no unsign

    13. Re:Rethink your approach, perhaps by patrixx · · Score: 1, Informative

      "Aiiighghghghhhhh!!!! Why, why, why do people keep saying this?! "

      Because they are right, and you are wrong.

      The definition of an interpreted language is that the code is converted to native machine code at runtime. Java is "compiled" into Java byte code. That is correct. But Java byte code is NOT native machine code. It is code that the Java Virtual machine *interprets* into native machine code *at runtime*. So yes, Java is an interpreted language!

      References:
      http://en.wikipedia.org/wiki/Java_virtual_machine
      http://en.wikipedia.org/wiki/Interpreted_language /Patrix

    14. Re:Rethink your approach, perhaps by psmears · · Score: 3, Informative
      Yes, that's right—even tcpdump compiles code at runtime,

      While I agree with most of your post, that's not actually true—tcpdump compiles to bytecode, which it then interprets much like a non-optimised JVM. To see this, run the same commands on the same version of tcpdump on different CPU architectures (I tried SPARC and i386): you’ll see the same instructions being generated (you can even check that the compiled bytes are the same, if you use the -dd option).

    15. Re:Rethink your approach, perhaps by G-funk · · Score: 1

      EXACTLY! If you don't know enough about VB to come up with a list of valid reasons it's the wrong tool for the job, then you don't know enough about it to make that call, let alone convince the man who signs the cheques he's an idiot and you know better. Since he's obviously experienced at it (if he wrote an application that is supporting >2 10 employees), why don't you take his word for it and shut the fuck up? Or quit. Either way is good. If you don't know shit, why do you think it's your place to decide the best tool for the job?

      --
      Send lawyers, guns, and money!
    16. Re:Rethink your approach, perhaps by Errtu76 · · Score: 1
      Have you dug a bit to find out why he's so pro-VB6?
      He never mentions it's VB6, just VB.
    17. Re:Rethink your approach, perhaps by S.O.B. · · Score: 2, Informative
      Because they are right, and you are wrong.

      Actually I would say you're both right and you're both wrong.

      Java is neither 100% compiled or 100% interpreted. Java is compiled in the sense that what is executed is not the original source code. The Java compiler has taken the code and produced a bytecode file that is closer to machine code than the original source and as a result executes far more efficiently than a purely interpreted language. Also, because what is interpreted is not the original source code it is not an interpreted language in the classic sense. Although I agree, it is not truly compiled.

      About 10 years ago I was working closely with the IBM COBOL division on their PC compiler and in those discussions they told me that IBM's compilers, and I assume other vendor's as well, are built as a two phase compile. The first part is specific to each language (COBOL, C++, PL/1, etc) and compiles the code to a common internal format. This intermediate code is then taken the rest of the way to machine code by a common back-end compile used by all languages. This way they write a front-end for each language and a back end for each platform they wanted to produce machine code for.

      What Sun has done is take these two steps and separated them. In a traditional compiler both these steps would happen during the "compile". With Java the first step, generating the intermediate or bytecode, occurs during the compile. The second step, generating the machine code, occurs at runtime on the target platform.

      And because the intermediate code generation is the most costly part of the compile process most of the compiling has been done before execution. This is what allows Java to approach native code speeds.
      --
      Some of what I say is fact, some is conjecture, the rest I'm just blowing out my ass...you guess.
    18. Re:Rethink your approach, perhaps by totorototoro · · Score: 1


      Aiiighghghghhhhh!!!! Why, why, why do people keep saying this?!

      Java is a compiled language. The Java source you write gets turned into native machine code. It's just that the compilation happens at runtime, unlike with many other languages where it happens earlier. Same process, different time.



      Java is normally used as a compiled language, however it is not entirely accurate to say that it gets converted to native code always. It depends on what you are using to compile the source and run the resulting output.

      If you use a standard Java compiler, the output is a JVM class file image consisting of byte-code instructions and meta-data. If this is then loaded in Sun's JVM for instance, it may be JIT compiled into native code--but it could also be interpreted. This depends on how the JVM instance is configured to use the JIT compiler. There are other JVM implementations that in fact are just use an interpreter.

      In fact there exists a Java compiler that emit native code statically too.

      The same goes for the Common Language Infrastructure (i.e. .NET Framework), the MS implementation JIT compiles assemblies (the byte-code image of the CLI) into native code as needed. However, I believe GNU Portable .NET JIT compiles into another byte-code language (for the Converted Virtual Machine) and *if* a JIT compiler is available for the platform actually JIT compiles to native, otherwise uses an interpreter over the CVM byte-code.
    19. Re:Rethink your approach, perhaps by plover · · Score: 1
      Sorry, I totally misspoke. I know full well that both Java and .net are JIT compiled languages.

      I also know that they take a non-inconsequential amount of horsepower to run -- read the minimum system requirements for .net, for example, and you'll find a 400MHz processor is listed. While that's not a challenge for today's desktops or laptops, it's a serious question whether or not a ten-year-old computer will be able to run it. And there are plenty of embedded processors that are nowhere near capable of running it.

      We have a large number of 233MHz machines that we have to keep around for another few years. Until we get all of them replaced, .net isn't even an option for our client software. (Microsoft is annoyed that we haven't locked ourselves into .net yet because of this.) At that time, I suppose I'll stop thinking of them as interpreted, and maybe I'll even stop referring to Java and .net as GW-BASIC. :-)

      --
      John
    20. Re:Rethink your approach, perhaps by crawling_chaos · · Score: 1
      I'll judge you on the results, not the language used to write it.

      You are obviously not the typical Slashdot reader.

      --
      You can only drink 30 or 40 glasses of beer a day, no matter how rich you are.
      -- Colonel Adolphus Busch
    21. Re:Rethink your approach, perhaps by Anonymous Coward · · Score: 0

      It's no more interpreted than machine code is interpreted, if you don't want it to be. Yes, you can leave your application in MSIL and have it JITed when you fire it up, but who would do that for an executable? If you want your .Net app to be completely native, just run it through NGEN and it produces a binary for your platform.

    22. Re:Rethink your approach, perhaps by patrixx · · Score: 1

      "Actually I would say you're both right and you're both wrong."

      Not if the definition of what an interpreted language is has changed since the last time I looked.

      Java has however a very efficient preprocessor that makes it's run time interpreted source code (the byte code) very efficient ;-)

      I think the problem here is what one reads into "Interpreted". To some programmers this means a poorly typed macro language with bad performance and horrible memory efficiency. And Java is certainly none of that.

      So you can distance Java from those wrong presumptions by not calling it an interpreted language (which is wrong), or you can call it for what it is and explain how Java differs, and how that gives it the advantages that interpreted languages have plus almost as good performance as compiled languages.

      Regards /Patrix

    23. Re:Rethink your approach, perhaps by Anonymous Coward · · Score: 0

      But honestly, there just aren't that many bugs left in VB6 that aren't already known.

      How do you know?

    24. Re:Rethink your approach, perhaps by jez9999 · · Score: 1

      Just to point out: Although it may have been implied in the summary, notice that the poster didn't actually specify that it was VB6. He could've been talking about VB.net anyway.

    25. Re:Rethink your approach, perhaps by S.O.B. · · Score: 1

      I guess the point I was trying to make and that you alluded to was that the traditional definitions of "interpreted" or "compiled" do not really apply to Java. It is neither and both at the same time. As the English language continues to evolve so should our definitions...or perhaps a new word should be created to describe Java and langauges/VMs like it.

      How about "comterpreted" or perhaps "interpiled"?

      --
      Some of what I say is fact, some is conjecture, the rest I'm just blowing out my ass...you guess.
    26. Re:Rethink your approach, perhaps by StrawberryFrog · · Score: 1
      Maybe he's biased against .net because it's an interpreted language (like Java)?

      .Net is not a language, it is a technology suite supporting multiple languages. One important part is the CLR or Common Language Runtime, a platform whereby the source in C#/VB.net/etc is compiled to the same bytecode, which the CLR then executes.

      And the CLR does not interpret the bytecode. Just-in-time compilation is always used.

      --

      My Karma: ran over your Dogma
      StrawberryFrog

    27. Re:Rethink your approach, perhaps by Iamthefallen · · Score: 1

      A fair argument against VB6 is that it's at end-of-life. Microsoft has dropped support. You find a bug in it and it's all yours. But honestly, there just aren't that many bugs left in VB6 that aren't already known.

      Having just come off a VB6 job, this was a huge problem for us. Not so much because Microsoft has ended support, but many third party providers have stopped supporting their components as well. If you have a problem, well, tough luck.

      There are also fairly few components out there (Compared to other languages) that provide source code when you purchase it. There has been somewhat of a culture change with .Net where source code is now made available to a much greater extent than it was for VB6. Not to mention, components are written in a .Net language as opposed to VB6 components written in C/C++ or making heavy use of the Win32 API. And you really don't want to try to fix bugs in controls written in 1999 using VB6 and Win32 API...

      In my experience, the strongest argument against using VB6 is not technical limitations. You can work around those. But the support for the platform as a whole is eroding quickly. The past few years more and more websites with VB6 information are disapearing to be replaced with .Net sites. It's getting progressively more difficult to find VB6 information, components, and controls when you need them.

      If you application is a temporary fix to get by a year or two, by all means, use VB6 to get your product out there quickly and keep bringing in money. But IMNSHO it's not a sustainable long-term solution.

      --
      Wax-Museum Fire Results In Hundreds Of New Danny DeVito Statues
    28. Re:Rethink your approach, perhaps by alexmipego · · Score: 1

      Not personal, but you are one of those that I recomment only to post when you know what you're talking about. Just a few clues:

      While the syntax is very similar a VB.Net program could be understud by someone used to VB6, but there are concepts that a VB6 programmers simply won't get. Class? Overrides? Delegates?

      Another big error, .Net languages and code isn't interpreted. After you compile your application to CIL and you when you run that application, .Net or Mono (Linux, Mac and Windows opensource port of .Net), will do something called JIT, Just In Time compilation from the CIL to Machine Code. This ensures the same application can run fully optimized either on a Pentium III or a intel D 9xx because the machine code is generated by the "Virtual Machine".... Just in time. The difference? after a small load time the applications runs as it were native code (C or other compiled languages).

    29. Re:Rethink your approach, perhaps by Jerf · · Score: 1

      In summary: don't blame [language] for shitty programs, blame the programmer.

      Every time I see this, I compile it to "Blame the programmer for picking a shitty language."

      It hasn't failed me yet.

      Some languages are worse than others. How do they accomplish this? They make it easier to do the wrong thing than the right thing. Better languages (and libraries, APIs, etc) make it easier to do the right thing than the wrong thing. Sometimes this makes them seem harder, because they have to discard the very easiest (but wrong) approach, but in the medium and long term, you're much better off.

      Why can a programmer compensate for a bad language? In most languages, the programmer can do the right thing anyhow, even though it's harder. But generally only the very brightest can learn all of these "right things" while living in the bad environment; on average, you're going to have to pull this wisdom in from another, better environment. (And I've also seen cases where even people who think they've figured out the tricks still really haven't; they worked out something that sort of works, but only in their bad environment.)

      The programmer may take some of the blame, but the language and environment of something like VB6 still gets a heaping helping of blame for enabling and encouraging short-sighted tradeoffs.

      (And this analysis assumes the language is generally capable and bug free, something VB has trouble with on both counts, being buggy and requiring a lot of much harder work to access the trickier bits of even the Windows API, let alone external libraries. But this is just a side note.)

    30. Re:Rethink your approach, perhaps by stang · · Score: 1

      As you and others have mentioned, the most compelling reason not to use VB6 is that it has been end-of-lifed. Most of your other issues have workarounds, though.

      The VB6 language supports a feature where you can implement an interface, similar to Java or C# interfaces, or C++ pure virtual functions. It does not, however, support a method to inherit methods from another class

      Okay, well this one doesn't really have a workaround other than writing reams of hookup code - this is a limitation of COM, and VB was (eventually) written to be a top-notch COM development system. In my experience, building hugely interdependent object models is unnecessary for nearly all client applications, which is usually what you're building with VB6.

      More advanced features of the Windows API require you to copy and paste large bits of function and constant declarations into your code

      I use the Windows API type library originally developed by Bruce McKinney. One reference added to your project and thousands of Win32 functions, constants, and structures are available. The compiler will only add in the items you use to your executable, so you're not linking in the full ~750K of declarations.

      There are some holes (there's hardly anything in there for the win32 common controls), but an awful lot of stuff is available without any copy/paste work.

      There is also all kinds of problems with passing pointers to structs, since you can't get a pointer in VB6. I.e. often, many window procedures require a struct with a pointer to another struct

      Yeah, a struct with a pointer to another struct can be a pain - but again, that's a pretty rare item. It's easy enough to pass structures directly to the API - you just need to be careful about how you declare your API calls.

      if you try to run the application in the IDE while you've got a custom message handler set up for a window, then the moment you hit "Stop" to end execution, the whole IDE crashes

      Use a subclassing OCX or DLL (write your own using the AddressOf operator, or go find any of the dozen that are out there), and this problem will go away, assuming your subclassing component has the brains to automatically detach itself from the WndProc when it sees a WM_CLOSE or WM_NCDESTROY message. Mine does.

      [it's] difficult to debug a VB application. If you've ever looked at the assembly output of the compiler

      I haven't. I can't imagine why I would. Frankly, I can't imagine looking at the assembly output of some JITted Java piece, or a C++/MFC app, or damn near anything other than assembler, or (maybe) hand-tuned C. VB6 has got a great debugger that allows you to inspect and modify any variable and execute program functions on the fly.

      Get the Numega tools (if they still have a version for VB6) if you really want to do profiling, static code analysis, or whatever else you don't feel you get from the VB6 IDE.

      VB is really slow. [...] For example, I wrote an MD5 algorithm in VB

      Yeah, VB isn't really the place for this, even with the build settings optimized. You did set "fast native code", "optimize for ppro", and all of the advanced optimization checks, right?

      I am little surprised that you saw an order of magnitude difference. Native code generated from VB6 is run through the same second-pass compiler (C2.EXE) that Visual C++ 6 used, and the linker is identical. Benchmarks on computationally intensive stuff (that I've seen) usually showed a 40-50% performance penalty for VB6, rather than the 1000% you're talking about. Were it absolutely critical, you could've written your own C2 stub that passed the object files along to the MS C2 and set any or all of the C2 flags you were looking for.

      --
      "200 Quatloos on the newcomer!" "300 Quatloos against!"
    31. Re:Rethink your approach, perhaps by LWATCDR · · Score: 1

      Or better give up. I hate VB but you have to look at it this way.
      1. He is the boss.
      2. He is the boss.
      3. He might actually know more than you about the market he is in.
      4. He is the boss.

      You may ask him why VB. I can guess several reasons. He may have a lot of debugged existing code. He may not feel that it wroth a re-write. He may know VB inside and out.

      Doing a total re-write could take years, create new bugs, and really not help the product sell any more than it already is.
      If you really don't want to work in VB you are free to find a new job.

      Now if you are going to get him to move away from VB I will make an unpopular for slashdot suggestion. Port it to Java. There are some very good libraries, IDEs, and other tools available for free. It really isn't as slow as people say it is. And it is ideal for database type programs. Not only that but it runs well on Linux, OS/X, and Windows.

      C# is another option. In theory you can use Mono under Linux to run C# programs but I have yet to see many portable C# apps.

      I don't like VB because it is a Windows only solution. I have been using computers too long to think any OS is permanent.

      --
      See my blog http://ilovecookes.blogspot.com/ for light hearted technical information.
    32. Re:Rethink your approach, perhaps by hesiod · · Score: 1

      > To some programmers this means [...] bad performance and horrible memory efficiency

      You must have different concepts of "performance" and "efficiency" than I do, because those two words NEVER come to mind when I'm running any Java applications.

    33. Re:Rethink your approach, perhaps by alnjmshntr · · Score: 1

      Actually the number one argument for switching from Vb6 to vb.Net has nothing to do with technical issues.

      If you want to be able to hire competent staff in the future you have to make the move. Especially true if you want competent and enthusiastic staff. Programmers just don't like mucking about with old, outdated languages - especially since you as a programmer need to consider your marketability in the future too.

      --
      If I had created the world I wouldn't have messed about with butterflies and daffodils. I would have started with lasers
    34. Re:Rethink your approach, perhaps by Anonymous Coward · · Score: 0

      One thing the original author mentioned that I wanted to reply to: "Furthermore, if an interface changes, all the classes that inherit that interface must also be changed."
      Couldn't you get around this somehow the same way you do with functions that need more items passed to it? Ex:

      Function mail(to,from,message){
            DoStuff()
      End Function

      Function new_mail(to,from,message,subject){
            subject_handler()
            mail(to,from,message)
      End function

      All new functions that need to set the subject call new_mail, while the legacy stuff calls the original mail function. Does that make sense?

      nosebreaker.com

    35. Re:Rethink your approach, perhaps by pottymouth · · Score: 1



      I guess you work in VB or VB.net. I've got Java apps that outperform similiar C programs and I work with scientific and engineering apps all the time (FFT, FEA, matrix ops...). I don't know why people keep talking about Java like it's slow while at the same time working in Microsloth languages. Get a clue dude!!

    36. Re:Rethink your approach, perhaps by something_wicked_thi · · Score: 1
      Ugh, so many bad memories coming back. I agree with pretty much all you had to say, but I do have some additional comments.

      Okay, well this one doesn't really have a workaround other than writing reams of hookup code - this is a limitation of COM, and VB was (eventually) written to be a top-notch COM development system. In my experience, building hugely interdependent object models is unnecessary for nearly all client applications, which is usually what you're building with VB6.

      I know why they did it that way, but is there really any reason why they couldn't have allowed inheritance on private classes where they don't ever need to expose the class via a COM interface (I'm sure they still do, but there's no reason they have to)? Furthermore, though COM doesn't have the idea of inheritance, it can be faked by delegation, which could have been done behind the scenes by the language.

      I use the Windows API type library originally developed by Bruce McKinney. One reference added to your project and thousands of Win32 functions, constants, and structures are available. The compiler will only add in the items you use to your executable, so you're not linking in the full ~750K of declarations.

      I remember that. It was pretty handy, but many of the large projects, which weren't under my control, were very picky over their dependencies, so I couldn't use it. I know it's irrational, but that's the way things go sometimes.

      Yeah, a struct with a pointer to another struct can be a pain - but again, that's a pretty rare item. It's easy enough to pass structures directly to the API - you just need to be careful about how you declare your API calls.

      I remember it came up with the common dialogs (the font chooser dialog requires a struct with a pointer to a LOGFONT struct). You might wonder why I was using the API for the common controls - the simple answer is that I didn't want to include a large OCX in that particular project (that was before you could reasonably expect it to be already on most users' PCs and most users were on dial-up).

      I haven't. I can't imagine why I would. Frankly, I can't imagine looking at the assembly output of some JITted Java piece, or a C++/MFC app, or damn near anything other than assembler, or (maybe) hand-tuned C. VB6 has got a great debugger that allows you to inspect and modify any variable and execute program functions on the fly.

      I had to do this on a few occasions. VB often fails with very weird error messages. E.g. Out of memory seems to be a rather common one. Once, I was debugging a problem where calling an interface would fail in strange ways. It turned out that the interface had a function where it took a reference to an ADO object and the client didn't have ADO installed, thus making the cast to that interface fail with a very unhelpful error message. Another example is when you have bugs in the libraries the VB app is calling. Once, I found a bug in Crystal Reports like this, for example.

      With .NET there are plenty of tools for inspecting and debugging the IL that it creates, so such tools do exist for .NET and it isn't that far fetched that you'd want to do something similar for VB.

      I am little surprised that you saw an order of magnitude difference.

      I'm not, after seeing the generated machine code. For example, after every single statement, VB puts in an "fnclex" instruction, which means "clear floating point exception", even if the instruction wasn't a floating point instruction. Just about every VB statement is implemented with several function calls to the VB runtime. Just making those calls adds a significant amount of overhead. Add to that all the redundant bounds checking you do and you have a recipe for really slow code. Keep in mind that most optimizers can't do very much about optimizations across calls to functi

    37. Re:Rethink your approach, perhaps by Doctor+Faustus · · Score: 1

      Sorry, I totally misspoke. I know full well that both Java and .net are JIT compiled languages.
      I was under the impression that .Net compiled at install-time.

    38. Re:Rethink your approach, perhaps by something_wicked_thi · · Score: 1

      The problem here is that you basically have this:

      MyInterface:

      public function foo()
      end function

      public function bar()
      end function

      MyClass:

      Implements MyInterface

      public function MyInterface_foo()
      end function

      public function MyInterface_bar()
      end function

      Note how MyClass needs to have all the functions in MyInterface (prefixed by MyInterface_). If I add another function to MyInterface, I need to modify every class that implements it (like MyClass). That's the same as Java and C#, except that in those languages, I have inheritance, so if I have a parent class which implements an interface, then I just have to add the new interface function to the parent class and all the child classes get it. In VB, all classes would have to explicitly implement the interface, so I'd have to modify every class that implements that interface, since there is no parent class with an inherited implementation.

      Is that clearer?

    39. Re:Rethink your approach, perhaps by stang · · Score: 1

      I remember that [the api.tlb type library]. It was pretty handy, but many of the large projects, which weren't under my control, were very picky over their dependencies, so I couldn't use it. I know it's irrational, but that's the way things go sometimes.

      I don't understand why someone would have a problem with a development mode only dependency (it's not like you have to ship it), but I feel your pain.

      [pointers to structs in structs] font chooser dialog requires a struct with a pointer to a LOGFONT struct

      That was the only thing I could think of when I wrote my original message. It is definitely ugly. The pIDL stuff for fetching shell info (application/file icon, context menu verbs, etc.) is also ugly, but I'll admit I'm too ignorant (and too lazy to go dig though my source) to know if that stuff has the same issue, or just something similar.

      [on reviewing disassembled VB6 output] turned out that the interface had a function where it took a reference to an ADO object and the client didn't have ADO installed [...] found a bug in Crystal Reports like that

      Sounds a little extreme to me. Half-split troubleshooting would've found both of those issues.

      surprised you saw an order of magnitude difference

      I'm not, after seeing the generated machine code

      All I meant to say was that the benchmarks I've seen indicated a much smaller difference in code performance. VB6 is not the best way to do tight numerical algorithms, and I guess I'm not too surprised that an MD5 checksum calculation takes a bit longer. Certainly, the tool is designed for general-purpose client apps, where your major performance problems are hitting the filesystem and/or database server.

      I should add that I don't think that VB is the wrong answer in every case, but it shouldn't be the default answer. I've used it on personal projects where it has made sense, but I use it when I have to make applications that are simple, single-threaded (ooh, don't even get me started on coding multiple threads), usually database-intensive, and mundane. Anything out of the ordinary on VB means you're going to have a headache.

      I think we can both, for the most part, agree on this one, although I'll take exception to the "mundane" aspects. You can create fabulous-looking apps, you just have to sweat the details. Microsoft Money is a good example - it certainly doesn't look like a VB6 app stuffing data into an Access .MDB, but that's exactly what it is. Giant Antispyware/Windows Defender was (until defender beta 2) also written in VB6, but I'm not gonna stand here and tell you that was the best plan.

      Still, it's a shame MS killed off VB. Maybe with a few more revisions, VB.Net will provide the same ease of development as "classic" VB, and with a decent framework instead of the "leap into the unknown" that you always had when you went out of the VB sandbox.

      --
      "200 Quatloos on the newcomer!" "300 Quatloos against!"
    40. Re:Rethink your approach, perhaps by hesiod · · Score: 1

      Clue you say? I don't use VB(.Net) either, although I have written web pages in ASP (VBScript). For application programming I usually use C++, although I don't think my language preference makes much difference, and I don't write many useful programs in it.

      I say Java is slower because that has been my experience as an end-user. When run as an application it's certainly faster (as opposed to a web page applet), but still not as fast as other, similar programs in other languages. Perhaps the Java programs I have used have been written mostly by people who have no business writing Java apps professionally; I don't know any of them personally. Nor have I written anything besides the most basic Java programs myself (and I mean basic as in "Hello World [OK]").

      Another completely unrelated problem with Java is (what appears to be) version incompatibility. Again, that could be shortcomings of the individual programmers/companies, but installing a copy of Oracle 9i client (includes Java 1.3.??_??) breaks other programs we have that require Java. It can be fixed with a simple registry tweak, but that is not acceptable for professional software.

    41. Re:Rethink your approach, perhaps by plover · · Score: 1

      Yeah, I already apologized for the .net/Java error, and it has been beaten to death already by at least a dozen previous commenters. Try to keep up.

      --
      John
    42. Re:Rethink your approach, perhaps by plover · · Score: 1
      I was under the impression that .Net compiled at install-time.

      Nope, it's normally just-in-time compiled. You can pre-JIT the code, but Microsoft strongly cautions against the practice. I also believe it can cache the JITted code, so that subsequent executions can run without penalty (if the environment doesn't change.)

      However, since I got beat bloody for making the mistake of saying the word "interpreted" I'm not going to state that's an absolute fact.

      --
      John
    43. Re:Rethink your approach, perhaps by Anonymous Coward · · Score: 0

      Now I am mainly a Delphi programmer, but worked enough with VB to tell you al your "problems" with VB are really no issues

      VB6 exes are easily debuged with NuMega SmartCheck

      Dont copy & paste API declarations (the API declaration database included with VB6 is very wrong, and its better to define TypeLib) get it from, the now free, type librarys (mantained by the Mandelbrot Set Inc the crew that wrote Advanced M$ VB5) included with the Bruce McKinney book Hardcore Visual Basic

      There is a add-in DLL for the VB IDE that takes care of the window subclassing related crashing (defining your own widow proc) But its simpler, get it fixed just by moving out of the exe the window subclassing to a component (ocx or dll) check out the source code of the subclassing control by soft-circuits

      Frankly window subclassing its one of the easier things that you can do with APIs in VB6, for a little hand holding with the Windows API check the books by Dan Appleman (VB Programmers Guide to the Win32 API, Win32 API Puzzle Book and Tutorial for VB)

      For Low level COM use, check the book "Advanced Visual Basic 6: Power Techniques for Everyday Programs" for a little hand holding with the normal VB COM check the book "Dan Appleman's Developing COM/ActiveX Components with VB6: A Guide to the Perplexed"

      VB lets you mix logic and presentation code, a limited architecture (and quite bad for large projects) but you are not required to do it that way... you could define ActiveX DLL that integrates with the DCOM server in every Windows 2000 (and XP) with transactional support (just setting the property MTSTransactionMode for the Bussines Logic clasess) from there generate stubs, that once instaled in the clients, lets the code presentation in the interface call the remote DCOM bussines logic objects

      With VB (just selecting the WebClass template) you could define dinamic web pages generators using the same object model used for ASP, but much faster and using vba instead of vbscript (WebClass and DHTML class where the main additions to vb6 with respect to vb5, there where incremental additions to Data binding, data source, data consumer, object persistence, DCOM/MTS integration the rest where librarys like ADO, Dictionary and FileSystem Object and dumbed down designers like DataEnviroment or DataReport and a bunch of bad quality wizards)

      VB5 its faster than VB6, but VB6 its not slower than .Net, at least not if you know what you are doing (i have seen on internet VB6 md5 class that use dinamic arrays and create and destroy buffers inside the calculating loop, etc.... no wonder they are slower than our VB SHA512 class)and you at worst only need a 32MB runtime all ready in most windows not the moster .Net runtime

      Some languages like VB dont suport inheritance, but multiples interfaces; and the design of the object model must be developed from a different point of view (one thing that you dont do is go and change the main interface of classes...) and usualy in vb try to integrate classes trought secondary interfaces (in order to gracefully support several versions... kind of how COM does coClass)

      All this is done in VB very, very easy and fast (more than any other language i know) but its not enougth language for a project full coverage. Bruce McKinney all ready said it when he give up on using vb "vb makes 80% of the stuff very easy and the other 20% next to imposible". For me, Delphi makes 85% of the stuff easy and the rest the least dificult it can be. In my mind VB and Delphi complement quite well... problem is you try Delphi and dont want to do VB anymore

      Where i live VB programmers are cheaper and very common... most of them dont have a clue and lack basic teoric understanding of programming in general. I think the compiler its so friendly, it lets the most inepts programmers get something done. Its hard to assemble a group of vb programmers with good level, as there is never enougth time to learn all at the same level

    44. Re:Rethink your approach, perhaps by something_wicked_thi · · Score: 1

      Now I am mainly a Delphi programmer, but worked enough with VB to tell you al your "problems" with VB are really no issues

      I have disagree with you. While all the problems can be solved (I know; I've solved them all in the past, and more nasty things besides), they are still problems. The fact that they have to be solved just adds complexity to the project and many of your solutions aren't. For example, pushing the window procedure code into another control and using that control in your project helps compartmentalize the problem, but you still need to debug the control, which will still crash when you hit stop. Using third party controls to subclass the window can solve that problem, but now you've got to include that other control and worry about any licensing issues. I'm not saying these are big problems, but they do increase the complexity of the project.

      For Low level COM use, check the book "Advanced Visual Basic 6: Power Techniques for Everyday Programs" for a little hand holding with the normal VB COM check the book "Dan Appleman's Developing COM/ActiveX Components with VB6: A Guide to the Perplexed"

      I don't know what you mean by "low-level com" (maybe manipulating IUnknown et al directly?) but I've had my share of trying to manipulate the COM machinery in VB and it's never pretty. Usually, though, that type of thing is unnecessary. Only under strange circumstances where you need to implement an interface that has a reserved name as a method or a method that doesn't return an HRESULT do you have to worry about that very much (it's been a very long time since I've had to do that in VB, so I don't recall all the tricks anymore). However, I'd hardly use that as an example as to how the problem can be solved. Yes, it can almost always be done, but it just adds so much complexity that it's often not worth it. As you say, VB programmers are cheap. They are cheap for a reason. What's the point of writing code that does all this if none of your coworkers can maintain it?

      With VB (just selecting the WebClass template) you could define dinamic web pages generators using the same object model used for ASP, but much faster and using vba instead of vbscript (WebClass and DHTML class where the main additions to vb6 with respect to vb5, there where incremental additions to Data binding, data source, data consumer, object persistence, DCOM/MTS integration the rest where librarys like ADO, Dictionary and FileSystem Object and dumbed down designers like DataEnviroment or DataReport and a bunch of bad quality wizards)

      I didn't say you couldn't do cool things with VB. Sometimes it is the right tool for the job. VB makes some tedious things (in C++) very easy. However, that doesn't mean there aren't problems.

      VB5 its faster than VB6, but VB6 its not slower than .Net, at least not if you know what you are doing

      I'd argue that, if VB6 is faster than .NET, then you should probably find a better .NET programmer. In my experience, VB6 is slower than even Java (though, admittedly, Java has been getting a lot faster in recent years). You can say I don't know what I'm doing, but I've written a lot of VB code and I've produced some very fast VB code. It's just that if I spend the same amount of time optimizing C++ or .NET code, VB always comes out the loser.

      Some languages like VB dont suport inheritance, but multiples interfaces; and the design of the object model must be developed from a different point of view

      A different point of view? While you do have to keep it in mind, you can't escape the fact that you simply cannot do many things in VB as easily as you can in other languages. You are forced into a certain development model that doesn't respond well to changing requirements. As others have commented, you can crank out new UIs at a

    45. Re:Rethink your approach, perhaps by Anonymous Coward · · Score: 0

      Yes, I use a couple of DLLs for intensive calculations but the GUI and 99% of the code is VB

      And this is why most people despise VB. Not because too many people used DLLs... but because too few did!.

      Anytime I hear something was written in VB I cringe. Because most VB progs slap all the shit in the VB code, and are slow as hell as a result. That, and it is the COBOL of the day -- yup, there are some great COBOL coders! But there sure are a lot of bad ones, too!

    46. Re:Rethink your approach, perhaps by Anonymous Coward · · Score: 0

      I couldn't agree more, with the comments on the pros and cons of VB6. The lack of inheritance is totally unacceptable in a modern language (you can even inherit in C ;).

      I know everyone is suggesting these Microsoft .NET languages but have you ever checked out wxWidgets with Python or C/C++?

      I've just started using wxWidgets for a large cross platform application an i've been very pleasantly surprised, it's free, open source, flexible and really well documented. There is a huge group of users adding new functionality and your project will be in the wonderful world of C++!

      I'm an experienced VB6, C/C++, ASM, Perl (too many to mention) progammer and I always go back to C++ as it has a huge set of libraries that are high level enough that you don't have to worry about details and when you find a situation where you do have to get down to the metal it's possible to open the hood and get to work rather than blindly hacking around. Using C/C++ Microsoft's base GUI API (Win32s) is completely accessable. Your application will run quickly and will have a small memory footprint (if you program sensibly). The hard stuff in C/C++, mainly pointers, references and function pointers are hardly a valid reason to shy away from a very mature language with supporting libraries that a huge number of programmers use.

    47. Re:Rethink your approach, perhaps by Saturn49 · · Score: 1

      Let me add a few more things that should steer you away from VB6, speaking from someone who worked on an EXTREMELY large VB6 application (think 200+ ActiveX dlls) for just over a year:

      There are many BAD things you can do in VB6 that create some really ugly and broken code. Every language has these, but they are very prevaliant in VB6 like:

      variants
      automatic variable declaration (not using option explicit)
      lack of parenthesis around method calls making for very hard to read and sometimes ambiguous code.
      integers are 16 bit, not 32.

      This doesn't even get into the ActiveX/COM hell you can run into, especially across different versions of your software. Single apps work fine, but as soon as you start creating your own controls and modules, expect trouble at the customer site even just other developer's workstations during upgrades. There's some rules you need to follow about breaking compatibility and changing interfaces, not to mention registering the ocxs and dlls.

      So, for the development team of 100+ I was a part of, these issues had been solved and a strict set of guidelines were followed to make things run smoothly. During my first few months working on it, these rules were beaten into me.

      For your team of 10 developers, you're going to constantly be bumping heads against these issues and they will eat up gobs of time until you get them figured out and beaten into your coworkers.

      Most, if not all of these issues have been resolved in the .NET environment. Couple that with the fact VB6 has been EOL'd and there are 1) a bunch of bugs in the built-in GUI components that need to be worked around and 2) few, if any, third party components still being actively developed for it.

    48. Re:Rethink your approach, perhaps by Anonymous Coward · · Score: 0

      Usual type of crap non microsoft programmers use to try to debunk vb6 programmers.

      1. VB6 is productive with the classes the way they are. Never needed any polymorphism.
      2. Windows API. For What?!? In 99% of cases (unless you're REACHING) everything you need is already *in* the enterprise version.
      3. Very difficult to debug? Are you nuts? This is one of the parts of VB that is incredible.
      4. VB is definitely scalable to a reasonable level. Unless the 2000 simultaneous clients at my last gig are lying that the app works.

      In short my assessment of you is that you have briefly played with VB and not used it extensively.

    49. Re:Rethink your approach, perhaps by Anonymous Coward · · Score: 0

      Yes, what I am saying is to create a DIFFERENT interface.

  8. No argument really. by Telastyn · · Score: 4, Insightful

    Modern VB (VB.NET) is pretty full featured and un-crappy. It, like other .NET languages compiles down to MSIL so should behave identically to anything else. The only real arguement is based around that; if say... VB.NET and C# perform identically, why not use C#? It (arguably) has more of a following, (arguably) has a cleaner syntax, and (arguably) has a more java/C-like syntax incase you happen across people with that background. Not terribly compelling in the face of momentum...

    1. Re:No argument really. by grammar+fascist · · Score: 2, Interesting

      The only real arguement is based around that; if say... VB.NET and C# perform identically, why not use C#? It (arguably) has more of a following...

      Actually, I'm fairly sure you can find more VB programmers than C# programmers, and probably will be able to for the forseeable future. The problem is, a significant portion of them aren't real computer scientists, and they'll tend to write crappy stuff.

      I'm not sure that line of attack would work well with the boss, though, who's a VB guy, probably not a computer scientist...

      --
      I got my Linux laptop at System76.
    2. Re:No argument really. by Anonymous+MadCoe · · Score: 1

      I agree, it's quite funny actually to see people respond in all kinds of ways trying to actually make the case against VB, while it's very usable.

    3. Re:No argument really. by Professor_UNIX · · Score: 1

      Since when do you need a computer "scientist" to program a business application? Computer scientists should stick to low-level stuff and leave the programming to the IS majors and code monkeys.

    4. Re:No argument really. by EraserMouseMan · · Score: 1

      Since when do you need a computer "scientist" to program a business application?

      Since you decided that you want to get your money's worth out of the developer you hire. A properly trained professional with advanced experience will write a better product. It will be more maintainable and scalable.

    5. Re:No argument really. by anomalous+cohort · · Score: 1
      you can find more VB programmers than C# programmers

      Not in the Southeast of the USA. If you want to be able to attract experienced and talented developers to your team, then you should choose C# over VB.NET as your development language. We all know that, technically speaking, the language differences are minimal outside of syntax. However, the perception is that VB, in all its forms, is for hobbiests and wannabes. Serious developers want to be taken seriously so they avoid VB.NET

      By the way, if the owner wants the code rewritten in VB6, then he's a fool. No serious developer would be caught dead in that job lest he wake up one day to find himself in the same predicament as the cobolers.

    6. Re:No argument really. by anomalous+cohort · · Score: 1
      A properly trained professional with advanced experience will write a better product.

      Correct! For the same reason why you don't hire a chef to renovate your kitchen, you don't hire an accountant to write your accounting package. The accountant can be interviewed to determine functionality but has no competency in making technical decisions.

    7. Re:No argument really. by Chazmyrr · · Score: 1

      A properly trained professional with advanced experience will write a better product. I agree completely.

      The problem is that not only do you confuse education with traiing and experience, you misunderstand the nature of computer science. Computer scientists learn about things like operating system design, language theory, hardware architecture and artificial intelligence. None of those things are applicable to writing business applications.

      For business applications you're better off hiring someone with an information systems background. They've learned about how computers are used in the real world and have probably done an internship where they've had to work with business applications.

    8. Re:No argument really. by smbarbour · · Score: 1

      Where I work, we use both VB6 and VB.NET (although we do have the full studio for both). VB6 is for quick projects, VB.NET is for heavier-duty projects.

      I'm not sure why anyone would go to C#... Before C# there were basically two MS camps, VB and C++. VB devs move to VB.NET, C++ Devs move to the .NET implementation of C++. From what I've seen of C#, it's essentially the same as VB, but with brackets.

      At the end of the day VB and C# will compile to the same code. Managed C++ will likely compile to that same code as well. Unmanaged C++ is a different story though.

      In practice, VB.NET is not suitable for simple apps (i.e. Small-scale database apps reading and writing a handful of tables), because of the long load times we experience (not to mention that the .NET framework isn't widely deployed and configured throughout the enterprise).

      VB6 may not be supported by Microsoft anymore, but it hasn't outlived its usefulness yet. There are a number of programs that we have that we have looked at porting to VB.NET, but VB.NET doesn't support some of the features that VB6 does.

      VB.NET exposes a lot more of Windows to the developer than VB6 did, but VB.NET closed some doors too. One of my former co-workers was working on converting a project of his own to VB.NET and one of the API calls he needed was not exposed in .NET and was not available. The documentation simply said that with .NET you shouldn't need to call the API.

      Serious developers DO use VB, and any development shops that don't understand that seriously need their heads examined.

    9. Re:No argument really. by anomalous+cohort · · Score: 1

      I hear you. I was speaking not from a technology perspective but from career perspective.

      The U.S. I.T. industry is no longer a place where the average employee can expect to work a single job until retirement. Every job that you work will have a beginning, a middle, and an end. For a smoother experience in life, you should be planning for all three transitions.

      Before you accept an offer of employment, you should ask yourself this. What will my resume look like when I am ready to move on from this job? Will my skillset be marketable? Will I be able to compete with other job seekers at that time?

      If you are taking a VB 6 position, then years down the line when you are ready to move, you will be locked into that position because who would hire a VB 6 developer unless they only need VB 6 development? Over time, there will be fewer and fewer VB 6 coding opportunities.

      That is why staying with VB 6 is a bad idea. Not because of technology but because it will be hard to staff a VB 6 position. You will be fighting Microsoft's own marketing engine which is not a good place to be.

    10. Re:No argument really. by mrchaotica · · Score: 1
      Since when do you need a computer "scientist" to program a business application?
      Since forever, because things like proper abstraction, good design, and order of magnitude of algorithms are still important even in business applications.

      For example, order of magnitude could mean the difference between your web application supporting 10,000 simultaneous users or only 10.
      --

      "[Regarding the 'cloud,'] ownership was what made America different than Russia." -- Woz

    11. Re:No argument really. by Anonymous Coward · · Score: 0
      (arguably) has a more java/C-like syntax

      Not much of an argument needed there... I'd love to see anyone try and claim that VB has a more java/C-like syntax than C#
    12. Re:No argument really. by Anonymous Coward · · Score: 0

      OK This is something I can reply to without foaming at the mouth because it has two points that are valid.

      1. C# arguably has more of a following.
      My observations lead me to believe that more shops are adopting C#.
      The reasons are irrelevant. The facts speak for themselves.
      2. C# has clearn syntax.
      If you are a java programmer, a C programmer or a C++ programmer.
      If you came up using VB it's not cleaner in any way. Less keystrokes maybe.
      3. C# and VB.Net perform identically. Why not use C#?
      Well the same argument can be given to why not use vb.net

      The most likely direction is that more and more shops will go towards C#. One compelling argument is that it opens up the market to being able to hire java programmers too because they ought to be able to pick things up easily.

      What I've noticed is that the java guys spend so much time whining about microsoft's implementation of various features that you'd have been better off going with vb.net

      But in the end it doesn't matter. I think that C# is going to be the leader in the .net world. Lamentably in my opinion because I find many of the guys who work with C# have their heads up their rear-ends.

    13. Re:No argument really. by Anonymous Coward · · Score: 0

      I onced was charged with maintaining some VB.NET code. The biggest complaint I have is that the default calling convention is call by name rather than call by value. Call by name should be used as rarely as possible since it makes it so much harder to reason about (aka refactor, debug, modify) code locally without looking through the entire call chain to know if an object is replaced or not at a particular call-site.

      If you enforce ByValue for 99% of your function parameters, and maintain other practical coding standards (like avoiding 900 line procedures and rampant code duplication like the project had) then VB.NET although having an offensive (to me) syntax, ends up being about as capable as Java or C#.

  9. Depends on a lot of factors by JanusFury · · Score: 2, Informative

    VB6, with all its flaws, is still hard to compete with when you want a native Win32 app that has a lot of UI and doesn't take a long time to build. If you use it properly, it'll usually do what you want without having any major issues.

    On the other hand, it has trouble coping with large complex projects (One of my larger projects regularly crashes the VB IDE when I load it, for no particular reason, and sometimes the VB compiler spits out mysterious build failure errors for no particular reason), and it lacks a lot of important features you get out of better languages and tools. If performance is a concern, you'll also find that it has trouble scaling there (though it's at least tolerable, and if you're careful you can get pretty efficient code out of it). There are also some data models and algorithms that simply don't work well in VB due to the overhead and inefficiency of using COM IDispatch and reference counting for every object.

    If you need to make a transition from VB, you might be able to manage to convert it over to VB.net, but I've never been able to do that successfully. I personally use C# for any project these days that I would have used VB6 for in the past. And if you don't really need to do much in the way of UI, C++ is a pretty solid option for almost anything else, even if it's tough for some VB coders to grasp.

    One middle-ground option would be to rewrite chunks of the application using C++ or C# and wrap them in COM so that you can drop them into the existing VB application. I had pretty good success doing this with performance-critical parts of a few of my larger VB applications and didn't lose any of the benefits of doing my UI in VB in the process.

    --
    using namespace slashdot;
    troll::post();
    1. Re:Depends on a lot of factors by killjoe · · Score: 1

      VB is great for application you don't have to maintain. Especially as the applications get larger. If you need to maintain an application five years down the road then use something with inheritance for gods sake.

      Yes I hear things like inheritance real important these days in a language.

      All kidding aside, if you boss insists on VB then quit. You don't want to waste your career building expertise in a dead language. Go get a job someplace where you can do some Java coding. Trust me maintaining VB apps is like sticking needles in your eyes. I have been there, done that.

      --
      evil is as evil does
    2. Re:Depends on a lot of factors by shutdown+-p+now · · Score: 3, Insightful
      VB6, with all its flaws, is still hard to compete with when you want a native Win32 app that has a lot of UI and doesn't take a long time to build.
      Er... Delphi?
    3. Re:Depends on a lot of factors by Duhavid · · Score: 1

      I agree with you summation on VB6, mostly. I worked on a largish project in
      VB5 / VB6 a while ago, and we had a few problems with the IDE crashing, but
      my unhappyness with it was that we would get all kinds of bug reports from
      the field ( NZ and Aus ) that we could never figure out, unless something went
      wrong in the runtime.

      --
      emt 377 emt 4
    4. Re:Depends on a lot of factors by DrLungoon · · Score: 1

      Amen, brotha!!!

      Can I get a witness???????

      --
      Some people are like Slinkies - Not good for anything, but you can't help smiling when you push 'em down the stairs.
    5. Re:Depends on a lot of factors by AaronLawrence · · Score: 1

      Delphi is like the good parts of VB with some of the good parts of C++.
      Talk about products hamstrung by marketing...

      --
      For every expert, there is an equal and opposite expert. - Arthur C. Clarke
    6. Re:Depends on a lot of factors by Windowser · · Score: 1

      Not to be picky, but you can't compare VB to Delphi

      In Delphi you can use pointers.

      Delphi is object-oriented with inheritence, etc

      VB is not.

      Basic was shitty when I started coding in 1982 and is still is today. Period.

      --
      Avoid the MS tax, always buy I.B.M. PC's (I Built-it Myself)
    7. Re:Depends on a lot of factors by shutdown+-p+now · · Score: 1

      Despite all the differences, Delphi was designed and marketed to fit largely the same niche as VB - Win32 RAD - and quite successfully so. Which is what I pointed out in my reply to GP.

    8. Re:Depends on a lot of factors by Linknoid · · Score: 1
      My job is writing Delphi. I'd much rather use it than Visual Basic (although I'm a C++ programmer at heart), and I'm suprised how much you can actually do with it and how much support there is. It's also a .NET langauge, so it's possible to have certain code written in Delphi for Win32 compile directly in .NET. The conversion isn't perfect, but it's probably a lot smaller difference than between VB6 and VB.NET.

      My biggest complaint about Delphi is the code editor part of the IDE. It tends to get confused easily and degrade over time and has to be restarted sometimes. I guess it's the on-the-fly compiling that makes the editor flakey, and it's the on-the-fly compiling that the must-have features (the features that are the reasons I use it most of the time instead of an external editor) are dependant on.

      But the langauge itself is straight-forward, not completely C-like syntax but still readable. We have many megabytes of code written in it, and it's quite maintainable. Also, all the graphical layout information is kept in very clear text resource (.dfm) files, which makes it great for source control and manual editing. In fact, all but one or two files it uses are plain text and can easily be edited outside of Delphi.

    9. Re:Depends on a lot of factors by Eli+Gottlieb · · Score: 1

      You got a witness!

    10. Re:Depends on a lot of factors by Anonymous Coward · · Score: 0

      You are arshole. Period.

  10. what? by larry+bagina · · Score: 5, Insightful

    You were hired to rewrite some VB software, but you're not familiar with VB? The problem isn't VB, it's you.

    --
    Do you even lift?

    These aren't the 'roids you're looking for.

    1. Re:what? by Anonymous Coward · · Score: 2, Insightful

      Yep, I agree, even if you do manage to convince your boss to switch languages, ***any*** problem you have (and with any development of course you will have problems), it will come back to, "well you're the one who wanted it in language X instead of VB".

      People need to make descisions like it should be done in a marriage, you make it together and both take responsibility for it (no blame game). Unfortunately, unless your boss has well above average character, you'll just hate choosing another language.

      Get another job.

    2. Re:what? by babbling · · Score: 1

      Actually, the problem is whoever hires people who are qualified for task A to do task B.

    3. Re:what? by Kadin2048 · · Score: 1

      That's not entirely fair. On some big projects -- granted, this doesn't sound like one -- that have been built with extensive documentation, it can be possible to rebuild portions of them in a different language than other parts, so that you could easily bring in new programmers unfamiliar with the old language to "rewrite" something. They might never look at the old source code, ever.

      The most striking example of this I ever saw was in a porting effort to take a big enterprise application from COBOL to Java. Getting Java people is easy, getting COBOL people (who were familiar with the application) was hard; so the COBOL people wrote the specs and the Java people built the modules from them, doing design-by-contract (in theory). I don't think they even had access to the original code. (I don't think that a "clean room" approach was really being pursued, but that's basically how it seemed to work.)

      This guy's project doesn't sound like it's quite as big as that, but I just thought I'd put it out there that it's not totally unheard of for a programmer unfamiliar in a particular language to be hired on to a project written in that language, if the goal is to move it to something else. Now, why you'd hire someone to rewrite a VB project, who's not fluent in VB, if VB is still the target ... that's a little bizarre.

      --
      "Ladies and gentlemen, my killbot features Lotus Notes and a machine gun. It is the finest available."
    4. Re:what? by Keebler71 · · Score: 1
      Morevoer, how about this gem:

      If you are going to argue against _________, it is best if you do so after you become familiar with it so that you can argue fairly on its merits and deficiencies.

      This is clearly a troll aimed at taking away one of our (Slashdot's) most charished traditions!

      --
      "It takes considerable knowledge just to realize the extent of your own ignorance." - Thomas Sowell
  11. My biggest gripe... by jginspace · · Score: 1

    ... the scroll wheel won't work in the IDE.

    1. Re:My biggest gripe... by plover · · Score: 4, Informative
      ... the scroll wheel won't work in the IDE.

      I used to think so, too.

      Try this.

      Who's your buddy now? :-)

      --
      John
    2. Re:My biggest gripe... by giantmike · · Score: 1

      There is a patch for that: http://support.microsoft.com/?id=837910

    3. Re:My biggest gripe... by jginspace · · Score: 1
      "Who's your buddy now? :-)

      If I could mod you up or transfer all my karma points to you I would. Thanks.

    4. Re:My biggest gripe... by Anonymous Coward · · Score: 0

      you are! thankyou muchly!

    5. Re:My biggest gripe... by Anonymous Coward · · Score: 0

      Dude, thanks!

    6. Re:My biggest gripe... by SloppyElvis · · Score: 1

      I sure could've used that comment 5 years ago. It would've easily been the most useful information I've ever seen on Slashdot.

    7. Re:My biggest gripe... by mdielmann · · Score: 2, Funny

      Wow, that's impressive. I've never seen so many people on slashdot admit they program in VB, at one time. Might as well add my name to the list. I'm not embarrassed - it's fed my kids quite nicely.

      --
      Sure I'm paranoid, but am I paranoid enough?
    8. Re:My biggest gripe... by plover · · Score: 1
      Me too. VB paid the bills around here from about 1994 to 2000. (That and a whole bunch of C++ hidden behind a COM interface to do the real work.)

      I still use VB6 frequently to create test harnesses for COM objects. It's faster to load than yet-another-instance of VS 2005, and I can't deny the "comfort" of an interface that I lived in for so many years. And I really like the object browser that came with VB6; it's much better than OLEVIEW or the mostly useless ActiveX test container that came with VS 6.

      --
      John
    9. Re:My biggest gripe... by Grakun · · Score: 1

      Who's your buddy now? :-) Awesome! I wish I would have known about this earlier.

  12. Re:Umm by Anonymous Coward · · Score: 0

    Cross platform is a huge myth when it comes to .net. Your extremely lucky if you can get any non trivial app to work on both .net and mono. VB.net does also not compile to the same code, some on the mono list are considering dropping any claims about suporting vb at all.

  13. Wha? by 19thNervousBreakdown · · Score: 2, Insightful

    OK, just to get this out of the way, the owner of the company hired you to re-write his program in Visual Basic, and you don't know Visual Basic? I mean, it's not like he hired you to simply re-write it in any language, he wanted you to re-write it in VB. And he obviously knows VB since he wrote the software in the first place. So, uh, WTF?

    First, I have to assume you mean VB 6, since VB.net bears more resemblance to C# than anything else. If you're talking VB.net, don't worry about it. The syntax might be annoying, but it's a decent language. Anyway, as for the merits of VB, well, it's appearantly good enough for a large project, since you're looking at one right now that was good enough to start a company that can support 5-9 people. This company's appearantly been around a while; I hope nobody's writing new stuff in VB. So don't worry about whether it's good enough or not, it is.

    The issue I would have with it is, it's being killed by Microsoft. There's nothing you can do about it. It may not work on new versions of Windows. Old versions of Windows won't be supported anymore. You'll run into security holes that won't be fixed, or try to interoperate with software that needs a newer version of Windows. Basically, you're going to get screwed, it's just a question of when. If your company has the time and money to do a rewrite, do it in a language that's going to be around for a while.

    Normally of course, I'd call you nuts for doing a complete rewrite unless it's a pile of crap that's falling apart at the seams and the basic architecture is shit, but it's written in VB. Which has its merits, and maybe I'm wrong here, but I consider it more of a prototyping language than anything else. Just don't rewrite it in VB 6. Seriously, quit first, it won't do shit for your resume to have VB 6 on there, and it'll just cost the company a crapload of money for no good reason.

    --
    <xml><I><am><so><damn>Web 2.0</damn></so></am></I></xml>
    1. Re:Wha? by Anonymous Coward · · Score: 0

      Whoopdie-freekin'-doo. We hired a Java developer to write an application in C#. In other news, Satanists have begun performing exorcisms...

    2. Re:Wha? by KarmaMB84 · · Score: 1

      I jump around from C to C++ to Managed C++ to C# to Java to Ada to PL/SQL all the time and I find that my skills work just fine in whatever language I'm typing in. You just adjust to the syntax/API and the "best practices" for the language and go.

    3. Re:Wha? by DaveV1.0 · · Score: 1
      Normally of course, I'd call you nuts for doing a complete rewrite unless it's a pile of crap that's falling apart at the seams and the basic architecture is shit, but it's written in VB


      What about if they are moving from VB6 to VB.NET? That will require a substantive rewrite.
      --
      There is no "-1 offended" or "-1 you don't agree with me" mod options for a reason.
  14. Basically. . . by NetRAVEN5000 · · Score: 1

    Basically, if it's a huge app, you don't want to use VB for the sake of speed and stability. VB is slower than many languages since it's interpreted - which may not matter for small apps but for big ones it often does. And it seems to me that it hogs more resources too.

    1. Re:Basically. . . by plover · · Score: 1

      Untrue. VB6 compiles into native x86 executables by default. The option is there to compile to P-code (the old VB4 stuff) but that hasn't been a requirement for at least eight years and probably more. And it's not on unless you explicitly choose to use it. I have never found a reason to do so.

      --
      John
    2. Re:Basically. . . by dtfinch · · Score: 1

      VB6 does real compilation, producing executables that are probably 1/3 as fast as C++, which isn't bad.

      On the other hand, VB6 seems to get sluggish when you have more than 100,000 or so strings in memory. Nearing that boundary, I've gotten performance increases by storing strings in a file and just remembering their addresses, even when there's plenty of free ram, which is crazy.

    3. Re:Basically. . . by NetRAVEN5000 · · Score: 1

      VB doesn't do real compilation. It may seem that way, but that's not what it's doing. It simply has all the instructions for the interpreter in the .exe file. Without the interpreter .dll you can't run the program.

    4. Re:Basically. . . by NetRAVEN5000 · · Score: 1

      Nope. True, VB produces an .exe file, but you can't run it without the VB interpreter.

    5. Re:Basically. . . by CharlesEGrant · · Score: 1

      This was true for the older versions of VB 4 and earlier, but VB 5 can generate native code. Yes, you still need the run time library, just as most applications writen in C need a runtime library like libgc or msvcrt. The fly in the ointment is that Microsoft doesn't provide a static version of the VB runtime library.

    6. Re:Basically. . . by plover · · Score: 1
      Nope. True, VB produces an .exe file, but you can't run it without the VB interpreter.

      That's sort-of technically correct, but not right. You don't need the interpreter, but you do need the VB6 runtime libraries. And they're both located in the same dynamically loaded module, msvbvm60.dll. While it still contains the "Visual Basic Virtual Machine" required to run the p-code, if you natively compile the program it simply is used as a container of the resources VB programs require. The p-code executor is not used.

      The knowledge base has this article which doesn't describe it very well, but kind of hints at how it works.

      --
      John
    7. Re:Basically. . . by dtfinch · · Score: 1

      Starting with VB5, VB performed real native compilation, but still required a runtime.

    8. Re:Basically. . . by Anonymous Coward · · Score: 0

      Still wrong. That's not the interpreter, that's the runtime library. Or are you going to claim that C and C++ are also interpreted? (You know, libc or msvcrt or whatever you prefer to call the C runtime...)

      AFAIK VB6 uses a backend from the same heritage as the VC compilers. Possibly even the same one as in VC6.

    9. Re:Basically. . . by KarmaMB84 · · Score: 1

      You mean like msvcrt.dll which has a version for just about every visual c release ever?

    10. Re:Basically. . . by NetRAVEN5000 · · Score: 1

      IIRC msvcrt.dll isn't required to run the program, only to compile it.

    11. Re:Basically. . . by CharlesEGrant · · Score: 1

      No, msvcrt.dll is the dynamically linked version of the C runtime library. If you used dynamic linking it has to be present at run time. If you use static linking it isn't used at compile time or at runtime.

      Here is the deal: many languages, including C and Visual Basic, depend on a library of commonly used subroutines. Some of the subroutines you are probably aware of, say malloc or strncpy. Others work behind the scenes to set up the heap and such. You can link to this library statically, in which case the code for those subroutines is pulled into your executable. Or, you can link to the library dynamically, in which case only placeholders go into your executable. Then, when your program is run, it loads the dynamic version of the library into memory and fixes up the stubs. The advantage of this is that all dynamically linked program can share a single copy of the library in memory. The disadvantage is that your program depends on the user having a copy of the dynamic library.

      All of the major C compilers provide both static and dynamic versions of the C runtime. In the GNU world the For some reason Microsoft only provides a dynamic version of the VB runtime. The VB runtime also contains the code for the p-code interpreter but this isn't called when native-code generation is turned on.

    12. Re:Basically. . . by CharlesEGrant · · Score: 1
      In the GNU world the

      Sorry, that should have been:

      In the GNU world the static C runtime library is libc.a and the dynamic (or shared) version is libc.so.

    13. Re:Basically. . . by ArtStone · · Score: 1

      Some of this confusion over compilation is due to different versions of Visual Basic.

      Cheap people like me bought Visual Basic 6.0 Learning Edition for $99 - it does -not- create compiled native object code - it "compiles" to p-code which is interpreted at run time. The "Professional" and "Enterprise" editions compile to native code.

      Regarding how many VB fans are here, just imagine what a shock it would to slashdot readers to also know how many people in the "real world" still make a good living writing COBOL - while they spend their days here whining about not being able to find a job that pays above minimum wage using Linux and writing the world's most elaborate Perl scripts...

      --
      Final 2006 "Proof of Global Warming" US Hurricane Count -> 0
  15. Why the hell did he hire you? by SlappyBastard · · Score: 1
    I'm not saying that I've never taken a job just because the job was there. I have.

    But, in fairness, if you have serious doubts about the platform the owner insists upon using, then this isn't the place for you to be working.

    You're either onboard, or you owe it to your boss to leave the company.

    --
    I scream. You scream. I assume that means we're both acquainted with the problem. We proceed.
    1. Re:Why the hell did he hire you? by WindBourne · · Score: 1
      You're either onboard, or you owe it to your boss to leave the company.

      Or to simply educate the office. Quite honestly, a lot of small companies get started by someboyd with an idea but no real idea of how to do things. They slowly build it up, but have no clue as to what else there is outside of their little world. This engineer can actually help them move it from a small office with a small product to a growing thriving product that can be enhanced easily (bigger market share, faster changes with lower costs).

      BTW, I have worked at plenty of places where one person can with the correct argument can move a company forward. For example, back in the 80's, I did PL/1 on a mainframe. But nobody there did pointers, so many of our apps were slow. One person came in and spotted one app that could be changed easily and with a slight tweak, he changed it from running in an hour, to under 5 minutes. After that, we used pointers (sparingly, but still used).

      One good way to convince the owner is to undertake converting one of the most difficult parts and showing the improvements. Of course, that will involve som education if they do not know the language (I am assuming a step up to either java, C++, or a scripting language).

      --
      I prefer the "u" in honour as it seems to be missing these days.
  16. 3 reasons from personal experience by cryfreedomlove · · Score: 1, Insightful

    1. VB is not portable. You'll be supporting windows based servers forever if you increase your investment in VB. The company I work for switched from VB to Java and we've been able to move our java server app to 3 different OS/HW architectures with zero code changes. 2. You cannot get insight into what VB is doing. Where is the server spending time? Can you see a thread dump? How much time is lost to collecting garbage. VB is a black box. That's death for debugging a large server system. 3. You cannot attract great new engineers to work on a VB application. Great engineers will avoid working on VB apps and you'll be stuck hiring low grade talent. That will perpetuate a downward spiral where any good people will leave to avoid VB and the bozos that like VB.

    1. Re:3 reasons from personal experience by Tablizer · · Score: 1

      VB is not portable. You'll be supporting windows based servers forever if you increase your investment in VB. The company I work for switched from VB to Java and we've been able to move our java server app to 3 different OS/HW architectures with zero code changes.

      Yes, but server OS is a relatively minor issue. You are essentially chosing to be married to Sun instead of MS. If you really want to be free, go with Php or Ruby or something.

    2. Re:3 reasons from personal experience by Anonymous Coward · · Score: 0

      The company I work for switched from VB to Java and we've been able to move our java server app to 3 different OS/HW architectures with zero code changes.

      What does the client software have to do with the server side? You could easily have a VB client talking to a webapp sending it XML requests. That gives you the best of both worlds: java on the server side and a nice (or quick to program) GUI on the client.

    3. Re:3 reasons from personal experience by epee1221 · · Score: 1

      You're trying to draw attention away from the portability issue, which what the OP brought up in the first place. If I write code in Java, I can run it on a non-Solaris box. If I write code in VB, I can't run it on a non-Windows box.

      --
      "The use-mention distinction" is not "enforced here."
    4. Re:3 reasons from personal experience by Anonymous Coward · · Score: 0

      "If you really want to be free, go with Php or Ruby or something."

      With these you are choosing to be married to whether or not the core developers for these languages stay committed and there isn't political fallout that causes the platform to stagnate or fork.

      Basically, the overall long-term risk is about the same with MS, or Sun, or PHP/Ruby. Of course, PHP/Ruby are already open source, so as long as you keep a system that will compile it (right version of Linux/GCC/etc.) it'll work as-is for as long as your hardware stays going. Of course, the same is true for a given installation of Java or .NET.

      Granted, there are a number of other good compelling reasons to go with open source.

    5. Re:3 reasons from personal experience by NutscrapeSucks · · Score: 3, Informative

      1. VB is not portable.

      That's actually the main feature of Classic VB -- that it's really just a user-friendly wrapper around Windows COM. If you want MS Office automation or anything that ties in closely with other Windows apps, VB6 is still a very good choice.

      Although I agree strongly with your assessment of VB server apps.

      --
      Whenever I hear the word 'Innovation', I reach for my pistol.
    6. Re:3 reasons from personal experience by Tablizer · · Score: 1

      I don't fully agree. Having the source code available gives you more legacy-handling options than having just the binary.

    7. Re:3 reasons from personal experience by misleb · · Score: 0, Troll

      You're an amateur website developer, aren't you?

      -matthew

      --
      "THERE IS NO JUSTICE, THERE IS ONLY ME." -Death
    8. Re:3 reasons from personal experience by Nataku564 · · Score: 2, Insightful

      Why do people keep dismissing C++? Its free, open source, works on all platforms, and will arguably be able to hang around longer than just about any other language out there. Sure, if you do decide to move platforms you may have to do some porting, but compare that to the constant upgrades ($$$) of an Microsoft technology, and C++ will most likely come out ahead.

    9. Re:3 reasons from personal experience by ScrewMaster · · Score: 3, Insightful

      ... and the bozos that like VB.

      In other words, you're a Java bigot that looks down upon those that don't agree with your choice of tools. It used to be C bigots that irritated me the most (the "if you can't do it in C it isn't worth doing" mindset), but now it seems that most of them have moved to C# and have finally realized the benefits of a decent GUI development system. A friend of mine once put it this way: "Welcome to VB you pompous assholes." VB6 and VB.Net have their place, and calling people that use them bozos won't win you any points (although you'll probably garner some karma from like-minded mods.) But the biggest argument to me isn't that VB6 is a black box (from an empirical standpoint it's about as thoroughly understood as it's possible for a black box to be, and .Net isn't much more open), but that VB6 has been end-of-lifed. Obviously, it's not wise to make a significant investment in new development using an unsupported tool chain. Still ... at least it's no longer a moving target, and in spite of your rhetoric to the contrary there's still a large base of established VB coding talent. Much of it is migrating to .Net or Java, true, but there's a shitload of VB6 code out there and plenty of companies willing to shell out good money to maintain and develop with it. Purists such as yourself may not care for that, but there it is. Not everyone needs to work on the bleeding edge, and not everyone that doesn't is an idiot.

      --
      The higher the technology, the sharper that two-edged sword.
    10. Re:3 reasons from personal experience by Jay+Carlson · · Score: 4, Insightful

      Why do people keep dismissing C++?

      Because it sucks .

      It is a language designed so that a genius can write libraries designed for the merely smart to use. How many geniuses do you have in your workgroup? Me, I'm lucky. But I'd really rather they work on real design than trying to remember how copy constructors interact with template instantiation.

      I don't know C++, and I know that I don't know it. Somewhere around here I have a list of interview questions for people who put C++ on their resume. They're mostly from me reading C++ code and going "what the heck does that imply?"

      Unsurprisingly, most candidates fail that section of the interview. And they fail even trivial stuff like "what's a virtual pointer all about?" They may be aces at writing O(n^3) algorithms with CString, but they have no clue what's going on under the surface.

      To be fair, I do know some true C++ experts. Most of them would rather be writing Haskell.

    11. Re:3 reasons from personal experience by Anonymous Coward · · Score: 0

      Please, .NET and Visual Studio are only remotely like the VB6 IDE. The language is in no way similar (aside from some ugly VB style syntax and the Microsoft.VisualBasic namespace in VB.NET). A decent forms designer doesn't make something VB.

      Then again, they did put the Data objects on the Forms designer - I don't know who in their right mind would use say a SqlAdapter or similar on a Form, but I've seen it done. It was horrible. Most of the .NET projects I've encountered that really should be scrapped and started again came from VB6 developers moving to .NET and making a fool of themselves, trying to treat it like it was VB6.

      I'd rather be called a pompous asshole than ever go anywhere near projects that result from the VB6 style of development again. I never encountered even _one_ VB project that was remotely well written. I've waded through enough crap coming from those developers to last me for quite a while.

    12. Re:3 reasons from personal experience by Anonymous Coward · · Score: 0

      Hehe, are you talking directly to the original poster?!? scnr *g*

    13. Re:3 reasons from personal experience by Fnkmaster · · Score: 1

      I wouldn't go so far as to say it sucks, but you basically got the essence of it. There are too many damned libraries that are just joyous combinations of way-too-many C++ features. For some reason people seem to feel like they can only prove what badass programmers they are by using all the damned features in C++.

      I don't want the people working for me spending all day figuring out what some other person who works for me is trying to do with their code. That's why Java and C# are nice for big, many-person development projects. Don't get me wrong, sometimes Java can be frustrating because of missing features (1.5 is far less so than earlier versions though), but I can read other peoples code remarkably fast and I just can't do the same with a decent amount of C++ code out there.

      C++ is fine as long as you treat it as object oriented C and make sparing use of the nasty constructs possible with the language. Otherwise it becomes completely unmanageable very fast.

    14. Re:3 reasons from personal experience by Anonymous Coward · · Score: 0

      In other words, you're a VB/VB.Net bigot that looks down upon those that don't agree with your choice of tools.

      Bias can go the other way, remember that.

    15. Re:3 reasons from personal experience by scsirob · · Score: 1

      The submitter has a different problem. If his boss hired him to do a rewrite in VB and he's not familiar enough with VB to make these claims himself, then he should not have been hired for that position in the first place. Time for him to move on.

      --
      To Terminate, or not to Terminate, that's the question - SCSIROB
    16. Re:3 reasons from personal experience by shutdown+-p+now · · Score: 1

      If you go for "pure C++", by which I mean STL, Boost, and libraries with similar philosophy, then your assessment is correct. But frameworks such as Qt, for example, offer a much more Java-like experience, while still giving you access to those genius-written C++ libs if you ever happen to need them.

    17. Re:3 reasons from personal experience by oliderid · · Score: 2, Insightful

      I totally agree with that.

      I work with Perl, Java, C# regularly. A crappy coder can use C, C++, JAVA or whatever , he will still produce crappy code. I use these languages because I'm more familiar with C related languages.

      Assuming that the guy is working on VB .NET, the end result will be just like C# .NET.

      Instead of wasting your time on syntax matter, better to focus on the application architecture.

      I'm sure that half of the negative comment came from the simple reason that VB means virtual "BASIC". Most of them still remember their early experiences on their 80's microcomputers and consider this family of languages as toys.

      Concerning the original question:
      - His boss knows VB
      - He knows VB

      An application has been already released and if the boss was able to hire him, it means also that this application has already convinced several customers.
      Problems: using VB isn't "cool". The guy doesn't want to tell to his friend that he uses VB at work.

      If you choose another language:
      - Make sure your boss (the other coder I guess) knows it.
      - Find new friends (IE less stupid).
      - Find another job.

    18. Re:3 reasons from personal experience by Feneric · · Score: 1

      In other words, you're a Java bigot that looks down upon those that don't agree with your choice of tools. It used to be C bigots that irritated me the most

      That's just as messed-up a statement as the one you were responding to. VB6 is a single-sourced language that has actually been end-of-lifed. There are many software professionals who won't consider any single-sourced language as more than a toy language. Certainly any language that can be end-of-lifed by the single action of a single company should never be relied upon for anything serious.

      While it's true that VB.net has not yet been end-of-lifed, how long would you seriously want to bet your life on its support? You know that some day it's going to go away, too, and there will be some point that its existing development tools start to behave a little erratically when used alongside newer MS products.

      The fact that is completely non-portable is a huge argument against it, but I believe it pales before the whole single-sourced issue. For some products, it's okay to build with tools that may only be supported for five years or some other undetermined amount of time. For other products, it makes sense to try and find build tools that are supported by multiple vendors.

      It's not just "Java bigots"; it's anyone who doesn't want to deal with vendor lock-in.

    19. Re:3 reasons from personal experience by fritsd · · Score: 1
      I don't know C++, and I know that I don't know it.

      It's nice to read that I'm not the only programmer who is daunted by C++ :-)

      Thanks!

      a Fortran -> C -> Java programmer

      --
      To be, or not to be: isn't that quite logical, Slashdot Beta?
    20. Re:3 reasons from personal experience by Kirth · · Score: 1

      It used to be C bigots that irritated me the most (the "if you can't do it in C it isn't worth doing" mindset), but now it seems that most of them have moved to C# and have finally realized the benefits of a decent GUI development system.

      I really like the benefits of an IDE; but I still don't program any screwed up version of C with non-alnums attached to its name; especially not that C-Octothorpe-thingie from Microsoft.

      --
      "The more prohibitions there are, The poorer the people will be" -- Lao Tse
    21. Re:3 reasons from personal experience by Anonymous Coward · · Score: 0

      They may be aces at writing O(n^3) algorithms with CString, but they have no clue what's going on under the surface.

      To be fair, most people looking for programming jobs couldn't code their way out of a wet parking lot in any language. Asking them to write good C++ code is like asking a rat to operate a fork lift.

      To be fair, I do know some true C++ experts. Most of them would rather be writing Haskell.

      Damn straight.

    22. Re:3 reasons from personal experience by Anonymous Coward · · Score: 0

      1. VB is not portable.

      Yes, it is... you can port it from a Windows box to another.

    23. Re:3 reasons from personal experience by TheRealBurKaZoiD · · Score: 1

      you arrogant pissant. it's low-level api programmers like you stuck in a windowless closet somewhere that completely missed the paradigm shift that happened in programming long ago. business programmers have to be as productive as possible in order to meet deadlines and generate revenue. VB and it's kin help them be productive and meet that goal. it's business analysts/programmers that drive innovation out of the inherent need to be as productive as possible, and keep the market place moving, so that you can stay in your closet writing low-level plumbing, and surfing slashdot. the people who own businesses and run companies that produce software products don't CARE about what you're talking about, that's why you are tolerated in all of your arrogant nerdy glory.

      stay in your closet and argue about languages, and continue creating the components that support business developers, but it would serve you well to remember this: it doesn't matter how technically correct you are if you're not the boss.

    24. Re:3 reasons from personal experience by Anonymous Coward · · Score: 0

      Isn't Java single-sourced?

    25. Re:3 reasons from personal experience by P3NIS_CLEAVER · · Score: 1

      Automation of office really does suck in .net.

      --
      Please sign petition to restore sanity to our banking system!!!

      http://financialpetition.org/
    26. Re:3 reasons from personal experience by Anonymous Coward · · Score: 0

      Nope, there is more than one JVM and JDK... if you're fed up with Sun you can go Kaffe and GNU...

    27. Re:3 reasons from personal experience by Anonymous Coward · · Score: 0

      I love pointing out to Java zealots that they now have VB language features in their language by way of the for/each block. Java put it in because of C#, and C# put it in because of VB....

      They HATE that....but it's true...

    28. Re:3 reasons from personal experience by Anonymous Coward · · Score: 0

      Foreach style looping isn't a VB specific thing, and to my knowledge it did not originate in VB. Regardless of origin, does having a similar (syntactically different, and implemented quite differently) feature in the syntax of Java make it suddenly as though they are programming in VB, with all the associated dumbing down of programming?

    29. Re:3 reasons from personal experience by Anonymous Coward · · Score: 0

      Prior to VB.NET, VB _is_ a toy language. It barely supports anything required to make more than simple business applications.

      VB.NET of course is a much better situation, and a much more capable language, but because of this a lot of VB developers seem to shoot themselves in the foot when migrating, or make things noone but a fellow ex-VB6 developer would want to touch.

      I personally would quit the job, but then again I wouldn't have taken it in the first place upon seeing classic VB in the job description.

    30. Re:3 reasons from personal experience by ScrewMaster · · Score: 1

      In other words, you're a VB/VB.Net bigot that looks down upon those that don't agree with your choice of tools.

      Nope, you got that wrong, my friend. I've had twenty-five years in this business and I've lost track of how many applications and languages I've dealt with, from assembler to VB. Consequently I'm not bigoted in any sense of the word. I'm simply irritated by presumptuous individuals that assume their own personal judgment and choices are infallible, and are applicable to all situations. Once you learn anything about computing technology you start to understand how big a pasture it really is, and how little you actually know.

      The reality of the programming world is that we don't all get to be research scientists, working in a laboratory setting doing whatever it is that takes our fancy. We might prefer to use the language or development environment with which we are the most comfortable, but in most cases the job dictates the choice of language, not the other way around. At least it does if the programmer is more than a one-trick pony. It's not funny how many developers learn a language and manage to justify using it for everything under the Sun.

      Unfortunately, it is all too common for developers to look down upon those who work in what they might consider a "lesser" language ... bias, as you say. Possibly this has something to do with penis size but I don't have any hard figures. But it's important to remember that those other tools were created for a reason, and the people that use them are getting a job done, and frankly I'd rather be a well-paid VB hacker than a jobless purist. But after all this time, I don't have any ego invested in any particular way of doing things ... if anything, I'm more open to new ideas now than I was decades ago. Computers are fun.

      Put it this way, if you're a software developer, and you're afraid to learn something new ... you're in the wrong business. Ditto if you have unreasoning feelings of superiority because you use language X: get over yourself.

      --
      The higher the technology, the sharper that two-edged sword.
    31. Re:3 reasons from personal experience by BattleTroll · · Score: 2, Insightful

      "Unsurprisingly, most candidates fail that section of the interview. And they fail even trivial stuff like 'what's a virtual pointer all about?' They may be aces at writing O(n^3) algorithms with CString, but they have no clue what's going on under the surface."

      Of course they fail that portion of your interview questions - 'virtual pointers' don't exist. Virtual methods exist, pure virtual methods exist, pointers to virtual methods exist, but there's no such thing as a 'virtual pointer'.

      'CString' is a Windows library. It's not part of the C++ standard. Standard C++ is pretty well self-contained. Don't confuse additional libraries with the language itself.

      Not knowing the language is the first reason you shouldn't be interviewing candidates. That last thing I need is a new "C++" programmer who wants to write output to System.err. Maybe you should refer C++ interviewees to someone who actually knows something about the language?

    32. Re:3 reasons from personal experience by Anonymous Coward · · Score: 0

      There's NO dumbing down of programming.

      What there is, is the ability to code WITHOUT using OO.

      That's it.

      So you're either an OO purist and your attitude is "it must have oo or it's not a language" or you recognize that productivity vs mathematical elegance is a valid point too.

  17. Well... by Anonymous Coward · · Score: 0

    For the sake of discussion however, what tasks would VisualBasic not be suited for?

    Nuclear power stations.

    1. Re:Well... by ScrewMaster · · Score: 1

      Space shuttle guidance systems.

      --
      The higher the technology, the sharper that two-edged sword.
  18. One of the best assessments I've seen by petard · · Score: 4, Informative

    Joel Spolsky explained why CityDesk, written by a shop populated entirely by highly qualified C++ coders, is 95% VB. He has a frank discussion of VB's pros and cons as a development tool, and you may find that many points he discusses will resonate with you as you develop your reasoning. Even if you don't come to the same conclusion he does, it's an excellent discussion of just the topic you propose.

    Really, reading his argument in the context of having a bunch of C++ coders build a nice Windows app in 2006, I think I'd probably conclude that C# was the way to go, as opposed to VB. But keep in mind that C#.NET and VB.NET are more alike than they are different. For most apps, the arguments for managed code (VB or other) are very potent.

    My take: If you and every single developer on your team can't instantly see and explain the differences between the 4 arguments to this function:

    void foo(std::string a, std::string * b, std::string & c, std::string *& d)

    stop now and use managed code of some kind.

    If you all can, think really hard about why you want to spend your talent managing memory instead of doing things that'll really make your application shine. (There are reasons. They don't apply to most apps.)

    --
    .sig: file not found
    1. Re:One of the best assessments I've seen by QuantumG · · Score: 1

      Using C# is a far call from using VB, even if it is VB.NET.

      --
      How we know is more important than what we know.
    2. Re:One of the best assessments I've seen by petard · · Score: 1


      Using C# is a far call from using VB, even if it is VB.NET.


      I'll give you that it's a far call from VB 6. But what makes it a far call from VB.NET in your opinion? I like C# much better because the syntax is much more familiar to me, but the appropriate uses for each as well as the capabilities of each seem largely similar to me. Performance is identical. So what does C# buy someone whose mind hasn't been molded by 15 years of C/C++, apart from mono's c# implementation being more mature than its VB.NET implementation (a consideration if cross-platform concerns are important)?

      --
      .sig: file not found
    3. Re:One of the best assessments I've seen by Anonymous Coward · · Score: 0

      If you all can, think really hard about why you want to spend your talent managing memory instead of doing things that'll really make your application shine. (There are reasons. They don't apply to most apps.)

      Thank you for saying this! I wish other people understood it.

      So many people -- I don't know if it's machismo, or whatever -- seem to think that the way to make their program good is by writing it in a low-level language and make it fast before they make it work. There's a reason your CS professor told you not to optimize early... it's worse if you do! Make your program /work/ first, and optimize it after, but only if you need to.

      Yes, in the real world, constant factor optimization is more important than asymptotic analysis. But you should still optimize /big/ constant factors. 95% of the time (by Joel's standards), there will be no noticeable difference, and that's really what matters.

      The good news is that this is one of those trends which will probably reverse itself. If a good programmer who knows both C++ and Python can write a Python program in, conservatively, 1/6 the time he can write a C++ program (the odds are probably much better in Python's favor), then he can write 6 Python programs in the time he can write one C++ program, and if the Python programs don't have buffer overflows and don't segfault and don't leak memory, then chances are they'll become much more widely used. (Consider Pybliographer, for example; no one's tried writing an equivalent program in C++, since there just isn't any reason to.)

    4. Re:One of the best assessments I've seen by julesh · · Score: 1

      think really hard about why you want to spend your talent managing memory instead of doing things that'll really make your application shine.

      I've been doing a large project in garbage-collected C++ lately. It's an option that few people consider, because it isn't well supported by the available C++ class libraries, but a little work (stuff like garbage-collected smart pointers, and things like that) can make a really nice development environment that frees you from worrying about memory management, but allows you to get underneath it and specify memory management details explicitly when you really need to. I think it's the best of both worlds.

      Boehm-Demers-Weiser GC - all you'll need to make C++ useful.

    5. Re:One of the best assessments I've seen by rolfwind · · Score: 1

      I read Spolsky's piece, and between rolling my eyes, I could only think when he mentioned "memory management" - Lisp was doing that decades ago.

      If the rest of his article are as self-congratulatory and obvious as this one was, I think I'll pass.

    6. Re:One of the best assessments I've seen by rolfwind · · Score: 1

      Perhaps they don't choose C++ for memory management is because by the time they realize they want that feature - they moved on to another (perhaps saner? and by sane I mean consistent) language that has it built in.

    7. Re:One of the best assessments I've seen by Profound · · Score: 1

      I think you mean:

      template void foo(std::string a, std::string * b, std::string & c, std::string *& d, T e);

    8. Re:One of the best assessments I've seen by Anonymous Coward · · Score: 0

      Using C# is a far call from using VB, even if it is VB.NET.

      No it isn't anymore. The big improvement is that VB.NET *is* strongly typed. Sure, the syntax is pig-ugly to a C/C++ programmer but once you look past that VB.NET and C# are very alike.

    9. Re:One of the best assessments I've seen by Anonymous Coward · · Score: 0

      Yep. That describes Joel's posts pretty accurately. Joel used to work at Microsoft, and that's when he was a somebody, so that has to be mentioned in at least half of his text. Second, he needs to talk about CityDesk, because that's his thing now. And finally he has to talk about what a great programmer he is.

      Whatever works for Joel, I guess. Ego-stroking is what famous people do.

    10. Re:One of the best assessments I've seen by Anonymous Coward · · Score: 0

      Because when I'm done people will use my software instead of passing it over for something that doesn't take as long to start up and doesn't have such large heap requirements and doesn't clean up all of its memory by tracing the heap periodically. Very few people use Java or C# programs on the desktop because while the JIT can make compute-performance higher, it costs in memory and coupled with garbage collection makes the program a poor neighbor. If people used precisely one program and ran it constantly they might be ok with it, but they use many programs and they close and open them all of the time. Lisp has no free portable native-code implementations on major platforms with a consistent FFI. ML compilers have no supported capacity for writing shared libraries. We can go at why every garbage collected language family is completely impractical for any large desktop software, but I'm sure you'll stuff your fingers into your ears and think about how stupid everyone else is because they just don't "get it."

  19. VisualBasic = the devil by Naikrovek · · Score: 4, Funny

    Visual Basic (especially VB6) have no place in the enterprise.

    C# and VB.NET are very similar, and C# has a much more standardized syntax style. It will take little time to teach someone C# that is familiar with Java or even C++, but it could take some time to acclimate that same programmer to VB's retarded syntax style. Any language with constructs like "If Not foo Is Nothing Then ... End If" rather than "if (foo) {...}" has no place in my brain.

    JavaScript, C, C++, C#, Java, and even Perl have the same curly-brace blocks, statements end with a semicolon syntax style.

    If your boss gives you the often used "anyone can learn visual basic in a day" line, give him the "anyone can learn Java or C# in a day also, and the talent pool for those languages is much larger" response.

    1. Re:VisualBasic = the devil by LoztInSpace · · Score: 1
      Visual Basic (especially VB6) have no place in the enterprise.

      Loads of enterprises are run on VB apps. I would go so far as to claim most, although I can't be bothered to find out.
      Loads of enterprises also run on Excel and Word documents so what does that tell you?
    2. Re:VisualBasic = the devil by Tablizer · · Score: 1

      Syntax is a personal preference. I won't dictate to you what you like.

      However, one thing I find nice about END X type of blocks is that it is easier for the compiler to find the problem if you misplace a block ender. This is because all "}" are the same. If you have end-if mixed with end-while and end-func, then the compiler will detect the missing block ender closer to the problem because it can't try to pair While with End-if etc. Plus, it is more self-documenting than braces.

    3. Re:VisualBasic = the devil by dtfinch · · Score: 1

      VB was the best Windows RAD tool of its era, apart from perhaps Delphi. If you wanted to develop large applications in a very short amount of time, you used VB. It was the perfect tool for custom software, tailored to the needs of a very small customer base (small-medium enterprises). The company I work for uses an ERP system that's a mix of COBOL and VB6, the result of 30 years of development. The very thought of it gave me nightmares, but I got over them after a few months.

    4. Re:VisualBasic = the devil by Anonymous Coward · · Score: 0

      If Foo IsNot Nothing then ... End If

      is also perfectly valid in VB.NET 2005

    5. Re:VisualBasic = the devil by Jeremi · · Score: 1
      Loads of enterprises are run on VB apps. I would go so far as to claim most, although I can't be bothered to find out. Loads of enterprises also run on Excel and Word documents so what does that tell you?


      That the world is run on duct tape and bubble gum, and the only way to keep any peace of mind is to try not to think about it too much.

      --


      I don't care if it's 90,000 hectares. That lake was not my doing.
    6. Re:VisualBasic = the devil by Anonymous Coward · · Score: 0

      I'm a Lisp programmer, so I'm a bit biased, but my opinion on the matter is threefold:

      [a] Beginning and ending is such a common pattern that it should use symbols. (, [ and { convey the "SOMETHING IS STARTING" message better than any word could, and they make writing a good indenter trivially easy.

      [b] There's no harm in spelling most other things out, since the clarity is worth the extra few keystrokes.

      [c] S-expressions mean that code is data, which is why Emacs configuration files are basically self-executable. Without that property, syntax has no effect on semantics, which means it's basically irrelevant. Good syntax can make programming much more pleasant than bad syntax (can anyone say dictionaries?), but I'd take bad syntax and garbage collection over the converse any day -- unless I was writing an operating system, but let's be honest, how often does that happen?

    7. Re:VisualBasic = the devil by bunions · · Score: 4, Insightful
      Visual Basic (especially VB6) have no place in the enterprise.

      this is seriously one of the funniest things I've read on slashdot in the last week. For the canonical car analogy, it's like saying sheet metal has no place in modern automobiles.

      --
      there is no need to sign your posts. this isn't usenet. your username is right there above your post. stop it.
    8. Re:VisualBasic = the devil by Anonymous Coward · · Score: 0

      Amen, brother. Amen.

    9. Re:VisualBasic = the devil by overbaud · · Score: 1

      "has no place in my brain" well reality check the rest of us live in a world that doesn't involve constructs of your brain. Just because you can't get your head around syntax (no doubt because of your comfort zone limitations) doesn't invalidate a language. Japanese differs greatly from latin and both of those differ from english... does that mean that only one of them is a 'real' language and the others are invalid?

      --
      Users... the only thing keeping 1st level support from being the bottom feeders.
    10. Re:VisualBasic = the devil by Naikrovek · · Score: 1

      continuing that analogy, if you're saying that VB is equivalent to a car's frame, body, or engine, you're dead wrong. if you're talking about the anchor in my trunk that i'm about to toss into the river, i'll give you that.

      This is 2006. J2EE, C#, and C++ custom stuff are three /far/ superior choices for enterprise level apps, and they have been for about 4 years at least. Building a GUI in C# is just as fast as in VB6 or VB.NET, and just as easy to learn.

      My Fortune 50 employer is dumping VB6 like a hot potato, and we're not even *thinking* of implementing VB.NET ever. J2EE is our direction and C# is acceptable when needed. VB is out. There's a good reason for that.

    11. Re:VisualBasic = the devil by Anonymous Coward · · Score: 0

      For the canonical car analogy, it's like saying sheet metal has no place in modern automobiles.

      Umm, no it isn't.

    12. Re:VisualBasic = the devil by bunions · · Score: 1

      I think everyone here can agree vb6 is over. Even Microsoft. But the notion that VB 'has no place in the enterprise' is ludicrous. Simply because the VB syntax offends your delicate sensibilities doesn't make it a bad choice for everyone, especially the legions of existing VB programmers.

      --
      there is no need to sign your posts. this isn't usenet. your username is right there above your post. stop it.
    13. Re:VisualBasic = the devil by CrazyTalk · · Score: 1

      Actually, the talent pool for VB folks is much larger - thats why most companies I've encountered ( I do consulting, so I encounter quite a few) that go with .NET go with VB.NET, not C#.

    14. Re:VisualBasic = the devil by Anonymous Coward · · Score: 0

      I don't think you're up to speed on what you're saying. In new VB.NET, we say "If foo IsNot Nothing Then ... End If"

  20. normally... by Beuno · · Score: 1

    As far as I know, common sense is to use VB for small and medium non-critical apps that need speed of development over anything else.
    I'm not sure what type of app you're aiming at, but C++ and Java come to mind as solid choices.

  21. Re:Umm by Anonymous Coward · · Score: 0

    Obviously you have no idea what an O/S is.

    There are several downfalls of programming with Visual Basic. You really have no idea what exactly it is doing and there is quite a bit of overhead that is not necessary. Not to mention that it is seems to use extremely bloated and awkward syntax if you need a smaller, faster, more reliable application I would steer clear. In my opinion, VB is great for demos, quick and dirty apps, and utilities.

  22. Easy answer by Guppy06 · · Score: 1

    Tell them that Real Men (TM) don't use VB, but instead write Perl scripts in ed.

    1. Re:Easy answer by hazem · · Score: 1

      I thought Real Men(TM) wrote the assembly codes directly into memory using debug?!

    2. Re:Easy answer by geminidomino · · Score: 4, Funny

      No, you pussy. Real Men(TM) use small magnets directly on platters. ;)

    3. Re:Easy answer by spir0 · · Score: 1

      don't you want some a bit more lowbrow like edlin?

      --
      The reason girls and Windows users don't understand UNIX is because all the documentation is in Man files.
    4. Re:Easy answer by Gorshkov · · Score: 1

      bull*cough*shit

      The real programmers are out listening to the kodo drums, because it gives them a warm, fuzzy feeling as they harken back to the good old days of mecury delay-tube memory .........

    5. Re:Easy answer by hazem · · Score: 1

      Sounds like a PDP-something my boss had as a (working) museum piece. It had a board with magnetic-core memory. Something like if the loop of wire went through the hoop it was a 1 and if it went around it was a 0.

      Crazy stuff.

    6. Re:Easy answer by Anonymous Coward · · Score: 0

      I actually prefer to whistle the code into my acoustic modem...

    7. Re:Easy answer by Zaatxe · · Score: 1

      I thought Real Men(TM) wrote the assembly codes directly into memory using debug?!

      I did that during college. Can I put Real Man(TM) in my business cards?

      --
      So say we all
    8. Re:Easy answer by Dirtside · · Score: 1

      Nonsense! Real men shout binary at each other across hard vacuum.

      --
      "Destroy science and religion. Science would re-emerge exactly the same; but not religion." - Penn Jillette, paraphrased
  23. Cross Platform? by spirality · · Score: 4, Insightful

    I would argue not using VB on the basis that it is not cross platform. Yes, Microsoft is not going anywhere, but there is some possibility that OS X or Linux could be big enough markets to consider. Especially if you are writing from scratch, why not consider a cross platform solution? It's a little more work, but it pays off in several ways. Larger audience, but more importantly different OSes catch different bugs. You wouldn't even have to target multiple platforms at the get go, but it would make porting it a hell of a lot easier down the road. However, it is VERY easy to write unportable code, especially with a compiled language, for example C++.

    To that end: Python and C++ are generally good choices. They each have their place. I really like my C++, but rapid development is somewhat of a joke. It takes years and years to master and even after using it for close to 8 years on a daily basis I'm still amazed at what I don't know sometimes. However, you can do anything with C++. If you can think of something, there is already probably a library out there to do it. I don't recommend it to novices or people who want rapid development, however if you want a rock solid well performing system it really can't be beat.

    If you're doing GUI stuff, you would have to take a VERY serious look at the combination of Python and Qt. Qt is the de facto cross platform toolkit. It has everything from GUI libraries to network libraries to regular expressions, xml parsers, you name it. It's very good. It's also very good with C++.

    I don't know much about C#, but with Mono you at least have the possibility of it being cross platform. I'm not a big Java fan. After being a C++ guy for so many years it just seems like crap. It lacks the good things from C++ with all of the syntax overhead, and it lacks the flexibility of Python.

    If you didn't guess I write almost everything it Python or C++. They are my dual golden hammers. :) I say that partly in jest, they complement each other very well.

    I do a lot of Scheme too, but I'd be an idiot to recommend that to you!

    Perl is glorified shell. I wouldn't touch it except for the smallest most throw away programs, if even for that anymore. Still I know people who swear by it, mostly sysadmin types.

    I've played with Ruby a bit. It has some definite strengths, but the library support, or lack thereof is a big minus. Syntactically it reeks of Perl and IMHO lacks the elegance of Python. Still it's got some really cool unique stuff.

    Overall I would recommend Python, but like another post mentioned, what are you trying to accomplish? You should fit the tool to the task not the task to the tool.

    1. Re:Cross Platform? by Bones3D_mac · · Score: 1

      Back before it turned into a steaming turd, RealSoftware's RealBasic Professional would have been an ideal solution to the cross-platform authoring problem that VisualBasic presents. (It supports Mac OS, Windows and Linux.) In fact, they even went so far as to provide tools needed to port VB projects to RB.

      However, the folks at RealSoftware got greedy and let the quality of their past products go to their heads. All current versions of the software are written and compiled using RB itself... a move that has caused the brand to suffer horribly compared to the 5.x and earlier versions.

      --


      8==8 Bones 8==8
    2. Re:Cross Platform? by schlenk · · Score: 1

      Depending on what your comfortable with, Tcl/Tk is also a good solution for cross platform GUI development, with the new tile theming engine you can even blend into Qt themes or Windows XP themes or Mac OS X Aqua themes without major problems. Python an Qt are good choices too, for some problems. But its primarily personal preference. Tcl is somewhat of a strange beast to learn, so easy you have to 'unlearn' lots of habits you could have from coding Perl, C or VB. Things often are easier than expected and really straight forward, especially when it comes to cross platform stuff. Its not uncommon for Tcl/Tk apps to be developed mostly on one platform, say for example Linux or Solaris and then moved to OS X or Windows to do some polishing and work on the details. But all of the core functionalities are totally cross platform. (Qt offers this in a similar way, but is much more heavyweight, and a more inconvenient license on windows). If you have to go cross platform and want easy deployabiliy, take a look at Tcl and Tk. They just work. But back to VB. If you are happy with all the pre-made components and want to built your app from those lego like building blocks for windows only, fine. VB is a good choice. You have to live with Microsofts product policy, which may screw you sometimes, but otherwise fine. Michael

    3. Re:Cross Platform? by lordDallan · · Score: 1

      Sounds like the poster above had a negative experience, but RB2006 has worked great every time I've used it. My understanding is that Real Software switched to building RealBasic in RealBasic so that they had to "eat their own dog food". I find that to be commendable, not arrogant or smug.

      I think RealBasic is a great alternative to people who have been working in VB6. Compiled apps are standalone binaries (unless you specifically need a special library, say for using a 3rd party scanner), and so DLL-Hell is avoided on Windows. It has great database support too, using SQLite for local data storage, and connecting to DBs like MySQL, Postgre, SQLServer, OpenBase, and Oracle also. It's object-orientation is also far beyond what VB6 has to offer. Plus it comes with a VB6 importer which can really help if the imported project isn't too big or too much of a mess.

      As far as whether RB2006 is "teh sux0r" or not, I think the best way to get a feel for how RB2006 is doing is to read their New Users Group mailing list archive, which gives a good impression of the overall happiness of RB users as well as some insight into the strengths and weaknesses of the language.

    4. Re:Cross Platform? by marcosdumay · · Score: 1

      "Yes, Microsoft is not going anywhere, but there is some possibility that OS X or Linux could be big enough markets to consider."

      In fact, Microsoft is just out on a walk right now. Yes, you can say that it will probably recover, but nothing is that safe.

    5. Re:Cross Platform? by Bones3D_mac · · Score: 1

      You might want to read some of the feedback left on VersionTracker for RB2005 and up. (Keep in mind the 4-star rating is based on an average of all versions of RB, from 2006 and lower.) There are very few positive reviews of the software past RB5.x, aside from a few token pity ratings for it.

      --


      8==8 Bones 8==8
  24. VB isn't _that_ bad by dtfinch · · Score: 1

    basicNES is written in VB5/6. I helped a lot with the optimization to make it run at full speed on as little as 350mhz with no frame skipping.

    VB.Net is fine too. The biggest problem is that simple languages attract simple people.

    1. Re:VB isn't _that_ bad by bigbadbuccidaddy · · Score: 2, Funny

      You just made the exact opposite point you were trying. It took a team of developers 7 years, at least 195.53 times the CPU performance, and your optimizations to emulate an 8-bit game machine. VB sucks for video game emulation in addition to all the other things it sucks at.

  25. Not too bad overall.... by meburke · · Score: 1

    Visual Basic is not too bad for creating a large project. The trick is to be a decent Windows programmer. You would get almost all the knowledge you need to create good programs in Visual Basic by reading and applying the stuff in the Deitel books (Pick one according to your level of skill)
    http://www.amazon.com/gp/product/0130293636/104-33 75871-4590326?v=glance&n=283155
    and then learning the essential stuff from Charles Petzold http://www.amazon.com/gp/product/0735617996/104-33 75871-4590326?v=glance&n=283155

    However, understanding the applications may be more important than the code. In a large project, after familiarizing myself with VB (using the books mentioned), I would suggest using a tool such as Rational Rose, Embarcadero or even Visio to get a UML documentation of the project, revise the model to reflect my current needs, generate the revised code from the modeling tool, then optimize the code to get the project revised in the shortest period of time. If you think you'd rather use a different language, most of the modeling tools will also generate other languages from the same model.

    I hope this helps,

    Mike

    --
    "The mind works quicker than you think!"
  26. Not enough info by Alien+Being · · Score: 1

    I'm sure there are plenty of good reasons to move away from VB, but IMO, it's an elegant way of leveraging the MS API's. Kinda like wearing fancy gloves while driving a diesel Audi.

  27. reasons not to use VB by rifftide · · Score: 5, Funny
    1. Chicks won't be impressed because it's so nerdy

    2. Geeks won't be impressed because it's so VB

    3. Microsofties will explain how your language is "deprecated" unless it's VB.NET. Trust me, it's bad to be deprecated on.

    4. Enterprise programmers will explain how C# (or Java) is better than VB.NET, has more constructs, etc.

    5. (An elaboration of point #2.) To a programmer, "dim employees() as integer" just looks goofy.

    6. You and your company will be a one-man profit center for Microsoft (their tools are priced so that they don't come cheap when you need to do real work). Here it's not so much big bad Microsoft that's a problem, but I hate being someone else's one-man profit center.

    7. If it's Visual Basic 6, try to get a hold of Ted Pattison's (out of print) book on how to use Visual Basic with DCOM. It's a great book, but my takeaway was that it's easier and wiser just to say no. (I suspect this may have been Pattison's POV too).

    1. Re:reasons not to use VB by isorox · · Score: 1

      To a programmer, "dim employees() as integer" just looks goofy.

      True, but VB programmers can vent fustration
      Dim managment
      Dim users
      Dim wits

    2. Re:reasons not to use VB by AlexeiMachine · · Score: 1

      "dim employees() as integer" just looks goofy.

      Hmmm... we have a lot of dim employees at my place; maybe we should give VB a look.

    3. Re:reasons not to use VB by Anonymous Coward · · Score: 0

      It's been my experience that when you program in a dead language the hourly rates go up for a while and then you find yourself unemployable.

  28. ...what...does...it...do? by solitas · · Score: 1
    The company got its start with a software product written by the owner in VisualBasic. ... For the sake of discussion however, what tasks would VisualBasic not be suited for?

    Um, maybe I've overlooked it, but what does this app DO? I see many discussing various programming environments but I don't think I've seen anyone try to 'relate function to method' ('end justifying means'?).

    A particular environment isn't the be-all-and-end-all for EVERY application or discipline...

    --
    "It's time to take life by the cans." ~ Bender ("Bendin' in the Wind", ep. 3-13)
  29. Re:Umm by Anonymous Coward · · Score: 0

    High speed prototyping at best. Wasted harddrive space at worst.

  30. What is better? by 9mm+Censor · · Score: 1

    Dont tell someone whats wrong with VB. Tell them what is BETTER. VB is the best language, until there is something better for your project.

  31. For one thing... by countach · · Score: 1

    For one thing, Basic is on the way out in favour of C#. It won't disappear soon, but in a few years it might be harder to find people who want to work on it.

    In my opinion, if you are re-writing, I would say do it in Java - then it will work on Mac and Linux and everything. But if you are determined to be Gates' whipping boy, at least do it in C#.

    1. Re:For one thing... by misleb · · Score: 1

      Ya know, I hear a lot of people suggesting Java because it'll run on OS X and Linux, but all the Mac and Linux users I know despise Java applications as a rule. The only people who seem to actually like using Java programs are Java developers (Eclipse). I find it rather amusing that one of the only good examples of a large Java GUI applicaiton is for developers. Of course, most of them are using it on Windows where it runs decently. Eclipse on the Mac is dreadfully slow and clunky. Most Mac users will not use anything but genuine Cocoa apps. Of course, one can write Cocoa apps in Java, but then you lose all the portability.

      Like a .sig I read here on /. once said, "Saying Java is good because it runs on all platforms is like saying anal sex is good because it works on all genders." Couldn't be more true.

      -matthew

      --
      "THERE IS NO JUSTICE, THERE IS ONLY ME." -Death
    2. Re:For one thing... by countach · · Score: 1

      Most users don't give a shit. And if your app is worth having, it's better to have it in Java than to not have it in Cocoa.

    3. Re:For one thing... by misleb · · Score: 1

      But they do give a shit. That is my point. Any Mac user I've known can tell can tell right away that some thing isn't quite right with a Java (Swinge/AWT) application (even if they dont' understand why). If they do use the application, it is in lieu of a suitable native one. It is like emulation. Mac users will run (or used to at least) an application in Virtual PC, for exmaple, if they absolutely have to, but the minute a viable, native replacement comes along, they'll jump on it. Same with Linux users. Wine is OK if you absolutely need a specific Windows application, but most people will be on the lookout for a native alternative. While Java isn't quite as bad as running a program in Wine, it isn't too far off either.

      -matthew

      --
      "THERE IS NO JUSTICE, THERE IS ONLY ME." -Death
    4. Re:For one thing... by Dis*abstraction · · Score: 1

      Yeah, Java apps "work" on the Mac, if you're a recent switcher from the PC world and therefore accustomed to mediocrity and very undemanding of your desktop environment--in short, if you're a tasteless dweeb. But if you're like any real Mac user, you'll notice all the millions of things wrong with a Java app on first launch, and you'll dustbin it the first chance you get. (There's a reason Mac users prefer Transmission to Azureus.)

  32. Have you considered this.. by Jettamann · · Score: 1

    ... Have you considered using an automation tool to convert almost all of the existing VB6 (prototype?) code to C++/MFC.

    I have done extensive research into the limited set of tools on the market that can do the job and this is the best one i have found. And it has the best price too.

    http://vbto.net/

    Don't judge this software by the web-site...download the limited demo and give it a whirl.. the latest 2.x version of the software is very very good.

    --
    - No Sig for you!
  33. Joel seems to think it's okay. by SirShadowlord · · Score: 1

    To quote Joel:

    "What I wondered was, what happens if you take top-notch C++ programmers who dream in pointers, and let them code in VB. What I discovered at Fog Creek was that they become super-efficient coding machines. The code looks pretty good, it's object-oriented and robust, but you don't waste time using tools that are at a level lower than you need."

    Check this link:
          http://www.joelonsoftware.com/articles/fog00000000 06.html

    --
    - Any Day above Ground is a good Day (Michael Rich, 1997)
    1. Re:Joel seems to think it's okay. by Malc · · Score: 1

      Trouble is, top-notch C++ programmers don't dream in pointers. With the advent of STL, most things are on the stack (and thus memory management problems are minimised).

    2. Re:Joel seems to think it's okay. by Jay+Carlson · · Score: 1

      With the advent of STL, most things are on the stack (and thus memory management problems are minimised).

      Until they aren't on the stack. Or are you always sloshing around huge arrays as lvalues? Somewhere around here is when we separate the actual C++ programmers from the kidz who wouldn't have been fired if they were writing in Java.

      Fodder for your fortune db, file under Murphy:

      Smart pointers---aren't.

  34. VB.NET and C# are great tools! by Anonymous Coward · · Score: 0

    Using .NET (VB or C#) you can now program quality 3D games using Managed DirectX which cuts develop time by a third! If you can program a 3D game in C# then it is sufficient for business tools.

    Here is a 3D Real Time Strategy commercial game written entirely in C#:

    http://www.exdream.com/games_aw.html

    Here is a great thread on C# games...C# will start to dominate in indie development:

    http://channel9.msdn.com/ShowPost.aspx?PostID=2085 0

  35. Go with C# 2.0 by TheFairElf · · Score: 1
    I'd been predominantly programming in C#/Java until I was called upon to do a project in VB.Net. I was very skeptical initially but as the project progressed I realized that it was pretty much same as C#. It had all the features (plus some more) that C# had. A major reason why I actually started liking VB.Net was that the IDE (Visual Studio) for it was a lot better than the one for C#. This was in version 1.1 of the framework and Visual Studio 2003. The case insensitivity of the language just added to the ease of programming.

    Having said that, the new version, 2.0 and Visual Studio 2005 makes up a lot of ground for C# to catch up with VB. The IDE is almost up to par with the VB IDE. In my opinion VB.Net 2005 actually went a step back when it introduced "Default Instances" - a concept where you can call non-static members without instantiating the object.

    My recommendation would be to use C# if you're on the 2.0 version of the framework and VB if you're on 1.1. C# is a pleasure to program with in VS2005 due to the improved IDE features and also the code snippet feature.

  36. VB not for enterprise wide solutions by Anonymous Coward · · Score: 0

    unless it involves merely lots of small programs.

    VB isn't inherently bad. What really causes the problems with it is that Microsoft redesigns the bloody language on EVERY FREAKING RELEASE.

    If you had a VB 3.0 app, and you wanted to change it but have since installed 4.0 or later, you'd have to reinstall 3.0 and all the controls you used when you wrote the 3.0 app. Either that, or you would need to basically recreate the program for 4.0. Any controls you've purchased for 3.0 will not work for 4.0, and good luck on finding a 4.0 version with exactly the same functionality and calls. You are guaranteed on major rewriting of your code to merely compile in a new version of the compiler.

    This is true for 4.0, 5.0, and undoubtedly will be for dot net.

    The problem with Microsoft and VB is that they don't expect people to write long lasting applications. Sure, make code relatively easy to write, but they totally ignore maintainance or enhancements of the resulting code later.

    Sure, with C/C++, chances are you might have a few tweaking to make, perhaps, assuming the original coder didn't use standards. However VB coders often are less standardized. Their generally only nod to standarization is by what the IDE lets them do, or builds for them. This isn't nearly the case with C or C++.

    If the project is expected to be long lived and to grow, don't limit it to vb. Sure, vb is easy to pick up, but even dot net has huge drawbacks with vb in terms of limitations.

    I won't even go into how big vb executables tend to get either.

  37. VB What? by Schnapple · · Score: 1

    What do you mean by Visual Basic exactly? VB6? VB.NET? 2003 or 2005? VBScript?

    One of my pet peeves is when people don't specify which VB they mean.

    http://www.schnapple.com/2004_06_06_archive.html#1 08690845702685296

  38. "It's VISUAL BASIC!!" by ThinkTiM · · Score: 0

    That's about it really.

    1. Re:"It's VISUAL BASIC!!" by Anonymous Coward · · Score: 0

      Yeah, that was helpful.

  39. VB6 has its place... by Nevyn522 · · Score: 5, Informative

    First company I worked for produced a series of ActiveX controls written in VB, shipped and sold with the source. It supported 3 full time devs, 2 support/sales people, one HR person, and an intern (me).

    They vanished after they tried to compete in the .COM world and got absorbed by ZDNet, but their components are still for sale on Programmer's Paradise, last I checked.

    I got an internship with Microsoft after spending most of my interview defending VB as a language choice -- this was pre-C#/.Net.

    Some "facts" from above annoyed me, so I'm responding:
    1) VB is only interpreted.
    VB6 can be compiled to P-code, and will run interpreted. However, by default it's compiled to executable code. The only "penalty" for using VB6 when it comes to speed is really the memory footprint of the VB6 runtime DLLs.

    2) VB6 is not suited to large products.
    I'm aware of at least one company that based an entire website off VB6 apps. I'm sure they would be ASP.Net now, but at the time (VB4), that wasn't yet an option. So the web engine was actually a series of VB apps that were invoked to process the web request as ReadLine and Print commands.

    3) VB6 -> VB.Net
    (The person in question did only propose this as an idea.)
    I would argue against this. There are certain elements only possible in VB6, and the switch to managed code is unfortunately not as seamless as MS would have liked. Hence the uproar when MS EOL'd VB6. VB.Net is great for managed code, and even has some features that C# lacks. I personally prefer C#, but I come from enough of a mixed background that I can handle what VB.Net code comes my way. While rewriting the application in VB.Net may be the proper thing to do, it certainly does not provide much in the line of benefits above and beyond rewriting the application in C#.

    VB does have certain benefits to use. As a RAD environment, it is (or was :) ) without peer. As to the inavailability of new APIs: a) Pretty much anything in COM can be used -- although some trickery may be necessary for custom structures. b) Anything done in a "straight" Win32 API can be directly invoked -- akin to P/Invoke in the managed world. For database work, VB was unparalleled. The ease of data connections has now come in some degree to the managed code word, but in unmanaged code only VBA comes close. C++ just can't compete. VB is no longer entirely late-bound -- if a dual interface is available, and the code is written to expect that type rather than just Object, VB6 operates as an early bound client. VB6 is also capable of being used in a late-bound fashion with almost identical code to the early bound scenarios.

    While I can't know why your manager wants to use VB, it's not such a terrible order.

    If your manager only wants to preserve the look-and-feel of previous versions, the previous proposal of writing COM components in C++ for the high-performance portions and using VB for the front-end is certainly a very viable option, and one that I've used previously. In this manner, the weaknesses of VB6 can be circumvented while still leveraging existing components and possibly even code. At the far end of the advancement spectrum, even managed components can be exposed to COM clients -- Adam Nathan's wonderful ".Net and COM: The Complete Interoperability Guide" is probably the most complete book on the subject. If appropriate, you can write new code in C#, and expose it back to VB6.

    If your manager wants to preserve the code base in VB6, you might want to determine why he wants to rewrite the application -- it's possible a better solution is just to rewrite portions of the code, depending on the scope of the changes he desires. The right tool for the right job -- VB is the right tool for some jobs, but shouldn't be presupposed to be the right tool for every job.

    That being said, there are few things you can't do in VB -- although some of the solutions are probably not as simple as they may be in other languages. Keep in mind, however, that it is even possible to get assembly code linked into a VB6 application, if necessary. It just takes a little bit of creativity.

    1. Re:VB6 has its place... by Anonymous Coward · · Score: 0

      I went from VB6 to VB.Net, and it was beautiful. Among other things I rewrote an EDI parsing application and ended up with half the lines of code, due to the true object-orientation and the built-in collection classes. It's not a quick recompile or anything, but it's better.

      C# would have been just as good, but for someone familiar with VB syntax, nothing wrong with VB.Net. Long-term, Microsoft is targeting VB to the quick gui-building crowd, and C# to the heavy coding crowd, so pick your poison...

    2. Re:VB6 has its place... by IngramJames · · Score: 2, Informative

      The only "penalty" for using VB6 when it comes to speed is really the memory footprint of the VB6 runtime DLLs.

      Try this:
          - Write a very simply object in VB with just a few properties that can be set.
          - Write the same object interface in C++.
          - Write a test harness which instantiates and then releases 1 million of each type
          - Compare the results.

      C++ allocates and deallocates COM objects an order of magnitude faster. If you're working with lots of instances of tiny objects, then using C++ will increase your performance dramaticlly.

      But doing a GUI in C++ is like pulling your teeth one by one without pain killers while a large dog mauls your left knee.

      Mix and match the most appropriate tools for the job in hand.

      --
      'No rational religion claims "supernatural" exists, that's an atheist slander.' - seen on slashdot.
    3. Re:VB6 has its place... by P3NIS_CLEAVER · · Score: 1

      The OOP terminology in vb.net is atrocious. You are better off learning C#

      --
      Please sign petition to restore sanity to our banking system!!!

      http://financialpetition.org/
    4. Re:VB6 has its place... by geekoid · · Score: 1

      You can multithread in VB 6, SP2 or greater.

      VB4 for web aplications? haha that sounds painfull. While vb4 wasn't suited for web applications, and well, VB was really painfull, VB 5 and 6 can both be used for alrge applications. Of course, the programmer need to understand what tools VB has and also need to understand the pitfalls that come with a large application regardless of language.

      Since the manager wrote it, he probably wants to be able to read and program in the next version of the application. Just a guess.
      The real questions are: why isn't he taking this issue to his manager? Why does he assum VB is incorrect when he doesn't even know it?

      --
      The Kruger Dunning explains most post on /. http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect
    5. Re:VB6 has its place... by Oloryn · · Score: 1
      As a RAD environment, it is (or was :) ) without peer.
      For database work, VB was unparalleled.

      I'd challenge both of these. Though not well enough known, Clarion (http://www.softvelocity.com) definitely challenges VB as a RAD environment, and beats it hands down for database work. Clarion's dictionary and template-based generator will write most database code for you. Even more impressive, once you've defined the tables you need in the dictionary, Clarion will slickly generate a full-blown data entry program for those tables. That's often how I start out new applications - define tables in the dictionary, generate the data entry program, and then tweak as necessary. It gives you a definite leg up on getting an app started, and if you are careful while creating the dictionary, you won't have to do that much tweaking.

      Now if we could just get SoftVelocity to market it better

    6. Re:VB6 has its place... by jafac · · Score: 1

      Is it possible to link Java code into VB6?

      --

      These are my friends, See how they glisten. See this one shine, how he smiles in the light.
  40. Wrong Question by mochan_s · · Score: 1

    Did you just get scared of the word VB?

    • There is good old VB which was used for RAD for windows.
    • There is VBScript which is a general purpose scripting language. It can be used for browers to Office to any app scripting. Basically gives access to all the sytem's objects.
    • And, there is VB.NET which is basically as full of features as C#, C++ and other code that fits into the Microsoft.NET platform.

    If only Microsoft had the imagination to name products like Open Source Software does, then all the confusion would be avoided. VB, .NET, ActiveX mean so so many things it's ridiculous.

  41. Depends! by bryanporter · · Score: 4, Informative

    I've done a great deal of VB programming over the years, and I've seen all manner of projects written in VB that never should have been. Now, the poster did not specify if they were talking about VB ala VB 6, or VB.NET - the two are completely different in so many respects an argument for/against one doesn't translate very well to the other.

    Here's my two-cents, by language/environment:

    VB6
    ---
    If you're writing business applications, VB6 will get you through. Manipulating very large datasets can be a bit of a challenge, and you're always going to have problems with user experience (due in large part to a complete lack of multithreading). Applications can be made that are *functional*, although your resultant UI will always seem dated.

    VB.NET
    ------
    This is an entirely different beast. You've got a much more powerful langauge on your hands, with as much power and expressivity as Java - it is quite straightforward to produce a modern, performant application with little muss or fuss.

    My suggestion, if VB is an absolute must, would be to insist (as best you can) on VB.NET. Now, that being said, VB is not a magic bullet - VB/VB.NET/C#/Java, they are all languages designed to allow a programmer to express their thoughts, and it's quite easy to produce unworkable software with any of them. Do not allow yourself to fall into the 'C# is better than VB.NET' arguments, simply because they are completely non-sensical; the power of any .NET language lies in the .NET Framework, and the language chosen should be the one you are most syntactically comfortable with. That being said, I abhor the syntax of VB.NET; C# is more my cup of tea, but in the end they are (with minor exceptions) functionally equivalent. It takes about the same amount of work to do one thing in either.

    I've worked professionally in VB, VB.NET, Java, Perl (alot of Perl, in fact), C#, and C/C++, and I must say IMO the most expressive langauge is C++, hands down. I love Perl, and you can do an amazing amount of things with it, but the power and flexibility of C++ is unmatched in the list above. VB.NET/C#, however, can be excellent choices for presentation-centric applications (Windows Forms applications or Web Forms). In the past, I've worked on projects that combined the two; a C# GUI that interfaced with a C++ server component. It worked great.

    Any .NET language can interoperate with libraries written in any other .NET language (assuming the library conforms to the CTS), but the same goes for VB applications; in VB, you're dealing strictly with COM, a technology designed to allow components written in disparate languages to interoperate.

    Short Story: If you're writing a business-focused application with limited or no multithreading needs, VB works; If you need a modern GUI with all the latest bells and whistled VB.NET/C# should be examined; If you need high-performance, minimal runtime requirements, and low-level system interaction, look somewhere else. Real-time equipment monitoring, for instance, is a task best left to C++. The rest can be done in VB or a .NET language.

    Have fun!

    Bryan
    ==

    1. Re:Depends! by P3NIS_CLEAVER · · Score: 1

      The OOP syntax in VB.NET is horrible and does not translate to the terms we are used to with c++ and java. The vb.net compiler also misses things that would be caught in c#.

      --
      Please sign petition to restore sanity to our banking system!!!

      http://financialpetition.org/
  42. SWT Is Your Friend by saden1 · · Score: 1

    Like many in here have said, I would simply argue that VB6 is on it's death bed and that is a good enough reason 90% of the time.
    If I were starting a new desktop application I would seriously lean towards SWT and Eclipse Rich Client Platform. Hell, there are a number of visual editors for it.

    --

    -----
    One is born into aristocracy, but mediocrity can only be achieved through hard work.
  43. News for turds. Stuff that splatters by SurturZ · · Score: 0, Troll

    What kind of troll article is this anyway? Some guy gets a job in a VB software house, to re-write a VB app in VB and then complains because he doesn't know VB? And starts heaping on it, even though he's never used it much? How is this newsworthy?

    1. Re:News for turds. Stuff that splatters by P3NIS_CLEAVER · · Score: 1

      You have violated my copyright. Remove this post immediatly!

      --
      Please sign petition to restore sanity to our banking system!!!

      http://financialpetition.org/
  44. Increasing cost of support by bitflip · · Score: 1

    As was mentioned above, VB6 is end-of-life, so MS won't support it. That, in and of itself, may not be a big deal to your employer right now.

    However, it does mean a lot to the potential labor pool he'll need to hire from in order to maintain this app into the future. Developers tend to upgrade their skills along with the technology. Sure, they may know VB6, but that doesn't mean they'll use it, or take a job requiring it. It sets back their career.

    I mean, c'mon, he's hired someone who doesn't know VB to code in VB. He's obviously getting a bit desperate already (no offense intended).

    However, if you're talking about VB.NET, then you've got little to complain about. It looks syntactically weird to me, so I don't like it, but it is quite full-featured and modern. Every so often I have to work with it, and it works just fine.

  45. Myriad of problems by jasonditz · · Score: 2, Informative

    Without knowing what the nature of the app is, it's really hard to make a serious case for or against VB.

    Some good things to point out though:

    VB is not an open standard,

    VB is platform specific

    VB is generally quite time consuming to maintain for large apps

    VB is much slower than C++ for certain CPU intensive apps.

    Possibly: The people expected to maintain the code are less well-versed in VB

    If this is a small-enough, simple-enough, Windows-centric enough application, there's probably no good reason to do a total rewrite in a different language.

    If, on the other hand, this app might have a customer base on a non-Windows platform, and if the program is likely to dramatically increase in size in the future, it might be worthwhile to think about changing it to a different language.

    1. Re:Myriad of problems by Anonymous Coward · · Score: 0

      VB is not an open standard
      In a company <10 people the concern is shipping a product that customers will pay for, not friggen' ANSI compliance

      VB is platform specific
      Yeah, a platform that has 90%+ marketshare for desktops. Where should a <10 person company focus its resources?

      VB is generally quite time consuming to maintain for large apps
      Maintaining *ANY* app is time friggen' time consuming, as in 30-60% of effort (McConnell et al). At least with VB the sustaining effort isn't spent chasing C++ memory leaks or null pointers.

      VB is much slower than C++ for certain CPU intensive apps.
      Yes, until you start doing array bounds checking, using STL strings, and checking for floating point overflows - then C++ approaches VB.

      If this is a small-enough, simple-enough, Windows-centric enough application, there's probably no good reason to do a total rewrite in a different language.
      It's all about the customer: will switching languages prompt more people to buy the application? In a <10 person company if you don't sell you die.

      If, on the other hand, this app might have a customer base on a non-Windows platform, and if the program is likely to dramatically increase in size in the future, it might be worthwhile to think about changing it to a different language.
      Blah blah blah.

    2. Re:Myriad of problems by jasonditz · · Score: 1

      The way I see it, we can split this up into two issues:

      1) Closed standard and platform specific might make sense right now, but things change. Why lock yourself in when you don't have to? I mean, we don't even know for sure that the app in question is targetted at desktop users, so your percentages might be totally meaningless, but 5-10 years from now, will Windows still be so far above its competitors? Will Microsoft even support VB anymore? Will they maybe screw with the licensing and make it much harder to profitably sell a commercial VB app? In any kind of open standard, you've got options. Even if you don't think you'll need to port it to a second platform, with an open standard language, you could do so with a lot less effort. If your language vendor starts getting unreasonable, you can always look elsewhere. Unless you're using VB.

      2) Speed and upkeep are real concerns and they're ones that are going to effect the end user directly. Any sort of graphics intensive application is going to run like sheer hell on VB when compared to a capably programmed C++ app. Or lets say it's not graphics intensive, and VB is plenty powerful enough. How easy is it to find really good VB programmers? I mean, there are plenty of people who stick it on their resume after they get their associate's degree from the community college, but are they up to the rigors of commercial software development? You've got a good enough team now, but what if this company expands?

      I'm not trying to suggest C++ is the be-all, end-all language for applications, either. If VB is working, Smalltalk would work at least as well, and in all likelihood be much less of a headache to maintain. Oh yeah, and you get all the advantages listed in 1).

  46. REALbasic might be a good option by jessimko · · Score: 1

    I'm not sure how to best articulate VB's deficiencies, but I've had a lot of luck with REALbasic. RB will look very familiar to VB users, and it compiles for Windows, OSX, and Linux, and its apps don't require a virtual machine. Now that Microsoft has abandoned VB, REAL Software has been marketing their product as its successor, so you might want to check it out.

  47. This original poster scares me by stephanruby · · Score: 5, Insightful

    This original poster scares me. He wants arguments against VB, but doesn't explain the scope of his project, nor does he say what language he wishes to replace VB with. Most likely, he doesn't have much experience in the working world and would just prefer to use a language he's already used to from school.

    The crucial ingredient in any project is the people you end up working with, not the language. I'm not a fan of VB, but if this kid doesn't have the experience of successfully completing a project in the real world, he should consider following the owner's experience -- and only worry about changing the underlying language once he has a couple of releases under his belt.

    1. Re:This original poster scares me by DerekLyons · · Score: 1
      This original poster scares me. He wants arguments against VB, but doesn't explain the scope of his project, nor does he say what language he wishes to replace VB with.
      Even *more* importantly - he never tells us why he wants arguments against VB. (He hints at 'large projects', but frankly 'large' is in the eye of the beholder in many cases.)
      Most likely, he doesn't have much experience in the working world and would just prefer to use a language he's already used to from school.
      Or he believes automagically that anything "___" BASIC is automatically inferior. Or he's a free software advocate who believes 'free uber alles'. Or... Many reasons, all of the scary in an assistant.
  48. The Best Language is the one you know how to use! by NerdENerd · · Score: 1

    The best language is always the one you are familiar with. A language you are not familiar with is always difficult to use. If you are not a VB programmer then leaning it on a big project is a big mistake. Do not start any new project in VB 6. VB 6 had its place years ago for forms based apps but since VB.NET it should never be used to start a new project. VB.NET fixed most of the major problems with VB. With the .NET framework you can really write equivalent apps in any of the supported languages no matter what kind of project you are working on.

  49. FORTRAN Follies by CyberGarp · · Score: 1

    I worked at a place and the founder wrote the core piece of code in FORTRAN. A 300 person company sprang up around it. 99% of the software for the company was written in C around the core piece in FORTRAN. If you so much as mentioned rewriting that last piece, it was a quick ticket to the unemployment line. If I were you, I'd stick with VB or work on your resume. Strange part about the magic FORTRAN code-- it was a discrete Fourier transform. Business acumen beats good code when it comes to making money.

    --

    I used to wonder what was so holy about a silent night, now I have a child.
    1. Re:FORTRAN Follies by Anonymous Coward · · Score: 0

      Modern Fortran is a damn good language, with some segments where it remains the language of choice. Blindly disparaging it is even sillier than blindly disparaging VB.

    2. Re:FORTRAN Follies by CyberGarp · · Score: 1

      When 99% of the code is in C and 1% is in FORTRAN with an ugly interface it doesn't matter how wonderful FORTRAN is. Take any two different computer languages and put them in my original comment and it still makes sense. I wasn't disparaging FORTRAN, I was disparaging the approach.

      --

      I used to wonder what was so holy about a silent night, now I have a child.
  50. Don't Argue Religion with Your Boss by edward.virtually@pob · · Score: 1

    Religious arguments aside, all modern programming languages are about the same. My advice would be to learn VB and do the best job you can. Fighting with the boss over which language to use will be at least unproductive and could get you fired.

  51. VB What? by dcam · · Score: 1

    Do you mean VB.Net, VB6, VB5 or what?

    If it is anything other than VB.Net, you might want to mention the fact that Microsoft's support for VB5/6 has basically ended. There is also no upgrade path to newer laguages (you cannot upsize VB6 to VB.Net).

    --
    meh
  52. Not rational, look for another job. by twitter · · Score: 0, Troll
    If he built a successful business around a piece of software, the chances are good he's smart enough to listen to rational arguments. So don't be irrational by kicking in your heels and saying "no! no! no!" unless you really enjoy job hunting.

    They guy is a nutcase. He's hiring people to rewrite everything and falling into the same trap. Obviously, he's wasting his time and money.

    Avoid his NDA, and keep looking for the next job. This one won't last long anyway.

    --

    Friends don't help friends install M$ junk.

  53. More upcoming arguments..... by zymurgy_cat · · Score: 1

    Making an argument against eating arsenic.
    Making an argument against sticking a wet finger in an electrical outlet.
    Making an argument to end the vi/emacs debate once and for all.

    --
    -- Fugacity: Confusing chemists since 1908
  54. VB6, and why its not as cool as you think by IheatMyAptWithCPUs · · Score: 1

    In the past, I've had three serious issues with VB. 1: When distributing a VB6 application, you have to distribute the VB6 runtimes, which aren't particularly small and can make distributing your neat little app over the web a royal pain. 2: VB6, without its use of block seperators ( {} ), make for the ugliest and least intelligible code in the world. Maintenance is a nightmare. 3: There's a lot of VB6 coders out there. There's just not a lot of good VB6 coders. Anyone, and I mean anyone, can code in VB6. When people are having a hard time learning to program simple apps in a real language, like C or Java, they learn VB. Then they go into the workforce. People who honestly have no purpose coding are now writing your major applications. Don't let this happen. Stop using VB, before joe-schmo uses it to make the next windows.

    1. Re:VB6, and why its not as cool as you think by Anonymous Coward · · Score: 0
      You're crazy. If / EndIf, For / Next, etc. is a heck of a lot more readable than {/}.

      Anybody who's a good programmer can be a good VB programmer.

    2. Re:VB6, and why its not as cool as you think by AlbertinaJane · · Score: 1

      Although coding in VB6 these days has little sense, most of you here state silly reason why not using VB (it's not geekish enough?) I've been using Visual Basic from version 4 for professional developement, mainly for creating gui frontends for database systems (mainly Informix these days). It is a bit stupid to go program a 3D raytracer in Visual Basic, or mp3/divx encoder/decoder, but for creating 'stupid' database application it's an excellent tool. Rapid prototyping of the whole system can be easily made using Access .mdb files and Visual Basic as frontend, that can be easily ported to SQL server, with the frontend unchanged. At my pre-former company (they were doing wholesales and retail sales, as well as service shops for cell phones) I created (almost) complete informational system for sales/warehouses/financial departmens (human resources and sort-of-CRM were missing) using Visual Basic nad MSSQL 2000. It was a breeze. They previousley had FoxPro application, wich was easily ported to Visual Basic, and it's still in use. Aplication is installed on 150 computers, and connects to 12 replicated MSSQL servers. System is stable and easily maintained. VB is used strictly for presentation layer, since bussines logic is in MSSQL. I can't think of better tool for doing something like that than Visual Basic. FoxPro could be a good choice only if it were more stable.
      That was 2002. These days I'd go with python/glade/gtk for the presentation layer, or maybe Mono application? I have tested python/glade/gtk, and that works pretty well on both linux/windows. The developement is not so rapid as with Visual Basic, but python is far more powerfull, and yet still simple enough. Glade helps a lot with creating user interface, and postgres is almost as good as MSSQL (try setting up merge replication with postgres as MSSQL offers you before you rant about postgres beeing better than MSSQL). Havent tried mono yet, I'm waiting for the Dapper release, haven't had luck in compiling MonoDevelop 0.11 with breezy or debian testing.
      Visual Basic was (was!) excellent tool if you needed to create various data entry or reporting applications. Doing such stuff in C/C++ was expensive and as it turns out - stupid.

  55. Just say 'NO'. by chris_sawtell · · Score: 1
    Just say no!, if you wish to preserve your mind's v^Hsanity.

    A friend of mine had to produce a similarly large - dozens of screens, menus, and a WWW interface - VB project as a team leader. He came within a whisker of being admitted to the emergency psych. ward.

    Get another job if you possibly can.

  56. Key Elements Missing by tmortn · · Score: 1

    If you are talking VB6 then run far run fast in terms of a large scale application. But then... what is large scale here ? Not that VB6 isn't perfectly capable in some areas. But it is fading fast and you could run into serious deployment issues in the near future with Vista looming and VB6 at EOL from M$.

    VB.net is ok. By that I mean it will do anything the other languages will in the .NET architecture but it does not always do so as easily or as elegantly. Additionally the lack of a more structured syntax (lack of semi colon's etc) gets really fricken annoying if you ever switch back and forth much.

    My personal experience with it has been that for more in depth options you tend to continuously dip into the common library interface accessible to all the .NET languages and it makes for very jarring transitions at times with huge swaths of 'black box' code that is sometimes hard to expose when trouble shooting. Basically this is how they 'welded on' all the real functionality of a 'real' programming language. Thus VB.net is pretty much on par with anything. But getting serious with it is not its design goal. It is optomised for the RAD concept more than any of the other languages.

    For varied reasons I got sucked into a VB.net project. At the onset we were told it was our only option and thus we reluctantly picked it up as we went along only to discover later we could have chosen any of the MSIL languages. If I had a do over I would have gone with C# (if I had to be stuck in .NET at all that is.) My biggest objection has less to do with the languages/environment themselves than it does with M$ licensing/support and portability. Though mono is progressing pretty nicely.

    --
    I don't ask you to be me. I only ask you not expect me to be you.
  57. That's a very funny assesment. by twitter · · Score: 0, Troll
    I like the argument where he says VB is good because MFC sucks. Ha, ha! That sold me. I've never seen a VB interface that looked, "professional" because Windows itself no longer looks that way.

    --

    Friends don't help friends install M$ junk.

    1. Re:That's a very funny assesment. by user24 · · Score: 1

      "I've never seen a VB interface that looked, "professional" because Windows itself no longer looks that way."

      what? Which apps exactly are you talking about? Last time I checked, 90% of windows apps have tabs, checkboxes, buttons, pull down menus, toolbars, MDI, panes, or frames, all of which interface widgets VB6+ provides as standard components. Also, any time the look of windows changes (which incidently it hasn't done significantly since 1995), a new dll will be released that will allow VB coders to use that new interface enhancement.

      I'm guessing that by "VB interface" you're talking about those few incredibly ugly programs that use bright yellow backgrounds and massive coloured buttons, which are prime examples of beginner VB coders playing with pretty things, and are not a true reflection of VB at all.

    2. Re:That's a very funny assesment. by Anonymous Coward · · Score: 0

      You're going to be waiting a long time for that "new DLL" that implements Vista Look'n'Feel for VB6.

    3. Re:That's a very funny assesment. by ednopantz · · Score: 1

      >You're going to be waiting a long time for that "new DLL" that implements Vista Look'n'Feel for VB6.

      Hang on, I thought there was nothing new in Vista. I'm confused.

  58. Oh, great by WindBourne · · Score: 1

    I have spent the last 10 years coding the constition of the USA on a disk using large magnets and now it is good to use small magnets? Man, how times have changed.

    --
    I prefer the "u" in honour as it seems to be missing these days.
  59. Complex UI by Anonymous Coward · · Score: 0

    VB is very productive for creating simpler UI. Problems starts cropping up when you try to build complex UI. Thats when you will have to start using all these (commercial and free) addins and things get hairy.

  60. Second the opinion! by Quiet_Desperation · · Score: 1
    I use Realbasic to write elaborate control systems for the hardware I design. My systems are basically one large entity that spans hardware, firmware (FPGAs) and the Realbasic apps on PCs. I use it as an alternative to LabView which is an abomination. There's a cheap plug-in available for GPIB bus, open source drivers for parallel port access and serial and Ethernet are built into the language. Talk to the world nicely. I usually have one program that transparently controls local equipment and stuff many miles away at the transmit or receive site (I'm in communications).

    Realbasic is also nicely object oriented. And a basic license is $99.

  61. speed & debugability by lon3st4r · · Score: 1
    i'm not very sure how *fast* VB apps run. most VB apps, i have seen, seem to be a huge bloated pile of cr@p.

    you might also want to check on the debugging and maintenance aspects of VB.

    see if all the functionalities and underlying tasks for your target application are available with actively supported libraries/groups.

    * lon3st4r *

    1. Re:speed & debugability by Anonymous Coward · · Score: 1, Informative

      For debugging, I've found VB6 to be without peer. It's mainly due to the intepreted heritage -- when doing debugging, the language is run interpreted, so the integration of edit-and-continue and the immediate window are seamless. E&C in the compiled languages sort-of works in my experience, but there's still nothing to compare to the power of the immediate window. Not only does it allow you to evaluate more complex expressions than are accessible in, say, the VC watch window, but it also allows you to execute arbitrary code, which can be very useful e.g. for doing a test run of a procedure in the context of a running program.

      (This is one of the main reasons I'm sad that MS decided to kill VB.)

  62. Not portable by Anonymous Coward · · Score: 0

    If you want to be able to use your software on different servers, clients, or embedded systems. A portable language would be best.

    VB is not a standard language at all let alone portable to other OS's or platforms.

    I would suggest C/C++ and wxWidgets. wxWidgets is like MFC, only portable to many platforms and free.

  63. Don't rewrite by Malc · · Score: 1

    One of the most important rules of software development is to not rewrite unless you've got a massive budget. Most companies fail when they do that. Look how long Microsoft had to stick at their rewrite of their OS before it (NT) finally became good enough. Existing code has already been debugged, so find some way to evolve it and leverage what you already have. New code in the same language always introduces new bugs. Completely new dev environments open up an even bigger can of worms. So get down off your high horse and lose the anti-VB attitude. You took the job knowing it involved VB, now make it work otherwise you're not doing yourself a favour, nor the 9 or fewer people who depend on you.

  64. Cobol = the devil by Anonymous Coward · · Score: 0

    "Any language with constructs like "If Not foo Is Nothing Then ... End If" rather than "if (foo) {...}" has no place in my brain."

    Then you'll hate Cobol.

  65. Here is an argument for C# over VB.NET by Buchenskjoll · · Score: 1

    JetBrains ReSharper doesn't work with VB.NET. Resharper gives you the tools to refactor easily and fast. Not the crappy, slow Visual Studio way. Apart from that, there is very little difference in what you can do in either language, the problem with VB is that the language itself sucks. Which looks better

    If (Not MyVar is Nothing AndAlso MyVar.IsOK) Then

    Or

    if (myVar!=null&&myVar.IsOK)

    ?

    --
    -- Make America hate again!
  66. YOU'RE FIRED! by Anonymous Coward · · Score: 0

    I read slashdot too Ethan. Expect a pink slip tomorrow morning.

  67. Indeed he did. by BiggerIsBetter · · Score: 1

    In 2001.

    --
    Forget thrust, drag, lift and weight. Airplanes fly because of money.
  68. to VB or not to VB. by nixkuroi · · Score: 1

    It would help to know which version of VB you're talking about, but let me try and help you out.

    If he's talking about VBscript (asp or script com type stuff), it's a useful, but deprecated technology. ASP can be very powerful, but unless you want to by Chilisoft, it's hard to go cross platform on it. That means buying/leasing a windows server. The upside is that it has a great connection to SQL server (ADODB) and easily instantiates com objects on a windows server. PHP is a viable alternative that's cross platform and easily connects to the same database servers as ASP. It's free and that's always good. It's just not as forgiving. As a side note, avoid client side vbscript. It's fine for internal intranet environments where you're guaranteed all IE browsers, but if you have to LEARN that or javascript, go with javascript. It's going to be easier to use in the long run, more powerful and vbscript (on the client) is not crossbrowser in the least.

    If he's talking about VB 6, you'll have the same problems with cross platform environments as asp, but moreso unless you can get an exe or dll to run on whatever platform you want to port to. The upside is that it's easy to make com objects, the downside is that it's apartment threaded so you might end up with some scaling problems down the line. You can do a lot of the same things with java as you can with com, but I think there are still negative performance impacts, especially in a windows environment.

    If he's talking about VB.net and is sold on the windows platform, I'd steer him toward c#. Though the object models are very similar, C# has a far superior garbage collection module in "using". VB.net has "with", but it doesn't clean up after itself like using. VB.net is also pretty useless if you're trying to re-use your prior vb or vbscript knowledge. Because of the way the object model was changed to make it more strongly typed (option explicit is always on) and ...well it's object oriented (unlike vbscript with the notable exception of things like ADO and calling activeX com components). VB.net is not going to provide any more comfort to the VB6 or asp.net programmer than any other language. Might as well start out with c#, get the benefits there and also have a very similar syntax as java, javascript (typeless though it is), or c++. If you love the curly brace, you'll love c#.
    Java is also a viable choice in this market, though once again, it's going to suffer if you're using a windows server.

    As mentioned before, you can use mono on your .net code to make it cross platform so vb.net or c# ARE cross platform to a degree. Ultimately it depends on what your boss is trying to get out of the application and what platform he/she is pushing on you.

    Hope this helps.

  69. Got nothing better to do? Troll by pookemon · · Score: 2, Insightful

    So they're identical - but VB.Net programmers can't learn the new (identical) language? Presumably you're not familiar with one or the other of these languages. VB6 developers that transferred to VB.Net had to learn the majority of their chosen language again. C# is more like Java/C++ than VB - the language and syntax is entirely different to VB.NET. The reason VB developers wouldn't learn C# is probably a productivity issue, rather than not being able to learn the language. Why waste time learning a new language, and rewriting (rather than converting) your existing projects when all that does it puts you in jeopardy of missing deadlines (you know deadlines don't you - that's what real programmers have). But heck - perhaps I'm missing the point - perhaps you are talking from personal experience.

    --
    dnuof eruc rof aixelsid
    1. Re:Got nothing better to do? Troll by Karma+Farmer · · Score: 2, Insightful

      VB6 developers that transferred to VB.Net had to learn the majority of their chosen language again.

      Yes, and my experience is that it takes them a long time learn, and they're not very good with it when they're done.

      The reason VB developers wouldn't learn C# is probably a productivity issue, rather than not being able to learn the language

      No, the reason VB programmers wouldn't learn C# is that they're generally not very good developers, and it takes them a long time to learn new languages.

      C# is more like Java/C++ than VB - the language and syntax is entirely different to VB.NET.

      The syntax is absolutely the most trivial part of any language. A Java developer should be able to learn the VB.Net or C# syntax in literally a few hours. The difficult part of any language is learning the libraries and runtime. A good developer can learn the basics of the .NET runtime in a few days, but might take months or even years to learn it well.

      The library and runtime for VB.Net and C# are (basically) identical, and the two languages can be mechanically translated. They really are the same language in nearly every way that matters to a developer.

      Frankly, the only significant differences in the languages are seen by a hiring manager.

    2. Re:Got nothing better to do? Troll by Baddas · · Score: 2, Interesting

      VB.net's syntax is, in my OPINION, inferior. It's much harder to write clean, legible code in VB.net than it is in C#, and it also leaves you open to a few other little idiosyncracies such as whitespace and linebreaks.

      Call me old fashioned, but when a line with two statements on it has a different meaning than two statements on seperate lines, it strikes me as odd.

      Probably most of this is a result of people who seek out VB.net because it is 'easier' rather than inherent in the language, so it might be more the VB.net 'culture' that I am criticizing. Regardless, maintenance is a royal pain in the ass, whatever the cause is.

    3. Re:Got nothing better to do? Troll by pookemon · · Score: 2, Insightful

      So you aren't actually talking about the languages at all - you are talking about the .NET Runtime - which isn't actually anything to do with the languages. It's like saying VB and C# are identical because both can call the Windows API. It's simply not true.

      And you are saying it takes VB developers time to learn VB.NET because they're bad developers. Nevermind the fact that VB has been around for years, that people have been developing in VB for years and that many of the core VB functions and objects have been moved out of VB and into the .NET framework. Of course it takes time to learn these things.

      A Java developer should be able to learn the VB.Net or C# syntax in literally a few hours

      Of course - because they are familiar with the use of Packages - which the Framework is built on. They'll learn C# faster because the Syntax is very similar to Java. They'll learn VB quickly because it BASIC (you are aware of what the B stands for I presume).

      The language is not what makes a bad programmer - it's their education and experience. The BEST programmers I have worked with were VB programmers (back in the VB3 days). They were great programmers because (a) They were methodical, (b) They worked to proven and widely published standards and (c) They knew how to write REAL windows applications. They were great using VB and extremely good when we shifted to writing C. The language had absolutely nothing to do with their skill.

      And your claim that they are essentially the same language is pure nonesense. Sure they compile to the same bytecode, sure they use the same framework but beyond having the same types virtually everything about the language (not the Framework) is different.

      The operators are different, the functions are different, the syntax is different. Variable declaration is different, operator precedence is different and the initialization of arrays is different.

      and the two languages can be mechanically translated

      Big deal. I worked with some guys a few years back that could "Mechanically Translate" Advanced Revelation (ARev) to Visual Basic. There's virtually nothing similar in those languages yet they could do it - simply because they took the time to write the tool to do so.

      Of course all this aside - you still say that VB makes bad programmers - and then you claim (incorrectly) that VB and C# are virtually identical - yet VB programmers don't learn the new language because they can't. Can you contradict yourself further?

      --
      dnuof eruc rof aixelsid
    4. Re:Got nothing better to do? Troll by jsnipy · · Score: 1

      That's not entirely true there are some difference when they are taken to msil. From a development standpoint C# offers a great way to generate code documentation (similar to JavaDoc). From a resource perspective, you will find sharper developers with C#. As for .Net i general, everything you write doesn't have to be super tiny and ultra-fast (unless ur a mindless codeslinger). It must be maintainable as well; new developers must be able to pickup what you have. If you are writing for a win platform .Net is the way to go - hands down.

      --
      -- if you mod me down, I will become more powerful than you can possibly imagine
    5. Re:Got nothing better to do? Troll by magores · · Score: 1

      Notice that he said "VB3" programmers.

      My thought is that...

      VB3 - 100 programmers, 90 were "real" programmers
      VB6 - 1000 programmers, 800 were "real" programmers

      You have to keep in mind the time-frame, and the relative prevalence of computers, in the times.

      There are more (quantity) real programmers now, but the percentage of people with actual skills now has decreased.

      --
      Then, again. I could be wrong. I'm sure someone will let me know if I am.

    6. Re:Got nothing better to do? Troll by CharlieG · · Score: 1

      I don't know if MOST Visual Basic devlopers have problems learning C#. Around here (a VB shop) we have no problem with going C# - and in fact, we have ASKED to go that way. You are quite right - switching is NOT terribly hard, and in fact, MUCH easier than learning the .NET framework.

      Will my productivity go down a tad when we make the swithc, because my fingers are used to typing certain words - yeah - for a few weeks I'll actually have to think about syntax, but then it'll be over

      I don't know if I hang out with a different class (pun) of VB developers than what you do. I WILL however admit that I HAVE seen a stack of the type you are talking about, but I also know as many who have no trouble working in either

      That said - to answer the original poster. IF I was doing a .NET re-write (and trust me, you probably don't want to do a straight port - that can be VERY ugly), I'd switch to C#. Partly because of the perception of folks that VB developers ARE lower, many of the better tools just don't exist for VB. Yeah, we have things like Refactor Pro, but we don't have ReSharper. We CAN use Nuint (and around here, we do), but more samples are in C#. Basically, it seems to come down to, the VB community (even on the higher end) will rely stricty on Microsoft tools, and what is in the IDE - even if the developer CAN do more, where there seems to be more willingness in the C# community to go outside, and use "other" tools - and this includes simple things like nmake, etc

      So, my only debate is over "Most" - I'll grant you a LARGE segment, but I'm NOT sure if I'll give you the 50%+1, but my sample tends to be biased, as everyone in this shop is LONG term VB guys - some going back to VB 1.0 - and all of us have had little to no problem learning C#

      --
      -- 73 de KG2V For the Children - RKBA! "You are what you do when it counts" - the Masso
    7. Re:Got nothing better to do? Troll by thc69 · · Score: 1
      Call me old fashioned, but when a line with two statements on it has a different meaning than two statements on seperate lines, it strikes me as odd.
      I'd like to see an example of that. TIA.
      --
      Procrastination -- because good things come to those who wait.
    8. Re:Got nothing better to do? Troll by pookemon · · Score: 1

      So would I - not to mention "Whitespace" idiosyncracies...

      --
      dnuof eruc rof aixelsid
    9. Re:Got nothing better to do? Troll by j_snare · · Score: 1

      Partly because of the perception of folks that VB developers ARE lower, many of the better tools just don't exist for VB

      That was actually along the lines of the reason a company I know of decided to head for C#. Though it was more on the resume line rather than tools.

      But overall, we found that most of our programmers preferred to use C# rather than VB due to the image they might get when leaving the company and going elsewhere.

      Every language does have it's place, but there are perceptions that can raise and lower a language's value...

    10. Re:Got nothing better to do? Troll by CharlieG · · Score: 4, Insightful

      Change that last sentence to...
      "Every language does have it's place, but there are perceptions tha can raise and lower a language's value ON YOUR RESUME"

      The perception itself does not raise or lower the actual value

      Story:
      Way back when, in the DARK days of DOS programming, and when most if not all of Microsoft's support was done on CompuServe, one of the forums was called "MSLANGS" - In there, among others, were the C form, and the PDS form (read that as Pro Compiled BASIC). Both generated OBJ files, for the identical linker (MASM used the same linker) - and in fact, if you wrote code that did NOT involve stings, and used the equivilent control structures, you got identical OBJ files. The big differences were pointers in C, and BSTRS in Basic. Now, as a LOT of business code then, as now, was string related, the string functions that were in basic allowed you to develop certain classes of application a LOT faster than the C guys. They would slag on us for "BASIC", and we'd smile, underbid them, and produce the work in less time. Yeah, the perceved value for a "BASIC" programmer was lower - but often the client didn't care what it was written in - only what the application did, how it performed, and how it was going to be maintained. So, which tool was more valuable? If I can underbid you by 10%, but do the job in 25% less time.... (hence, get more contracts...)

      Languages are tools - pick the tool for the job.

      Of course, sometimes part of the "Job" is your OWN personal development - then perceptions count for a lot

      Back then, it was HARD for a BASIC programmer to get a job - VERY hard. It was niche - BIG time (IEEE-488 aka GPIB aka HPIB instrament control was one - the one I was in). Even if you had a CS degree, folks looked down at you. Then one day, Microsoft came out with VB 1.0. I ordered my copy that day. The world changed. Withing a year, the folks who KNEW BASIC (the old DOS stuff) were in demand, as we actually had a clue. I've never looked back. I've done some C, some light C++, enough MASM to have shipped a bunch of old DOS drivers to clients, and now C# and others.

      My advise to anyone reading? Don't be a lanuage snob, but also, don't forget, there are language snobs out there, perceptions DO matter, and don't let yourself get boxed into a corner. Evolve or die

      --
      -- 73 de KG2V For the Children - RKBA! "You are what you do when it counts" - the Masso
    11. Re:Got nothing better to do? Troll by bryce1012 · · Score: 1

      The following IS correct: If (a = b) Then b = c End If The following is NOT correct (and will cause a compile error): If (a = b) Then b = c End If

    12. Re:Got nothing better to do? Troll by bryce1012 · · Score: 1

      (I guess it would work better w/ proper line breaks, huh? Stupid submit-button-on-right...)

      The following IS correct:
      If (a = b) Then
      b = c
      End If

      The following is NOT correct (and will cause a compile error):
      If (a = b) Then b = c
      End If

    13. Re:Got nothing better to do? Troll by Schraegstrichpunkt · · Score: 1
      I imagine you gripe about Python, then, too.

      Of course, I can't give a decent example because Slashcode doesn't seem to allow leading spaces on lines.

    14. Re:Got nothing better to do? Troll by alnjmshntr · · Score: 1

      They really are the same language in nearly every way that matters to a developer.

      C# implements some things, such as event raising (off the top of my head), in very different ways to vb.net, making it more of an excercise than just learning a new syntax.

      You're right that if you program in c#/vb.net it is remarkably easy to switch between the two for any competent programmer. But if you're implying that's it's just a case of using a different syntax, you'd be wrong.

      --
      If I had created the world I wouldn't have messed about with butterflies and daffodils. I would have started with lasers
    15. Re:Got nothing better to do? Troll by DahGhostfacedFiddlah · · Score: 1
      You mean like this?
      Use <ecode>
    16. Re:Got nothing better to do? Troll by alnjmshntr · · Score: 1

      Uhm, just leave off the "end if" in the second example since it's not required.

      This is *exactly* the same as { } is not required in c# type syntaxs when you use a single line.

      Your second example would be like writing this in c#
      if (a==b) b=c;
      }

      which would get you a compile error too.

      This is hardly a problem with Vb syntax, all it means is that VB uses a space for a line deliminator while C# uses a ;

      --
      If I had created the world I wouldn't have messed about with butterflies and daffodils. I would have started with lasers
    17. Re:Got nothing better to do? Troll by Marxist+Hacker+42 · · Score: 1

      However, oddly enough, the following will NOT produce the compile error: if (a=b) then b=c For reasons related to the history of basic....

      --
      SJW: a person who perceives an injustice, and while correcting it, commits a greater injustice.
    18. Re:Got nothing better to do? Troll by Marxist+Hacker+42 · · Score: 1

      And then I forget MY line breaks:
      However, oddly enough, the following will NOT produce the compile error:
      if (a=b) then b=c

      For reasons related to the history of basic....end if is not require if the if statement is all on one line.

      --
      SJW: a person who perceives an injustice, and while correcting it, commits a greater injustice.
    19. Re:Got nothing better to do? Troll by Anonymous Coward · · Score: 0

      You're right. The volume of language snobs out there is astounding.
      In practical terms there's not much you can do in c# that you can't do in VB.Net (that a business gives a damn about: PHD CompScis and their wierd ideas are a different matter).

      What it comes down to is indeed productivity. A new group was recently added to my shop (which was previously a vb shop) where the project manager is a non-microsoft guy with limited vb experience. The reasons he had for mandating c# for new development were completely bogus. The effect was that three of the four vb guys here have left and been replaced by java guys who can transfer easier to C#. I hear them bitching about vb all the time as they convert it but I don't see what their glitch is. The old code works. For me, I see the writing is on the wall. I really like the new stuff added to vb.net and functionally I don't see the difference between it and c# and for me the natural choice would be vb.net because I can code it on autopilot, but C# I need to slow down and compare syntax. Some stuff that is obvious to the java guys isn't obvious to me. But likewise there are a bunch of workarounds for things here and there in c# that vb has natively.

      In the end it's a losing game: the java guys and c# guys are brainwashed and think they're better and smarter than vb guys and since this is an industry in which people by default are arrogant SOBs who think they are smarter than everyone else then they tend to be drawn like fish to water by the inexorable marketing campaign that c# is better.

      It's the betamax vs VHS thing all over again.

    20. Re:Got nothing better to do? Troll by Anonymous Coward · · Score: 0

      "From a resource perspective, you will find sharper developers with C#"

      What a bunch of bull.
      You will find developers who have a "holier than thou" attitude.
      They don't write cleaner code.
      They don't write more productively.
      They don't write less bugs.

      In the end all they have is attitude and the ability to have pointless arguments about whether the definition of null in C# ought to be changed to that of java.

      Guys! Get the friggin job done and stop wasting time.

      Sheesh.

    21. Re:Got nothing better to do? Troll by Schraegstrichpunkt · · Score: 1
      I did.
      if True:
      print "foo"

      Doesn't work.

    22. Re:Got nothing better to do? Troll by j_snare · · Score: 1

      I don't mean to be a language snob, not by any means, and I do truly think that any language has it's place in a proper and completely open-minded environment. We use a pretty wide variety of languages here, and encourage usage of new tools and languages, as the project comes up that can use these tools.

      However, I wasn't talking about a resume when I said that perceptions can raise or lower a language's value. I was talking about the value to the business.

      When we look for programmers, we look for good people. Experience with multiple languages is a plus, to the point of looking for people who feel that languages are just languages, that one language is virtually the same as any other, and they can learn a new language in a very short period of time.

      However, depending on what you put up, you can get different types of people. Any good programmer should recognize that no matter what language a company puts up, they can handle it. But bad programmers get stuck with a single one and don't think they can handle the others.

      I probably didn't say it very well, but hopefully you get my point. We're looking for good people, not people who cannot handle whatever is thrown at them.

    23. Re:Got nothing better to do? Troll by i3lack0p · · Score: 1

      Amen Brother!

      I agree with Charlie. There a lot of languages out there and they all have their strentghs and weeknesses. VB's weekness tends to be builkiness, but thats typical of bad programming. One thing to keep in mind when if you choose VB as your project language is to properly define your variables. Too many people in VB forget about the fact that each variable type takes up so much memory and properly selecting these types cuts down on memory consumptiona and improves performance. Try and stay away from the variant datatype unless absolutely necessary. In VB I typically only use it only if im writing an import portion of my porgram so that I can take a wider range of formated files, but otherwise I specifically do specific datatypes. Also over the years I have seen lots of VB programmers open an object and leave it open till the end of the program, but this method (though it may seem faster) can cause issues with underpowered machines, so be careful in your selection of what objects to keep open throughout the life of the application process.

      Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.
      Rick Cook, The Wizardry Compiled

    24. Re:Got nothing better to do? Troll by CharlieG · · Score: 1

      Type Object? Variant? Other than the RARE late bound object - for instance, where I am defining a plug in - I see VERY little use.

      In VB6, make SURE you use Option Explicit

      in .NET - make SURE you use Option Explicit AND Option Strict

      TDD is your friend in C# or VB.NET

      Proper class design is important - encapsulate your data - your data should have a small a scope AND lifespan as you can. This stuff is basic "programming" no matter WHAT Lang you program in

      As I said - BAD code can be written in anything - and yeah, as much as I'd hate to say it, there is probably more BAD VB code written than anything else, but part of that is that there is probably more VB code written than anything else.

      I STILL won't grant the original poster the "MOST VB programmers are bad" - I WILL say that there is probably a higher percentage of bad VB programmers than most other langs, but it does not mean there is not some great VB code out there

      --
      -- 73 de KG2V For the Children - RKBA! "You are what you do when it counts" - the Masso
    25. Re:Got nothing better to do? Troll by CharlieG · · Score: 1

      Yep - your point is WELL taken. The basics are the basics - and the basic ideas behind MOST languages are similar (well, there are broad categories).

      There ARE times when folks will throw something at me where I'll honestly say "I DON'T have a clue how to do that - I'm willing to TRY, but you might be better off with someone else" aka "A man has GOT to know his limitations"

      Oh well, back to the code farm - re running a data feed from 2 years ago, to double check an app we are changing

      --
      -- 73 de KG2V For the Children - RKBA! "You are what you do when it counts" - the Masso
    26. Re:Got nothing better to do? Troll by Anonymous Coward · · Score: 0

      Right, but we're making a couple big assumptions here.

      1. People who have only used one language can't learn another easily.
      2. Value to the business is subjective.

      In the 1st case you may have noticed that the longer you have used a particular language the more money you make. Quite clearly someone straight out of university with experience in PHP, Perl, Python, C++, Java is going to be less productive with Java than someone in VB who already has some years of VB experience. In my own particular case my first language of commercial experience was Turbo C 1.0.
      I liked it a lot but I have to be honest: when VB3.0 came out I liked it much better. It was far faster to code and I spent way less time screwing around trying to debug. I now have close to 12 years experience with VB and as such I am an incredibly productive individual. The argument that I would be equally productive in say, C++ or Java doesn't hold. Sure I could learn them, but who would pay me to do so?

      Examing 2nd assumption: If you are a consulting shop targeting different customers who have heterogenous development environments then sure, having programmers who can switch from one to another language is a plus for you.
      My 2c would be that most shops are not like this: most shops would prefer someone with significant experience of the single most commonly used language in house than someone who have varied and lesser experience with a multitude of different languages.

      So yes I get your points and I accept the validity to a point but on the other hand...

    27. Re:Got nothing better to do? Troll by Fulcrum+of+Evil · · Score: 1

      And you are saying it takes VB developers time to learn VB.NET because they're bad developers. Nevermind the fact that VB has been around for years, that people have been developing in VB for years and that many of the core VB functions and objects have been moved out of VB and into the .NET framework. Of course it takes time to learn these things.

      Yeah, except that VB was targetted to non-programmers, so they suck at it. Because they aren't programmers. For a decent programmer, VB->VB.NET should be the work of a week or two.

      The language is not what makes a bad programmer - it's their education and experience.

      And VB is targetted at people who don't want to program much.

      --
      "We returned the General to El Salvador, or maybe Guatemala, it's difficult to tell from 10,000 feet"
    28. Re:Got nothing better to do? Troll by DahGhostfacedFiddlah · · Score: 1

      Weird - worked in preview for me - but now it doesn't.

  70. What's wrong with VB? by Jerim · · Score: 1

    I tend to question your immediate distrust of VB. Sure, I have heard all the opinions on how VB is crap from several sources. However, their criticisms are usually very specific and to be honest, quite nitpicky.

    I have VB.net experience. It is a good language for quick and easy programs, for a small company. Don't set out to convince your boss it is no good, unless you have a valid reason.

    That being said, if for whatever reason you still don't want to use VB, you will need to come up with good "business" reasons. Telling your boss something along the lines of "it does not right adjust the data variable in arrays, which can lead to inverse tachyon pulses in the flux capacitor" is just going to get you know where. You have have to come up with the type of reason that one user suggested when they mentioned that VB isn't cross platform. Or that it is EOL. Even thoughs are quite flaky if the boss has no intentions of upgrading the computers any time soon and doesn't really care about the 10% of the population who use something other than Windows.

    He is a business man. As long as it works and "looks right" he isn't going to care diddly-squat about changing the language.

    My advice, is to just ask if he is dead set on going with VB. If he says yes, leave it alone. If he says, "Why, you want to do it in something else?" then I would give him your opinion. However, right now it just sounds like you want to change something that already works for no apparent reason. (I assuming that the owner just wants the code updated and maybe some features included. Otherwise, the program itself fine.)

  71. Why by xihr · · Score: 1

    Why would he hire you to rewrite the software in Visual Basic if you're not familiar with Visual Basic? Moreover, if that were to happen, why would you take the job?

  72. Business Decision by morcego · · Score: 1

    There is a very important point you are overlooking.
    The code was created by the owner of the company. He understands VB.
    And so, there is a very important business reason for the keep to continue on VB: if you leave, the owner can maintain it.
    From your post it seems it is a fairly small company, at least from the IT point of view. I get the feeling you are the only programer there.
    If you leave, there is no one to take care of the code until someone else is hired, and that can take some time. Who will manage it during that period ?

    I don't like VB _at_all_, but it make a lot of sense to keep using it for the reasons I pointed above.

    --
    morcego
  73. do it in a darn-huge shell-script by Anonymous Coward · · Score: 0

    LOL... I also can't figure out an argument against making buildings on lego blocks.
    It's quick to deploy, and easy! My grandma can build a house too!

  74. Why introduce even more bugs? by lewi · · Score: 1

    Since the owner is so comfortable with VB, he is likely comfortable in the possibility that any arcane bugs will be relatively easy for him to fix or identify for the team. He probably has a good idea of what to look for before the software is released. Although tests are great, they never catch everything and he probably is counting on his tribal knowledge of the program and VB as insurance. Besides, if he has trouble with a team member, he probably thinks that he can jump right in without loosing any time.

    Porting a program to a new language introduces more bugs than a rewrite because some things don't port directly, though they may come close (even VB to VB.Net). There are also bugs in any language and chances are that the owner is familiar with a good percentage of the VB bugs.

    Also, he may be one of those that thinks "I can do it all and have done it all" and has the attitude that he only needs people because he doesn't have the time to do it all by himself. If he is like that then nothing you do will be appreciated.

  75. Obligatory by symbolset · · Score: 1
    what tasks would VisualBasic not be suited for?

    All of them?

    --
    Help stamp out iliturcy.
  76. 2nd argument: which language for large projects? by Monkier · · Score: 1

    which language are you going to offer as an alternative? you know which one is the best for a large project? - the one you've got large project experience in. sounds like you'll be carving your boss out as a possible contributor to the project - if you switch languages you'll be responsible for the choice. you can hang yourself in any whizbang language. what matters is experience...

  77. C++ and Java by Anonymous Coward · · Score: 1, Interesting

    What about C++ and Java?

    In which areas is each one good in?
    In which areas is each one bad in?

    Good arguments against C++
    Good arguments against Java

    Good arguments for C++
    Good arguments for Java

    How good is each one in terms of:
    * Purely Object Oriented
    * Multi-threaded
    * Dynamic
    * Portablity
    * Robust
    * Secure
    * High Performance

    I am sure lot of us would like to know what other people think about the same. So, more comments, the better....

    1. Re:C++ and Java by gangien · · Score: 2, Insightful

      Good arguments against C++

      manual memory management, obfuscated syntax, to many ways to shoot yourself in the foot.

      Good arguments against Java

      performance is bad, requires a JRE to be installed to run, which can be a pain. Can be hard to do simple things (eg all primitives are signed)

      Good arguments for C++
      good performance, as good as you can get. Many platforms have compilers for it. Open and well known. Lots of preexisting libraries for it.

      Good arguments for Java I'm going totake some liberty and assume by java you meant he language and the JVM together. (no c++ equivlent)
      Compile once, run anyway (via shell scripts or similiar mechanisms) compile on windows, run on z/OS.. cannot say that about much (anything? else). Vast library, no memory management, very clean language that's simple to understand and adapt. Easy to plug 3rd party libraries in and use.

      How good is each one in terms of:
      * Purely Object Oriented

      Java very good, almost pure OO language.
      C++ not pure at all

      * Multi-threaded
      java this is as simple as i've seen
      C++ a pain and somewhat platform dependant

      * Dynamic
      I'm not sure what you mean by this really.

      * Portablity
      Java wins in that you compile once, run many places
      C++ wins in that the same code can be compiled virtually anywhere

      * Robust
      Java provides mechanisms that make the code much more robust
      C++ wins in that it's more deterministic, no relying on wierd VM things

      * Secure
      I don't think i'm experienced enough to really comment on this one

      * High Performance
      I'm no thte biggest of fans of the idea that java is slow because it runs on a VM. For most apps, this difference is trivial. For some apps, such as games, this difference is critical.

      Overall, I'm a big fan of java and the idea of byte code that runs on a VM, as opposed to native code that runs directly. That said, there are areas where you ahve to use native code (eg: making system calls) or it's better to use native code (games). I think C and java will outlast C++ though.

    2. Re:C++ and Java by Anonymous Coward · · Score: 0

      Sure!

      > * Purely Object Oriented

      Who cares? :) More importantly, why do you care?

      C++ does not limit itself to one paradigm. Java wanted to, but desprately failed. Compare to Smalltalk.

      That was a little tongue-in-check (although still serious), but think about this: Why does Java have Int and Integer? Not "what do they do differently", but /why/.

      > * Multi-threaded

      Seen a really good thread model out there? I'm waiting. (I mean, good for 'everything'-- not good for one or for a few things.)

      > * Dynamic

      Huh?

      Java the language isn't very dynamic. Really. Have a peek at Ruby. JVM is highly dynamic.

      So?

      Oh, yeah. C++ isn't dynamic. Of course, so many applications that we use are written in C++ that it's hard to tell. And, since you seem to be asking about languages, wouldn't you like to know when your language has predictable behavior, and when it doesn't?

      There's no reason you can't write a Java compiler, which compiles to real
      machine code. Right?

      > * Portablity

      C is the most portable language yet. Look at the evidence.

      C++ is mostly backward compatible with C. Java isn't. So...

      That's what portability means. Whether or not something runs on some virtual machine (by the way, a working JVM is usually good proof that your C or C++ compiler is working fine on that same platform)... well, lots of things do that. What do you think JVMs or Perl or OCaml or... huh. Forth is good (and I do mean that).

      > * Robust

      Huh? What's that mean? You can write robust or brittle programs with anything. Can your write a truly good program (in whatever language you like)? It is not easy!

      Really, what does "robust" mean? Maintainble? (Let me know when you figure that one out, I would love to know! :>)

      > * Secure

      Hm. What does this have to do with programming languages..? (By the way, are all the doors and windows of your house really very secure? We've only had a few thousand years to perfect those, so I was wondering what sort of progress you appear to be demanding.)

      > * High Performance

      Under what conditions? Really. Think about this: You have a thread of some kind (let's say a garbage collector, though surely that doesn't have to be it) which kicks in at an indeterminate time. Consequentely, I recieve two drops of a drug through my I.V. instead of one. I die.

      But it sure was fast.

      Think about this, too: you can easily write a bad microbenchmark which shows X is faster that Y. Let's say that X was a list copy with Java and Y was the same with C++.

      Also: You do realize that Java programs typically run on JVMs? And you also understand that most JVMs are written in (gasp!) C++? So what? I agree. (Hope you aren't using any other C++ programs. I mean, /all/ of them totally suck.)

      The unpredictable performance of programs (from compilers of any language) for JVMs makes them entirely unsuitable for hard real-time applications. Understanding of the operating system, if you're running under one, or the hardware (if you know you're running on it) is not replacable.

      The point is that there are a lot of variables to consider. Java is sold as a language, but is in reality an entire platform. You can develop applications "quickly" with pretty much any language that you want, when you have libraries that do exactly what you need.

      This is not the same as offering programming facilities.

      Make sense? I hope so. :-)

  78. 1 reason from personal experience, RealBasic by Jack9 · · Score: 1

    RealBasic is quite portable and surprisingly stable. I've used it for a couple months and have VERY few complaints. Python on the other hand...

    --

    Often wrong but never in doubt.
    I am Jack9.
    Everyone knows me.
  79. Each to his own by tccd22 · · Score: 2, Interesting

    I taught myself C in college and made loads of money making small programs. I got to learn C++ and VB simulatneously when working on medical imaging projects. There are three main points i would make for extending a perhaps "legacy system" thats built using a language, any language

    1) If it aint broken dont fix it.
    I guess you are quite a whiz at OOPS and C++ but what you really need to do is bring in the DELIVERABLES. So dont bother asking the question... if its built in VB (i would guess vb6) and it isnt a lot of pain (some say VB is a walk in the park, really?), dont mess with it.

    2) Make sure you are familiar with it without prejudice!
    Oh yeah, i heard a lot of people cursing, blaming and even trying to bring on a ban of sorts for VB6 but seriously its been a favorite RAD tool for many many people. And i suspect some people who do all the above may even use it when they need a quickie UI built! But seriously, i dont see any point burining VB6 at the stake and i dont see any point in installing in on a pedestal in the RAD Hall of fame... its a language, its used (quite extensively for "front ends") so get familiar and then form an opinion.

    3) If all the above dosent work, the boss will realise himself
    I agree to this -> VB can be a hell at times. I personally like coding in C++ and the .Net (pref. C#). so if the boss dosent see the point right now, he will in a few days
    ... hopefully :)

  80. What? by Anonymous Coward · · Score: 0

    He hired me to assist in rewriting the software - only catch is, he's stuck on having it re-written in VisualBasic.

    That's his perogative.

    This scares me, but I honestly can't make a good argument against VB because I'm not familiar enough with it.

    Then you're obviously not the man for the job, and you are fucked.

  81. VB6 pros/cons... by MWales · · Score: 2, Interesting

    In my limited experience with VB6 at my work, I've found:

    Cons:
    - Doesn't really support multiple threads. I think there is a way you can do it via ActiveX controls, but it's not really built into the language like it is in Java.
    - It's not really Object Oriented. It sorta has objects, but it doesn't even support inheritance.
    - Your pretty much tied to using Visual Studio as the editor, and it shows it's age
    - Your stuck with Windows for the rest of the applications existence
    - VBs horrible syntax
    - The whole language will give you a "half-assed" feeling

    Pros:
    - Stupid easy to build a GUI
    - RS-232 interface is also very easy in VB6, but strangely, it's a PITA in VB.net

    I honestly don't think there is much of anything I would recommend it to be used for. Maybe to learn basic programming skills, or a REALLY quickly thrown together GUI, but nothing big. I would look at C++ or C# for .net, or Java myself.

  82. Huh? by Anonymous Coward · · Score: 0

    I always thought that VB was just leet speak for AOL ProG CoDERz.

  83. Assuming VB6 by Anonymous Coward · · Score: 0
    Much like perl's use strict; and use diagnostics;. Start each VB6 module with Option Explicit.

    Get used to different types of files can only do certain things:
    • Only Forms can create controls and control arrays.
    • Class files can have a WithEvents property set by referencing one off of a form.


    Consider the following:
    • Right after creating a Class Instance do a With/End With to finish up it's construction, since nothing more than defaults can be set within Class_Initialize()
    • Make use of properties.
    • Understand events and how to raise them
    • Clear any Parent references in Children's Class_Terminate, artifical reference count inflation due to cyclical references.
    • Make judicious use of DoEvents()! Instead, focus on making event handlers run quick!
    • Plan on using asynchronous interfaces provided by various controls rather than making blocking calls (can defeat acting quickly fast). Will add a couple more event handler's to the mediator, but who is keeping exact count?
  84. Make a Comparison Table by Chemware · · Score: 1

    Remember that this is your boss's pet language. Say three nice things about it before you trash it. The best way to do this is a comparison table with columns like:

      * upgrade path
      * portability
      * availability of trained staff
      * error rate
      * development speed
      * performance
      * etc, etc, etc.

    The "best" language will depend, as other have said, on what the exact application is.

    Given that your current environment is VB6(?), I would suggest that you consider:

      * VB.NET
      * C# - because VB.NET is much closer to C# than the original VB, so you might as well bite the bullet.
      * Delphi - although unloved by IT types, it is a very good RAD environment suited to a medium-sized shop, and offers portability that puts M$ products to shame (Win16 projects can be opened, built and run for Win32 and .NET, with Win64 coming).
      * Lazarus / Free Pascal - an open-source Delphi clone that is a bit clunky, but covers a very large number of platforms.
      * RealBasic - a VB "clone" that is very cross-platform.

  85. VB6 - The good, the bad, and the ugly by Eesh · · Score: 1

    First of all, you really should consider the project's needs and your customer's needs. For example, I'm developping and supporting some small point-of-sale application for over a year now, and I chose to write it in VB6. The project called for something that would be ready in about 3 days, and work on old machines, so neither C++ nor .NET were a possibility.

    For small (Or even medium) apps that are not speed-critical, and just handle files, user input, and database data, VB6 is great. There's also a huge supportive community around it, that adores Copy & Paste, and I say that as a good thing - When you see a code snippet on some site, chances are you can use it without modifications. It will be "packaged" as an independent function or module. And people do great (and crazy) things with VB6 - You can find almost anything on the web..

    The major problem with VB6 is that Microsoft killed it off, and left people like me without a replacement (Support a .NET app on Win98SE? Yeah right). However, there are a few companies I heard of that offer VB6 language clones that are supposed to be good, and even better than VB6. Google...

    All in all, I'll continue using VB6, unless I stumble upon a really big disadvantage.

  86. there isn't much of an argument by m874t232 · · Score: 1

    VB and VB.NET are effective, productive programming languages; on technical grounds, you have very little grounds to argue against them. In fact, for most applications, they are probably better languages to use than C++.

    Performance used to be an issue with VB, but is not with VB.NET anymore; even in VB, a good strategy was to write performance critical code in C (as little as possible) and the rest of the application in VB. And the VB language (but not VB.NET) had grown organically, so that, as a language, it was a bit crufty, but I don't think that mattered much.

    Of course, VB code frequently has problems, but that has causes outside the language, foremost that the IDE enables people with little experience to write applications, and the way the IDE handles GUI design (also a problem with VC++). Another big problem with VB is that it's proprietary, so you are stuck on the Windows platform; however, there is a VB.NET implementation being created for Linux.

    So, overall, I don't think you have much of an argument, in particular if the discussion is about VB.NET

  87. Development strategy by wysiwia · · Score: 1

    I would argue not using VB on the basis that it is not cross platform. ...

    I second that, if you become successful with your product sooner or later you'll be confronted with this question. As soon as you want to sell your product to governments or city administrations you'll be faced with this question.

    Yet VB definitely has no long time future and you have to switch anytime. If you surely know you always stay in the Windows environment you might choose C# but I wouldn't advice that. You can equally well choose to switch to C++/MFC (as somebody else advised) and still have the road open to anything. From C++/MFC it's quite easy to switch to C++/wxWidgets which you should target in any case in the long run. With wxWidgets your code almost instantly becomes cross-platform without much extra work. All you have to do is keep an eye on wyoGuide (http://wyoguide.sf.net/), it advises you how to code so your product becomes cross-platform even if you never actually try it out.

    So before you switch design your development strategy first. Since development always needs time, sometimes years, and you have to support your product even longer. So IMO moving slowly towards C++/wxWidgets pays off in any case. Any good developer knows C++ and wxWidgets is quite a full featured framework.

    There are more ways to develop good products but I simply can't advise them. Java with all its addins isn't easier to code than C++ anymore, faster development time has become a joke and Java applications are easily spotted by the users and definitely not liked. The QT framework is another alternative but there seems to be no free cross-platform applications and when you look how long it takes to port GoogleEarth to Linux I'm loosing fait. Yet the GTK+ framework, forgive me if I say it so blunt, might be useful for free SW but in no case for commercial development.

    O. Wyss

    --
    See http://wyoguide.sf.net/papers/Cross-platform.html
    1. Re:Development strategy by ednopantz · · Score: 1

      The question is: is it worth abandoning the RAD benefits of VB (or .NET for that matter) to pick up that last 6-10% of the market? Or, if it is a business app, that last 2-4% of the market? In a lot of cases, it just isn't worth it.

    2. Re:Development strategy by spirality · · Score: 1

      Qt is very nice for commercial development. It's fairly cheap, on the order of $2000/developer/year. There are no royalties. Their preprocessor is a bit of a pain in the ass, but once you understand it you live with it.

      I don't know wx, so I don't know what it provides, however, Qt is much more than a GUI development toolkit. It has portable network libraries, regular expressions, threads, of course GUI elements, a great string class. It's a solid cross platform development tool kit.

      It's better than MFC because you can tweak the source if you must, which my company has. In that regard it has been very useful.

      Qt's support is responsive if you have a commercial license, though I have to say I've only used it about three times in as many years. The documentation is outstanding.

    3. Re:Development strategy by Anonymous Coward · · Score: 0

      Indeed, if you're actually looking to make money off an application, and it's a desktop application, there's only one platform that matters: windows. So what if it doesn't run on Mac, or GNOME, or KDE; their respective share of the market can best be expressed as "mouse nuts".

      So while I'm all for cross platform server apps (I make my living writing enterprise java applications that run on linux and solaris servers), it takes a willful ignorance to the economics of the software industry to argue platform compatibility as an important feature in a desktop application.

  88. Freewheel works better by Anonymous Coward · · Score: 0
  89. Interpreted? by Anonymous Coward · · Score: 1, Informative

    .Net has never been interpreted. I doubt it ever will.. Code is compiled to byte code. When executed, the JIT steps in and compiles it, then runs it. The IDE and debugger run against compiled code. You can step through at source level, IL level, or ASM level. There is no interpreter, anywhere.

    There was a 16 bit version of VB4, but not many people used it.. Most used the 32 bit version of VB4. VB5 and up were all 32 bit, and COM based.

    Other than that, your other points are very pragmatic.

  90. Choose the correct tool for the job by brick_in_the_wall · · Score: 2, Informative

    VB has taken a lot of slack, because it's a language which gives a lot of slack. You are free to write really bad code, and VB won't complain about compiling or running it. ActiveX provides a really useable interface for components (libraries and widgets) which makes deployment quite easy, and coding in parts easily attainable. That being said, it comes at a performance cost, which I wouldn't want to incur if I didn't have to (for instance, using the ActiveX ADO controls penalises you by as much as 1500%, over writing code that talks to the ADO libraries directly).

    VB6 is, and, in my opinion, for a long time will be, a very good platform for building database-driven applications for the win32 environment. Also, WINE has no problems with VB6 stuff, so a deployment method for "alternate" clients is the WINE route, though I don't personally offer that as an enterprise solution -- it's a work-around. But there are a lot of software houses that are quite happy providing solutions only for the win32 environment. .NET has a lot to offer -- and I don't think you will lose on the performance side, because, as someone earlier forgot to mention, although .NET is compiled to an intermediatary language which is interpreted, so, to an extent, is VB. Which is why the IDE provides such an easy-to-use debugger with relative ease. Trust me, the VB6 ide beats the Delphi6 one hands down, especially with respect to real-time debugging (you can actually change your code and carry on debugging without a recompile, for example).

    The move from VB6 to .NET isn't minor, as someone else would suggest. For one thing, .NET kind of forces you to go OO, where VB hid that from you if you didn't want to know about it. VB.NET isn't a simple hop from VB6 -- yes, the syntax is nearly exactly the same, but you have to learn the underlying libraries and code structure as well. There is a curve there, but it may well be worth it because of the compile-once-run-anywhere concept of .NET.

    All of this doesn't really make that much difference when I don't know your exact target. But I'm assuming that it's not a 3D fps, since that would be just nasty to code in VB (: . If it's database-driven, then VB isn't really your enemy -- but it would be worth the "free cross-platform power" to learn the VB.NET route. I think your boss probably wants to keep in on the action, and moving to a totally foreign language and library base may be a very diffcult move. I faced something similar at a pervious job, where I tried to show the merits of PHP versus regular old ASP (not .NET). I originally met with postivity, and showed a migration route, even taking the time to put together and lecture notes on what one needed to know to migrate from ASP to PHP. I even built a mechanism for sharing the session between ASP and PHP pages with relative ease, so that a hybrid environment could exist. And after some time, because my boss didn't take it on, my fellow workers didn't bother. I know that today, they are even looking at re-writing a system I wrote in ASP, now that they have more clearly defined the requirements of the system, and realised that I built something far too complex for them. The point is, they weren't willing to move because it was too new and foreign, and they didn't have a driving force (ie. a boss with determination) to enforce the change.

    Whatever you run with, you have to get your boss to take it on first. Selling it to your team mates may be a waste of time. I would also urge you to choose something cross-platform, just because the way of the world is tending more towards open platforms. I could push any of the seven languages that I use on a (fairly) regular basis, but I don't think this is the place to start a sales pitch. If you would like to discuss this further, feel free to contact me. I think I've seen a lot of what you're talking about before, and I may be able to give you a more objective approach.

  91. Argument? by Anonymous Coward · · Score: 0

    Slashdot: WHADDAYOU WANT?
    VB: Well, Well, I was told outside that...
    Slashdot: DON'T GIVE ME THAT, YOU SNOTTY-FACED HEAP OF MALIGNED SYNTAX!
    VB: What?
    Slashdot: SHUT YOUR FESTERING GOB, YOU TIT! YOUR TYPE MAKES ME
    PUKE! YOU STRUCTURELESS STUFFY-VARIABLED MALDELIMITED CODE!!!
    VB: Yes, but I came here for an argument!!
    Slashdot: OH! Oh! I'm sorry! This is slashdot!

  92. How by nastyphil · · Score: 1

    If you're not familir with VB, how do you know you should argue against it?

    --
    Dialectician. Archology.
  93. Every Programmig Language has its own Pros & C by csshyamsundar · · Score: 2, Insightful

    Disclaimer: I code in VB, Java and Python.

    VB is one language., from where many ppl. AFAIK started out their programming career.

    Many "Others" argue that VB is suitable for only desktop database applications and and mid-level applications and cannot be used to make Enterprise Apps., but with proper planning and knowledge of VB's known bugs one can make a decently performing Enterprise Apps that runs for say atleast 3 years. (I have seen no application perform correctly for more than 3 years)

    "Others" argue., VB is not well defined in many aspects right from Socket Programming, GDI etc.., I'd like to say.., if tahts the case., try using alternatives., I remember I have used created an Prformance Effiecient Server handling about multiple connections suing "CSocket" in VB..,

    I dunno if you ppl. are aware of PlanetSourceCode.com :: Its VB section is the most active section and enen this month if you see its hall of Fame., the winner is an NT master class., where one can control most of the Aspects of an NT based computer (2000/2k3).., which clearly defines the Fact that mnay things can be achieved EASILY in VB.

    If anyone speaks about dependcies.., a clearly well written Vb app has at the most its VM MSVBVM60.dll and its COM servers if reqd [where MSVBVM60.dll is included right from win2000]., perhaps to be reminded .NET apps need .NET framework and python app needs its python Interpreter. [ even files compiled with MS VC++ need MSVCRT.dll ;) ]

    If anyone says VB is an interpreted., so is python and .NET.., also I'd like to say about the poor multithreading performance in Python.., not very effecient. Though VB6 natively doesnt supoprt Muthithreading., using VB5 one can achieve multithreading or some thrid party COM servers will help.

    This I conclude Each Programming language has its own PROs and CONs and nothing in this world is PERFECT.., VB is no exception and so are other langauges.., and I finally say., M$ killed VB6 for their .NET..,

  94. Sticking to VB is asking for strange bugs by Z00L00K · · Score: 2, Insightful
    since VB isn't type-safe. It may be easy to write in VB, but you lack a lot of the safety offered by C# or Java.

    And if you really have to stick with VB, you have to impose strict coding rules, like requiring "OPTION EXPLICIT" on ALL code, be strict about variable naming and so on.

    Better be so strict about the rules that you actually end up with C#.

    --
    If builders built buildings the way programmers wrote programs, then the first woodpecker would destroy civilization.
  95. It does have it's place too by Sycraft-fu · · Score: 5, Informative

    I remember back in 2000 my roomate had a job with a small firm that was kind of a "coders for hire" place. They didn't have a product, but if you came to them with something you wanted made they made it. Mostly a bunch of CS grads that didn't know anytihng but Java, however a few like my roomate were more diverse. He knew a few languages but PERL was his thing. Guy was a complete PERL badass wrote amazingly fast PERL code. PERL + MySQL development under Linux was his thing. Not at all a fan of MS development environments.

    So General Motors, or at least some small division of it, hired their company to do a project and my roomate was assigned to it. He was kinda miffed though, because GM insisted it had to be done in VB. He talked to them and they acceded that the backend could be in PERL, but the client side UI had to be VB. Well he didn't really know anything about VB, he just disdained it as a "toy language"... That all changed on that project. He was amazed by it's flexability in doing Is and speed of development. He said that every time they totally changed the requirements of the client interface he could get a new one done in a couple hours.

    In the end, he was certianly no VB-all-the-time convert, but he had a respect for the situations it was useful in.

    Not knowing anyting about this project I can't say, but there are projects out there that something like VB is the best answer for.

    1. Re:It does have it's place too by Jesus_666 · · Score: 0, Flamebait

      True. VB has one strength: Convenient interface development. No other language/GUI toolkit I know has that.

      With Java/Swing you have NetBeans which sometimes does what you want and only accasionally completely screws up the form you're working on. I don't know about SWT.
      With C++/WxWidgets you get WxGlade which I have never seen actually working. C++/FLTK gives you Fluid, which works most of the time but has always given me problems when working on programs that don't fit in a single file. The Qt RAD tool appears to work, but I haven'tspent much time with it so far.

      VB isn't that great a language, but it's really nice for putting together GUIs.

      --
      USE HOT GRITS WITH STATUE OF NATALIE PORTMAN (NAKED AND PETRIFIED)
    2. Re:It does have it's place too by grazzy · · Score: 1

      Borland Delphi, but it's also living on a string...

    3. Re:It does have it's place too by Anonymous Coward · · Score: 0

      I suppose you mean Perl. I don't know any language PERL.

    4. Re:It does have it's place too by Wyrd01 · · Score: 1

      ...there are projects out there that something like VB is the best answer for.

      I'd like to think my major project at my current company is an example of this, but being the only programmer here, it is harder for me to tell. Perhaps someone more knowledgeable can tell me if I made the right choice doing the project with VB6?

      It's basically a big client info database. The program itself, including all 34 forms, is roughly 55k lines of code by last count. The program consists of one main MDI form with 8 forms nested within. The first form contains 7 tabs of pure, data entry fun. Hundreds of fields of info that a user can fill out and save. The rest is basically more data entry, and a reporting section that uses crystal reports to give the user info about what he has entered.

      I think given the intensive number of forms, fields and buttons, and the fact that it was all written and maintained soley by me, justifies the use of Visual Basic 6. I looked into some other languages, but the requirement to specifiy every button position, every button label position, etc... means I could have done it alone, but it probably would have taken twice as long to code.

    5. Re:It does have it's place too by hibiki_r · · Score: 1

      There are all kinds of options out there for quick Java UI design. At work we use JFormDesigner plus some homebrew infrastructure to automate widget-model binding. This setup removes most of the UI plumbing, and lets us work on the real user requirements. Compared to hand written Swing, it's heaven.

    6. Re:It does have it's place too by Ramtek · · Score: 1

      I'd agree with this. I am also a perl and VB6 programmer. I use perl for the hard stuff (your can't beat CPAN) and VB for the GUI (you can't beat VB6's IDE despite what your read here). VB.NET is nothing like VB6. It reads like C# but medium level VB6 programmer (say 1,000,000 lines of code) won't be able to do all that much without wasting more time learning MS's latest paradigm. As for VB6 being dead, why is a VB6 core still the core of Office 2003? I'll tell you why, because the business community still uses it and that is more important a fact than most people here probably think.

  96. maybe he's right by Anonymous Coward · · Score: 0

    In computer science courses, the best language is the one that teaches you the most with the least distracton: Scheme for recursion, Java for OOP, assembler for how computers really work, C for OS-level software, C++/Java for "software development" and because a lot of jobs will expect that you know them.

    In business, programming languages are tools. Good CS languages are bad industry languages almost by definition. Coding in VB/Perl/Python is so easy that you don't need a course on it. (How would you feel if you were paying $40,000 a year, and you had to watch your professor position a button on an interface?) But when you just need to make something work, even if you /could/ do it the hard way, why would you?

    If I was going to write a program just because I wanted to, I would use Ruby/GTK, or maybe Gtk-Perl when Perl6 (and bindings) come out. (Python is a great language, but after spending some time coding in Scheme, Python's syntax annoys me. Like the whitespace thing.) But I use Linux. If you're talking about a Windows program, VB very well might be the best choice. Compared to something like Visual C++, anything bad about VB is negated by the fact that you don't have to manage memory. Compared to something like Perl or Python (or even Java), anything bad about VB is negated by the fact that making the GUI is painless.

  97. Did the same thing last summer! by gripen40k · · Score: 1

    Yeah, I had the EXACT same experience last summer (are you working for Astech?) and found out that VB is great if you are integrating your software into a MS Office application, like for instance excel. It's easy to learn, I picked up all my know-how from that paperclip helper guy and the MSDN online database, and it's easy to do fairly complicated things with. The major downside is that it's really slow, and doing complex calculations makes it really really slow. It's not bad though, I would give it a try. Besides you are a software engineer and you should act like one, you were taught to adapt and that's just what you should do!

    --
    Har?
  98. Parenthetical Remark by NetSettler · · Score: 1

    I think the remarks others have made about cross-platform issues are good ones, but I would add to that one other important comment: Don't make a big fuss about why not to use VB unless you're prepared to offer a substitute. If you do have a substitute, focus on its good qualities rather than on VB's bad ones. Show what additional things you could do if only you had that other choice. Sounds more positive that way.

    I do a lot of Scheme too, but I'd be an idiot to recommend that to you!

    Common Lisp is industrial strength, scales well to large applications, and works cross-platform. For example, LispWorks offers a Common API (CAPI) that allows writing portable code for deploy on Mac/Windows/Linux.

    --

    Kent M Pitman
    Philosopher, Technologist, Writer

    1. Re:Parenthetical Remark by spirality · · Score: 1

      The reason I would not recommend Scheme is because of maintainence costs. How do you think this Common Lisp implementation stacks up in that regard?

    2. Re:Parenthetical Remark by NetSettler · · Score: 1

      There are fewer Common Lisp programmers than Java programmers, to be sure. And sometimes they may be harder to find and/or more expensive if you're just measuring per-person without regard to how the language enables one. But a well-written large program in Common Lisp will be more flexible and more easily maintained by fewer people than an equivalent large program in another language, at least in my experience. So I personally think the comparison is quite favorable.

      Some have said that there are good and bad programmers in all languages, and that may well be true. But then, I've heard very few good programmers in Common Lisp complain that the language ties their hands and that they wish they were using a "conventional" language; by contrast, I've heard the reverse (good programmers complaining that C/C++/Java ties their hands and they wish they were using Lisp) many times. Again, it could just be who I hang around with. I offer it only as something I've observed, not as incontrovertible fact.

      But if I like a language, I'm not going to fail to recommend it just because others might disagree. Let the others who might disagree fail to recommend it. If a language's advocates don't speak for it, who will? I wasn't trying to start a language war, so much as surprised that you noted you had personally successfully used a language and yet wouldn't recommend it. I'm not even saying there can't be reasons for that--I was just curious what yours were.

      --

      Kent M Pitman
      Philosopher, Technologist, Writer

    3. Re:Parenthetical Remark by spirality · · Score: 1

      I've taken no offense what so ever to this conversation. This is interesting stuff. I really like Lisp and Scheme. They are very interesting languages, though I must say I know Scheme much better.

      Some reasons I would not recommend scheme besides maintainence costs are:
      1. Speed for some things, but if that's not important then it doesn't matter, though with Scheme you can always write the performance critical pieces in C or C++ and write an extension.
      2. Lack on an object system.
      3. I'll talk about the maintainence costs again. Pyton, perl and other interpretted languages seem better at catching errors when loading the source code. This may just be the implementation of Scheme I have used (ELK). This definitely does not say anything about LISP.
      4. The exception mechanism is very rough. Error recovery in general is funny, though you can write your own very elegant error handling mechanisms.
      5. Lack of data structures such as O(log(n)) maps and sets, though you can roll your own...
      6. Lack of 3rd party libraries.
      7. I/O is the most painful thing you will do with Scheme.

      Some reasons I like Scheme.
      1. It's very flexible. Like I said you can write your own exception mechanism.
      2. Continuations are cool and you can do great things with them.
      3. Recursion is better than looping in that you can write more compact and IMHO more readable and more intuitive programs.
      4. It's very expressive if you can get over the parentheses.
      5. Lists are actually very powerful...

      I've used Scheme as an extension language to a fairly large C++ program for about 8 years. It's been a while since I wrote a "real" program in it though. I'm not sure I would write such a program with Scheme or even Lisp. As much as I like the languages I think they are impractical, especially with respect to lack of 3rd party libraries. They just can't touch C/C++, Perl, or Python. Still they are very elegant...

    4. Re:Parenthetical Remark by NetSettler · · Score: 1

      I've taken no offense what so ever to this conversation.

      Sorry, but everyone seems to take offense at everything here, so I've learned to just assume I should worry, and to write very defensively. Sigh. Glad to know there are others besides myself here who just come to offer and receive information, not to fight.

      Some reasons I would not recommend scheme besides maintainence costs are: 1. Speed for some things, but if that's not important then it doesn't matter, though with Scheme you can always write the performance critical pieces in C or C++ and write an extension.

      Likewise with Lisp if you needed it, you could always write a few subroutines in C/C++ and there are packages for doing "foreign" (some say it should be called "native") callout very straightforwardly. e.g., although Lisp will do array processing, if I had routines already optimized for doing (un)compression, display algorithms, raster effects, numerical algorithms, etc. I might just call those directly. The modern environment is heterogeneous, and the good implementations of CL accomodate that even though the standard stops short. It's enough similar that if you have to share between multiple implementations or you write in one and later port to another, it's likely to be a pretty modular accommodation.

      2. Lack on an object system.

      CLOS (the Common Lisp Object System) is pretty much the reference model for a good object system based on multiple inheritance. It's powerful, efficient, and flexible.

      3. I'll talk about the maintainence costs again. Pyton, perl and other interpretted languages seem better at catching errors when loading the source code. This may just be the implementation of Scheme I have used (ELK). This definitely does not say anything about LISP.

      I haven't used ELK so can't compare directly. In general, the Scheme standard is small and what made it usable was often the implementation details. (CL is bigger, so more of its usable stuff is common to all implementations, but even then, there are new things that are post-standard that are common to most implementations, yet really not standard.) Scheme has traditionally placed more of a premium on aesthetics and teachability, while CL more explicitly on the reverse (practicality over aesthetics). Traditionally, it has been individual Scheme vendors, rather than the language itself, that have had to tend to pragmatics, which has left some Scheme implementations hugely more usable than others. Common Lisp has been traditionally pragmatic, so the individual implementations, while they do vary somewhat, also tend to care about commonality more because that sense of shared community is built into the language itself. (I sat on both the Scheme authors committee for a number of years and on the CL design committee, so it gave me an interesting view of the differences, but I'm always fascinated to hear how users perceive it, since they often don't see either the intent or the process, just the effect.)

      4. The exception mechanism is very rough. Error recovery in general is funny, though you can write your own very elegant error handling mechanisms.

      If you want a flavor of what the Common Lisp condition system offers, you could see my 1990 paper and my 2001 paper, each of which touch on this in different ways.

      5. Lack of data structures such as O(log(n)) maps and sets, though you can roll your own...

      Common Lisp has built in hash ta

      --

      Kent M Pitman
      Philosopher, Technologist, Writer

    5. Re:Parenthetical Remark by spirality · · Score: 1

      Thanks for all of the great information. Common Lisp seems like an industrial strength language as compared to Scheme. I'll have to check it out again. Like I said I've done a lot of Scheme over the years. I've only prorammed in Lisp for about 4 weeks during college.

      Thanks again!

  99. "Large?" by C10H14N2 · · Score: 1

    Well, "large" in the sense of "lots of lines of code" is one thing. 250,000 or 2.5M lines servicing 10 people is a much different thing than 25,000 lines of code serving 10,000 people. Maintaining the former in any language is easier than maintaining the latter in any language.

    The main strength of VB is it's relative accessibility. It is suited for small projects and by small I mean small distribution, not small in terms of the size of your codebase. The main problem you should be addressing is your development methodology. If you have 47 branches of the same product that you're trying to maintain simultaneously, it doesn't matter what language it's written in and it would seem the temptation is there far more often with VB projects than with other languages precisely because it is so "accessible." Ergo, its greatest strength is also its greatest weakness.

    Other languages, almost entirely because they are somewhat inaccessible to the layman, frankly make it harder to fuck up the development cycle and that is more of a problem than the choice of language.

  100. Multi - everything. No lock-in by Anonymous Coward · · Score: 1, Insightful

    There used to be several good reasons not to choose Java. They disappeared a long time ago. If you want to be able to say to your customers "Yes" to (almost) every can I deploy on/with/or against then Java is the logic choice. Everything else is an also-ran.

    We are selling bucket loads of java applications and deploy anywhere, anytime with (almost) no code rewrites. Even on windows (which is a rare choice).

    Stu

  101. C++ is not for dummies by Handyman · · Score: 3, Insightful

    Because C++ sucks when you put it in the hands of the VB crowd. It not only gives you enough rope to hang yourself with, it then proceeds to give you another mile. The language allows programming in about twenty different paradigms, the base support of which are usually per-project custom-implemented (own framework) or crappy (MFC), and because of this and the lack of a large standard library (I mean, one that the VB crowd can grasp), abilities that you gained on one C++ project do _not_ transfer well to other C++ projects.

    Now don't get me wrong, I work with C++ every day and I love it because of the sheer power it gives me. You can basically abstract away any management chores using smart pointers and other objects. And you can write the most obscenely decoupled functionality using traits classes and such. But put this same stuff in the hands of a VB coder, and you'll get C++ code using VB idiom. And that's NOT GOOD. VB coding idiom is not exception safe AND does not deal with memory management, so you'll have memory leaks all over the place, and even if they bother to put in the deletes in the proper places, you're one exception away from leaking a whole bunch of stuff. Teach them to use smart pointers to fix this? In an average C++ project "done right", you'll have to write a lot of smart pointers/auto objects yourself, and people who are used to VB are _not_ capable of writing proper smart pointers in C++. That requires reading and understanding all of Scott Meyers' books, and they won't do that. They'll think they grasp the language when they have their first MFC-generated dialog on-screen. It'll only get worse from there.

    1. Re:C++ is not for dummies by Anonymous Coward · · Score: 0

      I agree with much of what you say. Mostly that understanding (even from veterans of many years) is not synonymous with right understanding. (And, of course, my way is *right*! ;>)

      Why write your own? Use Boost. You probably know about it, but for many folks reading
      this, I want to say that (and anonymous coward that I am, i still have to say that at the
      time of this writing I have no affiliation with Boost or the C++ community in general, except as a user):

      The Boost libraries are state-of-the-art programming.

      Will you find everything you ever wanted? Probably not. But, I'll bet that you can find the things you need to build what you want.

      Also, and very importantly: Check out what the Boost acceptance process is like. Understand what these folks are doing. It's very important, and very very good.

      Don't write your own smart pointer classes. Use the C++ Standard Library, and use Boost's smart pointers when they make sense. Use regular pointers, too-- there is /nothing/ wrong with them! :-)

      (Why have some of you gone through life so long without understanding them? They're easy, they're good! Hey, check out Brian Khernighan's "The Practice of Programming", it's a great book.)

      This is good stuff, folks. Most people will need to put in a number of years to get it. But, what is so wrong with that? A carver must also invest much time-- and ask any carver (or chef, for that matter), and they will with few exceptions let you know that sharpening
      (not varying, but /sharpening/!) is a most important activity.

      And... have fun. Enjoy all of this.

    2. Re:C++ is not for dummies by sean.geek.nz · · Score: 1

      "I work with C++ every day and I love it because of the sheer power it gives me. "

      I work with C++ every day and I hate it because of the sheer power it gave the idiots who wrote the code that I maintain.

    3. Re:C++ is not for dummies by Handyman · · Score: 1
      I work with C++ every day and I hate it because of the sheer power it gave the idiots who wrote the code that I maintain.


      Unfortunately, you don't have to be an idiot to write bad code in C++. I've seen plenty of very bad C++ come from otherwise very smart people. :-(
    4. Re:C++ is not for dummies by Anonymous Coward · · Score: 0

      This is exactly why C++ sucks.
      1. Everything is so abstracted you can't follow what the hell was going on in codemonkey's head so maintenance is a nightmare.
      2. You can blow things up with ease. Who will pay to fix the problems?
      3. It requires tons of reading etc to be productive. Who will pay for the downtime?
      4. The skills you learn on one project are not portable to another project.

      Now I can see the reason for using it if you're going to do something non-generic, highly specific that allows you to go around the safety features of "dumber" languages. But to consider all the drawbacks you pointed out as BENEFITS?

      Nuh-Uh.

    5. Re:C++ is not for dummies by Handyman · · Score: 1
      This is exactly why C++ sucks.
      Everything is so abstracted you can't follow what the hell was going on in codemonkey's head so maintenance is a nightmare.


      It's easy to write the wrong abstractions in any language. With the proper abstractions, no problem. Things get better than without the abstractions. Languages like VB are built around good abstractions -- just don't expect the VB programmer to design these abstractions. My main problem with most C++ code that I get to maintain is that it's not abstracted enough. Copy-paste coding. Programmers don't even know when to abstract seven lines of repeated code with very mild variations into a function, let alone think about exception safety...

      It requires tons of reading etc to be productive. Who will pay for the downtime?


      Not true. In C++ it requires tons of writing to be productive. To write boilerplate library code that should've been in the standard library, or in a proper framework library. Reading is not the difference -- just like VB programmers need an MCSD to grasp the importance of always using Option Explicit, and to know which library is where, C++ programmers need some experience and time to understand best practice. The difference is that C++ programmers then have to write or otherwise find their own libraries. And that's where languages that come with a standard library shine.
       
    6. Re:C++ is not for dummies by jerald_hams · · Score: 1

      Is anyone else sick of smarmy-pants C++ coders thinking that knowledge of arcane language trivia is somehow equivalent to intelligence? The genuinely smart are happily producing useful code in Ruby, Erlang, C, Scheme, OCaml, Matlab or any other language appropriate for their domain. In the time it takes you to read Meyers, Alexandrescu and all of Sutter's GotW's you could have written a half dozen useful programs in any other language (even Visual Basic). But nay, you took the high road and memorized every dark corner of C++'s ugly spec. Congratulations, you are truly the elite.

  102. Obligatory PERL bust = you lose by StevisF · · Score: 1

    Oh it wouldn't be a discussion on /. about programming languages without the obligatory bust on PERL! I think we need Wall's law to compliment Goodwin's Law.

  103. Atleast you arent being forced to switch to tcl/tk by Anonymous Coward · · Score: 0

    Atleast you arent being forced to switch to tcl/tk

  104. Does the boss only know VB? by jetcityorange · · Score: 2, Interesting

    I'm the owner of a 14 yr old software co. whose first products were written in Visual Basic and HyperCard. I grew up with BASIC in the 60's, had a Timex-Sinclair with built-in BASIC, ate up MS-BASIC, and thought VB and HyperCard (though not ToolBook or SuperCard) were the bomb.

    Then my product's needs and the market's expectations outgrew what VB or HyperCard could reasonably deliver. But I was too busy running a company to learn C/C++. So I had to hire engineering talent. Talent that needed to write in something *other* than a BASIC dialect. From that point on, my code writing days were over.

    Perhaps the background question you need to answer, for yourself and the /. community at large, is whether da boss is fluent in something other than BASIC? If not, there's the answer to your question. Perhaps he needs to continue using VB to justify his existence. Just a thought...

  105. Not good for by sholden · · Score: 1

    Visual Basic is not good for writing for the fuel injection computer in your car. For everything else it's perfect.

  106. why not? by saturnism · · Score: 1

    i really don't hear any compelling arguments agaisnt vb. the market obviously needed it, and ppl do enjoy writing it. it all depends on what kind of software system you need and pick the right tool for the job, and other considerations in business.

    --
    it is me
  107. One simple reason...the 'B' in BASIC by thepacketmaster · · Score: 1

    For those that don't actually know (what kind of nerds are you!), BASIC is an acronym for Beginners All-purpose Symbolic Instruction Code. Do you really want to be writing in a programming language that is made for beginners? Granted Microsoft has brought it a long way, but it's still a beginners language. My personal experience is VB is buggy at best. If you want to do it better, write it in Visual C++.

    --

    --

    Luck is just skill you didn't know you had.

  108. You could keep VB for the front end by HardwarePeteUK · · Score: 1

    I had almost exactly this situation a few years ago. My then boss had test suites written for him in VB, and when we were designing the test software for the newest of products, he insisted it be in VB (for the Windows part, at least).

    There were many problems with that, not least that the test suite had to test a number of different systems, and was distributed by nature. The test client could in fact be anything (the target system was running LynxOS). My argument was that the existing (VB5 transitioning to VB6) implementations did not give me proper access to sockets and IPC functionality, so we compromised.

    The client had a VB front end, which called DLLs written in C (I wrote those for the back end access) which then did the heavy lifting of communicating with the target and invoking the tests. The VB front end dealt with data display and user interface.

    From my experience, that's the best place for VB, and it also meant I could port the client to anything I wanted (I simply had to invoke tests and get results across sockets).

    He was happy (he could see how the overall logic of the system worked) and I was happier because I could do the back end in a far more portable (and writeable, to me) manner.

    Pete

  109. This is how I solved the same problem by Flyboy+Connor · · Score: 1
    I was facing the same problem a couple of years ago. We had to build Telebanking software, and my boss was adamant that we had to do it in Visual Basic. Luckily, nobody in the company used Visual Basic. My preference was to do it in Delphi.

    So this is what I did. I said to my boss that I thought it might be a good idea, but that we should bring people up to speed with Visual Basic. And I would do that: I would design a self-teaching course on building applications with Visual Basic. So I created a course in which the students would build a small application, which basically was a simplified version of the Telebanking system for which my boss wanted to use VB. About 20 of my colleagues did the course, and after that we sat down with my boss, and I just let my co-workers thrash VB. They all said that at the start it seemed to be fun to work in VB, but when you had to get down to do some serious work, it was absolutely terrible. In the end, my boss had no choice to drop VB, and I could bring in my preferred Delphi.

    Problem solved.

  110. Your company is too young and too small... by gd23ka · · Score: 2, Interesting

    ... to lock itself into Microsoft :-)

    Hi,

    First off, whatever you're going to code with VB will only run on Windows. There might be a way to generate .net code and there might be hope that you could get it to run on Linux using Mono but I'm sure that hope will shatter on the cliffs that a lot of Microsoft specific APIs and facilities will not (ever) be implemented on Linux.

    Essentially you're once again committing to use "Microsoft Technologies". These so-called 'Technologies' (mostly rehashes and adaptations of what's been out there shrink-wrapped, repackaged and rehyped by Microsoft ActiveMarketing+ )... these so-called 'Technologies' are not open source. IF you are wondering how Microsoft implemented something (because you can't get it to work) you will be stuck going to their "Knowledgebase" on the Microsoft Developer Network site where they might tell you, or again not. Calls to Microsoft support, your only dependable source of support cost $$$ but I think there are subscription plans for this, you might want to check them out. It's not that support for other software is free. It's just that with the "Technologies" they're the only ones qualified to give support.

    You will also find and that's aonther angle of the support issue, that people using Microsoft are a pretty much locked in community. I'm sure a lot of people reading here will likely object over this but I'm not talking about you. Slashdot isn't exactly one of the core sites most Microsoft people go to. In general these people lack the scope to look beyond the rims of their plate to see what other ways are out there to tackle a problem which thinking this further is probably why you came here in the first place.

    I don't know if I told you anything new but that's my take on the subject. I wish you the best of luck that you and your employer can avoid this particular piece of fly paper.

  111. Don't worry-- be (sort of) happy! by Anonymous Coward · · Score: 0

    I know, I know.

    You don't want to speak .NET. But, just go for it. Why?

    Well... at least with .NET, you can share respectably generic containers
    and other constructs across languages. That's a big deal.

    That includes C++/CLI (or whatever they call it now). Yay!

    Think of it: You get to learn modern C++. And if during that process
    you gain insight into your VB or C# or whatever the language-du-jour
    happens to be, you can integrate it into a difficult but ultimately
    rewarding multipardaigm approach. Pretty nice.

    But, really, don't worry about all of that for now: focus on good
    object-oriented programming, while taking advantage of hard-won
    lessons from Lisp and ML. That's part of what you get from studying
    generic programming.

    You'll get the most benefit, ultimately, from being able to work with
    all kinds of programming (I know, a number of important approaches are
    still left out here, but bear with me): structured, object-oriented,
    functional, and generic programming.

    C++/CLI is looking awfully good. It's not a perfect or pure representation of
    any of those things, but it's a platform that can allow very many of the
    good things of each to make sense.

    If you swallow the VB.NET pill... well, medicore designs will always be
    medicore. Excellent designs are /hard/. Got that? /HARD/ to produce. And,
    their benefits are nearly always underappreciated.

    If you produce an API that makes sense today, look at it and ask: will it
    also make sense tommorow?

    I know. We live, and do our work, in a deranged view: Get it out the door!
    This isn't the right way to do it-- almost never is-- but, that's bread and butter.

    I once left a job over the adoption of Java. If I'd been more clever and subversive,
    I would have just said "sure" and waited.

    Makes sense? Sure it does.

    So don't worry: It sucks that the platform you want isn't what the people-- managers
    especially, but also the team that's already acclimated to it-- want to use, but
    let them do it. Just try to bend it in directions which make real sense.

    When your day comes, you can shine (especially if you also are ready to adopt what
    are ultimately more professional and frankly more expressive tools, wherever they
    come from), even though it's ultimately probably going to be the case that this
    is not noticed.

    My two bits.

  112. Why does the software need to be rewritten? by 91degrees · · Score: 3, Interesting

    Isn't this one of those bad ideas? Joel Spolsky seems to think so, and while he isn't an oracle, his opinion is worth something.

    Suggest not rewriting the software and simply going through and improving where needed.

  113. This post was brought to you by Anonymous Coward · · Score: 0

    By yet another "I'm a great programmer and I recommend Python" type zealot.

    Don't believe the hype, VB is a great tool for most real environments, the alledged superiority and flexibility that Python brings you is mythical.

    1. Re:This post was brought to you by Duhavid · · Score: 2, Funny

      Mythical like the man month, dude.

      --
      emt 377 emt 4
  114. Technology sustainability by MadFarmAnimalz · · Score: 2, Funny

    I work providing MIS technical assistance in microfinance (used to be an open source consultant). I've seen a lot of Visual Basic applications in service of microfinance institutions and I've seen the consequences.

    What I've seen has been mainly Access being used as a RAD to develop portfolio management systems, with VBA constituting the language the logic is developed in. Some observations:

    1. Such applications when used over the medium to long run invariably become unmaintainable. The business changes, loan products change, organizational structure changes, new needs arise, servers are upgraded, etc. This we all know; there is no such thing as finished software. A VB application has the advantage of getting up and running fast, but as the code changes accumulate over the years, the code becomes unmaintainable; a change here b0rks fifteen things elsewhere and the developer (often one person) eventually gets to the stage where he just says "no, we can't do this". IF you're lucky, he tells you that it's because he needs to reqrite the app. If you're not, he attributes the limitation to the abstract god of technology.

    2. The Access/VB development environment is indeed a VRAD (very RAD). You can go from zero to information system in almost no time with almost no resources (the typical scenario of one developer mentioned previously). TH downside is that when you have this few people working on the system, it can be underdocumented. Which means that when your magical one-man development team jets, it's going to be easier to rewrite the application from scratch (and when that crisis comes, it's often rewritten in Access/VBA again, since a system is needed, FAST). Oh my aching bones...

    3. Mentioned elsewhere, but these MS products are EOL'ed periodically. No support. No bug fixes. No security fixes. One often overlooked consequence of this is that MS drives the techie labor market towards its current offerings; what this means is that you are not going to expect a VB-based product to last, since a few years down the road the Microsoft marketing machine has changed the paradigm and driven developers towards other technologies, limiting the availability of engineers to feed your monster.

    4. When you're developing a system for business usage, you're going to want to have several things which more proefessional toolchains make more readily expose; things which, more likely than not you can accomplish nominally in VB albeit with a lot of workaounds and in many cases not very reliably and sub-optimally. Audit trails, transaction atomicity, multi-user functionality, etc.

    I'll post more if I canthink of them. Good to have a reference of VB drawbacks, especially since I see it so often.

    --
    Blearf. Blearf, I say.
    1. Re:Technology sustainability by Doctor+Faustus · · Score: 1

      Mentioned elsewhere, but these MS products are EOL'ed periodically. No support. No bug fixes. No security fixes. One often overlooked consequence of this is that MS drives the techie labor market towards its current offerings; what this means is that you are not going to expect a VB-based product to last, since a few years down the road the Microsoft marketing machine has changed the paradigm and driven developers towards other technologies, limiting the availability of engineers to feed your monster.

      That really only happened once, with the conversion to .Net. I have a fair amount of QBX code that I imported to VB, and only the UI bits needed to change.

  115. Visual Basic by drfrancky · · Score: 0

    If you can do it in Visual Basick then go for it. The best programming language is the one that you know the most. each language is designet for a praticular tasks...thats why we have so many programming languages. but if you know the language you can do allmost anything. as an example lets say that you know basic C and strong VB .. if you have to do a program what language you will pick ? if you pick VB is this mean that C sucks ? no ! it mean that you know VB better and you can make your work with VB. afcourse if you are a super ninja mo fo on programming languages you will know that there is some BIG diferences between VB and C. And in general between compilator languages ( C ) and interpretators ( VB ) . but as i previos state it depend of the taks. So .. to finalize with one word .. go for the language that you know most. p.s. sorry for my bad english sorry for my lack of brain ... too much Jack Daniel's & beer DrFrancky -- Breadh Acetone - thousands of GNU/Linux users can't be wrong !

  116. right there by Tom · · Score: 1

    but I honestly can't make a good argument against VB because I'm not familiar enough with it.

    There's your argument right there. If you're not familiar with it, then either you're the wrong guy for the job, or the tool is bad. It's up to you to prove that a different tool would be better.

    Ask him for a chance. Take a small, standalone part if it exists and rewrite only that in your favourite language as a proof-of-concept.

    --
    Assorted stuff I do sometimes: Lemuria.org
  117. Same arguments as Java. by Anonymous Coward · · Score: 0

    If we're talking about VB.NET (VB 7.0), it's the same arguments as you would use against Java. Because .NET is very close to being a clone of Java.

    Of course the keywords are different, VB still has "End If" instead of "}" and so on, but to base your argument on that you basically have to be a PHB (our boss actually used that arugment *for* VB. "Those curly parantheses are way too hard for people to keep track of". Even though 90% of the programmers were taught on Java - but of course the boss himself and three other people were old Cobol programmers).

  118. It's the ambiguity that gets me by naich · · Score: 1

    For example, in VB: If (a = b (c)) Then ... 1. Is the "=" an assigmnent or comparison? 2. Is b a function or an array? The syntax of VB is absolutely shocking and has caught me out many times. Luckily, the guy I used to write it for has now got the horn for C#, which is a lot better.

    1. Re:It's the ambiguity that gets me by Anonymous Coward · · Score: 0
      I always use special letters to identify data types, i.e.:


      Function fD (ByVal strFoo As String) As String
            fD = strFoo
      End Function

      Dim strA As String
      Dim astrB As String(255)
      Dim iC As Integer

      If (strA = astrB(iC)) Then MsgBox fD(astrB(iC - 1))


      strA = string variable named A
      astrB = array string variable named B
      iC = integer variable named C
      fD = function named D

      etc
    2. Re:It's the ambiguity that gets me by Doctor+Faustus · · Score: 1

      in VB: If (a = b (c)) Then ... 1. Is the "=" an assigmnent or comparison? 2. Is b a function or an array?
      1. Comparison, because it's an expression. Personally, I'd prefer a language to have "==" and ":=", with no "=" operator, but I've never gotten in trouble with the "=" operator in VB, but I have in C and Java. If you want to complain about boolean handling in VB, look at the fact that AND and OR are alwys bitwise, and the consequences of that.

      2. Does it matter? This way, you can start with an array and change it to a function later, if the logic gets more complicated. For the same reason, I love that VB and Pascal don't use parenthesis for no-argument functions.

  119. VB6 = bad, VB7 = good by master_p · · Score: 1

    Stay away from VB6 if your project will require extensions and modifications in the future. VB6 is object-based, not object-oriented. You can not make good object-oriented apps with it that follow the Model-View-Controller pattern. VB6 also has other inconsistencies (like null and empty, set and assignment etc).

    VB7 is a proper object-oriented basic; there are minor differencies with C#, aside from syntax.

    1. Re:VB6 = bad, VB7 = good by Anonymous Coward · · Score: 0

      VB7!=VB.NET....

      VB7 was abandoned in favor of VB.Net, VB7 was build upon VB6 but with better OOP...
      If only we could get our hands on that internal release of VB7..

  120. Re:Every Programmig Language has its own Pros & by GotenXiao · · Score: 0, Troll

    I think I speak for everyone here when I say...
    HOLY BAD ENGLISH, BATMAN!

    Anyhoo; VB may well be the language that many people start their programming careers with, but it shouldn't be. VB is a poorly conceived language in terms of syntax structure and consistency, not to mention that it lacks a vast number of functions which you would expect to be native to the language, not to have to load DLLs to access them.

    Also, it's Windows-only and proprietary, and you have absolutely no idea what VB is doing at any given time.

    --
    Goten Xiao
  121. Why is VB so bad? by 91degrees · · Score: 1

    Looking at comments, the main criticisms of the language seem to be:
    1. It's made by MS, and MS are inherently evil
    2. We like open standards that work cross platform. VB isn't one.
    3. We're C programmers (or Java programmers or whatever) and don't know it therefore it must be bad.
    4. Early versions of VB were buggy and inconsistent. People believe this to be true of the later version too.
    5. experience with lots of bad code written in VB.
    6. Technical, well researched reasons that seem minor but actually make the language less practical than other candidates.

    Of course, #6 is always legitimate. #2 can be legitimate, but some software doesn't need to switch platform. If it will run on a low power PC running an old version of Windows, and typically there will be a single machine dedicated to running the application, then there's no need to port to a different platform. The others are just FUD and hysteria.

  122. Do Programming Languages Matter That Much? by Efrat+Regev · · Score: 1, Insightful

    It seems that the previous replies discuss the pros and cons of VB per se. In a more general sense, they're discussing whether one programming language is better than another.

    Does the choice of the programming language really matter that much? From my humble experience, I've noticed that programmers' output depends on other things entirely, such as their development methodology, and correct use of design patterns (not going too far in either direction).

    I've actually seen different programmers write projects in different languages, and it seemed their output was relatively uniform (the good ones did well in each language, and produced code that had a 1-1 correspondence with what they would have done in a different language). Stuff like test-driven design (and other XP methodology), for example, has a more dramatic impact than the debugger of the IDE of the language that your using (which I avoid anyway). You can encapsulate stuff (to some degree) in any language, as is the same for abstracting things that may vary.

    In some rare cases, some things can't be done in some languages (and I'm not talking about Turing completeness): there are deffinitely programs that you _cannot_ write to execute as efficiently in Python as in C. Given that you already have a prior version in VB, is this really your case?

    So overall, I think that if your project is large, then amortized over time, you will produce the same results anyway (because getting used to the language will be averaged over time), and if the project is small, what's the difference anyway?

    BTW, mod me down to your heart's content, but I'd appreciate some reply with content if you disagree (perhaps I'm wrong, who knows?).

  123. Just use it by Angst+Badger · · Score: 1

    Maybe I'm getting old and cranky, but I just can't take development language holy wars anymore. Ninety-nine times out of one hundred, unless you are present at the start of a business, the language choice has already been made for you. No matter how appealing it may be to you as a programmer to start from scratch, it rarely makes sense from a business perspective. The lure of the complete rewrite has killed more otherwise successful software products than just about anything else, Netscape being one of the more recent and spectacular examples. And at the end of the day, as an employee you are paid to make money for the company, not to advance your biases about language aesthetics at the expense of the company.

    As far as VB goes, it's not the best language around, IMHO, but it does make rapid development of user interfaces pretty quick and easy, and if performance becomes an issue, you can always call out to DLLs written in C or C++. It wouldn't be my first (or second or third) choice if I was starting from scratch, but if you already have an extensive existing codebase, you need to have some damn good reasons to abandon it, and language choice is seldom a good reason for much of anything.

    --
    Proud member of the Weirdo-American community.
  124. Patch for Split Codepanes by Dr_Barnowl · · Score: 1

    I can't remember, but I think this version doesn't work properly across horizontally split code windows ; I've got a patched version lurking around somewhere (I got the sourcecode and patched it).

  125. Problems with VB6 by Fat+Cow · · Score: 4, Informative

    1) VB doesn't work well with source code control - it has unnecessary binary files (*.frx, *.ctx) and it's text files create bad diffs because the IDE flips lines around and changes case of identifiers

    2) COM components in VB don't keep the same GUID from time to time (depending on what changes you're making). This causes build problems because when the component's GUIDs change, you have to change all the other projects that reference them. This can be a huge timesink in development.

    3) VB6 is unsupported and is a black box, which means no one else can support it either

    --
    stay frosty and alert
  126. List of problems from my ex-employer by ThePhilips · · Score: 4, Informative

    > This scares me, but I honestly can't make a good argument
    > against VB because I'm not familiar enough with it.

    I, as system programmer, for three years did ported number of VB applications to C/C++. Funny job for system programmer, don't you think? ;-)

    The list of problems of my employer was:

    1. Run-time libraries conflicts. VB applications affected worse of all by "DLL-Hell" probles of Windows: lots of functionality resides in ActiveX components developped by third parties. People usually quote ActiveX support as VB first advantage, but from POV of deployment and support it is hell.

    2. Run-time libraries dependencies. Since VB is all into ActiveX, you might start using some component you haven't explicitely installed. Then when you ship the application to your customers you might find yourself in silly situation: half of them report everything is Ok, half - scream that nothing is working. Apparently, first half have the similar set of applications installed - and VB application finds the library missing from its own installation.

    3. Internationalization. That was huge problem for my employer. We have had quite number of customers in Japan. M$ did internationalizion of VB in straight way: it didn't. In other words, VB as we have it in Europe/US and VB in Asia are two different VBs. Absolutely different. Since Japanese love VB, most of our customers had it installed. The situation looked so: if customer installs our application - other and her/his own applications stop working; if s/he reinstalls VB anew - our application stop working. Interpreter is the same, but run time libraries are very very different.

    4. Upgradability. VB applications are one hell to maintain. We have had lots of reports that installation of our application made with VB4 was breaking VB5/VB6 installations. According to M$, the cure was to upgrade everyone to VB6. But VB6 introduced some problems so our custormers were split - half used VB5 and other half VB6.

    To conclude. One can write good application in VB. But M$ doesn't make that very easy. The whole ActiveX thing is one hell to deploy and maintain. .Net at moment has only two versions - 1.x and 2.0 - and all components of next "XXX-Hell" are there: M$ doesn't do excplicit versioning of libraries nor APIs.

    --
    All hope abandon ye who enter here.
    1. Re:List of problems from my ex-employer by Anonymous Coward · · Score: 0

      These are very good points.... and I think you can s/perl/vb/ in most of the examples. Every language has its place, and what I would say about VB is what I would say about Perl:

      Advantages and disadvantages
      Easy to start doing useful things -- there are lots of additional packages, plugins, controls that make it easy for the novice to get stuff done without having to know how to really design a program. The downside is that there are lots of novices getting stuff done, but not really knowing how to design a program. So code quality is often poor or just plain broken...

      There's also the issue of having the correct libraries installed that you mentioned. Don't know an easy way around this except to check the library status during installation.

    2. Re:List of problems from my ex-employer by poster.poster · · Score: 1

      Really good comments.

      I want to add that I think the number one reason to drop VB6 all together is that Microsoft has stopped supporting it. What does that mean? Who knows. I wouldn't be the slightest bit surprised if Microsoft starts breaking VB6 apps with future OS releases (or updates for that matter). And what about third-party .dll's? Who's to stop them from giving up all together? Well I think they already have...

      We have some apps running that were written in VB6 and as soon as people upgraded to XP all the reports in the program broke. I looked into the problem and from what I can tell, Crystal Reports refuses to release a .dll for XP machines. Where do we go from here? Rewrite the program? Rewrite the portion of the program that is breaking? Force users to stick to older operating systems? The amount of time this wasted is good enough reason for me to drop VB6 and use something else.

    3. Re:List of problems from my ex-employer by ThePhilips · · Score: 1

      First. Perl allows you to build version checks in to the scripts. It's just nobody bothers. Also quite normal practice for Perl to ship all required modules with perl application and leave them in application subdirectory. Then at run-time you can check if system version is Okay and use it. If system version isn't okay - or module isn't installed at all - application defaults to use it's own internal version. (*)

      Second. ActiveX components are global and referenced by GUID. You can have two/more different versions of the same library in the system. But only can be registered at a time - only one would be used by *all* applications. Your system has library A of version 1.0. You install new application and it installs the library version 1.1 and register it. Any application dependant on behaviour of library version 1.0 would break. Worse case, is that many libraries miss versioning info at all - even Microsoft own ones.

      Third. Easy start. Cheap programmers made many people happy. On one side. On another side there are people like I am. It's not that I - as system programmer - feel any competition of VB users. It's just they often make promises they can't deliver on (with software it's easy to underestimate complexity). Then customers have to run to some hardcore programmers like I am and beg to fix the system overnight since deadline was yesterday. It's not very pleasant situation I was finding myself several times.

      I think for easy application development people has to use specialized systems. Consider M$ Access for data bases. Consider LabView for scientific applications. Consider Perl for text processing. Consider PHP for web applications. Consider Python for portable simple GUI applications. Almost every application field has "standard" tool which allows specialist in the field to easily develop and deploy application. VB's problem is that it tries to be too universal. Bit like Java: good for everything in general, but isn't best for anything in particular.

      (*) While proof-reading the paragraph, I have noticed that's the same approach Apple used with its "frameworks". The guys are not shy and freely borrow ideas from Unix. I wish M$ did something like that to end the "DLL-Hell." But seems stuff like Aero is the current priority.

      --
      All hope abandon ye who enter here.
    4. Re:List of problems from my ex-employer by Anonymous Coward · · Score: 0

      Your #1, 2, and 4 points are all deployment problems. It doesn't matter what language you write an application in, you must deploy the application and all of its dependencies to the target machine. I am not sure how or why you are blaming VB (or any other language for that matter) for your lack of a good deployment strategy and installation package.

      #3 has some validity, but there are good ways to internationalize VB applications - "Internationalization With Visual Basic" by Michael Kaplan is a good start.

    5. Re:List of problems from my ex-employer by ThePhilips · · Score: 1

      In most other languages, I have a choice how to link to ActiveX. And I can avoid it altogether.

      For example, some applications I have ported from VB have to use ActiveX for some functionality (wierd serial protocol used in target application field). In C/C++ people (can and do) load the library and request needed interfaces. Can you do that in VB? - No. But that's precisely what was done in C++. There are several versions of the aforementioned library in use. We tested with only one version. With VB we have to install and register it as ActiveX. With C++ we just used it as normal DLL - loaded, requested functions, got interfaces and do job. In VB you can't operate interfaces directly - you are not supposed to.

      But in the end you are right. Biggest problem of my ex-employer was deployment. In fact people did tests that instalation of our software package wouldn't break VB installations for that purpose. We had bought VB6 in part for that purpose - thou it didn't worked out in the end. (M$ promised backward compatibility - and my employer falled for it - but none of the VB4 applications were ever successfully ported to VB6. In fact nobody expected that porting would be needed, since M$ claimed "backward compatibility". Always sounds good.) And still at least once per month we were getting complain about something ending up broken. Until I rewrote all the applications in C++.

      --
      All hope abandon ye who enter here.
  127. problems with VB by Anonymous Coward · · Score: 4, Insightful

    I've written/maintained large programs (.5 megalines) in Java. At some time I had to write a simple program in VB.NET 1.1 (with about 10, 15 k lines). The things I noticed:

    -to me, the syntax is OK
    -the API, compared to Java, is really bad (no jdbc, no generics, ..., keep yourself busy-coding)
    -the GUI is easy
    -writing maintainable code is difficult. VB(.NET) is hard to style because of its IDE. Eclipse is magnitudes better.

    1. Re:problems with VB by DaveV1.0 · · Score: 1

      Oh wow, major surpise. Java coder perfers Java over VB.

      Who would have thunk it?

      --
      There is no "-1 offended" or "-1 you don't agree with me" mod options for a reason.
  128. Good and Bad Sides of VB by TheLogster · · Score: 5, Interesting
    I couldn't resist :)

    Good Points about VB:

    1. It's a fast development environment. You can get a decent sized program from idea to final build in hours and not days
    2. It's an easy language to master. It is based on BASIC after all.
    3. It has a large number of extra controls that can be used to do things like display webpages, upload/download from FTP sites, talk over IP, etc
    4. It understands COM, so you use automation objects with it.
    5. Now that PCs are so fast the execution time of the interpret is not an issue any more. However, VB is a slow language
    6. It's Database objects are easy to use, and supports Access, SQL server, ODBC...

    Bad Points of VB

    1. It's BASIC, so the language has its limitations
    2. It's OOP implementation is backwards. Parent class members cannot be called directly by their child descendants
    3. It's UI design elements haven't really changed that much, so building a nice looking interface takes some time
    4. The Right Way, The Wrong Way, and The VB Way
    5. It is interpreted and not compiled, so you can have difficulty giving an exe from VB to a customer and get it to run. The easiest way to get a program onto a customer's machine is to create an installer. The installation system that comes with VB hasn't changed since VB3 and doesn't look processional at all. Use Visual Installer instead.
    6. You have to declare your User Defined Types in an ActiveX DLL with a class that is never used, in order to use your UDTs as parameters to your classes in your main project

    Overall Thoughts

    I have been programming in VB since Version 2, and right up to Version 6. I cut my teeth on programming Windows Applications using VB, and I have to admit it is one of my favorite development systems. I also program in C++. I use VB to prototype an application, the other guys and customers can comment of the look and feel of the software, and modifications are easy to make. Once everyone is happy with the App, it is then ported to C++.

    VB.NET is not VB (google for Visual Fred) VB.Net is a completely different language to VB and it is not code compatible. Time will have to be taken to rewrite the parts of a VB app that don't work under VB.Net

    VB is a fine system and well suited to RAD projects, DB projects, and client/server projects. However, if you are looking for a system that creates faster code, is more secure, and easier to maintain, then you'll need to start working with things like C/C++/Java/etc

    1. Re:Good and Bad Sides of VB by nogginthenog · · Score: 2, Insightful

      I have been programming in VB since Version 2, and right up to Version 6

      Yet you don't know that VB *is* compiled by default?

    2. Re:Good and Bad Sides of VB by TheLogster · · Score: 1

      VB6 still requires a runtime library. This runtime support is included in the OS these days.

      There are two ways of compiling VB programs:
      p-Code.. this is an intermidate stage, kind of like java
      Native Code .. this is supposed to run faster than p-Code. However, if VB6 created true native code (i.e machine code) then why is a runtime library still required?

    3. Re:Good and Bad Sides of VB by acid_andy · · Score: 0

      Don't some old programs written in Visual C++ 6 use a runtime library, MSVCRT.dll?

      Just because a program is calling procedures in shared libraries, doesn't mean it isn't in machine code. You can sometimes choose whether libraries should be statically or dynamically linked.

      --
      Your ad here.
    4. Re:Good and Bad Sides of VB by Pinkybum · · Score: 1

      It is interpreted and not compiled... This gets modded 4, Interesting WTF????

    5. Re:Good and Bad Sides of VB by nogginthenog · · Score: 1

      And VB definately compiles down to reasonable machine code. Just this week I patched a VB program that a previous employee had written (source was 'missing'). He had left in a date check that stopped the program working after a certain date. I found the message it displayed, traced back through the disassembly looking for references and just before the MsgBox() code was a conditional jump. Patched the conditional jump to an absolute jump and it started working again. Pretty good, seeing as I don't know x86 assembler... (but I do know 680x0, 6809 & some Z80).

    6. Re:Good and Bad Sides of VB by leabre · · Score: 1

      The runtime has COM helper functions in it that get reused... other things like MsgBox are reusable functions that are located in the "runtime". The runtime can act as an interpreter if compiled to P-Code but by default, VB5 and higher are compiled to native executable code and do not get intepreted.

      If you create an ActiveX DLL that *must* be distributed with every application you write because it contains useful helper functions, you might consider that a runtime and an equal corallary with the VB6 runtime that must be present for every Visual Basic program.

      Thanks,
      Leabre

  129. There is only one REAL argument... by ccallis · · Score: 4, Interesting

    First, VB.NET is everybit the language that C# and/or Java are (that is there is NOTHING that can be done in those languages that can not be done in VB.NET (Regular Expressions, Hashtables etc. and much more is available to programmers in VB.NET)

    Second, if the original application was done in VB (6 or earlier) then there is no reason to believe that the language is no longer suited to the task, the only real question is "is the programmer up to the task?" Since VB and C# compile to MSIL (if both the VB code and the C# Code are "well written" then they will compile to the SAME MSIL (or near enough as to not matter...) the ONLY argument for one over the other is comfort/skill level of the programmer. This is not a trivial matter. I am far more productive in VB.NET because that is where I am comfortable, not because it is a better or worse language I can read/write VB much as I can [in my native language of] english. Where as I can read/write C# or Java about like my French, in which I am reasonably fluent, but I have to concentrate more on the translation. And thus we reach the ONLY real argument for you to make against VB, will you be more productive (and therefore cost your employer less) if you work in another language? If you believe this to be so, then you should already be able to quantify this.

    Admittedly, There are far more "less skilled" programmers in the VB world than there are in the C#/Java realm. This is simply because people can learn to do "useful things" in VB (or VB.NET) far more easily than they can in C-based languages. The "entry threshold" to "being a VB 'programmer'" is lower. Still the high end abilities of the language are there, even if a number of programmers don't know how to use them, or use them correctly.

    Anybody out there proclaiming that any language (other than C or assembler) is "better" then VB.NET is simply demonstrating their own ignorance of VB.

    1. Re:There is only one REAL argument... by glwtta · · Score: 1
      there is NOTHING that can be done in those languages that can not be done in VB.NET (Regular Expressions, Hashtables etc. and much more is available to programmers in VB.NET

      Ok, I don't really know much about VB.NET, but such arguments always make me a little suspicious. Not to abuse the long-standing analogy, but if I'm shopping for a new car and the salesguy tells me that "It's just as good as any other car - it's got wheels, and seats, and lots of other stuff!", that might tend to make me look somewhere else.

      Of course, technically this is true, but then technically there is NOTHING that can be done in any programming language that can't be done in a Turing Machine. The question is how the well it copes with increased size and complexity of the project.

      My long-standing impression of VB is that it has a fair amount of whipuptitude (if you are married to windows, of course), but completely breaks down on manipulexity. Has this really changed with the latest generation?

      --
      sic transit gloria mundi
    2. Re:There is only one REAL argument... by ccallis · · Score: 1
      Understanding your analogy I will point out that I made this statement regarding VB.NET purely because
      • 1) For so many generations of VB, there was MUCH that could not be done in VB that now can be, and
      • 2) Much of the misperception that I have read about through out this current thread is based on opinions built upon those previous versions
      This not withstanding, the scalablity of VB across the generations has been more limited by the programmers who use it than the language itself. VB has always been far more powerful than many of the programmers who use it.
    3. Re:There is only one REAL argument... by mr.newt · · Score: 1

      First, get your story straight. The submitter didn't ask about VB.NET, he asked about VB. These are two vastly different things. In fact, it is still highly controversial as to whether Microsoft should have used the "VB" label for the new language at all. Your argument is like saying that if anyone says he has a problem with BASIC, he's clearly unfamiliar with Visual Basic (the latter evolved from the former, in case you didn't know).

      Second, the problems with the original VB are numerous. Uncountable, even. It is a horrible and unwieldy language, it runs slower than similar applications written in C, the executable sizes are enormous, it has no support for threading, inheritance, exception handling, bit shifting, and so on.

      Anybody out there proclaiming that almost any language is _not_ better than VB is simply demonstrating their own ignorance.

    4. Re:There is only one REAL argument... by ccallis · · Score: 1

      Mr. Newt.. FYI (and for those of you others suffering from the misconceptions born of ignorance) .NET is a marketing moniker referring to the ".NET Framework(s)" Of which there are 3 (1.0, 1.1, and 2.0) and each has had a version of VB targeted at the framework, VB 7 (1.0) VB 8 (1.1) and VB 9 (2.0). While most people (myself included) are happy to use the shorthand, pressed forward by MS marketing of VB ".NET" as a 'catch all', they are 3 distinct versions and if one gets into the internals, you will find that they are in fact referred to as such (that is versions 7,8 & 9). Just as VB is an evolution of BASIC (which I started coding on the TRS-80 model 1...) the move to ".NET" was indeed a major evolutionary step forward for the language it still is "VB" (if for no other reason than because "the Man" that owns it says so). And yet you manage to completely miss the point that the most important argument for using or not using VB (what ever the version) is productivity.

      If the poor sole that bothered to ask the question to begin with gets this far down in the pile of irrelevant banter it comes down to making (or not making) the case that the work will get done in half the time if I use (C#/Java/Pizza, whatever...) and therefore it will (or won't) cost less to do so. At that point a business decision can be made. Of course, before he makes that case he needs to grasp the concept of TCO (total cost of ownership) and make his case (or chose not to) based on such things as maintenance, replacement costs (what it will cost to replace himself as a programmer in this "other" language) , hardware expenditures required to support, etc. While this might sound a bit flipped, I believe that in doing this exercise our original poster may figure that it will be cheaper for him to learn VB than to change the course of an already successful business. (or he may indeed make a business decision of his own and jump ship)

    5. Re:There is only one REAL argument... by mr.newt · · Score: 1

      Your first paragraph manages to completely fail to touch on the topic of hand, so I'll skip it, except to say that no one, and I mean _no one_ gives a crap that you used a TRS-80. As for the second, the argument _you_ were making (which you seem to have conveniently forgotten) is that VB.NET (your term, not mine) is just as good as C#/Java blah blah. My counter point (which you seem to have completely missed) is that the original question did not ask about VB.NET, but VB, and VB is a demonstrably shitty language. If you would like to debate the merits of VB (not VB.NET- you still with me?) then feel free to do so. However, I should tell you ahead of time that you will lose such a debate.

  130. .NET is not interpreted by Xoc-S · · Score: 1

    It is Just-In-Time compiled to native code.

  131. End-of-life by mwvdlee · · Score: 1

    Despite all technical argument, the main argument against using VB is that it is end-of-life; no more support. Old VB would be a stupid choice right now as any bugs in the language will never be fixed and any future features you might want to use, will never be implemented. VB.NET will have a longer life-span, but will inevitably be a dead-end too as it's upgraded to VB.BuzzWord, though the life-span might be long enough to survive the life-span of your application (although applications usually life much, much longer than expected, as Y2K demonstrated). Personally I'd atleast choose to use a language with a better life expectancy.

    --
    Slashdot social media options: AIM, ICQ, Yahoo, Jabber and Mobile Text. Why no MySpace?
  132. You use magnets? by Gleng · · Score: 1

    Pfff! Real Men will the binary onto the disk with only their minds.

    --
    "Proudly Posting Without Reading The Article"
  133. Strength/Weakness of Visual Basic by josiah+goh · · Score: 1

    Firstly, there are different versions of visual basic. Although VB.Net and VB6 are supposedly versions of visual basic, they are really very different. From language perspective, VB.Net is VB6 structured in the C# structure. So if your boss is an expert in VB6, there is still a learning curve for him when migrating to VB.Net. According to internet sources, VB6 is more popular than VB.Net. From implementation perspective, there are options so that VB6 programs can be compiled to native code. VB.Net programs on the other hand requires the .Net framework. That means the computers must be of certain calibre so that the .Net framework requirements can be met. If you are migrating the new programs on existing computers, there is a high chance that these computers will need upgrades/replacements. Whether visual basic (VB6 or VB.Net) is suitable for a project is actually dependent on the nature of the project and the client. Below are some of the characteristics of visual basic I can think of. I have also put in pointers for Java as it is currently one of the most popular language. (1) VB is good for prototyping. Screen changes can be made within minutes. There are IDEs for Java to support GUI design but not as seamless as VB. (2) VB is good for both non-programmers and programmers. The syntax is fairly simple to understand and there is no need struggle with OO concepts. Err...well VB.Net is actually OO. Hence VB.Net is harder to learn than VB6. Java programmers need to know OO concepts just like C programmers need to know pointers. (3) VB is not so good when high performance is required (games/encryption...etc). It's not designed for that. (4) VB is not so good when very fine control is required. (eg. programming of window components, COM objects, communication objects...etc) (5) VB is only usable on Microsoft platform. VB.Net is only usable on Microsoft .Net platform. It is possible to use Mono for linux platform but it is not a safe bet. .Net framework is not native in WinXP and need to be installed separately. This is just like downloading Java runtime and installing it to run the Java program. (6) VB programs can do automation (eg. invoke an Excel spreadsheet from your program...etc) on the Microsoft platform. (7) VB6 is coming to the end of life. VB.Net is less matured compared with VB6. Compared to VB6, VB.Net is much lacking in both content and accuracy in the documentation. Java is a matured product compared to VB.Net and has more in both content and accuracy in the documentation. (8) If VB.Net is used, please avoid SOAP calls. They degrade performance. For big projects, the overhead will be significant. (9) If the older application uses Window DNA, it is likely to be easier to migrate to VB.Net. Otherwise, the team may want to explore alternatives and weigh pros and cons. Afterall, VB is not the only choice on the Wintel computers. Hope these information will be useful.

  134. And another thing... by kaiwai · · Score: 1

    Visual basic allows *very* ugly code to run; the problem with VB isn't necessarily the language or the API; but the fact that it allows *TOO MUCH* freedom, resulting in ugly code, ugly hacks being used; hence my amazement that VisualBasic is actually used as a language to teach other languages (this was back in 2000 btw), before visual basic was introduced, Pascal was the learning tool of choice.

    Now, it sounded all very nice, but the reality hit when C++ is taught, basically you have to dump everything you ever learned about Visual Basic, and learn the correct way.

    I think in the end, what makes a bad VB programme and source code, isn't necessarily the language itself, but the programmer who fails to discipline him or herself to sticking to the basic programming principles; now sure, Microsoft could go in there, have *very* strict rules for how code should be laid out, resulting in the most crapiest of programmes to be rejected, and thus require reviewing, but at the same time, this is also Visual Basic's strengths, the ability to write very dirty and very quick code, and push it out to the users with in a space of a few hours - then sort the niceities of the software out later on.

  135. Just drink it by swordfishBob · · Score: 1

    I'd have to point out most Aussies recognise VB as Victorian Bitter, ie beer. Is that a problem?

    --
    -- All your bass are below two Hz
  136. VB.Net by ralfoide · · Score: 1

    Consider VB.net.

    Pro: As powerful as C#. Full .Net framework under the hood. Syntax familiar to old VB6 coders. You can mix C# or C++/cli later.

    Cons: 20MB+ .net runtime download.

  137. Re:Rethink your approach, perhaps (OT) by SigILL · · Score: 3, Informative
    go to your nearest Unix or Linux machine and type "tcpdump -d not port 53". Notice that it spits out machine code?

    That's actually some sort of bytecode. I've been hacking x86 assembly for 10 years now, and there's no way x86 has a "ldxb" instruction.
    --
    Error: password can't contain reverse spelling of ancient Chinese emperor
  138. and what about Access + VBA? by Fedarkyn · · Score: 1

    I am on a similar situation, anyone would like to explicit que reasons NOT to use Access + VBA for a medium to large development?

  139. Old VB by DerWulf · · Score: 1

    missing "end if" leads to a runtime error. 'Nough said. Oh yeah, also the IDE is hellspawm.

    --

    ___
    No power in the 'verse can stop me
  140. My two cents by Anonymous Coward · · Score: 1, Interesting

    VB (.net I presume) is a pretty feature-complete language. Cons: it has a legacy and .net features have been retrofitted onto the language. Pros: it really is quite powerful, rapid and reliable in ways that Perl, PHP etc fail to achieve. The debugging environment is streets ahead of anything else I've seen and really saves you time. Just to note, I've developed commercially with all of the lanugages I'm citing.

    I do believe however, if programming for the .net framework, C# was built specifically for that purpose and provides a more elegant syntax than VB.

    If your boss is hooked on VB5/6 - forget it. The languages were meant to be simple, but through bugs in the libraries and the convoluted methods you had to use to access system calls it generally wound up being more time-consuming than just coding in C++.

    HTH.

  141. Nothing Succeeds like Success by xixax · · Score: 1

    A friend of mine works for an engineering firm that churns out software tools for their kit in all sorts of languages, none of which I'd classify as cutting edge, neat or elegant. While I rib him about it, there's no denying that it all works and their customers nevver complain. The boss has no problem attracting good people since that all view software as a means to an end, and if it ain't broke...

    So I am guessing that the boss:
      - doesn't care about portability
      - figures the VB black box is small enough to grok
      - figures he has had no problem retaining good staff

    Xix.
    P.S. conversely, I have spent the afternoon wading through La Brea tarpits of undocumented MFC spaghetti and decided to replace it with half a page of PHP socket calls.

    --
    "Everything is adjustable, provided you have the right tools"
  142. Coding defensively by rcw-home · · Score: 2, Insightful
    This isn't a critique of VB per se, but more of the culture that surrounds it.

    A quality program must be coded defensively, in other words it must assume that anything can fail at any time and that it must sensically deal with it. It must not make assumptions about external inputs. Unfortunately, few programs are coded to this level of quality, but they are the ones that you won't see security advisories about. Programs that are not coded defensively will, upon hitting a problem, exit with an error message that does not help you find out what that problem is, or continue doing something where it does not make sense to continue. Troubleshooting and maintaining defensively coded applications is simple - whereas with other applications a developer often just leaves the bug for eternity.

    There is extremely little example code for VB that is coded defensively. If you disagree, please post a link to an example where code to open a file has a code path that is run specifically when the file can't be opened. In the meantime, google has 748000 hits for "80004005".

    However, for your particular situation, this is largely moot. If you're already working with a specific developer, they will either code defensively or they won't, regardless of language.

    1. Re:Coding defensively by geekoid · · Score: 1

      there are many reason you can get "80004005". Using google hits has a measurment is stupid.

      Not about a language or culture surronding the language.You arguement is about bad programming.

      If you think VB programmers can't program defensivly, what about c++ programers?
      "C++ memory leaks" has 2,830,000 hits. clearly the VB culture is better! see how lame using google hits is?

      --
      The Kruger Dunning explains most post on /. http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect
  143. Book recommendation by tetranz · · Score: 2, Interesting

    If you're using VB.NET then I highly recommend Rocky Lhotka's Expert VB 2005 Business Objects and the CSLA framework that the book describes. It has plenty of useful information even if you don't use the framework. There is an equivalent C# book.

    IMHO, the new .NET 2 and Visual Studio 2005 stuff is pretty cool. Databinding was a bit of a joke in previous versions that no "real programmer" would use but now it really works and can save you a lot of time. Separate your UI and business layers properly and you'll be able to use the same business code from both Windows and ASP.NET if it ever needs to be web enabled.

    Your question is a bit meaningless without saying if its VB6 or VB.NET. Although I've written lots of VB6 stuff in the past, I'd be reluctant to start something new with it. I jumped from VB6 to C# just because I knew C from long ago and prefer the { } syntax but, as others have said, the difference between VB.NET and C# is pretty much just syntax.

  144. VB's not that bad by HangingChad · · Score: 5, Informative
    At some point in the project some component might fall under the "this will really suck under VB, and we can tackle it much better by writing this piece in C#" which will let you get a toe-hold on the idea of using a better language.

    I have one customer that specs VB.NET for all their apps. After getting comfortable with it there's just no reason for some of the comments here. VB isn't "easier" than C#, just different. If you're a bad VB programmer, switching to C# isn't going to make you a better one.

    My opinion is that a lot of bias against VB stretches back to the day when it was not considered a "real" programming language. But it's grown up and turned into a capable language and if that's what the customer wants, there's no need to try to sell them on C#.

    --
    That's our life, the big wheel of shit. - The Fat Man, Blue Tango Salvage
    1. Re:VB's not that bad by Pulse_Instance · · Score: 1
      If you're a bad VB programmer, switching to C# isn't going to make you a better one.

      I don't think he meant to say that he is a bad VB programmer, I'm pretty sure that he meant to say that he isn't as good at programming in VB and would like to switch to a language that he knows a lot better. Although you should be able to move good programming techniques from languages that you are good at to other languages, I've found that whenever I go find the code that I've written while being new to a language its messy and nowhere near as good as the stuff after I've been using that language for awhile.

    2. Re:VB's not that bad by Anonymous Coward · · Score: 0

      Except that VB.NET attracts all the mediocre developers moving across from VB6. I find that avoiding VB.NET is a good way to avoid bad quality projects - it catches a great percentage of what I term as "cluster fuck" projects. From what I've seen, there's a lot more mediocre developers coming to VB.NET from VB6 than there are mediocre C# developers coming from C++.

  145. Microsofties by Frightening · · Score: 1

    I believe I have never heard the term before. Yet so fitting, so...insulting.

    My new sig:

    I hate Microsofties.

  146. VB or VB.NET?? by Mark+Gillespie · · Score: 1

    VB6 or previous, your asking for trouble, Try pushing for VB.NET, as at least it's a .NET language. Personally, I would push that little bit harder, for C#, as it got all the advantages of VB, and none of the disadvantages...

  147. **** THE PROOF THAT Visual Basic IS EVIL **** by Anonymous Coward · · Score: 1, Funny


       V   I   S   U   A   L   B   A   S   I   C
      22   9  19  21   1  12   2   1  19   9   3     - as numbers
       4   9   1   3   1   3   2   1   1   9   3     - digits added
      \_____/ \_____/ \_____/ \_____/ \_________/
       4       4       4       3       4             - digits added

    Thus, "Visual Basic" is 44434.

    Add 2971 to it - this is the year guillotine was first used, written backwards - you will get 47405.

    Add 4091 to it - this is the year Oppenheimer, the man who created the atomic bomb, was born, written backwards - you will get 51496.

    Add 8591 to it - this is the year Nabokov's "Lolita" got published, written backwards - you will get 60087.

    Turn the number backwards, subtract 1686 - the year Newton published wildly misunderstood "Principia". The number is now 76320.

    Turn the number backwards, subtract 1929 - the year Bingo was invented, taking many lives in years to come. The number is now 438.

    This, written in octal, is 666, the number of the Beast.

    It speaks for itself. QED.

    Copyright (C) Michal Zalewski http://lcamtuf.coredump.cx

  148. Wait, let me get this straight... by jonadab · · Score: 5, Insightful

    He hired you to rewrite this thing in VB, even though you aren't familiar enough with VB to effectively argue (one way or the other) its merits? So he's smart enough to have written the software that got the company started, but he's not smart enough to realize he should hire somebody who *knows* the language he wants them to work in? Does he seriously think it's a good idea to have somebody who's new to the language writing production code in that language?

    I don't.

    If you're going to be working on rewriting it, it needs to be rewritten in a language you have significant experience writing in. Period. For instance, if *I* were going to be rewriting it, the logical languages to choose would be Perl or maybe lisp, because those are the languages I know well enough to write good code. If he wanted it rewritten in VB, he needed to hire someone with VB experience.

    VB *is* reasonably good for certain things (mostly, pure GUI work, e.g., an application that facilitates data entry), but only if the programmer doing the work is familiar with VB. I've seen applications written in VB by someone who didn't know the language well, and they were universally terrible in every respect (_including_ the UI). This is true in any language. When somebody is just learning the language, they aren't going to be comfortable with the language's features or conventions, and so they're going to write execrable code for several months until they learn those things. During that time, you don't want them writing something mission-critical in that language. It's bad juju.

    --
    Cut that out, or I will ship you to Norilsk in a box.
    1. Re:Wait, let me get this straight... by rmpotter · · Score: 1

      At last, some commonsense and reasonable perspective. Please mod Janadab's post up.

      --
      Is this sig nificant?
    2. Re:Wait, let me get this straight... by Doctor+Memory · · Score: 1

      Does he seriously think it's a good idea to have somebody who's new to the language writing production code in that language?

      I don't.


      Worked for me. I was hired for a position almost identical to this: established company with a VB-based product (three, actually) needed a developer to maintain and enhance existing systems and design and build new ones. I had no VB experience, but I had about five years of experience in the field (pharmaceutical R&D). I also had written production code in three or four different languages previously. I picked up VB (16-bit VB4 at the time) and ran with it with no problems (although I did write the 16-to-32-bit VB translator in Perl). People with experience in the application domain will probably be more valuable to the team than a language guru who doesn't have any insight into the problem he's being asked to solve.

      --
      Just junk food for thought...
    3. Re:Wait, let me get this straight... by ethan_clark · · Score: 1

      When he hired me initially, it was understood that I didn't know VB, but that writing it in Java (which I have experience with) would be fine. BUT, he's a little back-and-forth on the whole language thing, and most recently, he's decided "No, I know VB, and the old version is in VB, so let's keep it that way".

      And because I don't really know anything about VB (other than that I've avoided it like the plague in the past), I'm not able to make a good argument against it. And he doesn't seem to care that I don't know VB (yet)...

  149. Reason #1 by Anonymous Coward · · Score: 0

    Reason Number 1 not to use VB:

    Tell your boss no one on Slashdork thinks it's cool to use VB and I'm sure he'll change his mind right away.

  150. VB is more glue than a language by DrXym · · Score: 1
    My experience of VB6 is that it's mostly useful to glue components together. If you are looking to do anything remotely demanding you will soon hit massive issues since the feature set is so bleak that you will be relying on 3rd party components in no time. That most of the 3rd party components will be ActiveX controls written in C++ should tell you all you need to know about VB. With those components come licence fees, limitations and bugs you will not be able to fix. There is also the issue that (in my experience) VB programmers tend to be very poor coders. I shudder when I read VB, VB.NET or ASP.NET on a CV.

    This is not surprising since VB is basically glue. Programmers spend much of their time pointing and clicking, and calling components without understanding what they are doing or the rationale for the way things work they way they do.

    Attempting to rewrite any code in VB is sheer stupidity. Even if it was VB to begin with.

    Porting to VB.NET is an option but even there I would be extremely wary of using it. VB.NET might be easier for VB coders to pick up, but as I mentioned before, such people tend to be lousy programmers and will consequently turn out rotten code. It would be far better to code in C# and hire C#, C++ or Java programmers who tend to have a clue about what they are doing. Be aware that .NET framework is a large runtime and doesn't work on older versions of Windows.

    Another alternative is to port to Java. This isn't without pain of its own but it at least allows you to produce something that runs anywhere.

  151. VB6 data processing can be very slow by gvandini · · Score: 1

    I worked on several similar projects a few years ago where the orginal applications were written in VB6 and I had to re-right/fix them. While I will agree with many other posters that the UI portions were very easy to write/integrate/change and use, the backend code was a different beast. (it you are using VB.Net then many this doesn't apply?) VB6 wants to use a lot of variants.. big slow memory structures for a lot of variables that it passed between functions. For one example I had an array of numbers stored as text in a file that I had to change to integers, flip the array, and save. While my 10 lines VB code were crunching away, I wrote the same code in C, ran it, and was written and done before the VB app finished processing one file. Of course I likely could have optimized my VB code but my point is that simple data munipulation can end up being extremly slow if you are not careful, more so than in any other language I've used. If all your VB code does is UI stuff and very little backend or data processing then it's probably fine given that your client usings VB now and doesn't seem to have any cross platform problems. I would however suggest that you interface with as much non VB code as possible for doing any sort of heavy processing.

  152. This sort of ticks me off by Anonymous Coward · · Score: 0

    1. I was hired to do Visual Basic programming 2. I don't know VB 3. I need to move them to a language I know to save my job 4. Thus, I need to find problems with VB, instead of determining what is the best tool for the job (the existing code base in VB would tend it give it a head start, but see #2 above).

    My software solution is often thrown out of a company when a new manager comes on who knows our competitor, and not our software. Or software still does the job they bought it for, better than the competitors, but the new manager will sandbag us to management instead of learning a new piece of software, thus burdening his new employer with costs for new software, conversion costs and lost productivity as everyone stops what they are doing, is retrained, and comes up to speed on the new product.

  153. Handheld devices? by tepples · · Score: 2, Insightful

    And my X2 4400+ with 2GB of RAM cares why?

    Because it's not handheld. A lot of people demand client programs for PDAs or "open market" smartphones.

    Or, if it's on a server, because it's limited in the number of clients it can serve. More efficient code can serve more clients per second on your "X2 4400+ with 2GB of RAM".

    1. Re:Handheld devices? by Pulse_Instance · · Score: 1

      Comparing a handheld device to a computer with a X2 4400+ and 2GB of RAM is like comparing a Tractor rig capabale of pulling two or even three trailers to a Ford Festiva. Sure they both can do similar things, move something from one place to another, but the tractor trailer rig can move a hell of a lot more than a Swift can. Both things have their purpose but you need to identify the purpose of each one and develop the application for each with that in mind.

    2. Re:Handheld devices? by tepples · · Score: 2, Insightful

      Both [a PC and a PDA] have their purpose but you need to identify the purpose of each one and develop the application for each with that in mind.

      Correct. And a lot of people misidentify the purpose because they refuse to think out of the desktop box. If an application is capable of running acceptably fast on a 100 MHz machine, that's no excuse to code it inefficiently, as you could expand your market by porting it to PDAs.

    3. Re:Handheld devices? by Pulse_Instance · · Score: 1

      That is the solution for certain applications, in other applications another methodology, recommended by Palm, is to have the handheld take input from the user and pass that data off to a server where it will be processed and can be used later by the user or their supervisor. In lieu of a server you can sync the data with a PC later and have the PC do most of the grunt work, these are good ways to keep the handheld doing what it is meant to do.

    4. Re:Handheld devices? by plague3106 · · Score: 1

      Who said anything about handhelds?

      FWIW, there is a .Net framework for handhelds; the .Net Compact Framework.

  154. Microsoft is dropping VB? Are you sure? by Kombat · · Score: 1

    A fair argument against VB6 is that it's at end-of-life.

    Got a link to back that up? VB support has already extended into .NET, and as their flagship programming product, I'd be very surprised if they were planning on dropping it. After all, more people program in VB than any other language. Why would Microsoft turn their backs on their biggest customer base?

    --
    Like woodworking? Build your own picture frames.
  155. It isn't a large project by sproketboy · · Score: 1

    It isn't a large project if you're writing it yourself. Large projects require teams of developers. You by yourself does not a team make. ;)
    VB 6 would be OK for this kind of project although it's a bit dated now. If your boss is stuck on VB you could try recommending VB.NET (which also sucks but)...

    1. Re:It isn't a large project by Jerim · · Score: 1

      I was thinking the same thing. Less than 10 people? Does this person have a concept "amounts?"

      That to me is a small to medium project, which VB is great for.

  156. VB by StormReaver · · Score: 1

    I went from being a big VB fan (in the early 1990s) to being completely disgusted with it (early 2000s). The reasons why are irrelevant to this discussion.

    My suggestion to the original poster is to do what your boss wants. VB will either prove itself useful for this particular project, or prove itself useless for that particular project. If the latter, then you will have all the ammunition you need.

    Despite my disgust with VB, rewriting large applications that are already based on it in another language will be even less productive than continuing to maintain the VB versions. The tactic I have taken, however, to rid myself of all my old legacy VB programs is to write all my new applications in a better, more future-proof framework. My bosses eventually came around to see my point of view, and the old applications are being allowed to lapse and die as new applications evolve to replace them.

    That approach allows us to continuing functioning under the old applications while giving us all the time we need to develop reliable replacements. This takes all the pressure off of us and allows us to continue working towards the future rather than spending all our time running in place rewriting what we already have.

  157. The language is irrelevant to comp scientists by Kombat · · Score: 3, Insightful

    You were hired to rewrite some VB software, but you're not familiar with VB? The problem isn't VB, it's you.

    Actually, the problem is whoever hires people who are qualified for task A to do task B.


    This is a perfect example of the difference between a university-educated computer scientist, and a graduate of a 6-month "tech college" program. The community college drone has only been taught how to use one or two tools to perform common tasks, whereas the computer scientist is taught to truly understand the tools, as well as the thinking that went into them, how to use them to solve multiple abstract classes of problems (instead of just a few common, specific problems), and how to apply that knowledge to use tools they haven't seen yet.

    A real computer scientist doesn't care what language they work in. A good employer should know that when they hire the 6-month grad at $18/hr, they're getting a code monkey that can do only what is explictly listed on their resume. They know that when they spend the extra money for a computer scientist with an actual degree, they expect that programmer to be much more capable, flexible, and adaptable. The fact that they've never programmed in VB before is nothing more than a minor roadblock. Send them to Borders/Indigo/Chapters with $50, tell them to pick up an O'Reilly or Knox book on VB, leave them alone for a couple days, and they should then be able to apply all their learning in the new language.

    --
    Like woodworking? Build your own picture frames.
    1. Re:The language is irrelevant to comp scientists by Splab · · Score: 1

      As a Computer Science student I totally agree with you - however, VB and programs like it is somewhat hard for me to figure out - not because of the language, it's just a c variant (ie c#), but the IDE is somewhat unfamiliar to me, it's a different way of thinking, I like using ion, vim and some linux variant for developing. Granted that makes me somewhat insane, but thats just what I've been playing with so far.

      I do however have the full MS suite installed (legal! MSDNAA is a very nice program) and plan on finding some time soon to have a go at the IDE.

    2. Re:The language is irrelevant to comp scientists by Anonymous Coward · · Score: 0

      or more likely, you wasted years in college where you only really use a couple of the classes you took in your career

    3. Re:The language is irrelevant to comp scientists by CortoMaltese · · Score: 2, Insightful
      The language is irrelevant to comp scientists... A real computer scientist doesn't care what language they work in... The fact that they've never programmed in VB before is nothing more than a minor roadblock.
      I agree that a "real" computer scientist could easily learn a new language and it really might be just a minor roadblock. However, the language is certainly not irrelevant, and we really do care what language we work in. A craftsman needs the right tools. I wouldn't want to code in a language that does not fit the purpose. I like to think that a real computer scientist would recommend a language that best fits the purpose rather than just do what the pointy-haired boss wants.

      If my opinions prevent me from being considered a "real" computer scientist, I'd prefer surreal or unreal. With an actual degree, nonetheless.

    4. Re:The language is irrelevant to comp scientists by sbeckstead · · Score: 1

      And yet people with degrees tend to have much more trouble being flexible. I've been a computer professional for over 30 years now and I never got a degree. I also never had a problem learning a new language or environment. I have had to re-educate nearly every person with a degree I've worked with on how to be flexible when it comes to picking the tools for the job. People with degrees tend to pick what they know. What they know was a very specific environment taught in school and just couldn't seem to get outside the paradigm. Self educated people seem far more willing and able to pick up a new tool and figure out if it will meet their criteria. Now I've had all this experience that directly contradicts your position. On the other hand I've also seen the grads of the tech schools be much more rigid, so that much I agree with. If you want a superior programmer/engineer pick the one without the degree, he has no investment in rigid environments. He's much more likely to learn a new system fast and be able to cope with changing requirements.

    5. Re:The language is irrelevant to comp scientists by Chazmyrr · · Score: 1

      I don't care how good a computer scientist you are, the code you write in the first year or two you use a particular language is crap.

      Sure, you understand the fundamentals of computer languages like flow control and logical operators, but you don't have a practical understanding of how to best use features of a particular language. A couple days with a book lets you write programs that you look back on a few years later and wonder "What the hell was I thinking when I wrote that?"

      I have yet to meet a computer scientist right out of college that truly understands the tools used in information systems. They may or may not know how to write programs in languages used in the business world. They might have a limited grasp of relational databases but they've probably never encountered multi-dimensional databases. They certainly never bothered with anything as antiquated as mainframes.

      It takes years of experience to become a "real" computer scientist instead of just another bozo with a sheepskin.

    6. Re:The language is irrelevant to comp scientists by Anonymous Coward · · Score: 0

      wow, you talk big from someone who programmed a text scroller.
      http://kombat.org/Programming/index.html

      and it looks like your photoshop skills are at about the same level as your programming skills.
      http://kombat.org/Photoshop/index.html

    7. Re:The language is irrelevant to comp scientists by dadragon · · Score: 1

      Engineer without a degree is a contradiction. Where I live, it's illegal to call yourself an engineer if you don't belong to the provincial professional engineering association, and you can't join that if you don't have a degree in engineering.

      --
      God save our Queen, and Heaven bless The Maple Leaf Forever!
    8. Re:The language is irrelevant to comp scientists by Havokmon · · Score: 1
      This is a perfect example of the difference between a university-educated computer scientist, and a graduate of a 6-month "tech college" program. The community college drone has only been taught how to use one or two tools to perform common tasks, whereas the computer scientist is taught to truly understand the tools, as well as the thinking that went into them, how to use them to solve multiple abstract classes of problems (instead of just a few common, specific problems), and how to apply that knowledge to use tools they haven't seen yet.

      That's all well and good, but as a high school graduate, it pisses me off to no end that those 'college educated' programmers may know their language, but don't have a clue about how their applications interact with the rest of the system.

      Basically, while I understand why they may ask about how a network is numbered, what a MAC Address is, or IRQ addressing - they shouldn't be asking me why Windows says "Out of Memory" when they run their newly compiled app or why their application isn't working properly when they're calling a DOS window to 'run something' (race condition).

      I'm sorry, but in the last 10 years of corporate life, I have yet to see where 'university educated' is really worth more than the 'tech college' program.

      And I won't even get into how that exact attitude has completely turned me off to anyone with any higher education. Sorry, but I don't think I'm that good - and when these people don't even compare to me......

      --
      "I can't give you a brain, so I'll give you a diploma" - The Great Oz (blatently stolen sig)
    9. Re:The language is irrelevant to comp scientists by Kombat · · Score: 1

      wow, you talk big from someone who programmed a text scroller.

      Thanks for the plug! You're right, I did in fact author a very popular text scrolling applet almost a decade ago. In fact, I've written all kinds of applications, both big and small. How exactly is that supposed to be a bad thing?

      and it looks like your photoshop skills are at about the same level as your programming skills.

      Thanks again! Considering that I'm an accomplished programmer, I'll take that as a compliment. The vast majority of my Photoshop work, however, goes unnoticed. One of my hobbies is photography (you left out that link: my photography gallery), and I edit virtually all of my photos in Photoshop. It's usually just minor tweaks, such as re-cropping, rotating slightly to level a horizon, maybe adjusting the levels, saturation, contrast, applying a slight hue adjustment, maybe a mask her or there. Occassionally cloning or healing to remove a zit or freckle. I do very little "pure" Photoshop artwork, such as the example on the page you linked to, or of course, the graphics of my website itself.

      But then again, you're an Anonymous Coward, so I don't know why I'm wasting my time with you.

      --
      Like woodworking? Build your own picture frames.
    10. Re:The language is irrelevant to comp scientists by PuddyT · · Score: 1

      I've seen this argument from both sides of the fence every single time there is a discussion on Slashdot about College vs University (diploma vs degree) education. It seems that every time the same crap gets pulled out. The university crowd pulls out the "cookie cutter diploma" stereotype, and the college or even high school crowd pulls out the "I have 30 years of experience and I think uni's don't know crap". As somebody with a bachelor and masters in CS, who also has worked for 2.5 years in industry running my own soft dev company I've come across these universal truths

      1). Not every university educated Comp Scientist is smart
      2). Not every college or self-educated person is dumb

      I've gone to university with, and worked with some very dumb Comp Sci's. These tend to be the people who copied or nearly copied every assignment they did, and who basically was either very good at memorization or they studied off old mid-terms and finals and the prof simply changed very little from year to year. These people I do not consider to be true computer scientists, rather they are just people who "went" to university for 4 or 5 years and came out with a piece of paper and no skills.

      I've also known and interviewed some very intelligent college and self-educated people. These people tend to be very smart BEFORE they went to college. What they learned in college was basically that they can pretty much learn anything given enough time and some good resources. These people will eventually learn just as much as your comp sci grad given enough time in industry or self-study.

      Conversely, I've met some pretty brain dead code monkeys in my day and I'm always disappointed with how little thought these people put in their designs. For the most part, they simply code "what works" or "I found this code on the internet". It doesn't scale up, its horridly inefficient, it has little reuse, and it takes me about 2 minutes to rewrite their 100 lines of code into 20. These people are only slightly less useful than the university crowd that "went to university and got a piece of paper".

      I was hired last year to supplement the IT staff at a company in the US (I'm in Canada). Since I had a good grounding in CS theory I conducted skill screening interviews. I had a small section of CS theory questions which I thought were pretty basic like "What is the difference between a Hash Table and a Linked List" and "Give an example of an X^2 algorithm and how it differs from a linear". I didn't place much weight on these questions, I was just trying to see if I could find anybody with a good grounding in CS theory among the bunch (none had a CS degree, their pay was too low to get anybody but the diploma crowd fresh out of school). There were 15 applicants and only 1 could talk about any of these questions intelligently. I found that pretty sad.

      About your comment that people with degrees tend to be less flexible, I found the direct opposite. In my experience people with a good background tend to love learning new things, as they have the background to be able to understand them quickly. Myself, I find it great when a client or an employer asks me to use a language I don't know. I've found the opposite with college grads, they don't like to venture outside their comfort zone. However, I don't doubt you've run into the situation you describe as well.

      I've rambled for enough now so I'll end on these remarks:

      People with an aptitude for software development will be good developers/architects/testers/whatever regardless of the amount of education they received. University was only ever meant as a way for people to "learn from the mistakes and experiences of others". Its not a magically fairy land where you insert one brain dead idiot and out comes the master of code. People who don't go to university tend to get their experiences out in industry or by reading books. People who graduated from university do the same only they should have gotten a head start if they treated their education se

    11. Re:The language is irrelevant to comp scientists by chasc · · Score: 1

      However real hackers care deeply what language they work in.

  158. My take on it - can't believe no one else has said by maillemaker · · Score: 3, Insightful

    >He hired me to assist in rewriting the software - only catch is, he's stuck on having it re-written
    >in VisualBasic. This scares me, but I honestly can't make a good argument against VB because I'm
    >not familiar enough with it.

    So if you were hired to do this job, wasn't it made plain up front that it was to be done in VB? If this scares you now, didn't it scare you then? Why did you take the job? If you're not very familiar with VB, why would someone hire you to re-write a program using VB?

    Steve

    --
    A work that expires before its copyright never enters the public domain and thus enjoys eternal copyright protection.
  159. The different VB.NET's by Braxton+Perry · · Score: 1

    First VB6 and VB.net are different . Then you have the major itterations of VB.NET. I personally like VB.NET 2005 and I really like upcomming technologies like Linq (DLinq, XLinq). I will tell you that no matter what language your using, you better prepare to scale. Not everyone will have a grid, but you need similar code to make good use of quad and eight way cores that Intel and AMD will certainly have out in the application's lifetime. .Net embraces web services and will help you scale and move into other OS's in the future. But you have to know your companies tolerance for Linux. Remember your writing the solutions your client (boss) will embrace. Not just cool stuff for yourself. Check out channel9.msdn.com and look up "server core" and "Linq". You will see that microsoft is taking higher order programming very seriously and taking the simplicity of non GUI servers seriously.

  160. I did the same thing by Anonymous Coward · · Score: 0

    Hey, sounds like I could have worked for the same company. If the re-write is in .net, then chances are really good haha. But I felt the same way, I hadn't really used VB, but I had heard that it was really only good for beginners, and wannabe developers. I found this to be untrue however, especially with .NET. With .NET comes the ability to do the same things in all .net languages, in fact the .net compiler turns it all into the same meta-language for the CLR, no matter what it's written in. So don't sweat it, just learn the VB and use the VB, leave the issues with that to your boss to deal with, and try to learn a little about optimizing the code while you re-write it, because you can take your skills anywhere with you.....as long as you have some to take.

  161. Why rewrite? by gidds · · Score: 1
    I can't see anyone here asking what seems to me the fundamental question: Why is it being rewritten?

    What problems are there with the existing code? Performance, reliability, scalability, maintainability, major new functionality, portability, or something else? Or some combination? The reasons will have a strong bearing on whether VB is appropriate.

    I don't know VB myself (other than hearing constant comments about its bugginess, lack of scalability, the way it encourages quick hacks and bad design, platform dependence...). But it might be that the reasons for the rewrite (e.g. portability or scalability) pretty much rule it out. Alternatively, if the system performs and scales well and is maintainable and reliable enough, and is likely to remain so for the long term, then perhaps VB might not be such a bad idea after all.

    Other folks have already pointed out that the decision also depends strongly on the nature of the system. But I think the reasons for the rewrite are also vital.

    --

    Ceterum censeo subscriptionem esse delendam.

  162. VB can do the job by robertsconley · · Score: 1

    One of keys to managing large projects is being able to break the project down into its component parts. VB.NET (or even VB6) allows you to do this easily by supporting multiple assemblies linked together. However to be fair this is a feature of the .NET environment so most .NET langauges (C# C++.NET) can make assemblies. Other langauges can certainly create and use libraries but being able to do this is one of the explicit design goals of the .NET environment. In addition you will find the managed memory making you far more productive then environment like C++ where you have to manage memory yourself. Again to be fair Java certainly has memory management so this is not unique to the .NET environment. Visual BASIC is verbose where C# is terse, I find this easier to read over the long term but to a experienced programmer it is a minor difference. There is virtually little difference between .NET assemblies and apps written in VB.NET and C#. However if your app is meant to run in a constricted or resource limited environment like embedded applications then using VB.NET (or even VB6) will not be your best choise. You need to use C, C++, or even assembly. A langauge that will allow you control over every aspect over what resources your program uses. Problems you will run into with .NET will be with the framework install and maintaining it in face of future Microsoft updates. I strongly recommend that you minimize reliance on 3rd party add-ons if this application is to be maintained over the long-haul. (Short-term or one-off projects are a different story). Avoid storing assemblies in the global cache unless you have too as that force you into strict versioning rules. This was the bane of large projects in VB6 with the rules for COM DLL versioning. Plus using the global cache force you to register the assembly where otherwise it is a drag and drop situation with local assemblies. Be aware of how much memory you are using. I have noticed with .NET application they tend to glup memory down like it is nothing. I learned this with VB6 (and later VB.NET) that despite the fact you have managed memory you don't create huge memory structures just because you can. Make sure you need that amount before designing it in. As for my own personal experience I written a maintained a large CAD/CAM application that creates and runs parts for a metal cutting machine. I maintained this program through its original HP Workstation origin through DOS through VB6 and finally to VB.NET. It is has several hundred thousand lines of code organized using the model view presenter structure (http://www.martinfowler.com/eaaDev/ModelViewPrese nter.html) Also I maintain an open source simulation of the Program Mercury and Gemini capsule and rocket written in C++. So I had experience in both worlds. VB.NET (and VB6) was certainly up to the job of creating and maintain a large application. Finally get Design Patterns and Refactoring Software these two books (and the othere they refer too) will help make the most out of .NET ability. (Plus the benifit of these applying to other langauge like Java) http://www.amazon.com/gp/product/0201633612/sr=8-1 /qid=1149165698/ref=pd_bbs_1/002-2543787-3204834?_ encoding=UTF8 http://www.amazon.com/gp/product/0201485672/qid=11 49165751/sr=2-1/ref=pd_bbs_b_2_1/002-2543787-32048 34?s=books&v=glance&n=283155

  163. It shouldn't really matter by edmicman · · Score: 1

    I assume you're talking about the .NET VB, and hence comparing it to something like C#.NET. Personally, I think in the .NET world it really just comes down to preference. The syntax between VB.NET and C#.NET seem very similar. I started off on VB (in much the same fashion - my old work's custom app was written in VB6), and now at my new job develop in C#. I prefer C#, but mostly because I feel it makes me a better programmer. VB is very loose in it's structure; I feel like C# forces me to lose some of the bad habits I had from VB, and makes me have better looking and structured code. But from using both, they both can be easily used to accomplish the same things. I also think VB has some better handling of "business logic" type things like date manipulation and the like.

    Good luck!

  164. WXWidgets wx-Devcpp by TheGreatOrangePeel · · Score: 1

    Well, I'm not going to argue against VB and I wouldn't have you do that either, but depending on what type of program it is, you might point out VB's weakness on lack of portability. You might think I'm about to jump on the Java bandwagon here, but I'm not. Assuming your superior knows C/C++ you might encourage him to check out wx-Devcpp. It as an interface simular to VisualBasic (and C# for that matter)but gives you the ability to take the code and move it to Linux and other OSes that use the GCC compiler.

  165. To VB or Not ?!?!? by TheGreatGonzo · · Score: 1

    Well, I've worked with VB and VB.net for over five years commercially now. I learned VBA and then moved to VB6 as my first programming language. Since then I have learnt and worked with Java C/C++ Python and Ruby. I personally prefer C++ and Ruby but then I like working with KDE. I still work with VB.net as that's what I'm employed to do. I believe the products I work with would suit C# better to make full use of the .Net framework and the OO abilities that it provides. But hey we've all got to earn a £/$. The main issue I have with VB is that it's Microsoft (who I'm not bashing!!) and therefore, you are always tied to them. I like Mono (which no one else seems to have mentioned!) I realize that mono is mainly C# but they do have a VB compiler and vibe support is increasing. At least using mono would allow the product being developed to be run on multi OS's. Also Gambas is the open source version of VB6 designed to run on Linux. VB6 is DEAD though and I think any application that is being re-written or started now needs to be based on .NET. A discussion should probably be held with the clients to see what plans they have for their own software. If they are going for vista or to Linux or OSX then that will impact the language of choice as well. As much as we would all like to change the tools/software etc we commercially work with as we have our own opinions of what is best it's surely the employers decision at the end of the day.

    --
    Oh, uh, good question. Now technically speaking, uhh, let's say, put me down as a... 'Whatever'?
  166. A modest solution by DaveV1.0 · · Score: 1

    I suggest you quit and let him hire someone who can and will actually do his job. You know, someone who actually wants a job programming enough to program in the language the boss wants. Someone who has some experience in programming VB or wants to program in VB. Someone who knows their place as an employee and will not let their anti-MS/anti-VB bias effect their job performance.

    If you don't know enough about the language to make an argument for or against it, you should quit and let him hire someone who actually does know the language.

    Of course the fact that you don't know the language well begs the question, "Why do you think you are qualified to make the decision of which language to use when you can't even make an argument against the language your BOSS has decided to use?"

    Of course, you could actually LEARN about the language and what it can do. Then, you will either be able to make a reasonable argument or be able to do the JOB YOU WERE HIRED TO DO.

    --
    There is no "-1 offended" or "-1 you don't agree with me" mod options for a reason.
  167. Vendor lock-in by Anonymous Coward · · Score: 0

    VB (and .NET) is not cross-platform.

    Even if there is a compiler available for other platforms, it is not the same thing.

    Microsoft will always include some hooks to make you use Windows, Office, etc. Your product will have this "Microsoft tax", which you cannot negotiate, eating your margins.

    Then, you have all the problems with vendor-lock in:

    In economics, vendor lock-in is a situation in which a customer is so dependent on a vendor for products and services that he or she cannot move to another vendor without substantial switching costs, real and/or perceived.

    These costs to the customer create a situation which favors the vendor at the expense of the consumer. Monopolies tend to result when lock-in costs create a market barrier to entry, which may result in antitrust actions from the relevant authorities (the FTC in the US).

    Vendor lock-in is often used in the computer industry to describe the effects of a lack of compatibility between different systems.

    Different companies, or a single company, may create different versions of the same system architecture that cannot interoperate. Manufacturers may design their products so that replacement parts or add-on enhancements must be purchased from the same manufacturer, rather than from a third party (connector conspiracy). The purpose is to make it difficult for users to switch to competing systems.

    How to avoid vendor lock-in? Embrace open standards.

  168. Comparison by CrazyTalk · · Score: 1
    A complete comparison of features is available here

    Having worked in both, I prefer C# due to its cleaner syntax and ability to use XML comments in the code. VB does have a few minor advantages, like the ability to use default parameters. Either one can get the job done, and a decision on which one to use is genrally made based on what the developers have the most experience with/are the most comfortable with.

  169. If you can't argue for or against it... by Builder · · Score: 1

    If you are not familiar enough with the product to argue against it, as it states in the summary, should the owner really have hired you to help with the re-write ?

  170. Substitute VB for language X by metoc · · Score: 1

    Interesting how it sounds if substitute PHP/Perl/Java/etc. for VB?

    I work for a small company ( 10 employees) as a software engineer. The company got its start with a software product written by the owner in PHP/Java/Perl. He hired me to assist in rewriting the software - only catch is, he's stuck on having it re-written in PHP/Java/Perl. This scares me, but I honestly can't make a good argument against PHP/Java/Perl because I'm not familiar enough with it. So my question is twofold: I am looking for some confirmation to my suspicion that PHP/Java/Perl isn't the greatest language for large projects; and If PHP/Java/Perl isn't good, arguments against using it. If it is good, what arguments would you use to argue for it (for my sake)?" If you are going to argue against a language, it is best if you do so after you become familiar with it so that you can argue fairly on its merits and deficiencies. PHP/Java/Perl, like just about every other language, has its place. For the sake of discussion however, what tasks would PHP/Java/Perl not be suited for.

  171. Here's a reason: by Mysteray · · Score: 1

    Here's a reason: MS Dev Studio 6.0 doesn't even install cleanly on Windows XP with SP2, but I've heard there're workarounds. The .NET editions are surely much better, but... I'll consider VB when someone shows me its context-free grammar.

  172. Objective C and Cocoa by wandazulu · · Score: 1

    I can attest that VB can be used in situations that may not be the best fit for it (trading systems, large spreadsheet-based forecasting applications), but as others have said, it's a great tool for "one off" or prototype apps where it's important to get the gist of it going.

    That said, what a lot of people don't realize is that Apple has their own VB-like environment with XCode, Cocoa and Objective C. I have been able to prototype and write apps in XCode pretty much the way I did in VB, but I have C as the language, C++ if I want it, and the full API of the system, instead of being limited to what's available in a VBX/OCX or using unnatural syntax to make Win32 calls. Yes, it's Mac only, but that's not a hinderance...the bulk of the application (model and controller) are more easily ported (if necessary) than anything .net.

  173. VB by Merdalors · · Score: 1
    Visual Basic makes simple things easy, and complex thing impossible.

    Also, you typically come to depend upon a whole ecosystem of third-party vendors whose OCX'es may not keep pace with changing versions of Windows.

    --
    Slashdot entertains. Windows pays the mortgage.
  174. I think you answered your own question. by twitter · · Score: 0, Troll
    [Q: Which VB apps do not look professional] ... any time the look of windows changes (which incidently it hasn't done significantly since 1995), a new dll will be released that will allow VB coders to use that new interface enhancement.

    Yes, that 1995 interface is what I'm talking about. Vista will almost bring it up to KDE 2.x standards, but VB has been "depreciated" and probably won't come along for the ride as usual.

    --

    Friends don't help friends install M$ junk.

    1. Re:I think you answered your own question. by user24 · · Score: 0, Troll

      no, VB6 is no longer supported, but i'm sure will still be capable of using vista's interface dlls, and VB.net is sure to have vista support. Also, it's hardly fair to criticise VB for not being capable of producing interfaces of an OS that hasn't even been released yet.

  175. You're kidding, right? by Control+Group · · Score: 1

    I mean, really.

    Asking slashdot for an analysis of why VB might not be ideal is like asking Innocent III for an analysis of Cathar beliefs.

    (Or, if you're a Godwin fan, asking Hitler for an analysis of Jewish culture)

    --

    Reality has a conservative bias: it conserves mass, energy, momentum...
    1. Re:You're kidding, right? by east+coast · · Score: 1

      In all honesty take a moment and read some of the posts. I was fairly surprised to see the amount of support for VB and more to the point the lack of support of the original question.

      The guy who posted the original question really dug his own hole. The entire arguement looks like : "I don't know VB. I got hired to write VB. I won't tell you anything concrete about my project. Now give me a reason to fight it." Right from the get-go it looks like a MS bashfest setup. Fortunatly heads cooler seem to have prevailed and a lot of good advice both for and against have come up. Ultimaltly I agree with a large portion of the posters who basically called bullshit on the situation and proclaim that the programmer is the problem here and not the language.

      --
      Dedicated Cthulhu Cultist since 4523 BC.
    2. Re:You're kidding, right? by Control+Group · · Score: 1

      In all honesty take a moment and read some of the posts.

      Read before posting? You must be new here. ;)

      In all seriousness, I did read quite a few comments, and you're right, many people are being perfectly rational about it. But it seemed such an obvious thing to say that I couldn't stop myself. And it's not as though there isn't a kernel of truth to it, either - you have to admit that /. has a pretty well-demonstrated bias against MS in general and VB in specific (I speak of /. as a whole, here; obviously, there is a minority - even a vocal one - that doesn't "toe the party line," so to speak). No matter how reasonable the general tone of discussion may be, we're going to be a relatively unreliable source for objective analysis of MS products.

      --

      Reality has a conservative bias: it conserves mass, energy, momentum...
  176. Re:Umm by Anonymous Coward · · Score: 0

    The single biggest reason you should move from VB to another language is that Visual Basic is no longer supported, or won't be soon. I'm not sure about the exact date. VB.Net is a pleasure the develop with. If cross platform issues are a concern, then I would go with C/C++ or C#.
    Other reasons might be:
    1. VB error handling is not very robust.
    2. OOP is a bit lack luster, and some OOP methodologies can't be applied to Visual Basic applications in a coherent way.
    3. You cannot control the IDL and Type Libraries generated by VB, some features of COM interfaces can only be accomplished by cobbling together some IDL and compiling it with the midl tool outside of VB.

    There are lot of arguments against any language. It all depends on the environment you are putting it in and what you are trying to accomplish.

    As for all of the FUD about Visual Basic being a bloated, slow, toy language, only suited for utilities (toys), and prototyping:
    VB applications can be completely free from VB Forms other less flexible aspects, and developed purely with Win32 API. There is virtually nothing you can do with C++ on the Win32 platform that you can't do with VB.

    I work for a company that designs a complete suite of software applications that controls and tracks automobile manufactuing assembly lines. If this software were to stop the manufacturer, they would fine the party at fault as much as $15,000 per minute of down time. A supplier can easily go out of business with as little as an hour or two of downtime.

    We communicate with every type of device/system you can imagine, control assembly line PLCs, track huge volumes of data about the manufacturing process. Our clients trust us to control and track the process of assembling air bags, anti lock brakes, and other critical systems. We in turn trust Visual Basic to get the job done.

    Is Visual Basic perfect? Nope. Is it my language of choice? Nope. Does it get the job done, and do what we tell it to? Yup. Does it ensure that the bolts on the air bags, or ABS are torqued properly? If your car was produced in the US chances are good.

  177. Down to Basics by Anonymous Coward · · Score: 0

    Visual Basic is a scripting language. It has some of the advantages of a modern scripting language, and all of the drawbacks. It's easy to pull in a precompiled piece and use it as a part of your program. That's an advantage. It's got a nice IDE if you're using the right version. (May be an advantage.) It's also going to run much slower than a properly written C program would. That's a disadvantage much of the time.

    Treat is like a clumsy Python, and you'll be close to reality.

    Try to push for the .Net environment. That's where Microsoft is currently pushing. VB is just a tool there. You can also use C#, Python, or real C routines (compiled) and let the parts use each other. There may be other language options in this mix as well. The Basic, C# and Python parts will all be compiled to byte code anyway for run time. You get to use what you're comfortable with, and the end result is that the thing will (or might) work. You'll end up with a Windows only product (Probably with an XP or Vista only product), but that may not be an issue. if you talk to your boss, you may find that this is what he has in mind anyway.

    VB is a tool, sometimes a nice tool. Remember that doesn't mean it's your only tool. Good luck iimplementing the program.

  178. VB is the best language, VB is the worst language by Maury+Markowitz · · Score: 4, Interesting

    Or, to be more accurate:

    VB, as a language, is the worst language I have used in the last 20 years.

    VB as a development platform is the most productive system I have used in the last 20 years.

    Hate the language, love the system. You will too.

  179. Parent post is incorrect by Anonymous Coward · · Score: 0
    Java is a compiled language. The Java source you write gets turned into native machine code. It's just that the compilation happens at runtime, unlike with many other languages where it happens earlier. Same process, different time.

    What are you smoking? It is most certainly not turned into native machine code, at least not in any environment I've ever seen. It is turned into Java's own byte code, which is then-- you guessed it-- interpreted. That is one of the reasons java is so damned slow.

    The interpreter is a big "feature" of Java... you can't have garbage collection without something to collect it for you. I can't believe that a post that is flaming incorrect was moderated *up* as "informative". C'mon, slashdot mods... just because you don't understand something doesn't mean it's informative.

    1. Re:Parent post is incorrect by msuarezalvarez · · Score: 1

      There is no correlation between having a garbage collector and being interpreted. You can use a garbage collector in good old C if you want.

  180. Unanswerable question by infochuck · · Score: 1

    I'd suggest that most anybody proffering a dead-on answer to your ill-conceived question is unprofessional, uneducated, inexperienced, and/or limited in their skill set. This is not a question that can be answered without knowing many specifics which you are probably unwilling to supply. To wit:

    -You *claim* this is a 'large' project, but would you really know a large project if you saw it? Can a 10-man (person) shop (presumably not all coders) really handle a *large* project? What criteria are you using to define large?
    -Do you already HAVE a set of tools/libraries/etc that would be helpful in one platform or another? Is the platform you are contemplating moving TO a non-free one? Because that's more overhead if not.
    -Other specifics are needed. Client-side only? Client/server? Web-based? Any specific hardware that needs supported? Who's the end user? Are real-time capabilities needed? Is this a mission-critical system? What's the logical/physical (if applicable) architecture look like?

    This is the short list.

    Look , I'll be blunt: you obviously don't know enough about what you're doing to actually put forth the info required to deliver you the answers you seek (but, to be fair, you could not possibly do so in a forum such as this (so why try?), even if your employer did approve of postring so much info about your product), so perhaps you should either let someone more capable than you speak up, or put forth some compelling reasons FOR a different platform instead of reasons AGAINST something. That, or listen to the boss who has managed to build a successful business - no easy task.

  181. it depends... by Anonymous Coward · · Score: 0

    It really depends on what are you planning to do with VB.

    I'm hired to do custom,small projects for various companies and simply put I don't need to complex C++ to create a small application.

    For example, I create CD presentations, CD autoruns, batch convertors for various documents (from one format/version to another) and many many other similar apps.

    Another good example that I could mention is a small application that takes video frames from a video file, checks each frame and tries to block the eyes of the people in the image (sensed motion and ads a black/blurring rectangle over the eyes). It took me about 3 hours to program the whole thing,I'm sure it would have taken at least twice as much to write it in C++.

    Conclusion, VB is great for RAD (rapid application development), for custom,small applications, helper applications and so on. It's great to use it for interaction with databases, Active-X controls are painfully easy to create in it ..

    Of course, it has limitations, naturally I wouldn't start writing a system driver in it.

    My advice to the person asking, start learning VB, you'll understand it completely in a few days.

  182. ahem by namekuseijin · · Score: 1

    ".NET simply provides the programmer with the ability to program in the language they either know better or in a language that seems better suited to the job, without taking a performance hit, since they all compile to the same intermediate language."

    Using natively compiled languages too the programmer can choose the language they know better and interoperate with a bigshit framework either via language bindings or IPC, and they'll get compiled to the very same "intermediate language": assembly!

    So, how is this different from going .Net?

    oh, yes, i know! natively compiled languages perform far better...

    --
    I don't feel like it...
  183. Thirteen ways to loathe VB by Merdalors · · Score: 1

    Here's the funniest thing I've seen written about VB: Verity Stob's "Thirteen ways to loathe VB".

    --
    Slashdot entertains. Windows pays the mortgage.
  184. Each tool has its niche by Kalinago · · Score: 1

    I've known for years how sensitive can this topic be to many developers. its like discussing religions + politics and who's girlfriend is prettier.

    Anyway, I still believe that today's programming scenario is much more levelled than 5-10 years ago; everyone is generally dancing the OOP waltz and most available tools offer the same overall features and power. *However* as much as this is true to me, each language has better focus on a particular business segment. If you're attempting to sell a regular store cash management app to earn your daily bread, C++ or Java will be probably be clumsy choices. Perhaps you'll be starved by the time you whip up a decent GUI or fully understand the requirments. That's where VB or Delphi (sniff...already missing her) come into action, offering OOP leverage as well.

    In my humble opinion, my brain treats software development as teamwork, so if I was to make a choice between tools I'd prefer one that offers me a friendly, productive IDE and clear, easy to maintain syntax that most people can understand in a glimpse and not a string of Mayan cryptographic symbols:

    if ( Box = open ) and ( not IsEmpty ) then..

    rather than

    if (Box == open && IsEmpty != false; ...

    With all respect to all the skilled Java, C++, C# programmers out there, I can't understand the practical use of weird characters as standard logical operators, case sensitiveness or excessive sintactical complexity tradition in these tools other than being a geeky "macho" thing for self assurance by their creators.

    Most problems with software (as with the world itself) come from inside the head of guy that writes the code and not from the language used.

    ---

    If heaven gives you lemons, learn to make lemonade.

  185. Visual Basic is not for the futur by Tulka$ · · Score: 1

    The Microsoft .NET platform is rapidly migrating to C# instead of Visual Basic.
    And one day, MS will drop VB from their SDKs.

    Sample ? The DirecX SDK can't use VB now, it's C# instead.

  186. Deployment... better use Delphi by Anonymous Coward · · Score: 0

    I have runned projects from web apps, c, c++, python, .net, java, jython, gambas, php, and of course, vb and Delphi. Visual Basic has 2 problems. I mean, it's really good for getting the work done fast, but it's really hard to escape from begin just a proof of concept. is hard to harden. and also, deployment. a lot of vb. apps fail to deploy due to dependencies. Delphi is a very similar approach to programming, it generates really fast code, it's compact and is less prone to having mistery bugs.
    Also if you program vb, catching delphi is a no problem. .net is... to big. i can't imagine a .net app on a P166 32mb ram with win95b . delphi apps we do work fine on a wide range of wardware, including Wine (*nix).
    Try that.
    And... if your boss wanna vb, maybe it's not so bad. you can do marvelous things with vb. just write good code, and you gonna have good apps.

  187. That Was the Case Before .NET Too by Black-Man · · Score: 1

    COM is COM... and you could write dll's in VB and call them from C++ - even thru the debugger which is really coo - and vis- versa.

    1. Re:That Was the Case Before .NET Too by uradu · · Score: 1

      Yeah, but .NET goes far beyond that by making these compiled class extensible from another language. You can extend a C# class in VB.NET without needing its source code, and vice versa.

  188. It's easy by Programmer_In_Traini · · Score: 1

    It's easy, if you cannot make a good argument against VB, or preferably, a good argument for your preferate language, then just stick to VB.

    After all, he's your boss and he's got the right to decide which language he prefers.

    Look at it this way, of course, vb 6.0 (i assume thats the vb you speak of) is not so great, mainly because its not scalable, its single-threaded with a truckload of overheads that kills the performance.

    *but* IT IS possible to write something efficient in VB6, its just harder. So you can think of it as a way to test your skills.

    Plus, learning a new language, especially for a small company, has a lot of risks involved because the company may not have the backbone to support the financial delays associated to the learning curve of a new language. Moving from VB6 to VB.net isnt that bad (and vb.net is FAR more efficient than vb6) but there's still a learning curve to it, mainly because the programmer really has to start thinking in terms of OOP, which VB6 doesnt support at all (it merely lets you implement interfaces).

    lets say there are 5 programmers on the team, all earning 40k per year. and lets say the average programmer will take about 2 months before being comfortable and productive in the new language (vb.net, c#, ruby....whatever you choose) then the financial burden on the company, the risk is :

    (40k/12 months) * 2 * (5 programmers) = roughly $33,000

    for a small company, $33,000 is a lot of money, so right there you can see why your boss is reticent.

    not to mention it may cost more if for some reason the team is forced to go back to VB6 because say.... there's component only compatible with VB6 that needs to be used and you only find out after a month or so.

    --
    If you look like your passport photo, you're too ill to travel. - Will Kommen
  189. My impression as a sysadmin by Aram+Fingal · · Score: 1

    I think the main arguments against against VB are two things. One is the lack of cross-platform development (as others have mentioned). The other has to do with dependence. Using VB or VB.net locks you into Microsoft's upgrade cycle (or gets you stuck behind it) and makes it difficult to deploy your software widely without insisting that the user has just the right version of Windows, MS Office, etc. Your application my conflict with others that have different requirements.

    My experience from the sysadmin point of view is that you don't have too much problem supporting one or two applications written in VB but, once you have more than that, you get into trouble trying to satisfy everyone's requirements. Maybe the particular applications I have delt with were just not well written and such programmers would have come out with crap in any language but this is the impression I have of VB.

  190. random thoughts by Anonymous Coward · · Score: 0

    OK - you don't tell us what the project is, why VB was chosen in the first place, and why you are re-writing it now so this has to be very generic (and therefore not very useful). And there are some good points here already.
    But

    Until Relatively recently I did pretty much all my development with VB6. Briefly this is a summary of what I liked about it:
    1. Its very quick to write: OK so the IDE looks a little dated now but it is really a very, very good environment for working in. The only IDE I prefer is IDEA.
    2. It's a lot more powerful than people who don't spend time with it realise. Since it is basically just a wrapper on to COM anything you can do in COM can also be done in VB. What's more it is actually pretty easy to call C++ libraries from VB (so long as you know how to) so if you need to, say, do a memory copy to avoid the deep String copy that VB will do by default this isn't hard to do either.
    3. Its pretty stable and pretty bug free (though no longer supported so if you have a problem you are stuck with it).
    4. You can get a fairly good looking GUI built in know time at all.

    Why VB6 is a pain:
    1. COM is deeply integrated into Windows. When something goes wrong (like the wrong version of a COM component is registered with Windows) it is hard to track down to put it mildly.
    2. DLL hell. Someone changes a library you didn't even know you were using and suddenly you don't have it any more and your code breaks for no readily apparent reason.
    3. VB6 is quite a quirky language - not quite object oriented, not quite procedural, it can take some getting used to, and I'm not sure it really works as a hybrid.
    4. Although it isn't impossible to write VB well it is hard - much harder than it should be. The error handling is one major part of this (not much better in .NET sadly) but in general structuring VB code well is hard and this makes it very, very hard to maintain VB apps (think of it as a write only language).
    5. Although you can (sort of) multi-thread a VB app is it unfeasibly difficult and generally not worth the bother.

    I built some pretty big systems with VB6. The largest was an internet banking system for a major retail bank - and the problems above turned out to be killer. Getting a cluster of half a dozen WIN2K machines built the same, reliably, every time was almost impossible. I don't think we ever got the solution to run at full strength. .NET was quite upsetting as a VB programmer. In one move they made our investment in VB redundant. It is, undeniably, a vastly more sophisticated offering and fixes some big issues (the multi-threading for one).. Essentially you have an early version of Java/JEE with some of the quirky bits of Java ironed out and one or two nice features added in but without the platform independence (a big minus) and with some significant bits missing (for instance Applets, Servlets etc. - basically the older bits of the toolkit). The major issues I had with .NET were:
    1) There isn't explicit versioning of libraries or API's - welcome to son of .DLL hell.
    2) There is no way to change an API without breaking it (no equivalent of Java's deprecation mechanism that I can see).
    3) No checked exceptions.
    4) It still ties you to Microsoft. And after what they did to me with VB I don't particularly want to be tied to them again.

    I spent about 6 months learning it then decided to have a look at Java. That was in 2003 and I've stuck with Java since. The main problem with Java remains Swing (the GUI foundation classes). They've got a lot better but it still quite difficult to build a nice looking GUI in Java (way harder than it should be). Still it is a pretty sound choice for most Enterprise apps.

  191. The new VB rocks! by Anonymous Coward · · Score: 0

    VB used to be kind of bad, and it's still sort of verbose. But VB.Net is kind of good, and the next VB (VB9, codnamed Orcas), for which there is a technology preview out now, positively frickin' awesome!

    I know, it seems strange that a VB iteration is actually great, and nobody was more surprised than me, but try it out, leave your preconceived notions at the door, and I promise you'll see how cool it really is!

    One of my absolute favourite languages so far. Type inference, XML as first class values (including XML syntax!), static typing everywhere it's possible, dynamic typing where it isn't, "strong duck-typing" etc. etc.
    As I said, the syntax is still kind of verbose, but I can live with that. VB9 owns C# 3.0.

    Download the tech previews here: http://msdn.microsoft.com/netframework/future/

  192. All wrong by lucm · · Score: 1

    You got things wrong.

    -Visual Basic is not a scripting language; the programs are compiled ("true" EXE since version 5). Two stripped-down version of Visual Basic are available though; VBA (Visual Basic Application), a scripting language designed mostly for Microsoft Office, and VBScript, which is an actual scripting language (for ASP or Windows Scripting Host mostly).

    -Most of the Office (and some of the Windows) libraries are still unavailable in .NET; if you use the framework to interact with them you have to use interop, which means that you basically cast everything and make no use of .NET features.

    --
    lucm, indeed.
  193. My Experience by synesis · · Score: 1
    I am currently working on a large VB6 project (200+ forms)which was converted to VB.Net.

    The .Net version of VB is nothing like VB6 it is essentially just Java/C# with a different syntax. The .Net framework is very powerful and VB.Net is a full partner. Our policy is to write new code in C# but to leave existing code unchanged. This appears to be a valid approach.

    We considered using a .Net decompiler to convert the original code to C#. Unfortunately, this produced too many issues to resolve in the time available. My understanding is that specialized converters can convert about 90% of the code automatically.

    Our big issue is not with the language - any programmer worth his/her salt can soon adapt - it is with the Visual Studio 2005 environment. We find VS buggy and unusably slow. We typically exit to Textpad to perform any extensive editing. The VS editor allows you to type half a line before the background parser kicks in and locks the keyboard for 20 seconds or more. Simple operations like Find/Replace are faulty for some replacements. I suspect that VS internally holds the source in some syntax tree and that some replacements are incorrectly structured. Access to Intellisense and the the Help system are unbearably slow. On a 1.8GHz computer with 1GB of ram it takes over a minute for a help page to appear.

  194. A possible option by metamatic · · Score: 1

    If the owner wants to write in VB6, or you're not prepared to drink the Microsoft Kool-Aid and require .NET and a 15MB download, you might want to consider RealBASIC.

    It's almost totally compatible with VB6, and compiles to native code on Windows, Macintosh and Linux, so you'd actually have the option of supporting multiple platforms.

    http://www.realsoftware.com/

    --
    GCHQ Quantum Insert installed. If only our tongues were made of glass, how much more careful we would be when we speak
  195. Not business critical, but... by blueZ3 · · Score: 1

    I've refused to install programs that required me to install or upgrade the .NET framework. Why? Because I don't want another x00 MB of hd/memory taken up by something that Microsoft says is good for me. The machine that the software was going to be installed on had limited RAM and hd space and a relatively slow processor and I wasn't in a position to upgrade it. Throwing the .NET framework at an already overloaded system was out of the question. In fact, I decided to code my own version for this very reason.

    You may think that the .NET framework is the best thing ever, but there are people out here in the real world that actually have reasons for not wanting to install it.

    I always wonder what magical "hardware is no object" world a lot of slashdot posts come from. If there's a space-time portal over to your universe, let me know. For now, I have to live with the constraints that my current universe imposes.

    --
    Interested in a Flash-based MAME front end? Visit mame.danzbb.com
  196. Re:Microsoft is dropping VB? Are you sure? by msuarezalvarez · · Score: 1

    VB6 and VB.Net are completely different things.

  197. VB In a large machine production setup by LightningTH · · Score: 1

    I currently do Visual Basic 6 programming on large machinary. With it we drive customized hardware and require millisecond timing. A basic idea, we have 5 seperate areas of the system that all have to interact with each other. 3 of the sections have 8 stations that are independant of each other and fire every 2 seconds.

    We are migrating to Visual Basic .NET. Of course this was all done by my boss who only knows Visual Basic. We are even directly controlling printers outside of the windows printer queue via a class I personally wrote in Visual Basic.

    With my 10 years of programming knowledge ranging from low level assembly to C++ game development, I have learned that Visual Basic allows for quick application development for business applications.

    However, Visual Basic has progressed over the years from what it use to be. It use to be slow, cumbersome, and a pain. Now between CPU speed increases and Visual Basic actually being mostly compiled, you do not see a difference. The only time I find that VB is unsuitable and unable to perform a task is when you need the last little drop out of the CPU. Most applications do not require this. I can slap a screen together and have new data showing on the screen faster in VB than going thru the complexity of C++.

    Combine VB with Windows API's, which you use anyways in C and C++, and you have just as much control. I know .NET has made such API access more difficult but at the same time .NET has introduced all of the nice things from C++ like overloading functions, virtual classes, class inheritance and instancing, and polymorphism.

  198. How about becoming familiar with VB... by gatkinso · · Score: 1

    ...and THEN jumping to a conclusion?

    --
    I am very small, utmostly microscopic.
  199. It's time for a JVM HotSpot education by TrueSpeed · · Score: 0

    The level of ignorance exhibited in relation to Java compilation and execution is just bewildering - even for a slashdot crowd. Please educate yourself on how the JVM Hotspot compiler works before making such silly comments in the future. And just to clarify, the JVM HotSpot compiler does compile the byte code into extremely efficient platform targeted machine code.

    The Java HotSpot Compiler

    Background

    The Java programming language is a new one, with its own unique performance characteristics. Most attempts to date to accelerate Java programming language performance have focused on applying compilation techniques developed for traditional languages.

    Just-In-Time (JIT) compilers are essentially fast traditional compilers that translate the Java-technology bytecodes into native machine code on-the-fly. A JIT runs on the end-user's machine which actually executes the bytecodes, and compiles each method the first time it is executed.

    There are several problems with JIT compilation. First, because the compiler runs on the execution machine in "user time," it is severely constrained in terms of compile speed: if it is not very fast, then the user will perceive a significant delay in the startup of a program or part of a program. This entails a trade-off that makes it far more difficult to perform advanced optimizations, which usually slow down compilation performance significantly.

    Secondly, even if a JIT had time to perform full optimization, such optimizations are less effective for the Java programming language than for traditional languages like C and C++. There are a number of reasons for this effect:

    The Java programming language is dynamically "safe", meaning that it is ensured that programs do not violate the language semantics, or directly access unstructured memory. This means dynamic type-tests must frequently be performed (when casting, and when storing into object arrays).

    The Java programming language allocates all objects on the "heap", whereas in C++ many objects are stack allocated. This means that object allocation rates are much higher for the Java programming language than for C++. In addition, because the Java programming language is garbage-collected, it has very different types of memory allocation overhead (including potentially scavenging and write-barrier overhead) than C++.

    In the Java programming language, most method invocations are "virtual" (potentially polymorphic), which are much less frequent in C++. This means not only that method invocation performance is more dominant, but that static compiler optimizations (especially global optimizations like inlining) are much harder to perform for method invocations. Most traditional optimizations are most effective between calls, and the decreased distance between calls in the Java programming language can significantly reduce the effectiveness of such optimizations, since they have smaller sections of code to work with.

    Java technology-based programs can change on-the-fly due to the powerful ability to perform dynamic loading of classes. This makes it far more difficult to perform many types of global optimization, since the compiler must not only be able to detect when these optimizations become invalid due to dynamic loading, but also must be able to undo and/or redo those optimizations during program execution, even if they involve active methods on the stack, without compromising or impacting Java technology-based program execution semantics in any way.

    As a result, any attempt to achieve fundamental advances in Java programming language performance must provide non-traditional answers to these performance issues, rather than blindly applying traditional compiler techniques.

    The Java HotSpot performance engine architecture addresses the Java programming language performance issues described above by using adaptive optimization technology. Adaptive optimization is the fruit of many years of research into object-oriented language implementation performed by the Sel

  200. C# For Frameworks and Apps, VB.NET for Apps Only by Anonymous Coward · · Score: 0

    Forget VB6 or prior. Just run if that's the job.

    VB.NET and C# can accomplish almost all of the same things and have access to the exact same framework. Just do not use any of the old VB6 keywords like MsgBox but rather use MessageBox.Show().

    C# has some extra freatures that make it better than VB.NET for writing frameworks, although you can still write frameworks in VB.NET just fine. If you're into Visual Studio 2005 (the only way to go) then C# has the following advantages:

    - Implicit Conversion Operator Over-riding
    - out Parameters (not the same as ref/ByRef as they don't have to be initialized)
    - Custom Iterators
    - Pointers

    C# is also a pain in the butt by forcing you to explicitly cast just about everything - but that is a very good thing as it reduces runtime exceptions. If using VB.NET use "Option Strict On" to accomplish the same.

    The other thing is that a lot of C# programmers came out of the C++ and Java community and those communities, because of their nature, have a stronger emphasis on OOP, best practices, design patterns, etc. You'll probably find better advice and tutorials on theoretical things in the C# camp. VB is catching up and there are some really great programmers in that camp but there are still a lot of VB programmers that probably shouldn't be writing code.

    But both VB.NET and C# are good options. I was a VB programmer for years and switched to C# because of authoring frameworks, better theoretical help, and I prefer the smaller syntax, but VB.NET is just fine.

  201. My Experience by cgreuter · · Score: 1

    I'm a Unix/C/Perl/Python/Smalltalk type of guy. However, a few months back, we needed a small, interactive Windows-based program and the only thing available to me was VB 5 so that's what I used.

    My thoughts:

    1. From the documentation and the nature of the IDE, I get the impression that VB is aimed at non-technical users. It's designed to let (mostly-) non-programmers write useful programs. So, for example, although I found a good overview of looping in the manual, I had a hard time finding out the order in which window-close events were processed.

    2. VB is designed for small programs. You design a GUI, then hook activity to it. The GUI design part is dead easy, as is hooking code to the GUI parts. If your program doesn't have any complicated business logic, you're done then.

      In my case, it was like that. I just needed to write a GUI that talked to a DLL. It took me maybe half a day to get that up and running. Of course, it turned out that the DLL needed much more glue code than I'd initially thought and it took me something like a week to get that written and debugged.

      I found that the IDE was great for quick GUI development and began to fight me when I tried to do anything bigger.

    3. VB is very good at interfacing with Windows components. It has the most seamless method of linking to DLLs that I've seen in a non-C language. It also lets you embed COM objects (which I've never tried or needed, but it's there) in a really simple way.

      If your program mostly consists of external DLLs and COM objects, VB is probably for you.

    4. You're stuck with the IDE, which makes GUI development easy but just gets in the way when you do plain coding. (You can edit your sources with your favourite external editor, but you can't rebuild your program from it so I don't think that's a viable option.)

    5. You can't automate your build process, regression tests, etc. You can do conditional compilation but you need to set the conditions in the build dialog, so, say, automatically building both a debug and a production version at the same time is out of the question.

    6. VB isn't standardised and is controlled by a single vendor. Said vendor has already end-of-lifed VB once and left thousands of customers stranded. Who's to say they won't do it again?

    7. VB is Windows-only. You will never be able to move to another platform if you use VB.

    In conclusion, I think VB is the Windows equivalent to shell scripting. It's really nice if you're writing small, simple programs that connect more complicated components together but it will fight you the moment you try to do anything more complicated than that.

    I'm currently working on the followup to this project and I'm doing it in wxPython with wxGlade and cx_Freeze. That combination has its own problems but it's much better got developing larger, more complicated programs.

  202. Reply to Parent post is incorrect by TrueSpeed · · Score: 1, Informative

    Actually, it is compiled. The compiled code is actually highly optimized machine code that is more efficient than what a statically compiled language could ever hope to produce. The technology is called HotSpot compilation. Do your career a favor and educate yourself on it.

    1. Re:Reply to Parent post is incorrect by pla · · Score: 1

      The compiled code is actually highly optimized machine code that is more efficient than what a statically compiled language could ever hope to produce.

      A statically compiled language - Such as... the JVM itself?

      Okay. Java runs faster than Java ever could. Gotcha. ;-)


      Turing completeness - Not just for breakfast anymore!

  203. 1 question, 2 solutions by kwerle · · Score: 1
    1. Quit your job. Your company is doomed
    2. You need to be fired. You don't qualify to do the job you were hired to do.
  204. The Long and the Short by gatesvp · · Score: 1

    OK, this questions definitely has flamebait written all over it. Here are the quick answers.

    • Tell the boss that VB6 is end-of-lifed, equivalent to starting a new project for Windows '98 systems.
    • Tell the boss that VB.NET is fully supported by MS, provides the same basic functionality (and more). VB.NET will be a language for the future.
    • Ignore the illusion that C# is different from VB.NET, they are different languages with about 98% of the same functionality.
    • Investigate upgrading possibilities. I know the boss wants you to rewrite software, but this is actually rarely the case. Check out the MS site for tons of docs on upgrading from VB to .NET. You'll probably find that you can rewrite pieces one-at-a-time and still keep a stable system.

    On a related note, VB is a not really a language, it's a RAD tool. The goal of VB code is to quickly produce a working product. I've worked with a few n-tier VB apps, but the language really peters out at this point (you end up "faking" inheritance just to get things working)

    Friendly tips when you move to .NET

    • Start working with VS 2005 and .NET 2.0 (skip VS 2003)
    • Buy a VB.NET book and read it. If you know VB and you've worked with OO languages, then a quick read-through will tie things together.
    • Share your newfound .NET knowledge with your co-workers and your boss, this will help to make him comfortable that you're not butchering his baby.
    • Grab the Data Access Application Block from MS (gotdotnet may have a better one). ADO.NET Datasets are very different from ADO Recordsets. Using the DAAB will help the transition and will likely save you some time.
    • When you're rewriting the VB application, start with a framework and look for similar / inherited objects and functionality. VB doesn't have true inheritance and is very prone to spaghetti code. Putting code / logic in the right places will likely be the toughest part of the rewrite. Do it first, save grief later.
  205. ?Software Engineer? by Helvidius · · Score: 1

    And you were hired as a software engineer? One would think a software engineer would know the answers to those questions. Me thinks you might have padded your resume.

    --
    "Care about people's opinions and you will be their prisoner." ~~Tao Te Ching~~
  206. If garbage produced garbage, it would produce VB by pokehf346,1 · · Score: 1

    I write VB code (and C#, when I can get away with it) for a living. My boss is also adamant about using VB on all large projects, largely because it's the only language he's comfortable (familiar?) with. As someone who started out with BASIC, and moved to better and brighter pastures (like C++), Visual Basic syntax sickens me. It's comparable to pretty much all other haphazard Microsoft project (DOS and Windows, anyone)? As a result, the language is bloated with bad syntax, poor design, and speed that probably only surpasses slow, esoteric languages like Squeak. The average programmer probably will not notice such problems, but I dare anyone to move to a higher-level language and not be sickened by VB's inefficiency and poor syntax. I could write an entire article about how badly the language is designed, but let it just suffice to make a couple of points: a) Unlike any other well-designed language, VB versions .net allowed dilapidated DOS BASIC-type syntax such as canvas.Line(x1,y1)-(x2,y2),b Mind you, no one who developed libraries could ever write functions that accepted such input, but some built-in language constructs did. b) Language is bloated with keywords such as Overridable, Overloadable, Shared, Static, etc... I know programmers who've been working on VB most of their lives and they still don't remember when to 'override' and when to 'overload' c) Still no operator overloads And that's just the top of the iceberg. VB .net is a lot better than its predecessors, but it suffers from most of the same problems - language is bloated, and its syntax is so arbitrary, as to make it near-useless. If your boss is willing, at least try to get them to switch to C#. While it's still a "bytecode" language (pox on Sun from turning that idiotic idea into a trend), it's far more superior to Visual Basic, and its syntax will not make you bang your head against the wall.

  207. Re:If garbage produced garbage, it would produce V by pokehf346,1 · · Score: 1

    It seems that the less-than symbol did not show up in my post. Anyway, the following sentence: "Unlike any other well-designed language, VB versions .net allowed" should read "Unlike any other well-designed language, VB versions PRIOR TO .net allowed"

  208. Argument really. by TheMCP · · Score: 1

    Preface: I work for a company whose primary product is a programming language, so I spend my days thinking about things like language design and what makes one language better than another.

    In evaluating a language the first thing I'd look at these days is, how rapidly is it evolving, and what impact does that evolution have on its user base? For example, Java evolves relatively slowly, and tends to remain backwards compatible, so when a new version comes out you just install the new compiler and keep working, mostly. My company's product is evolving very rapidly, there are constant changes, but we include a feature that scans your code and brings 99.9% or so of old code up to date, so there's relatively little pain for the programmer in updates, they just have to learn what's different. VB has relatively infrequent updates, but they tend to be huge and, according to the massive wailing and moaning in the trade press, break compatibility substantially. So, unlike other choices, if your employer proceeds with development in VB, they can expect to have to do a substantial rewrite of the product every few years, with associated costs. I know quite a few people who got hired to translate large apps from VB into Java when Microsoft released their last major revision, because companies were fed up with rewriting their app over and over again just to keep up with Microsoft's changes. I would argue that it's better to develop in a language with a smoother growth path, so the code written today will maintain its value in the long term. That represents a businesss advantage of using a language with a smooth growth path.

    The next thing I'd look at is what competitive advantage does using this language offer you? Is it unusually fast to develop in VB, bringing you to market early? No, it's not really faster than, say, Java, and I could argue that my employer's product is much faster to develop in than either, so that's not it. Does VB run unusually fast? Not that I've heard, and Java application servers have been highly optimized for speed. Is VB's cost unusually low? No, you can get plenty of Java development software for free. Is VB code particularly easy to maintain? No, Java offers features like Javadoc which can help you keep the code well organized and documented so it'll be easier to maintain. Do available VB libraries and packages substantially exceed those available for other languages? No, there are vast libraries of code you can use in Java to do practically anything you want. Does VB have an unusually superb IDE? No, while I'm told the MS IDE isn't bad, there are plenty of excellent IDEs for Java as well. So, I would argue that VB offers no competitive advantage, and that Java (for example) offers you at least two competitive advantages: its vast libraries of available code, and maintainability features such as Javadoc.

    I'd look at whether the language has special purpose features which make it unusually suitable for your application. For example, Ruby on Rails is designed for rapid development and easy rich ui development. My employer's product is designed for rapid development, easy object/relational mapping, easy AJAX, easy rich UI, and easy web services development. VB and Java seem more general purpose, with no particular specialties, so I'd argue that VB offers no particular advantage in this regard.

    Finally, I'd look (as a programmer) at the details of the languages themselves. How are everyday constructs expressed? Is it awkward to write the language, or easy? Is it awkward to read the language, like perl (notorious as a write-only language), or easy? I'll give you a tiny example of what I mean. In, say, Javas****t, if I want to loop through all the objects in array foo, I have to do something like this:
    for (var x=0; x
    That sort of thing saves me a few moments here and there, and makes the code neater. A particular example I like to look at is string functions: how easy or difficult is it to do complex things to strings, like if I wanted to replace a

    1. Re:Argument really. by Telastyn · · Score: 1

      Preface: I've not actually written anything in VB.NET, VB6, or Java. At time of writing, I've also never had a professional development position.

      Firstly, VB.NET is a large step up from VB6. Actually that's not true, VB.NET is a new language that vaguely looks like VB6 and before. Sure, it's not a little stupid to name the new after the old. Baring that change, .NET updates are 100% backwards compatible. In C# at least, the language updates have all been 100% backward compatible.

      No, VB isn't terribly faster to develop in than Java; but Java isn't faster either. Does VB run faster than Java? no not really; but Java isn't faster either. Is VB free? Yeah, just like Java. Is VB code easy to maintain? Yeah, imbedded XML commenting, or you can go with any number of external code documentation tools. VB.NET uses any .NET compatible library and package, including the vast .NET library itself; one of the few that compares to Java's (for better or worse). VS2005 (which is free btw) is fantastic. Is Eclipse also fantastic? So I hear.

      So Java offers you nothing. They're a 'push'.

      Language details now. VB.NET is a different language. I personally don't care for the VB-ish syntax, but others do. Even with it, the common .NET stuff (foreach, delegates) are in there. Strings behave as .NET Strings, so just string.replace, or if you really need to, bust out the in library regexes to do it.

      So as I said, there's no argument against it. Granted, there's very little argument for it either.

  209. Put your foot down. by SanityInAnarchy · · Score: 1

    Everyone else has given you all the sane, rational arguments for why you may or may not want to use VB. But at the end of the day, there's this:

    Tell him that you refuse to work in VB, and that you'll walk out if he insists. And then, do it.

    At the end of the day, that's the difference between treating a job like "work" or doing it because you like to do it. Pick the jobs that you want to do. There's always work -- hell, you could be packing boxes, parking cars, or flipping burgers for a living. My guess is, the primary reason you're not is that you like what you do. If you're not careful, you'll lose that, and you'll end up no happier at your job than the burger-flipper.

    Of course, I could be entirely wrong. It could be that you just like the money, in which case you should try to get fixed salaries or hourly wages, then shut up and do your job to the best of your ability. If it's having problems because it's VB, politely remind your boss that you didn't think VB was the best choice, but that it really doesn't matter to you whether the project gets done, all you care about is working hard and getting paid.

    --
    Don't thank God, thank a doctor!
  210. Everybody calm down! by Anonymous Coward · · Score: 0

    VisualBasic = the devil
    by Naikrovek (667)


    Naikrovek is still pissed that the slashdot UID registration lagged for just one second. :)

    With a 3 digit UID, that's quite a long time to hold a grudge!

  211. answer to the test of programming by tim_abell · · Score: 1
    void foo(std::string a, std::string * b, std::string & c, std::string *& d)

    If you pass a string into a & d, and a pointer to the string into c & d you get the following available inside your function:
    a is a copy of the original value,
    b is a new pointer to the original value,
    c is the original value directly addressed,
    d is a copy of the original pointer.

    With a you can't modify the original string, only the new copy.
    With d you can modify the original pointer.

    So there.

    And for what it's worth I don't think knowing any particular syntax is ever a good measure of programming aptitude, it can only be a measure of experience in a particular paradigm. Though I agree with the rest of the post, and very much like Joel's articles.
    --
    Respect copyright - the GPL relies on it.
    1. Re:answer to the test of programming by petard · · Score: 1

      And for what it's worth I don't think knowing any particular syntax is ever a good measure of programming aptitude, it can only be a measure of experience in a particular paradigm.

      I agree. My question was intended to get at "do you really understand pointers and how to use them" in a concrete way rather than to quiz anyone on syntax. It's only intended to measure aptitude inasmuch as "understanding indirection" == "programming aptitude". If someone (and many aren't) is not absolutely comfortable with pointers and references I don't want them writing c++ in my shop :-). Even if they are, it's not automatic.

      You'd really be surprised how many times people list "c++ expert" on their resumes and are completely unable to explain the difference between a pointer and a reference.

      --
      .sig: file not found
    2. Re:answer to the test of programming by Per+Abrahamsen · · Score: 1

      > You'd really be surprised how many times people list "c++ expert" on their
      > resumes and are completely unable to explain the difference between a pointer
      > and a reference.

      It doesn't surprise me, the difference is mostly syntactical. Th initial motivation for references was syntactical (for operator overloading), and the choice is usually made for syntactical reasons.

      A reference is a const pointer that cannot point to NULL (without cheating).

  212. Incompatibilities and Framework is the bastard... by ackthpt · · Score: 1

    I've been doing development for a couple years in VB.net and find it generally to be one of the most cumbersome development tools I've ever had to work in. Exasperation is a daily experience.

    I have to develop apps which run on whatever variety of hardware and operating system people in my organisation use, the real pain is when you have Win 98 up to XP scattered in pockets everywhere and some don't have the current drivers, such as the MDAC, to perform simple Access database access.

    Cleary this has presented the logistical problem of getting the Framework and all drivers up to snuff on each client. Then there's the matter of differing default behaviour of the machines, some see .MDB extension and others show only the small icon (which no everyone's eyes are up to devining and lots of confusion, hilarity and lost time.)

    Probably worst of all is the large steps between releases of Visual Studio. Your VB6 isn't going to convert, period. Your VB7 (VS 2000) will convert to VB7 (VS 2003) but if you've got a lot of code you may be thinking twice about this. Now along comes VS 2005, which to be honest is where the damn product should have been when it first came out. Problem is for me, I have too much vested in VS 2003 and won't be "upgrading" for some time.

    Reminds me of the suffering I encountered (never did 100% recover from) when Linux changed libraries. That was a painful episode and I'm in no hurry to revisit it.

    --

    A feeling of having made the same mistake before: Deja Foobar
  213. I am program in VB(and other languages.) by geekoid · · Score: 2, Interesting

    1)VB is dead, use VB.net

    2) VB is no good for low level work

    3) It is good at getting the job done

    4) Why the hell does a programming language scare you? the day a language scares me is the day I look for a new line of work.

    5) It is easier to maintain. This assumes that the programmer who wrote it wasn't a complete idiot...but that applies to any language.

    6) VB.net compiles to byte code. Just like any .net language. So the language doesn't matter in .net.

    7) VB handles the memory for you. For business applications that need to be done, this is a good thing.

    --
    The Kruger Dunning explains most post on /. http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect
  214. It's mostly a personal preference by Geoff+Perlman · · Score: 1

    Visual Basic was designed for developing desktop software. If that's what you are building, it's suitable. For the most part, the language you choose is a personal preference and it sounds like your boss wants to use VB because that's what he is familiar with. That said, IF your boss is suggesting VB6, you have to consider the fact that it is no longer supported by Microsoft. If he is comfortable with VB.NET, that's another option. However, any .NET application requires the .NET runtime to be installed on the user's machine. If the software product you are creating is something that will go outside your company (perhaps it's a product you sell for example), then you have to consider the extra overhead of having to deal with making sure the user has the proper .NET runtime installed. Another alternative is REALbasic which is very similar to Visual Basic but is completely object-oriented and is cross-platform (Windows, Macintosh and Linux). It also builds self-contained exes so you don't have to worry about DDL hell or having to make sure a particular framework, runtime or virtual machine is installed. You can find out more about REALbasic here: http://www.realbasic.com/

  215. follow microsoft by genckas · · Score: 0

    It is very simple. Follow what Microsoft is embracing, and all signs are they are going with C#. C# looks like the best bet down the road as MS might anytime pull the plug on VB. Also C# is kinda liked by non MS ppl too.

    --
    --gks
  216. Re:My take on it - can't believe no one else has s by geekoid · · Score: 1

    Sounds like somebody 'exagerated' there programming knowledge thinking 'anyone can do VB'. Onve they saw you actual had to know something they paniced.

    --
    The Kruger Dunning explains most post on /. http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect
  217. Re:If garbage produced garbage, it would produce V by Jarth · · Score: 1

    Bein an over critical sod i'd like to know what 'commodity' language is nod as 'failed' as VB.

    Since i do not use windows, prefer cross-platform to proprietary and don't mind good syntax, clear instructions, non-bloated library's etc. I'm curious, C/C++ are above me but i'm looking ... for something to write webserver applications and/or the occassional desktop application.

    Perl, PHP, Python, Boo ? What should i do ?

    Regards,

    J.

    --
    free dom(inion) - free energy - free your mind - whee!
  218. Warning: OLD information, may be stale by HiThere · · Score: 1

    I wanted to escape Visual Basic even before I decided that I needed to escape from MS.

    VB is fine for developing a project quickly. Possibly even for a large one, though I only used it on projects that I built and maintained on my own. And here I should add the disclaimer that though I'm saying VB, I actually mean the VB dialect that was used with MSAccess97/2000. (That's two incompatible dialects. They will NOT work together in harmony despite the ads proclaiming that they would. They will, however, appear to work together for about a month...then I couldn't open the project in Access97. (Solution: duplicate databases synchronized via an ASCII deltas file.)

    Despite much frustration, VB was actually very quick to develop in, largely because of the screen painters used for entry and report forms. However, occasionally a routine would break, and the only solution I ever developed was to dump the routine into an ascii file, delete the code, recreate the code by copying in from the dumped copy. (I finally decided that MS was storing the code and the "binary" in the same file, and that occasionally something would invisibly corrupt the binary. This may not be correct, but it was consistent with everything that happened.) The problem was that the corruption could occur in routines that hadn't been edited in months...or, if it happened on a client site, in years. (Those I fixed by sending them a new copy, so the error is speculative.)

    The final straw was when I caught VB making arithmetic mistakes in an accounting module I was writing. Not rounding errors, but full fledged mistakes, on the order of 3 instead of 7. It also wasn't consistent with the mistake. After that I started making VERY strenuous attempts to avoid VB. Strenuous that I introduced Linux into the company back in the days of RedHat 5.0. (I actually started at 4.2, but it took me awhile to get good enough to let anyone else know.) Now I don't use MS products at all for any purpose.

    Still....if he insists on Basic, have you checked into Gambas? I don't know it's quality, but it is trying to be Visual Basic for Linux. (Yeah, you just want to avoid VB, and I congratulate your instincts. But I've read the MSWind2000 EULA, so I never want to deal with MS ever again.)

    --

    I think we've pushed this "anyone can grow up to be president" thing too far.
  219. Re:Umm by Anonymous Coward · · Score: 0
    If your car was produced in the US chances are good.


    I have never been so glad that my car was made in Germany.
  220. Wonky String Implementation by tobes31415 · · Score: 1
    If you're referring to plain old VB then I dont really have much to say. VB.NET 1.1 though I've seen in some form at every job I've had in the last 5 years. If you are talking about VB.Net then I would raise the String class as an example of why to avoid VB. When I was developing in VB.NET I found many wierd implementations in things that couldn't be altered or extended. The most extreme of these is the string class... part primitive, part object, part nightmare. lets say you have a String a=null then you test the following a = null, a = "", a = String.Empty now if you replace = with .equals() a.equals(null), a.equals(""), a.equals(String.Empty) you should have the same result right? I thought so too... but you dont. And I'm not just talking about the NullPointerException either, the results are different with a="" and a=String.Empty too (Which wont throw null pointer exceptions). having trouble making a table... use your imagination or view this in a spreadsheet program :P
    ,=null, ="", =String.Empty, equals(null), .equals(""), .equals(String.Empty)
    Null,True,True,True,Crash,C rash,Crash
    "",True,True,True,False,True,True
    Str ing.Empty,True,True,True,False,True,True
    This may seem silly but when different developers use different sytles then things like validating input can suddenly be broken over your entire project. Inconsistencies like that have made me leary of VB because if I can see one error as huge as that there might be others that I cant see. (There were others but I dont feel like trudging through my journals and logs to find them :P)
  221. Don't judge a book by its cover. by micrometer2003 · · Score: 1

    There is a lot of vb out there drawing on earlier BASIC code which resembles FORTRAN. It must be good for something if people are using it to solve business problems cost effectively. You might want to consider your boss' point of view and rationale. It would be a good opportunity to learn a new language on the job, and display your generic skills in making it absolutely fool-proof.

  222. The reasons aren't too obvious by bill_kress · · Score: 1

    Chances are that if nobody understands the problems of VB, then they won't find advantages in other languages.

    If your product is all front-end and database, chances are VB is actually a fine choice--that's what it was designed for.

    If your product involves significant design, routines that manipulate the data rather than just display it and/or many interacting pieces implemented by multiple programmers but designed by a smaller team of architects (as you will get in a larger project), VB narrows towards completely unusable.

    For one thing, when you are architecting a project, it is much easier to "Think" OO in a more pure OO language (C# / Java). It is also more simple to transfer these designs to paper and to other engineers.

    Refactoring, which should be constant and ruthless, is much more difficult in VB--last time I checked, in fact, VB basically encouraged C&P through their lack of dynamic form creation and some of their constructs.

    There are also programmer/programmer issues in VB, defining an abstract interface between two areas, intelligently isolating code, etc. There are actually many reasons.

    The problem is that if you have a team of VB developers, they are going to be completely capable of designing a VB app in any language. Also, if you have really good, experienced OO programmers and a talented architect, you will be able to create a fine app in VB.

    My real recommendation would be to get an architect--someone who can design your product out to be maintainable and expandable in any language, and let them pick the most appropriate language for you.

    As an alternative, I guess I'd say don't worry about it. Although I'd never recommend VB, if management is stuck on it and all the programmers know it, it's probably your best choice. As I said, you can write crappy VB code in any language, so you might as well do it in VB.

    Besides, VB isn't as dead-end as it used to be:
    http://www.sitepoint.com/blogs/2006/05/19/write-ja va-web-apps-in-visual-basic-or-javascript/

  223. Untried language by Anonymous Coward · · Score: 0

    I disagree; I've done production code a number of times in langauges I haven't even heard of prior to the project, and often recieved complements in return. Once you learn your first 10 or so languages, additional languages tend to be very easy to pick up; last time I listed the languages I'd programmed in at one time or another, there were over 30.

    In any case, if you're creating the language for the project, having prior experience would be impossible.

    I will note, however, that doing so will add a few days to the project as you learn the language.

    Zimbel

    1. Re:Untried language by micrometer2003 · · Score: 1

      Actually the word language is inappropriate to describe computer codes. Any code can be modified and tested by someone familiar with how general-purpose Von Neumann computers operate. I would be much more concerned about the abilities of someone hired to translate English to/from another written language.

    2. Re:Untried language by jonadab · · Score: 1

      > Once you learn your first 10 or so languages, additional languages tend to be very easy to pick up

      Yes, yes, but we're talking here about writing the program that makes the company go, not just crufting together some quick hack to automate some minor chore.

      Sure, if you've previously programmed in a dozen or so languages (as I had before I learned Perl) you can pick up the language in a week or so and write code that basically works (as I did). That's fine, for some purposes. But the code you write under those conditions is *not* good quality maintainable code, and you don't want to hang the company's bread and butter on it. You end up with Perl that looks like it was written by a C programmer (ugh), VB that looks like it was written by a Java guy, or cetera -- in short, you end up with a mess.

      --
      Cut that out, or I will ship you to Norilsk in a box.
  224. You've had better luck than me by SlappyBastard · · Score: 1

    My experience has been that bosses could care less as long as the existing system works.

    --
    I scream. You scream. I assume that means we're both acquainted with the problem. We proceed.
  225. Excellent answer by shario · · Score: 1

    Not only you answer to the question about platform choice, but also accurately describe a company lifecycle issue and solve it. Very good!

  226. stick in the mud time by ctnp · · Score: 1
    Probably said already. If so, its worth repeating.
    He hired me to assist in rewriting the software - only catch is, he's stuck on having it re-written in VisualBasic. This scares me, but I honestly can't make a good argument against VB because I'm not familiar enough with it.
    Lose the ego, I'd do what your boss tells you to do. Otherwise he'll merely find someone else to do it. Slashdot can't help you here.
  227. Re:Microsoft is dropping VB? Are you sure? by mrchaotica · · Score: 1
    VB support has already extended into .NET
    What you seem to not realize is that VB.NET is not VB6. Apparently there's enough difference between them that they can more-or-less be considered different languages. And VB6 is at the end of its life.

    In fact, going from VB6 to VB.NET is like going from MFC with C++ to .NET with C#.
    --

    "[Regarding the 'cloud,'] ownership was what made America different than Russia." -- Woz

  228. Re:If garbage produced garbage, it would produce V by pokehf346,1 · · Score: 1

    PHP is a great, scalable language for writing cross-platform web applications. As far as cross-platform desktop apps - you got me. With cross-platform desktops you're either looking at a) writing c/c++ apps with gtk, or b) using a 'managed' platform like .net/mono or java.

  229. Edsger Dijkstra put it best by Therin · · Score: 1
    Quote from him:
    It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration.
    (from Wikiquote)

    Can anyone improve on that one?
    --
    John 17:20
  230. Performance perspective by maraist · · Score: 1

    I would say that VB is to windows what bash/perl/Tk is to UNIX. The things that the two OSes wind up doing the most can be handled by VB or perl respectively.. VB has an excellent form-management editor so it blows away perl/Tk. I didn't realize that VB compiled down to assembly, but I highly doubt that that matters any, as most assembly probably only delegates to VB core libraries. The fact that you can probably optimize a (pseudo code)

    for x in 1 to 100
        tot *= x
    end for

    to raw assembly probably does not affect 99% of the code that is generated for a VB app. Perl, on the other hand doesn't have the assembly option.. The closest I ever saw was something that wrote out c-code to render the AST - thereby skipping the parser stage. I was under the impression that VB compilation was merely a tokenizer (similar to python). In perl all variables are advanced objects which can type-cast on the fly (and keep caches of previous type castings in case they flip flop back and forth, say between a string, an int and a double). I recall VB having similar opaqueness (though I also recal that you can designate more stringent data-types). The effect is that the simple 'total = total operator varable' is not going to translate directly into assembly code very nicely.. Especially if the language can support side-effects in variable assignment (perl is notoriuos for this.. They even call it a reference's 'magic' setting).

    I've seen people comment that .NET might be undesireable because it's interpreted. For the above arguments (that much of VB/perl type languages are nothing more than delegators), that's largerly a moot point. Especially since the interpretedness of java/.NET faclitates a JIT.. You can consolidate all the byte-code of an entire custom-extended core-library (such as Map), and have it become more highly performant than say writing a 'magic' enhancement to the core reg-ex engine of VB or perl, which will never get faster than the sum of it's parts. E.g. extensibilty in VB/perl is a performance penalty, whereas extensibility in java/.NET has as much performance potential as anything else.

    --
    -Michael
  231. What is a "Computer Scientist"? by EraserMouseMan · · Score: 1

    None of those things are applicable to writing business applications.

    It defines what you refer to as a business app. Nobody in their right mind writes custom accounting apps anymore. But it definately does benefits any development effort to understand operating systems, language theory and hardware archetecture.

    Consider the project I am presently working on. It is a business intellegence reporting suite. Sounds about as generic as "business apps" come, right? Yes, except for the fact that we had to select the correct programming language, DB cube technology, DB engine, and hardware archetecture for the system. Because we went with .Net for the language we also decided to get a machine that supported a highly threadable system. We had to determine where each of the servers for the DB, Cube, Reports, and website went. On the same box or all on separate boxes? In the end we decided to put them on the same 8 core 64bit box but have 3 identical boxes behind a load balancer.

    Now we weren't writing our own OS or designing our own load balancer. But we had to have knowledge about the uses and theories behind each. There would have been many combinations of solutions that would have been ill suited to the task at hand. A complete understanding of the theories and technologies available really benefited my employer ($6 billion company).

    None of those things are applicable to writing business applications.

    What you probably meant by that is that you would prefer that the term "computer scientist" describe the person who invents those solutions and engineers them from scratch. But in-depth knowledge of "those things" definately IS "applicable" to properly designing and implementing high performance biz apps.

    1. Re:What is a "Computer Scientist"? by Chazmyrr · · Score: 1

      What you've described is system architecture. That's an entirely different animal. And it's not computer science. You aren't desinging any of the core components. Your hardware is chosen from a list of supported configurations from one of your approved vendors. Your db products are chosen based on their capability to perform the required tasks. Your OS choice is largely based on the hardware and off the shelf software that is part of your solution. The programming language is selected based on your OS, off the shelf software, and availability of programmers versed in that language within your organization.

      The part that may be considered writing business apps is a custom front-end or some of the inevitable bits of glue you have stick between components to get them to work together. I suppose you could lump some of the DB work in there too. The APIs are predefined based on your OS and product choices. Actually having to manage threading in your own code is unlikely. In this type of situation, experience is far more important than theory.

      Computers scientists are the guys designing the OS or the DB engines. You're an engineer. You take the stuff the propeller heads come up with and make it do something useful in the real world. Be proud of that.

  232. So, just saying it SUCKS! by one_shooter · · Score: 1

    Isn't going to be a good enough reason, Eh?

  233. vb is fine for huge projects by gmahan · · Score: 1

    I used to work for CitiBank, and the client-side software used by their customer service reps to service credit card accounts was thick-client VB software (though the other tiers of the arrangement were not). I don't know if it's still VB based, since the company was still kicking around the idea of moving to a new platform when I left them a couple years ago.

    The app was comprised of hundreds of screens dealing with everything from lost/stolen cards to rewards redemption to credit line increases, as well as general service questions. 99% of a customer service rep needed to do for a customer could be done with this software, and in an industry where seconds of lost productivity by customer service reps equates to millions of dollars lost, it performed just fine.

    I also used to work for the MHA group, which recently merged with AMN Healthcare, making it one of the largest physician & nurse staffing companies in the country. It's entire business software suite, from invoicing to accounting to payroll to staffing was handled by software written in-house in VB.

    I once wrote an EBSDIC to ASCII converter in VB to convert Texas Railroad Commission files to a format we could use, because a contract programmer had written one in C++ that didn't work--it translated text fine, but it didn't account for the EBCDIC Packed Numeric format. The version I wrote in VB was faster, and had GUI such as progress bars, etc. Granted, the C++ program could have been optimized and improved, but the point is ultimately that VB can compete on many levels with other programming languages.

    Like martial arts, the ultimate value of a programming language must be judged by what a good programmer can do with it. Unfortunately, VB is so simple, it's easy for bad programmers to fake it just enough to get hired.

    Just because it has the word "basic" in the name doesn't make VB unsuitable for applications.

  234. Error Handling by CodeMonkey4Hire · · Score: 1

    One of the biggest differences I noticed when taking over a project that was written in VB6 and rewriting it and extending it in VB.NET/C# was the error handling. In VB6 the error handling is very kludgy. You can set up an error handler for any function that you want to, but unless you remember to also set up an error handler for every single button, etc. on your forms, your application will constantly be crashing in random places as you accidentally add new bugs with your new features or the user does things in an unexpected way. With VB.NET you could set up some try...catch blocks in a few convenient places and they would even catch exceptions thrown by the interactive portions of forms. My product had very few crashes compared to the other huge product that we still had in VB6 that crashed all over the place. I am also a huge fan of OO design and when I ran into a couple of things that I couldn't do well in VB.NET I wrote them in C# and they worked together seemlessly. Good luck, I hope you win.

    --

    Let's go Hurricanes!!! 2006 Stanley Cup Champions!!!
  235. Error Handling by CodeMonkey4Hire · · Score: 1

    One of the biggest differences I noticed when taking over a project that was written in VB6 and rewriting it and extending it in VB.NET/C# was the error handling. In VB6 the error handling is very kludgy. You can set up an error handler for any function that you want to, but unless you remember to also set up an error handler for every single button, etc. (I guess they run on different threads) on your forms, your application will constantly be crashing in random places as you accidentally add new bugs with your new features or the user does things in an unexpected way. With VB.NET you could set up some try...catch blocks in a few convenient places and they would even catch exceptions thrown by the interactive portions of forms. My product had very few crashes compared to the other huge product that we still had in VB6 that crashed all over the place. I am also a huge fan of OO design and when I ran into a couple of things that I couldn't do well in VB.NET I wrote them in C# and they worked together seemlessly. Good luck, I hope you win.

    --

    Let's go Hurricanes!!! 2006 Stanley Cup Champions!!!
  236. VB Discontinued by MrSteveSD · · Score: 1

    I assume you are talking about VB.NET since VB6 has been discontinued. I work for a company that still has a big VB6 product with tonnes of different VB6 DLL plugins that customers can pick and choose as extra features. We have neither the time nor money to rewrite it all in another language. This is a real problem that I suspect many companies are facing. (Don't tell me about interop, we've visited that nightmare)

    A few months back I was saying that going with VB6 all those years ago was a massive mistake (due to its discontinuation) and that we should have gone with Delphi instead. Now Borland is selling off the Development tools division, Delphi's longevity is suspect. I now view proprietary languages with a great deal of suspicion. If I had my own company, I would try to avoid proprietary languages as much as possible since they can be a very big risk. You never know when that big company is going to turn around and tell you they are discontinuing it, leaving you completely stuffed. If you really have to use a proprietary language, try to pick one that is as open as possible.

    e.g. Java

    C# is supposed to be an open standard ( I don't know about VB.NET) but you will most likely find that the open source implementations do not have all the features you are making use of in Visual Studio. They will always be playing catch up with Microsoft. And you never know if and when Microsoft will turn around and start eliminating the open source implementations of C# in the courts.

    As for the virtues of VB.NET as a language, it has all the modern features you would expect from an object oriented language. I personally think C# is a better choice to go with since Microsoft seem more interested in it (and are perhaps less likely to dump it), and also because its syntax is similar to lots of other languages such as Java and C++.

  237. Pay the piper, call the tune by Latent+Heat · · Score: 2, Insightful
    I have issues with the idea that the boss dude is a stick-in-the-mud and needs educatin' on how to run his business.

    For the boss dude, the company and its product is his life and he is stuck with what happens to it. He hired you because, well, you could be off doing your own business and your own software package in whatever language you desire, but you decided to work for The Man, and for all you know and all the boss dude knows, you could be a life-long partner in the business or you could be here today and have taken off for greener pastures tomorrow. He is the captain of that submarine (small boat, small crew, great level of autonomy from Navy HQ), and for all I know you are the XO, but that boat has to have only one captain. So folks to start calling this guy Captain Queeg is a little premature.

    Another side of the coin is the software engineering version of the Hippocratic oath of do no harm -- the engineering version is first get a lay of the land, how the customer operates, what the system is supposed to do before you go rip-roaring making changes. The customer could be an accounting department using an app developed by you in information systems -- you first see how the accountants are used to doing their work and what the automated system is supposed to replace. The customer in your case is the boss dude.

    The story you are telling about the micro-managing boss and the reluctant employee could be the overbearing professor and the meek graduate student. One professor asked that the project be done using unStallman-worthy Java/Swing for the data graphics front end with a JNI link to C++ to do the heavy numeric lifting. The student goes off and codes stuff in C++/Qt. Another professor has the graphical front end done in Java/Swing but with a hand-coded GUI and a student comes along insisting that the thing be redone in the NetBeans GUI designer and sets the project back an entire semester while he is dinking around with the thing.

    The point is not to debate the merits of Swing vs SWT, pure FOSS vs Java, VB vs everything else. The point is that the boss dude is ultimately responsible while you are the hired hand, and if the boss dude wasn't overbearing for insisting on VB, he would be overbearing for insisting on Swing, or overbearing for insisting on anything.

  238. Some of the anti-VB replies are kind of funny by GWBasic · · Score: 1
    Grumbling about the programming language is a sign of inexperience.

    Some of the anti-VB replies are kind of funny. Assuming that you're using VB.Net, (as opposed to VB 6, which is obsolete,) it's about as good as C# or Java. Having programed in all 3, I can attest to the fact that they each have various strengths and weaknesses; but in the long run, are all good for similar tasks.

    The only real argument against VB (and C#, and Java,) is that they aren't meant for resource-intense computing. Specifically, if you're writing a program that needs to perform an operation on a 200 meg data structure in a matter of seconds, you might want to implement the algorithm in C, and use VB.Net (or C#, or Java) as the GUI.

  239. Use assembly then by ClosedSource · · Score: 1

    Do you recommend that applications be written in assembly? If you're willing to accept the performance hit of using C instead of assembly, than perhaps you do believe there is an excuse for inefficient code after all.

    The difference between choosing C over Java or C# is the degree of balance between performance and productivity. The compromise is different for different languages, but make no mistake, it is a compromise that all languages make.

  240. Definitely PHP... by TwoScoopsOfPig · · Score: 1

    ...as it has a fairly shallow learning curve, the variables' syntax is simple beyond belief, and it was designed from C specifically for web applications. If you want to do desktop, you could do that with php, but as a browser-based app with lots of backticks and system() calls.

    --
    #include <disclaimer.h>
    #include <beer.h>
  241. Against VB (From a VB Fanatic) by RassilonInc · · Score: 1

    I used to love VB and it was for years a great language. Granted, it wasn't the most powerful language in the world, but it was easy to use and stable enough for smaller applications.

    The .NET came along and Microsoft Changed the language.
    Now VB isn't compatible with VB.NET and I've lost my faith.

    REASONS FOR NOT USING VB/VB.NET
    1. It's Microsoft ONLY and your "potential customers" arent.
    2. It's a Non-Standard language and therefore not portable.
    3. It's a VERSION 1 Product - Yep VB.Net is NOT VB7.
    4. Microsoft's history of upgrade compatibility is poor, and you'll need to rewrite whenever they decide to make a change to their systems (which is often).
    5. VB is usually tied to ACCESS Databases, which are not platform independent.

    I'd recommed throwing these arguements at the boss and asking him to provide a good reason for the choice of language.

  242. Dismissing C++ by wstfgl · · Score: 1
  243. Chance of a snowball in hell by cow-orker · · Score: 1

    of convincing your boss. If he's already decided that VB is the right tool for everything (apparently he has), nothing will convince him otherwise.

    On a more general note, every programming language is suitable for everything, modulo availability of specific libraries. There are languages that are simply superiour, and they are always the better choice, with the possible exception of small throw-away programs and speed sensitive inner loops. VB is not one of them, but you won't convince your boss.

    Therefore, write the sodden thing in VB or get a better job. Your boss is an idiot for not letting you use the best tool for the job, but he doesn't know and he doesn't want to be educated about that.

  244. if millions are using world wide, why shouldn't u? by oaksong · · Score: 1

    Ethan, many small companies have, and will continue to, develop in VB becauase ALL of the alternatives are more expensive. VB is indeed the greatest language for client/server applications. It's fast and it's cheap. Does it have glitches. Yes. Can they be overcome. Yes. Just like any other language. So this is not about the language. Now are there substantial differences between VB6 and .NET, yes, huge ones. So the next question is, which version of VB are you talking about? You didn't state which one was used for the original development. If the boss isn't using .NET, then it's time he did, and got the application converted to objects. Then you can continue this conversation.

  245. VB as a development platform is the most productiv by pensivemusic · · Score: 1

    as a business owner, i make my decisions based on the skills of the programmers involved, my tolerance for demanding that documentation be done regularly, and whether the 'team' can produce and keep current a modular flowchart-roadmap of what the project 'is' 'does' and what resources it 'uses' and 'connects with'.

    in the MS world, their NET language and development tools are really the only way to go.
    if you are doing Unix/Linux or web stuff, you can avoid VB/VBNET.

    our favorite tools for heavy data work are VB Studio , VB (.NET compatible language), MS Access, and SQL variants.

    if we have a real puzzle of a program, it is far better to see if a highly talented person can solve it with the language they know and think in, than forcing a new fit along the way.

  246. My name is Erik and I'm a recovering M$ addict by E++99 · · Score: 1

    Well, not addict so much as captive. My career path went from C++ (pre-windows) to VB to Delphi to finally Java. VB is pure hell in an enterprise environment. Of all the many problems, the biggest is deployment. If you have to deploy a VB app to a large number of non-standardized machines, you might as well just kill yourself now. Once any one microsoft-owned DLLs from the entire twisted conglomeration of DLLs on the target machine gets modified to the wrong version, (like, for example, if some other VB program gets installed) you might as well format the drive and reinstall Windows. Add to that that the actual language structure is infantile, and it takes a genius to use it to write really well structured code (which is paradoxical, because geniuses are too smart to use it).

    Delphi is great for Windows RAD. Deployment is the polar opposite of VB, as it will make a well-optimized standalone self-contained EXE which requires no DLLs at all. It's safer than C, but like C, it lets you use pointers and inline assembly.

    IMHO, of the many develpment platform I've had any experience with, Java is by far the best for the enterprise development. The language structure itself makes it natural, if not necessary, to write well-structure object-oriented code. It's designed to be safe. It's easily ported to any OS. For most purposes it runs just as fast or nearly as fast as compiled C++, though if you really need a native implementation of something, you can easily incorporate a DLL. You are no longer dependent on the Windows API, and you don't have to worry if your program will run under the next version of Windows. As opposed to the Windows API, Java implements things like threading in a logical, safe, efficient and object oriented manner. Java and everything you could possibly need for it, are free, and what amazed me the most when I started Java, nearly every common functionality that you would want to add to your project is out there as a free open source java library. .Net is Java eaten and puked back up and charged for. GET OFF THE MICROSOFT CRACKPIPE.

  247. VB sucks? by Anonymous Coward · · Score: 0

    Yeah, I know, I know, it's not fair to say Microsoft sucks because it is Microsoft. But with my years of experience with microsoft, I really can't find any useful advantage of the company. Open source is better and more stable. Only the documentation is better when being a programmer. Solution: buy a book (guide) for 15 dollars, instead of the 50 you pay for a very, very, very, extremely cheap ms system. All you need to know is in it. Plus: it's (in most cases) objective.
    Now, what is bad about VB? It's as slow as javaScript. Plus, you can hardly port it to, for example, unix systems (what other kernel bases are there in fact? microsoft's windows, unix, and...?).
    I've tested the speed of microsoft's c++ 2003 toolkit against java. BINARY Java is FASTER, frikkin' FASTER than the COMPILED software, when checking loops. 'Da' hel'!
    What should I think of VB?

    Now, to the serious part:
    I've learned VB.Net (webserver part) and not only is the language inflexible (is that english?), unstable and unlogical (is that english as well?), also: the system is discriminating! Omfg! Certain styles and layouts are just totally NOT sent to the browser, when that browser isn't windhoze internet exlocker! WTF!
    I'M SERIOUS!
    Yeah, of course you can switch that off (I'd be very mad if you couldn't, it's really discrimination!), but the point is: microsoft keeps its very own monopoly where it is. So the software is 100% commercially made (take a look at vista and you see it again and again) (take a look at msn live and you see it again and again) (take a look at windows media player and you see it again and again) (take a look at ...). ah well, I hope you got my point: VB is 100% commercial. Java is going open source, I (!) think that that'll put the development quality to a higher level. And with the latest JIT compilers and stuff, java can be almost as fast as native code. I don't see the javaScript-like language VB do that!

    Ah well, my major message:
    Of course it's unfair to say something is bad because it's microsoft's, but in this case it's 100% true IMO

  248. no need to fear by icepick72 · · Score: 1
    re-written in VisualBasic. This scares me

    I would be scared of classic VB however ... I second the comments here about the advantages of the new VB.NET. If your app is rewritten in VB.NET there are no worries because VB.NET is just syntactical sugar now and harmless. It's just syntax now that taps into the entire power of the .NET framework like C#, Java, Visual COBOL.NET! syntax etc etc.

    The VB.NET syntax is still long and convoluted as classic VB always was, but VB.NET has none of the classic VB hinderences. It's totally different underneath. VB.NET is fully object-oriented.

  249. VB6 by Anonymous Coward · · Score: 0

    Programming in VB6? Isn't that a bit like doing maths in roman numerals?

  250. Re:VB is the best language, VB is the worst langua by ScrewMaster · · Score: 1

    That, actually, is the most insightful comment I've yet seen in this forum.

    --
    The higher the technology, the sharper that two-edged sword.
  251. VB Dot-Net not a good idea by Anonymous Coward · · Score: 0

    I'd not reccomend VB Dot Net. Dot-Net is completely different to VB6 in methodology. I believe that keeping bits of the old language around will just prolong old habits that do not make sense in the Dot-Net world. Best go for something completely different and break from the old.

    VB-Dot-Net also uses new words for concepts that have been in common use for years. You have to learn the new concepts anyway, so you may as well learn them in the words that the C# world and the rest of the object orientated development world are using. Using the VB terms you will have a harder time talking to non-VB object orientated designers and developers.

  252. Re:VB is the best language, VB is the worst langua by Anonymous Coward · · Score: 0

    I must admit that i hava little experience in pure VB but...

    without any prior knowledge of VB it's very easy to become productive (nasty code for sure).
    You can always have the backend done in anything else (i do on Python)

    What is really true is that bad coders are allways bad coders, and that VB does not help any little to create good coding habits.

    Good platform, nasty language. You are true.

  253. Re:Microsoft is dropping VB? Are you sure? by Anonymous Coward · · Score: 0

    VB6 and VB.net

    The TRUTH is (rather than speculation) that VB.Net and VB6 have a huge overlap.
    Probably 80-90% of VB6 is still in VB.Net.

    The real probelm with VB.Net (but only from the perspective of OO purists) is that you can still code like you did in VB3: i.e. ignore the majority of the OO constructs and treat it like a scripting language or a 3GL non OO language.

    BUT it's still very productive.

    As for VB.Net vs C#?
    There's not a lot in it. They are very close to being functionally identical and in the end it comes down to syntax. If you are likely to get a lot of programmers working with you who are non-microsoft they will be more familiar with c like syntax and thus going with c# is probably better.
    If, on the other hand, most of the programmers you will be working with are VB guys (good, mediocre or whatever) then they will still have SOME KIND of productivity in vb.net where they would be completely unproductive in C#.
    As for maintanability: Is VB6/VB.Net inherently any more difficult to maintain than C# or Java? Only if written poorly (lots of global variables, poorly structured code etc etc). But you can do this in C# and Java too, so it comes down to the individual in the end. Personally when going through C# or Java code I find that there is a tendency to make it deliberately hard to follow with multiple layers of abstraction. Call the average VB coder simple if you like but I waste a lot less time trying to figure out how their code works than I do with Java or C#.

    Is C# or Java or whatever better than vb.net? I think not.
    Is C# or Java or whatever better than vb6? In certain ways yes, in others no.

    And that is the bottom line...

  254. How about lack of backwards compatibility? by pestilence669 · · Score: 1

    Not since the time of GW Basic meets QuickBasic has the language had any real backward compatibility. Syntax and gramattical changes are common in each major version release. It's a relatively safe assumption that your code will be orphaned unless you are prepared to migrate it with each new VB release. The problem with Basic is the complete lack of standards to govern its evolution. As a result, the language has become a repository for every whim Microsoft has ever had.

    It's not just Visual Basic that lacks true backward compatibility. Visual C++ will orphan your projects also. In the most recent incarnation, 2005, they don't even offer true C++ generics support (templates). I've worked on porting 1,000's of lines of code between Microsoft compiler revisions. The degree of breakage is unique to MS products.

    I never liked how code in Visual Basic disappears behind modules, forms, and buttons. It makes it 10 times worse when you're porting VB 5 to VB 2005.

  255. Back to the subject by weeb0 · · Score: 0
    • - Poor performance is a great deal, I already tested it and java is 50% faster than VB using the same kind of little benchmark program.
    • - No doc tool like doxygen or javadoc.
    • - Too much easy to use global variable (and too much global variable)
    • - Too much use of MS library which have a lot of memory leaks
    • - the use of variant which there is a no type variable with a lot of overhead.
    • - No real OO in vb6
  256. VB.NET can do things that C# cannot - 3 examples by gigi · · Score: 1

    Three comments:

    1) VB.NET offers 'scripting', or 'late-binding' capabilities that allow you to
    write one line of VB code, where C# needs 20 or more.
    Example: Late binding myths.

    2) VB.NET exposes some elements of the underlying CLR (runtime) that C# hides,
    e.g. a 'where' clause during catching of an exception. Link

    3) Upcoming VB.NET (with DLinq & XLinq) will include native support for XML, whereas
    C# has no such plans. Link

    Personally, for new projects, I would choose C# over VB.NET.
    Good luck!
    George

  257. Why not VB? by plague3106 · · Score: 1

    I have to ask, but, why not port to VB.Net? VB.Net isn't inherently evil.

    I don't care for it, but in most respects, its not different than using C#. My dislikes of it are lack over overloading support and its 'wordiness.'

  258. ASM by FragHARD · · Score: 1

    So why no just write it in assembler or skip all these interpreters and jmp right to machine code! Oh sure there are problems with machine types and different cards (thats the end users problem) /BGATES heh heh /!BGATES.

    yeah I know I'll get blasted for that comment, but I'm feeling real brave today.

    --
    FragHARD or don't frag at all