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

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

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

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

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

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

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

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

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

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

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


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

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

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