学CS的坛友,Python的好处在哪些方面?
商科PhD转Python动力不足,坛友指其适合面试、胶水脚本及AI生态,非大型后端首选。
关键信息
- 定位差异:学术界(R/Stata)侧重统计建模与画图,工业界/大厂更倾向Python #2, #4, #16。Python被视为“粘合剂”,擅长连接Shell、C库及各类API,而非底层高性能开发 #14, #53。
- 核心优势:
- 主要劣势:执行效率低,多线程受限,不适合高并发后端或超大规模数据处理(需依赖C++/Java底层库) #3, #17, #44, #74。代码规模扩大后维护成本高,缺乏静态类型检查易导致混乱 #17, #53, #83。
经验与数据点
- 学习路径建议:
- 行业现状:
争议或不同意见
- 语言主流之争:User
lasttrip认为Java/Kotlin/Scala属同一体系(JVM),Python自成一体;UserJAL引用TIOBE指数反驳,认为C++/Go/PHP更主流,双方就“主流”定义及Java生态归属发生激烈争吵 #30-#41。 - Python vs R:部分用户认为R在统计绘图上仍具优势且更快,Python在联动其他脚本时更方便;也有观点指出R做爬虫不如Python方便 #28, #35, #81。
- 维护性担忧:User
suizz和xxxyyy强调Python大项目维护难,需严格类型注解(Type Hinting)才能保持可读性,否则易变成“屎山” #17, #53, #83。
风险/限制/注意事项
感觉坛里到处都是大厂CS专家,想问问是不是你们平时工作都是用Python的?本人商科PhD,本着就业目的,最近准备着手再深刻学习 Python ,但是找不到动力。平时做研究都是用 R或者Stata ,因为我们处理数据,估计模型之类的这两个很方便,paper上面基本都是这两个软件为主,也有很多现成的stat package。 在tutorial中,还是讲处理数据,感觉Python没有优势啊。。所以Python的主要作用是什么?我之前用过它做Web Scrapping,这个是我目前唯一觉得R和Stata不能处理的地方。我不知道是我找的资料不对还是啥的。请教这样的背景下应该以怎么样的心态去学Python?
学术界用R,工业界用Python。你需要和大家一起工作,仅此而已。Python不用深刻学习,玩具一样的语言,本来就不讲究。看个Tutorial写写代码顺其自然就行了。 我花在琢磨Python语言本身上的时间可能不及C++的1%
python费资源,多线程也不行,本来就是个解释语言,写点简单玩意还行,上大的系统就不行了 主流还是Java Kotlin Scala 微软系的C#
Python因为学的容易所以用的人多,尤其是其他非CS专业,不管是物理还是生物;所以适合跨学科合作。以及搞AI一般用Python多,虽然也只是个前端语言,操作各种库来生成背后的高性能实现。
说的很有道理。但是我感觉语言这方面逻辑很重要,一直用R 感觉像一直吃粤菜的广东人去下四川馆子,有点抵触。你学着么多语言怎么在他们之间转换呢。
lasttrip: 简单玩意 比如什么作用,一般你在工作中什么类型的工作要用Python lasttrip: Kotlin Scala 这两个就真没听说过了
上学的时候先学的R再学的Python,喜欢Python更多,工作以后就只用Python了。
这些都是垃圾,易语言才是王道。 易语言牛逼牛逼到写个hello world 都会被杀毒软件识别成木马
轮到我时,就再没人为我说话了: Python因为学的容易 我感觉如果零基础学Python很好入手,别的programming用习惯了需要调整的过程。为什么AI喜欢用Python?只是因为现成的库多?
23rj-as: 喜欢Python更多 Why?工作中什么是Python有强项的地方?能不能举几个例子
每个东家都不一样,你要问用python做主要service得公司问问他们能干嘛了 python在我干过的几家都是本地跑自己的script处理点小数据,或者做什么testing用的 Kotlin和Scala都是run在JVM上的,本质上就是Java的变形,适应的玩意不一样,Scala的对异步处理比较强大,大数据处理的应用比较多,你会Java,学Kotlin和Scala就很快,就是语法不一样,本质都是一样的,Scala和Kotlin都是直接调用Java的Library,所以他们三个一回事情
Chewy: Why?工作中什么是Python有强项的地方?能不能举几个例子 我是做analytics的,用Python本地做automation, pull data, cleanse data, 跑ML model都很方便。 我个人感觉R相对比较强的是stats tests和画图,当然相应的包在Python里也有。 Python用的人多,各种包满天飞,总有一款适合你。
其实除非你做很底层的开发,其他情况下编程语言一点都不重要,基本你去的公司和团队用啥,你跟着用啥就是了。 而python本身也没多少内容吧,除非这是你入门的第一门语言,不然过一遍教程,用到的时候查一查,花不了多少精力。
Chewy: 有点抵触。你学着么多语言怎么在他们之间转换呢 我很不喜欢Python,但是它就是个粘合剂。从shell script到C库,什么都可以粘在一起 它既不优雅也不快,就像你们家的扳手,制作粗糙你也不爱但是时不时拿来用用。不要take it too seriously.
如果目标是进大厂,其实工作上用啥语言完全看需求,大多数都默认你边工作边学习,而且一有的项目完全可以用多个语言。按照进大厂的目标,你现在需要的是一个面向刷题,面向面试的语言,Python 就是一个很好的选择。其他解释性语言比如 javascript 都可以。标准就是在写题的时候如臂指使,语言本身不会给你带来任何心智负担,影响你想算法就可以。 如果你的目标是从一个语言开始进入 CS 的世界,想打基础学习各种基础知识,那么 C 或者 Python 也挺好。 总之,你的目标是啥。如果不打算转行码农,那就看你日常工作用的到啥就学啥呗,用不到不要强求。
看工作内容啊,quant 相关的基本要求都是R/Py/SQL外加spss 什么的。 感兴趣的话可以搜搜data 相关的job posting
说个偏门思路,代码维护性。 Python拿来自己写点小东西或者当个胶水还是很舒适的。语法好理解,出成果快。但是写出一个可靠的、对各种异常处理到位的、可读性可维护性很高的Python大项目却不容易。这当然可以做到,但是如果你在写Python的时候规定好了输入输出的数据类型,各种面向对象封装,都做到这一步了我为什么不用java
23rj-as: analytics 我感觉也想往data scientist,analytics或者risk方面找工作。想学Python主要是担心面试如果要考Python coding现场学就来不及。多少会指定语言呢?
我遇到过有coding test的都是可以自己选择语言的,除非Job Description就是要求你会某一种语言。
d4b: 如果不打算转行码农,那就看你日常工作用的到啥就学啥呗 应该不转码了吧,学了这么久商科有点难。。。主要是面试导向型吧,挺前辈们说面试前刷leetcode,python啥的。
suizz: 输入输出的数据类型,各种面向对象封装 哈哈,这些在大学本科一年级学Java的时候听过,后面本专业完全没有这种东西。
Python的最大好处就是它是一门Interview Oriented Programming 的语言
轮到我时,就再没人为我说话了: 以及搞AI一般用Python多 我了解的AI职位都是C++
Ruby也有同样的问题,动态语言一时爽,项目膨胀火葬场。 为了解决Ruby的type问题,Stripe整了一套Sorbet强制让程序员声明类型,可以说十分爆笑了。
JS TypeScript不一样,把前端的东西往后端用,发现没有type真难受,然后换乘type script,直接用Java不就完了,折腾啊
我之前到工作也是Scala,组长给了本Scala的书叫我不会就看书或者Google,跟java很像,以前学校里统计系用r或者python,但是教授上课不会教的,他们嫌太简单,最多 TA在discussion里搞搞q&a
对就是这个意思,看似轻巧的语言都是有代价的
说实话我感觉你R也没用熟。R做爬虫的包不要太多。
四五年前的proj了,R也没用多久那时,顺便想学学Python,有些动态的网页R操作起来确实没Python方便。
lasttrip: 主流还是Java Kotlin Scala C++, Go: ??? Meta还在用PHP呢
恩,全美国就那么几家马工点 meta占全美马工一半 对对对
主流不主流不是你说了算也不是我说了算,你认识的码农占美国一半了? https://www.tiobe.com/tiobe-index/ C++, Go, PHP都比Kotlin和Scala主流 我又不是Meta员工,何必呢?
为什么把Java排在外面?你想表达什么? 我说kotlin和scala和java是一个系,没说kotlin和scala主流 不知道你抬这杠啥意思? PHP主流?几家backend用这玩意? 要抬杠booking还用perl呢,大家都去学perl?
本人代码菜逼 但感觉python的一大好处是用的人多,package多,常见的函数或功能基本都有人实现过,直接安装使用就可以。 C++或Java好像就没这么方便?
个人愚蠢的见识就是,python 搭上了深度学习的大船(易于使用的)这比R强太多了,然后R效率低,虽然好多都是cpp搞的,但是R 的多核无解,最多并行。当然R的优势就是包多,比python还好学,画图方便
看你做啥,前段后端,还是光数据分析 platform还要用shell呢 data science用Python对 backend也不主流用这个 撇开具体工种谈用哪个主流都是耍流氓,接下去就和楼上那位一样,光抬杠了 我还说干后端多多少少还会js呢,搞amex offer都会js呢,岂不是js全球第一?
lasttrip: 主流还是Java Kotlin Scala Kotlin Scala主流不是你说的?这句话怎么看出“是一个系”,“没说是主流”? 为什么把C++和Go排在外面?你想表达什么? 你要黑PHP就去黑吧跟我没关系 if you have nothing nice to say, don’t reply.
主流是Java,后面两个是带上是靠近Java一个系列,会Java和会kotlin和scala立马贯通,放在一个group里面 好比c和c++一个系列 c#又不同,主要微软系用 Js又是一个体系 Python也是自己体系 分就是这么分的,写过大家都知道, 你跳过Java故意把kotlin和scala拿出来说不是抬杠是什么钱? 自己不懂瞎bb啥
可读性强 + 好写? 门槛低 -》 用的人多 -》 包多 -》 好用 -》用的人更多了 …
以上这些意思你表达清楚了吗? 我说Java不主流了吗? 你以为我是开飞机的还是卖机票的?我从高中到现在写了十几年代码了,写过的Java应该不比你少
那你应该知道我说啥啊 我分了两行,意思就是那三个是jvm里面一套的 第二行是微软c# 你非要把我的意思拆开,没写过java小白也就算了,你写过还不知道这三是啥? 明显就是要和我抬杠
面试好用
班多啊
Pyhon 容易上手,在很多领域 (比如AI) 可以用的框架或者library比较多,但是效率差,不适合做大型backend; C++ 效率高,但是学起来比较难,很多人学了一两年很多概念还是不太懂,大公司FG的infra里基本都是C++
https://www.uscardforum.com/t/topic/136007
简单门槛低呗,但真的除了偏research岗的感觉并没有什么Python的余地
Little: 深度学习 感觉现在太多职位都都要求这个技能,但是实际工作中又很少听到在用… 果然是面试专用
illusionwing: 班 wym?上班用的人多?
Chewy: 实际工作中又很少听到在用 实际工作指的是什么
就比如quant的工作,我听学长学姐说大部分情况下他们就是regression一下,没有听说专门做AI和ML。
每次讨论一种编程语言的优缺点结局都是吵架
上手容易,data science中用的很多
Python是胶水语言,能用来干什么取决于你用了什么库,你用numpy scipy性能并不会比matlab R什么的差很多。HPC领域都能用python,因为很多库都非常强大。 Python的问题在于代码库过大的时候维护难度会急剧上升,非常依赖文档和代码分析工具,所以往往在工业界中只能用来做data science或者作为小的运维脚本存在。 我个人还是很喜欢python的,毕竟开发速度是真的非常快,同一个应用python可以更少的代码更简洁的实现。
优点是学得快,缺点是会人变懒…
好处在于第三方库太全了,几乎什么破事都有人做过可以现成使用
简单好用库多hhh
字数字数
这么看来perl一无是处了
很久很久以前,学校用 SAS and matlab . (还用过 AMPL)后来就被R 和 python +SQL 取代了 Python 的优点就是简单
没有好处,python就是在实验室里打杂用的
最近搞了几个gov项目,SAS依旧十分魔性。感觉这未来是个稀缺工种。
perl太难学了
Emacs vs VIM Linux 各分发版本哪个好用 …… 一步到位进吵架版
怎么用最少的资源最烂的服务器配置处理最大的数据?SAS欢迎你
vczh: 实验室 什么类型实验室呢?商科没有实验室这个东西,只有四面是墙,15个人共用的办公室。。。
很好奇,能大概讲讲么
各种学校的实验室,算是个机构,不是个建筑,几张桌子围起来放几台电脑。写python就像洗试管和烧杯,这么想就好了
很多人觉得只有做“实验”的才叫实验室
用来写一些需要automation task 挺方便的
讲个我的例子吧,工作不是专业开发公司,是数据公司所以同事大多数是数据库方面的运维人员,还有在用vb的老古董的程序员,我做一些内部系统,我之前是java + vue + js + css 写全套的,适逢python起来的那两年,完了领导喜欢python,因为他工作大量需要运维性质的跑数计算,写个小脚本而不太在意性能快不快什么的,python做这种很方便快速。后来我要写一个前后的分离一个平台,领导让我单独写前端因为觉得springboot那一套开发速度太慢而且他觉得后续没招java的人员没人看得懂维护代码,找了一个vb程序员让他转python,用fastapi写后端,我是一直抱着怀疑态度的,默默的看着他后端的代码数据库操作一个DB.py文件撑到了好几万行了(因为之前vb也没啥分层思想,不像java啥都讲架构分层)。但是周围开始都是python的人员,没有人用java了,我也没啥可说的了。,所以我就很期待这个平台运行到后面是不是也就是个玩儿。所以python的优势大概是太容易所以谁都认为自己可以,慢慢的没别的语言什么话语权了。
python是想写个小脚本的时候最方便的语言
no no no no no,shell script才是最方便的,当然PHP才是世界上最好的语言
放屁 python那么好用 既可以写ML 又可以写网页前后端 又可以各种胶水粘合 为什么还有人说它不好? 偏要把事情搞得那么复杂, 能拿python解决的为啥要用c++ 什么scalable 什么efficiency 什么的问题 有几个普通人平时能接触到的 最好用的语言,就是用的人最多的语言
效率,大数据处理用不了python
pyspark不挺好的么
没用过,连我们组做的玩意,用scala遍历大数据都会超时,还要用优化后的cfor,要不然付死AWS的费用了 如果解决小问题,内部那种简单的pipeline啥的,用啥都无所谓了,developer哪个熟悉用哪个就行了
也要看大数据具体是多大的数据。如果是100+GB能够加载进memory的,Pandas 一般就能对付。再大点的就要上别的了,比如Dask,Pyspark,又比如新出来的Polars
有一个优点好像帖子里很少人提到:因为写的人多,语料库更大,所以AI更懂。同样的算法题/需求你让ChatGPT给你用python写,写得又快又好?换成让它写Haskell就未必了
也不是吧。我们这边就很缺真正会写cpp的人,求贤若渴
Chewy: 在tutorial中,还是讲处理数据 前半老财半茶树菇,一年查数姑工作经验。 那是你看的tutorial 不对,还是老财tutorial吧。 我的建议,先跳过语言特性相关的书籍,等你打算写解释器打算开始学compiler之后再说。 1.数据处理,项目组/同行用啥你用啥 商科的话处理数据我也偏向r,可能我之前菜某次写的python得三四分钟 r基本上就10s。 但是我 感觉python 联动其他脚本更方便 ,我后来也没去尝试终端里怎么跑r的项目。 后来好像是在rstudio里接了python凑活用了。 这里学一下pandas和numpy基本就可以了,看四五篇入门博客那种学,20min就可以了。 2.建网站 django逻辑很清晰,建个最顶层带许多tab的, 里面都很简单的html 那种网站,超,级 ,快! 所以你可以先试着用python写个自己的个人主页。 顺便在自己的网站里调一下openai的api。 3.机器学习相关的 从调包到改pytorch里的nn。 可以浅浅学习一下调库。 以Jupyternotebook,直接在google colab跑的项目为主。 比如随便写个kmeans聚类。 比如随便跑个分词的包,主题模型可视化。 随便跑个cv的好玩的小项目,变动下图形这种。 然后记得学一下anaconda的包管理,要不然本地新手跑容易晕晕,现成的demo都跑不起来。 再写个爬虫吧! 撸羊毛也很有用! selenium随便写个~ 5.刷力扣 娱乐/转码随手找下只面lc的厂sde 如果你不打算走学术路线的话,100个小时写几十道lc 随手试一下只面lc厂的sde也不亏。 反正我就是觉得刷lc python比cpp舒服太多啦 你可以试试r刷lc… 过几天把这个回答迁移到小戏精的时候搞点项目链接和详细教程。(虽然楼主已经是一个成熟的phd了不需要我贴项目链接)
Lunasol: selenium 是啥啊? Lunasol: 只面lc的厂 请问怎么找?
xxxyyy: 维护难度会急剧上升,非常依赖文档和代码分析工具 别的不说,不加type过两天自己都看不懂了
什么行业
为什么不问问神奇的谷歌呢? lc厂给lc氪金就知道了,或者多看看一亩三分地和小红书
pytorch/tensorflwo 2 现在可以用R和stata跑了嘛?
巨难用
meta的network infra
我也是做cpp的。只是因为身份不得不困在现在的公司
polars如何啊
感觉polars让我想起了上学期学的database management system
/uploads/short-url/mh228rq2SuIg9RRAnIwcPM2lE4m.jpeg?dl=1