|
*grin* well, I've said more in this thread.
Thanks again. I'm still getting used to the idea.
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
This article started off so well, but then it went downhill from "In Concrete Terms" and below. I wanted to give you a 5. Really I did. But the last half of this article is just full of personal opinion, opinions I don't agree with, questionable facts/numbers, and some items that are just plain wrong.
I don't think it's fair to group all VB programmers in 1 "culture" anymore it being fair to group all C++ programmers together. I would split up the VB group like this:
1) Skilled programmers coming from a traditional programming background. (Degree in Computer Science or similar major.)
2) Managers, businessmen, IT, MIS, and other non-programmers that need to create a quick internal app.
The programmers in group 1 (in which I include myself) tend to be multi-lingual and are already familiar with the advantages and disadvantages of each language. Meaning not lanugage biased! VB was great for creating nice professional looking windows apps within a short time period. Yes, the VB of old wasn't really an object oriented language (limited to interface inheritance), but it was an "Event" driven language! Event driven programming (a little talked about subject) is just as important to me as OOP. It's something that VB and ObjectiveC programmers had available to them for years.
Plus, in my experience, the 3rd party tools/components (especially ActiveX) available to VB have been of great quality and there is a huge assortment to choose from.
I think group 2 is the one you are really talking about. Yes, they're unlikely to create good code and follow any OOP techniques and most of these folks really don't care how nice the internals look. All they want to do is to create a quick database front-end for their accounting, purchasing, order tracking, and etc needs. VB6 and its previous versions helped fulfill these needs by allowing these folks to draw the forms the way they wanted to and write "minimal" amounts of code.
This is the group that has been bastardized by Microsoft. It's my opinion that VB.Net (and C#) has become too complicated for most of these folks now. There's still a need for a simple app designer that's done almost entirely visually. Take a look at Apple's interface builder for Cocoa to get an idea of what I'm talking about. Most tasks can be done completely visually. Apple Cocoa[^]
Also, it's a damn shame that so many people here are hostile/disrespectful towards VB programmers. It's mostly in one direction too. Dare I say, it's discrimination! You're labelling most of the VB community as bad programmers based on your beliefs. There are many good VB programmers out there. There are bad ones too, just like with any other language, but those who wish to learn (such as those in group 2 mentioned above) should be encouraged, not shunned. Let's try to be more respectful.
As for me, I'm speaking as a programmer that knows many languages. C, C++, Java, VB6, VB.Net, C# and once upon a time I did a little Pascal, Scheme, and Assembly as well. I mostly come from a C/C++ background, but now I mostly do VB.Net over C++ because it fulfills my needs and is a very productive language.
|
|
|
|
|
Joshua Quick wrote:
Dare I say, it's discrimination!
Weird, eh? For some reason it's acceptable to generalize a group and treat them like trash as long as it's computer stuff. It's driving me sick to the point that I almost want to quit using computers entirely.
I gave this article a 5 because it's a daring article with as its main statement the fact that we as developers need to start looking at more ambiguous issues, but you're right, some of it was a bit weak.
|
|
|
|
|
My sentiments exactly, having for a number of years being a VB programmer. Only, you've provided a nice historical and cultural setting and explanation. When Richard Grimes wrote his parting shot for DDJ, the raving hordes of VB programmers went nuts. I blogged about this: http://petesbloggerama.blogspot.com/2005_02_01_petesbloggerama_archive.html
Marketing has contributed much to the differences.
|
|
|
|
|
I agreee. I come from the C++ background, but I did some work in VB 6 a few years ago. C# (and Java, but to a lesser degree, since it's an older language than C#) fixes some of the problems that C++ produced with its too liberal syntax, lack of systematic exception management and so on. As to VB.NET, the only thing I can say is that to really objectively appreciate what C# paradigm brings to an individual programmer and a team, you should have some (at least 2-3 months) experience in working with C#, and not just give some trivial code fragments to prove(?) some point. So people who get annoyed by articles like this because of its presumed subjectivity and anti-VB view should instead do a little experiment and really try the "other side".
|
|
|
|
|
|
Nigel Shaw wrote:
"Visual Basic was syntactically simple, and it enabled virtually anyone with a few hours of time to learn how to create simple applications."
Sure thing dude, and C# has followed that exact same path. Or what? Do you honestly think that, because C# has a C style syntax, it is just as difficult as C++? Don't kid yourself. C# is cake. Furthermore, it's not the language per se that makes developing simple applications easy with VB or C#; it's the environment that hosts the language. Otherwise, you're stuck writing your app with Notepad. Sure, BASIC syntax for some folks is easier to read than C syntax, the obvious reason being that BASIC is much more verbose and always uses words rather than non alphabetic characters as tokens. Again, it's more the "visual" part that simplifies development, not the language. Had VB 1 not had the form designer the developer would have been forced to use the Win 16 API to do anything at all, in which case C++ would have clearly been an easier alternative, since working with the Win API is much easier to do in C++ than in VB. Can you tell me why? Probably not, since it's obvious to me after having read this ill formatted article that you know nothing about VB.
Nigel Shaw wrote:
"In 2000 Microsoft announced .NET. in a move that swept the slate clean and replaced Visual Basic with what was in effect an entirely new development paradigm."
Entirely new programming paradigm? What is your definition of a programming paradigm? To me a programming paradigm is just a fancy way of referring to a particular programming style. Given this definition I fail to see how VB.NET introduced an entirely NEW programming paradigm. Let me guess, are you referring to OOP? If so, then once again I am further convinced that you are completely ignorant about VB, since VB has supported OOP since version 4. All .NET did was replace VB's underlying plumbing via the CLR and FCL, just like COM replaced VB's internals when it made the move from version 3 to version 4. Furthermore, not even AOP is COMPLETELY new; after all, COM types can also be decorated with certain predefined attributes that result in the provision of various services. Do yourself a favor and don't believe all the hype.
Nigel Shaw wrote:
"The kludgy third party tools were swept aside and replaced by a clean third party tool model."
I have no clue about the "kludgy" third party tools you were using before .NET, but most of the COM tools I used were excellent (Infragistics, Farpoint, etc...). No doubt the .NET component model is cleaner than what was available to vendors in COM, mainly I think because of the wonders of attributes/reflection, but please don't over exaggerate; otherwise, I'm lead to believe you work for MS's marketing department.
Nigel Shaw wrote:
"The lack of inheritance and polymorphism enforced for so many years by the underlying limitations of the Visual Basic engine architecture was overcome by throwing the old engine out completely."
Wow! What a statement! I'll let the lack of inheritance slip, because I assume you're referring to implementation inheritance as opposed to interface inheritance, which VB COM has supported since version 4, although I'm not sure I should make such assumptions regarding your knowledge of VB, since it's obvious to me that such knowledge does not even exist, so how can I make assumptions about it. Please tell me, where do you get the nerve to say that prior to .NET VB lacked polymorphism? Either you don't know anything about VB, which is obvious, or you don't know anything about COM, which is possible but not probable, or both. Just the mere fact that VB(4-6) is based on COM should be an obvious heads up that the language must allow types defined by it to exibit polymorphic behavior. My friend, ever heard of the IUnknown interface? What's your definition of polymorphism? To me it simply means the ability to treat objects of different types identically via a common interface. Was this possible in VB prior to .NET? Again, there was no choice in the matter given how COM worked (interface based), just like now in .NET every type ultimately derives from Object.
Nigel Shaw wrote:
"Recently I read a final report of a research project funded by the Swiss National Science Foundation. The project's naive goals were identified as follows: First, how can easy programming be achieved (in particular, for non-experts)?"
Why research? Buy VS.NET!
Nigel Shaw wrote:
"This despite of the fact that, for decades, the industry has been advertising programmers' positions by claiming that programming is easy."
The industry? What industry are you referring to? Who said my job is easy? Don't know many people I've met that thought programming was easy. Where are your references?
Nigel Shaw wrote:
"Tools became the slogan; the right tools, paired with clever tricks and
serious management methods, would work wonders. "
It's always and always will be about the tools buddy. What would us programmers do without tools.
Nigel Shaw wrote:
"Indeed, the woes of Software Engineering are not due to lack of tools, or proper management, but largely due to lack
of sufficient technical competence. "
Lack of competence is something all fields share, not just software. Just look at the US president.
Nigel Shaw wrote:
"and how the last remaining vestige of Visual Basic, the syntax, unfortunately continues to reinforce the culture. "
Last remaining? Again, ignorant to believing that VB.NET provides features totally new, never seen before, although sure it's a whole lot better, but nothing new here, since subsequent versions of any language usually, if not always, are better than prior versions. Syxtax reinforcing culture? I repeat, syntax? I repeat, syntax? Will the real slim shaddy please stand up! Explain to me please the cause and effect relationship between syntax of any language and the quality of systems produced by that language? I am going to have to once again make assumptions on what you are trying to say here. I think, not sure, what you meant to say is that VB's support for programming styles other than OO results in bad code. Perhaps you meant that features native to the language, for example, the ability to create global modules, leads to below quality systems. For the most part, I agree, although I refuse to ever make any type of programming decision without knowing the context I find myself. It's one thing to say in theory, like I always do, that every system should be the result of proper object oriented design, analysis, and implementation. However, in practice "other factors" usually come into play that, if not taken into account, living by the theory may end up taking a negative toll timely delivery. Is there time to do it right? If the answer yes, go for it! If the answer is no, well then some tradeoffs needs to be made.
Nigel Shaw wrote:
Delphi, a direct competitor to Visual Basic, was regarded as vastly superior technically, even by Microsoft
No??? Really???? No doubt Delphi was superior than VB COM, just like C++ was, at least from a programmer's perspective, although certainly the same thing can't always be said from a business perspective.
Nigel Shaw wrote:
To preview the features of each successive version of Visual Basic, it was generally recognized that one only had to look at the current version of Delphi.
The man in charge of any language is a fool if he does not take into account the good and the bad of other languages around him when preparing it for a new version, and no doubt the VB team has no fools within it. From an environment/"visual" perspective, however, VB was and continues to be KING! And please don't tell me that the Delphi environment, or any other IDE, was not influenced by the VB environment, because surely they have, including C#.
Nigel Shaw wrote:
"Hejlsberg knew his work would never achieve mainstream adoption while he remained at Borland."
You must know the guy! Please send my regards
Nigel Shaw wrote:
"At the same time, Microsoft gradually came to realize that Visual Basic would never achieve the technical excellence of Delphi without Hejlsberg. "
I didn't know you worked at MS! Why didn't you say so! Seriously, had Hejlsberg refused MS's offer, I have no doubt whatsoever MS would have hired some other genious.
Nigel Shaw wrote:
"Java applications, when architected and built by skilled Java developers, were more powerful and feature-rich than the vast majority of Visual Basic applications. "
You don't say? Give me the links where you obtained this information. Also, when you say feature rich and powerful, you're not talking about the user's perception, are you?
Nigel Shaw wrote:
"Coming from Andreessen, it was the thunderbolt that shocked the world into a near-frenzied adoption of Java, and ultimately brought Microsoft and Hejlsberg together. "
Really? That's what brought them together? And all this time I thought it was the money that lured Hejlsberg to MS. What was I thinking!
Nigel Shaw wrote:
"Hejlsberg envisioned a language which would fully embrace the emerging component model for application development by making the three key constructs of component development, properties, methods and events,
first class elements of the language. "
Of course these constructs first class members of VB since it's COM days. Nothing new to VB.
Nigel Shaw wrote:
"For instance in Java properties don’t really exist, they’re “faked” by using the “get xxx” and “set xxx” syntax. In a property inspector they show up as “xxx” and you have to know that you put the get and set in the right places. "
So what! C does not have the notion of a class explicitly defined within its grammar but does that mean you can't do OOP in C? Of course not! Want proof?
Nigel Shaw wrote:
"This and other anomalies made Hejlsberg the perfectionist uncomfortable. "
Don't forget to send him my regards! Ask him if he's willing to come to CA and have a beer with me.
Nigel Shaw wrote:
"With Java rapidly gaining ground, by 1996 Microsoft was getting very concerned."
I wonder if the profits showed this concern? Probably not, since VB probably made up for any losses, but then again I don't have access to this type of inside information the way you do, so don't listen to me.
Nigel Shaw wrote:
"Once the syntax permitted it, such assignment became widespread, reinforcing the designers’ original premise. Once this cycle of self-reinforcement begins, the cultural habits quickly become entrenched and widespread, and are extremely resistant to change. Minds tend to gravitate to like minds. User groups tend to attract homogenous followings. Visual Basic instructors tend to propagate what their instructors taught them. "
In your time in college did you take any critical thinking courses? I'm sure you have. Have you ever heard of the slippery slope fallacy? You just fell to it. There may be a correlation, but certainly not a cause.
Nigel Shaw wrote:
"This awareness of the immense inertia of embedded culture is precisely the brilliant insight that caused Microsoft to keep Visual Basic and to make it nearly 100% backward compatible at the syntax level."
Tell this to the VB COM guys that are petitioning VB COM support in VS.NET.
Nigel Shaw wrote:
"They recognized that trying to get legions of developers to abandon their old cultural norms and adopt new ways was foolhardy. "
Foolhardy? You don't have to be a genius to figure that one out.
Nigel Shaw wrote:
"Hiring good C# programmers is easier than hiring good VB programmers.
This is because 80 of C# programmers are good, while 80% of VB programmers are not good."
Total bullshit, hiring a good programmer is NEVER easy. First, there are many good programmers from which to choose. Second, where did you get these figures from? My advice to you next time you write an article like this, that is, one that strikes contraversy, is to include a detailed references section that points to all these numbers you present.
Nigel Shaw wrote:
"Hiring the average C# programmer costs more than hiring the average VB programmers. This is because the average C# programmer is a better programmer than the average VB programmer. "
Show me the money! Show me the money! Seriously, give me the link that backs this claim up. Also, an average is just that, an average programmer, does not matter what language he or she uses. I myself am an average programmer.
Nigel Shaw wrote:
"Hiring a good VB programmer costs the same as hiring a good C# programmer."
How dare that damn VB programmer charge the same amount of money as that C# programmer! That's just crazy!
Nigel Shaw wrote:
"A good programmer accomplishes two to ten times what an average programmer accomplishes"
2 to 10??? Quite a range there, don't ya think!
Nigel Shaw wrote:
"In the near future, there will be less good VB programmers than C# programmers."
Really? You can see the future as well? Very cool dude! Can you give next week's lotto numbers. I really could use an early retirement.
Nigel Shaw wrote:
"This is because all the good VB programmers are switching to C#. "
I haven't switched, nor have many others, many of which are CP homies. Then again I'm just an average programmer, completely fluent in both C# and VB.
Nigel Shaw wrote:
"This is partly because they like the language better, but mostly because they like the culture better. As the cultural separation become more evident and self-reinforcing, it will accelerate until there are very few good VB programmers left."
You've been hanging around CG lately, haven't you? Good move! He's an excellent programmer which I have the utmost respect for.
Nigel Shaw wrote:
"VB programmers, on average, make more errors regarding object assignment and clean-up, threading control, connection management, state management,
and the other types of errors highlighted in “Social Development Canada ROEWeb – TIGER Team (Code Review) Version 3.7
April 07 2005”. C# programmers, because their culture is conversant in these topics, tend to make these mistakes less. "
Lordy, lordy, lordy, lordy! Don't worry, I understand, that is, I understand that you're completely ignorant regarding VB. First of all dude, VB has never had to worry about memory leaks, other than those caused by circular references back in the COM days. Threading? Back up a minute here again and remember that prior to .NET VB was COM based, so what does that tell you about threading? Yeah, I know who listen to rules, but in any case, threading in VB was easy! Just write a COM component in C++ and expose it to the VB client, or just download one from CP. Finally, tell me exactly what a C# programmer needs to know about object clean up? Other than disposing of resources, not much, but really what else is there. Also, how tough is it to create a threaded app in C#, VB, or any .NET language? Not tough at all.
Nigel Shaw wrote:
"The VB language retains constructs that support the existing (old) VB culture. This was done, of course, in order to avoid alienating the culture’s members. Many of these constructs are still used by VB programmers, even though they should be avoided."
Be specific, which ones are you talking about? Please, enlighten me with your knowledge of VB.
Nigel Shaw wrote:
"VB by default allows support for late binding. Although it can be turned off with “Option strict”, the culture is such that it’s usually left on. This leads to numerous difficult to catch errors. C# binding is always early. "
I use late binding all the time when working with COM; it's proved invaluable. There's a time and place for everything, including late binding.
Nigel Shaw wrote:
"VB still supports the old “On error goto” construct. This leads to sloppy or non-existent error handling. C# supports only the superior try…catch error handling. "
VB also supports structured exception handling. The other form is there to accomodate existing code. VB was not born yesterday you know, C# was. VB has production code to support. Someone have a gun against your head that's forcing you to use "on error etc.."?
Nigel Shaw wrote:
"VB supports optional parameters. Although VB developers often list this as an advantage, it is a disadvantage because the use of optional parameters weakens the contract between the caller and the method, allowing the developer to slacken his analysis and get away with it until bugs creep in. [note: C# param array construct is not the same as optional params]"
Nothing wrong with optional parameters, although I prefer method groups. C++ has them. Does that make C++ bad?
Nigel Shaw wrote:
"VB supports the legacy VB functions, with reference to Microsoft.VisualBasic.dll. Many of these functions are slow and they should all be avoided in favor of the .NET framework. However many VB programmers still use them. In new VB projects, this dangerous namespace is included by default. "
Since you're here giving advice, how about being a bit more specific as to which functions are slow. IsNumeric is slow, but it sure as hell is convenient to use at the windows UI level, and I'm going to continue to use it.
"VB allows implementation of interfaces with methods of different names, making it confusing and difficult to find the implementation. C# does not. "
So what? And C# requires name mapping when implementing interfaces, whether explicitly or implicitly. Whereas VB allows the programmer to declaratively hook a method to an interface member via implements, which IMHO is far better.
Nigel Shaw wrote:
"C# namespaces are managed in way that makes programmers aware of namespaces and their importance. VB namespaces are managed in a way that hides them from the programmers by default. Careful attention to namespace management is a fundamental tenet of strong application design and its importance cannot be overestimated."
The only difference is that VB allows the root namespace to be defined at the project level and also allows any namespace to be included at the project level as well. C# on the other hand requires that any namespaces be explicitly included in the source file. Good or bad? Depends
Nigel Shaw wrote:
"C# is one step ahead in language features, and probably will remain so. Currently C# supports operator overloading, which VB won’t support until the next release. The next version C# will support generics, anonymous methods and partial types. These will not all be in the next version of VB. "
Err! The only language features C# will have that VB won't in 2.0 are iterators and anonymous methods.
Nigel Shaw wrote:
"C# supports XML comments which enable the automatic generation of comprehensive system documentation (Figure 2). "
In 2.0 they will be available. Now you can just use an add in. No biggie
Nigel Shaw wrote:
"C# code is clearer and easier to read because the braces enforce white space and provide a strong visual cue to the start and end of logical blocks. This makes the code easier to understand, leading to fewer instances of common errors such as logic in the wrong section of a method, forgetting to end a logical block, and so on. "
What a bunch of crap! What makes code easy or hard to read is the design the code implements. If you're reading VB code in which global modules and variables are used all over the place, well then sure things are going to get tough to read.
Enough already, I must say the amount of trash presented in this article has overwhelmed me. No offense bud, but certainly you should have expected remarks like the ones I've made, given the content you have presented.
Finally, what's up with the section header colors? I know this article is unedited but please try to abide by the CP style.
|
|
|
|
|
Uff, long reply!!
You certainly make some valid points here, but I don't think you can be considered an:
Giancarlo Aguilera wrote:
I myself am an average programmer.
You mention a lot of advanced concepts of VB that any truly *average* programmer doesn't know (anything about COM for example). Remember, many VB programmers learned programming by dragging and dropping some controls, and then writing code to change some properties. This is a generalization, I know, as there are also some programmers that use VB, but know enough to perfectly use C++ o C# or whatever if the need arises.
I agree that the article sometimes makes some claims that require more backup, but overall the point of the article I believe is very clear, interesting, and most of all, true. Cultural and historic differences (how the language evolved, and the type of market it targets) certainly influence the "development" of developers, the way they are trained and their abilities. Remember, this is a generalization. There are very talented VB programmers, and also awful C# programmers, so don't take these comments as very specific.
-- LuisR
Luis Alonso Ramos
Intelectix - Chihuahua, Mexico
Not much here: My CP Blog!
|
|
|
|
|
"Remember, many VB programmers learned programming by dragging and dropping some controls, and then writing code to change some properties."
Your suggesting that you can't do this in C#?
|
|
|
|
|
Cory Smith wrote:
Your suggesting that you can't do this in C#?
Not at all. At the moment VB appeared on the market, the industry was in a big boom and everybody was trying to learn programming. Marketing created an image of VB being an easy language, and so many people, seeing the growing demand of software developers, bought it to learn, quickly getting jobs as programmers. The first VB had no OOP concepts, and in newer versions the OOP concepts were not encouraged (not the same as discouraged).
C# comes in a different moment in history, when the industry is more mature, and you need to prove yourself better to get a job. And since the demand has more or less stabilized (not growing exponentially anymore), companies can handpick their employees better.
So you're not a developer anymore by just dragging a few controls and setting some properties. You need to learn about multi-tier design, patterns, distributed applications, and many more things to be a competent developer.
Remember, the whole point of this article (and the posts in these threads) is generalized. Of course there are excellent VB programmers and very bad C# programmers, but on average, most points in the article are true.
-- LuisR
Luis Alonso Ramos
Intelectix - Chihuahua, Mexico
Not much here: My CP Blog!
|
|
|
|
|
Very good responses... dead on.
|
|
|
|
|
Some interesting points. I really don't know much about VB and I don't have an opinion on which language is "better" (I myself prefer C# due to my C background), but here's some of my thoughts:
Giancarlo Aguilera wrote:
Nigel Shaw wrote:
"Hiring the average C# programmer costs more than hiring the average VB programmers. This is because the average C# programmer is a better programmer than the average VB programmer. "
Show me the money! Show me the money! Seriously, give me the link that backs this claim up. Also, an average is just that, an average programmer, does not matter what language he or she uses. I myself am an average programmer.
Here's[^] the money. C# average salary: £44,714, VB average salary: £34,990. Of course, this could just be due to sentiment, like the impression that Basic is... well, basic.
Giancarlo Aguilera wrote:
Again, it's more the "visual" part that simplifies development, not the language.
True the IDE makes a huge difference, but I'd still rather write C# in Vim than C in Vim. If you've seen the recent .NET presentations by Microsoft[^] (you should check them out if you have time, there's a lot of really cool info in there), though, some of the presenters talk about how what developers appreciate is patterns - patterns in structure, patterns in naming schemes, patterns in methodologies. I think, like they say, this is one of the more important aspects of a language.
Unfortunately as things age, patterns need to be broken and anomalies need to be introduced in order to keep up with competition. As round as something may be when it's new, if it wants to be more functional, it has to have things attached to it, and it's not so round anymore. I think that's happening to Java and to VB (and to a certain extent C if you want to do OOP in it). Sorry if I'm wrong, again I hardly know Basic.
One thing C# does to avoid that is that it has hardly any libraries of its own - almost everything comes from .NET (Attributes are an exception, and they're a bit unaesthetic despite being functional and crucial). That isn't to say that it won't ever happen to C# (hopefully it won't grow any unsightly mutant arms when Whidbey comes along), but it definitely hasn't happened to it yet.
I think your response is unnecessarily long, seemingly for the sake of making it long. It seems like you've hidden a lot of irrelevant facts and non-arguments just to be obnoxious, like:
Giancarlo Aguilera wrote:
You must know the guy! Please send my regards
and
Giancarlo Aguilera wrote:
2 to 10??? Quite a range there, don't ya think!
and
Giancarlo Aguilera wrote:
Don't forget to send him my regards! Ask him if he's willing to come to CA and have a beer with me.
and
Giancarlo Aguilera wrote:
Finally, what's up with the section header colors? I know this article is unedited but please try to abide by the CP style.
Were you trying to be funny?
|
|
|
|
|
reinux wrote:
"Here's[^] the money. C# average salary: £44,714, VB average salary: £34,990. Of course, this could just be due to sentiment, like the impression that Basic is... well, basic."
First of all, the average VB salary figure cited here is £38,279, not £34,990. Second, the numbers provided by this site are applicable only to the UK. Third, in the end it would not surprise me at all that, at least currently, the average C# salary is greater than the average VB salary, although my reasons for believing this have absolutely nothing to do with "sentiment", whatever the hell that means, but rather are based on simple economic principles, specifically, the basic ones presented in price theory. First, on the supply side, there are more VB programmers than there are C# programmers, although the gap is shrinking, and as a result the VB supply curve is further out to the right than the C# one. Keeping the demand curve constant, this results in a lower equilibrium price for VB. Second, on the demand side, given the excellent marketing work MS did with C# before, during, and after .NET was released (honestly, how many VB.NET books were on the shelves prior to .NET 1.0 beta 2? I only got a hold of one. How many C# books were on the shelves prior to .NET 1.0 beta 2? Tons, of which I read a few), and also given the fact that C# is without question an excellent, easy to use tool like VB, the demand for C# no doubt went way up. If you take these words at face value and put the VB and C# demand curves on a graph, the C# demand curve is farther out to the right than the VB demand curve, thereby, resulting in a higher equilibrium price for C#. Finally, the tone in your remark about "BASIC being, well, basic" assures me that you want to let something out about the language. Please don't refrain from speaking your mind, just like the author of this article did not go refrain from speaking his mind, although I would advise that you try to avoid making as many technical inaccuracies as the author did. Also, I fail to see how C# is less "basic" than VB. Please help me to understand.
reinux wrote:
"Sorry if I'm wrong, again I hardly know Basic."
You're not wrong. Indeed all programming languages evolve, nothing new here, and so will C#.
reinux wrote:
"One thing C# does to avoid that is that it has hardly any libraries of its own - almost everything comes from .NET (Attributes are an exception, and they're a bit unaesthetic despite being functional and crucial)."
First, the more libraries I have in my toolkit the better, as long as I know how and when to use them. Second, I'm not sure what you meant about attributes, specifically, how they're the exception; also, this of course is a matter of opinion, but I don't think the use of attributes is unaesthetic, on the contrary. I love them! Declaratively being able to wire up services to types, methods, etc... is just plain awesome!
reinux wrote:
"I think your response is unnecessarily long, seemingly for the sake of making it long."
Damn! Sorry dude! I'll try too make responses shorter next time, just to please you . Good thing my little girl pulled me away from my PC when I wrote it; otherwise, it would have been longer. For example, the response doesn't include my thoughts regarding Nigel's comments on all the web haching that took place prior to .NET.
reinux wrote:
"It seems like you've hidden a lot of irrelevant facts and non-arguments just to be obnoxious, like: etc..."
reinux wrote:
"Were you trying to be funny? "
No???? Ya think???? Of course I was trying to be funny! After all, you can't expect me to take all these trash numbers presented seriously, can you? I hope I made you laugh, although I don't recall the last time anyone has ever laughed at my jokes. What can I say? I'm no Eddie Murphy.
Finally, just so that you know, I actually gave Nigel a 5. I applaud his braveness to attack culture and make various conclusions regarding VB despite the fact the he knows nothing about either. He no doubt got my attention and I salute him for that, since I myself enjoy talking trash.
|
|
|
|
|
Giancarlo Aguilera wrote:
First of all, the average VB salary figure cited here is £38,279, not £34,990.
Those numbers are updated daily, I believe. I'm sure you knew those numbers are dynamic, being that you seem to know economics pretty well. And yes, ths is only in the UK. Here in Canada[^], an average programmer in my age group earns $16.31/hr. That's nearly only a fifth of the (current) hourly earnings in Britain. I brought that site up because it gives a rough comparative estimation.
Giancarlo Aguilera wrote:
Finally, the tone in your remark about "BASIC being, well, basic" assures me that you want to let something out about the language.
Giancarlo Aguilera wrote:
Also, I fail to see how C# is less "basic" than VB. Please help me to understand.
You took that line completely out of context. This is what I mean by sentiment, the fact that there's the "impression that Basic is basic" -- I never said Basic is basic, I said there's that impression. If you cared to keep my statement in one piece and read and quote it as a whole, you would have seen that I in fact am mentioning this because it's an unfortunate misconception.
Giancarlo Aguilera wrote:
First, the more libraries I have in my toolkit the better, as long as I know how and when to use them. Second, I'm not sure what you meant about attributes, specifically, how they're the exception; also, this of course is a matter of opinion, but I don't think the use of attributes is unaesthetic, on the contrary. I love them! Declaratively being able to wire up services to types, methods, etc... is just plain awesome!
Again, you're misinterpreting my comment. Like I said, C# itself has hardly any libraries, and attributes are "functional and crucial" to the language. They sort of stick out of the .NET class libraries and have a place in C# natively. Obviously C# most likely won't be used for anything other than .NET, but if it were, it could possibly be a problem or a challenge. It's not a realistic problem and almost entirely nothing but an aesthetic issue, but it looks a bit ugly. What I'm saying is that when things like this build up, a language can become awkward.
I never said that that sort of thing is either black nor white. I just said it because at the least, it adds to the perception that Basic went through a lot of plastic surgery. If you would stop putting words in my mouth and change your attitude a bit, you might have even seen that as a defensive argument for VB.
Giancarlo Aguilera wrote:
After all, you can't expect me to take all these trash numbers presented seriously, can you?
No, in fact, I never took them seriously. I'm sure you too know well that you weren't supposed to take them seriously when you read the article. It should be pretty obvious by the time you get nice blunt numbers like "80%" and "20%" that the article has nothing to do with technicalities. Agreeably some of the statements are cynical towards VB, but to me this article is, like I mentioned in my first post, more about the "braveness" that you talk about of arguing outside the box.
Giancarlo Aguilera wrote:
although I don't recall the last time anyone has ever laughed at my jokes.
Think it's maybe because all they are is rude?
|
|
|
|
|
Hi Giancarlo,
(I mistakenly replied above to Cory thinking it was him who wrote all the stuff that you actually wrote, and when I posted my reply, I forgot to log in so now I can't delete/move the post. So here's my reply that was originally intended for you)
As you already know, the article is highly subjective. It contains a lot of opinion, and while I could have taken more time to back up the opinion with research, I'm not sure whether there would be any point. The article is itended to be a bit like sports journalism. If you're rooting for the home team, and you feel they've put up a great show, you expect tomorrow's newspaper to have a warm a fuzzy article on page 1 of the sports section for you to read over your morning coffee and feel good about. So if you believe in C#, this article is for you. If you don't, then my aim is certainly not to convince you that you should, any more than I would try to convince the opposing team's fans to root for the home team.
Like the rowdiness in the stands, it's a lot of fun to express one's voice loudly. I had fun writing it, and some people who are with the "home team" had a lot of fun reading it and it made them feel good. I also expect that you had quite a bit of fun "raising the roof" for the opposing team, and for that, I commend you wholeheartedly.
Thanks for taking the time to read the article so thoroughly and write such a detailed reply. You've generated a lot of noise in the stands and it's a great adrenalin rush, and all with great respect.
On a more specfic note... no question the article is not perfect. At some point I'll revise it and maybe try to back up my points a bit better. Also, I need to try to make the point that there are great VB programmers a bit more strongly, and try to find a way to make it more clearly stated that (1) there are many many times when hacking together a program is the right way to go, and for these very valid business cases, VB is a great tool and (2) VB in the hands of a great developer is every bit as powerful (today) as C#, and (3) any language in the hands of a great developer is much more powerful than any other language in the hands of an average or weak developer. Rocky Lhotka is the greatest testament to this.
Thanks again.
Nigel
PS
I will say Hi to Anders for you.
Nigel
|
|
|
|
|
Nigel Shaw wrote:
"As you already know, the article is highly subjective. It contains a lot of opinion, and while I could have taken more time to back up the opinion with research, I'm not sure whether there would be any point."
The point being that if you have evidence that supports the premises to your conclusion, you avoid responses like mine. Also, besides all the numbers, you made too many technical mistakes regarding VB. The article started off great but then suddenly went offbase. In the end I agree with some of what you said, and no doubt I applaud your braveness to take on such contraversy. But just make sure too be very careful when making generalizations about culture, and of course be prepared to receive criticism, as you already have. I love and encourage the language wars, but I stay far away from the culture ones.
Good luck, and by the way, you did get a 5 from me.
|
|
|
|
|
I think you've touched a topic that almost no programmers dare to touch. I think we really need more people like you, who are aware of cultural issues affecting software more than just technical and pseudo-political aspects.
For a lot of us it's up to our throats, but I don't think I've seen anyone have the courage and resources to stand up and say it.
Personally to be honest I'm not too interested in the VB vs C# debate, but I found myself eating lunch in front of my monitor to finish reading.
Awesome article, definitely sets an example.
|
|
|
|
|
|
I previously had not considered the cultural differences within a historical context. I'm inclined to agree with most of the article. However, I think the writer unnecessarily overextends his case.
I am interested and somewhat suspect of the origin of declared statistics, such as: "80 of C# programmers are good, while 80% of VB programmers are not good."
Also, highly subjective opinions are lumped in with more concrete evidence giving undeserved credence to such thin assertions like "C# code is clearer and easier to read because the braces enforce white space and provide a strong visual cue to the start and end of logical blocks."
In all, a different perspective on the tired us-vs.-them arguement that is compelling, but weak.
|
|
|
|
|
Thanks for the feedback.
Nigel
|
|
|
|
|
I had not tought about analyzing the differences between C# and Visual Basic from a cultural/historic point of view.
The main point of the article, as I understood it, is that C# is not better than VB because of its functionality (it is, but only marginally) but because of the different culture of its programmers. I totally agree that C# programmers (on average, of course) know better what they are doing than average VB programmers, and this is mainly due to the bad practices that VB supported (and sometimes encouraged) when they were learning programming.
I've been a C# programmer for over three years now, and I can say that I like it very much. I always was a C++ programmer, altough I did use VB5/6 for several projects, especially for the reduced requirements in time to achieve a good UI in my applications. But now with C# I've seen that the speed of development is almost the same, with the ability to use newer language features to have a nicer, more elegant design.
It's definitely a great article, you have my 5!
-- LuisR
Luis Alonso Ramos
Intelectix - Chihuahua, Mexico
Not much here: My CP Blog!
|
|
|
|
|
|
For those in the C# camp like me, this article gives me warm fuzzies. Thanks for sharing this history that some of us younger hacks aren't aware of.
Any VB lovers think he's off base?
|
|
|
|
|
|
Offbase? Do I really have to even answer that?
|
|
|
|
|