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?

105 of 690 comments (clear)

  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 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
    4. 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.
    5. 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).

    6. 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.

    7. 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!
    8. 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.

    9. 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.

    10. 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.
    11. 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
    12. 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.

    13. 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?

    14. 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?)

    15. 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.
    16. 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.

    17. 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.

    18. 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?

  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 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
    4. 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
    5. 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.
    6. 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.
    7. 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.

  3. 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.

  4. 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.

  5. 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
  6. 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 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.

    4. 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.

    5. 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

    6. 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).

    7. 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.
  7. 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.
  8. 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 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?
  9. 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.

  10. 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>
  11. 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
  12. 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 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.
  13. 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.

  14. 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
  15. 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).

  16. 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 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.
  17. 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.

  18. 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
    ==

  19. Re:Easy answer by geminidomino · · Score: 4, Funny

    No, you pussy. Real Men(TM) use small magnets directly on platters. ;)

  20. 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.

  21. 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.

  22. 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.
  23. 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.

  24. 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 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
  25. 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.
  26. 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 :)

  27. 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.

  28. 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.

  29. 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.

  30. 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..,

  31. 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.
  32. 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.

  33. 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.

  34. 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...

  35. 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.

  36. 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.

  37. 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.

  38. 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.
  39. 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
  40. 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.
  41. 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.

  42. 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?

  43. 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.

  44. 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
  45. Re:This post was brought to you by Duhavid · · Score: 2, Funny

    Mythical like the man month, dude.

    --
    emt 377 emt 4
  46. 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.

  47. 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.

  48. 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.

  49. 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
  50. 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.
  51. 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 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.

  52. 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 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.

  53. 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.
  54. 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.

  55. 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?
  56. 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
  57. 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.

  58. 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?