其实本文主要是想回顾一下大学三年到底都学了一些什么东西,并思考未来到底想要搞什么东西的心理独白。
大一的时候听很多学姐学长说过,大学里学的东西以后到社会上是没用的,到了公司所有东西都要重新培训,所以那个时候我就想一定要自己学一些到社会上有用的东西。这时候学校各个学院的基地进入了我的视线,无疑,想要学习技术一定要去基地看看。
很快我就申请进入了机电院的一个基地,那时候我刚学完C语言,而考核也是考C语言,我想我有一丝把握,谁想到那时候面试还让我用递归和迭代分别实现某个程序让我写出来,真是哭笑不得,因为已经忘记了递归是什么了,而且,C语言不就是写个主函数写个方法,然后调用那个方法完成程序吗?递归是什么,迭代又是什么,他们能干啥啊。当时我还问那个学长我说,干嘛要迭代啊?我for循环不行啊?学长回答,有些事情必须要递归才能完成的,但还是一头雾水。
不过现在看起来递归是很有用的,就比如说是斐波那契数列
int fun(int a)
{
if(a==1 || a==2)
{
return 1;
}
return fun(a)+fun(a-1)
}
递归就很好的解决了,又简洁又方便。
又比如树的递归也很好的
INORDER(t)
bitree *t;
{
if(t)
{
INORDER(t->lchild);
prinf("\t%c\n",t->data);
INORDER(t->rchild);
}
}
很简单的几行就把整个树给遍历了,虽然说,递归有它的缺点,比如说,虽然代码显而易见了,但是空间却很浪费,在大项目上是不推崇递归的,甚至在面试的时候有可能还会问你非递归的前,中,后序遍历是如何的?想想都要命了,我还是宁愿去写递归的,哈哈。
扯远了,那次面试虽然没有写出递归但还是通过面试了,毕竟还是很宽松的,之后基地的软件部要分组,说是有安卓、算法、网页、linux,分得好细,想想算法什么鬼,肯定很难,没选;网页?不感兴趣诶,放弃;linux,有windows用linux干毛,整天对着个命令行很有意思吗?放弃;最后就是选择安卓了,嘿嘿,自己有个安卓手机,以后想编什么就编什么,自己要什么功能写什么,还没!广!告!多美的事是不是?之后安卓的几个人组了个队,然后当时说的挺好的,谁谁谁ps,谁谁谁美化,谁谁谁撸代码,回去以后那个兴奋啊,我得好好学一下。然后就是各种找教程了,安卓是用java写的,恩,那第一步肯定是java!找的是“李兴华”老师的视频,讲的真是很好有视频有自己手打的笔记,还有随堂的代码,真是想不出来这世界上哪里还有这么好的老师,该有的都有了,就是不知道为什么这个老师一点都不出名,一说java都是马士兵之类的一些老师,不过适合自己的才是最好的,没多去纠结,大一下学期暑假两个月学学学,ok,解决。
然后就是安卓,因为有个同学就是学安卓的,上来就是推荐我疯狂安卓讲义,说实话,的确不错,比找的那些视频好多了,不过纵观所有的教材,都有一个很明显的缺点,没有讲所有的细节,就比如说布局文件里每种功能都是干什么的?全局文件里可以怎么编写?资源文件里怎么自定义自己的风格以及有哪些参数,这些全没讲,学习安卓靠得全是看别人怎么写的,某某某仿照某某某app,好的,下载下来,看看自己想要的功能,好的,copy一下,这里的参数不太好,好的,改一下,这里的交互不太好,好的,改一下,就成了自己东西,这时候我已经掌握的差不多了,想找找暑假之前一起约好的小伙伴一起搞搞项目,这一问我就呵呵了,有没学过java就做安卓的,有的在聊q。额,不说了,什么鬼都有,还有很多人暑假过后就不见人影了,我真的是无语了。但是不能怪别人,我一边怀着沉重的心情,一边自己搞,先是在安卓上搞俄罗斯方块,聊天工具,cs结构的计算机预约软件,还有一个类似前一个的在线教育的app,然后我就退出基地了,我做到我所做到的事情就足够了,这基地有硬件和软件两个部门,反观硬件部整天搞得热水朝天的,我们软件部,呵,反正我该学的也是学到了,就退了。
之后就一直没在软件上搞什么东西,主要是因为觉得不管java也好安卓也好,做出成品很容易,但是,怎么说呢,没有深入研究底层的东西,以至于浪费了很多时间却感觉自己没做什么东西,只是反复在调用人家的包,顶多继承一下人家的类改改,完事,太容易反而让我觉得有点荒唐,难道编程就是这样简单的事吗?(观众莫怪我,因为当初才大二还没有学习acm,数据结构和算法这样的东西)。
然后我就在想啊,这些jar包是干嘛的啊,打开一看view类,5000行,view类继承的一个什么类来着,又几千行,再看继承的某某类,一万来行。。。。。。我去,这是个坑来的!原来我随手一调用的东西竟然这么麻烦,而且,而且,我竟然一行都看不懂,深深感觉到自己有多么的废柴,这要是遇到某个高手我同他吹嘘我写安卓多么多么nb,他要是反过来喷我这可如何是好,看来此地不宜久留了,于是我就在想,这安卓底下是啥?百度——喔,linux内核,有点6,linux内核啥写的,C and 汇编,666,原来越是基础的东西越是叼,这C语言我大一就学了,原来还可以做系统内核,而且后来学mysql的时候也了解到它也是用c语言写的,甚至matlab也是c写的,于是我得出一个结论,c很叼,汇编更叼,要学,深入学,可是掐指一算,三年过去了,大三我打算是要考研的,这也就是说我已经是没有时间再学技术方面的东西,我心里这个悔啊,后悔大一时没有选对正确的方向,好后悔好后悔。
着急的想挽回点啥,去网上翻有关自制内核的事情,要学汇编,于是买了一本王爽的汇编教程看了一个暑假,恩,很好的一本书,有实例有题目,非常注重实践的一本书,教你如何在windows下,用什么工具,来写汇编代码并调试!这要是在学校这种重理论的课堂上肯定不会这样子来教你的,所以当时就觉得,这个老师很好,讲的透彻,很明白。然后之后想自己看看有关操作系统的书能不能看到,买了一本川和秀实的30天自制操作系统,我想说,以后这种什么多少天自制啥的我以后见一次喷一次,并不是说这书写的不好,应该说是“太好了”,就像是java一样,他把工具包编辑好了你直接拿来用就好了,很多复杂的东西都被它工具包给覆盖掉了,那我本来的目的就达不到了,真心后悔买了这本书,看看豆瓣上那些坑爹的评论,我心里低语,你们绝壁是托。
之后就是没完没了的找资料,说实在的真心累,我自己立了个流程大概是这样的
32汇编->微机原理->at&t->操作系统->计算机组成原理->linux0.11
大概貌似是这样的,其余的好像还要学makefile,c编译链接这些东西,现在看看git上面的makefile简直天书,那些编译后面跟着的参数都是些什么鬼!长长一串还不少!而且都是缩写!鬼懂!
看见知乎上推荐的一个博客http://wiki.0xffffff.org/
啊,虽然博主极力想要读者理解,但是这种短篇文章还是太!勉!强!了!
所以还是想要先打基础,然后一步一步来吧,看看能从哪开始入手,坚持写博客,督促自己在操作系统这方面都做出一些什么来。
题名boot,mboot,我的boot
引用:
链接:http://www.zhihu.com/question/28257837/answer/40292235
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
Boot, 在计算机术语里,意思是「to load a program into a computer from a disk; to start or ready for use especially by booting a program.」此用法略初现于1950年代。
最初源于单词bootstrap, 「 a looped strap sewed at the side of the rear top of a boot to help in pulling it on」, 两个单词合成,boot+strap, 简单说来就是鞋带,后来发展成为一个短语,「by one’s own bootstraps」, 意思是「unaided efforts, 自己努力、自强」
还有另一个短语「Pull oneself up by one’s bootstrap」,后被引用于”mission impossible”, 指一个人不可能只用鞋带就能穿上高筒靴,因为高筒靴的穿法尤其复杂和麻烦。亦出现在闵希豪生(Baron von Munchhausen) 男爵的「吹牛大王历险记」,此人脑洞大开,异想天开,口若悬河,滔滔不绝,故事传奇特别多,曾夸下海口自己打仗时陷入泥潭,提着马尾逃出沼泽。引申义亦为「靠自己自立自强」
就先从这个最难啃的骨头开始吧——unaided efforts!