C++ 17 完成了 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
muziki
V2EX    C++

C++ 17 完成了

  •  4
     
  •   muziki 2017-03-25 21:49:05 +08:00 12533 次点击
    这是一个创建于 3123 天前的主题,其中的信息可能已经有所发展或是发生改变。
    110 条回复    2017-04-18 12:47:55 +08:00
    1  2  
    znood
        1
    znood  
       2017-03-25 22:19:03 +08:00 via iPhone
    写了两年 c++,都是用 03 ……而且都是当带类的 c 用
    现在用 golang 发现一样的功能写的代码少了很多
    htfy96
        2
    htfy96  
       2017-03-25 22:30:37 +08:00
    等 20 中
    lsmgeb89
        3
    lsmgeb89  
       2017-03-26 00:39:04 +08:00 via Android
    现在业界到底哪几个方向对 C++ 需求比较多?
    trys1
        4
    trys1  
       2017-03-26 00:48:03 +08:00 via Android
    @znood 跟你一样,最近渐渐喜欢上 golang ,但是不知道前景如何
    wangxn
        5
    wangxn  
       2017-03-26 01:12:12 +08:00 via Android
    我也觉得 Go 写网络程序很方便。
    一方面是 goroutine ,一方面是 http 标准库,再一方面是快速编译。其他倒没什么了。
    说白了,就是标准库的问题。可惜 C++永远做不到这一点。
    noli
        6
    noli  
       2017-03-26 02:59:25 +08:00 via iPhone   8
    golang 吹真恶心
    c++的世界关你们什么事?
    zh5e
        7
    zh5e  
       2017-03-26 08:28:58 +08:00 via iPhone
    然而公司 11 都没用上
    znood
        8
    znood  
       2017-03-26 08:48:56 +08:00 via iPhone   11
    @noli 没有针对任何人说,只是发表了一下自己的看法,毕竟语言进步就是靠对比的,哪里吹了?哪里恶心了?
    你说这句话确实挺恶心的。
    Lispre
        9
    Lispre  
       2017-03-26 09:28:07 +08:00
    其实语言新标做得工作更多是对于库作者和维护的支持,应用与业务的使用,就算是使用 03 的 C++也没有太大问题。 Go 一直没有提供类似模板的功能支持,一样用于很多大的工程就足以说明问题了。

    抽象本身也是有代价的
    linux40
        10
    linux40  
       2017-03-26 09:29:28 +08:00 via Android
    go 有 gc 啊,要比也是和 rust 比。。。
    taozhijiangscu
        11
    taozhijiangscu  
       2017-03-26 09:53:39 +08:00
    C++是开放的语言标准, Go 是 Google 一家的东西
    单凭这一点看来,使用 Go 是有风险的!
    muziki
        12
    muziki  
    OP
       2017-03-26 09:58:15 +08:00
    都在撕 go 。个人很喜欢 Rust ,不能自拔
    Cbdy
        13
    Cbdy  
       2017-03-26 10:03:57 +08:00 via Android
    标准做出来了,起码给个参考实现呗,每家搞一套算什么意思
    sagaxu
        14
    sagaxu  
       2017-03-26 10:14:45 +08:00 via Android
    能用 go 或者 JAVA 实现的项目,本身就不是 C++的战场
    wangxn
        15
    wangxn  
       2017-03-26 10:24:15 +08:00 via Android
    我同时用 C++和 Go ,公司正在往 Go 转。
    用 C++还用出优越感了?我还用了十三年呢。
    服了某些人了。
    SuperMild
        16
    SuperMild  
       2017-03-26 10:36:20 +08:00
    @muziki 我听说了一些 rust 的优点,也很有兴趣,但貌似很难学,可否再多说几句心得?
    XIVN1987
        17
    XIVN1987  
       2017-03-26 10:46:44 +08:00 via Android   4
    @wangxn
    似乎现在用 Go 的更自我感觉优越,连没有泛型都是优点,,希望 Go 永远都不要有泛型,不然到时候承认 Go 变差了也不是,承认以前说的话是**也不是,多纠结啊!
    wangxn
        18
    wangxn  
       2017-03-26 11:11:20 +08:00
    @XIVN1987 假如用 Go 能用出优越感那就太奇怪了。因为人人学几天就能上手,难度何止差 C++十万八千里。逼格不高。
    我推崇的是 Go 提供了很方便的基础设施用来编写网络程序。这一点 C++做不到。假如 asio 进了标准库,我是真不会用这东西,看都看不明白。
    另外, interface{}就能达到泛型的近似效果。
    Go 并不是一个完美的语言,例如我就讨厌它没有函数重载,但它对自身能处理的领域,做得很好。
    bianhua
        19
    bianhua  
       2017-03-26 11:40:48 +08:00   1
    @muziki

    Rust 挺好,但是语言只带了一个很小的标准库。如果对第三方代码有洁癖的话,很多东西都要自己写。感觉上相当于是个带了自动竞争检查的 C++。

    Go 语言的自带库很大,很多功能都集成了,写起来效率很高。想来这可能就是为什么 Go 比 Rust 流行。因为如果真要开始写项目的话,选型的时候效率肯定是考量之一。

    我个人来说,除非 Rust Platform 真的成为一回事儿,否则我会等 Rust 的 Crate 体系真正成熟之后再开始用 Rust 写大项目。而就目前来说,我还是会选择 Go 。如果不让用 Go 的话我宁愿用 Haskell 这样有 Platform 的语言来写。

    不过其实话说回来,如果小心一点的话, C++也挺好,而且有 Boost 这样的库可以用。
    muziki
        20
    muziki  
    OP
       2017-03-26 11:57:04 +08:00 via iPhone   2
    @SuperMild 难其实只在于刚开始看那几眼的时候, rust 的社区非常友好, user 论坛 reddit stackoverflow 里面开发组的核心成员一直都在活跃回答,帮助新手。
    我之前是以 C Python 为主, rust 开始学的时候里面确实很多概念不熟,先是看的官方 book ,然后就刷 rustbyexample(很多新东西第一次接触,练个手),同时把各种没理清的概念特性找博客来看, rust 比较年轻,那些文章基本上都是开发组或者知名 rust 库的大佬写的, lifetime closures 等等解释的很细,质量有保证。之后就是 google+zeal(dash linux ver )写个小项目,然后就到 github 上看 rust 项目和一些库的 issue (官方有个语言和库的动态更新列表)试试自己能不能帮忙解决或者到论坛回答问题,我就有两次在一个核心开发者的 mentoring 下修 bug 的经历。
    Rust 文档,社区都很棒,同时比较年轻,学习过程中也有不少机会参与整个社区生态的构建,要是有兴趣建议试试吧,当然看你自己了
    schezukNewTos
        21
    schezukNewTos  
       2017-03-26 12:01:18 +08:00
    果然现在还是没人用 DLang 。
    SuperMild
        22
    SuperMild  
       2017-03-26 12:23:58 +08:00
    @muziki 感谢,就文档好这点就值得学一学,决定学啦。
    wevsty
        23
    wevsty  
       2017-03-26 12:36:18 +08:00
    C++的学习曲线又陡增不少。
    kmahyyg
        24
    kmahyyg  
       2017-03-26 13:20:36 +08:00 via Android
    很多语言的论坛对新手真的极端不友好,自己本身语言语法又很反人类,这就决定有些语言是死都不会用的。

    pythoner ,看到这个帖子,准备去看看 rust ,问下各位前辈, rust 优点在哪?效率如何?
    muziki
        25
    muziki  
    OP
       2017-03-26 13:45:36 +08:00 via iPhone   1
    @kmahyyg rust 生态环境现在还不完善,语言自身也在小修小补,库一直在丰富但要是真的拿来开发的话,可能不是特别方便。 rust 的编译器比较好,开始基本上都是在和它斗争,但错误提示很明确基本都能找到解决方案,要是没找到,可能你发现了新 bug ?快去提 issue , pull 吧
    学 rust 还是作为业余爱好比较好,工作岗位也不多。文档 社区氛围 库管理都很好。我自己是比较看好 Rust 前景,所以就学了当储备
    noli
        26
    noli  
       2017-03-26 14:38:19 +08:00   1
    @znood 看到了吧,到目前为止看看楼上都在说什么。好好一个 C++ 的帖子变成了 golang 粉的撕逼贴,我说 “恶心”也不是具体针对谁,后面那句你自己懂。

    @wangxn 我说 C++ 万能,包括你说的很方便地写网络应用,包括集成 GC 。你不服吧?你看所以这就是你们这些半桶水的人只能用 golang 的原因。
    ccsexyz
        27
    ccsexyz  
       2017-03-26 15:09:48 +08:00   1
    @noli 撕逼似乎是从你这开始的,而且我不知道写两行 C++的优越感是从哪里来的?
    SuperMild
        28
    SuperMild  
       2017-03-26 15:19:26 +08:00
    (真的很见不得逻辑混乱,所以吐槽几句)

    上面 noli 的说法真的太混乱了:

    1. 并没有变成 golang 粉的撕逼贴,只是有关于 golang 的讨论,并不激烈,回贴数量也没占多数。

    2. 既然反对语言撕逼,为什么又参与语言撕逼?而且还是发起者。

    3. 并没有证据表明说两句 golang 有优点的人就只能用 golang 啊,可能人家同时还用 C++ 呢。

    4. 就算在你的世界观里半桶水的人只能用 golang 用不了 C++,可这不正是 golang 的优点和 C++ 的缺点吗。

    还有很多,不一一说了,太乱了。我并不是赞同或反对哪个观点,只是,你提出一个观点至少得自圆其说吧。
    alamaya
        29
    alamaya  
       2017-03-26 15:29:18 +08:00   4
    搞不明白人家发一个 C 艹的新标准贴,下面一堆宣传 go 的什么鬼。一股当初 lol 和 dota 的既视感。
    noli
        30
    noli  
       2017-03-26 15:36:14 +08:00
    @ccsexyz @SuperMild

    C++17 添加了哪些特性,否决了哪些特性,那篇 Reddit 里面讨论了啥。
    你们 TM 一个字不提,还好意思说我撕逼。批判我显得你很正确?
    我还是那句话, C++ 的世界关你们 golang 毛线事。

    你们不压制自己说闲话的冲动,迟早会毁了这里。
    一点 be helpful 的自觉都没有。
    ccsexyz
        31
    ccsexyz  
       2017-03-26 15:40:31 +08:00
    @noli 你为什么这么喜欢站队,你怎么知道我不会 C++?第一个攻击别人的难道不是你吗?

    你不压制自己站队骂人的冲动才是迟早会毁了这里
    eb0c6551
        32
    eb0c6551  
       2017-03-26 15:42:33 +08:00   4
    这个节点把 “ C/C++/Obj-C ” 放在一起好清...
    noli
        33
    noli  
       2017-03-26 15:43:54 +08:00
    @ccsexyz

    会 C++ 又怎么样? 21 天后谁不会一门语言啊?
    我站队是因为我有 point , 你们站队是因为无知,就这样,我先滚。
    htfy96
        34
    htfy96  
       2017-03-26 15:45:59 +08:00   1
    @eb0c6551 +1

    @Livid 能不能考虑把这个节点分拆成 C / C++ / Obj-C ?
    tyrealgray
        35
    tyrealgray  
       2017-03-26 15:47:14 +08:00 via iPhone   1
    楼上一群扯 go 的,你写个 3d 引擎用 go 写么?比就没比对,用 java 和 c#比至少也说的过去点啊
    ccsexyz
        36
    ccsexyz  
       2017-03-26 15:54:28 +08:00
    @noli 你为什么会觉得我在站队,我只是觉得像你这样的人纯粹是在给 C++程序员抹黑而已
    wangxn
        37
    wangxn  
       2017-03-26 15:57:35 +08:00 via Android
    @eb0c6551 LLVM/Clang 也把它们放在一起 :-)
    当然我也同意拆分。
    noli
        38
    noli  
       2017-03-26 16:00:16 +08:00   1
    @ccsexyz 因为只有带领队伍的人知道谁在站队。

    C++程序员根本不怕谁黑。
    不服你来写 C++ 啊,抱着 golang 有宝似的,也就你们这群低等码农了。

    这贴反正被你们毁了,我就是被封也要让人知道你们这群 golang 吹是多么恶毒。
    ccsexyz
        39
    ccsexyz  
       2017-03-26 16:01:47 +08:00
    @noli 呵呵在这条回复之前,我可是一个字也没有提 go 的哦,不知道你怎么看出来的,你怎么知道我不是 java/phper 呢
    ccsexyz
        40
    ccsexyz  
       2017-03-26 16:03:15 +08:00
    @noli 现在那么早,你就硬点我是 go 程序员,会不会给人一种钦定的感觉
    noli
        41
    noli  
       2017-03-26 16:06:25 +08:00
    @ccsexyz

    因为你没有表明你要讨论 C++ 的事情 。
    别自作聪明了。管你什么鬼粉,敢自称 C++ 熟练了再过来说话。
    没点智商门槛就让人以为有讨论知识的权利,这是这个支持言论自由的世界给你们最大的错觉。
    ccsexyz
        42
    ccsexyz  
       2017-03-26 16:13:21 +08:00
    @noli 我可没有批评 C++的意思,你不要自己立个靶子自己打.我只是觉得,像你这样会一点 C++就沾沾自喜张牙舞爪瞧不起人的人,很 naive,换言之,很恶心
    SuperMild
        43
    SuperMild  
       2017-03-26 16:15:12 +08:00   4
    哈哈哈, noli 太搞笑了,我发现你每个回复都有金句,句式很犀利!

    XXX 的世界关你们什么事?

    你不压制自己 XXX 的冲动,迟早会毁了这里。

    我站队是因为我有 point, 你们站队是因为无知

    就这样,我先滚。

    因为只有带领队伍的人知道谁在站队。

    我就是被封也要让人知道你们这群 XX 吹是多么恶毒。

    没点智商门槛就让人以为有讨论知识的权利,这是这个支持言论自由的世界给你们最大的错觉。
    noli
        44
    noli  
       2017-03-26 16:36:20 +08:00   1
    @ccsexyz

    准备上代码吧。
    写一个将来可能进标准的 C++ async await 的基于 fcontext 实现方案。
    接受挑战就来,不接受,就把你自己那句“会一点 C++ 就沾沾自喜” 吞下去。

    @SuperMild

    显然你对讨论我的兴趣更甚于讨论技术话题。
    四十岁前准备好转管理,你的准备挺充分的。
    Tom008
        45
    Tom008  
       2017-03-26 16:58:24 +08:00 via iPhone
    @all 大家不要吵了,免得自己人伤了自己人,被外人看笑话。 java php 才是大家共同的敌人! 哈哈哈
    elarity
        46
    elarity  
       2017-03-26 17:07:32 +08:00
    @noli 既不是 Goer ,也不是 C++er ,不过您平时生活中火气一直这么大么?
    seeker
        47
    seeker  
       2017-03-26 17:33:12 +08:00
    php 才是最好的语言,楼上这些人莫名其妙。
    zgqq
        48
    zgqq  
       2017-03-26 17:39:03 +08:00 via Android
    我是来看大佬撕逼的
    ccsexyz
        49
    ccsexyz  
       2017-03-26 17:54:23 +08:00
    @noli 知道你自己恶心在哪吗?就是这幅"我会 XXX,你们这帮不会的都没有和我说话的资格"的嘴脸,你以为我在攻击你 CXX 水平低所以不该咬人那你就大错特错了
    noli
        50
    noli  
       2017-03-26 17:56:27 +08:00
    @elarity

    noli 是一个马甲。
    找一个带着马甲发言的人要他说他的平时生活?呵呵

    不过即使不说线下,你若有心研究我的发言风格,你也可以看得出
    我找对手也是有研究的,专门挑弱的下手,逮住了就不轻易放松
    一直打下去,打出水平打出风格

    看他们平时说什么,讨论什么内容
    像你这种有可能讨论 posix api 问题的,就有可能水深

    像某位,看看他发言的随意性,
    就知道不太可能有严密的思维逻辑来打嘴仗,
    又或者是发言前通常不做思想准备
    又或者是情商不高自己说这说着就管不住嘴的那种。
    都是软柿子,使劲捏。
    noli
        51
    noli  
       2017-03-26 18:01:30 +08:00
    @ccsexyz

    你我都在粪坑里对喷了,我本来就不介意自己恶心到谁。
    只要让大家看见你这个炸粪坑的自己也一身粪,我卑鄙阴暗的心里就很快乐,是吧。
    然后我还要一脸傲娇地说,即使在粪坑里混,我的内心依然高洁得像小莲花,是吧。
    billlee
        52
    billlee  
       2017-03-26 18:09:38 +08:00
    r#19 @bianhua Rust 的目标就是系统编程,标准库不可能带太多东西的吧
    sagaxu
        53
    sagaxu  
       2017-03-26 18:11:44 +08:00 via Android
    @noli 只知道 ucontext , fcontext 是?
    e9e499d78f
        54
    e9e499d78f  
       2017-03-26 18:14:20 +08:00
    没有人讨论 C++17 增加了什么东西,倒是很多说这个好那个好的
    sagaxu
        55
    sagaxu  
       2017-03-26 18:16:30 +08:00 via Android
    @Lispre C++和 rust 的抽象是没有运行时代价的,所谓 zero cost abstraction ,你不用就没代价,你用了,也不会比手写的不抽象版付出更大代价。
    bianhua
        56
    bianhua  
       2017-03-26 18:24:41 +08:00
    @billlee

    就这个目标来说是的。 Rust 在我看来是一种对 C++进行剪枝的尝试,而 Go 则更像是一个全栈框架附送语言。

    另外我觉得,“系统编程”的范畴可大了,因为任何东西都能是个系统,感觉 Rust 野心不小。但如果它真想发展起来的话,得先像 C++那样有个 Boost 库一样的东西,否则个人觉得很难有吸引力。
    sagaxu
        57
    sagaxu  
       2017-03-26 18:28:35 +08:00 via Android
    @XIVN1987 没有泛型,入门容易啊,编译也快,也算是优点。缺点也有, primitive 类型的排序还要实现接口,似乎 1.7 开始稍有改善。有泛型的语言,都要了解 invariance,covariance,contravariance , javaer 可能还要去研究 type erasure ,要花几倍的时间和精力去避免语言特性的复杂度引起的坑。哪个更适合工程,看具体团队和项目了。
    noli
        58
    noli  
       2017-03-26 18:32:58 +08:00
    @sagaxu

    boost::fcontext 1.59 的时候还是一个独立的库,之后被合并了 成为 boost:coroutine 还有 1.63 boost::fiber 的基础。
    然而这不能阻止我们可以把它单独拿出来进行自己想要的协程封装。
    cchange
        59
    cchange  
       2017-03-26 18:50:08 +08:00
    还有个问题 现在兼容 C++ 17 的编译器和 IDE 除了 GCC 之外还有什么呢?
    请问 VS 什么时候支持? 真心求教 大家有消息吗
    sgissb1
        60
    sgissb1  
       2017-03-26 19:53:46 +08:00
    11 都还没有理解清楚 17 出来然而不见得有多大意义。

    目前在推 11 的好像就几家技术驱动型的大公司, 11 有一些不错的特性,但也有一些臃肿的特性,这样不好
    nicevar
        61
    nicevar  
       2017-03-26 20:01:53 +08:00   3
    真是服了, go 跟 c++有什么好撕的,两种语言的覆盖领域没多少重叠的地方
    要撕 go 也是跟 python 、 java 去撕啊
    ainimuyan
        62
    ainimuyan  
       2017-03-26 20:39:50 +08:00
    rust +1 , golang 大项目还是算了
    gouchaoer
        63
    gouchaoer  
       2017-03-26 20:49:53 +08:00
    @linux40 golang 没法和 rust 比, golang 本质上是一个 CSP 模型的协程静态类型语言外加自带的 runtime 。。。 rust 和 c++是一类
    k9982874
        64
    k9982874  
       2017-03-26 20:59:20 +08:00 via iPad
    学 c++的好处是断了程序触觉,精通了 c++再学习其它现代语言都是几个小时的事。
    然而精通 c++需要好多年。
    neoblackcap
        65
    neoblackcap  
       2017-03-26 21:04:41 +08:00   1
    @sagaxu zero cost abstraction 不是这样的意思吧?应该是哪怕你用了某些特性,将问题抽象层次提高了,你的运行成本也没有改变,就像你对一堆二进制数据强制类型转换,将它看成一个 struct ,这个一个强制类型转换是在编译时完成的,因此没有额外的运行成本。
    又或者是 C++里面的 template 或者 Rust 的宏,他们都是编译时完成的,但是运用他们的确可以提高我们的抽象层次。
    sagaxu
        66
    sagaxu  
       2017-03-26 21:07:25 +08:00 via Android
    @gouchaoer 协程太重要了,我司开始用 PHP 协程了,异步回调遇到复杂罗辑,可以嵌套几十层,很容易写错。虽然 rust 和 cpp 可以更快更强,但是要投入数倍的研发成本,全部都要用年薪 50 万以上的人,人数还得几倍,小厂吃不消。
    sagaxu
        67
    sagaxu  
       2017-03-26 21:12:33 +08:00 via Android
    @neoblackcap 不是所有的抽象都没有成本,比如虚函数有额外开销,所以才有人捣鼓 CRTP 这类奇淫技巧,只能说 cpp 和 rust 的抽象,几乎没有运行时开销,并不是完全没有。
    neoblackcap
        68
    neoblackcap  
       2017-03-26 21:22:58 +08:00
    @sagaxu 是的,但不是说 zero cost abstraction 是追求没有成本,它的追求应该是没有“额外”的抽象成本。
    miaotaizi
        69
    miaotaizi  
       2017-03-26 21:28:23 +08:00 via iPhone
    @noli 耍嘴炮的软柿子,使劲儿撕!
    elarity
        70
    elarity  
       2017-03-26 22:38:39 +08:00
    @noli 费这劲干什么,多休息休息,找个妹子,多接地气
    kotokz
        71
    kotokz  
       2017-03-26 23:02:46 +08:00
    @neoblackcap

    更多是说这个特性跟你手动实现相比不会有额外消耗
    例如 async/await 你手写状态机跟编译器实现相比基本一样。
    不代表完全没有额外成本
    mko0okmko0
        72
    mko0okmko0  
       2017-03-26 23:30:28 +08:00   1
    回主题:
    我一直希望 C(++)能越来越简单.实际上是越来越多 复杂,可互相取代的 特性出现.个人觉得.

    另外我非常讨厌指针所以我很喜欢 java/C#/php.

    如果有个语言能够让我很轻松的发挥 80%的效能.我就不介意他永远不能 100%发挥(我用意放弃 20%性能换取 80%性能).目前看起来 LLVM 的前中后三段方法是最接近的(前面处理语言.中间是逻辑.后面发挥硬体性能).

    如果能用 20 行写完逻辑我一点也不想写 100 行.所以特性够用就好.可以互相组合就好.
    但 go 没有泛型我真的蛮伤心的写 interface{}(也许以后会有).

    如果有个语言能够尽量降低错误发生我就觉得他成功一半了.C(++)类性能很好.可以写系统.
    可是他有机会写出不好的代码导致错误.
    后面发明了一堆与言我觉得这个也是原因.很多语言看起来就像 C(++)但少了很多问题特性.或是老旧遗产.应该就是这样来的.
    像我自己一边写程式一边思考如果我要发明一种程式语言.他应该要多简单多有效.在编译时期就能将开发者的思想完全转化成现代机器最好的执行方式.很多大学的 CPU/FPGA 设计 .编译炼设计 不就是要大家破而后立.而立而破吗(后面这句是在诅咒你立失败又再次立吗.大哭).

    @schezukNewTos
    我有用.因为我讨厌指针.我尽量用 safe D 子集.
    超冷门的好烦喔(大哭

    @sagaxu
    我很喜欢泛型 /模板(大哭
    wangxn
        73
    wangxn  
       2017-03-26 23:36:21 +08:00
    看到某人说写段什么什么代码就能证明懂 C++,这种自定义的标准也行……
    要我说啊,能在 comp.lang.c++ 邮件列表中对每个新的主题都回复一次,坚持一个月而不被管理员驱逐,我就服你懂 C++,否则也不过半桶水在晃啊晃。
    sadhen
        74
    sadhen  
       2017-03-26 23:43:34 +08:00
    来写 Scala 吧 以前写过 C++,觉得好难,现在写 Scala ,还是觉得好难,不过至少语法上好看多了
    lrxiao
        75
    lrxiao  
       2017-03-27 00:53:47 +08:00
    迷之撕点..C++是很屎..但是 11 以后的 C++每次改进都是向现代语言逼近
    ( lichray 最近居然上知乎了)
    orvice
        76
    orvice  
       2017-03-27 01:19:19 +08:00
    果然变成撕逼贴啦 233
    linux40
        77
    linux40  
       2017-03-27 08:35:02 +08:00 via Android
    @gouchaoer 眼科 or 语文老师,请。。。。(没有嘲讽的意思哈)
    taozhijiangscu
        78
    taozhijiangscu  
       2017-03-27 08:45:38 +08:00   1
    其实基于 boost::context 封装协程库已经很容易了,关键的上下文保存和切换已经做好了,自己只需要关注调度就行
    https://github.com/taozhijiang/libto.git

    C++给人的感觉就是永远不要说自己精通某种语言……
    araraloren
        79
    araraloren  
       2017-03-27 08:55:04 +08:00
    ~~ V2EX 上的人真,一句话就能让一个帖子变成 撕逼贴

    看原贴人家讨论的,对比这里,真是。。。不想说什么。。

    标题: XX 语言 XX 了

    沙发: XX 语言扒拉扒拉扒拉,我们早已经 转向宇宙无敌的 YY 了
    Reficul
        80
    Reficul  
       2017-03-27 08:56:48 +08:00 via Android
    作为一个 gopher 路过,看看楼上撕的。不怕撕就怕没人撕,撕得起来说明用的人多,撕不起来说明多半要黄。哪一个主流语言不被黑的,看看人家 PHP Java ,被黑这么惨不影响人家现在主流的统治地位。

    PS :好一个“ C 艹的世界”,写 Cpp 的真的是有信仰。
    enenaaa
        81
    enenaaa  
       2017-03-27 09:13:17 +08:00
    @taozhijiangscu 别说精通了, 现在都不敢说自己会写 C++了, 怕被打脸。一年一个新特性,各种花样翻新。
    VeryEase
        82
    VeryEase  
       2017-03-27 09:24:36 +08:00
    近几年都再用 C++11 ,出了 C++17 了看来需要关注下。 看到标题原以为是讨论 C++17 的新特性的,没想到,真无聊。
    AngelCriss
        83
    AngelCriss  
       2017-03-27 09:28:04 +08:00
    http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/n4656.pdf

    问一下,这个 networkig 进去了吗?
    taozhijiangscu
        84
    taozhijiangscu  
       2017-03-27 09:53:31 +08:00
    @AngelCriss

    进不进都无所谓了,反正现在的网络框架都用的 boost::asio
    taozhijiangscu
        85
    taozhijiangscu  
       2017-03-27 09:57:06 +08:00
    @enenaaa

    9494 ,看看 boost 库,那些 CPP 高级特性用的遛遛的,心里就感觉烦躁不安

    我觉得我等普通搬砖的,就要有使用 C++98 的心态,附加 C++11 的智能指针等常见的特性开发就差不多了。太复杂的东西吃不透容易出错,维护的人也头疼
    imbahom
        86
    imbahom  
       2017-03-27 10:00:48 +08:00
    php :?
    qhxin
        87
    qhxin  
       2017-03-27 10:04:46 +08:00
    楼已经被 go 带的歪得不行了
    simo
        88
    simo  
       2017-03-27 10:12:11 +08:00
    脱离产生背景、使用场景的撕逼语言都是耍流氓!无知而自大
    dazui
        89
    dazui  
       2017-03-27 10:28:50 +08:00
    各种原教旨主义和入门炮灰级入场了,圣战开始了吗,有大牛说说 17 的新特性没
    rrfeng
        90
    rrfeng  
       2017-03-27 10:34:16 +08:00
    这楼不是被 go 带的不行了。
    完全是某个人觉得在 C++ 帖子下面讨论 go/rust 是不符合主题的。

    我差点以为这个人是楼主,但是看了一眼并不是……所以他应该是个 go 黑。
    js1gsb
        91
    js1gsb  
       2017-03-27 10:50:14 +08:00
    本来以为 V2 大牛多,预感帖子里的回复是: XX 特性终于来了, XX 特性果然要废,写库更爽了,垃圾 XX 编译器什么时候才能支持新特性......
    然而帖子里面一堆讨论 XX 语言......
    早些时间逛论坛的时候就发现某些用现有工具的就是黑客,写脚本的吹自己全栈,摆点控件调点 api 就是精通 XX 编程......
    当然,我不会批判这些人,也不会去劝他们。他们多半会掉坑,那是他们自己的经历。

    也提醒一下自己要不忘学习进步,不被淘汰。
    ccsexyz
        92
    ccsexyz  
       2017-03-27 10:59:53 +08:00
    @taozhijiangscu 考虑到 Linux 下磁盘文件操作没法 poll,感觉这种协程库用起来还是没有自带协程支持的语言爽啊
    mozartgho
        93
    mozartgho  
       2017-03-27 11:07:10 +08:00
    @znood golang 也可以写界面了吗?我们用 C++都是写 GUI ,嵌入式上面的
    mozartgho
        94
    mozartgho  
       2017-03-27 11:09:57 +08:00
    @lsmgeb89 游戏,工业控制,实时交易,嵌入式(目前大规模的嵌入式都是 C++)
    taozhijiangscu
        95
    taozhijiangscu  
       2017-03-27 11:29:02 +08:00
    @ccsexyz

    自带协程必然是爽

    考虑到 Linux 下磁盘文件操作没法 poll
    是什么意思?蛤???
    liqiazero
        96
    liqiazero  
       2017-03-27 11:35:03 +08:00
    OO 阵营常年撕逼, FP 阵营做吃瓜群众
    arakashic
        97
    arakashic  
       2017-03-27 11:35:25 +08:00
    @cchange clang 。 MSVC 支持部分 Feature http://en.cppreference.com/w/cpp/compiler_support
    ccsexyz
        98
    ccsexyz  
       2017-03-27 11:36:57 +08:00
    就是字面意思啊, epoll 只能用来读写不是磁盘文件的东西。也就是说遇到读写磁盘该阻塞还是会阻塞的。
    acros
        99
    acros  
       2017-03-27 11:37:41 +08:00
    瑟瑟发抖, 11 后加了什么我都不知道了
    bianhua
        100
    bianhua  
       2017-03-27 11:42:47 +08:00
    @mozartgho

    如果你说的界面是 GUI ,那么其实你得先搞清楚什么是 GUI 以及操作系统如何支持 GUI 的。就像上面某个人说“有本事用 Go 写个游戏引擎”,都是没弄清问题的本质。

    在 Windows 下,绘制标准窗体是使用 User32 这个库中的函数来实现的,操作系统通过消息改变窗体组件的状态;在 Linux 下比较乱,比如用 GTK ,但原理是差不多的( GTK 也可以安装在 Windows 上)。

    就 3D 图形界面来说, Windows 下有 DirectX , Linux 下有 OpenGL (同样可以安装在 Windows 上)。

    因此你只需要一个能够调用上述库的语言就行了。

    哪怕你倔强的不去使用上述库,你也只需要一个能向操作系统发出系统调用的语言。 Go 当然能做到(很多语言都能做到,比如甚至 Python )。
    1  2  
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5805 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 37ms UTC 06:31 PVG 14:31 LAX 23:31 JFK 02:31
    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