程序员入门基础
关于程序员学习方法的思考
相信很多人都有自己的学习经历和方法,但是很少有人去思考如何去学习,接下来我来谈谈自己关于学习的一些看法。
首先我们要明白,学习的过程一定是从易到难的过程,从不知到认识,从认识到转化为知识,从知识转化为技能的过程,简单来说就是:不知->认识->知识->技能的一个转化过程
不知->认识
如果你有强烈学习的意愿,相信你会通过各种渠道去获得相关的信息。由不知到认识。
这个过程关键点是如何获取高质量的信息?
我的建议是:
尽量从官方渠道获取一手的信息资料。
尽量阅读行业内大多数权威人士推荐的资料。
尽量和你认识的高手交流。
而对于庞大的技术点,我们如何筛选?
我的建议是分类,根据帕累托法则,先重点掌握那些20%的能够完成80%任务的技术点。
那么哪些知识点是属于20%的?这其实是没有一个统一标准的,更多的依靠自己的经验,如果有个老司机的指点会起到事半功倍的效果
认识->知识
这个过程是一个系统的学习过程,不仅仅是学习一个一个单一的知识点,还需要把这些知识点关联起来形成自己的知识网,能由一个知识点联想到其他的知识点。
我们可以通过以下方法来完成这个过程:
文字教程,文字教程包括书籍,博客,技术专栏,官方网站等。
视频教程,各大视频课程学习平台。这也是我比较推荐的做法,关于如何学习视频课程,我会在下一小节专门介绍。
知识->技能
这个过程需要你重复的训练,不停的思考和反复的实验,最终总结经验教训。
经常听到有人说:“这个方法打死我也想不出来”。
我给他的回答是:“见的少,想的少,练的少”。
视频课程学习方法建议
很多初学者会选择视频课程来学习,我个人也非常提倡选择视频课程学习,高质量的视频课程配上有效的学习方法能够大大减轻你学习的压力,缩短学习的时间,降低学习的成本,在视频课程的学习过程中我建议大家按照以下方法去学习:
课前
预习
对照课程资料提前预习知识点
课中
尽量跟上思路,如果遇到听不懂的:
在笔记中记录下来 -> 下课自己尝试解决 -> 借助搜索引擎 -> 寻求同学和老师的帮助 -> 总结
课后
练习
列出任务需求 -> 分解任务需求 -> 实现任务需求 -> 优化任务需求
复习
总结知识点 -> 标记出难点和重点 -> 整理自己的代码库,笔记或者博客
注意点
尽量少看视频,可以针对某个知识点看视频
禁止抄代码
计算机的组成和程序的运行过程
计算机的组成
到目前为止,计算机仍然沿用1940年由冯·诺依曼提出的体系结构。
提出了组成计算机的五大部件:输入设备、输出设备、存储器、运算器和控制器。
下图是对冯·诺依曼体系结构的简化
输入设备: 将人能够认识的信息转化为机器能够识别的机器码。除了键盘鼠标,其他输入设备还包括触摸板、麦克风、摄像头,游戏手柄、扫描仪等等
机器码就是用二进制编码方式表示的指令。一个0或者一个1就是一个二进制。换句话说机器码就是由0和1组成的数字代码。而最终这些0和1会转化成晶体管的开关状态,0代表关开,1代表开。计算机是由这些晶体管的开关物理状态来存储和计算的。
输出设备: 将机器码转化为人能够认识的信息。常用的输入设备有:显示器、音箱、打印机、投影仪等等
存储器:用来存储数据和程序,包括内存和外存。常见的外存有: 硬盘,U盘,光盘
运算器:算术运算和逻辑运算,CPU的组成部分
控制器:指挥控制程序的运行,CPU的组成部分
程序的运行过程
以操作Word为例,首先我们要明白,Word程序文件和Word的数据都是存储在硬盘上的
1,当我们用鼠标(输入设备)双击Word图标时,其实是向CPU发送了一条命令
2,CPU的控制器接受到这条指令后就让Word程序文件从硬盘(外存)加载到内存中
3,加载完成后,CPU的运算器就开始执行Word程序
4,程序执行起来后CPU将执行的结果显示在显示器上
5,当我们保存文件时,Word文件从内存写入到硬盘
6,当我们退出程序时, 内存中的数据被销毁
从程序的运行过程来看,我们重点关注的是:
程序从硬盘加载到内存由CPU来运行,也就是说程序是存储在硬盘上的,运行在内存中的
那么为什么CPU不直接在硬盘里执行程序,而非要把程序放到内存后在执行呢?
主要原因是内存存取数据的速度比硬盘的存取速度快,但内存是带电存储的(一旦断电数据就会消失),而且容量有限,所以要长时间储存程序或数据就需要使用硬盘。
操作系统
什么是操作系统?
操作系统(Operating System,简称OS)是管理计算机硬件与软件资源的计算机程序。
操作系统提供一个让用户与系统交互的操作界面。
常见的操作系统
iOS
由苹果公司开发的手持设备操作系统
Android
是一种基于Linux的自由及开放源代码的操作系统。
主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。
MacOS
一套运行于苹果系列计算机上的操作系统。
类Unix系统
类Unix系统包含了System V、BSD与Linux系统,其中以Linux系统最为常见,主要用在服务器端。
Windows
由美国微软公司开发的应用于计算机和平板电脑的操作系统。
编程语言
什么是编程语言?
简单来说,编程语言就是人和计算机进行沟通的工具。就像是一门用来和外国人沟通的外语一样。
如何选择编程语言?
据统计,世界上大概有600多种编程语言,并且这个数字还在不断增加中。
对于很多打算学习编程的新手来说,那么多编程语言该如何选择呢?
首先,我们要明白编程语言只是工具,每种编程语言都有自己的优势与适用的场景,编程语言是帮你解决实际问题的,而不是用来辩论哪种语言是最好的,不要以语言来论好坏。很多企业都是用不同的语言来解决不同的业务问题。
比如有创业公司想快速开发,可能会选择Python Diango。
更有甚者为了节省资源,快速开发产品,直接选择NodeJs,Serverless。
有的要解决实际的性能问题,注重高并发、低延迟那也许会选择Go,C++。
有的企业追求稳定成熟的解决方案,比如大型电商行业,可能会选择Java。
有的企业追求系统的稳定性,比如银行,保险金融机构,可能会选择古老的Cobol。
有的专注在iOS、Android平台的开发,那就会选择Objective-C和Java等等。
有些企业甚至会混合不同的编程语言,来解决不同的业务场景。
而对于新手来说,现在想要学习一门编程语言的话,主要关注以三点就可以了:
-
是否易入门?
-
是否前景好?
-
是否好就业?
而至于那门语言好入门,那门语言前景好,那门语言好就业在这里就不展开了。
扩展名
什么是扩展名?
在Windows系统中,扩展名是用来标示文件格式的一种标志。
通常来说一个文件的扩展名是跟在文件主名后面的,由一个分隔符号分隔,这个分隔符号通常是英文的句号.。
如hello.txt,hello是文件主名,句号.是分隔符号,txt是扩展名,表明这是一个文本文件。
扩展名的作用是让系统决定当用户想打开这个文件的时候用哪种软件运行。
需要注意的是扩展名的作用只存在于Windows系统中。
Windows中如何查看扩展名?
文件夹->查看->勾选文件扩展名选项
纯文本
什么是纯文本?
没有任何修饰的文本。
在Windows系统中能够被记事本打开, 并且能够正常显示的文件都是纯文本文件。
保存和打开文件
保存文件
将所有关联的文件放在一个单独的文件夹里,这个文件夹可以存放在任何你喜欢的位置,不过你应该将它放在你容易找到的位置
文件夹名和文件命名的注意点
使用小写字母
没有空格
在英文输入法下输入
没有中文
可以使用连字符
不要有中文是因为,很多计算机,特别是 Web 服务器,不能一致处理中文
打开文件
电脑上的一个文件是可以同时被多个软件打开,不同的软件打开可能会有不同的效果。
键盘正确指法
正确的键盘指法不仅能够提高代码的输入速度,也是程序员专业素养的体现。
如果你还是一指禅,请参考下图反复练习:
常用参考资料地址
github,全球最大的代码托管仓库MDN,Mozilla Developer Network(开发者网络工作),
火狐的开源项目,里面有所有的WEB开发的参考文档stackoverflow,技术问答社区w3school,中文网站开发参考w3schools,英文网站开发参考w3,w3c官网leetcode,算法学习网站
文章转载自:陈涛老师个人网站:http://www.chenniantao.com/course/detail/3/
每天一句中文式外语
泰语
你真英俊!/kun-luo-jing-jing坤裸晶晶/you handsome!几点钟?/gei-meng给蒙/what time?三点了/san-meng-liao三蒙辽/three clock12345678910/能、宋、三、喜、哈、吼、捷、别、告、媳好吃!/a-(l-oi快连读) 啊(l-oi)/ Good!好玩!/sa-nu萨努/Interest!好看!/na-du 那杜/Be good!不行!/mai-dai 卖代/No!喜欢!/chuo 戳/like不喜欢!/mai-chuo 卖戳/Don’t like