V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
pertersonvv
V2EX  ›  Go 编程语言

Go 是否可以替代 C 和 C++?

  •  
  •   pertersonvv · 2014-12-28 20:13:07 +08:00 · 4179 次点击
    这是一个创建于 3408 天前的主题,其中的信息可能已经有所发展或是发生改变。
    亲们为何学Go呢?学它是为了干啥的?
    88 条回复    2015-01-03 13:21:48 +08:00
    nicai000
        1
    nicai000  
       2014-12-28 20:16:24 +08:00
    不可以
    zhsso
        2
    zhsso  
       2014-12-28 20:16:54 +08:00   ❤️ 1

    大部分情况下可以替代
    当工具,没情怀,不纠结
    反正就一菜鸟,还没到讨论语言优劣的程度
    yksoft1
        3
    yksoft1  
       2014-12-28 20:30:34 +08:00
    C可以在DOS和没有OS的嵌入式环境下写程序,Go至少没有实现
    ForgotFun
        4
    ForgotFun  
       2014-12-28 20:38:01 +08:00
    可以替代,但是不能完全替代.
    maemual
        5
    maemual  
       2014-12-28 20:39:08 +08:00
    为什么要替代?
    mengzhuo
        6
    mengzhuo  
       2014-12-28 20:45:30 +08:00   ❤️ 1
    Go的出现拯救了很多追求性能,又想保留部分动态语言特性的菜鸟Python服务端程序猿……比如我……
    ll0xff
        7
    ll0xff  
       2014-12-28 20:47:20 +08:00

    很多应用场景下不可以替代,涉及底层太多的部分,也就C 了(汇编。。?!)
    C++我没怎么用过,但是很明显也不可替代
    Go有很多优秀特性没必要和别人抢一片天空

    我也是菜鸟,没到讨论语言优劣的程度
    pertersonvv
        8
    pertersonvv  
    OP
       2014-12-28 20:47:41 +08:00
    @ForgotFun 你也在用go?
    pubby
        9
    pubby  
       2014-12-28 20:48:32 +08:00 via Android
    今天碰到centos5.9内核版本太低装不上go
    9hills
        10
    9hills  
       2014-12-28 20:52:29 +08:00
    能在某些领域替代,这就够了
    railgun
        11
    railgun  
       2014-12-28 20:55:41 +08:00
    有大脑了难道就不需要脊椎了?
    ForgotFun
        12
    ForgotFun  
       2014-12-28 20:56:56 +08:00
    @pertersonvv 平时一些小工具会用go写.
    fwee
        13
    fwee  
       2014-12-28 20:59:38 +08:00
    在C/C++和java互相交叉的那一小块可以替代,所以没学它啊
    icedx
        14
    icedx  
       2014-12-28 21:04:32 +08:00
    不可以
    ChiangDi
        15
    ChiangDi  
       2014-12-28 21:07:36 +08:00   ❤️ 2
    其实这也是个委婉的圣战帖,比楼主上次发的那个“PHP 和 Ruby 哪个更有前途“高明多了,楼主是个赚铜币小能手。
    initialdp
        16
    initialdp  
       2014-12-28 21:08:52 +08:00
    我觉得替代C++没问题,替代C的话几乎不可能。go做服务端编程据说天生好手,有新项目的话打算试试。
    pertersonvv
        17
    pertersonvv  
    OP
       2014-12-28 21:11:54 +08:00
    @ForgotFun 为啥不用python?
    ForgotFun
        18
    ForgotFun  
       2014-12-28 21:13:53 +08:00
    @pertersonvv 主要C用时间长了,对python这一类的语法有点抵触,学了好多次但是心理上接受不了,后来正好看到了go就学着用了.当然我go的水平也就比hello world强一点.
    icylogic
        19
    icylogic  
       2014-12-28 21:23:05 +08:00
    - C != C++
    - 没有能力整体评价语言, 不过目前就我看到的, Rust 可能更被看好, 至少在取代 C++ 这件事上. 按我的试用感受, Rust 从各种范式吸收了很多, 语法特性丰富, 这点和 C++ 像, 不过比 C++ 好的地方是没有 C 的包袱, 所以内存管理要更安全和严格, 不会出现返回野指针这种事. 然后它试图通过编译期严格地检查来避免 Bug, 这点能不能实现有待观察, 但至少是值得期待的尝试. 不过我不太喜欢 .unwrap()
    pertersonvv
        20
    pertersonvv  
    OP
       2014-12-28 21:37:47 +08:00
    @ForgotFun 就会说你没准备好好学Go?会的Go差不多只能搞hello world么:(
    mahone3297
        21
    mahone3297  
       2014-12-28 21:38:50 +08:00
    @ChiangDi 哈哈哈,仔细去看了下,还真是lz发的,莫非真事来赚铜币的?哈哈
    ForgotFun
        22
    ForgotFun  
       2014-12-28 21:42:10 +08:00
    @pertersonvv 也不是的,我现在很少在一线写代码了.现在基本都是在公司管管营销这块(是我自己提出来的,领导批准了). 所以很难写出来那种规范和功能都是特别好的go代码.也就属于练手级别. 现在我自己的感受是年纪大了的确学不了东西了,脑子里装不下其他东西.

    现在有点理解张三丰叫教张无忌太极时候说的,你得忘记全部的武功. 想接受新事物,必须用原来的思维考虑东西.
    chenhui7373
        23
    chenhui7373  
       2014-12-28 21:43:17 +08:00
    Neveroldmilk
        24
    Neveroldmilk  
       2014-12-28 21:45:14 +08:00
    LZ无节操挑事。
    pertersonvv
        25
    pertersonvv  
    OP
       2014-12-28 21:45:37 +08:00
    @ForgotFun 你不搞技术了么?管营销平时很闲的吧?
    ForgotFun
        26
    ForgotFun  
       2014-12-28 21:49:39 +08:00
    @pertersonvv 人就像一根蜡烛,年轻的时候我比较卖力,两头都在烧,导致现在基本都是才华用尽了. 导致现在做啥事情都没当年的激情了. 有时候感觉是自己老了.

    营销我是比较喜欢的,程序员平时不和人接触,我想把我原来缺失的东西补回来.那就是交流和沟通.
    pertersonvv
        27
    pertersonvv  
    OP
       2014-12-28 21:51:07 +08:00
    @chenhui7373 python, ruby怎么成有害技术了,貌似很多人赞的啊...
    pertersonvv
        28
    pertersonvv  
    OP
       2014-12-28 21:52:09 +08:00
    @ForgotFun 从技术转营销,完全不写代码了么?
    ForgotFun
        29
    ForgotFun  
       2014-12-28 21:59:46 +08:00
    @pertersonvv 也在写,但不是那种为了工作而写的那种代码.缺少功利性和强迫了,反而写的比较少了.

    可能现在我的状态很多程序员都会遇到吧,事业的低谷期吧,感觉被人抛弃那种感觉.
    njutree
        30
    njutree  
       2014-12-28 22:00:59 +08:00
    go语言今年的口号是rewrite it all。至于为什么这么说你可以看下这个https://www.v2ex.com/t/155955#reply1
    pertersonvv
        31
    pertersonvv  
    OP
       2014-12-28 22:07:32 +08:00
    @ForgotFun 是你自己不想写代码额,亲,搞技术工资应该比营销高吧:)
    pertersonvv
        32
    pertersonvv  
    OP
       2014-12-28 22:09:41 +08:00
    @njutree go的开发效率高么?
    ForgotFun
        33
    ForgotFun  
       2014-12-28 22:10:08 +08:00
    @pertersonvv 到手9.6K吧,也不算高.主要想给自己留点退路吧,毕竟程序员这行不是长青的. 28-30这段时间其实应该考虑下转型的,不然真晚了.
    pertersonvv
        34
    pertersonvv  
    OP
       2014-12-28 22:12:09 +08:00
    @ForgotFun 你搞技术几年了?
    damngood
        35
    damngood  
       2014-12-28 22:14:10 +08:00
    就 golang 需要 runtime 这点就说明不能完全替代 runtime-less 的 c & c++
    rust 可能性更大点.
    lznigxyy
        36
    lznigxyy  
       2014-12-28 22:14:15 +08:00
    国内用go的还比较少吧
    mimzy
        37
    mimzy  
       2014-12-28 22:14:59 +08:00   ❤️ 2
    楼主6天内发了大约32个帖子,看上去十分求知若渴,不过还是建议除非真的遇到了实际性问题,少发一些争议帖,个人认为这样多少让论坛有点水。
    ForgotFun
        38
    ForgotFun  
       2014-12-28 22:15:13 +08:00
    @pertersonvv 我在大学就开始写代码了,现在算来有6-7年了. 现在国内很多路由器代码基本都是我大学和工作期间转让的.包括现在电信用的比较多的Javascript注入技术.
    233
        39
    233  
       2014-12-28 22:26:14 +08:00
    lz是不是常混贴吧,水经验成性了吧
    daiv
        40
    daiv  
       2014-12-28 22:42:03 +08:00
    怎么不说是 python 呢
    Bluecoda
        41
    Bluecoda  
       2014-12-28 22:49:56 +08:00
    go根本无法替代c,首先go编译出来的东西根本无法让其他语言简单的调用。这一点上,rust秒go几条大街。
    pertersonvv
        42
    pertersonvv  
    OP
       2014-12-28 23:05:05 +08:00
    @ForgotFun 那亲是不是发大财了呢,哈哈
    pertersonvv
        43
    pertersonvv  
    OP
       2014-12-28 23:06:22 +08:00
    @Bluecoda rust不火吧?都有哪些大程序用rust开发的?
    Bluecoda
        44
    Bluecoda  
       2014-12-28 23:13:04 +08:00
    @pertersonvv 现在确实不咋火,还没release呢
    njutree
        45
    njutree  
       2014-12-28 23:19:32 +08:00
    @pertersonvv go的开发效率非常的高,至于为什么我上面的回复里面的那个帖子里面有解释。
    pertersonvv
        46
    pertersonvv  
    OP
       2014-12-28 23:22:49 +08:00
    @Bluecoda 那你关注它干啥?
    pertersonvv
        47
    pertersonvv  
    OP
       2014-12-28 23:23:43 +08:00
    @njutree go开发效率应该不及动态语言
    njutree
        48
    njutree  
       2014-12-28 23:27:27 +08:00
    @pertersonvv 开发效率的高低和是不是动态语言有什么关系?
    lidashuang
        49
    lidashuang  
       2014-12-28 23:29:26 +08:00
    @njutree 有关啊,和语言有很大关系啊
    wuxqing
        50
    wuxqing  
       2014-12-28 23:33:09 +08:00
    chenhui7373 的链接,估计很多人不会认同,哈
    njutree
        51
    njutree  
       2014-12-28 23:33:25 +08:00
    @lidashuang 我只知道go语言非常的简洁高效,心智负担非常的低,非常方便的测试用例,良好简单的自动文档。
    barbery
        52
    barbery  
       2014-12-28 23:41:12 +08:00
    虽然我很喜欢go,但是事实是Go不能完全代替C,官方的pkg包就有不少一部分是C写的。。
    pertersonvv
        53
    pertersonvv  
    OP
       2014-12-28 23:46:14 +08:00
    @njutree 可以不学C,直接上Go么?
    ertp2732
        54
    ertp2732  
       2014-12-28 23:51:15 +08:00
    语言只是工具,核心是思想,合适就用,不合适就换,没有最好或代替之说,不要纠结这些。
    polythene
        55
    polythene  
       2014-12-28 23:52:36 +08:00
    那末请问楼上各位大大,用go写出来的代码可移植性好么,就是它可以在各种*nix平台编译并且运行么,它需要有各种运行时环境么?
    lidashuang
        56
    lidashuang  
       2014-12-29 00:07:51 +08:00
    @njutree 是这样的,不过和动态语言比开发效率还是不行
    sing1ee
        57
    sing1ee  
       2014-12-29 00:14:55 +08:00
    go的内存管理,问题还是有的。Rust应该不错。
    soone
        58
    soone  
       2014-12-29 00:19:44 +08:00
    @Bluecoda go1.4版本可以编译出.so的文件了哦
    reusFork
        59
    reusFork  
       2014-12-29 00:33:51 +08:00
    runtime部分已经是纯go了,1.5的编译器也将是纯go的。其他领域不好说,google go编译器里的C是要被替代了的。
    可移植性也不错,windows、linux、darwin、*BSD、solaris、Nacl、plan9等等。
    pertersonvv
        60
    pertersonvv  
    OP
       2014-12-29 06:35:53 +08:00
    @reusFork go与C可以混合编程么?
    Bluek404
        61
    Bluek404  
       2014-12-29 06:48:26 +08:00 via Android
    @pertersonvv 有cgo
    而且用go写的系统也有了
    虽然是修改版的go
    不过用go的主要原因是简单省事
    pertersonvv
        62
    pertersonvv  
    OP
       2014-12-29 06:51:01 +08:00
    @Bluek404 搞go用啥ide比较好?
    Bluek404
        63
    Bluek404  
       2014-12-29 06:52:18 +08:00 via Android
    @pertersonvv 萝卜白菜各有所爱
    就不引起圣战了
    都用一遍就知道了
    pertersonvv
        64
    pertersonvv  
    OP
       2014-12-29 06:58:07 +08:00
    @Bluek404 不是圣战额,比下优劣也没有错额:)
    qdwang
        65
    qdwang  
       2014-12-29 07:52:22 +08:00 via Android
    目前rust呼声比go高一些
    pertersonvv
        66
    pertersonvv  
    OP
       2014-12-29 08:06:24 +08:00
    @qdwang 好像这里就你在呼
    jyoe
        67
    jyoe  
       2014-12-29 08:35:46 +08:00
    又见战帖
    pertersonvv
        68
    pertersonvv  
    OP
       2014-12-29 08:37:57 +08:00
    @jyoe 比较贴好伐?
    njutree
        69
    njutree  
       2014-12-29 09:46:10 +08:00
    @pertersonvv 可以啊,不用学c可以直接上go
    njutree
        70
    njutree  
       2014-12-29 09:47:48 +08:00
    @lidashuang 举几个动态语言来看看。
    9
        71
    9  
       2014-12-29 10:13:27 +08:00
    那你觉得 docker 为什么是用 go 来写的呢?
    Bluecoda
        72
    Bluecoda  
       2014-12-29 10:13:35 +08:00   ❤️ 1
    @pertersonvv 因为我对比两个语言后,我觉得我还是更喜欢rust多一些,而且rust的特性更吸引人
    Bluecoda
        73
    Bluecoda  
       2014-12-29 10:16:09 +08:00
    @soone 哦?1.4可以了吗?但是是M:N模型的并发,不可以让别的语言简单的使用FFI进行调用吧?我记得go 1.4的so是给android用的。rust的so和c的so没有什么区别,可以简单的给erlang/ruby等等第三方语言直接调用。
    pertersonvv
        74
    pertersonvv  
    OP
       2014-12-29 10:22:16 +08:00   ❤️ 1
    @Bluecoda go 1.4的so是给android用的,不能给其他语言用么?
    ThomasZ
        75
    ThomasZ  
       2014-12-29 10:33:26 +08:00
    可以代替, 但是替代是不行
    Bluecoda
        76
    Bluecoda  
       2014-12-29 11:22:15 +08:00
    @pertersonvv 我记得是这样的,因为go那一套东西本来就很难做到和c一样的兼容性,所以要做到和c一样的扩展能力,非常难,你看,他还有gc呢。不过我也有可能错了,欢迎打脸。
    lidashuang
        77
    lidashuang  
       2014-12-29 11:39:24 +08:00
    @njutree 比如go,ruby , beego, rails
    njutree
        78
    njutree  
       2014-12-29 11:56:13 +08:00
    @lidashuang go不是动态语言,beego只是一个开发框架。动态语言是有一定的优越性,但并不能在开发效率上有质的提升。就go目前提高效率的方面来看,我认为是我用过语言中最高效的(c,c++,php,java,javascript,wiring, oc, go).go 使用的是同步编程的模型,相对异步来讲大大降低了程序猿的心智负担,其次非常的简洁干净的包管理结构清晰,自动文档化方便协作,良好的单元测试降低测试时间提高代码质量,非常方便的第三份库管理。
    xjliao
        79
    xjliao  
       2014-12-29 11:57:02 +08:00
    你说的话 暴露了你自己的经验 代替这样的话 不要随便乱说的 存在的即合理的 即有他的长处
    pertersonvv
        80
    pertersonvv  
    OP
       2014-12-29 12:29:22 +08:00
    @njutree 你是做啥开发的?听说做web开发,用Ruby开发效率最高的
    benjiam
        81
    benjiam  
       2014-12-29 13:10:20 +08:00 via Android
    在服务器方面 会的
    webobo365
        82
    webobo365  
       2014-12-29 14:25:04 +08:00
    用什么语言取决于需求,在可预见的时间范围内,Go语言不可能取代C/C++, 但是Go语言有自己的用武之地。 不要陷入语言孰优孰劣的争论。
    Vedar
        83
    Vedar  
       2014-12-29 16:07:00 +08:00
    @Bluecoda 握手 我也很看好rust 对go无感
    pertersonvv
        84
    pertersonvv  
    OP
       2014-12-29 16:08:20 +08:00
    @Vedar go要死的节奏么?
    JQ
        85
    JQ  
       2014-12-29 18:54:22 +08:00
    不知道其他人如何,我写go程序目前比较吃力的。不像Python那样可以直接用边写边调试。
    pathletboy
        86
    pathletboy  
       2014-12-29 19:16:49 +08:00   ❤️ 1
    @JQ 那说明你开发方法不对,模块化+单元测试,实现你所谓的边写边调试,搜索看看go如何进行单元测试吧,会让你有启发的。
    ming2281
        87
    ming2281  
       2014-12-29 23:51:24 +08:00
    会慢慢侵蚀它们的领域,但是有一些核心领域,C/C++没有替代者.

    这件事情Java做了这么多年了,还是没有kill掉他俩, 可见路还是得慢慢走.
    mathgl
        88
    mathgl  
       2015-01-03 13:21:48 +08:00
    汇编都没有被替代,我同事还在用汇编。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   947 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 19:29 · PVG 03:29 · LAX 12:29 · JFK 15:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.