计算机相关专业初识--对于计算机相关专业我们在迷茫什么
前言
由于种种原因,迫使我写下这篇博客,我相信,初入计算机相关专业的萌新肯定很迷茫,我该学什么,我该如何去学,我该如何学好等等问题缠绕心头。有很多学弟学妹问我该如何去学计算机相关专业,作为过来人,我决定将我的所知所得写下来,让初入计算机相关专业的萌新的学习之路走得更顺畅一些。
一、什么是计算机
对于刚学习计算机相关专业的萌新来说,了解一下计算机的工作原理是十分必要的,但是在这里我们不过多阐述,让大家简单了解一下就好。
让我们先来看一下对于计算机名词的解释:
计算机(computer)俗称电脑,是现代一种用于高速计算的电子计算机器,可以进行数值计算,又可以进行逻辑计算,还具有存储记忆功能。是能够按照程序运行,自动、高速处理海量数据的现代化智能电子设备。
划重点:
我们注意到,计算机就是一种用于进行数值计算的现代化智能电子设备。需要理解的是为什么是进行数值计算,在这里,你会疑惑,为什么是数值计算呢,我输入的明明不是数字呀?这个问题很容易解释清楚,因为计算机只是一种电子设备,它不具有人类独立思考和不断学习的能力,它的所有功能都是事先设定好的,所以当计算机面对输入字符的时候,会将它统一按照ASCII(计算机编码系统)规则转换为数值“0”和“1”(二进制数值),所以,在计算机里,数据存储都是用“0”和“1”(即二进制数值)来实现。
还有一点值得注意,按照程序运行,那么问题来了,程序是什么?程序就是一组计算机能识别和执行的指令, 它以某些程序设计语言编写,运行于某种目标结构体系上 。举个例子,程序就像是用英语(程序设计语言,例如c,c++)写的文章,要让一个懂的英语的人(编译器,如C的编译器gcc,这里要注意编译器和IDE的区别,通常IDE包含编译器)同时也会阅读这篇文章的人(结构体系)来阅读、理解、标记这篇文章。
有学妹问过我,问什么简单的代码,能实现丰富的效果。其实这取决于编译器的强大能力。下面来简单介绍一下,编辑器,编译器,IDE(集成开发环境)的区别。
- 编辑器:编辑器就是用来编辑的软件,比如windows自带的记事本就是一个编辑器, 记事本没有语法高亮,不显示行号,当一段可执行代码写完后无法通过内置环境执行,必须手动输入命令执行编译等等一些弊端,所以很少有程序员会用记事本去写代码 , 写代码比较好用的编辑器软件有
vscode,vim,sublime,notepad++,emacs,atom
等等 ,虽然编辑器原始功能不足,但是开发人员为了使编辑器更加友好,所以有很多内置插件可供使用,完全可以手动打造一个IDE。 - 编译器:简单来说,编译器就是将“一种语言(一般为高级语言,如c,c++,java,python等,计算机不可直接识别和执行)”翻译为“另一种语言(一般为低级语言,低级语言即机器语言,机器语言是用二进制代码表示的计算机能直接识别和执行的一种机器指令的集合)”的程序。举个例子,用Dev-C++写好一段可执行
"hello,world!"
C语言代码之后,我们要让它在屏幕打印出来我们想要它输出的"hello,world!"
,就需要通过gcc编译器执行编译后才能显示。其他语言同理。 - IDE:集成开发环境,用于程序开发环境的应用程序,一般包含代码编辑器、编译器、调试器、图像用户界面等工具。集成了代码编写、程序分析、程序编译、程序调试等功能。如 jetbrains 的用于Java开发的 IntelliJ IDEA 、用于JavaScript开发的WebStorm、用于Python开发Pycharm,微软的 Visual Studio系列 ,IBM的Eclipse。
二、我们该学什么
很多初入计算机相关专业的萌新,总是很迷茫,不知道自己该学什么,通常是他们知道如何去学好学校开设的每一门课程,就是不知道自己该向哪些方向学习,这些方向指的是专业技能和就业方向,诸如web开发、Android/IOS开发、数据分析、人工智能、网络安全、游戏开发、软件测试等等。有这种疑惑很正常,迷茫也是正常的,但我们总要让自己了解自己所需,然后脚踏实地,一步一步去充实自己的能力。而我想做的也很简单,就是帮助大家解除心里的疑惑。那么,我们开始进入正题。
1. 我们该如何选择适合自己的方向
对于这个问题,其实是很难回答清楚的,因为每个人的兴趣都不相同,所以就很难去站在自己的角度去回答疑问者的问题。但是,原理都是想通的,我相信我的经验会帮助到你们。
通常,学校每学期都会开设一门或多门语言(程序设计语言,下文同),那么,喜欢一门语言,首先要爱上它的语言风格,诸如Java的严谨,Python的自由,总有一款适合你;其次,在学习语言的过程中,一定要了解它能干什么,市场环境如何,工作岗位多少等综合因素,再决定要不要去深入这门语言,并且主攻自己感兴趣的那个方向。
对于学校没有开设,但是自己又想学习的语言而言,该如何去选择。首先,学校开设的语言基本是市场比较流行的语言,也符合市场需求,所以,完全可以在学校开设的语言中去选择自己想要了解并学习的语言。此外,我们可以借助 TIOBE https://www.tiobe.com/tiobe-index/ ( TIOBE 编程社区指数是编程语言流行度的指标,该榜单每月更新一次,指数基于全球技术工程师、课程和第三方供应商的数量。包括流行的搜索引擎,如谷歌、必应、雅虎、维基百科、亚马逊、YouTube 和百度都用于指数计算。 )去了解语言的流行程度,流行程度决定市场需求,以此来参考自己想要了解并学习的语言,在此附上2019年11月语言排名。
2. 主流编程语言主要应用场景
Java
- 企业级应用开发: 大到全国联网的系统,小到中小企业的应用解决方案,Java都占有极为重要的地位 。
- web后端开发: JSP+Servlet+JavaBean 是一种比较流行的开发模式。
- 移动领域:手机游戏。
- Android App开发: android 开发只用到了JAVA的语法和JAVA SE的一小部分API。
C
C语言是一门基础语言,是其他一些语言的基础,例如MATLAB,Object-C,Lua等.同时也是学习来比较难的语言,达到精通的程度没有3-10年左右很难,C语言没有比较完善的开发框架,是面向过程的一门语言,讲究算法跟逻辑。
- 科研
- 服务器: 网络核心设备,如路由器、交换机、防火墙。
- 操作系统:类unix系统(Linux/freebsd)
- 嵌入式开发: 在一个特定的硬件环境上开发与构建特定的可编程软件系统的综合技术。
- 自动化控制
Python
- 图形处理
- 数学处理
- 文本处理
- 数据库编程
- 网络编程
- 多媒体应用
- pymo引擎: 运行于Symbian S60V3,Symbian S60V5,Symbian 3,Android,Windows,Linux,Mac Os,Maemo,MeeGo系统上的AVG游戏引擎。
- 黑客编程
- 网络安全
C++
- 游戏开发
- 科学计算
- 网络软件
- 操作系统
- 设备驱动程序
- 移动设备
- 嵌入式开发
- 科研
- 编译器
C#
- web后端开发
- 桌面软件开发
- 人工智能
- 游戏开发
JavaScript
唯一能用于前后端开发的语言
- web前端开发
- node web后端开发
- 操作系统
- 后台
- 桌面软件开发
- 混合App
- 小程序
- 一切能用js实现的,最终必将用js实现
PHP
- web后端开发
- 桌面软件开发
- 命令行脚本
SQL
- 操作数据库
Swift
- 苹果生态系统应用开发
Ruby
- web开发
R
数据科学闯天下,左手Python右手R
- 机器学习
- 数据分析
- 科学计算
Go
- web后端开发
- 高性能服务器应用
3. 主流编程语言学习路径(将持续更新,仅供参考)
- JavaScript
4. 主流编程语言入门学习书籍推荐
语言 | 书籍 |
---|---|
C | 《嗨翻C语言》 |
C++ | 《C++权威教程》 |
Java | 《Java轻松学》 |
Python | 《Python编程从入门到实战》 |
JavaScript | 《JavaScript入门经典》 |
PHP | 《PHP编程实战》 |
SQL | 《SQL基础教程》 |
Swift | 《Swift编程权威指南》 |
Ruby | 《Ruby从入门到精通》 |
R | 《R语言实战》 |
Go | 《Go语言圣经》 |
5. 编程学习网站推荐
网站 | 网址 |
---|---|
菜鸟教程 | https://www.runoob.com/ |
W3School | https://www.w3school.com.cn/index.html |
实验楼 | https://www.shiyanlou.com/ |
猿学 | https://www.yuanxue365.com/ |
慕课网 | https://www.imooc.com/ |
SegmentFault | https://segmentfault.com/ |
博客园 | https://www.cnblogs.com/ |
GitHub | https://github.com/ |
掘金 | https://juejin.im/timeline |
学习数据科学 | https://www.dataquest.io/ |
易百教程 | https://www.yiibai.com/ |
看云 | https://www.kancloud.cn/explore |
三、总结
通篇写完,感觉自己也重新学到了很多,学习就是一个反复复习的过程,每次学习都能带给自己不一样的收获。希望以上内容可以给初入计算机相关专业的萌新带来一些帮助,后面我会不断更新和优化本文,请大家持续关注。