郭安定的博客

每种哺乳类的生命里, 偶尔都会下点小雨...
随笔 - 17, 文章 - 0, 评论 - 175, 引用 - 0
数据加载中……

选择 VB.NET 还是 C# ?

这个话题已经被争论很久了, 从国外到国内, 从学校到企业. 当然市场没有限制我们只能选择一种语言, 所以我们可以学学这个, 同时也学学那个, 但如果你想我给出一个单一答案: 我会选择 能让我赚最多钱(或者保守点说, 能够保证我继续活着)” 的语言.

不要误解这句话的意思, 它真正的意思是重视实际, 有些东西当它成为真正的理想时, 很可能我们已经不再使用它了. 人的生命是有限的, 而世界是不断变化的, 任何东西都有可能诞生, 也有可能消失, 关键是我们的生命和哪些段落重迭了.

例如: 我们想象某种语言在地球表面上消失了, 最后只会在某个部落里被少数人理解, 但那时很可能我们也不在地球上了, 何必担心那样的未来, 那是你儿子跟孙子的事情.

现在我们来回答两个问题, 当我使用Visual Studio Tools for Office的时候, 我应该使用VB.NET还是C#?

我建议你使用VB.NET, 因为有两个事实值得我们注意:

Office使用VBA, 至少到Office 12我们还是会看到它的存在, 你会认为Visual Studio的装机量已经超过了Office的装机量吗? 选择VB.NET可以让你很容易延续VBA的一些习惯, 概念和想法, 尽管VB.NETVBA有些差距, 但这个差距不会大过C#VBA的差距, C#的人口再多, 绝对不会大过于Office的用户, 你知道VBA的用户有多少人吗? 答案至少是VB程序员的九倍, 你们公司的前台小姐很可能终其一生不会想要学习C#, 你能想象她会在玩接龙的机器上, 装一套Visual Studio Team System?

第二个问题, 当我安装Visual Studio Tools for Office, 我应该选择安装VB.NET还是C#?

答案是除了VB.NET同时也安装C#, 你或许会很奇怪, 既然我不再将精力花在C#, 那么为什么还要在机器上安装C#, 答案只有一个, 你不能只是活在过去. 安装这种语言可以让你有环境条件参考由C#写出来的程序, 你可以参考运行后的效果, 但还是使用VB去实现类似的效果.

posted on 2006-02-16 00:30 郭安定 阅读(3376) 评论(30)  编辑 收藏 所属分类: 01 代码 ★ 学习

评论

#1楼    回复  引用  查看    

...dotnet的出现填补了只能用一种语言进行开发的缺陷,我的项目中都是vb和c#混杂的,两种语言各有各的优势,取长补短能够让项目更加灵活强壮,习惯不同语言的程序员间也不必争吵了,而且经过几个项目,他们会对另一种语言也有所熟悉和了解,在阅读和编写简单代码上是不存在问题的.
2006-02-16 07:46 | 补丁      

#2楼    回复  引用  查看    

我虽然是个VB Guy但是我工作中大部分程序都是C#的——因为其他人对VB的了解程度太低。但是只有一个例外,就是一个用Visual Studio Tools for Office开发的Excel程序。根本没有选择C#的理由,使用C#操纵Office总是被迫写更多、更难看懂的代码,而且有些根本不能容易地做到(比如设置Range中的行高)。楼主说得太对了,Office就应该用VB开发,你会发现少很多很多自虐。

此外VS.NET的宏以及SQL Server 2005 SSIS中的数据过滤脚本也只能用VB.NET来写。。。
2006-02-16 07:55 | 装配脑袋      

#3楼    回复  引用  查看    

呵呵,桉主的观点是对的。
然而有一些从C++过来的人就是看不起VB,所以我们公司的人都只能用C#(经理是VC++起家的)
然而我觉得用什么语言真的不重要,正如楼主说的,为了“活下去”,为了活下去,我认真的学C++,从没有放弃过。而又不得不用VB写一些代码,还有JS代码,还有AS代码,而现在又写C#代码。
我并不否认,也许什么时候又得写VB.net代码了。这无所谓,因为我知道不管是用什么语言写代码,只要有基本的语法,有帮助,就可以实现我的想法了。
所以,我还收集了PHP的语法书等。。。。。。说实在的,这样做也很累的。。。。
还有,在什么工具里只能用什么语言,都只是现状。如果Office里有C#的解释引擎,那么一样可以用C#了,就看MS什么时候这样做了。
MS对.net这样的痴情,而且还给出新的语言C#,想必所有的MS工具都会支持C#的。
至于VB为什么会先支持,是因为以前还没有C#。想当初VB不也是MS的宠儿吗?
2006-02-16 08:58 | Wu.Country@侠缘      

#4楼    回复  引用  查看    

楼主说得太对了,Office就应该用VB开发,你会发现少很多很多自虐。
=============

正常点是吧,去问问MS,Office是用VB写的么?

学C#不是仅仅为什么赚钱问题,学C#日后再转java或C++都不会有VB.net转向他们困难。
2006-02-16 09:02 | HD      

#5楼    回复  引用  查看    

还是那句老的不能再老的话:语言不重要,重要的是编程思想。
有时候对一个项目而言,技术实现不重要,重要的是商务流程。
2006-02-16 09:19 | [天道酬勤]      

#6楼    回复  引用  查看    

那可不一定,脱离了.net平台,转什么都会有些吃力的。反到是,在.net平台下,用什么语言都不打紧。
所以我还是支持楼主的观点,一切为了生存,为了发展。
哪天MS不再强大了,什么时候再出现一个X#,而且全球通用,且唯一(开个玩笑)。我看你用不用,学不用。要不就不当程序员了。
当然,哪个赚钱哪个不赚钱也不是一概而论的。
2006-02-16 09:24 | Wu.Country@侠缘      

#7楼    回复  引用    

我以前很喜欢vb.net现在转到C#来了,不为什么就是
因为vb.net看起来太罗索,看了让我头晕,没有C#简洁。用C#我思路也开扩了许多;
当然有些人就不头晕,喜欢看vb.net代码。所以我的结论是因人而异。
不过ms宣传的C#具有C++的行动力,想用C++具有强大的功能,有很好的口碑,应用领域多的光环来照亮自已,在这一点上大家不要上当。
2006-02-16 09:28 | ff [未注册用户]

#8楼    回复  引用  查看    

@HD
笑话,语言转换只不过是一个星期的自学或者几天的培训。平台的转移从来都不以语法为障碍。在Office开发中,你花一个下午学下VB.NET然后再开始编,比你自持自信无比的使用C#然后用催眠法安慰自己遇到那些别扭用法和细节问题的糟糕心情强多了。

PS. Office也不是C#开发的。MS里有项目是VB开发的,而且非常庞大,不要觉得连MS自己都不自信。
2006-02-16 09:42 | 装配脑袋      

#9楼    回复  引用    

我喜欢C#,就是因为可以少打点代码,看起来干净
2006-02-16 10:14 | dali [未注册用户]

#10楼    回复  引用    

vb 团队不行啊,在我看来,自vb5后,vb就没有拿出一点新东西。目前这种状态也是自然的,谁叫vb 总是落后c#半拍呢,vb9推了两个版本,还是没有跟上c#的特性
2006-02-16 10:44 | jjx [未注册用户]

#11楼    回复  引用    

举个例子,由于是用reflector看的代码,可能有误
vb 9和c# 3都会把select 部分编译成闭包,根据是否使用了当前过程的本地变量,分成编译成方法和内部类
vb9
dim s=select c.name from c in softwares

C# 3.0
var s=from c i softwares select c.name

这个select c.name ,vb 9编译成类似以下代码(
<DebuggerNonUserCode> _
PrivateScope Function _xxxxxxxxxxxxxxxxxxxxxxx(ByVal c As Software) As String
Return c.Name
End Function


PrivateScope这个大概是反编译问题吧,就把它理解为内部使用的私有方法吧,c# 3.0编译成一个私有静态方法

继续
vb9
dim version as string="6.0"

dim s=select c.name+version from c in softwares

C# 3.0
String version ="6.0"
var s=from c i softwares select c.name+version

vb9 编译成一个public 的内部类,而c# 3.0 编译成一个private sealed 的内部类

当然,这些在正式版中应该会调整,但从小处着眼,由此可见一般啊
2006-02-16 11:17 | jjx [未注册用户]

#12楼    回复  引用  查看    

@jjx
C# 3完全不支持XML后期绑定、XML字面量和动态标识符,你应该看在工作量上比较。VB把精力放在调整lambda的实现还是最近几个月的事
2006-02-16 13:14 | 装配脑袋      

#13楼    回复  引用  查看    

@jjx
而且我觉得你提到这些都是小事,不妨碍工作。真正VB有缺陷的地方我心里清楚得很。但是VB9目前来看仍然是非常创新的,没有跟在C# 3后面,比如动态Interface结合泛型,达成的设计是C#无法想象的。
2006-02-16 13:20 | 装配脑袋      

#14楼    回复  引用    

希望vb团队能加油了,你blog上的嵌套函数,是否真的会在vb9中引入呢。希望不会跳票吧
2006-02-16 13:59 | jjx [未注册用户]

#15楼    回复  引用  查看    

@jjx
现在提到还太早,连VB的总设计师都说“期待”而不是“承诺”嵌套函数的出现
2006-02-16 15:01 | 装配脑袋      

#16楼    回复  引用  查看    

@装配脑袋

同意您的说法。不过我认为有了.Net Frame后,就多了一些开发语言的选择,看每个人切入项目的角度。
2006-02-18 18:03 | 朱亦文      

#17楼    回复  引用  查看    

VB 9在Vs.net 2005正式版迁就发布了技术预览版了。VB 9的功能实在游人,起码让人写程序轻松多了,很少代码就能达到不可想象的作用
2006-02-24 12:29 | U2U      

#18楼    回复  引用  查看    

微软拿C#跟java竞争的,当然要比vb快半拍觉得。。。
2006-02-25 10:32 | 天寒      

#19楼 [楼主]   回复  引用  查看    

@装配脑袋

哈哈哈, Ninputer 真可爱, 你可以来参加 Office 专业开发团队哦...

Office 开发的世界是很博大的
2006-02-26 05:42 | 爱我趁现在      

#20楼    回复  引用    

“你能想象她会在玩接龙的机器上, 装一套Visual Studio Team System吗?”
不明白你说这句话的意思?前台小姐和MS.NET有什么关系?

我认为要学C#,因为它能让你更轻松的接触Java和Javascript,现在大部分的流行语言都是类似Java和C++语法,各大项目网站的VB.NET项目远少于C#项目。

我用过VB也用过C#,认为C#语法最清晰明了。
2006-03-29 14:00 | 毛松 [未注册用户]

#21楼 [楼主]   回复  引用  查看    

@毛松

Office 内嵌了一个 VBA 的环境, 所以前台小姐只要按下 Alt+F11 就可以很容易的进入到一个能自动化操作的环境, .NET 不是内嵌到 Office 里面的, 即使是 VSTA, 大多数前台小姐不会像专业的你那样跟技术跟的那么紧

我认同你对 C# 的部份评论, 没有贬低 C# 的意思, 不要误会了

但我提的是指 Office 开发, 所以这是两件事情
2006-04-02 16:26 | 郭安定      

#22楼    回复  引用  查看    

用什么样的语言,一定要是自己拿手的。C也好,VB也好,自己习惯就好了,能解决问题就好。
但不要迷信一种语言。像郭老师一样,我在装VS.net的时候同时选择了vb.net和C#。因为大量的示例,源代码是以C#出现。你必须了解它们。幸运的是,MS把这两种语言弄相似度越来越高。 懂VB.net的,有点C++的基本语法知道,C#就能看懂大半。
所以我觉得,在熟练掌握一两种语言的基础上,多了解些其它语言才能更从容的面对各种需求。
2006-04-15 05:37 | AndyDavis      

#23楼    回复  引用  查看    

语言始终是工具~~

就好比一个合格的车工。不论用锉,用手摇车床,用自动车床,或者干脆用键盘录入数据,由计算机控制车床完成工作~~~都是可以的~~

如果始终要讨论语言之间的差别~~无异于讨论A牌子X型号的车床到底比B牌子Y型号的车床好在哪里~~或许个有优劣~~但是够用就好~~~

回到郭老师的文章来。

Office已经有VBA这个好用的,够用的“车床”。何必为了语言“神圣”主义而非要在Office再加一个C#A呢?

就我个人的体会,在Office里开发,包括调用相关COM开发。有个最偷懒的方法就是在Office里录制宏然后修改得之。当然得到的代码是VBA的。VB.NET天生与VBA的亲和度远超过了C#。

我可以教会前台小姐如何录制宏来避免一些经常重复的繁琐操作。但我或许永远无法教会他们如何用C#写出一套优美的程序来自动完成哪些操作。
2006-04-15 12:14 | mikespook      

#24楼    回复  引用    

学什么不重要,重要的是实现功能。

请大家回答一个问题: 您在2000年以前是否写过Dll? 为什么写Dll?

不知道你的答案是什么,我是写过的,是为了在其他程序中调用。 现在情形就像是十年前,只不过写程序的工具变成了 C# 和VB.net. 每个人的工作环境和需求不同,所以所用的工具也不同。 好像我到现在还要对COM (RS232) 口编程操作并在Access 2003中调用。 我的工具就是VC++和VB/VBA. 为什么不用vs.net? 因为安装太麻烦,系统软件/硬件要求太高。 我们公司好多在用的电脑还是windows 95/98 奔腾,或奔II的。

如果VBA 在 Office 2007中还存在的话,我有理由相信,VB.net / C# 的日子在三年内还不会来到。

PS: 请问一下有谁是从VB.net 2000 就开始学的, 您的感受到现在是如何的?



2006-06-04 20:07 | Luke Yang [未注册用户]

#25楼    回复  引用    

各有各的优点!主要是你现在开发的东西,哪种来得简例易行,而且交互性好,稳定性高,维护性等!
我现在主要是用VB,因为OFFICE里用VBA解决事情是非常方便的一件事情。当然不要忽略了OFFICE本身的功能。如EXCEL的函数等!
2006-07-29 08:24 | yigepeure [未注册用户]

#26楼    回复  引用    

说实话,这个问题一直困扰着我,我以前学过c、c++(当然只是毛皮),但是大三我们学asp.net用的是vb,所以就一直用vb了,其实心里还是比较倾向c#的,原因就是wrox教程里说c#要强于vb的,周围的同学有好多看不起vb,认为学vb的丢人,我很是郁闷,听了大家的发言,我也了解不少,但我想听听对这方面的行情比较了解的人帮忙解析一下:vb比起c#前景如何?现在找工作之类vb能吃的开么?(听说有不少公司要求员工必须用c#开发程序)谢谢
2006-08-17 13:49 | FireC [未注册用户]

#27楼    回复  引用    

现在找工作C#比VB.Net容易得多(国内,国外就说美国,VB.Net远比C#比例大),但很明显可以预测,在未来5年内则相反,VB.Net只会越来越人性化、越来越强大,动态编译注定未来的一切!
2006-11-24 15:44 | timer[匿名] [未注册用户]

#28楼    回复  引用    

我都是用VB写的,可是现在发现有好人都在用C#!有时候想想这两种语言其时都差不多!要是现实一点我还是决定以后转到C#上面去!好多公司现在都要要求用C#!没办法,为了生存只有这样了!~
2006-11-24 16:31 | SkyLight [未注册用户]

#29楼    回复  引用    

@HD
别问"Office是不是用VB开发的"这种傻话,人家说的是OFFICE的二次开发,面向实际应用的开发.
VB的编译器当然不是用VB开发的,Java的JIT也不是用Java来写的,C#是用C#写的吗?除了Lisp,我还不知道有哪种高级语言能用自己写出自己的编译器来
2006-12-05 23:41 | doocoo [未注册用户]

#30楼    回复  引用    

学过编译原理的应该能理解,无论basic还是pascal都比c的语法清晰很多,而c以灵活著称
2008-05-29 11:59 | Hzj_jie [未注册用户]

标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2006-07-25 19:37 编辑过