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

2020-09-08 11:39:41 +08:00
 oahebky

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

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

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

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

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


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

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

15529 次点击
所在节点    Python
113 条回复
hpeng
2020-09-08 15:48:38 +08:00
一行代码!
tydl
2020-09-08 15:54:28 +08:00
web 开发 这边建议你考虑一下 php 哦
省心省事
gakkiismywife1
2020-09-08 16:11:42 +08:00
打不过就加入
Macolor21
2020-09-08 16:26:08 +08:00
@whileFalse
因为 J2EE 本身就是大型企业的框架,使用了多层架构模式,一般都有 DAO,SERVICE,CONTROLLER 三层,而 FLASK 的 DEMO 我看了一些都是 CONTROLLER 和 MODELS 。
我举个简单的电商下单例子:
控制层:基本的参数校验,防止缓存穿透的基于 Redis 的参数校验,库存校验(依赖 Redis )
业务层:RPC 调用促销服务,会员服务,商品服务以及支付系统来组成一个完整的下单逻辑。并通知库存系统,以及物流系统做发货。(这里面设计了多少个系统间的依赖?)
DAO 层:订单数据库的更新。

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

不要拿轻量级应用场景去对比复杂的应用场景。
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
2020-09-08 16:49:36 +08:00
@Macolor21 膜拜大佬。身为只会 python 和 golang,觉得 java 看起来超级啰嗦的运维,表示有空还是要学习一下 java,长下见识。
whileFalse
2020-09-08 16:49:49 +08:00
@Macolor21 然而 Python/Node 做服务间调用大概率 JSON 了,直接中括号访问……
读写数据库也经常直接摆一排变量。Python 有 ORM 不过我不常用。

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

------

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

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

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

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

------

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

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

----

所以 Python 在软件行业内的规模还是任重道远呀...
wuwukai007
2020-09-08 19:27:59 +08:00
@oahebky 大公司确实不缺钱,小公司一旦用 py 做模型了,绝对 python 一把梭的,就算要做客户端,pyqt 也硬着头皮上,我说的就是我们公司…
yiyi11
2020-09-08 19:28:10 +08:00
Java,工业级语言。什么叫工业级啊?就像一间大工厂,许多工人在流水线一起协作。
喜欢 Java 的人会觉得大工厂好牛 b 啊,整个流程巨大而细致。
讨厌 Java 的人会觉得当个流水线工人很捞,写代码没有一点诗意。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/705133

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX