V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
tctc4869
V2EX  ›  程序员

web 开发,如果要在 PHP , node.js, Python ,Go 语言选一个,那么选谁了?

  •  1
     
  •   tctc4869 · 2020-06-05 14:33:42 +08:00 · 10320 次点击
    这是一个创建于 1664 天前的主题,其中的信息可能已经有所发展或是发生改变。

    做 web 开发,如果要在 php,node.js ,python,Go 语言选一个,那么选谁呢? ( c#和 java 就不考虑了)

    像我在乎的话,

    第一是生态,

    第二是开发效率,比如语法糖。例如函数式编程,不要像 java8 一样啰嗦,java8 的函数式编程相对 c#的委托和 js 是很啰嗦的,不能直接把变量当方法调用。

    第三,是开发环境是否方便安装,比如像 jdk 和.net framework,点击安装文件,点击下一步按钮,等待安装完成就可以。ide 根据可视化界面部署,创建开发项目是否方便

    第四是打包部署方便性,打包既可以用命令行,也能用 ide 方便打包项目。而部署像软件一样点击可执行文件部署,或者是把部署命令写成脚本文件与打包的文件放在一起,点击即可部署。

    第 1 条附言  ·  2020-06-06 08:36:33 +08:00
    不仅要考虑 http,还要考虑 websocket,甚至是直接基于 socket 开发的应用。不知道开发效率怎么样
    第 2 条附言  ·  2020-06-06 20:13:48 +08:00
    如果在家 Ruby 比较呢?
    87 条回复    2020-06-08 09:05:27 +08:00
    sleepm
        1
    sleepm  
       2020-06-05 14:39:06 +08:00
    go
    Junjunya
        2
    Junjunya  
       2020-06-05 14:41:44 +08:00   ❤️ 4
    PHP 或者 go 。非要选一个的话,推荐 PHP 天下第一
    raincode
        3
    raincode  
       2020-06-05 14:42:27 +08:00   ❤️ 2
    nodejs
    rimutuyuan
        4
    rimutuyuan  
       2020-06-05 14:44:32 +08:00
    自己做东西随便选,但你列的这四个三个动态语言一个静态,肯定是静态语言好安装部署,直接可执行文件了
    hnbcinfo
        5
    hnbcinfo  
       2020-06-05 14:46:52 +08:00   ❤️ 5
    我大.Net Core 用起来这么爽,为什么不考虑呢。
    agdhole
        6
    agdhole  
       2020-06-05 14:49:34 +08:00
    go node
    Trim21
        7
    Trim21  
       2020-06-05 14:50:51 +08:00 via Android
    猜你用的 Windows

    后面三个都能用 scoop 安装( PHP 不了解)
    iamverylovely
        8
    iamverylovely  
       2020-06-05 14:52:44 +08:00
    asp perl
    musi
        9
    musi  
       2020-06-05 14:52:59 +08:00 via iPhone   ❤️ 1
    js 一把梭,不管你后端用啥前端 js 是没跑的。开发环境 vscode webstorm 看你喜欢用哪个,打包部署用 docker 问题不大
    Jacky23333
        10
    Jacky23333  
       2020-06-05 14:54:16 +08:00 via Android
    go
    namelosw
        11
    namelosw  
       2020-06-05 14:55:56 +08:00   ❤️ 2
    除了 PHP 都挺好
    mitu9527
        12
    mitu9527  
       2020-06-05 14:56:23 +08:00   ❤️ 14
    PHP 。现实就是 Web 开发服务端是 Java 和 PHP 的天下,如果不考虑 Java,那就剩 PHP 了。其他语言就算了,嚷嚷着多少年干掉 PHP 什么的,结果自己都不成气候。早有 Python,后有 NodeJS,最近又换成了 Go,结局都是一样的,再过两三年 Go 也会过了风口,你会发现 Web 开发服务端主流还是 Java 和 PHP 。
    wangyanrui
        13
    wangyanrui  
       2020-06-05 14:58:28 +08:00   ❤️ 1
    PHP 和 Java 活了这么多年了,为什么没有被人搞掉,值得思考呀
    starlion
        14
    starlion  
       2020-06-05 14:59:26 +08:00   ❤️ 2
    第一当然是 PHP,做中小项目,快速,简单。如果以后业务扩展了,一部分可以转到 golang 或者 java,如果项目能够发展起来的话。
    starlion
        15
    starlion  
       2020-06-05 15:01:54 +08:00
    如果你想学习,golang 可以看看这个学习系列: https://github.com/jiujuan/go-collection - -!, 哈哈哈!
    cmdOptionKana
        16
    cmdOptionKana  
       2020-06-05 15:02:58 +08:00   ❤️ 1
    小项目,这些都差不多,都能胜任,完全看个人经验和喜好。

    大项目的主语言在 Go 、c#和 java 里面选,而 php,node.js ,python 可以拿来辅助,但不能用来做主导。
    MarkLeeyun
        17
    MarkLeeyun  
       2020-06-05 15:03:04 +08:00
    @mitu9527 同意,适用领域不一样吧。。java 和 PHP 用来做 web 开发还是王者。大规模的用 java,小规模的用 php.
    black11black
        18
    black11black  
       2020-06-05 15:07:42 +08:00   ❤️ 2
    @mitu9527 有一说一,确实。个人计算机普及这么多年了,先是电脑,后是手机,说要干掉计算器,结果自己都不成气候,你看买菜大妈算账还是用计算器。可以得出结论计算器远优越于计算机,等过两年手机过了风口,你会发现卖菜大妈还是用计算器按账
    black11black
        19
    black11black  
       2020-06-05 15:15:42 +08:00
    另外认真评价楼主说这几点的话,关于第三四点,到都 0202 年了,你列出的所有语言都能满足。

    第一点的生态方面我以为主要是开发过程中代码复用程度的多少,而非市场占有率的多少。node 和 python 前者主要依托前端程序员的生态,后者主要依赖....这个说不好,反正做什么工作或多或少都会用到点 python 就是了。go 在生态方面打输

    第二点开发效率,语言描述能力方面 python 最强,这是社区形态导致的历史遗留产物,但运行速度 python 最慢,经过适当优化后勉强摸到 node 的背后,被 go 吊着打。你怎么取舍呢?

    楼上一堆说小项目用 php 撸的,祝你们前程似锦。
    mitu9527
        20
    mitu9527  
       2020-06-05 15:17:25 +08:00   ❤️ 2
    @black11black 感觉你对 PHP 意见很大,是受过 PHP 的伤害么? PHP 语言和生态本身还可以,差的是圈子的整体水平,所以何来计算器一说。除了 Java 整体上还算不错,其他的那几门语言哪一门不都有自己的问题,Python 的性能问题,Js 的面向对象问题,而且 Js 后端这块自己天天都在折腾,最近不是一堆人要用 deno 换掉 node,Go 语言起步比较晚,但是生态上积累的还不够,这都是事实啊。
    NCZkevin
        21
    NCZkevin  
       2020-06-05 15:17:50 +08:00
    go 开发部署都很方便,但是生态确实一般,个人开发小项目建议 python 或者 go 吧
    q8164305
        22
    q8164305  
       2020-06-05 15:19:08 +08:00 via Android   ❤️ 2
    js 一把梭
    liuyibao
        23
    liuyibao  
       2020-06-05 16:03:42 +08:00   ❤️ 1
    @mitu9527 过来人,同意你的观点
    fangdown
        24
    fangdown  
       2020-06-05 16:05:43 +08:00   ❤️ 1
    推荐 nodejs,pm2 部署方便

    [深圳 /长沙] 腾讯云前端社招~~急招!!!联系我内推,微信同号
    liuyibao
        25
    liuyibao  
       2020-06-05 16:06:34 +08:00
    @black11black 你这个渣渣,没事又搞语言之争。
    QlanQ
        26
    QlanQ  
       2020-06-05 16:07:42 +08:00
    @black11black 计算器和手机的例子咋算的?功能都不一样,怎么存在谁取代谁?
    PHP 的开发效率,人员成本 还是很有优势的,不能光考虑语言的,开发成本和时间对于公司很重要

    为啥会对某一种语言意见这么大?
    ziyeziye
        27
    ziyeziye  
       2020-06-05 16:08:00 +08:00
    php, go
    iminto
        28
    iminto  
       2020-06-05 16:12:59 +08:00
    首先,排除一个最低分,PHP 出局。
    wellsc
        29
    wellsc  
       2020-06-05 16:15:57 +08:00
    js 啊,啥都能干
    linxb
        30
    linxb  
       2020-06-05 16:16:22 +08:00   ❤️ 1
    PHP 用 laravel 框架,开发效率真不是盖的
    runtu2019
        31
    runtu2019  
       2020-06-05 16:27:49 +08:00
    首先排除 php,其他优缺点还好,弱类型真的是硬伤,涉及到计算严谨的地方一堆转换变量类型代码,要不然容易出莫名其妙的问题,使用框架应该会好点。
    生态首推 java 和 php
    开发效率和打包都要的话,最符合的应该是 netcore 了,打包贼方便全平台通用,可以打成独立包执行文件,运行环境什么的根本不需要

    如果是开发 api 的话就 netcore,前端是网页的话还是 php 比较合适
    HanMeiM
        32
    HanMeiM  
       2020-06-05 16:37:56 +08:00
    觉得 PHP 弱类型是硬伤的,可以开严格模式,必须自己手动转类型,再配合上参数类型声明,能解决大部分弱类型语言的问题
    ben1024
        33
    ben1024  
       2020-06-05 16:40:13 +08:00
    推荐下 PHP,有 Composer 的管理的新版框架还是比较舒服,当前 PHP 性能还是很好的,长连接的场景弱一些。
    silov
        34
    silov  
       2020-06-05 16:46:28 +08:00
    你是选自己的学习技术栈,还是给公司做技术选型?
    Rekkles
        35
    Rekkles  
       2020-06-05 16:47:45 +08:00   ❤️ 1
    PHP + Laravel + Laravel-s + 数不尽的 composer === 开发周期巨短,性能也不错。
    ShundL
        36
    ShundL  
       2020-06-05 16:47:55 +08:00   ❤️ 1
    只要有 PHP 存在的话题,鄙视链就会开始工作,没办法,PHP 在鄙视链的底层,很 LOW 。
    但它目前的占有量还是巨大的,web 开发方面尤其是网页开发,php 应该是上手最快的,几天的学习你就能开始写东西了,虽然可能 bug 满天飞,代码如屎。
    php 的环境 win 上简单点儿直接安装个 phpstudy,自带 apache/nginx 、mysql 和 php 多个版本。linux 上安装个 lnmp 一键环境包,然后就可以撸了。
    nextvay
        37
    nextvay  
       2020-06-05 16:52:47 +08:00
    体验生活?还是生存?
    体验生活都无所谓
    生存那就不一样了
    PHP,高级工程师的话,面试几乎都是后台了且工作机会都很少
    Go,目前好多公司都转 go 了,所以我是 PHP 跟着换工作转 Go 了,开发起来比 PHP 慢一些,比 Java 更慢一些
    Java,生态很好,大公司都在用,霸主地位
    Python,生态也还好,大数据、运维用的多一些,web 开发少一些吧

    以目前的我来说,如果有 Go 给 30k,Java 给 25k 的 offer 的话,我选 Java,以后就业面更广
    pigzzz
        38
    pigzzz  
       2020-06-05 16:53:40 +08:00
    @QlanQ 因为大多数人对 php 的印象可能还停留在 php5 的年代
    rioshikelong121
        39
    rioshikelong121  
       2020-06-05 16:55:52 +08:00   ❤️ 2
    .NET core
    annielong
        40
    annielong  
       2020-06-05 17:00:19 +08:00
    web 开放没有 c#和 java,只能选 php,其它根本不用考虑。
    wangyzj
        41
    wangyzj  
       2020-06-05 17:03:35 +08:00
    你要看你的坐标来选择
    ztxcccc
        42
    ztxcccc  
       2020-06-05 17:04:09 +08:00
    @linxb 为什么不用 Symfony
    qq7790586
        43
    qq7790586  
       2020-06-05 17:04:51 +08:00
    看甲方,叫你用 asp 你也得用。
    lepig
        44
    lepig  
       2020-06-05 17:05:18 +08:00
    楼主前 3 点说的不就是 PHP 嘛, 老油条表示 第四点 也很 OK 哈哈哈哈
    zzzmh
        45
    zzzmh  
       2020-06-05 17:05:52 +08:00
    没有 java 猛男落泪
    herozzm
        46
    herozzm  
       2020-06-05 17:08:11 +08:00 via Android
    go 做后端 php 做前端套模板啥的
    qloog
        47
    qloog  
       2020-06-05 17:09:34 +08:00
    go 吧
    qW7bo2FbzbC0
        48
    qW7bo2FbzbC0  
       2020-06-05 17:11:11 +08:00
    小项目,python + bottle.py 尽量一个文件搞定
    ShundL
        49
    ShundL  
       2020-06-05 17:13:12 +08:00
    就非得分出个一二三来吗? 楼主你自己都去看看这几门语言的语法,自己看喜欢哪种风格就用哪种,不存在用了这种就会走上人生巅峰用了那种就会吃不上饭。

    可以都学
    helionzzz
        50
    helionzzz  
       2020-06-05 17:19:44 +08:00
    @ztxcccc 你不觉得 sy 太重了么。。
    HENQIGUAI
        51
    HENQIGUAI  
       2020-06-05 17:25:22 +08:00
    大 Java 不香么
    ztxcccc
        52
    ztxcccc  
       2020-06-05 17:34:33 +08:00
    @helionzzz laravel 底层不都是 symfony 组件吗?有什么区别
    helionzzz
        53
    helionzzz  
       2020-06-05 17:40:18 +08:00
    @ztxcccc 毕竟 laravel 帮 sy 精简了不少东西了,而且中文资料已经很丰富了。直接上 sy 学习曲线太陡了,现在好多了,sy2 的时候中文资料也就是个官方手册的部分汉译版
    ztxcccc
        54
    ztxcccc  
       2020-06-05 17:51:34 +08:00
    @helionzzz 如果用 symfony2 去看的话视角太老了,5 还是很舒服的
    wzw
        55
    wzw  
       2020-06-05 17:57:50 +08:00 via iPhone
    用了很久的 Python,但是我在用 go 了
    dongisking
        56
    dongisking  
       2020-06-05 17:59:02 +08:00
    在吃 PHP 饭,以后打算吃 GO 的饭,Java 吃不下啊(太多人吃了,想吃但是没优势)
    fiypig
        57
    fiypig  
       2020-06-05 18:01:00 +08:00
    不知道 go 跟这三比,是高兴呢 ,还是高兴呢
    Seanfuck
        58
    Seanfuck  
       2020-06-05 18:27:16 +08:00 via iPhone
    做 web 开发的话,当然选 php 。不要听上面那些语言鄙视者的话(码农思维),所有语言都是个工具,谁能简单快速完成任务谁就是最好的!
    abcbuzhiming
        59
    abcbuzhiming  
       2020-06-06 07:20:28 +08:00   ❤️ 1
    PHP,虽然我不喜欢这东西,但是这东西是为 web 而生的

    1.生态,PHP 就是为 web 而生的,你要说在 web 这块的生态谁能和 PHP 较劲,那就只剩下 Java,其它都一边去,对,我说的就是 nodejs,go,python,

    2.开发效率,你说的都满足,动态语言,不过你要小心重构火葬场问题

    3 和 4 就不太满足了,基本上动态语言类都不太满足楼主的这两个要求
    Roung
        60
    Roung  
       2020-06-06 07:32:55 +08:00 via Android
    短期 PHP,长期 go
    Hanggi
        61
    Hanggi  
       2020-06-06 08:15:57 +08:00
    最好是都会一点,

    go 用来写服务,nodejs 写前端和一些对性能要求不高的后端,python 作为工具语言写机器学习什么。
    cmdOptionKana
        62
    cmdOptionKana  
       2020-06-06 08:30:59 +08:00 via Android
    如果只考虑楼主列举这几点的话,Ruby 无敌。
    MrJing1992
        63
    MrJing1992  
       2020-06-06 08:51:11 +08:00
    前期,拼开发效率,认准 PHP + Laravel ;后期,拼稳定 /大规模协作,认准 Java + Spring 。
    生态很重要生态很重要生态很重要
    gejun123456
        64
    gejun123456  
       2020-06-06 08:55:17 +08:00 via iPhone
    kotlin 啥都有 考虑下?
    oahebky
        65
    oahebky  
       2020-06-06 08:56:08 +08:00 via Android
    个人觉得基本上看你开发的是什么样的 Web

    比如说是电商类、公司网站、工具接口调用(翻译、OCR 、等等)、网页小游戏 or 在线工具(大部分能力由前端提供)、等等等

    搞清楚了这些再选工具不是更合理吗?
    duan602728596
        66
    duan602728596  
       2020-06-06 09:06:04 +08:00 via iPhone
    socket 的话直接 nodejs 吧,用 socket.io ,客户端(浏览器)内连兼容都给你搞好了
    uxff
        67
    uxff  
       2020-06-06 09:22:33 +08:00
    java 优先,从开发速度,包管理成熟度,代码规范,性能,生态,趋势及领域,就业机会,等等来说,都比其他语言有优势。
    tanranran
        68
    tanranran  
       2020-06-06 09:26:05 +08:00
    kotlin 啥都有 考虑下?
    uxff
        69
    uxff  
       2020-06-06 09:29:32 +08:00
    从语言设计(语法,包管理,框架成熟度)上来说,java 和 c#都是挺好的语言。
    比如包声明和管理,类声明和目录结构,等都规范性挺好。而 php 因为约束过松而被经常用坏。
    c#只是应用平台限制在 win 平台。
    SaigyoujiYuyuko
        70
    SaigyoujiYuyuko  
       2020-06-06 09:49:40 +08:00
    php + laravel + swoole / go / nodejs(没用过 打算试试看)
    silvernoo
        71
    silvernoo  
       2020-06-06 10:11:44 +08:00
    我选狗
    pkoukk
        72
    pkoukk  
       2020-06-06 10:12:44 +08:00   ❤️ 1
    @uxff .net core 了解一下
    jimyan
        73
    jimyan  
       2020-06-06 10:15:03 +08:00
    kotilin
    cz5424
        74
    cz5424  
       2020-06-06 13:54:19 +08:00
    帮你排除 php,node.js
    cz5424
        75
    cz5424  
       2020-06-06 14:01:10 +08:00
    排除 node.js 看这个 https://www.v2ex.com/t/678888#reply94
    2kCS5c0b0ITXE5k2
        76
    2kCS5c0b0ITXE5k2  
       2020-06-06 14:11:28 +08:00
    考虑 websocket 那肯定排除 PHP 啊 那怕 PHP 用了 Swoole 写实现起来也很麻烦。不如用 Go 吧
    charlie21
        77
    charlie21  
       2020-06-06 14:14:05 +08:00
    @oahebky 就喜欢看这个不知道什么项目类型就开始瞎推荐技术栈的损样子
    p1gd0g
        78
    p1gd0g  
       2020-06-06 14:50:07 +08:00
    我们公司的事实就是 php 全部重构到 go 。。。
    leohxj
        79
    leohxj  
       2020-06-06 15:26:11 +08:00
    https://www.bilibili.com/video/BV1C7411F7x3?p=2
    陈皓, 就是『左耳朵耗子』,聊过技术选型,在第 22:44 开始。
    建议看看。
    xiaotianhu
        80
    xiaotianhu  
       2020-06-06 17:17:56 +08:00
    只考虑个人不考虑团队的吗
    Carlgao
        81
    Carlgao  
       2020-06-06 18:55:12 +08:00
    觉得 PHP 只能做 Web 路有点窄,所以转 Go 中!!
    MikeFeng
        82
    MikeFeng  
       2020-06-06 21:25:58 +08:00
    node>go>python>php
    jss
        83
    jss  
       2020-06-07 07:44:08 +08:00 via iPhone
    你这就像 GTR(go) 跟电动车 自行车比一样,电动车插钥匙就开动,甚至,自行车钥匙都不要,它们能一样吗?
    shellic
        84
    shellic  
       2020-06-07 07:49:05 +08:00 via Android
    web 开发除了 Java 就是 PHP,别听别人瞎 JB 吹瞎 JB 黑;架构做不好用什么语言重构都得火葬场,代码是人写的,代码屎说明人屎不是语言屎;你去招聘网站看一下就知道一群吹这个黑那个的都是搁那打嘴炮;当然你如果不用 Java 又瞧不上 PHP 那选 Go 吧,至少这两年在吹 Go,招人应该不会太难,靠不靠谱就不知道了,毕竟很多都是半瓶子水从别的语言转过去的。
    newtype0092
        85
    newtype0092  
       2020-06-07 11:18:38 +08:00
    @p1gd0g 老哥多讲讲呗,因为什么问题重构,怎么规划的,重构完解决了多少,开发人员怎么安排的等等。。。
    JaguarJack
        86
    JaguarJack  
       2020-06-07 12:35:36 +08:00 via iPhone
    PHP 。楼上很多都是扯犊子。php 写的💩的人写啥都是💩。和语言一点关系没有
    p1gd0g
        87
    p1gd0g  
       2020-06-08 09:05:27 +08:00
    @newtype0092 主要还是性能问题,我们这边两条类似的业务线,php 用的机器多一倍,还竞猜告警。
    规划就是先改一部分接口,逐步迁到 go 。目前就是 php 和 go 同时在跑着。开发要求 php 和 go 都会。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5730 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 02:53 · PVG 10:53 · LAX 18:53 · JFK 21:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.