我已经掌握了一个程序员应该掌握的基础知识,怎样读好大学?
程序员文章站
2022-05-20 11:25:08
...
更
--------------------------------
因为学校渣,技术渣,没经历,所以开始边学边创业。成都这边对创业支持力度大,我们的团队也入驻了孵化器。
为什么呢?可能你也还没意识到,一般大学的计算机专业主要教的根本不是你说的那些东西。
事实上,软件开发跟计算机科学虽然是近亲,但归根到底并不一样。
对于一个软件工程师来说,重要的能力,首先当然包括对某一门语言及框架的熟悉,但更重要的是对于一个软件项目的组织能力。你要熟悉常用的设计模式,写出可读性强、可扩展性强的代码,并设计出直观易用的API,这些东西考验算法能力吗?其实很少。说到底还是组织能力,对项目整体的掌控。
而一个四年的CS本科学位呢?另外的回答里也有人说了,教数学,教数据结构、算法,教编译器、操作系统、计算机结构、计算机网络、数据库等等,这些很多是理论夹杂着编程,甚至理论重于编程的。
你说你没学过操作系统就写不出多线程并发的程序吗?也不一定,照着网上别人的示例,东拼西借多试试可能也写得出来。但你确定你真的明白这些东西是怎么回事了吗?你虽然会调用那些构建于一层又一层abstraction之上的东西,甚至根本不需要理解底层发生了什么就能写出能用的程序,但如果你连了解背后机理的好奇心都没有,那么可能也就止步于一名“还能用”的软件工程师。
好了。既然计算机专业并不主要教软件开发的那些常识,甚至可能一名(哪怕是名校的)计算机专业的毕业生在软件开发方面的经验还不如现在的你,那么那些业界的大公司为什么还愿意招他们呢?
理由很简单,大公司有钱有时间,可以慢慢培养他们。对于大公司来说,应届生即便入职整整一年都不能创造价值也无所谓,关键是他们能确信你够聪明,能够很快学会并精通那些必要东西。毕竟,比起精通一门编程语言、写出格式规范、文档充分的代码这种事情,熟悉操作系统的运行机理、理解编译器及编程语言背后的原理要更难。至于经验什么的,入职后慢慢积累就是了。
至于什么公司会想要那种有现成经验,能立马就开始干活的程序员呢。基本都是小公司、创业公司,不赶紧把产品赶出来可能就活不过下个月的那种。
我并没有歧视小公司的意思,也不认为你的经验没有价值。只是你要搞明白你想成为一个怎样的程序员(假设你是想成为程序员)。毕竟也没人规定你上了大学就不能继续写你的app了,倒不如说既有好的理论基础,又有充分的实践经验的人才是所有公司都抢着要的。 照你这么说,的确没有必要。但是你要在国内找工作,还是需要学历的 ...。所以还是有必要,最好还是985以上,至少也得211 ... 题主,好好上大学吧。
道理别人都讲了,我给你举我自己的例子。
我小学的时候就拿 Visual Basic 写了一个 Windows 下的即时聊天软件。初中尽管很不喜欢中考这种选拔方式,但是还是因此三年没有碰编程啊。
高一开始写 iOS 应用;高二第一个 App 上线 App Store,最高排行中国区付费效率榜第三;高三跑去实习 iOS 开发。但是我现在还是在好好读大学啊。
这些和你是不是很像?
想自己做事情可以,空闲时间做,大学还是要好好读。你可以不去最顶尖的大学,但是这不是你不上大学的理由。
你的未来还长,别挥霍的太早。 国内大学计算机正统专业不是什么软件工程,网络工程这种吧,还是计算机科学与技术。
题主所说的这些能力是技术,不是科学
好像目前名校的学生更多的觉得科学是方向,技术是末节
另外,看到题主说上了一个学院,我百度了一下,发现开头描述如下:
四川托普信息技术职业学院创建于2000年,是经四川省人民*批准、教育部备案的全日制普通高等院校,是教育部批准的首批*示范性软件职业技术学院,也是国家技能型紧缺人才培训基地、电子信息产业国家高技能人才培训基地、全国服务外包人才培训基地、四川省电子信息产业青年技师培养基地。是四川省第一所通过由教育部组织的高职高专院校人才培养工作水平评估的民办普通高校。
请注意,软件职业技术学院,高技能,青年技师,这几个关键字
很可惜,我不知道这样的学校和市面上的培训班有多大差别,希望都有接触的朋友能说说。
大学,特别是好大学,其实最关键的是校园的环境(不是硬件环境),你周围的同学都是经过了各种选拔,从中脱颖而出的,你接触到的教授,讲师等他们的思维,他们的理念,这一切的一切才是大学对个人成长很关键的意义
多说一句,为什么学习能力这么强的题主,就不能花时间浪费在应试教育中呢?考上一个好大学获得的收益和对计算机的学习要比这样的学校强太多了吧 这个问题,我也来回答一下。
上大学的主要目的是学习知识,相信这点大家都懂,我就不废话了。
但是学习知识不一定非要上大学。
楼上答题的所有所谓的大学教的东西,不客气的说是社会给的。是程序员圈子给的,是开源给的,是巨型软件公司给的。也是那些大牛们的精华。
你有没有必要学那些东西,取决于你自己。 或许你投身了游戏开发,相应的数学,物理的基础知识必须老老实实的补上,你投身了商业智能数据分析,和之相关的数学算法和数据结构也要补上,投身WEB开发,就得老老实实研究JS框架,研究HTML5来的更直接和高效。
所以,所谓没上过大学基础就弱这种理论,全是废话。在外面只要你想,一样可以学。而且你还不用考试,用什么学什么,对什么感兴趣就研究什么。 努力吧少年~ 程序员不是那种大学毕业出来工作就一定比没上大学的工作稳定之类的。这是一个强者没有道理的必然被优秀公司挖掘的行业。只要你够强! 软件技术这专业不知道,但是如果是CS,根据题主的描述(如果你所说的每一样都很精通的话)你还需要学习以下几块。
1,离散数学,state machine。
2,计算机结构,其中最重要的是就是CPU的原理。你会不会汇编?会不会写机器码?知不知道CPU的原理?能不能用与非门电路元件自己做一个CPU出来(当然只是设计图,或者用程序虚拟)?
3,操作系统,从系统的结构,文件系统,各种system call,多线程,并发。
4,Network,network那几个层,能不能自己空手写一个Web服务器(最简单的,实现监听端口,和发送html文件就行)?
5,编译器。这是编程语言的核心,你懂了这个,学什么编程语言都只是熟练的问题。parser tree。能不能用C写一个简单compiler出来(也不用太复杂,能实现基础C的语法就行,也就是定义变量、函数,数学运算,逻辑运算,loop之类的)?
6,算法(数据结构题主已经自修完了)。遍历,各种搜索,排序,优化,动态规划,图论等。
7,团队开发。版本控制,开发基本流程,各种diagram。
8,数据库。数据库原理,结构,MySQL。
9,web programming。HTML,CSS,JS,php,jsp...
10, AI。svm,neural network,naive bayes...
(还有几个比如Cloud computing之类的,不能算基础课了,而且每个学校的课程也不太一样。)
如果题主所在所说的内容之外还能掌握以上的知识(当然你所说的部分也要有一定的功底)那么大学在CS这方面基本上没有什么可以教你了。当然了,你还是需要学习一些数学比如微积分,统计,线性代数。你别不重视,这几门数学太重要了。 我觉得,大学这个平台还是很重要的。真正的知识(自己感觉)其实大学也不会带给你太多。但一个好的大学带来的最有价值的东西就是你的眼界。进了大学,你会认识更厉害的人,知道自己还有哪些不足,这样才能加倍努力学习。并且还有了更充分的施展自己的平台。到了大学,有的是ACM,数模竞赛,电赛之类的机会,还可以加入科协或者技术工作室这些符合自己兴趣的社团。
没错,眼界和平台,这就是大学带给你的。可能你觉得自己已经很厉害了,周围的人都比不上自己。可这很可能就是你被自己的眼界局限住了。你只不过花在编程上的时间精力多点罢了。真正的大神,学习速度是非常快的,可能从来没接触过的编程语言,框架,他们能在很短的时间之内学会。有可能某些人大学一年的学习就可以赶得上你在那之前的一切学习成果。更别说某些跟你一样也是从小学编程的人。编程是一辈子的事,你走得比人家早,不意味着你走的比人家远。
别以为自己很厉害。你的眼界局限了自己。
补充一点,表面上看高数,线代,大物之类的课程没什么用(实际上当初我也是这么想的,只觉得学校开这些课就是不想让你在大学过得太爽),然而实际上,这些都是培养你解决问题的能力,都是知识储备。别说工作中用得到用不到,万一用到了,你会因为自己曾经没有认真学习这些知识而欲哭无泪。我自己就认识一个CS的研究生学长,导师让他做一个项目,3D游戏,要用到很多大学物理的知识,可是都忘了,没办法,整个暑假都在补这些知识--
总结:这类的基础教育就是区分本科生和专科生的工具。
最后,说实话,真正好的大公司起码要求本科以上学历。除非自己创业。这一张毕业证就是资本,就是敲门砖。哪怕一个大专,中专毕业证也比高中辍学强。你再有能力,没有学历这块敲门砖,也照样找不到合适的工作。
最后奉劝一句:现在好好读书,别想那些有的没的,考上一个好的大学,对你只有好处 没有坏处。 我今年高中毕业,暑假在成都做了一个月实习前端,实习工资税前5K。
##################################################
刚在山上看星星喝酒,现在到家了,还是觉得要重新写一下。
首先,题主很棒的。
看题主资料十九岁,比我大上了一岁多点,这个年纪正是年少轻狂之时,当然我也一样,所以有些话,有些思考,我觉得更容易互相明白。
说实话,我是一个很懒散的人,整个高中就是玩儿过去的,真的,就是上课要么睡觉要么玩儿手机,晚自习就看小说,或者和小女票卿卿我我,或者,干脆发呆。
从来不做作业,不背书。
你知道,这些作死的行为对一个文科生来讲,是致命的。
所以一直到高考前一个月,我的名次一直在班上名次表的最后几位,在我们这种n线城市,代表着上不了本科。
离高考还有三十天的时候,班主任把我叫到办公室,说,你起码要考个专科撒。
到了6月21号(?),放榜,一查,550分,高一本线7分。
以为我要开始装逼了?
不是的。
突然后悔高中没有努力,没能考上一个更好的大学。
我又反问我自己,为什么要想上一个更好的大学。
就在刚才,写下这段文字,我想了下,觉得是:
想做一个更有趣的人。
真的,我认识很多大学生,毕业的没毕业的,有的没得,总得来说,学校越好的,人越有趣,和那些有趣的人在一起会很舒服,久而久之自己也会潜移默化成一个有趣的人。
有些东西,只有校园才能给你。
不只是知识和技术。
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
说说技术吧。
我自己技术很挫,真的,在工作之前其实压根不懂前端,面试前一天,在朋友家里,抱着书从17点看到凌晨,第二天面试很顺畅地通过,然后把面试官问住了(面试官也水)。
题主你觉得你能力还不错,基本能做一个程序员了。
真的吗?
信不信,你会的东西,别人基础深厚的(当然我不是),就算没接触过,看看手册,分分钟吊打。
知识体系就像倒金字塔,越表层,懂的人越多,但是大多数人也只能停留在表层。越高的层次,需要越成体系的训练,需要越深厚的基础,这是大学可以带给你的。
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
一些建议。
如果可以,尽量选择复读,考个好点的大学。
如果只是想工作,觉得大学什么的无所谓,去找工作。
祝你眼中有光,活出自己想要的模样。
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
有人不信 @_@ .
上工资(税后)。
老板娘(财务)嫌麻烦,直接打到支付宝:
你问我为什么跑去成都工作?因为这样就能和女票愉快地玩耍了呀23333333(并不
给你们看刚拍的月亮!
抽个空把清华北大随便考一个吧。 不去大学尝试找个女朋友吗?
--------------------------------
因为学校渣,技术渣,没经历,所以开始边学边创业。成都这边对创业支持力度大,我们的团队也入驻了孵化器。
回复内容:
关于“上大学是人生体验”之类的话就不说了,毕竟这种东西因人而异。虽然没看过你的代码,但依你所说你在软件开发方面的经验和能力,确实一个计算机的本科学位很难让你在软件方面再学到更多东西。为什么呢?可能你也还没意识到,一般大学的计算机专业主要教的根本不是你说的那些东西。
事实上,软件开发跟计算机科学虽然是近亲,但归根到底并不一样。
对于一个软件工程师来说,重要的能力,首先当然包括对某一门语言及框架的熟悉,但更重要的是对于一个软件项目的组织能力。你要熟悉常用的设计模式,写出可读性强、可扩展性强的代码,并设计出直观易用的API,这些东西考验算法能力吗?其实很少。说到底还是组织能力,对项目整体的掌控。
而一个四年的CS本科学位呢?另外的回答里也有人说了,教数学,教数据结构、算法,教编译器、操作系统、计算机结构、计算机网络、数据库等等,这些很多是理论夹杂着编程,甚至理论重于编程的。
你说你没学过操作系统就写不出多线程并发的程序吗?也不一定,照着网上别人的示例,东拼西借多试试可能也写得出来。但你确定你真的明白这些东西是怎么回事了吗?你虽然会调用那些构建于一层又一层abstraction之上的东西,甚至根本不需要理解底层发生了什么就能写出能用的程序,但如果你连了解背后机理的好奇心都没有,那么可能也就止步于一名“还能用”的软件工程师。
好了。既然计算机专业并不主要教软件开发的那些常识,甚至可能一名(哪怕是名校的)计算机专业的毕业生在软件开发方面的经验还不如现在的你,那么那些业界的大公司为什么还愿意招他们呢?
理由很简单,大公司有钱有时间,可以慢慢培养他们。对于大公司来说,应届生即便入职整整一年都不能创造价值也无所谓,关键是他们能确信你够聪明,能够很快学会并精通那些必要东西。毕竟,比起精通一门编程语言、写出格式规范、文档充分的代码这种事情,熟悉操作系统的运行机理、理解编译器及编程语言背后的原理要更难。至于经验什么的,入职后慢慢积累就是了。
至于什么公司会想要那种有现成经验,能立马就开始干活的程序员呢。基本都是小公司、创业公司,不赶紧把产品赶出来可能就活不过下个月的那种。
我并没有歧视小公司的意思,也不认为你的经验没有价值。只是你要搞明白你想成为一个怎样的程序员(假设你是想成为程序员)。毕竟也没人规定你上了大学就不能继续写你的app了,倒不如说既有好的理论基础,又有充分的实践经验的人才是所有公司都抢着要的。 照你这么说,的确没有必要。但是你要在国内找工作,还是需要学历的 ...。所以还是有必要,最好还是985以上,至少也得211 ... 题主,好好上大学吧。
道理别人都讲了,我给你举我自己的例子。
我小学的时候就拿 Visual Basic 写了一个 Windows 下的即时聊天软件。初中尽管很不喜欢中考这种选拔方式,但是还是因此三年没有碰编程啊。
高一开始写 iOS 应用;高二第一个 App 上线 App Store,最高排行中国区付费效率榜第三;高三跑去实习 iOS 开发。但是我现在还是在好好读大学啊。
这些和你是不是很像?
想自己做事情可以,空闲时间做,大学还是要好好读。你可以不去最顶尖的大学,但是这不是你不上大学的理由。
你的未来还长,别挥霍的太早。 国内大学计算机正统专业不是什么软件工程,网络工程这种吧,还是计算机科学与技术。
题主所说的这些能力是技术,不是科学
好像目前名校的学生更多的觉得科学是方向,技术是末节
另外,看到题主说上了一个学院,我百度了一下,发现开头描述如下:
四川托普信息技术职业学院创建于2000年,是经四川省人民*批准、教育部备案的全日制普通高等院校,是教育部批准的首批*示范性软件职业技术学院,也是国家技能型紧缺人才培训基地、电子信息产业国家高技能人才培训基地、全国服务外包人才培训基地、四川省电子信息产业青年技师培养基地。是四川省第一所通过由教育部组织的高职高专院校人才培养工作水平评估的民办普通高校。
请注意,软件职业技术学院,高技能,青年技师,这几个关键字
很可惜,我不知道这样的学校和市面上的培训班有多大差别,希望都有接触的朋友能说说。
大学,特别是好大学,其实最关键的是校园的环境(不是硬件环境),你周围的同学都是经过了各种选拔,从中脱颖而出的,你接触到的教授,讲师等他们的思维,他们的理念,这一切的一切才是大学对个人成长很关键的意义
多说一句,为什么学习能力这么强的题主,就不能花时间浪费在应试教育中呢?考上一个好大学获得的收益和对计算机的学习要比这样的学校强太多了吧 这个问题,我也来回答一下。
上大学的主要目的是学习知识,相信这点大家都懂,我就不废话了。
但是学习知识不一定非要上大学。
楼上答题的所有所谓的大学教的东西,不客气的说是社会给的。是程序员圈子给的,是开源给的,是巨型软件公司给的。也是那些大牛们的精华。
你有没有必要学那些东西,取决于你自己。 或许你投身了游戏开发,相应的数学,物理的基础知识必须老老实实的补上,你投身了商业智能数据分析,和之相关的数学算法和数据结构也要补上,投身WEB开发,就得老老实实研究JS框架,研究HTML5来的更直接和高效。
所以,所谓没上过大学基础就弱这种理论,全是废话。在外面只要你想,一样可以学。而且你还不用考试,用什么学什么,对什么感兴趣就研究什么。 努力吧少年~ 程序员不是那种大学毕业出来工作就一定比没上大学的工作稳定之类的。这是一个强者没有道理的必然被优秀公司挖掘的行业。只要你够强! 软件技术这专业不知道,但是如果是CS,根据题主的描述(如果你所说的每一样都很精通的话)你还需要学习以下几块。
1,离散数学,state machine。
2,计算机结构,其中最重要的是就是CPU的原理。你会不会汇编?会不会写机器码?知不知道CPU的原理?能不能用与非门电路元件自己做一个CPU出来(当然只是设计图,或者用程序虚拟)?
3,操作系统,从系统的结构,文件系统,各种system call,多线程,并发。
4,Network,network那几个层,能不能自己空手写一个Web服务器(最简单的,实现监听端口,和发送html文件就行)?
5,编译器。这是编程语言的核心,你懂了这个,学什么编程语言都只是熟练的问题。parser tree。能不能用C写一个简单compiler出来(也不用太复杂,能实现基础C的语法就行,也就是定义变量、函数,数学运算,逻辑运算,loop之类的)?
6,算法(数据结构题主已经自修完了)。遍历,各种搜索,排序,优化,动态规划,图论等。
7,团队开发。版本控制,开发基本流程,各种diagram。
8,数据库。数据库原理,结构,MySQL。
9,web programming。HTML,CSS,JS,php,jsp...
10, AI。svm,neural network,naive bayes...
(还有几个比如Cloud computing之类的,不能算基础课了,而且每个学校的课程也不太一样。)
如果题主所在所说的内容之外还能掌握以上的知识(当然你所说的部分也要有一定的功底)那么大学在CS这方面基本上没有什么可以教你了。当然了,你还是需要学习一些数学比如微积分,统计,线性代数。你别不重视,这几门数学太重要了。 我觉得,大学这个平台还是很重要的。真正的知识(自己感觉)其实大学也不会带给你太多。但一个好的大学带来的最有价值的东西就是你的眼界。进了大学,你会认识更厉害的人,知道自己还有哪些不足,这样才能加倍努力学习。并且还有了更充分的施展自己的平台。到了大学,有的是ACM,数模竞赛,电赛之类的机会,还可以加入科协或者技术工作室这些符合自己兴趣的社团。
没错,眼界和平台,这就是大学带给你的。可能你觉得自己已经很厉害了,周围的人都比不上自己。可这很可能就是你被自己的眼界局限住了。你只不过花在编程上的时间精力多点罢了。真正的大神,学习速度是非常快的,可能从来没接触过的编程语言,框架,他们能在很短的时间之内学会。有可能某些人大学一年的学习就可以赶得上你在那之前的一切学习成果。更别说某些跟你一样也是从小学编程的人。编程是一辈子的事,你走得比人家早,不意味着你走的比人家远。
别以为自己很厉害。你的眼界局限了自己。
补充一点,表面上看高数,线代,大物之类的课程没什么用(实际上当初我也是这么想的,只觉得学校开这些课就是不想让你在大学过得太爽),然而实际上,这些都是培养你解决问题的能力,都是知识储备。别说工作中用得到用不到,万一用到了,你会因为自己曾经没有认真学习这些知识而欲哭无泪。我自己就认识一个CS的研究生学长,导师让他做一个项目,3D游戏,要用到很多大学物理的知识,可是都忘了,没办法,整个暑假都在补这些知识--
总结:这类的基础教育就是区分本科生和专科生的工具。
最后,说实话,真正好的大公司起码要求本科以上学历。除非自己创业。这一张毕业证就是资本,就是敲门砖。哪怕一个大专,中专毕业证也比高中辍学强。你再有能力,没有学历这块敲门砖,也照样找不到合适的工作。
最后奉劝一句:现在好好读书,别想那些有的没的,考上一个好的大学,对你只有好处 没有坏处。 我今年高中毕业,暑假在成都做了一个月实习前端,实习工资税前5K。
##################################################
刚在山上看星星喝酒,现在到家了,还是觉得要重新写一下。
首先,题主很棒的。
看题主资料十九岁,比我大上了一岁多点,这个年纪正是年少轻狂之时,当然我也一样,所以有些话,有些思考,我觉得更容易互相明白。
说实话,我是一个很懒散的人,整个高中就是玩儿过去的,真的,就是上课要么睡觉要么玩儿手机,晚自习就看小说,或者和小女票卿卿我我,或者,干脆发呆。
从来不做作业,不背书。
你知道,这些作死的行为对一个文科生来讲,是致命的。
所以一直到高考前一个月,我的名次一直在班上名次表的最后几位,在我们这种n线城市,代表着上不了本科。
离高考还有三十天的时候,班主任把我叫到办公室,说,你起码要考个专科撒。
到了6月21号(?),放榜,一查,550分,高一本线7分。
以为我要开始装逼了?
不是的。
突然后悔高中没有努力,没能考上一个更好的大学。
我又反问我自己,为什么要想上一个更好的大学。
就在刚才,写下这段文字,我想了下,觉得是:
想做一个更有趣的人。
真的,我认识很多大学生,毕业的没毕业的,有的没得,总得来说,学校越好的,人越有趣,和那些有趣的人在一起会很舒服,久而久之自己也会潜移默化成一个有趣的人。
有些东西,只有校园才能给你。
不只是知识和技术。
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
说说技术吧。
我自己技术很挫,真的,在工作之前其实压根不懂前端,面试前一天,在朋友家里,抱着书从17点看到凌晨,第二天面试很顺畅地通过,然后把面试官问住了(面试官也水)。
题主你觉得你能力还不错,基本能做一个程序员了。
真的吗?
信不信,你会的东西,别人基础深厚的(当然我不是),就算没接触过,看看手册,分分钟吊打。
知识体系就像倒金字塔,越表层,懂的人越多,但是大多数人也只能停留在表层。越高的层次,需要越成体系的训练,需要越深厚的基础,这是大学可以带给你的。
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
一些建议。
如果可以,尽量选择复读,考个好点的大学。
如果只是想工作,觉得大学什么的无所谓,去找工作。
祝你眼中有光,活出自己想要的模样。
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
有人不信 @_@ .
上工资(税后)。
老板娘(财务)嫌麻烦,直接打到支付宝:
你问我为什么跑去成都工作?因为这样就能和女票愉快地玩耍了呀23333333(并不
给你们看刚拍的月亮!
抽个空把清华北大随便考一个吧。 不去大学尝试找个女朋友吗?
下一篇: 通过SQL语句直接把表导出为XML格式