为什么我感觉学 Python,学到后面完全是在学别人封装好的模块?

可以从几个方面来看这个问题

愿景上,你学python是为什么?只是为了吃饭还是对技术本身有兴趣. 抛开老生常谈的工匠精神不说,对一个东西感兴趣是你持续投入的原因之一。如果说你只是对赚钱感兴趣,当下只是刚好以python入门而已,那么够用就行,很多东西大概率不会有碰到需要用上的时候。高中学了那么多生物化学知识,一辈子都不见得用得到。实在不行你还可以在挣到钱之后让别人来帮你解决瓶颈问题,虽然大多数情况下挣钱不用去死磕某个瓶颈。这个问题如果要展开,可以到创业话题下去了解一下。

实际使用上,首先对于封装的模块要有个清晰的认识

第一,不是所有的封装模块都那么可靠。拿工程上来说,spring-boot的封装非常好,快速上手项目,在生产力角度是非常棒的。但是封装越高级,就意味着一旦出现底层问题,你要解决起来就越麻烦。这还是在你有能力解决的情况下,多数情况是调包侠连哪出了问题都不知道。有时候甚至连资料都是错的。

我很久以前用spring-boot做个项目的时候,用spring-boot的stream来全量读取database,结果爆内存。当时leader拿着本书过来跟我说这样就能行,我当着他的面写了4个模式的代码,包括书上的标准做法,一个一个跑过去,向他证明书上的会爆内存,按我的来。那个时候spring-boot的封装已经不够用了,要自己去写hibernate的接口,强制release cache。当时原因是spring-boot的service层的线程机制导致cache没有被释放. 但是spring-boot封装下,官方文档中信誓旦旦地说他的封装不会爆内存。实际也有可能在某些东西设定好的情况下是能正常运行的,但是我最终也没搞清楚,因为封装太深太复杂,可以调整的setting太多,文档都没点出来,我也很难找到那个对应的设定。我后面也没继续做这方面开发了,所以就不了了之了。

第二,所谓学别人封装好的模块,大概率是在使用现有的开源软件,除了哪些知名开源软件以外,有很多维护社区不是那么大的开源软件,功能又恰好贴近你的场景,这个时候你是用还是不用?用的话,出了问题你自己修吗?你会修吗?不用的话,你还不是得自己造轮子

说到轮子,连python语言本身都有一些功能没有实现好,或者存在一些缺陷(比如typing中的recur引用,generic和typevar同时使用"这个在FP里面叫higher kinded type").所谓只要调包就好,只能说明你没碰到难的问题。

当然用非技术方式绕开硬茬也是一种处理方式,这个时候除了以保证项目完成为第一目标以外,看的就是你个人的品位了。同样的功能,你可以996肝复制粘贴代码;你也可以玩高级抽象,弄个domain specific language实现高代码复用(其实花的时间不一定短,也会带来别的问题,凡事都有两面性),两种实现方法都能完成目标。工程实践的时候需要取平衡点。

但是不应该用简单的一句”技术崇拜“来衡量。如果是一个人这么说,我会觉得这个人没什么技术追求;如果是一堆人说,我会觉得这个环境大概率出不了什么好技术。下一句是私货:”个人很不欣赏国内的这种氛围“。Facebook挣了钱敢养haskell程序员做项目,Google挣了钱敢养科学家做transformer,国内大厂钱捞的一点不少,东西嘛就呵呵了。你问问做DL的人,谁敢去用国内的框架

第三,个人的定位是什么?调包-懂包的内在-会写简单的包-会做元编程等更底层技术-会编译器。关于元编程,这点在python里尤其严重,因为python动态语言,在纯语言层面的抽象不够,现在很多牛逼的大型项目都开始用各种hacky的手段或多或少引入更强的语言特性,来提升大型项目的稳定性,降低开发难度(比如fastai大量采用metaclass来模拟高级FP,spacy v3大量使用了cython和factory,regsiter模式,thinc内置的type checking和module dimension check). 但是这种包对于一般的python使用者来说,真是看都看不懂. 能坚持用比较简单的纯python写的源码包给你读已经是很客气了.

以上的每一层要做好,其实都会对一下层的能力有所要求. 就像开车的多少总要懂一点汽车保养吧?开得好的很多时候自己能上手修理一些小问题。要是赛车手,那估计能和工程师一起协作联调改车了。你想做哪一层呢?

最后,所谓碰到问题了再去找解决方法,这种看似精明的学习方法,往往只适用于两种人

  1. 本身已经看得够多,真正的大牛,底子够厚,厚积薄发,上手就通,一通就精(实际上也要分领域的,知识的迁移能力是有局限性的)
  2. 不需要做实际落地的领导,或者投资人

平时没有积累,往往情况是

  1. 碰到问题了,根本不知道原来还有XXX这个方法/工具可以用
  2. 概念上理解的东西实际做下去的时候全是坑,总是有各种预料之外的问题发生,最后项目延期甚至流产
  3. 上次碰到了一个问题,学习了刚刚好能解决这个问题的知识,下次碰到个同样的问题,稍加变化,不知道该怎么搞了,因为超出了上次学习到的知识的范畴. 我真见过这样的,搭个大数据平台,就是只是照着手册弄了一下CDH,不求甚解。稍微变化一下需求就不知道怎么办,每次都像是在做新项目一样,功能需求就没有不延期的,流产是家常便饭. 天天吼着能解决问题就行,多余的知识不需要浪费精力去学习。极其心浮气躁。

最后还是根据自身的定位,性格,智商选择适合自己的平衡点。

关于Python技术储备

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

在这里插入图片描述

二、Python必备开发工具

三、Python视频合集

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

五、Python练习题

检查学习结果。

六、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

 最后祝大家天天进步!!

上面这份完整版的Python全套学习资料已经上传至CSDN官方,朋友如果需要可以直接微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值