V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
lyping
V2EX  ›  程序员

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

  •  
  •   lyping · 2012-10-09 22:24:28 +08:00 · 11414 次点击
    这是一个创建于 4414 天前的主题,其中的信息可能已经有所发展或是发生改变。
    目前重要基于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   ·   实用小工具   ·   2705 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 09:45 · PVG 17:45 · LAX 01:45 · JFK 04:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.