首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
wesall100200
V2EX  ›  程序员

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

  •  
  •   wesall100200 · 292 天前 · 7256 次点击
    这是一个创建于 292 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

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

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


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

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

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