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

golang 是不是云时代的 PHP ?

  •  2
     
  •   cxytz01 · 2021-04-02 21:49:51 +08:00 · 7956 次点击
    这是一个创建于 1334 天前的主题,其中的信息可能已经有所发展或是发生改变。

    golang 是不是云时代的 php?

    傻瓜、易懂,跟着入门教程: https://tour.golang.org/welcome/1, 几下就能上手了。 php 人员转 golang,java 人员转 golang,c++人员转 golang,就连和互联网不搭边的 c#的工程师,也觉得用 golang 写 server 方便。

    51 条回复    2021-04-06 09:19:10 +08:00
    ReferenceE
        1
    ReferenceE  
       2021-04-02 21:51:49 +08:00 via Android
    万物皆转 php
    还有"和互联网不搭边的 c#的工程师"有被冒犯到
    wellsc
        2
    wellsc  
       2021-04-02 21:52:02 +08:00 via iPhone
    就是云时代的 php,还特喵的 zero abstract,写起来贼蛋疼
    cxytz01
        3
    cxytz01  
    OP
       2021-04-02 21:55:22 +08:00
    @ReferenceE 抱歉,没有诋毁的意思。我也写过 c#,觉得这门语言,写着很舒服。只是觉得国内互联网领域几乎不用 c#,传统行业居多。
    liaohongxing
        4
    liaohongxing  
       2021-04-02 22:01:31 +08:00 via Android
    已经全员转 go ,配合 watch 文件自动编译。写起来像脚本,
    MeteorCat
        5
    MeteorCat  
       2021-04-02 22:35:09 +08:00 via Android
    php 是站长部署容易,WordPress 的占有率在那摆着
    kiripeng
        6
    kiripeng  
       2021-04-02 22:45:51 +08:00
    golang 是工程语言,本来就是面向工程编程。所以写起来很舒服,而且编译就是个二进制,基本上就不用像 java 那成本高,也不像 php 那么微妙。但是论生态肯定是 java 首选,论成本选 golang 确实很适合,很多人觉得 golang 垃圾,但是 js 那么多人为限制还不是前端打语言。
    虽然简单,不过下限很低的写出来的代码足以跑得很快,但是 c++转 golang 就觉得大可不必,主要 golang 是 GC 语言本来对于内存调度那块就很微妙,我是觉得 rust 才是 c++工程师的首选。
    而且对于 golang 学习成本低,但是想搞好,也不是那么简单就是了
    mogg
        7
    mogg  
       2021-04-02 23:24:53 +08:00   ❤️ 1
    足够简单,足够好用,大厂背书,有成功的超大项目,贴合开源社区。什么叫“世界上最好的语言”啊( x )
    honkki
        8
    honkki  
       2021-04-02 23:56:53 +08:00
    上手简单 想写出好的 go 代码还是不容易的
    luoqeng
        9
    luoqeng  
       2021-04-03 00:10:18 +08:00
    楼主很有觉悟
    hronro
        10
    hronro  
       2021-04-03 00:21:55 +08:00
    @wellsc Go 还能和 zero abstract 扯上关系?
    cxytz01
        11
    cxytz01  
    OP
       2021-04-03 00:55:04 +08:00
    @kiripeng
    当前 rust 没有市场,c++工作本来就难找,转 rust 就更找不到了。
    另外 c++转 golang 也不是不可,毕竟许多 c++应用不需要什么高性能,低成本,比如腾讯、百度那些拿 c++写业务的场景,转 golang,更能短平快的把业务写出来,老板更开心。
    另外 c++人员,也会被市场推着远离 c++这条道路。原因是许多搞 golang 的公司,都喜欢 c++人员转 golang 。另外公司内部如果有 c++项目,也会在思考着把性能无关的项目转向 golang 开发。
    wellsc
        12
    wellsc  
       2021-04-03 01:25:26 +08:00 via iPhone
    @hronro 谈谈您理解的零抽象?
    kiripeng
        13
    kiripeng  
       2021-04-03 02:16:11 +08:00
    @cxytz01 遇到不在意 GC 的情况当然 Golang 首选,在乎 GC 的当然选择 rust 。我的本意就是这样
    zjsxwc
        14
    zjsxwc  
       2021-04-03 06:29:07 +08:00 via Android   ❤️ 2
    写业务还是得 php,
    go 写业务太啰嗦了


    surbomfla
        15
    surbomfla  
       2021-04-03 08:29:55 +08:00
    我觉得 说云时代的 php 那也太贬低 golang 了吧.

    @MeteorCat 部署 php 程序感觉好难受.

    曾经搭过 Laravel 框架写的 onedrive 目录,

    先配置 php 环境,看程序要求哪个 php 版本写的,编译安装用 lnmp,编译配置环境还要看需要什么 php 扩展,

    安装 Composer,下载源码,编译(应该是编译吧,没怎么写过 Laravel 框架的),

    最后写 nginx 配置,结果还是没成功跑起来.

    不知道是我太菜了还是 php 部署太难.

    (大佬勿喷,请放过小白)

    golang 这边编译速度快,单文件直接跑,不需要什么环境依赖,简直不要太舒服.
    MeteorCat
        16
    MeteorCat  
       2021-04-03 08:53:25 +08:00 via Android
    @surbomfla laravel 不能代表 php,最开始 php 就是简单粗暴直接写上 echo 就行了,laravel 说实在就是抛弃 php 这种简单易用特点直接去复杂化
    janxin
        17
    janxin  
       2021-04-03 09:14:24 +08:00
    莱,一起数一数 lz 一次黑了几种语言?
    Sunyanzi
        18
    Sunyanzi  
       2021-04-03 09:24:12 +08:00   ❤️ 1
    首先说结果 ... php 和 go 显然是两个方向 ... 应用场景和功能定位都完全不同 ...

    中型以上的 Web 项目对我来说使用 php 还是首选 ... 小型项目里 Go 的二进制包即传即用实在是深得我心 ...

    真的 ... 语言间没有说谁是替代谁的一说 ... 各有各用 ... 多会一门语言多一条路罢了 ...

    题外话 ... 我有台 32MB 内存的 VPS ... 跑了个自制的 Linux ... 只有 kernel + rootfs + Go binary ...

    整个系统里没有任何我用不到的文件 ... 整洁精致 ... 而且服务跑起来内存占用稳定在 8M 上下 ...

    就这个效果 ... 换其他语言 ... C 系列不论 ... 不管是 P 开头 R 开头还是 J 开头的都实现不了 ...

    这时候我用 Go 写是因为我不得不用 ... 总比折腾内存强 ... 其他场景自然有其他的需求 ... 再按需选语言就好 ...
    MengiNo
        19
    MengiNo  
       2021-04-03 09:30:13 +08:00
    Golang 和 PHP 都是上手容易写好难,Golang 乍一看容易,PHP 是真的容易; Golang 写好难,PHP 是乱写都能跑以至于根本用不着写好。现在 PHP 黑的透透了,开始轮到 Golang 了。
    zjsxwc
        20
    zjsxwc  
       2021-04-03 09:31:47 +08:00 via Android
    @surbomfla
    部署这个看系统,linux 部署很简单,

    环境只是一条 apt install 就装需要的 php 环境与拓展,不用你自己手动编译,

    composer 下载 php 三方代码依赖库或者二进制 excutable,是开发时才用到,你部署时 composer 下载的东西当然已经和你的 php 代码在一个项目里,所以 composer 对于部署没影响,

    至于 nginx 问题,你也可以不用 nginx,就像你可以选择不用 mysql 数据库一样,你就可以不用配置 mysql,如果你不用 nginx 你就可以不用配置 nginx,
    比如正好有个 go 写的代替 nginx 的高性能 php server 叫做 roadrunner,直接用 composer 装相关的集成就能用,都不用修改默认配置

    与 laravel 集成 https://github.com/spiral/roadrunner-laravel

    与 symfony 集成
    https://github.com/baldinof/roadrunner-bundle
    agdhole
        21
    agdhole  
       2021-04-03 09:33:15 +08:00
    @surbomfla #15
    现代 PHP 应用都要走这几步了,composer 拿来装第三方包和自动加载,连接数据库之类的需要装扩展,nginx 和 FPM 联动转发请求,部署很麻烦。
    surbomfla
        22
    surbomfla  
       2021-04-03 10:03:30 +08:00
    @MeteorCat
    @zjsxwc
    非常感谢回复
    surbomfla
        23
    surbomfla  
       2021-04-03 10:09:12 +08:00
    @MeteorCat 学校老师教的就是直接 echo,但是感觉没有工程化或者模块化,东一扯西一坨,现在没有多少 新的 企业项目这样写了吧
    surbomfla
        24
    surbomfla  
       2021-04-03 10:22:35 +08:00
    @zjsxwc 谢大佬不吝赐教

    部署起来感觉每一步都不难,但是把他们加起来稍微麻烦.
    MeteorCat
        25
    MeteorCat  
       2021-04-03 11:14:59 +08:00 via Android
    @surbomfla 是这样的,这也是当年 php 站长采用的原因,很多都不需要什么高深编程经验直接上手一把梭,才能直接流行出来;其实只要简单易用,那么他就有火起来的资格,python 和 php 就是这样
    frankwyw
        26
    frankwyw  
       2021-04-03 11:18:01 +08:00
    golang 是云时代的 c 语言
    halo117
        27
    halo117  
       2021-04-03 11:52:12 +08:00 via iPhone
    这是 go 在 v 站黑的最惨的一次
    westoy
        28
    westoy  
       2021-04-03 11:52:16 +08:00   ❤️ 1
    @MeteorCat

    "php 好部署"和"php 是热重启"的一样, 属于经典谣言

    "php 好部署"这个出现是 asp->php 转型期, 都是跑在虚拟主机下这个大背景下的

    asp 当时做虚拟主机的搞基础免黑防通用的 webshell 都会把 FSO 改名, 程序要正常跑, 需要同样改掉 FSO, 碰到混淆过的就抓瞎了, 有些像动易之类的还会把功能做成要 dll, 需要主机注册的, 非注明程序谁肯注册啊

    php 早期只要装了 zend optimizer 问题就不大了

    但是 php 真的容易部署么?

    禁用函数、禁用扩展导致需要找原生替代方案的事少见么? 到了虚拟主机时代的中后期像 DH 、BH 甚至被迫允许用户 SSH 上去编译一个 php, 把自己的程序跑在 fcgi 模式下

    还有些虚拟主机限制 FTP 单位时间的连接数的, 传超文件会屏蔽掉几分钟, 我印象里 35 或者时代的就是, 我甚至因为这个原因还干过把项目切成 n 个包, 然后用 webshell 上去一个个解压的事

    至于现在 VPS 时代, go 部署的心智甚至还更低一点

    对于原生 php 、slim 、silex 之类的用户, go 事实上正在替代啊
    westoy
        29
    westoy  
       2021-04-03 11:54:59 +08:00
    @MeteorCat

    站长圈选 php 是因为 asp 凉了后在虚拟主机时代没其他的可以选, 并不是说 php 优势有多高

    事实上站长圈更乐意选 html, 手动狗头
    wangxiaoaer
        30
    wangxiaoaer  
       2021-04-03 13:14:06 +08:00
    真有用 golang 做业务的?不会吧 不会吧
    TypeError
        31
    TypeError  
       2021-04-03 14:33:55 +08:00   ❤️ 1
    如果 Go 泛型完成,并且有好用的科学计算库,我连 python 代码都想迁过去了

    python 作为脚本语言挺舒服的,但是官方委员会没啥作为,ruby 都有 jit 了,python 还在加可有可无的语法
    shellic
        32
    shellic  
       2021-04-03 16:00:20 +08:00   ❤️ 1
    PHP 简单了有人说太简单做不了大项目,各种工具都齐全了又有人说难部署,很明显就是要搞死 PHP
    sxfscool
        33
    sxfscool  
       2021-04-03 17:22:20 +08:00
    除了 java 都是 php,java 牛逼!
    sxfscool
        34
    sxfscool  
       2021-04-03 17:28:31 +08:00
    忽略上条,被 java 搞的有点烦
    neoblackcap
        35
    neoblackcap  
       2021-04-03 20:23:58 +08:00
    @wellsc go 可没有宣传 zero abstract,而且它也做不到。单凭一个 GC 在 runtime,它就永远没法做到 zero abstract
    LokiSharp
        36
    LokiSharp  
       2021-04-03 20:26:57 +08:00 via Android
    Golang 不行的性能和生态都比不上 Java
    impl
        37
    impl  
       2021-04-03 20:51:23 +08:00
    go 在 web 开发方面和 java 比,还处在刀耕火种的时代。php 听说很烂,没用过不做评论。
    wellsc
        38
    wellsc  
       2021-04-03 20:59:20 +08:00 via iPhone
    @neoblackcap 您是不是把 zero cost abstract 和 zero abstract 搞错了呢?
    neoblackcap
        39
    neoblackcap  
       2021-04-03 21:19:01 +08:00
    @wellsc 我的确理解成 zero cost abstract,如有不对,愿闻其详
    wellsc
        40
    wellsc  
       2021-04-03 21:30:40 +08:00 via iPhone
    @neoblackcap 我说的零抽象就是这个语言没有泛型,元编程,模板类之类的高级抽象的特性,写业务有点累,就这么简单🤷‍♂️
    klren0312
        41
    klren0312  
       2021-04-04 07:28:27 +08:00 via Android
    . net core 不香吗
    supersu
        42
    supersu  
       2021-04-04 08:48:50 +08:00 via Android
    py django 大法好
    tairan2006
        43
    tairan2006  
       2021-04-04 10:21:57 +08:00 via Android
    Go 今年出了泛型就可以搞搞业务了
    lewinlan
        44
    lewinlan  
       2021-04-04 11:03:49 +08:00 via Android
    看到拿 go 跟 php 比的我就很烦
    看来远远不止我一个人
    chenqh
        45
    chenqh  
       2021-04-04 12:19:48 +08:00
    @supersu py 性能太差,除此都好,有 using, 有 property, 有多继承, 有默认值
    XCFOX
        46
    XCFOX  
       2021-04-04 14:03:38 +08:00
    go 语言是在国内是真的很火。不过我感觉国外的风气是 php 转 nodejs 。
    很明显的感受到 nodejs 的生态比 golang 好太多了。nodejs 下各种工具都有现成的直接拿来用就行。最明显的就是 GraphQL 的生态链 nodejs 下有许多现成的方案,而 golang 的生态就比较匮乏了。
    另外再提一下代码风格,我个人的观点是 golang 精简的甚至有些破烂了,在目前缺乏泛型的情况下抽象能力比 TypeScript 、Rust 差太多了。缺乏传统的 Class 不能很好的 oop,也不能 fp 。有些 golang 项目里 interface{} 满天飞,传进来是个啥也不知道,给人感觉很不可靠。另外不能循环依赖 真的很不爽。
    Golang 在我看来是 better C,适合对性能有要求的场景。用来糊业务勉勉强强。
    dayeye2006199
        47
    dayeye2006199  
       2021-04-05 07:41:29 +08:00
    Go 是来解决现在的小年轻写 C 写不好的问题。大公司内部(例如 G )需要大量的做 infrastructure 的工程师,因为性能问题,一般又都选择 C/C++来写。可是这类工程师现在又特别不好找,小年轻也都不肯好好学这类语言,初级工程师写出来的代码质量也都难保证(指针瞎用,奇怪的性能问题)

    有了 Go,至少能大幅降低,给这类 infrastructure 产品贡献代码的难度,让小年轻也能愉快的和老鸟一起做 infra 。这个也是语言被发明出来的初衷。
    go 的王牌项目( k8s, docker, InfluxDB, CockroachDB )都属于这些领域范畴。

    在业务层误伤 php 、python 、java 感觉属于副产品。

    我觉得应该称 go 为云时代的 C
    FrankHB
        48
    FrankHB  
       2021-04-05 11:43:12 +08:00
    PHP 是最好的语言会被狗头。
    Golang 是最好的语言怕是会被打。
    samuel
        49
    samuel  
       2021-04-05 21:48:23 +08:00 via Android
    Golang 是仅次于 php 的最佳语言!
    w3cll
        50
    w3cll  
       2021-04-05 22:53:30 +08:00
    日常黑 PHP,PHP 现在不也活得挺好的吗,马上都 8.1 了。Golang 和 PHP 本来两个定位就不一样,就像你拿 PHP 写桌面应用一样(当然你要写,非得上 GTK ),也不是不可以。每个领域的语言有专长的领域。你说一个 Go 开发出来的目的是为了云,非得拿出来写 Web 和 PHP 比,然后一个解释型语言和一个编译型语言比,这能有可比性吗?你让姚明和李娜比,看谁牛逼吗?
    kun775
        51
    kun775  
       2021-04-06 09:19:10 +08:00
    我就是 C++转的 Golang,还是用 c++的风格去写 golang 代码,跟别人开源 golang 项目的代码比,根本不是同一种语言写的代码
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3904 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 93ms · UTC 00:55 · PVG 08:55 · LAX 16:55 · JFK 19:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.