1
znood 2017-03-25 22:19:03 +08:00 via iPhone
写了两年 c++,都是用 03 ……而且都是当带类的 c 用
现在用 golang 发现一样的功能写的代码少了很多 |
2
htfy96 2017-03-25 22:30:37 +08:00
等 20 中
|
3
lsmgeb89 2017-03-26 00:39:04 +08:00 via Android
现在业界到底哪几个方向对 C++ 需求比较多?
|
5
wangxn 2017-03-26 01:12:12 +08:00 via Android
我也觉得 Go 写网络程序很方便。
一方面是 goroutine ,一方面是 http 标准库,再一方面是快速编译。其他倒没什么了。 说白了,就是标准库的问题。可惜 C++永远做不到这一点。 |
6
noli 2017-03-26 02:59:25 +08:00 via iPhone 8
golang 吹真恶心
c++的世界关你们什么事? |
7
zh5e 2017-03-26 08:28:58 +08:00 via iPhone
然而公司 11 都没用上
|
8
znood 2017-03-26 08:48:56 +08:00 via iPhone 11
@noli 没有针对任何人说,只是发表了一下自己的看法,毕竟语言进步就是靠对比的,哪里吹了?哪里恶心了?
你说这句话确实挺恶心的。 |
9
Lispre 2017-03-26 09:28:07 +08:00
其实语言新标做得工作更多是对于库作者和维护的支持,应用与业务的使用,就算是使用 03 的 C++也没有太大问题。 Go 一直没有提供类似模板的功能支持,一样用于很多大的工程就足以说明问题了。
抽象本身也是有代价的 |
10
linux40 2017-03-26 09:29:28 +08:00 via Android
go 有 gc 啊,要比也是和 rust 比。。。
|
11
taozhijiangscu 2017-03-26 09:53:39 +08:00
C++是开放的语言标准, Go 是 Google 一家的东西
单凭这一点看来,使用 Go 是有风险的! |
12
muziki OP 都在撕 go 。个人很喜欢 Rust ,不能自拔
|
13
Cbdy 2017-03-26 10:03:57 +08:00 via Android
标准做出来了,起码给个参考实现呗,每家搞一套算什么意思
|
14
sagaxu 2017-03-26 10:14:45 +08:00 via Android
能用 go 或者 JAVA 实现的项目,本身就不是 C++的战场
|
15
wangxn 2017-03-26 10:24:15 +08:00 via Android
我同时用 C++和 Go ,公司正在往 Go 转。
用 C++还用出优越感了?我还用了十三年呢。 服了某些人了。 |
17
XIVN1987 2017-03-26 10:46:44 +08:00 via Android 4
@wangxn
似乎现在用 Go 的更自我感觉优越,连没有泛型都是优点,,希望 Go 永远都不要有泛型,不然到时候承认 Go 变差了也不是,承认以前说的话是**也不是,多纠结啊! |
18
wangxn 2017-03-26 11:11:20 +08:00
@XIVN1987 假如用 Go 能用出优越感那就太奇怪了。因为人人学几天就能上手,难度何止差 C++十万八千里。逼格不高。
我推崇的是 Go 提供了很方便的基础设施用来编写网络程序。这一点 C++做不到。假如 asio 进了标准库,我是真不会用这东西,看都看不明白。 另外, interface{}就能达到泛型的近似效果。 Go 并不是一个完美的语言,例如我就讨厌它没有函数重载,但它对自身能处理的领域,做得很好。 |
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 这样的库可以用。 |
20
muziki OP @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 文档,社区都很棒,同时比较年轻,学习过程中也有不少机会参与整个社区生态的构建,要是有兴趣建议试试吧,当然看你自己了 |
21
schezukNewTos 2017-03-26 12:01:18 +08:00
果然现在还是没人用 DLang 。
|
23
wevsty 2017-03-26 12:36:18 +08:00
C++的学习曲线又陡增不少。
|
24
kmahyyg 2017-03-26 13:20:36 +08:00 via Android
很多语言的论坛对新手真的极端不友好,自己本身语言语法又很反人类,这就决定有些语言是死都不会用的。
pythoner ,看到这个帖子,准备去看看 rust ,问下各位前辈, rust 优点在哪?效率如何? |
25
muziki OP @kmahyyg rust 生态环境现在还不完善,语言自身也在小修小补,库一直在丰富但要是真的拿来开发的话,可能不是特别方便。 rust 的编译器比较好,开始基本上都是在和它斗争,但错误提示很明确基本都能找到解决方案,要是没找到,可能你发现了新 bug ?快去提 issue , pull 吧
学 rust 还是作为业余爱好比较好,工作岗位也不多。文档 社区氛围 库管理都很好。我自己是比较看好 Rust 前景,所以就学了当储备 |
26
noli 2017-03-26 14:38:19 +08:00 1
|
28
SuperMild 2017-03-26 15:19:26 +08:00
(真的很见不得逻辑混乱,所以吐槽几句)
上面 noli 的说法真的太混乱了: 1. 并没有变成 golang 粉的撕逼贴,只是有关于 golang 的讨论,并不激烈,回贴数量也没占多数。 2. 既然反对语言撕逼,为什么又参与语言撕逼?而且还是发起者。 3. 并没有证据表明说两句 golang 有优点的人就只能用 golang 啊,可能人家同时还用 C++ 呢。 4. 就算在你的世界观里半桶水的人只能用 golang 用不了 C++,可这不正是 golang 的优点和 C++ 的缺点吗。 还有很多,不一一说了,太乱了。我并不是赞同或反对哪个观点,只是,你提出一个观点至少得自圆其说吧。 |
29
alamaya 2017-03-26 15:29:18 +08:00 4
搞不明白人家发一个 C 艹的新标准贴,下面一堆宣传 go 的什么鬼。一股当初 lol 和 dota 的既视感。
|
30
noli 2017-03-26 15:36:14 +08:00
|
31
ccsexyz 2017-03-26 15:40:31 +08:00
|
32
eb0c6551 2017-03-26 15:42:33 +08:00 4
这个节点把 “ C/C++/Obj-C ” 放在一起好清奇...
|
33
noli 2017-03-26 15:43:54 +08:00
|
35
tyrealgray 2017-03-26 15:47:14 +08:00 via iPhone 1
楼上一群扯 go 的,你写个 3d 引擎用 go 写么?比就没比对,用 java 和 c#比至少也说的过去点啊
|
38
noli 2017-03-26 16:00:16 +08:00 1
@ccsexyz 因为只有带领队伍的人知道谁在站队。
C++程序员根本不怕谁黑。 不服你来写 C++ 啊,抱着 golang 有宝似的,也就你们这群低等码农了。 这贴反正被你们毁了,我就是被封也要让人知道你们这群 golang 吹是多么恶毒。 |
39
ccsexyz 2017-03-26 16:01:47 +08:00
@noli 呵呵在这条回复之前,我可是一个字也没有提到 go 的哦,不知道你怎么看出来的,你怎么知道我不是 java/phper 呢
|
41
noli 2017-03-26 16:06:25 +08:00
@ccsexyz
因为你没有表明你要讨论 C++ 的事情 。 别自作聪明了。管你什么鬼粉,敢自称 C++ 熟练了再过来说话。 没点智商门槛就让人以为有讨论知识的权利,这是这个支持言论自由的世界给你们最大的错觉。 |
42
ccsexyz 2017-03-26 16:13:21 +08:00
@noli 我可没有批评 C++的意思,你不要自己立个靶子自己打.我只是觉得,像你这样会一点 C++就沾沾自喜张牙舞爪瞧不起人的人,很 naive,换言之,很恶心
|
43
SuperMild 2017-03-26 16:15:12 +08:00 4
哈哈哈, noli 太搞笑了,我发现你每个回复都有金句,句式很犀利!
XXX 的世界关你们什么事? 你不压制自己 XXX 的冲动,迟早会毁了这里。 我站队是因为我有 point, 你们站队是因为无知 就这样,我先滚。 因为只有带领队伍的人知道谁在站队。 我就是被封也要让人知道你们这群 XX 吹是多么恶毒。 没点智商门槛就让人以为有讨论知识的权利,这是这个支持言论自由的世界给你们最大的错觉。 |
44
noli 2017-03-26 16:36:20 +08:00 1
|
45
Tom008 2017-03-26 16:58:24 +08:00 via iPhone
@all 大家不要吵了,免得自己人伤了自己人,被外人看笑话。 java php 才是大家共同的敌人! 哈哈哈
|
47
seeker 2017-03-26 17:33:12 +08:00
php 才是最好的语言,楼上这些人莫名其妙。
|
48
zgqq 2017-03-26 17:39:03 +08:00 via Android
我是来看大佬撕逼的
|
49
ccsexyz 2017-03-26 17:54:23 +08:00
@noli 知道你自己恶心在哪吗?就是这幅"我会 XXX,你们这帮不会的都没有和我说话的资格"的嘴脸,你以为我在攻击你 CXX 水平低所以不该咬人那你就大错特错了
|
50
noli 2017-03-26 17:56:27 +08:00
@elarity
noli 是一个马甲。 找一个带着马甲发言的人要他说他的平时生活?呵呵 不过即使不说线下,你若有心研究我的发言风格,你也可以看得出 我找对手也是有研究的,专门挑弱的下手,逮住了就不轻易放松 一直打下去,打出水平打出风格 看他们平时说什么,讨论什么内容 像你这种有可能讨论 posix api 问题的,就有可能水深 像某位,看看他发言的随意性, 就知道不太可能有严密的思维逻辑来打嘴仗, 又或者是发言前通常不做思想准备 又或者是情商不高自己说这说着就管不住嘴的那种。 都是软柿子,使劲捏。 |
51
noli 2017-03-26 18:01:30 +08:00
@ccsexyz
你我都在粪坑里对喷了,我本来就不介意自己恶心到谁。 只要让大家看见你这个炸粪坑的自己也一身粪,我卑鄙阴暗的心里就很快乐,是吧。 然后我还要一脸傲娇地说,即使在粪坑里混,我的内心依然高洁得像小莲花,是吧。 |
54
e9e499d78f 2017-03-26 18:14:20 +08:00
没有人讨论 C++17 增加了什么东西,倒是很多说这个好那个好的
|
55
sagaxu 2017-03-26 18:16:30 +08:00 via Android
@Lispre C++和 rust 的抽象是没有运行时代价的,所谓 zero cost abstraction ,你不用就没代价,你用了,也不会比手写的不抽象版付出更大代价。
|
56
bianhua 2017-03-26 18:24:41 +08:00
@billlee
就这个目标来说是的。 Rust 在我看来是一种对 C++进行剪枝的尝试,而 Go 则更像是一个全栈框架附送语言。 另外我觉得,“系统编程”的范畴可大了,因为任何东西都能是个系统,感觉 Rust 野心不小。但如果它真想发展起来的话,得先像 C++那样有个 Boost 库一样的东西,否则个人觉得很难有吸引力。 |
57
sagaxu 2017-03-26 18:28:35 +08:00 via Android
@XIVN1987 没有泛型,入门容易啊,编译也快,也算是优点。缺点也有, primitive 类型的排序还要实现接口,似乎 1.7 开始稍有改善。有泛型的语言,都要了解 invariance,covariance,contravariance , javaer 可能还要去研究 type erasure ,要花几倍的时间和精力去避免语言特性的复杂度引起的坑。哪个更适合工程,看具体团队和项目了。
|
58
noli 2017-03-26 18:32:58 +08:00
@sagaxu
boost::fcontext 1.59 的时候还是一个独立的库,之后被合并了 成为 boost:coroutine 还有 1.63 boost::fiber 的基础。 然而这不能阻止我们可以把它单独拿出来进行自己想要的协程封装。 |
59
cchange 2017-03-26 18:50:08 +08:00
还有个问题 现在兼容 C++ 17 的编译器和 IDE 除了 GCC 之外还有什么呢?
请问 VS 什么时候支持? 真心求教 大家有消息吗 |
60
sgissb1 2017-03-26 19:53:46 +08:00
11 都还没有理解清楚 17 出来然而不见得有多大意义。
目前在推 11 的好像就几家技术驱动型的大公司, 11 有一些不错的特性,但也有一些臃肿的特性,这样不好 |
61
nicevar 2017-03-26 20:01:53 +08:00 3
真是服了, go 跟 c++有什么好撕的,两种语言的覆盖领域没多少重叠的地方
要撕 go 也是跟 python 、 java 去撕啊 |
62
ainimuyan 2017-03-26 20:39:50 +08:00
rust +1 , golang 大项目还是算了
|
63
gouchaoer 2017-03-26 20:49:53 +08:00
@linux40 golang 没法和 rust 比, golang 本质上是一个 CSP 模型的协程静态类型语言外加自带的 runtime 。。。 rust 和 c++是一类
|
64
k9982874 2017-03-26 20:59:20 +08:00 via iPad
学 c++的好处是断了程序触觉,精通了 c++再学习其它现代语言都是几个小时的事。
然而精通 c++需要好多年。 |
65
neoblackcap 2017-03-26 21:04:41 +08:00 1
@sagaxu zero cost abstraction 不是这样的意思吧?应该是哪怕你用了某些特性,将问题抽象层次提高了,你的运行成本也没有改变,就像你对一堆二进制数据强制类型转换,将它看成一个 struct ,这个一个强制类型转换是在编译时完成的,因此没有额外的运行成本。
又或者是 C++里面的 template 或者 Rust 的宏,他们都是编译时完成的,但是运用他们的确可以提高我们的抽象层次。 |
66
sagaxu 2017-03-26 21:07:25 +08:00 via Android
@gouchaoer 协程太重要了,我司开始用 PHP 协程了,异步回调遇到复杂罗辑,可以嵌套几十层,很容易写错。虽然 rust 和 cpp 可以更快更强,但是要投入数倍的研发成本,全部都要用年薪 50 万以上的人,人数还得几倍,小厂吃不消。
|
67
sagaxu 2017-03-26 21:12:33 +08:00 via Android
@neoblackcap 不是所有的抽象都没有成本,比如虚函数有额外开销,所以才有人捣鼓 CRTP 这类奇淫技巧,只能说 cpp 和 rust 的抽象,几乎没有运行时开销,并不是完全没有。
|
68
neoblackcap 2017-03-26 21:22:58 +08:00
@sagaxu 是的,但不是说 zero cost abstraction 是追求没有成本,它的追求应该是没有“额外”的抽象成本。
|
71
kotokz 2017-03-26 23:02:46 +08:00
|
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 我很喜欢泛型 /模板(大哭 |
73
wangxn 2017-03-26 23:36:21 +08:00
看到某人说写段什么什么代码就能证明懂 C++,这种自定义的标准也行……
要我说啊,能在 comp.lang.c++ 邮件列表中对每个新的主题都回复一次,坚持一个月而不被管理员驱逐,我就服你懂 C++,否则也不过半桶水在晃啊晃。 |
74
sadhen 2017-03-26 23:43:34 +08:00
来写 Scala 吧 以前写过 C++,觉得好难,现在写 Scala ,还是觉得好难,不过至少语法上好看多了
|
75
lrxiao 2017-03-27 00:53:47 +08:00
迷之撕点..C++是很屎..但是 11 以后的 C++每次改进都是向现代语言逼近
( lichray 最近居然上知乎了) |
76
orvice 2017-03-27 01:19:19 +08:00
果然变成撕逼贴啦 233
|
78
taozhijiangscu 2017-03-27 08:45:38 +08:00 1
其实基于 boost::context 封装协程库已经很容易了,关键的上下文保存和切换已经做好了,自己只需要关注调度就行
https://github.com/taozhijiang/libto.git C++给人的感觉就是永远不要说自己精通某种语言…… |
79
araraloren 2017-03-27 08:55:04 +08:00
~~ V2EX 上的人真屌,一句话就能让一个帖子变成 撕逼贴
看原贴人家讨论的,对比这里,真是。。。不想说什么。。 标题: XX 语言 XX 了 沙发: XX 语言扒拉扒拉扒拉,我们早已经 转向宇宙无敌的 YY 了 |
80
Reficul 2017-03-27 08:56:48 +08:00 via Android
作为一个 gopher 路过,看看楼上撕的。不怕撕就怕没人撕,撕得起来说明用的人多,撕不起来说明多半要黄。哪一个主流语言不被黑的,看看人家 PHP Java ,被黑这么惨不影响人家现在主流的统治地位。
PS :好一个“ C 艹的世界”,写 Cpp 的真的是有信仰。 |
81
enenaaa 2017-03-27 09:13:17 +08:00
@taozhijiangscu 别说精通了, 现在都不敢说自己会写 C++了, 怕被打脸。一年一个新特性,各种花样翻新。
|
82
VeryEase 2017-03-27 09:24:36 +08:00
近几年都再用 C++11 ,出了 C++17 了看来需要关注下。 看到标题原以为是讨论 C++17 的新特性的,没想到,真无聊。
|
83
AngelCriss 2017-03-27 09:28:04 +08:00
|
84
taozhijiangscu 2017-03-27 09:53:31 +08:00
|
85
taozhijiangscu 2017-03-27 09:57:06 +08:00
@enenaaa
9494 ,看看 boost 库,那些 CPP 高级特性用的遛遛的,心里就感觉烦躁不安 我觉得我等普通搬砖的,就要有使用 C++98 的心态,附加 C++11 的智能指针等常见的特性开发就差不多了。太复杂的东西吃不透容易出错,维护的人也头疼 |
86
imbahom 2017-03-27 10:00:48 +08:00
php :?
|
87
qhxin 2017-03-27 10:04:46 +08:00
楼已经被 go 带的歪得不行了
|
88
simo 2017-03-27 10:12:11 +08:00
脱离产生背景、使用场景的撕逼语言都是耍流氓!无知而自大
|
89
dazui 2017-03-27 10:28:50 +08:00
各种原教旨主义和入门炮灰级入场了,圣战开始了吗,有大牛说说 17 的新特性没
|
90
rrfeng 2017-03-27 10:34:16 +08:00
这楼不是被 go 带的不行了。
完全是某个人觉得在 C++ 帖子下面讨论 go/rust 是不符合主题的。 我差点以为这个人是楼主,但是看了一眼并不是……所以他应该是个 go 黑。 |
91
js1gsb 2017-03-27 10:50:14 +08:00
本来以为 V2 大牛多,预感帖子里的回复是: XX 特性终于来了, XX 特性果然要废,写库更爽了,垃圾 XX 编译器什么时候才能支持新特性......
然而帖子里面一堆讨论 XX 语言...... 早些时间逛论坛的时候就发现某些用现有工具的就是黑客,写脚本的吹自己全栈,摆点控件调点 api 就是精通 XX 编程...... 当然,我不会批判这些人,也不会去劝他们。他们多半会掉坑,那是他们自己的经历。 也提醒一下自己要不忘学习进步,不被淘汰。 |
92
ccsexyz 2017-03-27 10:59:53 +08:00
@taozhijiangscu 考虑到 Linux 下磁盘文件操作没法 poll,感觉这种协程库用起来还是没有自带协程支持的语言爽啊
|
95
taozhijiangscu 2017-03-27 11:29:02 +08:00
|
96
liqiazero 2017-03-27 11:35:03 +08:00
OO 阵营常年撕逼, FP 阵营做吃瓜群众
|
97
arakashic 2017-03-27 11:35:25 +08:00
@cchange clang 。 MSVC 支持部分 Feature http://en.cppreference.com/w/cpp/compiler_support
|
98
ccsexyz 2017-03-27 11:36:57 +08:00
就是字面意思啊, epoll 只能用来读写不是磁盘文件的东西。也就是说遇到读写磁盘该阻塞还是会阻塞的。
|
99
acros 2017-03-27 11:37:41 +08:00
瑟瑟发抖, 11 后加了什么我都不知道了····
|
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 )。 |