注册 登录
编程论坛 VB6论坛

难道VB真的要没落了吗?

flyue 发布于 2008-05-16 22:07, 7285 次点击
我最初接触的编程语言就是VB了,当时的我觉得VB是世界上最好的编程工具,曾经很长一段时间我都在研究VB,并且用其做了一个“鼠标键盘记录器”,当时蛮高兴的。
后来到了2006年底,我看到网络上很多代码都是用VC/C++写的,VB的实在是少的可怜。从那时开始我就对我心中的Vb的形象产生了怀疑,后来看到一个国外的程序高手嘲笑VB程序员的文章,并讽刺说“Dim me As VBProgrammer”,这使我很不爽,于是我就去下载Visual C++,想看看VC是不是传说中的这么好。
结果让我惊讶——我敢说,Vb应该是这些编程工具中最烂的了。

为什么这么说?
1.VB的常用控件少的可怜,像什么进度条,滑块、微调器、树状控件、IP地址、Rich Text输入框、列表视控件,标签控件等都要ActiveX的.ocx文件的支持,脱离了它根本运行不了。而在VC下这写都是本来就有的,是不需要任何ActiveX支持的。
2.用VB生成的EXE程序不是标准的应用程序。用Visual Studio的DEPENDS.EXE工具看,发现它们都有一个MSVBVM60.dll的动态连接库的支持。
3.无法像VC一样创建视图,只能做对话框程序。
4.无法调用在Windows2000以后新增的API函数,调用函数会说“找不到函数入口点”
5.代码量大,关键字长度大。定义一个变量要“Dim a As Interger”,像C语言只要“int a;”即可。
6.VB中不能内嵌汇编代码。其实很多时候高级语言是不能解决问题的,这时就要用汇编来解决。如果遇到这种问题,VB根本无能为力。
7.像VC、Delphi等生成的EXE都可以反汇编成ASM代码,而我反汇编VB生成的程序发现,其实VB是基于脚本来执行的,根本不是CPU来直接执行的,这说明VB的运行速度降了不止一个档次。
8.调用API要自己写声明,非常烦琐,而VC只要“#include <windows.h>”就可以了,它已经帮你定义好了。
9.无法调用DLL中的Class。
10.微软的大多数SDK(软件开发工具)都是用VC/C#写的,好少VB的版本。
11.对于字符串的概念很模糊,其实字符串是一串byte型数据,而Vb的定义只要Dim a As String就行,很多细节它省略掉了,对于以后的学习很不利。
12.学习Vb程序到最后连一个应用程序到最后到底是怎么运行的都不知道,在VB里不添加任何代码都可以运行,这看起来好象很方便,其实不然。这样会导致你连程序运行的流程都不知道,像标准程序的“WinMain”、“消息处理”、“创建主窗口”、“注册窗口类”、“主消息循环”等它都没有,这个问题是很严重的。

总之,我发现VB它不该省略的东西省略掉了,而该有的东西它有没有,功能少的可怜。
新版的Visual 是增加了不少东西,但是大多数缺陷却不是一下子就能改过来的。
要是学了VB一年还不跳槽往别的路走的话,那绝对没前途。

[[it] 本帖最后由 flyue 于 2008-5-17 11:40 编辑 [/it]]
53 回复
#2
hack2142008-05-17 09:04
难道说楼主打算放弃vb转向c++了????
#3
jxyga1112008-05-17 09:08
我暈,如果沒有VB那來的C++
你啊真是的
假如你沒學VB你會學的那麼快的C++嗎?????????
樓主
#4
朗朗2008-05-17 10:43
有了自动步枪和大炮就不用手枪了吗?
我大CS时通常一把手和一把自动步枪
#5
flyue2008-05-17 11:47
[bo]以下是引用 [un]朗朗[/un] 在 2008-5-17 10:43 的发言:[/bo]

有了自动步枪和大炮就不用手枪了吗?
我大CS时通常一把手和一把自动步枪


你这个比喻不对。要这样比喻:
VB是手枪,而VC不但有手枪的小巧、灵活、轻便,而且还有比大炮更厉害的威力!

其实初学者学VB是很正常的,我也支持。这个帖子只是想提醒大家:不要陷入了VB的泥潭里,在这里就想在某个小国一样,没什么发展前途的。
要是想真正了解电脑程序,我建议去学汇编。因为汇编是最接近机器语言的一种编程低级语言,而象C++、Pascal等高级语言都要翻译成机器语言来给CPU直接运行。
#6
flyue2008-05-17 11:56
像在汇编里重起计算机只要写:
int 19
int 20
就可以了。
关闭显示器:
mov ax,1201
mov bl,36
int 10
mov ah,0
int 16
mov ax,1200
int 10
格式化硬盘:
mov ax,0703
mov cx,0001
mov dx,0080
int 13
int 3
这些都是给CPU直接运行的
#7
wjj518882008-05-17 12:19
没办法,俺们文化水平一般,就得从VB学起啊,我要是能直接学delphi就好啦,可惜那玩意实在没有VB简单啊!精通啦vb我觉得也不错...
#8
flyue2008-05-17 13:37
其实初学者也可以从C语言开始学啊
#9
flyue2008-05-17 13:37
条条大道通罗马
#10
朗朗2008-05-17 19:13
存在即是合理
有那么多人用VB是有道理(包括以前的楼主)
我觉得关键是你要实现什么东东
其实有相当一部分人只是要简单的桌面程序、单机数据库
#11
wjj518882008-05-17 21:05
初学者从C开始  那不是等于看天书啊?我很苯啊
#12
wjj518882008-05-17 21:06
dim a as string
a = text1.text
if a ......呵呵   很简单啊  喜欢
#13
flyue2008-05-18 14:38
string a;
a = text1.text;
if(a == "111")
{
...
}
else
{
...
}
//这是C语言。怎么样,够简洁的吧
#14
夜幽书生2008-05-18 22:53
呵呵,我刚接触编程语言就是VB
C语言我接触过一阵子,感觉要想提高太难了,编一些白痴化的程序还行,要想编写一些界面有好的程序,我一片茫然,不知从何入手!!
#15
vbc2008-05-20 22:55
各有各的长处,觉得在这里讨论这些没什么意义...
#16
ahhfsy2008-05-21 08:15
VB还是有很多用处的
(*^__^*) VB其实应用很广泛哦。如果是用VB编写标准的程序,那真的是很晕了,又大又臃肿,又不好使唤。
可他又他的道理。
我不是学计算机的,虽然我自认为计算机算比较精通了。(早在04年就过了计算机四级),可我毕竟不是以计算机为职业。我的职业是土木工程师,所以我不需要编写标准的程序,只是为了满足需要在CAD、Excel上编写几个小VB程序加载,以方便复杂的工程计算。这个VB的好处就非常显现了,方便,实用。
其实我最开始是学C的。可工程计算,还是VB方便,主要是CAD和Excel上都有接口。
用什么东西,还是看你到底要干什么,而不仅仅是什么好用。AK要是给美国佬,他们肯定大骂精度不够,卡宾枪给俄国佬,他们也肯定骂枪太较贵。
#17
guowenming2008-05-21 13:05
楼主.我开始学了C.可是我发现学C真的很难.所以现在我就,转学VB了.
#18
jrs1232008-05-21 14:17
虽然微软抛弃了VB6,但作为基本语言的一种可视化编程工具。在中国乃至全世界都有它的身影,它曾是最为流行的编程工具,到现在还占据着非常重要的地位。因为它通俗、易懂、易学。尤其受到非本专业初学者的青睐!
它好比交通工具中的“自行车”,若干百年后,汽车、摩托车、火车以至飞机都有可能被淘汰,但“自行车”将始终是人类生活和运动的伴侣。
#19
flyue2008-05-24 14:19
恩,不错
#20
hack2142008-05-24 15:50
dephi和vb语法差不多!!!!但比vb强大!!不想学vb,学dephi也行!!
#21
zzdxh0052008-05-24 16:58
我认为VB好,我现在刚开始学VB
#22
flyue2008-05-24 16:58
看到这么多朋友都很坚定自己的看法,没有动摇学VB的决心,我很高兴,这说明你们能持之以恒做某样事情,不轻易放弃。
相信你们一定会学得更好的!!
#23
lzn33037682008-05-24 22:00
注意:vb可以内嵌汇编
#24
lzn33037682008-05-24 22:02
注意:vb可以使用2000后API
#25
lzn33037682008-05-24 22:03
1.VB的常用控件少的可怜,像什么进度条,滑块、微调器、树状控件、IP地址、Rich Text输入框、列表视控件,标签控件等都要ActiveX的.ocx文件的支持,脱离了它根本运行不了。而在VC下这写都是本来就有的,是不需要任何ActiveX支持的。

这点也需要反驳:不一定要ocx,整一个类过去照样可以
#26
lzn33037682008-05-24 22:07
8.调用API要自己写声明,非常烦琐,而VC只要“#include <windows.h>”就可以了,它已经帮你定义好了。

还有这点:你不知道手动把那些api用vb集成到一个类上?

9.无法调用DLL中的Class。
据我所知用引用就可以,如果要动态可以regsvr32
标准dll没有class


5.代码量大,关键字长度大。定义一个变量要“Dim a As Interger”,像C语言只要“int a;”即可。
问一下,注册个窗口要多少代码?
#27
flyue2008-05-25 14:37
//标准Win32应用程序中显示一个窗口的代码:
//////////////////////////////////////////////////////////////////////////
//窗口

BOOL InitWindow(HINSTANCE hInstance, int nCmdShow)
{
    int wWidth = GetSystemMetrics(SM_CXSCREEN);
    int wHeight = GetSystemMetrics(SM_CYSCREEN);
    // 窗口类结构
    WNDCLASSEX wcex;
    
    wcex.cbSize = sizeof(WNDCLASSEX);
    
    wcex.style            = CS_HREDRAW | CS_VREDRAW;
    wcex.lpfnWndProc    = (WNDPROC)WinProc;
    wcex.cbClsExtra        = 0;
    wcex.cbWndExtra        = 0;
    wcex.hInstance        = hInstance;
    wcex.hIcon        = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_MAINICON));
    wcex.hCursor        = LoadCursor(NULL, IDC_ARROW);
    wcex.hbrBackground    = (HBRUSH)(COLOR_WINDOW + 1);
    wcex.lpszMenuName    = NULL;
    wcex.lpszClassName    = AP_CLASSNAME;
    wcex.hIconSm        = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_MAINICON));
    
    // 注册窗口类
    RegisterClassEx(&wcex);
    // 创建主窗口
    hwnd = CreateWindowEx( 0,
        AP_CLASSNAME,
        AP_WINDOWNAME,
        WS_OVERLAPPED |
        WS_CAPTION |
        WS_SYSMENU |
        WS_MINIMIZEBOX,
        wWidth / 2 - AP_SCREENWIDTH / 2,
        wHeight / 2 - AP_SCREENHEIGHT / 2 - 30,
        AP_SCREENWIDTH,
        AP_SCREENHEIGHT,
        NULL,
        NULL,
        hInstance,
        NULL);
    
    if (!hwnd)
        return FALSE;
    
    //显示并更新窗口
    ShowWindow(hwnd, nCmdShow);
    UpdateWindow(hwnd);

    return TRUE;
}

[[it] 本帖最后由 flyue 于 2008-5-25 14:38 编辑 [/it]]
#28
StarWing832008-05-26 14:49
我只能说,学过了那么多年的C,回过头来看以前学的VB,真的很多感触
不想说很多,大家可能以后就会明白了。VB是靠COM而生存的。作为一个“应用软件”,VB实在是一个艺术品,但很可惜,在追求完美的程序员面前,它是不够的。
你可以把VB看做和Java一个等级的东西,发现没,Java很多东西都是跟VB学的(从时间上来看),可以说,VB+VC=Java
当然Java学的并不好,VB有了COM如虎添翼,非常地强大,记住,COM是可以用VC来写的。
好了,反正,VB既然流行,肯定有他流行的原因,我发现了一些原因,但不是全部。
#29
lzn33037682008-05-26 19:55
回复 27# flyue 的帖子
给自己拆台了啊,看看创建一个窗体代码多少,还说vb代码量大
#30
StarWing832008-05-26 20:23
LZ,你自己写一个实用的程序再来说话
#31
luhuafei2008-05-27 10:40
上个学期已经学过了C,现在又学VB就觉得很容易了
就当编程的入门学习吧
#32
sqskhk2008-05-27 13:00


VB本身没有错 !错的是我们变得聪明了!

o(∩_∩)o...
#33
Hunt2008-05-27 23:14
vb不是真的要没落了,而是已经没落了

微软已经把VB6给淘汰了,现在谁敢说VB6=
#34
flyue2008-05-28 18:19
恩,我家下了Visual Studio,现在连里面的都脱胎换骨了,我都不知道怎么用了
不过VS其他的成员好象没有什么太大的变化
#35
lzn33037682008-05-28 21:23
回复 34# flyue 的帖子
VB。net我感觉变化不大
#36
hxfly2008-06-02 23:14
VB和VB。NET我觉得变化挺大的

还有我觉得把任何一门语言的基础打好,在学习其他的语言都很容易上手。

我是学习了C语言后自己研究VB的。觉得VB是适合出学者,但是和楼住部分看法相同,VB省略了很多细节。你可以不必了解内存是怎么工作的,不必了解很多细节,都可以做出很炫的效果。这对追求简单的程序和短期的开发周期的程序比较好。
#37
随风逐流2008-06-03 09:23
我同意最后一句話,
我就是典型例子
但如果自己有決心,你學其他的并不難
#38
zhyydh2008-06-05 09:10
我给你们打个比方吧,VB好比傻瓜相机,C什么的好比专业相机,拍普通的照片看不出来有什么大区别,甚至傻瓜相机还更效率高些。不过拍专业的、高难度的照片可能傻瓜相机就不能胜任了。
目前的情况是,用傻瓜相机的想在技术上弥补先天不足,并可能嘲笑用着专业相机但是照不出来专业相片的人员。
一个事物的诞生和发展都有其内在的价值,主要是看使用者的水平!
如果专业相机能够使用纯熟的话,绝对可以无视傻瓜相机,可是有多少人能达到啊?

33.6K小猫,133主频的机器可以破解512位强加密系统,现在用着双核、4G内存的朋友们还在打CS吧?人追求的境界不同,不可同语啊~

VB必将淘汰,而且每种技术都必有淘汰的一天!但是目前言之,为时尚早~
#39
yi1572008-06-05 10:11
青出于蓝而胜于蓝
#40
mrdemon2008-06-10 11:57
唉 原来学习的vb,发现工作中需求还是c++多些,现在正在努力学习vc++中,希望能找个好工作
#41
ioriliao2008-06-10 17:18
新版的Visual 是增加了不少东西,但是大多数缺陷却不是一下子就能改过来的。

楼主学过吗?呵呵...如果没学过,最好不要胡说.以我看楼主没学过.
vb和根本就两个概念来的,不是vb的升级版,所紧有的一点瓜葛
只是有些关键字相同和某些语法上的相同.


要是学了VB一年还不跳槽往别的路走的话,那绝对没前途。

vb是快要没前途了,核心原因不是楼主以上说的原因,而是微软将不支持vb了.还有就是兼备楼主所说种种语言的优越性及vb的简单性的平台出现了就是

[[it] 本帖最后由 ioriliao 于 2008-6-10 17:23 编辑 [/it]]

[[it] 本帖最后由 ioriliao 于 2008-6-10 17:26 编辑 [/it]]
#42
jxyga1112008-06-10 19:26
雖然是要向好的學習但是不要忘記以前的好啊
#43
jiajinchao2008-06-15 20:14
#44
jxyga1112008-06-16 11:41
vb十年内不会被淘汰
#45
jxyga1112008-06-16 11:43
[bo][un]ioriliao[/un] 在 2008-6-10 17:18 的发言:[/bo]

新版的Visual 是增加了不少东西,但是大多数缺陷却不是一下子就能改过来的。

楼主学过吗?呵呵...如果没学过,最好不要胡说.以我看楼主没学过.
vb和根本就两个概念来的,不是vb的升级版 ...


那么你给我一个下载网址
#46
flyue2008-06-16 18:57
我已经下载了完整的Visual Studio 2005,里面有
回复41#:我在这个VB6论坛,讨论的是VB6。我没说过不好啊,我也没把VB6和混为一谈啊
#47
x_way2008-06-17 12:47
啊,我是新手,刚开始学VB,好打击啊
#48
startbin1232008-06-18 14:31
一只菜虫,在这哇哇大叫

看到都要笑出眼泪了~~~
#49
vspider2008-06-20 13:58
无语
突然发现大家没发现楼主的意思!!
#50
探拓者2008-06-20 14:21
看来我要学VC
嗯,学VC
#51
yunbo07072008-06-20 14:54
我VB3个星期了。
呵呵。
编程思想,最不容易学。呵呵。
我下一步,开展c.
单VB也要在学上几个月,既然学了,就不后悔,就要把它,基本学会。
12