• 请不要在回答技术问题时复制粘贴 AI 生成的内容
wesall100200
V2EX  ›  程序员

萌新求问, Golang 和 C++我应该选择哪一个作为备用语言?

  •  
  •   wesall100200 · Apr 9, 2019 · 12095 views
    This topic created in 2766 days ago, the information mentioned may be changed or developed.

    现在主力是 Java,不得不说 Java 真的很强悍,跨平台而且库多,可以搞定 CRUD 的 95%需求。
    然而我有时候觉得 Java 处理效率太慢了,想写一些计算机网络底层的貌似也比较受限(比如发个 icmp 包之类的,只看到官方实现了 UDP 和 TCP)。
    经过一番搜寻,比较满意的是 Golang 和 C++。对 Go 这门语言,印象最深的是可以编译出 N 个 exe 执行文件,貌似性能也算不错。
    还有一门 C++,据说是和 Java 对标的,但是感觉会不会性能提升上去开发效率却降下来了,库又不多。。。 萌新求指教,谢谢大佬!

    99 replies  •  2019-08-17 13:25:49 +08:00
    AngryPanda
    AngryPanda
    Apr 9, 2019❤️25
    1
    还有一门 C++,据说是和 Java 对标的???
    SuperMild
    SuperMild
    Apr 9, 2019
    2
    Rust 应该会比 C++好用一点,性能比 Go 高一丢丢。
    simple2025
    simple2025
    Apr 9, 2019 via Android❤️3
    3
    java 处理效率还低?
    whi147
    whi147
    Apr 9, 2019
    4
    C++是在内存上动手术刀,不小心就空指针崩溃。GO 解决了这些问题,不用担心指针问题
    whi147
    whi147
    Apr 9, 2019
    5
    当初要是有选择,我也选择 java,C++真是太难了。
    junjieyuanxiling
    junjieyuanxiling
    Apr 9, 2019 via Android❤️1
    6
    C++更难吧
    rockdean
    rockdean
    Apr 9, 2019
    7
    单纯的开发 rust 和 go 吧
    q397064399
    q397064399
    Apr 9, 2019❤️3
    8
    @whi147 #4 写挂的表示,没有这些骚操作,我就只能内嵌汇编了
    zhengxiaowai
    zhengxiaowai
    Apr 9, 2019❤️5
    9
    你应该选择一门脚本语言作为备用该语言,没见过 java 和 go 和 c++ 三个非用不可的地方
    SeaRecluse
    SeaRecluse
    Apr 9, 2019
    10
    还有一门 C++......
    nmap
    nmap
    Apr 9, 2019
    11
    还有一门 C++,据说是和 Java 对标的
    baicheng10
    baicheng10
    Apr 9, 2019❤️1
    12
    C 艹:我不要面子的啦
    nanaw
    nanaw
    Apr 9, 2019 via Android❤️1
    13
    这边建议用 Assembly Language 当备用语言哦
    hhyvs111
    hhyvs111
    Apr 9, 2019
    14
    c++都拿来当备胎了,楼主你飘了
    zjyl1994
    zjyl1994
    Apr 9, 2019❤️3
    15
    hmmm,去学 go 吧,好歹带 GC 的。
    C++难度很大,我认识好几个立志写 c++的写了几年就跑出来做别的了,太累。
    而且 C++需要手动管理内存,一个处理不好就是内存泄露浑身漏洞。没事别找事。
    mattx
    mattx
    Apr 9, 2019 via iPhone
    16
    c++ 属于修炼内功
    ghonfir
    ghonfir
    Apr 9, 2019
    17
    看你干什么的了 go 和 c++的学习成本完全不是一个等级的 假设你有操作底层的需求 或者写各种计算密集型应用 那 c++还是很强大的
    Kiota
    Kiota
    Apr 9, 2019
    18
    还有一门 C++,据说是和 Java 对标的,没毛病 2333
    GeruzoniAnsasu
    GeruzoniAnsasu
    Apr 9, 2019❤️7
    19
    这是我有生以来见到的第一个
    “以黑 PHP 的方式”黑 C 艹的帖子
    zjsxwc
    zjsxwc
    Apr 9, 2019
    20
    对 Go 这门语言,印象最深的是可以编译出 N 个 exe 执行文件,貌似性能也算不错。

    蛤?
    misaka19000
    misaka19000
    Apr 9, 2019
    21
    楼主黑 Java 慢显然没黑到点子上,而且发 ICMP 这种包显然需要操作系统的支持
    HackerPainter
    HackerPainter
    Apr 9, 2019
    22
    当 C++莫名其妙的 coredump 了,你就会发现 C++真操蛋;
    当 C++莫名其妙的内存泄漏了,你就会发现 C++真蛋疼;
    halk
    halk
    Apr 9, 2019
    23
    推荐下一个是脚本语言,例如 Python
    更实用,写个小工具,日志处理什么的很方便
    PureWhiteWu
    PureWhiteWu
    Apr 9, 2019
    24
    还有一门 C++,据说是和 Java 对标的
    bp0
    bp0
    Apr 9, 2019
    25
    我怎么感觉你们说的是 C,不是 C++。C++11 以后的智能指针基本能解决内存泄漏的问题。问题是大家都不怎么用 2333。

    另外,不知道谁对标谁。不过,C++是 1985 年的,Java 是 1995 年。
    iszero
    iszero
    Apr 9, 2019 via Android
    26
    为什么不是 C 啊,多简单,越来越不认识庞大复杂的 c++了
    q397064399
    q397064399
    Apr 9, 2019
    27
    C++ 自己手动管理内存,顺带了解下引用计数 有向图分析 等各类 GC 算法,有兴趣的自己搞一套协程 + 消息同步机制
    就差不多是半个 Golang 了, 这还是自带模板的。

    学语言就两门 C/C++ 这种直接操作内存(各种骚操作 内联汇编啥的) 跟 其它各类有高层抽象封装的语言。
    marsgt
    marsgt
    Apr 9, 2019
    28
    为啥要编译出这么多的 EXE 文件捏?
    BCy66drFCvk1Ou87
    BCy66drFCvk1Ou87
    Apr 9, 2019
    29
    C++从入门到放弃……那一大堆标准库就要耗费大量的时间
    mscb
    mscb
    Apr 9, 2019 via Android
    30
    字里行间,你不说写 Java 的我还以为你是写 PHP 的🤔
    waising
    waising
    Apr 9, 2019
    31
    我也是主 java 的 最近在看 golang
    BCy66drFCvk1Ou87
    BCy66drFCvk1Ou87
    Apr 9, 2019
    32
    @junjieyuanxiling 没见过敢说自己精通 C++的,比 java 难多了
    lilpig
    lilpig
    Apr 9, 2019 via Android
    33
    用 C++当备用语言??😂
    maxmin
    maxmin
    Apr 9, 2019
    34
    人家需求这么明显,想设计一些底层的网络
    那考虑啥。只有用 c/c++你才能看到里面的花花世界。

    还有那些说 c++莫名其妙的 crash,就觉得 c++操蛋? 这 tm 也能怪到语言上面来?
    自己懒,还都不谈 gc 的消耗。
    mamahaha
    mamahaha
    Apr 9, 2019
    35
    不要学狗熊掰棒子,到头来全都没掌握。
    webjin1
    webjin1
    Apr 9, 2019
    36
    没人说易语言吗?
    missdeer
    missdeer
    Apr 9, 2019❤️2
    37
    别听上面的人瞎说,C++是有点难有不少问题,但是你照 C++17,最次也是 C++14 的标准去用,几乎不会遇到上面的人说的这些情况,上面的人说的都是 C++98/03 那些 15~20 年前的标准才会有的事了
    pursuer
    pursuer
    Apr 9, 2019
    38
    用 java 迟早要学写 jni 的。所以还用选吗?当然 C/C++啦
    ivechan
    ivechan
    Apr 9, 2019
    39
    C++ 不适合备用吧,这玩意不经常写,肯定蒙蔽。。
    ebony0319
    ebony0319
    Apr 9, 2019
    40
    这是 c++在 v 站 黑得最惨的一次.
    cxh116
    cxh116
    Apr 9, 2019❤️1
    41
    C/C++ .太多的基础库是用它们来写的. 比如数据库驱动,Java Python PHP 语言的实现.

    不要求熟练,至少要能看懂.
    knowckx
    knowckx
    Apr 9, 2019
    42
    go 和 java 在后端开发这块重合很多,没必要学了 java 再去搞 go
    xyooyx
    xyooyx
    Apr 9, 2019 via iPhone
    43
    为什么会有备用语言的想法,不是应该深入吗。。
    across
    across
    Apr 9, 2019
    44
    看底层只有 C 和 C++(啥,什么汇编?)

    根据你的要求,Go 和 C++没法对标啊····
    lostberryzz
    lostberryzz
    Apr 9, 2019 via iPhone
    45
    推荐 Rust
    Yoock
    Yoock
    Apr 9, 2019 via iPhone
    46
    Puthon 吧
    Yoock
    Yoock
    Apr 9, 2019 via iPhone
    47
    Python 吧,打错了
    12101111
    12101111
    Apr 9, 2019 via Android
    48
    rust 吧,学会了有效的提升对编程语言的理解
    CTO
    CTO
    Apr 9, 2019
    49
    真要搞高性能的时候,恕我直言,带 gc 的一个能打的都没有
    eret9616
    eret9616
    Apr 9, 2019
    50
    学 C++把 我也在学,已经学半年了 目前工作是前端,我们一起学
    iceheart
    iceheart
    Apr 9, 2019 via Android
    51
    如果你以学习为乐趣,那 C++是好朋友,你的乐趣会一直在
    ae86
    ae86
    Apr 9, 2019
    52
    有空的话,c++值得一学,但是人家可不是用来当作备用的语言的呢
    sunny352787
    sunny352787
    Apr 9, 2019
    53
    这萌新也太新了吧🤦‍♂️
    chinafu
    chinafu
    Apr 9, 2019
    54
    c++值得一学...........
    murmur
    murmur
    Apr 9, 2019
    55
    当然是 c++ 以后越来越多的胶水语言涉及到底层还得是 c
    byteli
    byteli
    Apr 9, 2019 via Android
    56
    别 cpp,花几年可能都理不清楚,生命有限,感觉我这辈子已经花了不少时间处理内存泄漏和空指针了,还有堆栈被破坏的情况,那点时间留给 gc 调优以及申请机器多好,调优 gc 起码还能写文章分享经验
    q397064399
    q397064399
    Apr 9, 2019
    57
    @byteli #56 人家是想了解底层拿 CPP 当研究底层技术的手段,你那是拿 CPP 当饭吃 能一样吗
    出于技术研究跟爱好 C/C++ 基本上是避不开的
    q397064399
    q397064399
    Apr 9, 2019
    58
    @byteli #56 而且真的写底层的,不用智能指针,早些年泄露那都是家常便饭,但是一个小的 http 服务器 或者研究性质的代码 泄漏就泄露了反正又跑不了几分钟,现在好多写编译器演示的,直接略过了内存回收,泄漏就泄露了 反正又跑不了几分钟
    yujincheng08
    yujincheng08
    Apr 9, 2019 via Android
    59
    c++什么时候这么惨了😂
    VEEX6
    VEEX6
    Apr 9, 2019 via Android
    60
    @whi147 go 是为了实现垃圾收集才取消指针操作的,手动傻瓜化,鱼熊掌不兼得,操作空间大不可预测是 c 的优点而不是缺点。
    Vegetable
    Vegetable
    Apr 9, 2019
    61
    备用首选 python,其次我觉得 lua 都比 c++强,这两个各有特色.
    真的,要不看看 shell?你要的是备用语言,不是为了受虐,也不是为了补全自己的知识,起码这玩意得用得上是吧
    wth123456
    wth123456
    Apr 10, 2019
    62
    网页开发 js,数据开发 python。。。
    rb6221
    rb6221
    Apr 10, 2019 via iPhone
    63
    rust 和 go,你喜欢哪个就随便用吧
    c++肯定写的不快,图方便不用考虑他了
    Arnie97
    Arnie97
    Apr 10, 2019 via Android
    64
    小孩子才做选择,大人全都要
    反正你不是作为第一语言来深入细节,不如都看看
    beordle
    beordle
    Apr 10, 2019 via Android
    65
    你来说,最好的是学习 jvm 本身和 jvm 的扩展 jni,没有之一。所以选最正统的语言,c++
    beordle
    beordle
    Apr 10, 2019 via Android
    66
    简而言之 java 的技术栈最成熟,足够你干一辈子,所以怎么专注才是你要考虑的主要内容,你去大公司譬如阿里,肯定会面试到 jvm 或者其实现,这个时候会深挖 java 相关技术,你就知道为啥要学这个个东西了。jni 也可以满足你提高 java 性能的要求,所以选择 c++ 没有错的,大多数情况不用去 write,但要足够熟练的 read。毕竟 read 的时候可以忽略内存管理相关的细节。


    golang 这个语言本质上就是另一个 java,没有和 java 一起学的意义,当然作为一个从业者还是要理解其核心思想概念 但没必要去大量尝试。
    brainfxxk
    brainfxxk
    Apr 10, 2019
    67
    后悔十年前没学 c++ 不然现在可能就会 c++了...
    halo117
    halo117
    Apr 10, 2019 via iPhone
    68
    cpp 现在普遍应用场景和 java 不太一样,你当然会觉得 curd 的库不多,兴趣了解而不深入语言是两门选谁都无所谓, 还想吐槽下先确定是不是没有再来说,java 实现 icmp 发包困难,真的有用搜索引擎搜过那么难实现吗?算了无知者无畏
    Cbdy
    Cbdy
    Apr 10, 2019 via Android
    69
    Golang 就是重新发明 Java
    waruqi
    waruqi
    Apr 10, 2019 via Android
    70
    c/lua
    banbishan
    banbishan
    Apr 10, 2019 via Android
    71
    现在不是都 c++11 了吗,都智能指针了吗,auto_ptr、unique_ptr、shared_ptr、weak_ptr。还有 boost::scoped_ptr、boost::scoped_array、boost::intrusive_ptr。咋个还有严重的内存泄露问题。。。。
    ThomasZ
    ThomasZ
    Apr 10, 2019 via Android
    72
    @AngryPanda 看到这句话的时候我基本已经不想再看这贴了
    qilishasha
    qilishasha
    Apr 10, 2019
    73
    觉得 C++是一个大的分类,该死的 GCC,编译起来脑壳痛的感觉记忆犹新……
    zonga
    zonga
    Apr 10, 2019 via iPhone
    74
    萌新新的让我想起了当年打刀塔遇到的新手队友,游戏打字问队友假腿怎么出
    345161974
    345161974
    Apr 10, 2019
    75
    如果是为了快速原型,建议你 Go,Python,算瑞士军刀。
    king1101
    king1101
    Apr 10, 2019
    76
    和 java 对标的那个,叫 C#吧
    wweir
    wweir
    Apr 10, 2019 via Android
    77
    强烈建议上 Python 之类脚本语言。
    C++ 难度在那,不用说。
    golang 的话,至今没见到自我评价为 JAVA 程序猿的人,能把 golang 写好。两个语言描述世界的方式就不一样,一个继承、一个组合,文化冲突强烈。
    MilkShake
    MilkShake
    Apr 10, 2019
    78
    膜拜大佬,备用语言敢学 c++ 应该不是科班出身的吧。
    zarte
    zarte
    Apr 10, 2019
    79
    全都要,小孩子才做选择
    daodao116
    daodao116
    Apr 10, 2019
    80
    还有一门 C++,据说是和 Java 对标的???
    weiweicat123
    weiweicat123
    Apr 10, 2019
    81
    还有一门 C++,据说是和 Java 对标的
    wolfie
    wolfie
    Apr 10, 2019
    82
    写过 Java 好歹也听过 C++吧。。。
    vanxy
    vanxy
    Apr 10, 2019
    83
    备用语言这个概念太奇怪了, 只有根据需求选语言的。

    比如楼主这 ICMP 的需求,Google 一下,http://www.icmp4j.org/d/index.html 就能找到 Java 的库。

    > 有时候觉得 Java 处理效率太慢了
    看下来楼主貌似只用了 Java 一门语言,如何得出效率慢的结论的?
    wind3110991
    wind3110991
    Apr 10, 2019
    84
    “然而我有时候觉得 Java 处理效率太慢了”
    —— 你让成天和 OLAP、Hbase 等等大数据处理相关打交道的人情何以堪 = =。Java 是框架和各种 SDK 封装的会比较重,但是原生的 JDK 绝对不存在所谓的“处理效率太慢”的问题。
    更何况你要知道,横向扩容的成本,远远比纵向提升语言性能和开发效率的成本要低,所以不管你学什么语言作为备用,你对主语言 Java 的理解是远远不够的
    raptor
    raptor
    Apr 10, 2019
    85
    够浪吧,C++是大坑
    ZiLong
    ZiLong
    Apr 10, 2019
    86
    太萌了
    slince
    slince
    Apr 10, 2019
    87
    @knowckx go/c/c++是系统级别语言,可以开发服务端应用也可以开发服务端应用,开发的应用可以只发行一个 exe 文件,你用 java 写还要你的用户先去下载一个 jre 吗; java 只是服务端语言,谁给你的自信 java 可以和他们重合
    slince
    slince
    Apr 10, 2019
    88
    @slince 客户端
    wafm
    wafm
    Apr 10, 2019
    89
    @q397064399 握手,同行
    gz911122
    gz911122
    Apr 10, 2019
    90
    @slince java 也是客户端语言
    android 了解一下
    lithiumii
    lithiumii
    Apr 10, 2019
    91
    C++不是跟 Java 对标的吧,C++++才是(滑稽[后俩+要换行{#
    impl
    impl
    Apr 10, 2019 via Android
    92
    80 岁以后可以学点 cxx,go 可以不用学,用就行。
    kwanCCC
    kwanCCC
    Apr 10, 2019
    93
    1.choose Cplusplus
    2.Keep moving
    3.End of life
    C++三部曲,一直在逼近 3
    Katrol
    Katrol
    Apr 10, 2019
    94
    Golang 吧,C++学好不容易
    msaionyc
    msaionyc
    Apr 10, 2019
    95
    楼主你真的是萌新啊,c++是和 java 对标的,谁跟你说的啊
    mritd
    mritd
    Apr 10, 2019 via iPhone
    96
    如果你是 java,从发展方向上看,你未来巴不成得碰 docker 容器啥的,那么你应该选择 go
    fancyhan
    fancyhan
    Apr 11, 2019
    97
    C++备用不了,要学就学几年,备用请用 golang
    knowckx
    knowckx
    Apr 28, 2019
    98
    @slince 系统级语言的前提是内存的精细控制,带 GC 的 GO 离 c/c++有点远。
    GO 能做的,JAVA 也能做,两者可以互相代替
    CSEnter
    CSEnter
    Aug 17, 2019
    99
    @SuperMild rust 挺难的,比 c++性能高一丢丢
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   5398 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 220ms · UTC 02:46 · PVG 10:46 · LAX 18:46 · JFK 21:46
    ♥ Do have faith in what you're doing.