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

Go 语言诞生的意义是什么?

  •  
  •   chenhui7373 · 2018-04-02 13:23:01 +08:00 · 6005 次点击
    这是一个创建于 622 天前的主题,其中的信息可能已经有所发展或是发生改变。
    貌似 窗口程序是从 smalltalk 开始的( Xerox PARC ),

    smalltalk 的作者 alan kay 说过,最后悔的就是发明了 Object,重要的是 message


    联系上 go 语言是从 google 发起的,究竟有什么意义呢?


    和 erlang 关键词搜:streem 或者 http://www.ituring.com.cn/article/177079
    第 1 条附言  ·  2018-05-09 09:24:20 +08:00
    现在天下分成 三派 LLVM JVM GolangGC

    LLVM Rust
    JVM Java Scala Groovy
    Golang + CGO
    第 2 条附言  ·  2018-06-10 16:48:15 +08:00
    第 3 条附言  ·  2018-06-17 17:29:03 +08:00
    wweir 87 天前 ♥ 7
    据我了解,国内招聘 go 的主要是这几个方向还行
    1、区块链 (感谢以太坊)
    2、容器 (感谢 docker )
    3、云、调度方向 (感谢 k8s )
    4、监控 (感谢 prometheus )
    5、做具体服务 (都是被 php 的性能坑了的)
    6、做中间件层 (还是被 php 的性能坑了的)
    52 回复  |  直到 2018-04-04 08:52:54 +08:00
        1
    jitongxi   2018-04-02 15:02:05 +08:00   ♥ 3
    诞生的意义就是,语法现代化,无任何依赖,直接吃全平台。
        2
    Keyes   2018-04-02 15:06:20 +08:00   ♥ 1
    @jitongxi libc 还是跑不了,不过已经非常好了,尤其是做需要下放到终端的跨平台程序,有没有太省心[真心实意的笑 cry]
        3
    aminic   2018-04-02 15:08:59 +08:00 via Android   ♥ 2
    娇娃感受到一万点伤害
        4
    mengzhuo   2018-04-02 15:18:51 +08:00   ♥ 1
    @Keyes #2 谁说依赖 glibc 的?

    你们当成 C++ 2.0 就行了
        5
    chenqh   2018-04-02 16:21:35 +08:00   ♥ 1
    集成 goroutine,
    静态语言不是 Java,c#
        6
    bobuick   2018-04-02 17:08:10 +08:00   ♥ 2
    比如, 写个多路复用的 io, 用 netty 一顿配置,一顿 addLast, 一顿重载写 channelRead。
    用 go,两个 goroutine,一个 chan 就好了。

    运维就更加了。 我们运维表示真是太他妈爽了,还能交叉编译(关键够无脑)。
        7
    twhphoenix   2018-04-02 17:24:50 +08:00 via Android   ♥ 5
    @mengzhuo
    C++ 2.0 ❌
    C 2.0 ✔️
        8
    unidentifiedme   2018-04-02 17:33:58 +08:00
    @jitongxi #1 Go 不依赖 libc 吧
        9
    yeyuexia   2018-04-02 17:34:45 +08:00
    我记得采访时说过,因为 c++的编译速度太慢了所以有了 go 233
        10
    zjyl1994   2018-04-02 18:16:49 +08:00
    全平台支持啊,我不会说上家的嵌入式设备就是用 go 写的 linux 包
        11
    jininij   2018-04-02 18:51:17 +08:00 via iPhone   ♥ 4
    为了与众不同。

    别的语言都习惯使用的语法。go 就反着来。
    其他语言不在乎的,go 就看重。
    其他语言在乎的,go 就忽略。
    其他语言要使用者自己实现的,go 就把它用语言特性实现。
    其他语言自己实现,想让使用者忽略的,go 就强制让使用者自己遵从。
    不为别的,就为了与众不同。
        12
    WildCat   2018-04-02 18:52:06 +08:00 via iPhone
    王垠:不过就是个 better shell 啦
        13
    g8287694   2018-04-02 18:54:22 +08:00
    @WildCat 又黑垠神
        14
    gimp   2018-04-02 19:19:28 +08:00
    Better C++ 不是 Rust 吗...
        15
    miketeam   2018-04-02 19:22:56 +08:00 via iPhone
    诞生的意义说又有 top 可以谈了,
        16
    chenhui7373   2018-04-02 19:24:23 +08:00
    @mengzhuo c++ 20 移除原始指针
        17
    mengzhuo   2018-04-02 19:32:55 +08:00   ♥ 5
    语法没啥问题,我 Python 转的都看得很舒服。
    别的语言不在乎什么?在乎什么?不细说没办法回。

    我只想说 Go 很工程,扎扎实实。
    遵从一个代码规范,没有泛型、重载、duck type,看代码就能知道发生了什么,不需要再看上下文,或者去考虑什么库版本乱七八糟的东西。
    一个静态二进制,没有依赖,只有经历过依赖噩梦才能体会必要。
    channel+goroutine 解决了进程间通讯,异步回调,这些伤脑的事,专注于逻辑实现,挺好。
    非空 interface 相当于承诺书,管你是 net.Conn, os.File, os.Pipeline, Kafka.Channel, 都能一样读出来,代码不用改。
    而语言层面支持 gen,告诉你,就算这都不行,还有自动化这条路。

    这就是为啥我喜欢 Go 的原因。

    搞语言学,或者自己炫技图爽显聪明的程序员,
    大可以对 Go 嗤之以鼻,换你们喜欢的方式去搞,
    反正到时候换了工作,哪用管后面接盘的怎么骂你。
        18
    gowk   2018-04-02 19:49:42 +08:00
    @mengzhuo 我用头像支持你
        19
    scnace   2018-04-02 20:15:05 +08:00 via Android   ♥ 1
    把时间花在该花的地方
        20
    glues   2018-04-02 20:17:50 +08:00   ♥ 1
    @mengzhuo 多少年了,连个像样包管理都没有,还好意思说很工程
    go 是不错,但是你都没吹到点子上,这也就是为什么网上黑 go 的人这么多了
    多学习几门语言再来评价,也就不会有那么多偏见,坐井观天的人都觉得自己拥有了全世界
        21
    abcbuzhiming   2018-04-02 20:47:27 +08:00   ♥ 2
    我记得有句话是这么说的,“学术界更看重继承,工程界只关注组合”,带着这点去看 Go 语言和其它 Object 类语言的不同,你就会突然有所感悟
        22
    abcbuzhiming   2018-04-02 20:51:01 +08:00   ♥ 3
    @glues js 从诞生到出现完善的包管理等待的时间更长,一点不妨碍人家成为流行语言,那个人说 Go 更偏向工程是没说错的,硬要说的话,Go 是针对当前软件工程上的某些痛点提出的特别解决方案,而且,Go 至少从设计上没打算把自己变成非常“全面的语言”。所以它放弃了其他一些东西,有人说这玩意是 C 2.0 非常形象,你想想 C 语言是尽善尽美的吗?
    Go 在某些领域是把锋利的小刀,但是它不是“全面的语言”。所以黑它的人不少,总之,用在合适的地方
        23
    xpresslink   2018-04-02 21:02:51 +08:00
    差不多就是楼上说的,为了解决 C 做为服务器后端开发过于繁琐的问题。
        24
    goophy   2018-04-02 21:13:54 +08:00 via iPhone
    业余程序猿看 go,语言简单,关键字少,源码一看就明白,没有那么多语发糖。编译好了直接扔服务器。速度快,占用内存小,越用越喜欢。之前用过 python,ruby。
        25
    Taobin90   2018-04-02 21:29:12 +08:00
    @glues 『这也就是为什么网上黑 go 的人这么多了 』我™还以为你发明过啥语言呢~都是搬砖的,装什么工头啊
        26
    feather12315   2018-04-02 21:44:38 +08:00 via Android
    @gimp #14,这几天在学 rust。 这个学习难度有点高…
        27
    liu7833   2018-04-02 21:51:01 +08:00 via iPhone
    为了在鄙视链上加一环
        28
    chenhui7373   2018-04-02 22:02:00 +08:00
    @liu7833 有道理,某汼就是跟着 G 家屁股后面做起云,G 家盯 AWS 打,汼得益于 GFW 成为中国版 G 家云。
        29
    JoostShao   2018-04-02 22:47:41 +08:00
    为了等待某人创建一个叫做 go++的语言
        30
    wingkou   2018-04-03 08:30:33 +08:00 via Android
    @JoostShao 不是等一个 Go#么🤔
        31
    goofcc   2018-04-03 08:55:38 +08:00
    go 的开发成本很低啊,可以为公司节省大把大把的银子,
        32
    yuqaf   2018-04-03 09:16:40 +08:00
    @chenhui7373 愚人节的笑话吧。。。我也差点当真了,没 raw pointer 还怎么向下兼容 C。。。。
        33
    j717273419   2018-04-03 09:25:23 +08:00
    你一定知道 oracle 要告 google 用 java 侵权了吧?
        34
    k9982874   2018-04-03 09:28:13 +08:00 via iPhone
    @mengzhuo 别侮辱 c++
        35
    abcbuzhiming   2018-04-03 09:40:24 +08:00
    @goofcc 你在做梦,决定成本的永远是业务本身,没有什么技术上的银弹能够“为公司节省大把大把的银子”,如果说某个公司上了 go 就“节省了大把的银子”,那一定是之前的程序员在划水
        36
    jlkm2010   2018-04-03 10:16:00 +08:00
    @abcbuzhiming 目前的市场上,用 go 确实能筛选掉一些不靠谱的程序员
        37
    linthieda   2018-04-03 10:20:47 +08:00
    @mengzhuo
    @twhphoenix
    Go 好像是有 GC 的。 目前最有潜力成为 C++ 2.0 的还是不争气的 Rust
        38
    abcbuzhiming   2018-04-03 10:21:01 +08:00
    @jlkm2010 筛选?嗯,那培训机构又有活了,抬头看苍天,他们绕过谁,java,C#,PHP。python,大数据,深度学习。30 天速成 Go 语言等着你,啊哈哈哈哈
        39
    jlkm2010   2018-04-03 10:25:24 +08:00   ♥ 1
    @abcbuzhiming 所以我说的是目前的市场上啊,go 真的大火了,这个功效确实就没了,不过个人感觉 go 用起来还挺舒服的
        40
    Wolther47   2018-04-03 10:29:02 +08:00 via iPhone   ♥ 1
    不不不,打不过 C++ 。Golang 是为了取代 C ++ ,但一不小心威胁到 Java 的语言。
        41
    Wolther47   2018-04-03 10:33:25 +08:00 via iPhone   ♥ 1
    另外,看 Golang 任何开源项目代码的体验非常好,godoc 非常清楚
        42
    petelin   2018-04-03 10:34:57 +08:00   ♥ 1
    @glues go get, glide, vender 这些工具用着有什么问题?
        43
    petelin   2018-04-03 10:36:35 +08:00   ♥ 1
    goroutine 对于多 x 程来说的, 封装的不能再好, 通信一个 channel 简直完美. 不知道为什么要黑, 我甚至觉得需要大量 x 程交互的应用无脑上 go 就好了
        44
    mengzhuo   2018-04-03 10:50:23 +08:00   ♥ 2
    @k9982874 #34 并没有,Ken 老爷子本来就是想对标 C++的,可以看看西乔的漫画,总结得挺好的
    https://blog.csdn.net/Jerry_1126/article/details/72811587
        45
    vincenttone   2018-04-03 11:05:45 +08:00   ♥ 1
    以前学 go 的时候不怎么喜欢语法风格,后来看了一些 go 项目的源码,发现 go 写网络应用还是很爽的。
        46
    chenqh   2018-04-03 11:20:10 +08:00   ♥ 1
    @abcbuzhiming 有可能是机器吧,但是都高并发了,换 golang,换 java 一样的啊,
        47
    Reficul   2018-04-03 11:23:48 +08:00   ♥ 1
    @abcbuzhiming Java 培训班可以三十天速成,那 Go 大概只要 3 天
        48
    ioth   2018-04-03 12:21:17 +08:00   ♥ 1
    语言是老外(包括日本人)的 it 呆子宅出来玩的。
        49
    jitongxi   2018-04-03 12:47:43 +08:00   ♥ 1
    @chenqh golang 可以直接用 java 早期的 bio 那样的写法写出高并发,怕不怕
        50
    lepig   2018-04-03 15:47:41 +08:00
    @glues 都是搬砖的,装什么工头
        51
    glues   2018-04-03 18:24:50 +08:00
    @lepig 不好意思,这里只有你是搬砖的
        52
    owenliang   2018-04-04 08:52:54 +08:00 via Android
    为了写并发网络省事
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2172 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 34ms · UTC 00:40 · PVG 08:40 · LAX 16:40 · JFK 19:40
    ♥ Do have faith in what you're doing.