重开一贴讨论VB过时的问题

threenewbee 2010-05-17 03:04:00
http://topic.csdn.net/u/20100510/20/25aa94d1-38d9-4a0a-b6ea-f5da8ae8e0d6.html 讨论的内容,我归纳下我的观点。

(0)

C# 在2.0时代就超越了Java。

我谈谈C# 4.0的一些特性,比如Lambda表达式,比如LINQ,比如动态类,比如类型自动推定,比如扩展方法等等,借鉴了Ruby、Python、VB等等语言的特性,已经不是C#最初的模样了。

再说说.NET,如果把.NET说成是一堆API的集合,这是初学者的观点。当然,你还可以用VB那样的方法来使用.NET,很多人不明白HTTP和HTML也能做Web开发,但是这些认识毕竟是肤浅的。在这里就不展开了。

Application Framework如同软件业的钢筋混凝土和预制板。这是公认的主流的开发技术。目前的主流语言/平台,无论C/C++、Java、.NET、PHP、Ruby还是什么,无一例外都是建立在面向对象的,经过设计的框架的基础之上。因为软件的质量和开发效率,以及更敏捷的发布的需要已经代替了仅仅简单将软件凑出来的基本要求。将软件做出来不是什么难事,但是仅仅做出来的小软件的价值已经大幅降低了。我们需要更复杂更丰富的软件。


(1)

我要指出.NET不是唯一的主流平台,但是VB却不再是主流了。VB6是因为淡出了主流开发工具的群体而“没落”的,VB.NET则是因为和C#重叠而面临边缘化的遭遇,其实这是两个问题。

为什么要强调“主流平台”,什么是主流开发平台。在现代的项目中,要解决的问题是在复杂的系统、繁复的功能以及无穷的需求中如何管理团队开发,控制成本、进度、质量,以及更好的整合现有的资源,比如Web服务,分布式的资源。对于前者,一方面要求软件必须采用经过设计的基础结构,也就是框架库,而不能随意搭建。为了确保精确实现功能、需求,采用诸如TDD这样的开发模式。据个例子,比如Scrum方法,将软件开发精确定量地管理起来,为用户需求排定优先级,将开发过程分成Sprint,比起粗放的管理方式大大保证了软件的进度可测,可控。当然,Scrum只是很多方法论的一种。在比如说,随着软件的复杂,可能每日构建就成为一个必不可少的任务,这些在新的开发工具里面也可以方便实现。

很多人开发管理系统给各行各业使用,可是自己的软件公司,却还在使用人工的方式管理。可以这么说Visual Studio从2005年开始,已经不仅仅是一个开发工具,而成为软件公司的企业管理系统。作为软件人,当你向你的客户推广计算机代替人工管理的优势的时候,有没有想过自己的公司也该升级管理模式了呢。

当然,VS不是唯一的项目管理系统,但是主流的企业越来越多地使用它或者类似的技术,这就是主流。虽然这超出了语言的优劣,但是明显越来越多的技术,在主流的平台/语言上才能获得更好的支持。为什么说程序员的寿命只有30岁。其实,从20岁工作开始,10年正好是一代技术的周期。如果把眼界放开阔,多了解新的技术,30岁以后可以做得更出色,因为对于更高层次的感悟,不是新人可以达到的。

旧的技术总要淘汰的。你不淘汰旧的技术,你就被淘汰。这就是很简单的道理。

(2)

我想到一个例子:从南京到武汉有2种火车可以选择,一种走沪汉蓉专线,是动车;另一种是走浙赣线,是普通快车,前者的票价比后者还便宜一些,可是却只要1/3的时间就能到达。原因就是后者绕路了。如果说新的火车提高了成本的话,那么缩短的线路则降低了成本。

很多人大学学过运筹学,就会明白,这个里面有个边际成本的考虑。新的技术的确意味着一些学习成本,但是随着时间的延伸,边际成本的优势就出来了。

我们要反思一个问题,为什么不是最聪明的人取得成功,为什么很多DOS时代的高手现在退出了历史的舞台。个人认为,其实技术越多未必越是好事。正因为我水平低,用VB做不了Windows服务,也做不了多线程,现在想来,可能我的愚笨却帮助了我。因为我可以用很简单的代码在C#里面做到这两点。学的越多,就一定在进步么?往往已有的知识却是前进道路上的阻力。这使得我在工作中取得了和VB6顶级高手一样的竞争力(甚至更高,因为需要的代码更少)。所以学习新技术的机会成本就很低。花同样的劲取得更大的收益。“但我却能用VB6写出简单的多线程程序及标准的系统服务程序”让我不但对你的技术羡慕,也觉得很可惜,也许你这样的高手,要是用这个智慧去研究新技术,那么可以做多少有价值的事情啊。

顶级高手用VB6实现了多线程和Win服务这些现在非常廉价的技术,更何况很多愚笨的人,他们用VB6能做出的东西更没有价值了。这恰恰说明绝大部分人应该学习主流开发技术。

(3)

和大家分享一下我在VS2010发布会上了解的VS2010新特性:
(1)Entity Framework
传统的程序,我们访问数据库,需要定义ado对象,编写sql,从recordset里面获得数据。。。
用EF,这一切都不需要了。

给大家看一个创建用户的代码片断:
public void CreateUser(string userName, string password, string email)
{
User u = new User() { username = userName, password = password };
dbEntities ent = new dbEntities();
ent.AddToTable_User(u);
ent.SaveChanges();
}
这个代码里面首先定义一个User,代表一个用户。赋给用户名、密码。然后添加到实体类里面,最后存入数据库。就这么简单,只有业务逻辑,没有数据库细节。

还不够简单?好,VS2010里面默认可以为每个表自动生成CURD(创建、修改、读取、删除)代码,也就是说如果只要这些基本功能,一行代码都不需要!
(2)TPL并行库
在VB6里面,要想写稳定的多线程程序,对于我这样的菜鸟,几乎是不可能的事情。.NET很早就支持了多线程,可是还是需要程序员定义线程、启动、运行……
看一个程序:
static void Main(string[] args)
{
int[] a = new int[200000000];
Parallel.For(0, 10, delegate(int j)
{
for (int i = 0; i <= 19999999; i++)
{
a[i + j * 10] = a[i + j * 10] / 2;
}
});
}
这个程序将一个200000000个元素的数组的值全部除以2。这在图像算法中很常用,比如将亮度降低一半。
很简单吧。

(3)C#动态。
在VB6里面,可以支持动态绑定,这在开发WebBrowser交互和VBA程序中很方便。但是现在VB6这个最后的强项也不存在了。C#可以实现完全一样的功能,而且做的更好。

(4)对Win7和新一代桌面程序的支持。实现99%的功能不用API。很多代码都是一两行。

(5)重构:(这个功能2005就有了)在VB里面如果代码编写的不如意,比如想调整下变量名,或者想把一个大的函数拆开来,明知这样更清爽,但是害怕改动以后出错而放弃,日久天长,代码就乱了。用重构以后,这些都是点一下鼠标的事情了。

(6)超爽的IDE。VB6的DE超级原始,不但连鼠标滚轮都不支持(需要插件),而且功能很弱:
- 着色不够,字符串没有着色,类也没有着色
- 自动提示只限于提示成员,VS2005开始,当你敲入第一个字母,就有提示
- 无法折叠代码,如果很多函数,看着很累
- VS2010支持自动选择同类关键字。比如选择一个变量,代码中所有使用的这个变量全部高亮起来
- VS2010支持代码无限级缩放,方便阅读
- VS2010支持多个桌面,多个显示器,支持任意分割屏幕,对于宽屏很有好处
- 还有很多说不出来的人性化改进,等用了VS以后,再用VB会发现很别扭。
...

(7)分布式通讯。依赖WCF,你只需要写一个简单的函数,就可以在远程调用,而不用关心通讯细节,比如socket,统统不要。

(8)测试:在VB6里面,最麻烦的就是出现了BUG,但是无法重现,在VS2010里面,可以对用户的操作做记录,然后保存为一个脚本,可以像播放器那样一步一步重现出来。更强大的是,因为对界面的操作都是脚本。所以编写完代码,不用手工去操作一下,看正常不正常,让电脑自己去操作就可以了。

(9)Web开发,VB6完全不支持。现在BS结构程序已经成为主流。
很多Web开发的改进就不进一步说了。

(10)编译器性能:.NET程序普遍比VB6快3~10倍。在支持多核心和多指令集以及64bit上,这个差距更明显。因为.NET可以在运行期间编译代码,所以可以产生特定指令集和对特定CPU优化的程序,而无需重新生成程序,这样使得.NET要比C++这样的本地编译器更快。

(11)团队开发:改变了软件企业的管理模式。原来的团队工作、沟通是粗放的,没有效率的。每天做什么开发人员不明确,进度如何,经理无法控制,BUG和测试,QA搞不清。面对纷繁的任务,程序员最大的困惑是从哪里下手。VS2010将这一切井井有条地管理起来。是的软件开发真正如同流水线一样。用户提出需求,架构师分解任务,程序员编码,测试人员测试,程序员修改,提交代码,完成。整个过程就像在流水线上装配零件。比如用户,可以不断提出需求,程序员可以按部就班编码,做完一个接着一个,效率大增。而系统自动产生的统计报告,每个人做了多少,系统成熟度多少,进度多少,一目了然。

(12)云计算、手机开发支持。云计算可以托管存储、软件服务、数据库和网站,按照使用量精确付费,对于小企业,这样成本更低。不用担心买的服务器少了不够业务增长,也不会因为买的服务器多了闲置浪费。至于WM7,效果绝对没得说。

(13)架构功能。VS2010可以方便地产生各种程序的图,如同一张地图一样,在庞大的系统中阅读代码相当方便。
比如顺序图,可以方便搞清楚函数的层层调用关系。在VB6里面,很多人做的事情就是找到一个不认识的函数,转到定义……重复很多次,就头晕了。在VS2010,会自动帮你画出层次,一目了然。系统模块调用图则不但可以看出模块依赖关系,还能看出依赖的紧密程度。现在的软件,OOP已经非常成熟。考虑下很多VB开发者的情况:代码交织复杂;多人开发任务无法分割;软件扩充除了在整个代码里面修改以外没有办法,无法插件化(只需要修改一部分就能增加功能)。后继开发者看不懂原来的代码,项目完全依赖高手个人的智慧和技巧,而不是标准化的方法,和一般技能的开发者(高手很难招,风险大)。系统严重混乱,无法维护。如果这样,说明你的系统架构该好好设计了。

最后说两句:很多人说的,VB6简单,易用,轻便,适合业余人士开发一些不太大的程序,这些我完全同意。各种语言都有利弊,VS的优势很多在别的主流开发技术中也有,这个我也同意。写这些的目的是因为,(1)很多现在和将要成为职业开发者的人,我觉得应该淘汰VB。(2)希望选择软件开发为方向的新人,以及新上马的项目,我觉得也应该避免VB。
...全文
762 81 打赏 收藏 转发到动态 举报
写回复
用AI写文章
81 条回复
切换为时间正序
请发表友善的回复…
发表回复
bihua520 2010-09-26
  • 打赏
  • 举报
回复
VB6和.net不能比,一个是桌面应用的经典,一个是web开发的领潮人。
只是现在流行web开发而已,楼主将其优劣映射到具体编程语言,那是一种浅见。

其实就两种技术的本质来说,是没什么进步的。而且感觉微软越来越江郎才尽,东西越做越大,但就是不再具有革命性。

希望大家不要沉醉在软件巨头们编织的梦里,到最后连简单的排序和查找算法都动都无法自己编写.

程序员,其实需要的只是一个记事本而已。
niaorenzaixian 2010-07-13
  • 打赏
  • 举报
回复
因为我是菜鸟所以也不用注重那么多。什么API 这个框架什么的。只需要开发小工具时候,很方便我玩玩即可。
C#真的很智能么?
niaorenzaixian 2010-07-13
  • 打赏
  • 举报
回复
做为一个新手来说。一开始说学VB的怕资源少 学习资料少。谁知道越老越多啊。 呵呵 VB资源相当丰富。 反观C# 讨论论坛少了点。至少没VB多。
虽然作为业余爱好学习编程。 但是VB也有不方便的地方。上面说到。本来菜单以及滚动条这些都 尤其是鼠标滚轴还要插件。真是讨厌啊。
很多人都说作为业余学VB就可以。但是感觉VS智能点,很多东西不用写了。直接用。而且VB里面对齐控件真的很讨厌。我也发现了。。。。

如果C#那么方便的话 学习学习也不错啊。哈哈。
lulianqi 2010-06-20
  • 打赏
  • 举报
回复
我也来顶一下
  • 打赏
  • 举报
回复
[Quote=引用 44 楼 jebeljebel 的回复:]
没有十全十美的语言,也没有十全十美的工具,不同的语言应用于不同的开发。无疑C++的软件开发者比较吃香,C语言的更是紧俏,汇编逆向工程的更是凤毛麟角。他们难所以也比较吃得开,但是有多好人学不了两个月就放弃了。即使这方面的行家里手,也不可能用汇编来做电子商务软件,每种语言都有它的使用范围,或者说更适合于开发什么样的产品;如果客户要求速度,无疑vb至少要比C#缩短一半的开发时间;每种软件和语言的都有它的……
[/Quote]

这才是职业开发者的观点。如果不能熟悉几种语言和开发工具,如果不能根据项目的情况选择适合的工具,也就没什么资格评论不同的语言和工具,因为你根本还认识不清楚。而一旦认识清楚之后,也就没有什么矛盾了,选择适合当前需求的就行了。

所以对于学习者来说,只要时间允许,都应该学,但又不能太盲目跟风导致浅尝辄止。
bcrun 2010-05-24
  • 打赏
  • 举报
回复
唉,RAD(快速应用开发)的概念,现在提的好像越来越少,VB6,DELPHI越来越势微..net或许也算是RAD,但不可否认的人,对于很多人,尤其是非职业开发人员开发一些小东西的需求,可能还远没VB6,DELPHI(这个要上万元一个太贵了,且没有中文版)实用.至于JAVA等一打开就是满屏CODE的开发方式,太多的人习惯不了,这也是大牛大师也没办法的事.
神马都能聊 2010-05-23
  • 打赏
  • 举报
回复
不讨论VB是否过时,没有太大意义。

C# 在2.0时代就超越了Java。
------------------------------------------------------------------------------
站在VS里看java也许会看到这样的结果,C#在3.5的时期内部都仅仅称其为过渡产品。几年前就听人说了现在的.net都是在为4.0做铺垫。

C#有多少平台、框架、与时俱进的书籍、人才、客户、源程序?
Java有多少平台、框架、与时俱进的书籍、人才、客户、源程序?

这几个关键因素哪个C#可以说比多java多?
liguicd 2010-05-23
  • 打赏
  • 举报
回复
现在考VB6养活自己。
myy168 2010-05-23
  • 打赏
  • 举报
回复
vb简单的开发工具...不老的开发工具...
threenewbee 2010-05-22
  • 打赏
  • 举报
回复
[Quote=引用 58 楼 bcrun 的回复:]
经验之谈,切忌轻类库和框架,只重语言.
[/Quote]
正是这样。
学习风 2010-05-21
  • 打赏
  • 举报
回复
呵呵,很热闹!让不懂得人了解了,让半懂得人明白了!
threenewbee 2010-05-20
  • 打赏
  • 举报
回复
[Quote=引用 63 楼 clear_zero 的回复:]
引用 51 楼 caozhy 的回复:

引用 45 楼 clear_zero 的回复:
另外不知道vs2010的license怎么发的?多少钱?

vs2003,vs2005,vs2008,vs2010
这个变化也太快了点,要是一直追得话开销太大了。

我现在在vs2008,如果要申请更新平台,预算也是很重要的。应该考虑进来

其实在国内,微软的潜规则是,开发工具半卖半送,赚……
[/Quote]
Microsoft在线商店的参考价格:http://store.microsoft.com/microsoft/Developer-Visual-Studio-MSDN/category/610
批量授权要便宜一点。。。
QQ342151559 2010-05-20
  • 打赏
  • 举报
回复
工具就是用来用的,能好用就行,但对于以后专门从事编程行业的人来说,接触新的技术,这是必要的。
对于那种只需要实现自己目地的。。
没有这么多要求
xjerp 2010-05-20
  • 打赏
  • 举报
回复
正学C#,希望没走错.
嗷嗷叫的老马 2010-05-20
  • 打赏
  • 举报
回复
啥语言能在项目中以最少的代价赚到钱就用啥语言.........
大熊猫侯佩 2010-05-20
  • 打赏
  • 举报
回复
不用废话太多,够用即可,over!
舉杯邀明月 2010-05-20
  • 打赏
  • 举报
回复
围观一下…………
对这些不作评论。
chinesetyq 2010-05-19
  • 打赏
  • 举报
回复
人的生命都在从有向无转化,何况vb6.0,一个不知关心自已的生命,却对一开发工具恋恋不忘,是聪明还是愚蠢?
dafu2003 2010-05-19
  • 打赏
  • 举报
回复
只要能用,就不过时。

其实大多数人都是想跟上新的开发工具的,但是微软换得也太快了,没法跟,因为代价太大,毕竟开发环境还是变化太大了,要重新达到熟练使用需要付出很多时间与精力,人都是有惰性的,刚学会、熟练使用一种工具,又要换新的,谁愿意?除非是从头开始的,可以跳过去。

老程序员大多数不愿意换的,原因在此。
clear_zero 2010-05-19
  • 打赏
  • 举报
回复
[Quote=引用 51 楼 caozhy 的回复:]

引用 45 楼 clear_zero 的回复:
另外不知道vs2010的license怎么发的?多少钱?

vs2003,vs2005,vs2008,vs2010
这个变化也太快了点,要是一直追得话开销太大了。

我现在在vs2008,如果要申请更新平台,预算也是很重要的。应该考虑进来

其实在国内,微软的潜规则是,开发工具半卖半送,赚Windows Server / SQL S……
[/Quote]
说了半天也没说多少钱啊,ms每几年这么折腾一下怎么受得了。
加载更多回复(61)
YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明

742

社区成员

发帖
与我相关
我的任务
社区描述
VB 版八卦、闲侃,联络感情地盘,禁广告帖、作业帖
社区管理员
  • 非技术类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧