海边沫沫

相濡以沫,不如相忘于江湖
posts - 9, comments - 113, trackbacks - 0, articles - 0
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理
前一段时间我还写道:“微软的东西搞着搞着就会心烦,我关注的是更具一般性的东西。”然而,这次微软一推出Visual Studio 2008,我还是屁颠屁颠地跑去下载,这是典型的自己扇自己耳光了。扇就扇吧,新东西还是要体验一下的。不过这新东西一出,总是搞得人心里乱乱的。

首先是一个学习的问题,旧的东西还没用好就又要学新的东西,前面有人领跑,我们就在后面追,跑得气喘吁吁却越落越远,感觉脑袋越来越不够用了。我常想,长期这样下去,会不会把人折磨成神经病。其次就是一个阵营选择的问题,每次一有新的东西出来,我们都要斟酌一次究竟哪个阵营的产品效率更高、使用更方便、学习更简单。这次也一样,又要去考虑是选择Java还是.net,是选择JavaFX还是WPF/E,是选择MFC还是Qt、wxWidgets或者其它的?头疼啊!

后来我又想了一下,要想不这么累,也不是完全没有办法。办法就是认准目标、勇往直前,不要管外面吹的什么东南西北风。有些时候,我发现越是无知,活得越是轻松。比如说,我要解决桌面编程的问题,那还是选择MFC好了,也不要管外面说什么MFC封装得不好,也不要管外面说MFC不能够跨平台,也不要管MFC写出来的程序外观丑陋、是一个模子里面印出来的。同理,使用Qt、wxWidgets的高手们,也没有必要转到MFC这里来。还有一个Java阵营的SWT/JFace,我也稍微花时间学习了一下,在条件允许的时候,也不是不可以用它来开发桌面程序,而且它的界面更加能够给长期见惯Windows默认界面的用户带来一定的新意。另外一个要解决的是Web开发的问题,我想我还是继续选择Java吧,也不要管外面说什么ASP.net怎么怎么好、C#怎么怎么优雅、ADO.net怎么怎么强大,总之,要想自己不把自己逼疯,就一定不能够见异思迁,Java你都搞通了吗?MVC、IOC、AOP、SOA你都搞通了吗?JSF、JavaFX都用好了吗?还有那么多的中间件、应用服务器,你都弄通了吗?当然,在ASP.net方面有深厚造诣的高手们,就继续深造下去吧。

还有一个问题,那就是WPF和SilverLight,在它们刚出现的时候,我没有动,是因为懒得在Visual Studio 2005中安这个扩展那个扩展,麻烦。现在Visual Studio 2008和.net Framework 3.5来了,只需要一次就可以一步安装到位了,我应该激动吗?我激动过,因为我早就明白AJAX是不足的,需要有SilverLight来改善浏览器应用程序的用户体验。但是很快,这股激情就被磨灭了,因为《程序员》上的一篇文章说使用XML定义界面,解析器实现起来简单,但是让程序员自己编写XML就太不人道了,而JavaFX使用专用的界面定义语言,则要优雅得多。我也知道有些人将XAML翻译成“折磨”。《程序员》上又有一篇文章说Visual Studio 2008对Vista外观的支持并不是它的重点。那么,对WPF,我还有什么值得激动的呢?

因此,对于桌面应用,我选择Visual C++ 2008 和 MFC,看中的是Native;对于Web应用,我选择Java,看中的是Java社区丰富的开源软件,虽然我从未对开源社区做任何贡献,但是有好的开源软件,我还是要用的,也懒得再在.net上再多花一倍的学习时间;对于浏览器中的富客户端应用,那还是等JavaFX吧。

我下载了Visual Studio 2008,不过是Express版,因为不想下载90天试用版,免得90天后用不了了又要重新安装。Express版还是给我带来了一些失望:Visual C++ 2008 Express竟然不包含MFC,太过分了。虽然Visual C# 2008 Express对WPF支持非常好,但是刚才的分析已经说了,我对WPF已经不感冒了。

在Visual C++ Express 2008中,还有一个我关注的问题这里也提一下,那就是它没有走在C++ 0x标准的前面,它没有包含tr1标准库,它的hash_map、hash_set依然没有更名为unordered_map、unordered_set。与此对应的是,GCC 4.2版已经包含了大部分的tr1库,看来,在C++ 0x标准推出之后,GCC在标准的方面可能要比VC++领先一步吧。

Visual C++ 2008提供了for each语法,那是要关注一下的,网上有人猜测VC++ 2008提供for each语法是为了能更好的和.net一起工作,MSDN中对for each的示例也是用的CLI。那么,在Native代码中能使用for each吗?结果是能的,下面是我的测试代码:
#include <vector>
#include 
<string>
#include 
<iostream>


int main()
{
    std::vector
<std::string> v_s;
    v_s.push_back(
"abc");
    v_s.push_back(
"def");
    v_s.push_back(
"bcdefg");
    
for each(std::string s in v_s){
        std::cout 
<< s << std::endl;
    }

    
return 0;
}

它可以正常工作。只是我把for each(std::string s in v_s)修改为for each(std::string & s in v_s)之后,编译通不过了。我有点想不明白,为什么不能用引用呢?把对象放到容器中要发生一次复制操作,难道遍历容器中的元素也要发生一次复制操作吗?这很显然不爽。

好了,就写到这了。Visual Studio2008 Express我下载后时间还短,再加上看问题的水平也很有限。错误的地方,欢迎大家指正。

Feedback

# re: Visual Studio 2008推出后,我的一些感想  回复  更多评论   

2007-11-23 12:54 by 梦在天涯
哈哈,其实作为microsoft技术的programmer,我们是没有办法不去跟着他不停的学啊学啊,但是我觉的如果你不是microsot的用户,如果你一直用的是java,那么尽可不必来参这个洪水,不用关microsoft的silverlight,还是wpf什么东东的!

精通一门技术足够了!

# re: Visual Studio 2008推出后,我的一些感想  回复  更多评论   

2007-11-23 12:56 by 梦在天涯
大家有没有下载vs2008正式版,和office2007快点的地址啊,从msdn上下太慢了,要下到牛年马月啊,希望知道的共享一下啊!

超级感谢先!

# re: Visual Studio 2008推出后,我的一些感想[未登录]  回复  更多评论   

2007-11-23 14:27 by alantop
有呀 bt和emule的都有地址是

http://www.cppblog.com/alantop/archive/2007/11/22/vs2008.html

# re: Visual Studio 2008推出后,我的一些感想  回复  更多评论   

2007-11-23 16:41 by 补考少年
楼主的知识很广博啊,精彩。

# re: Visual Studio 2008推出后,我的一些感想[未登录]  回复  更多评论   

2007-11-25 01:54 by heroboy
for each(const std::string & s in v_s)

# re: Visual Studio 2008推出后,我的一些感想  回复  更多评论   

2007-11-25 17:50 by 刀剑如梦
手上已经拿到VS2008的TS架构师和pro的正式版
感觉VC9跟VC8变化不大,编译器确实更强悍了,智能提示支持还是很差,VA看来还是得装。:(
个人以为,如非和.net混编,显然不会用for each这种非标准的关键词。

.net方面确实强大,强大到过分。
我在.net上面已经有超过5年的使用经验,不能算短了吧,水平再差,烂船也有3000钉吧,现在看看框架3.5、WPF,居然产生了厌恶的感觉。。。软件使用体验固然重要,但总不至于舍本逐末去追求一个炫丽的界面就不顾一切。不是工作需要,压根不想去看!

# re: Visual Studio 2008推出后,我的一些感想[未登录]  回复  更多评论   

2007-11-25 18:07 by missdeer
我还在用2003的说~~不过今天早上刚从eMule上下完2008的TS版,一看它的配置要求,放弃了~~

# re: Visual Studio 2008推出后,我的一些感想  回复  更多评论   

2007-11-26 11:01 by 海边沫沫
@heroboy

多谢指点。由此可见,我们不能在for each中修改容器的内容。

# re: Visual Studio 2008推出后,我的一些感想  回复  更多评论   

2007-11-26 12:17 by 小名阿铁
"越是无知,活得越是轻松;"
所谓的笨鸟先飞!
楼主所阐述的一些心理活动确实是一个大众现象.选择越多,越飘浮不定.
因为人总是希望得到最好的.
另外:值得讨论for each么!?有何价值?一个语言特效而已,不足以说明什么吧.

# re: Visual Studio 2008推出后,我的一些感想  回复  更多评论   

2007-12-03 19:15 by less
vc9貌似有BUG,我编译wxwidgets倒没有问题,但是,在使用这些库的时候,出现一个错误IDE就自己退出了。

# re: Visual Studio 2008推出后,我的一些感想  回复  更多评论   

2007-12-20 13:55 by 秦歌
精彩,以后多指点

# re: Visual Studio 2008推出后,我的一些感想  回复  更多评论   

2008-01-19 11:54 by 胡人
vs9 team版就有tr1扩展,unordered_map, unordered_set等都有了,楼主装的是express版估计这个版没带进去。

# re: Visual Studio 2008推出后,我的一些感想  回复  更多评论   

2008-02-14 18:10 by lxconan
是这样的,实际上,成功的人往往是把自己最初的理想保留到了最后的人。仁者见仁智者见智,总不能统一大家的想法把,会丧失创新的火花的。现在已经不是360行,行行出状元了,是行内又分360块,每块都出状元。只要技术有人需要,就有他存在的理由啊:)

# re: Visual Studio 2008推出后,我的一些感想[未登录]  回复  更多评论   

2008-03-14 01:50 by a
express版从来就不带mfc以及atl等等,但是带stl,从2005就开始是这样,免费让你用就不错了,想想ms为了买这个stl也是花了大钱的,要是mfc,atl之类的都让你免费用,将那些花了钱的用户置于何地?至于tr1和mfc增强类,是在它的更新包里面带的,该包不能用于express版。(另外也评论一句,tr1那个unordered的命名烂透了,iso那帮人基本都是些没有任何审美能力的呆子。还有tr1::的这个名字空间,更是搞笑到了极点,tr1是0x标准的technique report1,将来还会有tr2,那将来1x标准的tr1怎么命名,这种没有任何远见的白痴命名法,我真是服了他们)据说微软已经重写了编译器的前端,以使它能更好的支持即将到来的c++ 0x,估计0x出来后,微软可以很快的支持大部分新特性,不过这些在vc9是看不到了,期待vc10的到来。

# re: Visual Studio 2008推出后,我的一些感想  回复  更多评论   

2008-04-27 01:05 by ???
Tr1、Tr2什么的其实根本不重要。
那些都是泛型库而已,不能展现C++ 0x支持如何。
如果觉得VC08没有带Tr?的库,可以弄一个boost来用——反正相当一部分tr?的库都是源于boost

# re: Visual Studio 2008推出后,我的一些感想  回复  更多评论   

2008-05-06 13:29 by 探丫头
有些时候,我发现越是无知,活得越是轻松
感觉这就说的很有哲理啊

# re: Visual Studio 2008推出后,我的一些感想  回复  更多评论   

2008-08-30 18:34 by E剑仙
你对WPF和Silverlight都严重低估了,微软一直在XAML的可视化编辑中狠下功夫,虽然VS08中还没有,但Expression Blend这种东西JAVA也没搞出来吧?建议有机会可以用用,这两门东西对.NET开发者基本是没有入门难度的。

# re: Visual Studio 2008推出后,我的一些感想  回复  更多评论   

2008-08-30 18:41 by 陈梓瀚(vczh)
如果用微软的东西的话,你¥越多越舒服。

# re: Visual Studio 2008推出后,我的一些感想  回复  更多评论   

2009-03-11 20:05 by jimsmorong
这个for_each 不是那个std::的那个 呀 一直不知道 我用2008 D

# re: Visual Studio 2008推出后,我的一些感想  回复  更多评论   

2009-04-17 17:01 by jadedrip
for each( const A& a in _list ) 编译通过……

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理