现在主流是用 c++ 还是 c# 开发客户端啊 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ivanchou
V2EX    问与答

现在主流是用 c++ 还是 c# 开发客户端啊

  •  
  •   ivanchou 2015-04-17 10:07:03 +08:00 18267 次点击
    这是一个创建于 3920 天前的主题,其中的信息可能已经有所发展或是发生改变。
    现在有一个任务需要完成 client 开发,没有跨平台的需求。
    因自身长期使用 java & android ,对 pc 客户端这块不是太清楚,现在主流用的是什么比较多,c++ 是不是只能结合 MFC?因为并不是太想学习 c# ,如果能用 c++ 是最好了,正好借这个项目锻炼下 c++ 能力。

    ps:倒并不是对 c# 有什么偏见,只是感觉 java 跟 c# 很像啊,为什么要学两个很像的东西 ,另外是 mac 党,c# 意味着还要一台 win 了。
    第 1 条附言    2015-04-17 10:46:21 +08:00
    那各位大神顺便推荐一本 c# 入门书籍吧,快速翻一翻。
    58 条回复    2015-04-18 07:42:57 +08:00
    chaucerling
        1
    chaucerling  
       2015-04-17 10:20:12 +08:00 via Android
    折腾MFC的时间都够学会c#了
    hjc4869
        2
    hjc4869  
       2015-04-17 10:34:11 +08:00
    Windows上当然是用C#,MFC已经被淘汰了
    Mac可以用Mono。
    另外Java太烂,别拿来跟C#比,C#是真正的世界上最好的语言,写了几天C#就回不去Java了
    hjc4869
        3
    hjc4869  
       2015-04-17 10:34:41 +08:00
    还有,即便是折腾C++,用了MFC,也是必须要用Windows的……
    1023400273
    &nbp;   4
    1023400273  
       2015-04-17 10:40:49 +08:00   1
    我本来是学c++的,学着学着就被MFC给玩死了,从此投入java的怀抱
    ivanchou
        5
    ivanchou  
    OP
       2015-04-17 10:43:42 +08:00
    @chaucerling
    @hjc4869
    没说要折腾 MFC 早在上大一的时候就知道是过时的技术了,那时候都是用来做课设。
    也就是说不用 MFC ,windows 下就没有用 C++ 来做客户端的主流框架了?
    肯定不会在 mac 下折腾 c#,浪费时间。
    不为了说哪种语言好,因为用 java + python 开发 android 感觉也很爽快啊~~~
    那看来是不得不入 .net 了
    ivanchou
        6
    ivanchou  
    OP
       2015-04-17 10:44:47 +08:00
    @1023400273
    @chaucerling
    @hjc4869
    貌似还有个 Qt,不过被诺记收购,现在活的不算主流吧?我还是跟随主流走吧
    bestsanmao
        7
    bestsanmao  
       2015-04-17 11:10:47 +08:00
    @chaucerling
    @hjc4869
    @1023400273
    c++才是主流吧
    C#? 现在哪个主流软件是C#做的?那运行效率跟C/C++比就跟shit一样!
    1023400273
        8
    1023400273  
       2015-04-17 11:14:21 +08:00   3
    吾之一生,初学C,三年不成;后Java,出一系统,未三日,瘫;遂转Android,布一程序,多BUG,主上斥责,五夜不眠改之,心力交瘁,卒,享年二十又八!
    jjx
        9
    jjx  
       2015-04-17 11:14:23 +08:00
    未来还是看好c#的
    如果跨平台/.net native等能成功的话,但估计最少还要等一年

    C#深入也是很复杂的
    chaucerling
        10
    chaucerling  
       2015-04-17 11:15:06 +08:00
    @bestsanmao 离开需求谈性能的都是耍流氓
    sc3263
        11
    sc3263  
       2015-04-17 11:19:38 +08:00
    windows下面,不考虑跨平台?C++ C#都行。
    不是特别在意软件包大小的话,Qt是个不错的选择。算不算主流不清楚,反正很多公司在用。
    hjc4869
        12
    hjc4869  
       2015-04-17 11:29:20 +08:00
    @bestsanmao Visual Studio的UI是用C#和WPF开发的。当然你可以说它不是主流软件,毕竟宇宙第一IDE不是每个人都用的起。
    关于运行效率是不是shit的问题,我只能说跟.NET FCL比起来STL才是慢成shit。
    ivanchou
        13
    ivanchou  
    OP
       2015-04-17 11:39:06 +08:00
    @1023400273 哈哈哈哈 有同感~
    ivanchou
        14
    ivanchou  
    OP
       2015-04-17 11:41:37 +08:00
    @bestsanmao 那 C++ 主流用什么框架开发客户端呢?
    dong3580
        15
    dong3580  
       2015-04-17 11:44:14 +08:00
    @ivanchou
    “ java 跟 c# 很像啊,为什么要学两个很像的东西”,这句话都快成为我的口头禅了,哈哈。
    C++不清楚,不过如果C#的话,假如你又有web端接口,就可以用接口了,画个高大上的界面。
    hjc4869
        16
    hjc4869  
       2015-04-17 11:49:40 +08:00
    ivanchou
        17
    ivanchou  
    OP
       2015-04-17 11:55:38 +08:00
    @dong3580 /抠鼻
    ivanchou
        18
    ivanchou  
    OP
       2015-04-17 11:59:21 +08:00
    @hjc4869 你是说选 qt?qt 真的很流行?
    bestsanmao
        19
    bestsanmao  
       2015-04-17 11:59:44 +08:00
    @ivanchou 为什么一定要用什么框架?
    hjc4869
        20
    hjc4869  
       2015-04-17 12:04:30 +08:00
    @ivanchou 国产软件一大把的用Qt吧。。
    @bestsanmao 不用框架难道手写Win32?UI元素一个个画上去?
    msg7086
        21
    msg7086  
       2015-04-17 12:08:30 +08:00
    @bestsanmao 呜哇C#一周能搞完的东西C++要搞一个月还一堆Bug要修,这才是常见情况吧。
    运行效率才差多少,又不是用C#做超算……
    murusu
        22
    murusu  
       2015-04-17 12:13:32 +08:00
    Qt
    不过现在的趋势都是直接用浏览器当客户端了
    markyangd
        23
    markyangd  
       2015-04-17 12:15:22 +08:00 via iPhone
    @chaucerling 同意
    herozzm
        24
    herozzm  
       2015-04-17 12:24:42 +08:00
    lz问:c/s架构主要用什么语言做吧
    目前大部分都是b/s
    guoqiao
        25
    guoqiao  
       2015-04-17 12:31:39 +08:00
    PC客户端的正道是 C#
    MFC 和 C++远不是一回事.
    即使你会 C++(且不论怎么算是"会"), MFC 还是要从头学.
    花掉的精力踩到的坑, 远比你直接学 C#要多得多.
    ivanchou
        26
    ivanchou  
    OP
       2015-04-17 12:32:49 +08:00
    @hjc4869
    @murusu
    我再去调研下 qt 跟 .net 的优劣以及项目的实际需求吧~
    @herozzm
    对啊,所以 cs 那套基本就是在学校的时候刚入门时拖拖控件啥的 /汗
    ivanchou
        27
    ivanchou  
    OP
       2015-04-17 12:34:14 +08:00
    @guoqiao
    我知道 MFC……
    我的意思你没明白,可以看楼层的回复~
    hjc4869
        28
    hjc4869  
       2015-04-17 12:38:15 +08:00
    @ivanchou 其实Qt也是要学很多的吧我记得。。完全是C++的扩展……
    ivanchou
        29
    ivanchou  
    OP
       2015-04-17 12:48:02 +08:00 via Android
    @hjc4869 是的 其实可以看成一个更先进的 MFC 现在比较倾向于 .net
    liujiantao
        30
    liujiantao  
       2015-04-17 12:58:00 +08:00 via Android
    就在学JAVA,看楼上回复黑JAVA挺多嘛。。。我觉得还好吧
    mN71eOOprFyMsnPx
        31
    mN71eOOprFyMsnPx  
       2015-04-17 13:03:58 +08:00
    YY 就是Qt写的。用着还不错。研究过一段时间的IM软件。基本上都是Qt
    ivanchou
        32
    ivanchou  
    OP
       2015-04-17 13:13:46 +08:00
    @liujiantao 自己开心就好,毕竟 java 的薪水比 .net 高啊 /握爪
    standin000
        33
    standin000  
       2015-04-17 13:13:51 +08:00
    推荐Qt,设计很精良,可惜用得人不多。
    sophymax
        34
    sophymax  
       2015-04-17 13:44:47 +08:00 via iPad
    为什么C++一定要结合Qt或者MFC?见过更多的都是WTL,ATL之流,也一般是选择用C++,虽然这类东西也能用C#
    m1a0
        35
    m1a0  
       2015-04-17 13:59:45 +08:00
    我们现在有一套系统是C#开发的, 现在都招不到开发人员了。。。
    Muninn
        36
    Muninn  
       2015-04-17 14:16:29 +08:00
    现在都是WPF或者Qt吧
    futursolo
        37
    futursolo  
       2015-04-17 15:12:07 +08:00
    @bestsanmao ShadowSocks for Windows
    dbfox
        38
    dbfox  
       2015-04-17 15:14:51 +08:00
    我们公司客户端用 C++开发的
    lijingyu68
        39
    lijingyu68  
       2015-04-17 16:11:52 +08:00
    没有人提到node-webkit,这个才是现在的主流
    hjc4869
        40
    hjc4869  
       2015-04-17 16:15:10 +08:00
    @lijingyu68 Windows上有几个常用程序是node-webkit开发的?恐怕比Windows Store里的js app还少吧。。至少我电脑上一个都没装。。。主流?Web开发者的逆袭?
    g00001
        41
    g00001  
       2015-04-17 16:24:38 +08:00
    开发工具这个东西也不见得别人用的爽就一定适合自己,只能作个参考。
    C#不错不过就是太笨重了,而且反编译源码的工具太多,如果是共享软件就不好办了。

    做桌面软件用AAuto小轻快(开发工具6.5MB),尤其是有编程基础又不熟悉桌面开发的可以节省不少时间,AAuto里可以调用C#,C++,Java,Python的组件,可以混合不同编程语言非常方便。也可以象node-webkit那样用web做界面,不用装个笨重的nodejs哦,几句代码可以创建一个webkit壳子,另外还支持Chromium,IE,HTMLayout这些浏览器引擎,都是几句代码就可以创建个小程序了。
    ivanchou
        42
    ivanchou  
    OP
       2015-04-17 16:34:21 +08:00
    @lijingyu68
    @g00001
    才不要这些非主流,交付的时候甲方得说“你这是个什么 gui !!!!”
    ivanchou
        43
    ivanchou  
    OP
       2015-04-17 16:34:48 +08:00
    @m1a0 要不要这么惨~
    jsq2627
        44
    jsq2627  
       2015-04-17 16:46:56 +08:00 via iPhone
    面相大众的软件最好不要C#,部署不是一般的麻烦
    g00001
        45
    g00001  
       2015-04-17 17:13:23 +08:00
    @ivanchou 你说的很对,认真学个主流编程语言当然是必要的,但学了主流编程语言找到主流的赶脚以后,还可以大胆尝试各种非主流和新东西。AAuto只是个小玩具,不好放到一起比的。当然也还是有学了十年C语言的去用AAuto这种小玩具开发桌面软件,开发完了不但没有得罪甲方,反而是公司研发部搞了个培训大家一起愉快的学习AAuto。

    一个语言适不适合自己,使用的人多只是一个参考因素,还要看做什么东西,例如多文档这类MFC那是最好的了,做客户端GUI用AAuto倒不是问题,桌面软件做GUI是比较痛苦的事,但在AAuto里就非常轻松了,类似360,QQ这样的界面用AAuto那就非常快了,AAuto上手快,开发速度快,开发出来的软件体积也很小,而且不需要啥运行库。看斌哥做的豆瓣客户端 http://wubin.in/doubanfm.html,作者学习AAuto到完成作品不到一个月,做出来的软件界面,嗯,那非常漂亮,一个月的时间还不够摸下C++的门槛。
    lijingyu68
        46
    lijingyu68  
       2015-04-17 17:14:02 +08:00
    @ivanchou https://github.com/nwjs/nw.js/wiki/List-of-apps-and-companies-using-nw.js

    楼主如果想用C++的话,唯一的选择就是QT吧
    whatisnew
        47
    whatisnew  
       2015-04-17 17:16:41 +08:00
    qt

    c# 的话,喊了那么长时候要运行在 linux 开源出来了暂时也还是只有 mono
    inyfee
        48
    inyfee  
       2015-04-17 19:35:02 +08:00 via Android
    之前也问过相同的问题,最后考虑到c#
    部署麻烦,还是选择了qt
    ivanchou
        49
    ivanchou  
    OP
       2015-04-17 20:43:46 +08:00
    @jsq2627 呃,不是装上 .net framework 就 ok 么?
    ivanchou
        50
    ivanchou  
    OP
       2015-04-17 20:44:17 +08:00
    @yeelone 还请明示 c# 部署是哪里比较麻烦
    ivanchou
        51
    ivanchou  
    OP
       2015-04-17 20:49:59 +08:00
    @g00001 我简单看了下产品,很 nice 但仔细想了想之后并不适合我目前所面临的这个项目,感觉还是需要传统的例如 c# or qt,qt 都感觉已经是比较非主流了,大二时候碰过它。
    不过以后有机会自己做着玩,AAuto 确实是个不错的选择
    ayang23
        52
    ayang23  
       2015-04-17 21:54:19 +08:00
    wtl在mfc时代是个很好的选择,现在感觉qt不错,qt把c++封装的比objc都适合界面开发,如果再加上c++11的一些新特性,更加方便。而且qt可以mac下开发win下编译,这是我问了v友后自己实践过的结果,至于c#,如果单纯做个界面可能简单,但客户端软件你不来点算法,不来点图像处理?看了opencv的C#绑定后就把c#淘汰了。c#的部署现在应该不难了吧,还有人用xp吗?
    ksupertu
        53
    ksupertu  
       2015-04-17 22:36:42 +08:00 via iPad
    c++ duilib
    c++ gaclib
    c# wpf
    wenssh
        54
    wenssh  
       2015-04-17 22:53:38 +08:00
    @ivanchou C++可以考虑cef 如果你有前端的话
    hjc4869
        55
    hjc4869  
       2015-04-17 23:27:25 +08:00
    @ayang23 C#做界面,需要高性能算法的地方P/Invoke是很常见的做法,如果嫌P/Invoke性能低或者麻烦,直接C++ Interop也行。因为C#的开发效率真心高到没的说,运行效率也没低到哪儿去。
    Win7自带.NET Framework 3.5,Win8.x自带4.5.x,而用哪个版本完全可以通过改*.exe.config在安装的过程中选择,不考虑XP的话连运行环境都不用带了,部署确实非常简单。
    chmlai
        56
    chmlai  
       2015-04-18 02:12:38 +08:00
    Qt, .Net, node-webkit之类选一个就可以了
    yangzh
        57
    yangzh  
       2015-04-18 03:35:30 +08:00 via iPhone
    要不 qt 要不c# dotnet.

    最新版 windows 似乎自带 dotnet framework 了
    xiaogui
        58
    xiaogui  
       2015-04-18 07:42:57 +08:00
    VC++.net
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1092 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 18:16 PVG 02:16 LAX 10:16 JFK 13:16
    Do have faith in what you're doing.
    ubao msn 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