V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
oahebky
V2EX  ›  Python

Java 那么强, Python 要怎么淦倒它?

  •  
  •   oahebky · 2020-09-08 11:39:41 +08:00 · 15541 次点击
    这是一个创建于 1573 天前的主题,其中的信息可能已经有所发展或是发生改变。

    看到 Java 也在更新着自己的语法。

    最近看到 Java 的 Spring MVC 写路由,@RequestMapping('<url>') 和 flask 很像(注:我不知道谁学习谁的)

    由此了解到了 Java 的注解( Annotation )语法

    这里语法指的是 “切片”、“生成器”、“指针”、“装饰器”、这种含义的语法。

    个人感觉这个语法给了 Java 一些“动态特性”(?)


    考虑到 Java 有一套成熟、专业的 web 框架(像以前称为 Java EE 的东西、在开发初始就是做给 toB 的框架),而 Java 语言本身又有发展(不像 C 语言可以等同于看做语法定死下来)。

    感觉 Python 在 web 开发领域很难淦倒 Java 。

    113 条回复    2020-10-12 02:46:47 +08:00
    1  2  
    learningman
        1
    learningman  
       2020-09-08 11:41:00 +08:00
    世界不是二元的,不是我活你就要死
    wellsc
        2
    wellsc  
       2020-09-08 11:43:45 +08:00   ❤️ 28
    你这帖子五年前发还差不多,现在应该把标题改成 Java 那么强,Golang 要怎么淦倒它? Python web 快要饿死了
    msaionyc
        3
    msaionyc  
       2020-09-08 11:45:19 +08:00   ❤️ 10
    “🎈🎈你别给我们🐍招黑了”
    xuanbg
        4
    xuanbg  
       2020-09-08 11:47:13 +08:00
    Java 那么强,Python 为什么要淦倒它?

    自己好好地玩自己的不好吗
    lonelymarried
        5
    lonelymarried  
       2020-09-08 11:48:06 +08:00
    这个字怎么念
    oahebky
        6
    oahebky  
    OP
       2020-09-08 11:49:42 +08:00
    vision1900
        7
    vision1900  
       2020-09-08 11:49:44 +08:00
    JS 叫装饰器 (Decorator), 但我就是不喜欢,哈哈
    Python 语法确实更人性化, 新版本也开始支持静态类型, 如果不是大企业, 我觉得是 "go to language"
    sumouren
        8
    sumouren  
       2020-09-08 11:50:06 +08:00
    @lonelymarried gan 淦
    wysnylc
        9
    wysnylc  
       2020-09-08 11:51:38 +08:00
    1991 年,第一个 Python 编译器(同时也是解释器)诞生
    java 大概诞生于 1995 年初,Sun 公司把 java 发布到互联网上,免费提供给大家使用
    xiaolinjia
        10
    xiaolinjia  
       2020-09-08 11:52:32 +08:00
    干不倒。
    MisakaTang
        11
    MisakaTang  
       2020-09-08 11:53:16 +08:00
    甚至早就能写函数式路由了 区区 py 弹指可灭
    New in Spring 5: Functional Web Framework
    https://spring.io/blog/2016/09/22/new-in-spring-5-functional-web-framework
    6IbA2bj5ip3tK49j
        12
    6IbA2bj5ip3tK49j  
       2020-09-08 11:54:57 +08:00
    @RequestMapping Spring 2.5 添加,发布日期:2007 年 11 月
    ResidualSoils
        13
    ResidualSoils  
       2020-09-08 12:18:45 +08:00   ❤️ 1
    也许是.net 来干倒 Java
    whileFalse
        14
    whileFalse  
       2020-09-08 12:21:48 +08:00   ❤️ 13
    我觉得 Java 特别精神分裂。

    本来是好好的一个静态编译语言。我印象最深刻的是给 Java 、Node 写同一功能的库,跟一个 Python 服务配合工作,所以我要同时使用这三种语言。
    Node 和 Python 写的巨快,但是总要跑起来报错再改。Java 是写的时候一堆错,都改好之后一运行一点问题没有。Java 就是废话多,但静态检查很强。

    然而 Java 程序员们嫌废话实在是太多了,于是使用各种神奇的方法执行一些编译时魔法或者运行时魔法。废话量是减少了,但引入了三个问题:
    1. 引入的框架很重,启动慢
    2. 很多逻辑在框架层面实现。同时使用了控制反转和切面的情况下,你根本不知道运行时出来的是什么玩意儿,那就不是你写的类。
    3. 一部分错误变成在运行时才能检查出来。Java 牛逼的静态检查变成了残废。

    说 Java 精神分裂,就是因为它的设计理念如此强健,然而用户千方百计削弱这一优势,却不能完全解决强健性带来的废话多这一副作用。
    那为什么不直接使用其他语言呢。
    Cbdy
        15
    Cbdy  
       2020-09-08 12:25:29 +08:00 via Android
    Java 十几年前就这样写了,Java1.5 都是 04 年的事情
    yousabuk
        16
    yousabuk  
       2020-09-08 12:37:11 +08:00 via iPhone
    翻手化齑粉覆手为灰灰

    你说厉害不厉害😄
    Rwing
        17
    Rwing  
       2020-09-08 12:39:46 +08:00
    不是一个领域的啊,一个领域才能谈干倒,如果.NET 干不倒的话,其他语言更没戏
    Huelse
        18
    Huelse  
       2020-09-08 12:51:43 +08:00
    python 是计算集中型的,java 是 io 集中型的,所以两者领域不同,不存在谁干谁
    ghjacky
        19
    ghjacky  
       2020-09-08 12:54:55 +08:00
    这俩不存在多大的竞争关系
    hijoker
        20
    hijoker  
       2020-09-08 12:57:21 +08:00
    python:我头没那么铁...
    hijoker
        21
    hijoker  
       2020-09-08 12:57:42 +08:00
    @Huelse python 还计算密集????你说反了吧
    minami
        22
    minami  
       2020-09-08 13:02:50 +08:00 via Android   ❤️ 7
    暴论:Java 已经死了,剩下的是 JVM 。大家其实不关心跑在 JVM 上的是 Java,Kotlin 还是 Scala,鸠占鹊巢完成之时,就是 Java 消失之时,狗头
    minami
        23
    minami  
       2020-09-08 13:04:53 +08:00 via Android
    正经的说,还是把 Python 解释器好好搞下把,CPython 一言难尽……
    Huelse
        24
    Huelse  
       2020-09-08 13:10:23 +08:00
    @hijoker #21 没说错,HPC 上 python 用的很多的,像人工智能和大型数据处理都可以用 python,比如 numpy 和 tensorflow 都可用 cpython 解释器,计算效率和 C++相当

    https://www.quora.com/Can-Python-be-used-for-high-performance-computing
    love
        25
    love  
       2020-09-08 13:12:08 +08:00
    python 写 web 真的不行,还是得 nodejs
    InkStone
        26
    InkStone  
       2020-09-08 13:41:33 +08:00   ❤️ 1
    @Huelse TF 和 NP 可以用 CPython 也跑的飞快是因为 CPython 的 C extension——换句话说它跑的就是 C++,根本不是 Python 。你用 Java 也是一样的,最终调用的都是 so
    Marine5174
        27
    Marine5174  
       2020-09-08 13:42:24 +08:00
    @minami +1

    JVM 才是 Gosling 真正想做的。Java 只是个不算特别糟的 interface 而已。
    firefox12
        28
    firefox12  
       2020-09-08 13:42:56 +08:00   ❤️ 1
    @whileFalse 按照规范写, 一切风平浪静, 想玩点花出来,可能让你马上崩溃。现在已经不是 java 编程,而是面向 spring 约定编程了。 很多新人 根本不知道 @RequestMapping 是什么,也不需要知道 内部怎么运行的。不过如果你的水平没有 spring 高, 也就是你写不出一套比 spring 更好的框架之前,你和新人的价值也是一样一样的,大家都是面向 spring 开发。这是老程序员最大的危机, 真的比框架 你比不上 spring, 所以 只是翻译逻辑,你的价值 很难体现,水平也很难提高,你提高的只是使用 spring 的熟练度。
    Huelse
        29
    Huelse  
       2020-09-08 13:51:38 +08:00
    @InkStone #26 我知道啊,但从某一编程语言的适用角度不能这么看呀。不然所有的编程语言最终都可以归化为汇编乃至机器码。
    janxin
        30
    janxin  
       2020-09-08 13:59:10 +08:00
    你这是听哪个培训班老师说的呀...
    jones2000
        31
    jones2000  
       2020-09-08 14:04:36 +08:00
    对于项目哪个开发快成本低就用哪个,有设计文档就可以, 什么语言都可以写。
    EPr2hh6LADQWqRVH
        32
    EPr2hh6LADQWqRVH  
       2020-09-08 14:07:08 +08:00 via Android
    郭嘉: 对等反制,驱逐 Oracle
    wysnylc
        33
    wysnylc  
       2020-09-08 14:12:40 +08:00
    @minami #21 择肥肠河里
    iwo
        34
    iwo  
       2020-09-08 14:15:50 +08:00
    玩.net 的表示不敢说话 闷声发财
    Macolor21
        35
    Macolor21  
       2020-09-08 14:28:31 +08:00   ❤️ 10
    @whileFalse
    我寻思这不是多态和泛型的特性吗?和 JAVA 有什么关系?其他编译型 OOP 语言,也都有这个问题啊。
    控制反转是 OOP 的设计原则,面向切面是 OOP 的改进。AOP 启动的就是个代理对象,学过代理模式都知道咋回事。IOC 控制反转,你不自己配置属性,容器都无法装载。只是 Spring Boot 的 AutoConfiguration 提供了很多类的默认参数,原始 Spring 还是要自己手动配置的。另外控制反转的目的在于将代码与实际的实现配置分离,如果我们需要改变一个类依赖于该接口的什么实现,不用修改代码,修改配置文件即可。并且控制反转加上多态,能使代码更加抽象,而不是高度耦合。
    所有上面说的特性,都不是 JAVA 特有,而是面向对象的语言的设计原则。python 没有控制反转吗? c++也是这么实现 DI 。
    说简单点,就一个多态,就可以干倒你说的,静态检查。并且你说的,JAVA 设计理念不应该“write once, run anywhere”吗
    keepeye
        36
    keepeye  
       2020-09-08 14:50:39 +08:00
    python 还是算了吧
    no1xsyzy
        37
    no1xsyzy  
       2020-09-08 14:55:20 +08:00
    @Huelse 你这不是语言的特性,而是库的特性
    NumPy 和 Tensorflow 不在 CPython 解释器里运行。

    @minami 期待 Jython 的表现,能够同时干翻 Java 和 Python 是最吼的(
    whileFalse
        38
    whileFalse  
       2020-09-08 15:17:58 +08:00   ❤️ 1
    @Macolor21 所有面向对象语言都可以依赖注入,所有可以动态生成类型的语言都可以切面 /装饰器。
    但你看其他语言有一个非常流行的框架让你使劲儿写依赖注入代码吗?
    Python 的 Falsk 框架就靠一个装饰器。
    Node.js 的 Express 连装饰器都不用,直接丢函数进去。

    依赖注入是有很高成本的。启动时间、运行速度、框架的可理解性都是成本。
    lidlesseye11
        39
    lidlesseye11  
       2020-09-08 15:19:44 +08:00
    干倒 Java ×
    干倒 Web ✓
    felixcode
        40
    felixcode  
       2020-09-08 15:21:02 +08:00 via Android
    请 Python 之父*雪峰现身
    hpeng
        41
    hpeng  
       2020-09-08 15:48:38 +08:00 via iPhone
    一行代码!
    tydl
        42
    tydl  
       2020-09-08 15:54:28 +08:00
    web 开发 这边建议你考虑一下 php 哦
    省心省事
    gakkiismywife1
        43
    gakkiismywife1  
       2020-09-08 16:11:42 +08:00
    打不过就加入
    Macolor21
        44
    Macolor21  
       2020-09-08 16:26:08 +08:00   ❤️ 2
    @whileFalse
    因为 J2EE 本身就是大型企业的框架,使用了多层架构模式,一般都有 DAO,SERVICE,CONTROLLER 三层,而 FLASK 的 DEMO 我看了一些都是 CONTROLLER 和 MODELS 。
    我举个简单的电商下单例子:
    控制层:基本的参数校验,防止缓存穿透的基于 Redis 的参数校验,库存校验(依赖 Redis )
    业务层:RPC 调用促销服务,会员服务,商品服务以及支付系统来组成一个完整的下单逻辑。并通知库存系统,以及物流系统做发货。(这里面设计了多少个系统间的依赖?)
    DAO 层:订单数据库的更新。

    你可以尝试一下用 Flask 写一下逻辑,如果不用依赖注入,每个服务间的 RPC 调用,需要写多少代码。因为是微服务架构,需要每个服务都集群部署,每个服务可能都依赖了多个其他服务,这之间的代码不用依赖注入,需要写多少行,多少个类。之后如果需要变更业务逻辑,需要改变几个服务项目的代码?

    不要拿轻量级应用场景去对比复杂的应用场景。
    hijoker
        45
    hijoker  
       2020-09-08 16:32:19 +08:00
    @Huelse 我要没写过 python 说不定就信了你了, 干活的都是底层的 C/C++, python 只是让你们调用方便, python 相当于外层的一个壳, 可以看看 numpy 这个目录下的文件: https://github.com/numpy/numpy/tree/master/numpy/core/src
    willww64
        46
    willww64  
       2020-09-08 16:49:36 +08:00
    @Macolor21 膜拜大佬。身为只会 python 和 golang,觉得 java 看起来超级啰嗦的运维,表示有空还是要学习一下 java,长下见识。
    whileFalse
        47
    whileFalse  
       2020-09-08 16:49:49 +08:00
    @Macolor21 然而 Python/Node 做服务间调用大概率 JSON 了,直接中括号访问……
    读写数据库也经常直接摆一排变量。Python 有 ORM 不过我不常用。

    当然,静态类型语言在这里的确有重构的优势。
    johnsona
        48
    johnsona  
       2020-09-08 17:05:51 +08:00
    @Macolor21 有没有好的 java 微服务项目参考一下
    TEwrc
        49
    TEwrc  
       2020-09-08 17:06:20 +08:00
    月经贴
    Macolor21
        50
    Macolor21  
       2020-09-08 17:37:16 +08:00   ❤️ 6
    @whileFalse
    你服务间调用不考虑负载均衡,断路器的? python 的 nameko 不也用了 IOC,不也得按照 JAVA 那么写么。为什么除了 net 和 JAVA,没有其他语言能够写大型系统?生态是一方面,另一方面就是你说的 JAVA 这些繁琐的约束。所有的设计模式都不是凭理论产生的,而是在大型系统中的编码中提炼出来的。
    你所吐槽 JAVA 的点,就是吐槽大型系统为什么这么复杂,JAVA 作为语言本身没有什么错,只是用 JAVA 的人为了满足大型系统的需求才开发出来这些框架。你可以试试 EJB,比现在的 Spring 更繁琐。你说的那些黑魔法,就是大型系统迭代开发时,精炼出来的设计原则,基于这些原则开发,即使是大型系统,也变得容易上手,这就是 WHY 。如果你觉得 JAVA 繁琐,你可以自己写一个更简单的框架,没人拦着你,JAVA 不可以用 JSON 做服务间调用吗。
    wysnylc
        51
    wysnylc  
       2020-09-08 17:41:09 +08:00
    @Macolor21 #49 他们只反对,并不想解决
    dwSun
        52
    dwSun  
       2020-09-08 17:47:03 +08:00
    python 就没想过干倒谁,要不是 ai 这些年流行,python 自己搞不好就被干倒了。
    有多少曾经用 py 写 web 的公司都转到别的语言上了。
    Macolor21
        53
    Macolor21  
       2020-09-08 17:48:50 +08:00   ❤️ 3
    @willww64 JAVA 强大的背后不是语言的特性,而是设计模式,设计原则,这些在大型系统开发中必不可少,但是小程序,写个脚本什么的,很少用 JAVA 去做。学 JAVA 本身的语法其实用处不大,Spring 思想(设计模式),微服务架构之类的才是精华。你想深入了解可以先看微服务架构的书,然后 IPC (进程间通信)学了之后看 MIT 6.824 ,这些比学 JAVA 而言更有用。
    Macolor21
        54
    Macolor21  
       2020-09-08 17:52:00 +08:00
    @jsisjs20130824 无,微服务核心在思想。Spring Cloud 只是工具,看文档学会怎么用就行了。项目也只是几个注解,微服务开启 @EnableEurekaClient 注册到注册中心。配置 API 网关,服务间调用用 Feign,消息总线 balabala 。代码层面上没多大区别的。这些只是“工具” !
    linxb
        55
    linxb  
       2020-09-08 17:57:39 +08:00
    @firefox12 这恰恰是企业喜闻乐见的事情,员工即插即用,不存在不可替代的螺丝钉
    wuwukai007
        56
    wuwukai007  
       2020-09-08 19:05:00 +08:00 via Android
    我寻思这么多用 ai 的公司难道要专门养一批 java 来写后台,在养一批人做 python 和 java 交接?
    oahebky
        57
    oahebky  
    OP
       2020-09-08 19:15:15 +08:00
    @minami “正经的说,还是把 Python 解释器好好搞下把,CPython 一言难尽……”

    ------

    淦,坐等大神造个“静态解释器”:

    - 要求所有 Python 变量都必须写类型(检查);
    - 然后基于这个“静态解释器”造个面向(互联网)企业级 Web 框架;

    自底(解释器)向上(框架)把 Java 在 Web 领域的地位扳倒!
    oahebky
        58
    oahebky  
    OP
       2020-09-08 19:23:49 +08:00
    @wuwukai007

    ai 公司用 Python 没错,但是这些 AI 公司,不是还没长成规模嘛...

    ------

    不像 Java 在互联网领域有 电商、各种搬到互联网的服务(旅游、点评、出行、)、还有一堆 toB 的各行各业互联网公司、还有大数据国外的基础框架也是 Java 写的( hadoop 、elasticsearch 、etc...)

    还有阿里现在不断地用 java 造轮子(像 hadoop 、mysql 这种“基础性”的东西)...

    ----

    所以 Python 在软件行业内的规模还是任重道远呀...
    wuwukai007
        59
    wuwukai007  
       2020-09-08 19:27:59 +08:00 via Android
    @oahebky 大公司确实不缺钱,小公司一旦用 py 做模型了,绝对 python 一把梭的,就算要做客户端,pyqt 也硬着头皮上,我说的就是我们公司…
    yiyi11
        60
    yiyi11  
       2020-09-08 19:28:10 +08:00 via Android
    Java,工业级语言。什么叫工业级啊?就像一间大工厂,许多工人在流水线一起协作。
    喜欢 Java 的人会觉得大工厂好牛 b 啊,整个流程巨大而细致。
    讨厌 Java 的人会觉得当个流水线工人很捞,写代码没有一点诗意。
    ruyu
        61
    ruyu  
       2020-09-08 19:32:27 +08:00   ❤️ 10
    别争了别争了, 我说一句公道话, PHP 是最好的语言
    firefox12
        62
    firefox12  
       2020-09-08 19:34:45 +08:00
    @linxb 任何资本都是这样,想一下 如果 某个 goolge 的工程师辞职了,google 就开不下去了,这样的事情怎么会允许它出现呢?没什么人是不可替换的,
    crella
        63
    crella  
       2020-09-08 19:47:50 +08:00
    因为像 lz 这样给 Python 有意无意间招黑的人不少,所以我初学的时候就没选 Python 。
    仅供参考
    ManjusakaL
        64
    ManjusakaL  
       2020-09-08 20:09:58 +08:00
    numpy 和 tensorflow 计算效率和 C++ 相当关 Python 啥事。。Python 就充当一层 DSL
    @Huelse
    Huelse
        65
    Huelse  
       2020-09-08 20:47:36 +08:00
    @hijoker #45
    @ManjusakaL #64
    我又没否认这些,python 能够调用这些库而不损失效率且不失优雅不正是他的特点之一吗?

    照你们这么说的话,python 都没有作为中间层的必要,直接用 C 运行不就完事了,还整这么多麻烦
    abersheeran
        66
    abersheeran  
       2020-09-08 21:06:28 +08:00
    应用场景都不一样,Python 为啥要和 Java 斗?
    johnsona
        67
    johnsona  
       2020-09-08 22:26:30 +08:00
    @Macolor21 我知道,可正如你所评论的,spring 在微服务和复杂应用场景下相对于 flask 有很大的优势,至于思想,我也得结合着项目学呀,服务拆分等一些列思想我也不能看 spring cloud 文档就学会了呀
    jessun1990
        68
    jessun1990  
       2020-09-08 22:35:03 +08:00
    看场景。
    在家穿拖鞋,在外穿皮鞋,跑步穿跑鞋~你不能用一双鞋适用三个场景吧?只能比较某个特定场景下语言的优劣。
    别想着语言之争。
    JamesMackerel
        69
    JamesMackerel  
       2020-09-08 23:00:44 +08:00
    @whileFalse

    > 依赖注入是有很高成本的。启动时间、运行速度、框架的可理解性都是成本。

    之前学了一下 go 的 wire,用的是代码生成方式的依赖注入,我感觉就还挺好的……启动时间和运行速度应该都不会有什么影响,大部分依赖注入的问题也会(比起运行时依赖注入来说)在编译阶段就暴露出来。可理解成本确实会增加,不过依赖注入本来就是为了减少依赖很多的时候自己组装依赖的成本,我觉得可以接受。当然我还没深入使用过这个框架,按照我的理解,如果你一定要把运行时的事情放到编译期间去做,那肯定是会有一些 Trade Off 的……

    想起轮子哥好像说过(他的观点不一定对),很多语言没有依赖注入之类的那一套,并且喷 Java 扯淡,是因为他们还没有如此复杂的项目需要用上这套玩意儿,等哪天这语言被广泛用于复杂的项目的时候,就会发现他们讨厌的那一套都回来了。
    JamesMackerel
        70
    JamesMackerel  
       2020-09-08 23:03:26 +08:00
    其实学了 Spring 的核心思想之后,觉得“把程序的入口点交给框架,让它帮我把我写的各种组件拼起来,不要我自己 new 出来并且传来传去”这个想法还是蛮好的。
    nG29DOMuRYTWfcSr
        71
    nG29DOMuRYTWfcSr  
       2020-09-08 23:23:22 +08:00
    发现每次都是这类帖子特别火,也特别有意思,不同语言使用者,都说出了自己的心声!
    charlie21
        72
    charlie21  
       2020-09-09 00:48:45 +08:00
    java 够 skr, python 不够 skr, 结贴。
    laike9m
        73
    laike9m  
       2020-09-09 00:57:28 +08:00 via Android
    @whileFalse 说的太对了。我在公司用的一套依赖注入框架,把一切检查都放到运行时。那我还用 Java 干嘛? Python 不香么
    jhdxr
        74
    jhdxr  
       2020-09-09 01:29:52 +08:00
    @Huelse
    > python 是计算集中型的,java 是 io 集中型的,所以两者领域不同,不存在谁干谁
    > 我又没否认这些,python 能够调用这些库而不损失效率且不失优雅不正是他的特点之一吗?
    如果真的不损失效率就可以用 python 直接实现了。正是因为 python 计算太慢所以才只能用 CPP 实现然后 python 去调用。
    tomari
        75
    tomari  
       2020-09-09 05:56:51 +08:00
    两者并存不是最好的嘛
    695975931
        76
    695975931  
       2020-09-09 08:57:16 +08:00
    干倒 java 的一定不是另外一种语言。
    nozer
        77
    nozer  
       2020-09-09 09:28:30 +08:00
    Java 这种垃圾语言,只需要他自己就可以淦倒他自己,不需要别人淦。
    whileFalse
        78
    whileFalse  
       2020-09-09 09:35:11 +08:00   ❤️ 2
    @Macolor21 Java 用 JSON 做服务间调用,那么编译期类型检查不就荡然无存了吗?没有类型检查你比 Python 有任何优势吗?都没有类型检查你写的有 Python 快?这就是我为什么说 Java 分裂。Python 占了一样(编码)快,原生 Java 占了一样稳,但现实的 Java 生态既不(编码)快又不稳,还费了牛劲。

    说到负载均衡和断路器,请记得现在已经是云的时代了。Spring 框架那种所有事情都要通过框架或其他开源软件一体化解决的理念在逐渐淘汰。比如服务网格就是专门搞这些事情的,而服务网格是对应用透明的。

    我 16 年跟一位 Java 架构师基于 SpringBoot 设计微服务框架。为什么基于 SpringBoot 我不知道,可能是那时候 SpringCloud 不成熟或者架构师只熟悉 SpringBoot 。这套自己搞的框架使用了很多云提供的组件,最后的效果不错该有的都有,又好理解,又好运维,唯一需要自己部署的中间件是 MongoDB,其他都是云或者无状态容器了。

    我们的框架真的是用 JSON 做服务间调用的,也确实出过几次改接口后调用者没有同步修改的问题。不过情况比较少见。而且我们还有一层 Node 微服务,主要是 Node 调用 Java,Java 之间的互相调用不是特别多。
    xcp3555
        79
    xcp3555  
       2020-09-09 10:14:09 +08:00
    在 Web 方面,Python 没什么优势,你要是大学社团写个 demo 当我没说
    L2AKnG8GXx60bc6P
        80
    L2AKnG8GXx60bc6P  
       2020-09-09 10:33:53 +08:00 via iPhone
    别争了,我( rust )是说在做的各位( c,cpp,java,python,go,js,php )都是垃圾。
    felixcode
        81
    felixcode  
       2020-09-09 10:35:44 +08:00
    @xcp3555 Instagram 也是大学社团 Demo?
    liuxu
        82
    liuxu  
       2020-09-09 10:45:19 +08:00
    我们 php 早晚要淦倒 java,狗头保命
    Afralv
        83
    Afralv  
       2020-09-09 10:55:48 +08:00
    @hijoker 人家只是说的大多数应用场景 我看你是不是只是用 python 写了个 hello world 写了个爬虫啊 即使干活的是底层的 c 以及汇编 也是为了让软件工程师能够更加高效和集中地关注软件和业务方的事情 你要这么杠 那所有语言面向的全部都是.c .o .h 文件了 (毕竟面向都是操作系统
    whyrookie
        84
    whyrookie  
       2020-09-09 11:03:02 +08:00
    编程语言社达
    yamasa
        85
    yamasa  
       2020-09-09 11:07:05 +08:00
    @whileFalse 我为啥要用 json 做 rpc 啊? gRPC 就完事了啊,不遵循 proto 你编译都过不了。java 里不是万物皆 spring 的,用 vertx+netty 写 web service 又不是没有。
    而且 ioc aop 这些东西并不是坏玩意儿,就像 ls 老哥说的,业务复杂了,总不可能到处乱 new 或者到处单例吧?工厂?到最后倒倒转转多半还不是用一个 map 来存 stateful beans,跟 spring 实现的有啥本质区别。
    我倒是觉得 Java 真要那么死板,一点 runtime magic 的口子都不留那才真是早就该死透了。没反射,没动态代理,那很多现在主流的 framework 根本就做不出来,其中就包括 spring 。C++也有元编程和宏啊。
    yamasa
        86
    yamasa  
       2020-09-09 11:14:57 +08:00
    @relic cpp 是什么语言?另外 ruster 敢在 c 和 c++头上拉屎我是真没想到的,一边借鉴一边拉吗?
    lenqu
        87
    lenqu  
       2020-09-09 11:15:17 +08:00
    说明他还不是强到 python 不必出现?
    L2AKnG8GXx60bc6P
        88
    L2AKnG8GXx60bc6P  
       2020-09-09 11:30:47 +08:00 via iPhone
    @yamasa 你不要慌,又不是针对你( c++)
    charlie21
        89
    charlie21  
       2020-09-09 11:33:01 +08:00
    @lenqu 正因为 java 太强太复杂了,达到精通的标准是很难的 普通人无法驾驭,所以产生了让普通人也玩编程的需求,所以 python 这个 toy language 出现了
    如果 python 强成另一个 java 了,也就没必要出现了。正因为 python 弱,所以才有它存在的意义
    hijoker
        90
    hijoker  
       2020-09-09 11:42:55 +08:00
    @Afralv 我用 python 做 openstack 的业务的时候,你怕还在写 hello world 呢,是我杠,是谁说的 python 适合计算密集的呢?
    要你这么说所有的语言都适合干计算密集的,调 C 谁不会
    ragnaroks
        91
    ragnaroks  
       2020-09-09 11:53:16 +08:00
    dotnet core 都干不到 java,别的弟弟往后稍稍
    nozer
        92
    nozer  
       2020-09-09 11:57:44 +08:00
    Java 存在的唯一的意义,就是向其他语言证明他们自己是多么的优秀。
    Ravenddd
        93
    Ravenddd  
       2020-09-09 13:56:48 +08:00
    以前项目用 jsp 到 freemarker 再到 vue, 从一体到前后分离, 现在的项目基本不是一个语言搞定的;

    运维人工智能 python 就不错, 写中间件 golang 也很好, 你说这些 java 不能做吗, 可以啊, 只是有更优的选择;

    我个人认为现在 java 更多偏向于内部抗压, 保证系统稳定方便, 说 web 能不能被干掉, 也有很多人用 golang 和 python 写 web, 效果也不比 java 差;

    但是看一个公司的项目, 人员交替, 技术壁垒, 员工走了能不能快速补位, 只要看招聘你就知道了, Spring 给 java 提供了很好新血液供应, java 的企业级地位仍然很稳固, 不然也不会有"学 java 饿不死"这种段子
    ychost
        94
    ychost  
       2020-09-09 14:01:13 +08:00
    WEB 端没一个能真正和 JAVA 打的,无论运行效率还是高并发
    jwchen
        95
    jwchen  
       2020-09-09 14:56:16 +08:00
    你想啥呢
    各有各的意义
    jmyz0455
        96
    jmyz0455  
       2020-09-09 15:04:02 +08:00
    淦倒是啥意思,为什么貌似有些流行,看了下评论,纯粹就是通 “干倒” 吗?
    no1xsyzy
        97
    no1xsyzy  
       2020-09-09 15:17:18 +08:00
    @Macolor21 确实,核心问题是编写面向对象的程序就是在拉屎( Programming Object-Oriented Programs is POOP-ing )。
    最近写 Python,面向过程的部分逻辑十分清晰,直接来就成。
    但面向对象部分真的一团浆糊,状态根本不成树,反复地出现交叉联动。
    函数重载 overload 修饰,必须在最终实现中也加上注记才能被 PyCharm 认出来。
    只是 obj.method 语法太甜了,导致不得不写了一堆魔法去 “钩” 状态变化
    no1xsyzy
        98
    no1xsyzy  
       2020-09-09 15:22:31 +08:00
    @no1xsyzy 倒数第二行是无关的吐槽……
    fanpenghua
        99
    fanpenghua  
       2020-09-09 15:40:35 +08:00
    GOGOGO,我这边的大佬已经 PY 转 GO 了。为什么还纠结在 JAVA
    liion
        100
    liion  
       2020-09-09 15:45:16 +08:00
    python 和 Java 感觉没什么可以比的吧。现在 Java 已经在收缩了,不像现在的前端各种技术百花齐放,百花齐放意味着学习成本也很高
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2795 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 12:32 · PVG 20:32 · LAX 04:32 · JFK 07:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.