zl程序教程

您现在的位置是:首页 >  后端

当前栏目

你一定是在逗我,Python都不会就想做算法?

Python算法 不会 一定
2023-06-13 09:11:31 时间

作者 | 梁唐

大家好,我是梁唐。

之前在B站做了一期算法工程师能力拆解的视频,引来很多小伙伴私信咨询。问我最多的问题就是我想要做算法,请问应该怎么办?

想做算法本身没什么问题,毕竟也算是高薪科技岗位吸引人是正常的。但让我们没想到的是,少年们居然连Python都没学过。问就是不知道学了有没有用,想问清楚再学……

虽然学什么不学什么是大家自己的事情,但还是挺让我不太舒服的。口口声声说要学算法,要做人工智能,可就连学门Python都要瞻前顾后、畏首畏尾,实在是很难令人信服。但转念想想,要是人人都能自我驱动,完成夙愿,也就不用在B站里找人问了。

所以今天这篇就和大家聊聊这个问题,当你有一个诸如想要做算法,但不知道从何开始的愿望的时候,该怎么办?

一个故事

在文章开始之前,我想讲个故事。说的是在四川有两个和尚,一个穷和尚一个富和尚。有一天穷和尚对富和尚说,我想去南海,你觉得怎么样呢?

富和尚说,你拿什么去南海?

穷和尚说,我要一个瓶一个钵就够了。

富和尚说,我用了好几年的时间准备买艘船去,现在都还没能成行,你这样怎么可能呢?

过了一年,穷和尚从南海回来了,告诉了富和尚南海的见闻,富和尚自愧不如。

我很小的时候就看过这个故事,当时还不以为意,现在再看,真的是觉得非常非常妙。妙的地方在于它非常真实,因为你我都知道,靠着一瓶一钵是可以从四川到南海的。玄奘法师一人一行囊连印度都能去,南海自然更不在话下。更妙的是,对于和尚来说,云游天下本来就是修行的一部分。

所以相比于其他励志故事告诉我们,只要努力就能成功,这个故事要朴素得多,也更容易令人信服。

如果你相信穷和尚只凭着一瓶一钵能去南海,那么你相不相信但凭着自己的努力,能够学会Python、机器学习、深度学习等一系列看起来眼花缭乱的技术呢?

如果你相信,那为什么不愿出发呢?

空想和理想间差了行动

如果你看完故事看懂了努力和信念的力量,算是看懂了第一个层面,其实这个故事还有第二个层面:穷和尚有的他都有,为什么富和尚没能去南海呢?

很明显,富和尚并不是什么都有,他其实缺了点什么。我个人认为,他至少缺了一样关键的东西,就是理想。他有的不叫理想,而叫空想。

他用了几年的时间想着应该买艘船去,买了船还需要准备一些干粮,有了干粮,还需要一个随从帮忙照应。有了干粮也有了人,还少不了地图,即使地图也有了,肯定还要一些公文手续。公文手续全了还需要挑个好日子……

如果你顺着思考下去,你会发现需要的东西几乎是无穷无尽的。这不就像是很多人在学习之前的心路历程吗?想要学算法,发现要学Python,学了Python还不够,还要学机器学习,学了机器学习还要学深度学习。学了深度学习还要刷LeetCode……看起来好多啊,算了累了,还是先刷几个短视频放松一下吧……

空想怎么变成理想呢?很简单,只需要行动而已。

说到行动,我还有一些感触,就是现在的人太浮躁了。总想着一蹴而就,立竿见影。以前我老师讲过一句话叫做眼高手低,总是喜欢眼睛看看,很少踏踏实实动手去做。有些是觉得太简单,看不上,还有些是觉得好像很难,觉得畏惧。

我曾经第一次读《机器学习》的时候也觉得很难,读得半懂不懂,摸不着头脑。即使强行学了,没多久又忘了。我高中的时候参加信息竞赛,也觉得算法很难,我还记得当时写宽搜还要参考模板。虽然原理懂,但是自己写就是写不出来。我刚阿里的时候,还没有玩过神经网络,觉得TensorFlow很难,深度学习也不会用……

这样的困难还有很多很多,但当我真的亲自动手去做,我才发现。原来一遍虽然读不懂机器学习,但多读两三遍就懂了。算法题做不出来,多写两遍就记住了,TensorFlow、神经网络更不是什么困难的技术,用个几次也就会了……

其实只要心里别想着一撮而就,能够接受反复几次的尝试,技术本身并不算困难。真正难的是战胜你那颗畏惧想要逃避的心。

搭积木式地拆解目标

最后,给大家分享一个我个人觉得很好用的方法论:当我们面临一个巨大的挑战,比如从零开始想要从事算法。哪哪都是问题,一窍不通一无所知的时候应该怎么做。

很明显,我们应该拆解目标。因为成为一个算法工程师是一个非常复杂的问题,没有一条通路可以直达这个目标,势必要进行拆分。

拆解目标是老生常谈的话题,估计大家也都知道。但一般人的做法都是线性式地拆分,要做算法,要学这个那个,先学A,再学B,再学C……这当然是可以的,但有一个比较大的问题是整个过程会比较漫长,学习的积极性很容易受到挫伤。比如你花了一个多月去学了Python,发现这和算法一点关系也没有,还有一大堆东西要学的时候,难免会心态崩溃。

我个人总结出来一种方法,叫做搭积木式地拆解目标。

我们用积木搭房子,要先搭地基,再搭低层再搭高层。同样,我们朝着一个比较大的目标努力,也可以如此操作。就拿做算法这个事情举例,最顶层的目标是成为算法工程师。想要达成这个目标,我们首先要通过面试,拿到offer。

想要通过面试又需要进行三个方面的准备,比如基本功要过硬,要有项目经验,还要有相关的面试准备。这三个方面又可以继续拆分,最终拆分结束之后,整个目标大概长这样:

一个一个目标就像是一块块积木,彼此搭建在一起,支撑起了最上层的终极目标。

这样做的好处是,我们要做的事情之间的逻辑关系非常清晰,我们在执行的过程当中可以非常清楚地知道,我们眼下做的事情,它对于我们最终的目标意义是什么。就不会在学习的时候,总是萌生出这个东西学了究竟有什么用的质问了。

这几年大家抱怨的最多的一个词就是卷,觉得竞争太激烈太累了。但其实这本身就是由经济规律决定的,前几年计算机还是劝退专业的时候,我亲眼看到学院里1/3的人想要转专业出去。现在互联网火热,又看到大批的人击破了脑袋想要进来……

天下熙熙皆为利来,天下攘攘皆为利往,利润丰腴的地方自然竞争激烈,这本身就是自然规律。既然已经做了选择,便好好努力吧。与其搬弄口舌抱怨一通,倒不如静下心来好好学点东西。毕竟抱怨不会让你变得更强,但学习会,你们说呢?

关于这个话题就聊到这里,希望能给大家一点启发。