“飞哥你变了!”程序员
“没想到你这个浓眉大眼的,也叛变了革命……”面试
这就是我在讲《数据结构和算法》的时候,脑子里浮现出来的台词。算法
熟悉个人同窗都知道,我是一个“实战派”,数据库
一直在强调学编程要尽快“上手”,作出东西来,看到效果,得到正反馈和自激励……而《计算机组成和原理》《编译原理》《数据结构和算法》之类的,是能排在多后面,就排在多后面的东西。编程
但为何源栈一开课就讲数据机构,次日就写“二分查找”呢?(对了,附上当天群聊天记录若干……) 数据结构
这特么的就是传说中的“人工”智能啊! 框架
固然,以上为搞笑版。 数据结构和算法
事实上同窗们最后都写出来了。写出来以后回头看看,“其实也没有那么难嘛!” 函数
^_^,你肯定? 学习
其实,讲《数据机构和算法》,最大最大的缘由,就是“面向就业”编程的须要。有很是大的几率,你面试的时候,面试官就让你写一个“冒泡排序法”,你一脸懵逼,写个:
int[] numbers = new int[] { 3, 1, 8, 12, 7, 9, 10 }; var result = numbers.AsEnumerable().OrderBy(m => m); foreach (var item in result) { Console.WriteLine(item); }
那就比较尴尬了。
这不一看就是培训班出来的嘛!
虽说飞哥对培训班的同窗毫无偏见,但其余人不这么想啊,因此我也没有办法——至少目前是没有办法的。只能是但愿经过咱们全部人锲而不舍的不懈努力,逐渐的改变这种歧视和偏见。在此以前,你们仍是委曲求全,憋说是“源栈”培训出来的,就是是本身“自学”的吧……
除此之外的理由,应该就是本身说服本身,硬找的了。按靠谱程度,依次排列:
教学须要。你说,刚学会变量赋值,if...else和for循环的孩子,你能给他布置一个什么做业呢?就只有这些排序啊查找啊需求简单,不涉及任何类库框架,刚恰好。其实这也是面试新人时爱用简单算法的缘由。就面试那点时间,总不能讲需求就讲半个小时吧?!
向其中所凝聚的人类智慧致敬。这是真心的,反正我在准备软考,博览群书的时候,是被震撼到了的。做为一个文科生,我真心好奇这些人的脑子是怎么构造的,能想出这么多匪夷所思的办法出来?其实有不少东西,不必定是要有用才须要学,那些美好瑰丽的东西,只是看一看,都是一种享受。
我说了为何教,可能同窗们更关心的是怎么学。
其实我一直反对的,是“数据结构和算法”至上论(一样我反对的,还有“学历”至上论),注意“至上”这两个字。好比那种说法,“不学数据结构和算法,一生都是码畜”,我就很是讨厌。真的是很是讨厌,哪怕我本身好歹学了点。知识,是没有高低贵贱之分的。
总有些人,以为有什么缺了它就不行的“核心”技术——但我告诉你,作成一件事,其实缺了哪一门技术都不行。好比造汽车,你们都以为发动机是核心是关键,但其实一款汽车在市场上卖得好卖得很差,难道就是由于她的发动机好或者很差?用大拇指想一想也知道是不可能的!可能一款车大卖,靠的就是最不核心最不核心的技术:好看。这个世界仍是看脸的,好比说飞哥,明明就能够靠颜值……唉哟!哪里来的臭鸡蛋?唉哟,又是一个,嫉妒,赤果果的嫉妒啊!
好了好了,说正事,若是你由于众多车型由于外观热卖,就说“外观设计”就说汽车工业的核心,那就又犯了一样的错误。难道发动机制动就不重要了么?没有发动机,跑都跑不起来,还卖个屁!
因此,其实不管是一件事,或者一我的的成功,都是综合因素的结果。只是咱们看问题的时候,有意无心的,忽略了不少不少方面,按咱们的想象,把成功简单的归结于某一点。
好像又有一点跑题。长话短说,数据结构和算法,怎么学,看你的兴趣。实际上,学无止境,只要尽力了,能学到哪里就到哪里,没有什么问题。计算机发展到今天,其实已经大量封装高度抽象啦,咱们作程序员,不必定个个都得造轮子。其实能把别人的轮子用好,能作一个所谓的好码农,都已经很了不得了。定义稍稍严格一点,不少不少的程序猿,连“合格”都够不上。
固然,你说,我对这玩意儿特别感兴趣……那不要紧啊,盘他!是否是?可是呢,给个小建议,别盘出什么优越感来了。不必,还拉仇恨值,关键的关键,这颇有可能让你变得狭隘,局限你的视野:除了数据结构和算法,本来还有不少不少颇有意思颇有挑战性的东西。
最后的最后,给没时间看我视频的同窗简单总结两条:
不少教材,讲数据结构就“链表”“二叉树”的讲数据结构,数据结构是什么样子的,怎么插入怎么删除怎么查找,什么都讲了,但为何须要这样的数据结构?不讲!或者一笔带过……这是很是很是不负责任的!飞哥那时候学数据结构,这一点是把我坑死了的。很后来很后来,也不知道是哪里东看一句西捡一段,“哦,链表是为了内存管理!”“栈,是方便函数调用”“二叉树就是数据库的索引”……这样点点滴滴的才把这些东西串起来,数据结构的世界才豁然开朗。
学习,你必定要知道学习的目的,学习的意义,你才能更好的坚持下去。就像走路,蒙着你的眼睛,让旁边人告诉你“往前三步,左转两步,再右转走十步”,你想一想,这种模式,有几我的能撑到下去?还不如一开始就告诉他,“今天咱们去哪里,跟着我走!”