这里有做桌面应用程序开发的吗?VC++转C#是否为趋势? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
lyping
V2EX    程序员

这里有做桌面应用程序开发的吗?VC++转C#是否为趋势?

  •  
  •   lyping 2012-10-09 22:24:28 +08:00 11846 次点击
    这是一个创建于 4750 天前的主题,其中的信息可能已经有所发展或是发生改变。
    目前重要基于VC++的MFC写一些工控和试验类型的桌面应用程序,不知C#是否更有优势?
    请大家发表一下看法
    48 条回复    1970-01-01 08:00:00 +08:00
    ayang23
        1
    ayang23  
       2012-10-10 15:13:22 +08:00   1
    刚买了本c#的大厚书,准备转。不过想先研究下common lisp。个人不喜欢mfc,一直用wtl。
    lyping
        2
    lyping  
    OP
       2012-10-10 18:02:21 +08:00
    @ayang23 书名什么呢?推荐一下,感觉很多C#的书籍都是讲做网站
    cranej
        3
    cranej  
       2012-10-10 18:18:45 +08:00
    工作三年以上还不能独立思考决定这个问题就别转了,浪费时间,啥熟悉做啥混口饭吃吧。csharp在偏底层的开发没有优势,擅长的是商业应用程序。
    cranej
        4
    cranej  
       2012-10-10 18:21:58 +08:00
    入门书籍推荐c#本质论,然后clr via c#, 然后就不需要看书了,msdn就可以了
    gcweb
        5
    gcweb  
       2012-10-10 18:38:51 +08:00
    用WPF写界面,轻松又愉快
    bombless
        6
    bombless  
       2012-10-10 18:47:30 +08:00
    看场景。现在 C/S 或者 RESTful 的程序用C#做很常见,主要是因为 .net FCL 的网络相关的API实在太方便了。
    ayang23
        7
    ayang23  
       2012-10-10 22:37:55 +08:00
    C与.NET 4高级程序设计(第5版)
    sharpblade
        8
    sharpblade  
       2012-10-11 18:10:12 +08:00
    推荐《C#本质论》,很好的一本书,深入浅出,条理明晰,体系严谨
    至于你的应用领域,不是很清楚C#合适不合适,不过应该没有问题,必要时可以使用互操作
    azure
        9
    azure  
       2012-10-11 18:14:53 +08:00   1
    C#的问题在于.Net框架版本的不统一。 XP WIN7 WIN8预装版本都不一样。WPF确实轻松又愉快。但是有时候发行版本附带一个20多M的运行环境安装程序实在没有太舒心。。
    当初的dbradioPlus就吃尽了这个亏。
    http://www.douban.com/note/79600836/ 基于.net4 受尽了各种关于.Net的吐槽
    xupefei
        10
    xupefei  
       2012-10-11 19:02:20 +08:00   2
    @azure 解决这个问题不算麻烦,用 3.5 版本就行了。
    XP 不预装 NET,但是现在那些盗版一般也都附带了 2.0 版本(或更高),于是在分发软件的时候,把那些版本号为 3.5 的 DLL 放在程序目录下一起打包就行了( NET 3.5 的 mscoredll 还是 2.0版,只是在周边附加了一些库)。即使是 WPF,也就是把核心 DLL 打包就行了。
    WIN7 自带 NET 3.5。
    WIN8 自带 4.0,但是在使用基于 3.5 的程序时有十分友好的提示提醒用户安装 3.5,不会出现 Error Msg,体验还算不错。
    haohaolee
        11
    haohaolee  
       2012-10-11 19:16:47 +08:00
    所谓试验类型的程序是指什么?C++写程序无非就是对于CPU bound的应用更高效,对细节控制更精确。要是整天都是和控件打交道,winform足以应付了,开发效率也高
    azure
        12
    azure  
       2012-10-11 19:29:22 +08:00   1
    @xupefei BUT,WPF真正成熟好用是在4.0时代。你总不能针对客户开发两套基于不同版本WPF的软件吧。或者妥协让步,让你的软件止步于3.5时代? 以及用户在拥有4.0 Framework的时候还需要再装一个3.5.这实在让很多用户不解吧
    lyping
        13
    lyping  
    OP
       2012-10-11 21:33:13 +08:00
    @haohaolee 用串口或PCI读一些数据,然后绘图展示、计算、存储,以及数据分析。
    haohaolee
        14
    haohaolee  
       2012-10-11 22:10:46 +08:00
    @lyping 我觉得问题不是特别大。不过C#学起来比C++简单多了,你完全可以试一试
    c4pt0r
        15
    c4pt0r  
       2012-10-11 22:41:14 +08:00   1
    作为曾经的桌面应用开发者可以负责的说, 对于大规模分发的用户桌面软件,比如一些流行的免费互联网软件(浏览器, qq, 360, xunlei, 词典, 输入法什么的),c++是几乎是唯一的选择: mfc, qt和裸写native win32程序, 从来不会考虑c#之类的,原因是兼容性太差,用户太小白,对安装包的大小太敏感等.

    当然,如果只是做实验或者小范围应用的软件, 当然怎么快怎么来了, c#开发起来能轻松非常非常多
    lyping
        16
    lyping  
    OP
       2012-10-11 23:33:07 +08:00
    @c4pt0r 感谢,准备试一下。应该上手不难。
    huangliushen
        17
    huangliushen  
       2012-10-12 02:00:31 +08:00
    C#的开发还是属于不吃力还讨好的那种,当然还要分具体情况的
    Ricepig
        18
    Ricepig  
       2012-10-12 14:02:44 +08:00
    C#帖居然喷的人这么少?!时代的进步啊!
    lyping
        19
    lyping  
    OP
       2012-10-12 15:35:15 +08:00
    @Ricepig 怎么理解呢?
    Alpha
        20
    Alpha  
       2012-10-12 15:43:50 +08:00
    现在比较流行go
    avatasia
        21
    avatasia  
       2012-10-12 15:44:05 +08:00
    你说的是WPF,c++程序的优势是体积小,对系统的控制能力高。
    hyq
        22
    hyq  
       2012-10-12 15:44:26 +08:00
    @Ricepig 这不是csdn,也不是cnbeta
    gislord
        23
    gislord  
       2012-10-12 16:40:17 +08:00
    @hyq 正解。。csdn喷这个厉害些。。cnbeta喷公司比较多。。另外补充,一些行业相关的桌面应用程序,也不会考虑C#,效率不够,前期做demo还差不多。
    Ricepig
        24
    Ricepig  
       2012-10-13 00:04:01 +08:00
    @gislord 效率应该是勉强够,性能最保守来说和java一样
    Ricepig
        25
    Ricepig  
       2012-10-13 00:04:42 +08:00
    @avatasia C++标准库不强力就是个悲剧,本来体积挺小的,但是考虑到用库。。。我靠一个boost就好大好大。。。
    haohaolee
        26
    haohaolee  
       2012-10-13 09:17:30 +08:00
    @gislord 那些大型软件的特点是什么都用,该用C/C++的地方C/C++,该用.Net的地方就.Net,还会内嵌各种脚本语言。一切视需求和实现而定
    haohaolee
        27
    haohaolee  
       2012-10-13 09:18:52 +08:00
    @Ricepig boost大不一定影响到最终程序的体积啊,boost大是因为库多
    Ricepig
        28
    Ricepig  
       2012-10-13 16:03:14 +08:00
    @haohaolee 如果我只需要一个很小的部分,请问带上boost那一陀基础库,能小到哪去?
    siemonday
        29
    siemonday  
       2012-10-13 16:05:20 +08:00
    去年买的本质论,一大本砖头。。还是多写写代码好
    gislord
        30
    gislord  
       2012-10-13 23:19:41 +08:00
    @Ricepig 譬如我这里读个几个G以上的点云文件,建个四叉树索引,用c#有点过于慢了吧。。
    gislord
        31
    gislord  
       2012-10-13 23:21:08 +08:00
    @haohaolee 嗯对的。大型商业软件一般都不会只考虑一种语言。但是研究性的项目,可能更多的注重是算法或者学科相关的研究探索,可能C++就是最好的选择了,效率好,也不需要考虑c++在实际项目中带来的诸多问题。。
    haohaolee
        32
    haohaolee  
       2012-10-14 09:48:18 +08:00
    @Ricepig 只需要一小部分的话,最终包含到执行文件的也只有一小部分(一般);另外boost也是可以裁剪的,只不过没大必要就是了
    wuxqing
        33
    wuxqing  
       2012-10-14 09:51:59 +08:00
    可以混合编程
    算法部分用c++
    ui部分用c#
    halfbloodrock
        34
    halfbloodrock  
       2012-10-14 10:09:41 +08:00
    evernote在早期的版本是.NET的,最后还是换成C++开发了
    fwee
        35
    fwee  
       2012-10-14 11:18:30 +08:00
    如果每台电脑都装了.net4.0那什么问题都没了
    lyping
        36
    lyping  
    OP
       2012-10-14 12:43:07 +08:00
    evernote的C++版本不是MFC的吧。不知C++除MFC以外还有什么可以选择的。qt呢?
    funcman
        37
    funcman  
       2012-10-14 12:55:38 +08:00
    行业软件用.Net有神马问题,装上.Net Framework就是了,开发起来要多方便就多方便。

    面向大众的桌面软件至少要用MFC/WTL,最好是自己封装Win32来做。Qt都显得不够用。

    游戏开发领域,编辑器一般用.Net或Qt。用.Net的麻烦在于游戏引擎要包装给.Net,还是比较麻烦的。Qt作为一个C++的超集,就没有这方面的麻烦。

    尽量用容易开发的技术来做。
    Ricepig
        38
    Ricepig  
       2012-10-14 20:10:12 +08:00
    @haohaolee 额,我表示很大,上次就只引用了boost::thread而已。。。
    Ricepig
        39
    Ricepig  
       2012-10-14 20:10:53 +08:00
    @gislord 还好啊,我还真用C#写过Quadtree和R-Tree呢,不过“过于”慢
    Ricepig
        40
    Ricepig  
       2012-10-14 20:12:21 +08:00
    @gislord 不同意你关于研究性项目适用C++的看法,C++用于研究性项目的话,由于C++本身坑太多,造成精力无法完全集中于研究的问题
    haohaolee
        41
    haohaolee  
       2012-10-15 00:40:50 +08:00
    @Ricepig 这取决于是动态链接还是静态链接的,刚才写了个boost thread的hello world,全部static linking的话,大约是800k,但是如果动态连接到c++标准库和其它系统lib的话,就只有50+k了
    avatasia
        42
    avatasia  
       2012-10-16 13:32:20 +08:00
    @haohaolee asm做hello world能到21k,甚至更小,不压缩。
    gislord
        43
    gislord  
       2012-10-16 17:23:59 +08:00
    @Ricepig C++本身坑多大多在于软件开发后期。研究性项目,譬如点云数据,建个MFC,加入openGL显示,剩下的就是尝试各种滤波算法和点云处理方法。效率也得到了保障。没有你所谓精力无法集中于研究的问题。因为往往不是大型工程,也没有严格的安全性扩展性要求。
    gislord
        44
    gislord  
       2012-10-16 17:27:52 +08:00
    @Ricepig 数据大了。。就知道有多慢了。。
    haohaolee
        45
    haohaolee  
       2012-10-16 20:31:55 +08:00
    @avatasia 不是说binary能做到多小,而是在说引入boost thread后的体积是不是很大
    Ricepig
        46
    Ricepig  
       2012-10-17 02:45:19 +08:00
    @gislord 不是额,研究的时候也会碰到很多坑,而且库不给力也是另外一个问题。
    phnessu4
        47
    phnessu4  
       2012-10-17 10:13:22 +08:00
    不看好c#, 好多年前就不看好, 现在依旧不看好, C#东家MS都把注意力全部集中到xbox上了, 建议转objective-c或者还是做c++, 换个方向, 做移动, 游戏 或是 体感方向.
    phnessu4
        48
    phnessu4  
       2012-10-17 10:13:48 +08:00
    同样鄙视java
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2678 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 50ms UTC 02:29 PVG 10:29 LAX 19:29 JFK 22:29
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86