时至今日, 还有多少程序员认为 Python 简单的

2024-01-05 10:53:41 +08:00
 iorilu

首先, 我标题强调了程序员三个字, 是有原因的

因为外面随便搜索下, 都是什么 python 简单, 1 小时上手等等文章, 视频数不胜数

但我加上程序员, 是因为这里用户大多是程序员, 或起码知道点代码的人

我希望评价的人多少用过 python , 至少写过几百行代码, 或跑过一些 python 项目等等, 总之就是至少有一定深度的实践

反正就我本人而已, 我几年前将 python 定位为主要使用语言

我的认知是, python 压根不简单, 甚至是难度相当不小, 原因为以下几点

总之, 所谓简单只是指 python 可能用的代码行数少点, 但是你想写出所谓 pythonic 的代码, 需要花费大量的时间学习, 这点肯定是不简单的.

21130 次点击
所在节点    程序员
124 条回复
akaHenry
2024-01-05 15:35:23 +08:00
@iorilu

这代年轻人, 连克服困难, debug 的能力 & 耐心都没有? 还学编程?



> 经常有人一跑代码, 发现找不到包, 想搞清楚不容易

1. pypi.org 找不到? github 找不到? Google 不会用? 直接搜报错, 找不到解答? 再不济, GPT 不会用?

2. 包版本问题: 平台问题, 二进制包问题, os 问题, 这些. 其他语言一样不少. (抱怨啥?) nodejs 版本不同, 很多 js 包无法安装, 依赖版本互相冲突, 是家常便饭. (还是见识浅)


> 更别说现在, python 环境配置, 包管理也是很乱的, 很难理清楚

1. Python 环境管理: 可以使用 pyenv 解决 Python 版本管理. nodejs 同样有 nvm, fnm. dart 同样有 fvm.

2. 包管理: 可以使用 poetry, 或者 pdm, 都可以. 对比: js 有 npm, yarn, pnpm, 哪个问题少?

3. 这些包管理工具, 有什么难? cargo, go mod, npm, pub, poetry, pod, 用的多. 都一样.

> python 很多问题就在于, 随便干任何事, 都有无数的选择,

1. 选择多, 好过没选择. 比如 dart, 很多包都没有.

2. 挑花眼? really? Google 搜任何包名 + alternative, 都可以找到包对比评分, 使用量, 热度. 再不济, 直接问 GPT, 不会? 是太懒了吧, 伸手党, 等投喂?



> python 根本就没什么规范可言,

1. 没有规范??? 还是你不知道?

2. PEP8 让你吃了, black/isort 工具, 让你吃了? flake8 检查让你吃了? mypy 让你吃了?

3. 热门项目: fastapi, flask, django 都算上, 哪个项目, 没有项目规范? 你读过源码吗? 看不见每个项目里的规范规则文件?



-----------------


年轻人, 学习态度相当不端正. 路走不远的.
dif
2024-01-05 15:37:14 +08:00
只能说学起来简单,做起项目来还是很头疼的。
目前稍微大点的项目都不会考虑 python ,还得是 Java 。python 上个月写的代码,今天看起来已经很陌生了,scala 上周写的代码,今天看起来相当陌生了。Java ,如果不是大片的 lambda ,还是很容易理解的。
shawnbluce
2024-01-05 15:39:00 +08:00
一直都没有人说 Python 上限低吧,只能说它门槛低。比如你现在让一些纯零基础的人来分别学 C 、Java 、Python 、Go 然后作业是大一常见的「学生成绩管理系统」,那估计学 Python 的人作业都做完了旁边 C 和 Java 的还在研究语法呢

(没有说其他语言不好的意思,只是佐证 Python 确实入门快而已)
akaHenry
2024-01-05 15:42:48 +08:00
王婆卖瓜一波: (送给正在学 Python 的同学, 需要的拿走, 也可以翻我早些年 关于 Python 的 blog)


https://github.com/hhstore/annotated-py-projects

Python 热门项目的源码分析

https://github.com/better-py/learn-py

流行的 Python 包测试用例 & 调研


https://github.com/better-mojo/mod

使用 Python 给 Mojo 写的包管理工具(你不是在吐槽包管理工具, 自己写啊, 又不难), WIP.
xz410236056
2024-01-05 15:50:01 +08:00
我就用 python 搞点需求还研究那些。。。对我来说,用 python 单纯是因为相关包多。
pip install + import 就行了。
adian
2024-01-05 15:51:23 +08:00
@akaHenry 哈哈,到你这里 op 倒成了入门选手了,能看到 PEP 的,我感觉都算入门了,op 用 Python 好几年了,PEP 肯定看了。我觉得我们讨论的所谓入门选手,是很多人连 PEP 都没看就说 Python 简单的,亦或者摇唇鼓舌说 Python 简单然后卖课的。

网络上讨论是容易产生这种小马过河问题,有人是松鼠,有人是小马,有人是骆驼,面对的是同一条河,现在松鼠和骆驼都说河水很浅,松鼠是没趟过河,听人家说河水浅就说河水浅,骆驼是趟过河所以才说河水浅,松鼠觉得自己是骆驼,骆驼觉得自己也是骆驼,像我们这种小马觉得河水真不浅,有些机制要想搞明白还是蛮费力的
chaleaochexist
2024-01-05 15:57:34 +08:00
@iorilu 为了堵住某些强调 pyhton 没有静态检查/类型检查的人的嘴.
把类型加上了, 但是变的超级复杂还不如直接用 golang.
chaleaochexist
2024-01-05 15:57:49 +08:00
@iorilu 还有各种 PEP 烦死了.
lzyliangzheyu
2024-01-05 15:59:08 +08:00
因为像我这种不靠 PY 吃饭的人根本不用学也能用起来,有了 GPT 以后连 API 都不用查了,对于我这种不靠 PY 吃饭的人来讲,上手这么友好,当然“简单”了,毕竟复杂功能我都用不到,顶多用来处理处理文本数据和写测试脚本。。。。。
lambdaq
2024-01-05 15:59:31 +08:00
兄弟们,快来 python 里写汇编

https://github.com/Maratyszcza/PeachPy
suhaocong
2024-01-05 16:03:45 +08:00
用 Python 写的框架简单?看个人需求,面对市场还是面对项目要求
jjx
2024-01-05 16:05:07 +08:00
python 的误解多的是

典型的什么像动态火葬场, 做不了大项目, 没有类型定义, 写不出易于维护的程序 等等

挣这个没有用啊, 写代码是靠自身修炼的
xiangbohua
2024-01-05 16:05:20 +08:00
我觉得都是一个级别,同属于高级语言,没有简不简单区别只有放不方便的区别,要比简单和困难,应该那高级语言和汇编语言比。
chaleaochexist
2024-01-05 16:05:38 +08:00
@akaHenry #60
这层的内容大部分都是和 js 生态做对比那当然一样的问题了.
这俩语言都差不多一个尿性. 要不然也没 TS 啥事儿了.

poetry 的问题还少吗? python 的规范太多, 很多工具/环境都没有按照 python 规范走. 但是 poetry 有遵循这些规范, 导致 poetry 安装第三方包报错.
具体例子我记不得了.

反正我现在已经用 virtualenv 和 requirements.txt 管理依赖了. 省心.

再说 PEP8 和 black 等 formatter
以及 flake8 等 linter
如果每一个都要熟悉和配置是挺头疼的一件事.
对比 golang 就轻松很多.
对了, 现在又新出了一个 ruff, 把 black 和 flake8 都干掉了.

每个人的精力是有限的, 我还是觉得程序员的主要职责是把代码敲好, 而不是一个搭(开发)环境高手.
Yuanlaoer
2024-01-05 16:06:36 +08:00
一种“语言”简单不简单,取决于要做什么事情,以及目标是什么。
先定义清楚再讨论,才有意义。
maybedk
2024-01-05 16:06:46 +08:00
非程序员,主用 python 的人来回答,python 优点:门槛低、学习曲线平滑、库多。但是,只要是图灵完备的语言其实都一样。所谓的简单是指上手简单,比如和 java 对比,少了很多概念(接口、参数类型声明),拿自己的感受举例,后来去了解 java 时发现,java 在语法层面只是加了很多很多限定,这些限定 python 都没有,也许都是面向对象的原因,二者其实是非常像的,如果你从 java 入门,那 python 写起来实在是太简单了,比 js 的坑还少。然后底层性能上肯定是各有所长,这块没得说,作为程序员肯定是要根据具体情况选择技术栈的。最近又入门了 Golang,这语言居然不能直接声明对象,靠指针引用也是非常奇妙。
zzhaolei
2024-01-05 16:15:46 +08:00
python 学习起来确实简单,但是语法太复杂,有些库是研究人员写的(比如大模型相关的),根本就是一个人一个写法,太乱了。

而且没有类型,各种乱穿,根本不知道传的什么,反正能跑就行了。
churchill
2024-01-05 16:17:19 +08:00
sorted([i for i in arr if i["gender"] != 0], key=lambda x: x["age"], reverse=True)

arr.filter(i => i.gender != 0)
.sort((a, b) => a.age < b.age ? 1 : -1)

python 的 lambda 就是个残废

I hate python as much as I hate OT
qinyj12
2024-01-05 16:21:23 +08:00
我算是个半吊子野生程序员,平时工作忙,有空时自己写点小脚本之类的,估计也就能比小白强一点点。我学习过 java 、c 、python ,也看过 ruby 的项目,只有 python 能学下来。库多、社区活跃、中文资料也多,没有哪个语言能比 python 更适合初学者入门的了。像我们这样的非专业同志,选择语言永远是把编码效率放在第一位,其他的什么执行速度、优雅不优雅之类的,根本就不再考虑范围内,我又不是写什么价值几十亿大项目,能用就行,快才是最重要的。我相信这也是 python 社区能够活跃至今的主要原因,他的受众范围要比其他语言大得多。
BuffDog
2024-01-05 16:27:01 +08:00
执着于语言本身就能说明问题

菜就多练

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

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

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

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

© 2021 V2EX