V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
ivanchou
V2EX  ›  问与答

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

  •  
  •   ivanchou · 2015-04-17 10:07:03 +08:00 · 17434 次点击
    这是一个创建于 3291 天前的主题,其中的信息可能已经有所发展或是发生改变。
    现在有一个任务需要完成 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
        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挺多嘛。。。我觉得还好吧
    FifiLyu
        31
    FifiLyu  
       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
    yeelone
        48
    yeelone  
       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   ·   我们的愿景   ·   实用小工具   ·   2957 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 75ms · UTC 03:34 · PVG 11:34 · LAX 20:34 · JFK 23:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.