我问这个问题是为一家拥有70%到75%VB.NET开发者社区的公司工作的人。我想说80%的开发人员不知道OOD模式是什么。我想知道这对我公司的开发工作的健康状况是否最好?
我正在查看标签计数:
https://stackoverflow.com/tags
目前有:
12175 .NET问题
18630 C#问题
2067年VB.NET问题
检查亚马逊,似乎有:
51 C#Wrox书籍
21 VB.NET Wrox书籍
在CodePlex上有:
979项目标记为C#
136项目标记为VB.NET
如果你想成为一名VB.NET开发人员,肯定会有更少的材料需要学习。 什么是公司的标准化VB.NET和雇用VB.NET开发人员的优势?微软如何回答这个问题?
只有两个论点:
如果您在一家完全标准化VB.NET的公司工作,您是否可以发布一个答案,解释他们为何做出选择的实际或技术原因?
更新
更多统计数据 - O'Reilly Radar
State of the Computer Book Market 2008, part 4 -- The Languages
答案 0 :(得分:14)
我们在VB.Net上没有标准化,而且我经常要在VB.Net和C#之间来回走动。我很不寻常,因为我来自C / C ++背景,知道C#,但实际上更喜欢VB.Net(我非常不喜欢vb6 / vbscript)。
我说这一切都是因为记住VB6不是VB.Net很重要。这是一种全新的语言,IMO确实应该站在C#旁边。我真的很讨厌 vb6,但我几乎立刻就爱上了VB.Net。但是,VB.Net确实从VB6继承了一些东西,而不仅仅是语法风格。我说的是声誉,这不是完全应得的。但我也在谈论帮助创造声誉的开发人员基础。这似乎是你所经历的一部分。
考虑到这一点,看起来你主要是根据人气判断语言。并不是说这有什么不妥。对于更容易找到样本和社区支持的能力,有很多话要说。但至少我们称之为它是什么。如果这是你的衡量标准,那么VB.Net肯定有足够的支持使其可行,并且利用C#样本并不难。
此外,我们仍在使用.Net 2.0。对于2.0,我绝对更喜欢VB.Net。我更喜欢语法,我喜欢它在C#上做其他一些事情的方式。但我在家里玩Visual Studio 2008。在2008年,我真的更喜欢C#lambda表达式语法。
关于你的两个论点:
我想添加的内容:似乎最近的一些C#功能实际上是为了让C#更像VB。静态类填充vb模块的概念空间。 var
关键字使变量声明看起来更像VB的暗淡。即将推出的动态关键字将允许vb风格的后期绑定。甚至属性,你可以说是“添加”到c#for 1.0,是vb之前已经拥有的东西.Net。
答案 1 :(得分:11)
我确信大多数时候公司推出VB.NET的原因正如你所提到的那样 - 组织中的大量VB6,无论是代码库还是开发人员。请记住,ASP网站和VB6应用程序可以很容易地迁移到VB.NET。 VB6到C#是另一回事。
话虽如此,曾经使用过VB.NET的公司工作过,你的工作方式确实差别很小, 好奇的开发人员习惯于阅读例子,书籍等。在C#中。将C#代码转换为VB.NET并不是很难,特别是如果你不是复制粘贴的话。
答案 2 :(得分:11)
作为一名VB.NET开发人员,这里是我不喜欢的C#,我的经验来自于阅读C#,而不是写得太多:
1)无编辑并继续。我已经看到了编辑和继续是一件坏事的论点,它鼓励了糟糕的编码习惯。这让我想起25年前我的项目经理告诉我,我对当时先进的调试器的热爱是一个“拐杖”,它鼓励了糟糕的编程习惯。对不起,我当时没买,我现在不买。至少,优点胜过10:1的缺点。一旦C#获得此功能,您将会更加欣赏它,并且如果您不必再次编写代码,我将非常感激。
2)语言区分大小写。恕我直言,这是纯粹的邪恶。人们是否同意在同一范围内有两个变量只是按案例变化是不好的?如果是这样,为什么要允许呢?呸。
3)背景编译,因此错误的设计时反馈更好。混合的祝福,因为这会降低IDE的速度。但是在2008年,性能更好,可能节省时间。当然,这不是语言本身的因素,只是开发环境。
4)大括号{} {}。让我想起了我的LISP时代,你可以告诉其他程序员的LISP程序员:他们是那些用手指在屏幕上试图匹配parens的人。
我发现以下VB代码更易于阅读,并且不太可能包含错误。
If condition1 then
truestatement1
truestatement2
else
falsestatement1
falsetatement2
end if
If (condition1) then {
truestatement1;
truestatement2;
} //if (cond)
else
{
falsestatement1;
falsetatement2;
} //else (Condition)
所有那些缺少自动缩进的大括号只是乞求编译时或运行时错误。并且随着嵌套ifs变得复杂,大括号只会添加它。代替C#示例中的4个大括号,VB代码只有一个END IF语句,但C#程序员注释喜欢添加关于大括号是哪个块的可选注释终止。
VB代码是自我记录,输入较少 - 当您输入IF条件行时,IDE甚至会为您添加END IF。所以,最后,我错过了C#-aficionados声称的简洁/好处。 }
可能比End If
更简洁,但我建议整体结构不必要地复杂。
当然,这并不是什么大不了的事,但作为新手C#编码器,我觉得搞乱嵌套条件比使用VB要容易得多。
答案 3 :(得分:7)
要学会成为优秀的VB.NET程序员,你不需要从VB.NET资源中学习它从C#资源中学习是完全没问题的。如果你甚至无法将C#代码翻译成VB.NET,那么无论如何你都会遇到更大的问题。
由于你刚才所说的事情,几乎所有体面的+ VB.NET程序员都可以阅读并正确地编写C#,因为否则你无法轻易学习新内容。
最后,那些垃圾的人,不是垃圾,因为他们是VB.NET程序员,只是VB.NET很容易编码,这不是一件坏事!还有人说,这些人中的大多数来自经典ASP和VB6背景,这些都是真正的低门槛语言。一个星期后,任何体面的计算机用户都可以使用这些语言进但是大多数C#开发人员都来自Java和C / C ++背景。特别是Java方面有很多OO。毕竟特别是C不容易学习,大多数人要么在学校学习,要么在漫长的课程中学习,或者从一堆书中学习。
当谈到为什么公司使用VB.NET时,主要是因为遗留原因。另外一些从VB6跳过.NET 1.0的公司认为VB.NET将成为主要语言,经过几年的发展,这是一个很大的错误。
答案 4 :(得分:6)
不是寻找争论而是作为旧的VB.NET粉丝:
3。 With
语句,Handles
语句,Module
语句,XML文字,不区分大小写......
4。 My
命名空间,Microsoft.VisualBasic
命名空间,所有“糖涂层”
5。后期绑定支持和COM组件的互操作性
6。嗯......(指头交叉)可读性?
如上所述,我不是要争论,而且我是C#的忠实粉丝,但只是在公司中有VB6程序员可以在VB上进行标准化。
例如,如果您在C#中进行标准化,并且您的业务依赖于许多COM组件,那么COM互操作性很容易成为“显示阻塞”......
所提到的糖衣支持相当庞大(我一直都很想念它们编写C#代码)。我觉得VB.NET团队提供的工具支持比C#团队更多,而C#团队则专注于更多的语言功能。
答案 5 :(得分:5)
我目前正在与正在进行VB.NET标准化的客户合作。
正如您所提到的,主要原因是大多数员工拥有超过10年的经验使用VB和COM。他们觉得转向VB.NET是最有意义的职业道路,尽管他们很清楚他们现有的知识库很少能够在未来得到充分利用。
鉴于这一事实,他们还考虑转向C#,这实际上似乎是当今.NET平台上使用最多的语言。然而,鉴于他们为了开始使用.NET而必须学习的大量新知识,他们更喜欢使用熟悉的synthax语言。
在我看来,这证明了VB.NET的目的。这是为了帮助将世界上大量的VB开发人员带到.NET中,使他们能够使用“感觉”熟悉的语言。
此外,VB.NET内置的向后兼容层可以将用VB编写的现有(大型)应用程序一次一个地移植到新平台,同时保持它们运行。
答案 6 :(得分:5)
我必须继续使用VB.net的唯一论点是:
这是愚蠢的,创建一个区分大小写的语言后的第一件事是创建一个最佳实践“不要使用相同的变量名称和不同的案例”
我知道他们想要复制Java区分大小写,但实际上是一个愚蠢的决定。
答案 7 :(得分:4)
重点1:
好吧,我的商店是一个VB6的房子 - 支持很多的VB6代码,我们直接转向C#没有任何问题。我们确实需要考虑这个决定,但我100%(或更多)有信心我们做出了正确的选择。
重点2:
你会惊讶于我今天不需要这么多; -p
我没有反对 VB.NET - 我只是觉得C#让我更优雅地完成我的工作。
重新阅读书籍 - 我想知道是否还没有一批前VB6开发人员仍然在VS2008中编写VB6。切换到C#真的帮助我欣赏了新的(当时).NET架构。如果我转移到VB.NET,我认为我不会做出那种精神上的飞跃 - 至少在一段时间内。
答案 8 :(得分:4)
这不是问题,而是与问题的评论有关
阅读这些评论让我想起了70年代和80年代,当我读到人们使用任何高级编程与汇编时。与那些使用...... C!
等高级语言的人相比,汇编程序员具有“精英”地位然后它就变得很糟糕了,现在仍然是C#vs VB.NET。
有经验的程序员喜欢使用C#因为它简洁。所涉及的打字较少。我很少看到他们尝试扩展你必须做的打字量的新语言。 C#也不例外。
但是......这有问题。可维护性问题。语言越简洁就越难回溯5年,10年后再读你正在做的事情。这就是我使用VB.NET而不是C#或其他C风格语言的原因。在你成为一名VB程序员之前,我会在C ++中维护各种历史航天器的软件模拟。我广泛使用这两种风格。
现在它没有戏剧性的差异。但是,将经验丰富的程序员与他们最喜欢的语言结合起来,很多人都会怀疑Tyndall会出现这样的问题。
QuickBASC / PDS / Visual Basic系列语言继续为Microsoft销售,因为它们并不简洁。因为它们更具可读性。虽然这个功能对许多有经验的程序员没有吸引力,但它确实吸引了许多初学者。结合许多人对他们的工具发展的宗教依恋,他们在整个职业生涯中坚持使用它。此外,Visual BASIC有一个关于它的民粹主义光环,吸引了许多人。
像大多数具有民粹主义吸引力的事情被精英们所瞧不起。相反,它为语言提供了很多用户。所以它不太可能很快被微软削减。答案 9 :(得分:3)
我确信有更多的VB.NET开发人员购买书籍来学习C#,反之亦然。他们知道,如果他们转换,他们会得到更多尊重(合理与否)。
答案 10 :(得分:2)
Paul Vick,当时是VB.NET的语言架构师,于2008年写道。
我们的用户[VB开发人员]运行 来自正在接受的人 编程工具第一次来 行业资深人士建设大规模 商业应用。关键 设计一个吸引人的框架 Visual Basic开发人员将专注于 让他们完成工作 最小的麻烦和麻烦... A. 使用最小数量的框架 对于VB.NET来说,概念是一个好主意 开发人员]不是因为VB开发者 无法处理概念,但因为 不得不停下来思考 与任务无关的概念 手中断工作流程。的目标 一个Visual Basic开发人员通常是 不学习一些有趣的或 令人兴奋的新概念...但要获得 完成工作并继续前进。
来自。NET Framework Design Guidelines第2版第10页。
答案 11 :(得分:1)
是的,有更多C#书籍,C#社区更活跃,但同时两种语言都使用相同的框架,并且具有大部分相同的功能,这意味着VB.NET程序员可以拿起C#如果他知道C#语法(它接近许多其他语言的语法),那就预定并理解它没有问题。
在一天结束时,选择一种语言胜过另一种语言没有什么好处。由于你提到的原因,如果你的团队没有偏好,我会选择C#,但如果大多数来自VB6背景,我会发现选择VB语言没问题。
这就是我的组织中发生的事情。我们的大多数软件都是用VB6编写的,因此他们决定采用团队已经熟悉的语法,并且我没有遇到任何问题。
答案 12 :(得分:1)
我曾在一家拥有现有ASP / VB6代码库的小公司工作,该代码库由几个不同的开发人员构建,每个开发人员都有自己的“印章”。
像许多人一样,BASIC是我80年代早期的第一语言,但是我“毕业”到汇编(6502和x86),并且已经在许多语言中徘徊到我希望的C / C ++中的优势(我总是这样)有更多要学习)。我是一个“适合工作的正确工具”的人,所以我甚至学会了(并且学会了讨厌)VB,从3到6和VBScript。
我很容易拿起C#,当公司被购买时,我正在慢慢地将破旧的旧代码库转换为C#。 $ corporate_owner已经在VB.Net上进行了标准化。让我对VB感到疯狂的事情是其他人喜欢的一些东西,即所有语法糖(过多的冗长)。
在Jeff之前写过的“真实”程序员中也不喜欢VB。
总而言之,VB.net并不“酷”。然而,它确实有许多优点(语法糖,熟悉,易学);我知道至少有一所大学有VB.net课程作为他们所需的CS和CIS课程的一部分。
无论如何,由于它的易用性和相对简单的升级路径,我不认为它会很快消失。至少它不像过去那样受到脑损伤。
答案 13 :(得分:1)
我认为你会发现它不是语言而是使用它的人。 强迫这些人使用C#不会解决核心问题。
然而,如果你用C#编程,那么下次你雇用的时候你更有可能获得一个更好的程序员,如果他们有这个作为现有的技能。 (这并不是说没有好的VB.net程序员,因为我认识一些优秀的VB.Net程序员。甚至所有C#程序员都很棒。)
然而根据我的经验,较差的熟练程序员往往坚持使用VB和VB.Net,甚至不想看看C#或任何其他语言的外部VB / VB.Net
答案 14 :(得分:0)
我现在只是在.NET出现后,在维护现有的VB6代码数年之后才转向.NET。我相信我认为自己是VB6专家是合理的。我目前的雇主在VB.NET上标准化。
由于种种原因,我发现我有一些闲暇时间学习新语言。我正在使用一本包含所有代码的ASP.NET书籍,当我在VB中输入时,我正在阅读C#,因为我去了...有一些我见过的东西一种语言比另一种语言“更好”(一种主观的呼唤......),朝两个方向发展。
到目前为止,我的感觉是,当我完成这个过程时,我将能够回到过去。具有合理的舒适度。我当然不是不诚实的 - 如果我是的话,我会在这里吗?
答案 15 :(得分:0)
在我的工作场所,VB.NET是最近的标准,因为之前的几个开发人员来自经典的ASP背景并且熟悉VB语法。由于我们的开发团队已经成熟,并且我们采用了更复杂的设计方法(DDD,良好的OOD),因此自然转向使用C#。
在大多数情况下,我猜测使用VB.Net的商店是一个实用的选择,而不是技术选择。话虽这么说,VB.Net确实是一种比它的前辈更有能力的语言 - 它只是缺乏一些C#的优雅,而且你已经发现在网络上有更多与C#开发有关的资料。
答案 16 :(得分:0)
我认为它更多地与VB.NET和C#在他们开始时所吸引的潜在目标受众有关。
引擎盖下,它完全相同(主要是)但是.NET Winforms / Websites等...你可以在VB.NET中用C#做什么,反之亦然。所以问题在功能方面并不真正相关
完全主观意见,但我会说任何跳过VB.NET Bandwagon的人都会来自VB6 / Classic ASP的背景。然而,跳过C#潮流的能力扩展到了具有Java / C ++ /其他OO背景的人。
因此,从一开始,您就拥有了一个更大的社区,他们会接受C#,在这种语言下有更多的教育工作者/贡献者/开源项目是有意义的
答案 17 :(得分:0)
这里有很多好的答案,但我对原始问题的看法是,真正需要回答的不是人们坚持使用VB.NET,而是使C#.NET成为首选语言的原因。 NET书籍,样本和工具集?
我认为这里有三件事:
1。第一批进入C#.NET的人本质上很好奇 - 这就是为什么他们选择新语言而不是坚持一些有趣的东西。所以,是的,一开始确实让人变得更加好奇; D
2。 C#.NET是微软吸引Java程序员进入.NET世界的方式,而且效果非常好。 .NET中的许多最佳创意都是从Java移植过来的,因此首先将其移植到C#.NET中。他们进入主流后才最终进入VB.NET。 有关C#.NET如何被视为对Microsoft无法拥有自己的Java版本的反应的示例,请参阅this article。
对此的一个反应是:
“我不是MS程序员,但如果我是 曾经被迫从Java搬到那里,我 知道我不会完全迷失 现在他们有C#就没用了。“
3。 VB.NET程序员和任何其他程序员一样聪明和好奇,所以当他们看到一本C#.NET书籍处理他们觉得有趣的话题时,他们会购买并转换他们的内容。需要了解VB.NET - 或者甚至只是在他们的VB.NET项目中在一个单独的C#.NET DLL中实现它。
答案 18 :(得分:0)
听起来我觉得编程语言不是你公司的主要问题。如果我在贵公司工作,我会优先考虑让80%的人不知道OOD模式是什么样的。
好的代码是好的代码,无论是用C#还是VB.NET编写的。