|
SixOfTheClock wrote: So what do you guys think? Am I missing something here? Is there actually a reason beyond ego that in 2012 people still have this attitude towards VB.NET?
The attitude is very high-school. Generally speaking, I've found that when people spend all their time criticizing someone else's choice of a programming language, tool, etc. they're doing their darndest to try and make themselves feel better about themselves for some reason.
I've been developing code for about 36 years now, about 13 of that in some version of VB starting with VB3 through VB.Net. My largest code project still lives in VB.Net. It computes employee time cards and millions of people get paid as a result of it. It's not novice code. It's the heart of a very lucrative system that generates $Millions in revenue yearly.
I originally chose VB3 because it allowed me to transition from DOS development (which I was doing in C++) without having to re-invent the wheel. I had, at that time, spent many years developing my own UI, low-level O/S code, etc. I was ready to let the vendor (Microsoft) abstract the low-level stuff for a change and focus on the application layer instead of constantly plumbing in the basement. VB was PERFECT for that. The first major system I wrote in VB3 was a credit-card settlement system for a large restaurant chain. It worked beautifully and because of VB3 I was able to prototype and build the GUI and really focus on the application instead of handling INVALID_RECTANGLE events and crap like that.
Recently (in the last couple of years) I decided to move to C# simply because I find it a little easier to "see" object concepts with it (and I wrote C/C++ for many years). I didn't make that transition because C# was any "better", nor do I strive to go back and convert my Rules Engine into it: I keep maintaining it in VB.Net and write my new stuff in C#. They're both first-class languages, fully supported and work fine.
To the people that take the attitude that [fill-in-your-choice-of-language-here] is a TOY: shove it where the sun don't shine. Keep your stinking criticism to yourself and demonstrate some professionalism for a change.
-CB
|
|
|
|
|
I'm not keen on VB.NET (even though I'm using it on my current job) for three reasons:
1. I grew up on curly braces, and have an irrational preference for them.
2. VB.NET, unlike C#, is wholly proprietary. There isn't even an ECMA standard for it, let alone ANSI or ISO.
3. I spent nine years maintaining various VB6 codebases, and I have the scars on my forearm to prove it. (Remember, kids: down, not across.)
However, the C++ hotshot who thinks every class member should be made public so that "nothing will break" needs to stop smoking my catnip.
When posting here, I do not represent anybody but myself.
|
|
|
|
|
Probably the reason is it's too english (readable) as compared to C# or C++ where the syntax looks nerdy. When non programmers look at a VB language they can understand some parts of it as compared to C# or C++ and also the reason why some programmers sees it as "kid's" language.
I personally use VB and I think it is just as capable as C# or most languages out there.
modified 15-Nov-12 9:40am.
|
|
|
|
|
I am a combination of points 2 and 3.
I had Visual Basic 4/5 as my first real programming language at the age of 14. Before I would only do DOS batch programs to automate some things I got bored of typing.
When I first got in contact with it I was amazed, I was creating programs! Like any new beginner I did a lot of nasty practices, but that's OK, I was learning and reading my first programming book (Learn Visual Basic in 21 days, yeah right).
The thing is that I matured and explored other languages. Working with C/C++ was very special to me because it was challenging and opened up a new world to me. It also made me look at VB with some sort of disdain. I mean, when I looked back it seemed like a kid language (I was a kid when I started to learn it).
This actually illogically made me simply not like it. It's like when you don't like the taste of a food, you just don't like it. Later I started to really despise it because it was creating problems for me. I remember once liking not needing to declare variables and later having nightmares because that was allowed. Again a whole culture against anything with VB was growing inside me and that finally extended to VB.Net.
Now, VB.Net is not VB6 I know, but I really inherited a lot of the culture from old VB. There are still ugly things the compiler will allow/assume that can make the life of a second developer very hard, specially on spotting certain bugs due to bad coding. Of course it's nothing compared to old VB, but VB.Net still inherits some of the things I hated of old VB. I'm not saying that C# can't have bad coding practices that create hard to spot bugs, I'm just saying that it has less, the compiler assumes and forgives less.
Then there are other reasons to not like the language. These reasons are not really the language's fault, but of people who use it, for the following reasons:
1 - I still see too much of bad practices of old VB into VB.Net. For example, declaring huge amounts of global variables that are modified everywhere, that's just hell.
2 - It is still more likely to inherit bad VB.Net code than C# code (in my personal experience). I think that's true because VB.Net is more appealing for beginners and therefore will have bad code more often.
3 - Because C# is much more popular language there are a lot more resources on the web when you're looking for web. A quick search on codeproject articles and other sources will prove that. So if you're looking not to reinvent the wheel, chances are that you'll find it first in C#. You may argue that you could simply translate that back to VB.Net, but once you're used to one language it is much more readable when you're browsing through a lot of articles and that extra step is not really what I would want, specially on bigger projects.
Lastly, I still have to work with VB and VB.Net. Right now I'm in the process of migrating old VB to C#.Net and have a side project that is on VB.Net.
Yes I hate it, as you may have noticed, for a number of reasons. Seeing "Dim" gives me goose bumps.
To alcohol! The cause of, and solution to, all of life's problems - Homer Simpson
----
Our heads are round so our thoughts can change direction - Francis Picabia
|
|
|
|
|
In my current job we have legacy systems in VB.NET and I'm creating new systems in C#, so I'm going back and forth between the two all of the time. And yes, I'm using C# for new systems because I prefer it to VB.NET.
I prefer C# because there are many things about VB that annoy me (like the use of newlines as statement terminators, verbose syntax, etc.). But really, I rarely notice the difference most of the time, because I'm focused on the logic not the language. You can do the same things in VB.NET that you can do in C#, it's all .NET in the end.
I think that the anti-VB attitude among "real" programmers comes from BASIC's history as a simple, non-serious language for teaching novices. Those days are long gone though and VB.NET is a serious language suited to doing serious work, but the perception of VB as a kiddie non-pro language persists. Also, most experienced programmers are much more familiar with C-style syntax than BASIC-style syntax, so they are biased towards seeing anything with C-style syntax as more of a "real" or "professional" language.
I prefer C#, but I see nothing wrong with VB.NET. Being a good .NET programmer has little to do with which language you use, the framework is the same. There is so little difference that I rarely even notice which language I'm using until I start declaring a variable the wrong way or add/leave out a semicolon in the wrong language. The only real differences come down to syntax, which is the most trivial part of programming.
As far as I'm concerned the worst thing that you can say about VB.NET is that the syntax is annoying to work with, but it's a hell of a lot less so than with some other more highly-regarded languages out there (I'm looking at you, Perl).
|
|
|
|
|
Great post and I 100% agree. As an old fart that went to my first programming course in the 70s, I've seen this sort of childish stigma attached to almost every aspect of computing. Everyone is entitled to an opinion but mud-slinging and name-calling will get you about as much respect as a six year old throwing a tantrum!
One other poster said that you can write good code or bad code in any language. With years of C and VB (all flavours) under my belt I believe that it's easier to write bad code in C (and probably C++ too) than in VB. C# doesn't have the failings that its ancestors had.
I enjoyed my years of C programming and for some purposes it was the best tool. I have to say that on large projects I have always been more productive in VB though.
The reality of the job is that we tend to be more productive in tools we know well and any decent programmer should be able to maintain code in almost any language. I've seen many prejudiced programmers from one silo get converted to another when forced to get familiar with a new tool.
Guys, this isn't a religion and setting fatwahs on experts from another camp is NOT the way to go.
Life is like a s**t sandwich; the more bread you have, the less s**t you eat.
|
|
|
|
|
VB.net is my primary language. I use it in an OO manner just as I would with C# but the stigma and lack of tooling (re: Mono) is getting to be a big problem. I'm looking around for a different job and I'm being careful to only talk about my experience on the .net framework rather than VB as a particular syntax because I've heard and seen people automatically dismiss VB without further thought.
I'm productive in VB because I know and understand the syntax. While I can work in C#, I know that I'm going to have to climb the learning curve to get as efficient with the syntax as I am with VB. On the other hand, I need to do some things with my primary application in order to satisfy my customers and the tooling that I need to accomplish that and maintain compatibility is only available in the C# world.
It's a shame that I have to change syntax as much because of reputation as tooling, but at least I'm still able to work in the framework so I can maintain that part of my knowledge and experience.
I will say though that in my opinion... VB is no more verbose than C# in daily use and the 'shape' of functions is much clearer to my practiced eye than C# functions. I find that the commonly used style for C# eats up much more vertical space than a similar VB function and that horizontal space is very similar between the two.
SixOfTheClock wrote: 3. Those that have acquired an illogical, extreme hatred for it through an
unholy combination of hearsay, rumour and code samples (often VB6) they've seen
on the internet. They have never tried it and so are horribly uninformed on the
topic. They say things like "VB isn't a real language!" and "VB is a language
for babies!". It is with this group that I take issue.
This point gripes me to no end. I can't understand it from a logical perspective EXCEPT... that I've been in local college courses for both syntax's and found that the instructors treat the two languages in orthogonal manners. C# instructors teach OOP, while VB instructors teach quick and dirty almost linear techniques targeted more at Win-forms than at real-world apps. I have to wonder if this is systemic across the industry and helps to propogate the stigma against VB in the real world.
This isn't to say that the local C# courses are very good mind you... when the advanced C# instructor taught ASP.net data access (one year ago) using techniques that were the definition of a SQL injection vulnerability and then didn't back down when I pointed this out.... I lost faith in the credibility of the course.
My opinions...
Jason
|
|
|
|
|
VB.Net is a .Net language. That means it's just as good as any other .Net language in terms of capabilities. That being said, there's something about the VB.Net programmer that sets them a class apart from someone who would pick C#.
I find that VB programmers are the worst. They routinely don't understand the details of computer programming. When I hear of understandings like "Linq should be faster because it's fewer lines of code" I cringe. I know the correct response is to analyze the machine instructions produced from such statements, and to unroll all of the code and really look at the actual instructions sent to the processor. But years of having these discussions has taught me to just politely smile and reply "well, let me see if I can do better by writing all the code in C#". The response is always the same: skepticism at first, and then utter shock. They are always amazed that hundreds of lines of code in C# will plow through a complicated Linq query much faster. They don't understand things outside of their simplified VB.Net world. Sure, you can make the same mistake in C#, but the kicker is programmers who choose C# tend to know better.
If your apps are simple and don't deal with large amounts of data, this is not a problem. But to turn a VB.Net programmer on a complicated task that is going to require some thinking about how to optimize it.... just say no. Find a real programmer who would say "I can do that in C#". That response alone is usually proof positive that the person knows how to do it.
|
|
|
|
|
Patrick Fox wrote: But to turn a VB.Net programmer on a complicated task that is going to require some thinking about how to optimize it.... just say no. Find a real programmer who would say "I can do that in C#". That response alone is usually proof positive that the person knows how to do it.
Blame the programmer, not the language. The perception of VB as an easy language for people who aren't "real" programmers is exactly why there are so many bad VB programmers out there.
It's a problem of perception rather than the language itself, and this dismissive attitude towards VB programmers is exactly why so many inexperienced and unsophisticated programmers gravitate towards VB. They think that it's easy, they use it like it's easy, they think it requires no real in-depth thought or knowledge, and the results are predictably bad.
It's not the language that's the problem. There are good VB programmers out there, and there are certainly bad C# programmers out there. Code is easy to write but hard to write well, and that's true in any language.
|
|
|
|
|
I know, I don't disagree, but WHY is it so prevalent in this language that you find the most ignorant people? I know there are good VB.Net programmers, but I have never met one that wasn't proficient in at least one other language, either a close cousin like C# or something farther removed like C/C++ or Java. Real programmers know how to write code, not just how to use one language.
I use VB all the time and there's a teeny tiny number of things it can't do compared to C#, none of them insurmountable. Most of them are just syntax related anyway. The ONLY reason I choose to use VB over C# is so that my coworkers can read and understand my code, or maintain it if I am out sick. The same VB code in C# might as well be a foreign language they can't speak. That's not true of all of them, but enough of them to mandate VB use. It's the lowest common denominator.
|
|
|
|
|
You aren't missing anything. I've never understood geeky "strong" opinions about languages. I've had a 40 year programming career that has included several languages; Fortran, Assembler, C, C++, Visual Basic, JavaScript, Cold Fusion, and now VB.Net (for the past 6 years). Each language has to be accepted on its own merits. Features available in one may not be found in another. Syntaxes vary. Get over it. It is what it is.
Visual Basic is thought of as a simple language designed to make the development of desktop applications easy. VB.NET however sits atop the .NET runtime and can be used to develop powerful server-side applications. C# sits atop the exact same runtime. Unfortunately VB.NET makes some think of Visual Basic. Okay, VB.NET is an enhanced Visual Basic. So what? The syntax used by VB.NET is totally different from that used by C#; C# is terse, VB is verbose. Again, so what? Personally I like the "wordiness" of VB.NET, though I have no problem reading well-written C#. In fact, learning C# is on my to-do list.
I also don't understand the view that VB.NET programmers aren't "real" programmers. I certainly am and know there are many others. Many of those casting stones have never had to worry about freeing malloc'd memory, uninitialized pointers, or buffer overruns. So don't judge a programmer by the language they currently work in.
Whenever I encounter someone who has intense distain for a language, hardware, or vendor, I just cut them off saying I'm not interested in the discussion, as I've seen some individuals virtually decompensate defending their views.
As for your colleague who said:
"What's the point in declaring things as private? Just declare everything as public. That way nothing will break."
Just be sure their code is reviewed early and often.
modified 15-Nov-12 11:41am.
|
|
|
|
|
I enjoy coding in VB because I can speed-read the language.
James Plotts
|
|
|
|
|
Hi. The stigma on Visual Basic comes from its beginning, being an introductory level language, usually is the first taught to people that want to learn programming, either in courses or self taught, this lead to a bunch of people that can program but don't know or fully understand what they're doing, hopefully some of them go beyond and learn more advanced stuff, but many just stay with the basics and make terrible programs that need to be maintained later, by a more skilled programmer that (rightfully) will think that anything written on Visual Basic is sh*t.
In summary, is not the language, is the majority of the people that use it what gives it a bad reputation, personally i don't like VB, i find the syntax too verbose, but i had to use it in a former job (in the .NET variant) and i learned to respect it as a serious language.
|
|
|
|
|
VB’s stigma drives me insane. I prefer the BASIC syntax. That said the most fun I’ve had was writing an ASCII C, HTTP protocol Poster/Receiver on an AS/400. The arrogance I see around C# just kills the entire language for me.
I’ve toyed with creating my own language for a few years now. Without a doubt it’ll be the BASIC syntax. I can see the tag line now: “Where C# developers go to have fun!” Maybe one decade I’ll actually commit enough time to write it.
|
|
|
|
|
Better yet, why not make a new language for wanna-be coders so they can migrate over to that and leave VB.NET to the pros? It's a win for everyone.
You can call it something like Miserable Object-disoriented Really Obnoxious Non-language(MORON). Just claim backwards-compatibility with VB6 and it will take off like a rocket.
|
|
|
|
|
lol, I love the name.
Actually one of my goals would be the help find and educate kinds of kids like I was… bored taking apart clocks and toasters & wanting to “take apart” software. (So “wanna-be coders” is an accurate term.) If I can’t make it “self-discoverable” I would not consider it a success. Yet having an academic only language is a waste of time… I must have a real-life use.
|
|
|
|
|
I'm a software engineer with over 35 years and I'm with you 100%. I've programmed as a contractor in pretty much every language on every platform and in every environment.
What I found is that many Software Engineers or IT professional in general are like religious fanatics. I have my favorites just as everybody else, but atthe end of the day I believe a true professional works with what he/she has available and gets the best out of it.
Just like with religion, faith is a basic pillar of those fanatical discussion. If you believe that Windows is worse than OSX, or that LINUX is the OS for professionals, or that VB is a baby language, please be my guest. I found just like you that often behind the facade of the self proclaimed professional is an individual with little knowledge an/or skills.
Having said that as the manager of software engineers I have always tried to keep my staff "marketable" for their own sake. Unfortunately the job market is influenced by "technology apostels", so we moved our teams from VB.NET to C#, not because we didn't enjoy programming in it or were less successful doing so, but solely for the reason that the mainstream in the profession has chosen C# or C++ as their preferred language. As business software developer I have an obligation to my employer to do my job the most efficient way possible and that includes being able to share and absorb knowledge of the professional community via Google etc.
We have watched the contributions from people providing samples and articles in VB.NET down close to nil during the last few years. At the same time hard and software providers that we utilize when we integrate with new technology, especially in the industrial production sector, have stopped providing any API descriptions and samples for anything but C#. On top of that fact, I want my staff to be able to find a job if out of whatever reason they have to leave our company in these uncertain economical times.
So we made this decision based on facts and our circumstances. In our case it revitalized the development team quite a bit, because we were able to utilize the opportunity to get staff certified as a team effort. That was a lot of fun.
So my statement would be: If you can only write code in one specific language and you religiously fight exposing yourself to other avenues, you are definitely not a IT professional, you are rather a one trick pony and quite ignorant on top of it.
|
|
|
|
|
Addressing one of your comments.
"What's the point in declaring things as private? Just declare everything as public. That way nothing will break."
To which you replied the following.
that last sentence demonstrates without a doubt that beneath the haughty 'I'm a real programmer' exterior lies a secret - 'I have got no idea what I'm talking about'.
I contend that it is you who does not know what they are talking about. While declaring variables locally within a function has it's uses, so does declaring the variables globally so that the whole program can see and use those variables.
The way it works is that every time you enter a function, locally declared variables have memory allocated to them, and when you step out of that function, the memory is de-allocated. This takes time, ok sure it's only a few microseconds but consider this. If you write a program where timing is a critical factor and you are running through a particular function 6000 times or more, which would you choose? If you answered privately declared variables you would be wrong, the reason being is that those few microseconds add up, they are the difference between a program taking 1.5s to execute from beginning to end, and the same program taking 15 seconds to execute from beginning to end.
Yes it is generally an unsafe practice I will agree, and should only be used when absolutely necessary, but when you have something that is time critical there really is no other viable option than declaring globally.
it also has the added bonus of forcing a dev into being more diligent in their programming, because they are forced to check their program a whole lot more often than what you would otherwise, knowing which variable is used, when it is used, how it is used, and when it can be reused, if indeed it can be reused at all.
So yes, programs written where everything is declared publically has their uses, but it is a very niche market, crytography is the prime example.
|
|
|
|
|
I think you missed the point. There may well be times when making all of the variables public is the right way to go, but based on what that guy said he wasn't in one of those situations, he was just clueless. If the argument is to make them all public so "nothing will break," then it's obvious that there's a serious underlying problem, and making everything public so "nothing will break" just hides the problem and makes it worse.
No matter how many cases there may be for using global variables, the statement "What's the point in declaring things as private? Just declare everything as public. That way nothing will break" is a very dumb statement that reeks of programming ignorance. The guy who said that clearly doesn't get "the point" of making members private, so it's very clear that he has no idea what he's talking about and knows next to nothing about OO programming. If I heard another team member say that, I'd make a mental note that the guy is dangerously incompetent.
|
|
|
|
|
Yes the statement "So nothing will break" is completely incompetant, the point I was making was that If you are going down the path of global variables, for whatever reason, you have to pay a whole lot more attention to what you're doing, to make sure nothing will break, ever, under any situation you can possibly ever concieve of no matter how unlikely it may be. It may increase dev time significantly to ensure that level of unbreakabbility, but in some situations it's worth it. I am not saying nothing will break ever, because it's impossible to develop any software that is entirely 100% bug free within the time constraints that dev's are given, but declaring globally helps put a dev into the mind set of extreme mitigation, the person who made the statement could have been good enough to declare globally and have the program unlikely to break, or he could have been utterly incompetant, the choice of words is unfotunate, assuming the former rather than the latter, a better choice of words would have been "so it's unlikely anything will break". I got the impression the OP was saying that declaring globally for any reason is bad, when it's not, sometimes it's the best thing you can do, so I made that point.
|
|
|
|
|
I find that anti VB.NET zealots are useful:
1) I know not employ them.
2) I can use VB to make and sell successful products without their "competition".
3) They give me great amusement in their twisty attempts to justify their biogtry!
|
|
|
|
|
SixOfTheClock wrote: "What's the point in declaring things as private?... That's definitely the statement of someone without nearly enough training in coding. Hopefully it was meant as a sincere question from someone seeking knowledge, instead of a self-satisfied ignorant comment and you didn't hear the real question. It does read like an ignorant comment on the language.
I don't mind asking ignorant questions when I already know I'm ignorant of the answer. You could have asked him "Do you really want an answer to that question? I'd be happy to spend a little time explaining it to you." That would cover your mishearing the real question AND telling him his statement was wrong if he really was giving an opinion. Gives him a chance to realize he still has things he needs to learn or to look for better ways of asking real questions.
To me, anything that will alter the behavior of the machine was written by a "real" language. It just may not be one I'm familiar with. Therefore HTML is a "real" language. (I've heard opinions that it also isn't a real language.) Of course XML wasn't a real language until the DOM drivers became common-place.
|
|
|
|
|
Your three options seem a little narrow and biased, exactly what you are accusing those who do not like VB.Net of being.
For me personally I do not like VB.Net as a language. It it far too verbose and has way too many keywords. For a number of years it lagged behind C# on supporting new features of .Net. And Microsoft should have never created the Visual Basic 6.0 Compatibility library. I prefer languages that have a statement terminator that is not a new line and just gravitated to C# because I come from a C-based background and enjoy its terseness.
Warning, I am using a broad stroke to generalize below and know that there are good and crappy programmers regardless of the language.
My biggest grip with VB.Net however is the type of developer that it tends to attract, that being people from pre-.Net VB. VB was never a very good language and didn't have good OO support. Putting a blob of procedural code in a Class file in VB6 seemed to be as object oriented as most pre.Net VB developers went.
I have been developing professionally for 15 years now and while I have met very good developers that like and use VB.Net, most do not fall in to this category. Instead they are the type of developer that has an extremely limited knowledge base. Asking them to move outside of VB and SQL Server is as if you asked them to perform open heart surgery. Trying to get them to grok Oracle, MySQL, SQLite, Linux, Java, Python or non-MS-Only standards was always a hair-pulling exercise in frustration. Back in the days of old ASP these were the type of developers that I had to go and rip out their VBScript or IE6-only JavaScript and replace it with something cross browser. In meetings for new development where we could chose technology they were the type to push only for VB and SQL Server, not because they were the best solution but because that is all they knew.
The majority (again, not all) of VB.Net developers I have seen over the last 3 years or so haven't even put in the effort to learn the greatness and fullness of the .Net library, instead opting to use the Visual Basic 6.0 Compatibility library to hold their hand.
To me it seems languages such as VB and Cobol tend to attract someone who is more of a business person over a developer. The type of person who isn't as passionate about the technology and more about just getting a job done (there is nothing wrong with that). I am just the polar opposite; I am very passionate about the technology and always want to stay current (it provides for my family and I) as well as the overall quality of the final solution.
When you mix in the people who are passionate about the technology with those that are only interested in learning the minimum tools to get the job done you will get petty squabbles. This is nothing new and will continue in the IT departments around the world. The business-geek versus the uber-technology-geek.
|
|
|
|
|
VB.NET is the language that really got me interested in programming in the first place. I took a Java class and by the end of it I didn't really enjoy it that much and started to think that programming was not for me. Then I took a VB.NET course and everything changed. Programming was fun. I built good stuff with VB and was able to pick it up quickly. By the end of that class, I was in love with programming. Now I program mostly in C# and I actually prefer it over VB after having used both for a while. Regardless, VB is a real language that you can do anything you want in. Anyone saying otherwise is either clueless or just a jerk. There has been great stuff built with VB, for example The Ocean Framework[^].
Don't feel ashamed to enjoy VB.
|
|
|
|
|
Personally I am happy with visual basic and no longer care about other languages struggling to make their mark. If you have a good look at what is growing in momentum is SQL Server. It is now powered by visual studio the home of visual basic that houses the other languages through .net.
I believe that we will have to learn how to become DBA and learn SQL. If the power is given back to the DBA the only options coders will have are to drag a Data Object to a html 5 form and any code will just take away from what is supplied.
Microsoft SQL Server just another tool in VB Land.
Redundancy is another word for coders
Duplication Redundancy
Coders creating a service, coders creating forms to recreate the same code, who create code full of vulnerabilities and holes.
Why not make and set the rules on the server and drag and drop away?
|
|
|
|
|