在另一个与编程相关的网站上,我在某人的签名中看到了这一行。这不是我第一次看到这种情绪,虽然这是最严厉的:
“在VB或任何变体中工作的人 它们不是程序员,而是程序员 马戏团的黑猩猩把粪便扔进去 IDE ...“
VBA是我的面包和黄油,我可以用它自动化很多东西。是的,我知道它缺乏润色和一些功能,但为什么这么多的消极性呢?另一方面,VB没有其他语言有什么用?
答案 0 :(得分:34)
VB6,VBScript和VBA之所以有声誉,是因为它们不是工业级语言。值得注意的是:
当然,VB并不是真正意图成为一种工业强度语言,所以上面提到的任何内容都不是对该语言的正确批评。幸运的是,VB.NET和最新版本的VBA修复了上述所有内容,因此VB.NET与市场上任何其他“严肃”语言都不相上下。
[轶事]
为了捍卫VB,我发现大多数人批评这种语言只是为了满足现状,而不是因为他们实际使用过它。
几年前,在一个聊天室,我遇到了一个年轻的新手栏杆,对抗一个VB6开发人员使用这种蹩脚的语言。我无辜地问“VB有什么问题”。
他说的第一件事是“因为它是一种WINDOWS语言!”所以我指出Borland Delphi是一种Windows唯一的语言*,但我从来没有听过有人因为这个原因而恶意攻击它。 (*有一个名为Kylix的产品,它交叉编译到Linux,但它的价格昂贵,有缺陷,并已停产。自从我使用Delphi以来已经有一段时间了,但最后我听说,它还没有为Linux做好准备。)
所以,他说“它有一个可怕的语法!”这真的是人们讨厌这种语言的原因吗?我会说Perl,Lisp和C ++的眼睛比VB差。
接下来,他说“它太容易学了!”好吧,我认为这一点有利于语言。如果我有一个拖放设计师,我永远不会手工编写GUI。你还有什么?
最后,抓住稻草,他评论说“它......没有字符串操作功能”。左,右,中,替换,InStr和修剪。 QED noob。
有趣的是,VB的功能发现了一些“黑客”语言,即变体数据类型和鸭子类型。编译好的代码运行得相当好,COM和本机windows DLL之间的互操作很简单,GUI编辑器基本上为所有未来的RAD开发设置了标准。
[/轶事]
答案 1 :(得分:25)
阅读一些Joel Spolsky's articles,你会对自己感觉更好。从他的文章Working on CityDesk, Part Three:
Visual Basic是一种非常高效的编写代码的方法,尤其是GUI代码。想要对话框上的粗体文字?在VB中单击一下。现在尝试在MFC中执行此操作。你必须创建一个子类控件,这是一个很大的混乱,你必须了解所有关于LOGFONTS和Windows窗口的子类化以及其他一些事情,一旦你拥有魔术类,你需要大约三行代码。
但是很多VB程序都是意大利面条,要么是因为它们是快速而又脏的一次性,要么是因为它们是由黑客程序员编写的,没有面向对象编程或结构化编程的培训。
我想知道的是,如果你选择那些在指针中做梦的顶尖C ++程序员,并让他们在VB中编码,会发生什么。我在Fog Creek发现的是它们成为超高效的编码机。代码看起来很不错,它面向对象且功能强大,但您不会浪费时间使用低于您需要的工具。我花了数年时间为C ++ / MFC编写代码,多年用Visual Basic编写代码,让我告诉你, VB的效率要高得多。
这种简单性吸引了许多新程序员。说有很多使用Visual Basic的坏程序员并不意味着Visual Basic是一种糟糕的语言;它只是意味着坏程序员(AKA新程序员)可以访问Visual Basic。
答案 2 :(得分:21)
我在一个所有代码都是C#的地方工作,而不是VB .NET。一位开发人员编写了大部分代码。你知道他是如何实现这一壮举的吗?容易:他复制并粘贴到各处。给定的方法可能在整个系统中有几个到几百个副本。
优秀的开发人员可以使用任何语言。蹩脚的开发人员可以用任何语言蹩脚。
答案 3 :(得分:8)
另外请注意,VB,VBA和VB.NET都是三种不同的语言,即使它们可能共享一些类似的语法。 VB.NET和C#之间没有真正的区别(除了关键字/语法),所以我们不应该把VB(6及之前)和VBA与VB.NET混为一谈。
许多程序员使用“VB”(只说所有3种语言)的真正问题更多地是关于使用它的人。大多数时候,“VB”程序员的正规教育较少,编写的代码较为粗糙。对于所有“VB”程序员来说,情况并非如此(这并不意味着没有用C ++,Java,C#等编写的草率代码)。这只是一个典型的期望,那些不使用VB的人在听到VB程序的时候会有这种期望。
答案 4 :(得分:5)
没有一种真正的语言,大多数有经验的人不仅知道这一点,而且立即将这些陈述视为缺乏经验的明显标志。
答案 5 :(得分:2)
平均开发者质量似乎与语言的流行程度成反比*语言的易用性。 VB非常简单,并且被广泛使用。
这是因为 A)对流行语言的编码员有需求,因此每个雇主都必须降低标准,提高工资或者没有开发人员。 B)没有线索的人仍然可以在易于使用的语言中表现出适度的生产力。有足够的库和GUI工具,他们可以将看起来很有用的东西拼凑在一起,即使它是完整的垃圾。
当用于知道他们正在做什么的人时,VB在其所针对的域中使用时没有任何固有的错误。几乎任何工具/语言都是如此。
答案 6 :(得分:2)
我不喜欢这种语言,但这主要是因为我使用的是一种类似vb的语言,它完全剥离了任何可能被视为优势的任何并强制实施“最佳实践”感。
我在VB中遇到的最大问题是,从无能的非程序员那里得到了几乎直接的跟踪 - >兼职Excel / Access脚本 - > VBA“大师” - > VB“程序员” - >领导程序员参与公司最重要的项目。
老实说,如果我没有看到有人在我眼前走这条路,我就不会相信。我甚至试图指导这个人,以便他熟悉OOP,基于异常的错误处理等等。但是他只是在沙子中挖了他的头并且在程序上写了一切,因为这一直对他有用。
我有机会与VB.Net一起工作,只要我把它当作一个对象的首选.Net langauge首先处理它,而VB则不是那么糟糕。不过,这绝不是我新项目的首选。
答案 7 :(得分:1)
我在编写VBScript代码之间访问SO而且该声明对我来说真的很棒 - 我现在是一只马戏团的黑猩猩。如果您不知道其他任何内容,VB及其变体看起来就像是很棒的语言。
在我看来,消极性的原因是一个基本的陈述 - On Error Resume Next。这使得糟糕的代码成为该语言的一个特性。如果它没有这个,就不会有糟糕的宣传......
答案 8 :(得分:0)
我认识的大多数开发人员都曾与VB开发人员或者VB背景很重要但没有线索的开发人员合作过。不幸的是,和大多数事情一样,我们所记得的都是关于某事的坏事。所以我们将VB与糟糕的编程联系起来
所有VB程序员都是糟糕的开发人员当然不是这样。但是当每个人都有关于“这个曾经和我合作过的老VB家伙”的故事时。刻板印象传播开来。