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

最方便的后端语言?

  •  
  •   only0jac · 2016-05-17 16:30:44 +08:00 · 26741 次点击
    这是一个创建于 2872 天前的主题,其中的信息可能已经有所发展或是发生改变。

    (最方便指各方面,包括但不限于部署、重构等......)

    其实我觉得最方便的是以二进制方式运行,像 Java ,.Net ,奈何 Java 感觉个人开发者无力玩耍,.net 现在在 Linux 下还不是很方便;

    Python ? 3 还是 2 ?以我的角度来说还是 3 用的多, Linux 上又是自带 2.6 或 2.7 ,部署时又得编译 Python3 环境,又得安装 virtualenv ,就这个得折腾不少时间;

    golang 不太清楚,还请老司机带路;

    OK ,我知道 php 是最好的语言了;

    还有其他的吗?

    第 1 条附言  ·  2016-05-17 17:22:30 +08:00

    提示我回复频繁,需要等1800s......

    在写这帖子之前,我比较喜欢的是Python和golang,前面也说了,Python部署实在是略繁琐,但是不得不说,开发效率真的是高的吓人;

    golang略微看过一些语法,是丑,但是静态类型又是我比较喜欢的,所以想入golang;

    今天看了新闻说.net core的稳定版要发布了,目前只是观望下,不想吃螃蟹;

    看回复的童鞋很多推荐golang的,希望能说明下到底“浪”在哪里,另外,大家都知道它支持并发比较好,谢谢!

    145 条回复    2016-05-25 10:18:04 +08:00
    1  2  
    murmur
        1
    murmur  
       2016-05-17 16:34:07 +08:00
    这把 java 黑的没边了 java 至少不会让你每次部署的时候还要 jpm install 几百兆的 java_modules 也不会说要你安装 cjpm 因为 jpm 国内太卡了 你把项目给谁用直接丢一个 war 包给他就好了。。还有比这更简单的部署么
    php 是最好的语言+1
    GhostEX
        2
    GhostEX  
       2016-05-17 16:34:13 +08:00
    还用说么 php 是最好的后端语言
    only0jac
        3
    only0jac  
    OP
       2016-05-17 16:36:46 +08:00
    @murmur 我并没有黑 Java:),只是提到 Java 总和工业级联系到一起,且很不喜欢各种配置文件
    murmur
        4
    murmur  
       2016-05-17 16:38:01 +08:00
    @only0jac java 那一套框架可以让一群弱智级的程序员再一起都能搞出点东西来 因为大框架被限制的死死的 所以随便找一个人来都能接手
    个人的话直接网上抄配置文件用就完了
    唯一的黑点是热部署 没事重启 tomcat 玩受不了
    only0jac
        5
    only0jac  
    OP
       2016-05-17 16:38:54 +08:00
    @GhostEX 知道知道,但是还想知道有没有这么一种解决方案:写完代码后生成二进制文件,往服务器一扔, nginx 做个代理后直接跑
    lightening
        6
    lightening  
       2016-05-17 16:41:06 +08:00   ❤️ 2
    @only0jac 本来想说 Ruby 的,但是你说要生成二进制文件,那,要么试试 Elixir ?
    wangxkww
        7
    wangxkww  
       2016-05-17 16:44:12 +08:00   ❤️ 1
    node.js ?最近一直在撸 React 不知道用作后端怎么样...
    falood
        8
    falood  
       2016-05-17 16:45:54 +08:00   ❤️ 1
    @lightening 没想到在第一页就能看到 elixir ,顶一下 :D
    bobuick
        9
    bobuick  
       2016-05-17 16:46:01 +08:00
    golang 虽然丑是丑了点, 槽点也很多。不过用来做工程, 还是不错的
    odirus
        10
    odirus  
       2016-05-17 16:46:46 +08:00
    用了很久的 PHP , Python ,现在终于用上了 Java ,突然发现一身轻松。和大多数人的观点相反。
    only0jac
        11
    only0jac  
    OP
       2016-05-17 16:47:35 +08:00
    @lightening 挺小众的,可以看看,谢谢!
    only0jac
        12
    only0jac  
    OP
       2016-05-17 16:50:12 +08:00
    @wangxkww 之前在 V 站看过这么句话,大体意思是“ nodejs 是老板想让前端多干点活的产物”,没有黑的意思, js 感觉做前端就很棒了,后端有点。。。悬
    wsdjeg
        13
    wsdjeg  
       2016-05-17 16:51:06 +08:00
    java + jsp 这个搭配 没人用了吗?难道 jsp 现在这么不受欢迎?
    jimzhong
        14
    jimzhong  
       2016-05-17 16:54:27 +08:00
    python3+venv 挺好
    murmur
        15
    murmur  
       2016-05-17 16:55:20 +08:00   ❤️ 1
    @wsdjeg 可能大家都习惯说 springmvc 了吧 不过 springmvc 的 v 层还是 jsp 啊 只不过标签库更体贴了
    sun522198558
        16
    sun522198558  
       2016-05-17 16:55:22 +08:00
    php 是最好的后端语言
    lbp0200
        17
    lbp0200  
       2016-05-17 16:58:39 +08:00
    那就是 Go 语言了,打包完,就一个可执行文件。
    subpo
        18
    subpo  
       2016-05-17 17:03:54 +08:00
    最方便 ruby 咯
    zwh8800
        19
    zwh8800  
       2016-05-17 17:04:06 +08:00
    真心推荐 golang
    caoyue
        20
    caoyue  
       2016-05-17 17:05:07 +08:00   ❤️ 1

    Erlang
    打包完了扔上去就能运行
    reeco
        21
    reeco  
       2016-05-17 17:08:51 +08:00 via iPhone
    @murmur jsp 只是其中一种
    Cifery
        22
    Cifery  
       2016-05-17 17:13:07 +08:00   ❤️ 1
    @lightening 顶 elixir
    cheneydog
        23
    cheneydog  
       2016-05-17 17:13:50 +08:00
    稳定需求-java
    频繁修改-python
    前端-js
    足以
    XIVN1987
        24
    XIVN1987  
       2016-05-17 17:17:00 +08:00
    @only0jac
    这话很扯,反正每天都工作那么长时间, nodejs 怎么让前端多干活儿??
    LINEX
        25
    LINEX  
       2016-05-17 17:22:17 +08:00
    @murmur 可以换成其他模板引擎的,我们用 beetl 比较多,国人开发的,语法简单,效率比 jsp 高 2-3 倍。
    或者换成其他模板引擎也可以,不过我没用过
    roricon
        26
    roricon  
       2016-05-17 17:23:54 +08:00
    Python 部署是挺烦, 但有 Docker 呀.
    hooluupog
        27
    hooluupog  
       2016-05-17 17:25:51 +08:00
    node.js 或者 Go 。
    likezun
        28
    likezun  
       2016-05-17 17:25:53 +08:00
    简单,高效,好用 ,即是真理 ( 当然也能玩得复杂)—— php 就是这样的后端语言
    haozhang
        29
    haozhang  
       2016-05-17 17:30:57 +08:00 via iPhone
    java 的话试试 play framework
    wubotao
        30
    wubotao  
       2016-05-17 17:36:04 +08:00
    PHP/Node
    wobuhuicode
        31
    wobuhuicode  
       2016-05-17 17:38:41 +08:00
    Node + PHP 的路过……
    Kabie
        32
    Kabie  
       2016-05-17 17:41:34 +08:00
    不吹不黑……要比方便…… elixir 还是很不错的。。。
    imcxy
        33
    imcxy  
       2016-05-17 18:01:39 +08:00   ❤️ 1
    你既然说的是个人开发者,关键点就是你说的:环境。

    如果你对 Linux ,环境部署不熟悉, linux 搭建 10 分钟,但是要维护可不是 10 分钟可以解决的。。你难道搞到最后要去研究 Linux 搞运维?


    至于大家最喜欢谈的“简单”的 PHP
    现在的 PHP 真的简单?以前的简单,是因为大量应用是直接嵌入 HTML,直接 echo echo 简直所见即所得啊,确实很简单!
    但是现在 PHP 都跟 JAVA 一样了,都是“应用程序”,那么 PHP 的优点已经用不到了,为啥还要用 PHP 呢。


    所以根据你的情况,你部署环境都觉得麻烦的话,我建议你搞.NET
    stone1342006
        34
    stone1342006  
       2016-05-17 18:06:36 +08:00   ❤️ 1
    py 部署麻烦, golang 运行效率高, 支持高并发, 多路复用不要太简单, 同时可以以正常的同步逻辑写异步的操作,再也不用写 callback 了^_^, 不过 gc 偏弱,大内存应用有很多需要优化的工作
    NullMan
        35
    NullMan  
       2016-05-17 18:08:27 +08:00   ❤️ 4
    真心看不惯带人身攻击的评论(如 @murmur). 什么叫弱智级程序员随随便便都能玩 Java 了? 既然 Java 是弱智级别的人都能玩, 这说明什么? 说明 Java 是一门优秀的编程语言, 那些要绕着坑进行编程的语言, 简直就是垃圾语言!
    luulsj
        36
    luulsj  
       2016-05-17 18:24:25 +08:00
    A goods programming language is one that helps programmers write goods programs.
    No programming language will prevent its users from writing bad programs.
    摘自《 Thinking in Java 》
    zonghua
        37
    zonghua  
       2016-05-17 18:28:14 +08:00 via iPhone
    @murmur 用 velocity
    JamesRuan
        38
    JamesRuan  
       2016-05-17 18:33:42 +08:00
    用 Go 也得有够经验。
    ouafukqk
        39
    ouafukqk  
       2016-05-17 18:38:27 +08:00
    什么 “扔一个二进制到服务器上就能跑” ,都是骗小孩的

    希望你可以尝试用一个二进制文件来做服务器调优,我将佩服你的勇气
    MushishXian
        40
    MushishXian  
       2016-05-17 18:58:41 +08:00
    golang 的确扔上去就可以跑.....
    answeryou
        41
    answeryou  
       2016-05-17 19:16:26 +08:00
    Ruby 吧
    ooTwToo
        42
    ooTwToo  
       2016-05-17 19:16:44 +08:00 via iPhone
    @murmur v 可以是 thymeleaf 、 jade 、 freemarker 、 velocity 等等。。不止 JSP 一种。闲配置麻烦直接上 play ?或者 springboot 。闲语法啰嗦直接换 Python ? PHP ?
    timothyye
        43
    timothyye  
       2016-05-17 19:21:02 +08:00 via Android
    是时候祭出我大 Golang 了
    leitwolf
        44
    leitwolf  
       2016-05-17 19:29:42 +08:00
    golang 好,就一个文件,生成多平台执行文件简单,多线程也很好。
    jhdxr
        45
    jhdxr  
       2016-05-17 19:29:53 +08:00
    @imcxy 如果 php 的优点只是因为能直接 echo 网页内容的话那你也太小看 php 了,或者反过来说大部分语言都可以直接输出内容啊。现在之所以不再提倡这么混着写不正是因为分工逐步细化,前后端分离么

    另外 php 最大的优点不应该是修改了直接就能跑不需要重新编译 /部署么。。。还有 php 的数组真的很好用。。。居然完全不提这两点只说一个 echo (而且我觉得这从来不算优点, jsp 也可以很方便的实现类似特性),你真的用 php 写过除了 hello world 以外的东西么
    icaca
        46
    icaca  
       2016-05-17 19:30:47 +08:00
    @haozhang play1 很不错!
    ChiangDi
        47
    ChiangDi  
       2016-05-17 19:33:13 +08:00 via Android
    部署是运维做的事,跟语言有什么关系,不管你用啥语言都是公司运维去部署的啊
    sox
        48
    sox  
       2016-05-17 19:34:59 +08:00 via Android
    golang / node.js
    hayao650
        49
    hayao650  
       2016-05-17 19:44:11 +08:00 via Android
    @NullMan 他的意思是弱智都可以玩儿,不是玩儿的人都是弱智…
    Soar360
        50
    Soar360  
       2016-05-17 19:51:12 +08:00
    当然是 PHP 啊。
    imcxy
        51
    imcxy  
       2016-05-17 20:04:38 +08:00
    @jhdxr 我说的 echo 后面有 所见所得 4 个字。已经包含了你说的一堆了。

    几句话,没法强调方方面面。没法强调数组这个好用的部分,也没必要,又不是写论文,举了个典型的例子而已。我只是强调了其实有更多更好的。。

    另外,真的没用过 PHP 写过除了 hello world 以外的东西,以外的东西话有太多更好的。这就是我要说的那个意思。
    willchen
        52
    willchen  
       2016-05-17 20:12:57 +08:00 via iPhone
    那就是 golang 了
    only0jac
        53
    only0jac  
    OP
       2016-05-17 20:20:34 +08:00
    @bobuick 语法确实挺别扭,“不过用来做工程, 还是不错的”,请问这个“做工程”是什么意思?
    only0jac
        54
    only0jac  
    OP
       2016-05-17 20:22:31 +08:00
    @odirus 这是什么意思? java 反而轻松?用 java 做 android 的话我到认可,说他的语法什么的我也认可,但是要说到个人开发的话。。。不咋地。
    only0jac
        55
    only0jac  
    OP
       2016-05-17 20:23:18 +08:00
    @jimzhong 3 配合 env 相当好,要是不配合 env 能直接上就更好了
    kikyous
        56
    kikyous  
       2016-05-17 20:23:52 +08:00
    ruby
    only0jac
        57
    only0jac  
    OP
       2016-05-17 20:25:08 +08:00
    @MushishXian python 需要安装 uwsig 或 gunicorn 之类的服务器, golang 不需要?打包好直接运行???
    SPACELAN
        58
    SPACELAN  
       2016-05-17 20:25:55 +08:00
    node, 写完用 nexe 编译成二进制(其实就是编译一个嵌入了自己代码的 node ),然后直接跑

    不过 node 编译和运行对 GCC 版本和一些运行库版本要求比较高
    only0jac
        59
    only0jac  
    OP
       2016-05-17 20:29:11 +08:00
    @ChiangDi 公司的当然无所谓,大部分程序员还是想自己做点东西吧,做了东西总得部署上去“炫耀炫耀”吧
    murmur
        60
    murmur  
       2016-05-17 20:29:24 +08:00
    @only0jac 你去看看 java 的生态链 不仅是轮子给你造好了 还有上好的跑车拿来就开 比如 elasticsearch (喜欢折腾的可以降到 lucene )
    而且 springmvc+mybatis 也可以能省就省, mapper 直接进 controller ,拿掉 service 层(我没试过但是自动注入应该不区分是 controller 还是 service 吧~),然后 mapper 的 xml 也省掉直接 sql 写到注解上,路径直接对项目进行扫描,然后就是全注解开发了
    最重要的是这一堆都可以网上找到例子,抄一次下次再抄不会超过 30 分钟
    小项目大框架,大项目小框架,但是 java 除外,一个 springmvc+mybatis 基本可以配任何东西
    Comdex
        61
    Comdex  
       2016-05-17 20:30:57 +08:00
    golang 咯,语法丑这个理由见仁见智,不习惯的都觉得丑
    xgfan
        62
    xgfan  
       2016-05-17 20:37:07 +08:00 via Android
    java 其实部署也简单,用 spring boot 一类的生成 fat jar ,直接 java -jar 运行。
    JamesRuan
        63
    JamesRuan  
       2016-05-17 20:42:28 +08:00
    第一次听说 Java 部署简单的……

    装个环境一天就没有了,相对的, Erlang , Golang 之类的 10 分钟。
    msg7086
        64
    msg7086  
       2016-05-17 20:52:12 +08:00
    我只知道各大动态语言都自带不熟工具。
    你自己做不了运维的话就招人做咯,运维又逃不掉的。
    看似最简单的 Windows 下双击运行,其实运维工作量都比 Linux 要大的。
    wangxiyu191
        65
    wangxiyu191  
       2016-05-17 20:59:06 +08:00
    @only0jac golang 标准库里有 http 包,可以直接作为 http 服务器。编译好之后扔上去运行就 OK 了。不需要 uwsig 之类的。
    wdhwg001
        66
    wdhwg001  
       2016-05-17 21:06:01 +08:00 via iPhone
    咦居然没有 meteor 么?
    murmur
        67
    murmur  
       2016-05-17 21:09:30 +08:00
    @JamesRuan 我的感觉是入坑越简单后期越要加倍偿还, java 部署也不难啊,装 jdk ,绿色安装 tomcat , war 包扔进去最多把 perm 和 heap 改大点就跑起来了
    出了性能问题还有优可以调 调优都没法调的。。后期就只能哭了
    Reficul
        68
    Reficul  
       2016-05-17 21:19:50 +08:00
    写 Go 的路过,最近在看 Groovy , JAVA ,感觉到了蛋疼
    junweiyang
        69
    junweiyang  
       2016-05-17 21:23:01 +08:00
    golang 推荐
    niuroumian
        70
    niuroumian  
       2016-05-17 21:34:56 +08:00
    golang or kotlin+spring boot
    only0jac
        71
    only0jac  
    OP
       2016-05-17 21:37:28 +08:00
    @wangxiyu191 python 也自带 http 服务器呀,不是说自带的没法用在生产环境中么
    Lelouchcr
        72
    Lelouchcr  
       2016-05-17 21:38:31 +08:00
    python 部署可以配置一个 ansible
    only0jac
        73
    only0jac  
    OP
       2016-05-17 21:39:15 +08:00
    @roricon docker 确实好,肯定得学学,但是,多个 python web 项目部署到一个 docker 还是多个 docker ?
    common07
        74
    common07  
       2016-05-17 21:42:33 +08:00 via Android   ❤️ 1
    @only0jac 肯定是一个啊,你赶快去看看 docker 基本概念吧
    free9fw
        75
    free9fw  
       2016-05-17 21:43:00 +08:00
    没人说 swift 吗
    only0jac
        76
    only0jac  
    OP
       2016-05-17 21:44:26 +08:00
    @Lelouchcr 你个人在部署项目时都用这个么。。。
    mengzhuo
        77
    mengzhuo  
       2016-05-17 21:44:41 +08:00
    Golang
    深入了解后才能理解“重剑无锋”
    common07
        78
    common07  
       2016-05-17 21:45:23 +08:00 via Android
    @free9fw swift 的 web server 还不稳定貌似
    only0jac
        79
    only0jac  
    OP
       2016-05-17 21:46:11 +08:00
    @common07 及其 Nice :)
    only0jac
        80
    only0jac  
    OP
       2016-05-17 21:47:39 +08:00
    @mengzhuo 让你们把 golang 说的好神,不看不行了
    Lelouchcr
        81
    Lelouchcr  
       2016-05-17 21:49:16 +08:00
    @only0jac 是的 = =, 一部分老的还用 fabric ,新的都用 ansible 了
    kanezeng
        82
    kanezeng  
       2016-05-17 21:49:39 +08:00
    @JamesRuan 说简单指的是 spring boot 吧,确实简单啊,一个空系统,有 JRE ,直接 java -jar 把包跑起来就可以开始提供服务了,其他什么都不需要配了。
    QuantumCore
        83
    QuantumCore  
       2016-05-17 21:49:53 +08:00 via Android
    编程语言一般是没有好坏之分的,只有用得好不好,是不是在恰当的环境中使用了合适的编程语言。像 PHP 和 Node.js 区别就很大。比如部署方式不同,编程思想有差异,但也能互相弥补,(像 MediaWiki ,新浪、腾讯、百度的一些应用,都是各种语言混搭的。
    yangxin0
        84
    yangxin0  
       2016-05-17 21:50:54 +08:00 via iPhone
    居然没有人说 jruby , java 和 Scala 库随意调,还有 rails 这种快速开发框架
    flikecn
        85
    flikecn  
       2016-05-17 22:13:30 +08:00 via iPhone
    首推 Go
    quietin
        86
    quietin  
       2016-05-17 22:23:44 +08:00
    流量小 php, 流量超大 java
    redvoilin
        87
    redvoilin  
       2016-05-17 22:34:02 +08:00
    ruby
    wangxiyu191
        88
    wangxiyu191  
       2016-05-17 22:48:00 +08:00   ❤️ 1
    @only0jac 但是 go 的 http 服务器的性能足够在生产环境用。可以去搜下各种 benchmark
    limbo0
        89
    limbo0  
       2016-05-17 22:48:30 +08:00
    始祖 ruby on rails
    aias
        90
    aias  
       2016-05-17 23:09:44 +08:00
    感觉 Go 不错(没用过)。
    生命苦短,我用 python 。
    hanxiV2EX
        91
    hanxiV2EX  
       2016-05-17 23:18:20 +08:00 via iPhone   ❤️ 1
    Lua
    GPU
        92
    GPU  
       2016-05-17 23:43:25 +08:00
    其实 C# 能不能运行在 unix-like 的环境 , 我看见很多手机服务单用 C# 写的.
    himulawang
        93
    himulawang  
       2016-05-18 00:00:50 +08:00   ❤️ 1
    go, 性能好。 部署方便。推荐。
    winnie2012
        94
    winnie2012  
       2016-05-18 00:08:38 +08:00
    Ruby on Rails
    jsq2627
        95
    jsq2627  
       2016-05-18 02:32:13 +08:00
    .net core 还值得再观望半年再入手。
    一直在关注, rc1 和 rc2 其实已经相当于 1.0 到 2.0 这样级别的区别,很多核心系统都发生了变化。虽说 6 月底出 RTM ,但是目前个人觉得 RTM 之后不排除发生重大特性变化的情形。
    frogcjn
        96
    frogcjn  
       2016-05-18 02:59:31 +08:00
    TypeScript 编译成 Javascript ,所以可以用 Node

    毕竟现在开始流行 Javascript 移动端方案
    frogcjn
        97
    frogcjn  
       2016-05-18 03:09:06 +08:00   ❤️ 1
    其实还是看你情况,每个方案都不是最好的,只能说某些维度好。

    当初觉得 JS 没有类型写不惯差点放弃 Node.js ,后来知道有 TypeScript 。所以现在打算 TypeScript+Node.js+Express
    Ruby 那个语法一看就不太想用...让我想起了 VB...Ruby 的话就是 RoR 还有 Sinatra
    Python 其实已经不错了, Python 3 和 2 区别不大。 Python3 的支持, Py2/3 中可以选择 Python3 。 Python 推荐 Flask , Django 我是看不进去,要学的东西太多。

    结合自己的需求选择。

    Swift 的话,现在 Swift 十分不稳定, Swift3 之后还有 Swift4 ,说 Swift 要自重,感觉这门语言要被苹果玩坏。 Swift 写后端纯属写着玩, Swift3 目前的最新版本, Linux 代码和 OS X 上代码有些地方写法需要改变,坑不是一般的多哦(框架有 Zewo , IBM 的 Hikura , Perfect ,都还年轻,都会有坑的)。
    frogcjn
        98
    frogcjn  
       2016-05-18 03:38:21 +08:00
    但论语言的话, TIOBE Index May 2016 : http://www.tiobe.com/tiobe_index
    Go 排名 42 , Swift 排名 15 , Ruby 排名 8 , Javascript 排名 7 , PHP 排名 6 , Python 排名 5 , C#排名 4 , Java 排名 1

    Go 排名*非常非常*靠后,原因也很简单,除了后端, Go 基本没应用在其他领域。实际上 Go 的真实位置应该是相当于后端的 C , C++这种感觉,看了一下语法感觉就是这样,毕竟没法直接用 C/C++写后端...

    选一门语言能够跨移动端、 Web 前端,后端跨界,唯有 JS 了吧。(之前勉强做到这点 ActionScript 已卒,排名 50 靠后)
    YUX
        99
    YUX  
       2016-05-18 04:33:27 +08:00 via iPhone
    我用 Python, 2 或 3 都行主要看你用的包的支持 一律用 Docker 部署
    julor
        100
    julor  
       2016-05-18 07:34:54 +08:00 via Android
    如果把重构考虑进去,动态需要可能会有坑。剩下 java 和 golang ,看看你的需求。推荐 golang ,部署简单:编译后就是执行文件,可以非常轻松高并发。考虑到第三方包不支持的情况下采用 java 。


    楼主真的不要信全栈,你敢用前端来写 nodejs 准备好插屁股!接触过几个 javaweb 完全限制在几个框架,笑称 java 是面向框架编程。
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3309 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 13:32 · PVG 21:32 · LAX 06:32 · JFK 09:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.