我是个普通双非学校的学生,软件工程专业,今年大三,准备考研,因为我觉得我目前的水平还不足以进入工作,想用三年时间找到自己喜欢的方向并钻研。c++目前钻研的比较认真的语言,java我也挺喜欢,目前开的课是ASP.NET和Androidstudio,还有UML之类的东西。于是这学期又接触到了JavaScript,c#。接触的多了,才知道最喜欢的还是c++,其次是java,对数据库也很喜欢,奈何上学期谈了个恋爱,降低了要求,对数据库也就学了上课老师要求的,应付了考试,我看了很多帖子,大部分都说c++不好找工作,都要有经验的,这让我萌生了暂停c++的学习,加入java或者.net,数据库的念头,我想了很久还是下不了决心,c++难要学很多,数据结构,Linux,操作系统等等。不怕大家笑话,我想成为c++的大佬。想着想着,思维就飘得更远了,这学期女朋友毕业了,分手了,心思也回来了。我是个普通人家的孩子,父母省吃俭用一辈子帮我攒了套房,省了我的麻烦,但我也不是啥都吃现成的人,我也需要为自己的未来考虑。都说工作中学习是成长最快的,但我怕我学着c++以后工作难找。我这个人平时容易想的多,很难无忧无虑,可能是我的出身吧,富人堆里的普通人。都说程序员35岁就是分界,要么进入管理层,要么滚蛋,假设我考上研究生出来也已经24,25岁了,能在十年间提升到那个层次吗?唉,又想多了。还是考虑当前的问题吧,向各位请教,c++是否真不好找工作?我到底要不要换路子?如果我不换,假设我考上研究生,3年c++的钻研可以有多大提升?当然我也不是眼界太窄的人,不会一门心思在c++上,我也会学习其他计算机知识,毕竟语言只是工具。但学习重心还是要选择的。请各位给小弟点意见

编程是什么:

在我的眼里,编程是对生产生活的一种抽象,下一层的语言是对上一层的语言的抽象,直到抽象到10,能让计算机看懂为止。学习编程的过程就是学习抽象的过程,如何将具象、明确的事物,准确高效地抽象总结成计算机能够执行的指令,这是编程的核心问题。而解决这些问题的过程是繁复的,如果没有足够的好奇心、成就感,恐怕确实不适合编程。

自从做了软件测试后,我都不好意思说自己是计算机专业毕业的,因为此专业在大学期间学的都是编程,c++、java、c#,不知道是老师没教好还是我自己没学明白,对编程不感冒,毕业后找了份软件测试的工作。

开始:

我学习的时候第一门语言是 python, python是很接近自然语言的语言

list = [“wo”,“shi”,“sha”,"bi"]
for word in list:
  print(word)
# wo
# shi 
# sha 
# bi

你看,只要这么几行代码就可以在电脑上显示出我是傻逼字样,有趣。

python学习:

这上面是基础教程,教一些python的基本语法
这个是慕课网,主要是一些网络编程语言和软件教程

注意:一开始就学习python主要是为了感受语言,python隐藏了许多电脑底层的东西,并不适合用来学习电脑知识

python是自学的,学了一点python之后我就开始强行学java,书的还就是core
java之类的,我也没很仔细看,就是大概看了一下,然后就凭感觉看起了
Algorithm(4th
edition)
这本书,并且配合
priceton super niubi white hire old men course –
1
priceton super niubi white hire old men course –
2
这两门课学完了这本书,你如果可以把所有的作业都写完,那你可以说是很棒棒了,我反正只做了前三个作业。
这个时候你的算法和数据结构的概念应该比较清晰了。

工作几年后,我自学了自动化测试工具、性能测试工具,明白了一个道理,只要把最基础的东西学好,之后学起来会很简单。

第一学期选的课:

然后我选了cs570,那个时候cs570还是用c++教的,甚至还有期中考这种神奇的东西,现在的话应该是cpe593教这类的东西吧(反正不是c++就是java),其实我后来才理解,java并不适合入门,因为面向对象(object-oriented)这个概念并不好理解,虽说c/c++里面的指针也是比较吊的,但你拼命看个几个小时也知道个大概了,不像oo需要项目才能理解。如果你选了cs570活着cpe593,建议所有的作业不管是不是小组的,都自己一个人写完,SIT的同学们基本不会抢着写作业的,你写了知识就是你的,何乐而不为?何况本来就是基础中的基础。

同时选的课还有cs561,学了点sql和jdbc,后来就再也没有用过了。。。学的时候会涉及一点点数据库原理,认真看书的话还是有点收获的。

还有就是cs550了,这门课的作业其实没什么毛病的,如果你是cs零基础,这门课应该好好把书看一边,这是计算机组成原理,对于以后理解计算机很有帮助(虽然北美cs面试是几乎不会考这些的)。

我依然记得当年上大学前word都不会用,大学第一学期学习c++,像板砖一样的英文版语言书摆在我面前,一看那么厚直接懵了,老师一边翻译英文一边教语言,兴趣全无;万事开头难,这头没开好,之后的语言也没有学透彻。

c++:

c++是很底层的语言,我一开始并没有直接《c++
primer》,而是随便找了一本中文c++书看,其实primer就是挺基础的,直接看就好了,看到template那一章就行(看书的时候记得注重概念,而不是技巧,比如function
pointer那里,其实如果你不用的话很容易忘掉它的写法,与其记住它的写法,更应该记住它是个什么东西,以及什么时候需要用到)。
这里有一些适合c++初学者写的project,可以试试,反正我没试。
windows的话,首先你的电脑需要可以编译(运行)c++的平台(软件),下载visual
studio
community(这是一个IDE,可以自己查查IDE是什么),然后网上找找教程写一个hello
world程序感受一下:
mac的话直接用terminal来编译运行吧,学习效果更好。

学c++的时候可以百度(考虑)以下问题:

  • 程序编译的过程是什么
  • 什么面向对象编程,什么是面向过程编程
  • 汇编语言是什么,机器语言是什么
  • 为什么c++编写的程序比java更快,为什么java编写的程序比python更快

如果当初学校订些简单的编程类书,或许我也能看明白,或者自己应该去图书馆找些简单的书看,只能怪上学时太年轻,自己不会学习。毕业后才知道有人在上学期间读几百本书,涉及各个领域,量变引起质变,大学学的是自学能力,并不能指望老师能教你多少知识。

可是刚上学时谁能明白,老师是领路人,为什么要用本英文书吓学生,而不是正确的领路,既然大学考上了,英文不会太差,工作中用到的英文也是常见的,难道要我们学会看英文文献?可是老师你想过吗,当学生对语言失去兴趣,大概刚开始学这门语言就考虑着要转行了吧,还会去看英文资料吗?

也许你会说这是为大多数人设计的课程,我们专业差不多50人,有几个编程高手都是自学的、喜欢泡图书馆的,当时一大半学生都在考虑转专业,转建筑、土木、工程管理等,毕业后从事计算机编程的也寥寥无几。

java:

下面可以学习java,为什么我把java放在c++后面?因为java出现在c++之后,是总结了c++的优缺点而出现的完全面向对象编程(object-oriented)的语言,不过我个人认为c++和java是可以一起学习的,两种语言的对比结合可以让自己对语言的认识更深刻:
http://www.imooc.com/learn/85
http://www.imooc.com/learn/124
http://www.imooc.com/learn/110
全都学一下吧,然后可以学学java的设计模式(design
pattern),会让你对object-oriented
programming有新的认识
java可以用来开发android的手机app,也有ASP这样的框架(一种别人写好的方便实用的类似平台的东西)可以用来写网页程序,网上有数不尽的项目可以写
学习java的过程中,可以考虑以下问题:

  • java与c++有哪些异同?
  • 为什么需要面向对象编程?
  • 除了面向对象、面向过程编程的语言,还有面向什么编程的语言?

工作后我忽然发现,非计算机专业毕业的同学在外面报个培训班学习半年,就可以入职,三五年过后就是技术大拿;此刻计算机专业的学生学习四年居然pk不过培训半年的,这是为什么呢?学生该反思,老师更应该反思。

最近打算买房和名校学建筑的朋友聊了聊,应该买什么样的房子,买房最起码得南北通透吧。我问他一些户型的问题,他说他们在学校没学过具体住宅的知识,我很愕然,这不是最基础的东西么;学校就是这样,总是不教点实际的知识,就给你搞一些看不懂的东西。

第一学期暑假:

第一学期快结束的时候我找了个
unity
的教程学了下,用的是C#,挺简单的,但是帮我瞬间理解了面向对象编程。
暑假的时候我参加了一个项目,是学校EE学院组织的,具体叫啥忘了,反正是什么summer
research,做的很水,学了点 javascript
和前端的东西,写了个小网页,没啥卵用,然后一个暑假两个多月(我回家一个月)时间把leetcode的题目刷完了,当时380多道,你可以估计一下你现在的刷题速度,一开始刷题多少都会遇到点困难,但是多总结多理解的话就还好,除了
dynamic programming(建议看一下 introduction to
algorithm)
和一些类似 bit manipulation
的稀奇古怪的题之外,你都应该要能做出来才行(讲道理的话dp的题目大部分也应该能做出来才对)。

我只是吐槽一下自己的大学专业,为什么那么多英文书,看都看不懂,还谈学习?

第二学期选的课:

cs546,跟风选的,教了些前后端的东西,主要用javascript,没有什么难度,但是可以让你大概了解下网络知识,不至于一头雾水,我开学前十天就做完了一个学期的作业,课程基本看视频就行了,最后写一个网站,我觉得要是比较闲的话就一个人写完得了。。。万一队友坑你呢?

还选了cs600,其实如果你自己上完这个课,并且写掉作业的话,对算法肯定是有巩固作用的,反正我是没认真学。

还有个cs810,这个课每年都会换,是cs的水课,我在这课上学了 swift,写了俩
app,在这里学的ios开发
,如果你时候题目刷的差不多的话也可以写写项目了,不用担心写什么项目,什么都行,反正写就对了。

如果当初订一些简单的书,会不会效果更好呢?为什么不能先让感兴趣,再去学习

知识都是工作后学习的,这是我自己的一点看法,如有意义欢迎留言。


第二学期寒假:

这个时候我已经迷茫了,因为简历并没有什么项目,然后计算机底层也不会,感觉面试面不过(其实可以面了,我想多了),本来打算寒假再总结一些刷过的题目,但是实在提不起兴趣,于是就水过去了。。。其实花了十几天时间水了一个
operating system
的网课,大概明白操作系统是个什么东西,作业太难了,一个都没写。

师者,所以传道授业解惑也?

第三学期选的课:

cs615,这课可以的,学点命令行,可以装逼,让你自己感觉仿佛像个黑客一样(屁),作业量也不大,但是还蛮有锻炼效果的,以后找到工作了不至于环境都配不好。其实我有点后悔,应该吧cs631也选了,据说也讲得很好。

然后瞎猫碰上死耗子就进了
Amazon,面试毫无意义,就是划水,之前学的什么都没用上,但是我知道我既然拿到了offer那就肯定没办法好好继续准备面试了,所以怒答应。之后我就比较开心了,看完(差不多完了)了
thinking in java,c++ primer,computer system a programmer
perspective,little java,还顺便学了点Lisp。

大概我就是这么学的了,你照这么学我保证你技术方面是没有什么问题的,至少是问题不大的,但是找工作,这是另一个技术,可能看面经,有针对性的准备面试更加靠谱。

admin 威尼斯人平台

发表评论

电子邮件地址不会被公开。 必填项已用*标注