计算机入门了解
一. 语言方面学习
1. C/C++: C是面向过程的语言,C++是在C语言的基础上发展起来的语言,他兼容99%的C。C++比C多了面向对象的开发思想,引入了类class等知识。C/C++学习难度大。C更偏向于底层,C/C++运行编译速度快,一般C/C++用于底层开发,比如操作系统,硬件程序,单片机等偏硬件方向开发,一般是嵌入式开发。**
开发软件:DevC++(推荐),CLion
2. JAVA:JAVA是一种通用的,基于类的,面向对象的编程语言。用于应用程序开发的计算平台,具有跨平台开发的功能,一种与平台无关的语言。他吸收了C/C++的优点。应该是目前使用量最大的一种开发语言。JAVA使用场景非常广阔,例如:桌面GUI应用程序开发(JavaFX),移动应用Android开发(不过现在主流开发软件为kotlin),Web应用后台开发,大数据开发,游戏应用开发。Java开发正因为使用范围很广,它所要学习的知识相比于其他语言要多的多。**
开发软件:IDEA
3. Python: python是近几年兴起出现的语言,是一种解释性语言,比较好上手。Python主要的方向可以是后端接口开发等,不过高级一点比较火的是大数据模型,人工智能模型,爬虫技术,图像识别技术等。(难度比较大,对大数据分析处理算法要求高,需要数学比较好,高数等数学知识)**
开发软件:Pycharm+anacoda
4. Go/Golang: Go 语言的发展越来越好了,很多大厂使用 Go 作为主要开发语言。Go的代码风格趋向于C/C++的风格。我已知主要是Web后端开发。
5. Kotlin: kotlin最近开始兴起的语言,使用趋势正在逐步提升。我已知在Android移动应用开发使用多(毕竟是Google提倡的开发语言)。Kotlin语法简单,开发效率高,比较简洁。
6. HTML/CSS/JavaScript: 它们俗称前端三件套,主要用于网页开发。学习难度不大,易上手,主要是标签比较多。
开发软件:Webstorm , vscode
7. 其他语言:我只听说过一些,比如Dart,PHP,.Net等,如有兴趣可自行了解。
**Tip:**我觉得学习计算机语言不在于学会的语言多,而是应在某一门语言方面精通。语言之间并没有那么大的优劣之分,而是在合适的地方用某种语言。
二. 核心知识课程
l 计算机必学基础课程:
1. C/C++:我本人觉得应该首先学的一门语言。学会C/C++,对其他语言上手很快,可以触类旁通。
Tip: B站课程:【C语言】《带你学C带你飞》_哔哩哔哩_bilibili
2. 数据结构:这是一门很重要的课程。可以学会栈,队列,列表,树,图等知识,对算法和开发思想及其重要,是以后的开发根本。
Tip: B站课程:懒猫老师-数据结构-(0)课程安排_哔哩哔哩_bilibili
3. 算法:这是一门很重要的课程,可以很好的学习算法思想,提高算法能力。
Tip:B站课程:【1】-1 算法概论_哔哩哔哩_bilibili
**Tip:**多刷算法题,提升算法,这很重要,多参加算法比赛。
国内主要刷题网站:OpenJudge - NOI - 首页
题目列表 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
(这两个比较简单,适合新手进行刷题)
LeetBook - 力扣(LeetCode)全球极客挚爱的技术成长平台
国外的刷题网站:Problemset - Codeforces
**(**全英文,主要是acm选手进行刷题的地方,难度很大)
l 计算机核心课程:
1. 数据库:主要学习数据库CURD等数据库操作,是后端开发者必备的技术。
Tip: B****站课程:【自用】数据库系统概论学习_哔哩哔哩_bilibili (学习基本知识素养很好,偏向于课程)
黑马程序员 MySQL数据库入门到精通,从mysql安装到mysql高级、mysql优化全囊括_哔哩哔哩_bilibili (偏向于实战开发,讲的未必那么详细。个人觉得学习的话先学上面那个)
2. 计算机网络:主要学习网络方面的知识,学习网络的组成,对网络的使用和开发维护有更深的了解。
Tip: B****站课程:3.6-4 VLAN基本概念与基本原理_哔哩哔哩_bilibili
3. 计算机操作系统:了解操作系统运行底层原理,可以更好的进行开发和计算机使用。
Tip: B****站课程:1.0-教材介绍视频_哔哩哔哩_bilibili
4. 计算机组成原理:了解计算机由哪些部分组成的,各部分的作用是什么,是如何运行的。
Tip: B****站课程:王道计算机考研 计算机组成原理_哔哩哔哩_bilibili
**Tip:**多学会利用网络资源,比如Bilibili,慕课网等找课程资源学习。
三. 方向选择
1. 算法工程师:很吃香,工资高。算法要求高,算法难度大,一般是acm选手的求职方向,近大厂得有金奖。(有能力和天赋,尽量走算法方向)总之,多刷算法题,多打比赛,打acm之类的比赛,(acm美国举办的全球赛事,含金量极高,当然难度也极大)
2. 后端工程师:目前主要是java和go后端开发工程师。主要是开发后端接口,基本上是CURD之类的活。虽然招人多,但是学的人也多,竞争量大。现在,java貌似就业形式不太行,后端要求可能还得要求你会前端开发,起码会vue。java后端工程师要起码会:ssm,springboot,springcloud开发框架,mybatis,mybatisplus等数据库连接池操作,redis,docker等中间件, mysql,sqlserver,oracle等数据库,更高要求:多种架构方式,大数据,微服务,linux,分布式等
3. 前端工程师:前端已死是比java已死听得更多。不过确实现在前端就业环境很不好,企业很少招前端人员,一般招的大前端的都得会先后端知识。现在基本上感觉全栈。前端除了html/css/js三件套之外,还必须会vue框架等。
4. 移动应用开发:主要是Android开发,一般是做一些app或者小程序。Android入门难度大,不太好学。安卓开发发展快,技术迭代快。主要用Android Stdio利用kotlin语言开发,当然java现在也可以,但不是主流。推荐书籍:第一行代码。APP开发如果是android智能在安卓手机上使用,如果想安装在IOS系统上,得跨平台开发,得学习Dart语言以及flutter开发框架。微信小程序现在也还行。不过鸿蒙系统出来之后,也推出了它的应用开发模式,感觉和前端vue开发模式挺像的。
5. 大数据开发和人工智能:很有前景,主要是大数据模型处理,图像识别等,主要用python语言。需要学习算法,一般是一些深度学习算法,神经网络算法,这些算法和传统算法不一样。两种算法都需要很好的数学能力。个人感觉学历要求很高,起码得硕士以上,不然没有成果不是很好就业。
6. 游戏开发:主要是运用unity等工具进行开发,没有接触过游戏开发,不能给出很好的意见
**Tip:**遇见不会的多问多搜,多问ChatGpt。
在校多参加竞赛积累项目经验和算法水平,计算机上限高下限也低,学习的人不少(本科生,专科生,那些培训班培训的,非科班生),找准自己喜欢的且合适的方向很重要,然后学精学透才不会淘汰,不要眼高手低什么都会一点但是不够精,这样很容易被取代的。提一下,可能会由于一些文凭上的差异,大概率可能会在简历上被pass,但是不要气馁,只要你技术够硬也有可能进大厂。非科班生也是,不过在学习上可能更辛苦一些。
总之,学无止境,无论在学校还是在工作都要不断学习新知识,使自己变得更充实,无法被取代。