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 条回复
hijoker
2020-09-08 12:57:42 +08:00
@Huelse python 还计算密集????你说反了吧
minami
2020-09-08 13:02:50 +08:00
暴论:Java 已经死了,剩下的是 JVM 。大家其实不关心跑在 JVM 上的是 Java,Kotlin 还是 Scala,鸠占鹊巢完成之时,就是 Java 消失之时,狗头
minami
2020-09-08 13:04:53 +08:00
正经的说,还是把 Python 解释器好好搞下把,CPython 一言难尽……
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
2020-09-08 13:12:08 +08:00
python 写 web 真的不行,还是得 nodejs
InkStone
2020-09-08 13:41:33 +08:00
@Huelse TF 和 NP 可以用 CPython 也跑的飞快是因为 CPython 的 C extension——换句话说它跑的就是 C++,根本不是 Python 。你用 Java 也是一样的,最终调用的都是 so
Marine5174
2020-09-08 13:42:24 +08:00
@minami +1

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

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

依赖注入是有很高成本的。启动时间、运行速度、框架的可理解性都是成本。
lidlesseye11
2020-09-08 15:19:44 +08:00
干倒 Java ×
干倒 Web ✓
felixcode
2020-09-08 15:21:02 +08:00
请 Python 之父*雪峰现身

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

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

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

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

© 2021 V2EX