C 语言学习的第 01 课:先来聊聊计算机吧
各位同学,新学期,我就是你们的助教了。我的个人信息,你们的任课老师都已经介绍过了,所以我这里也就不再啰嗦。下面,来聊聊今天的话题:“先来谈谈计算机吧”。
想必看到这个题目,你们大家一定是不愿意点击进来的,毕竟,现在的你们呐,一定都是差不多天天面对计算机的(要知道,现在你们的手机,都要比早些年的计算机要先进,性能强大很多)。但是,不知道你是不是有想过和它相关的一些问题呢。比如:
- 当按下开关机按键以后,它是怎么进入操作系统的;
- 进入操作系统以后,它怎么启动第一个程序的;
- 软件是怎么控制硬件的(比如你使用手机拍一张照片,它是怎么打开了摄像头,怎么采集到一张图片,又是怎么显示到手机的屏幕上的呢)
- ……
是不是在提出这些问题之后,你会觉得,“是哎”这都是为什么呢,计算机的内部,都经历了一些什么,实现了上面列出的种种功能。
这些问题,都可以留着在你们以后的学习中慢慢的一点点的解开,比如计算机原理就可以告诉你计算机到底是怎么进入系统的,它又是如何去控制计算机的硬件。不过,学习这些课程以前,C 语言一定是一项必备的技能,甚至,你需要有一点点汇编的基础。到这里,我们就来简单的聊聊 C 语言吧。
谈 C 语言一定要聊聊计算机。
计算机:硬件和软件
计算机软件
计算机它本身是一件能够计算和逻辑判断的电子设备。所谓计算,就是指它能够在你输入“1+1”之后输出2,所谓逻辑判断就是你在输入“今天下雨不下雨”给出“下”或者“不下”的断言。当然,这仅仅是一个简单的解释,计算机处理的运算和逻辑判断比上面的例子可能要复杂千万倍。这里,我们可以称输入的“1+1”或者是“今天下雨不下雨”为“数据”,它对这些数据的计算或者是判断,是一种操作,最终呈现出来。所以,计算机的功能又可以概括为对输入的数据进行处理,然后输出。
通常来说,假如仅有计算机这个实实在在的实体,是无法完成数据的处理这一过程的,因为数据如何处理往往是由人预设的。预设的过程,我们可以称其为编程。预设的结果,我们可以称其为程序。
计算机硬件
一般来说,不管计算机的外形如何变化 ,它通常都是由 6 个部分构成:
- 输入单元(input unit):用于接收数据,巧妇难为无米之炊,要是没有数据,计算机也不知道该做点什么好;
- 输出单元(output unit):用于处理好的数据的输出,数据好不容易处理好,总是要秀出来看看的;
- 内存单元(memory unit):数据的来来往往,总是要有一个临时的客栈;
- 算术逻辑单元(Arithmetic and Logic Unit,ALU):用于执行加减乘除这些数学运算;
- 中央处理器(Central Processing Unit,CPU):用于协调各个单元的事务;
- 辅助存储单元(secondary storage unit):用于存储一些需要长久保存的数据。
(在一些传统的计算机教材中,仅有 5 个逻辑单元构成,没有第六个辅助存储单元。或者使用存储器这一概念统称第三个和第六个)
机器语言,汇编语言和高级语言
不过,计算机本身并不能够听懂人类的语言,因为他内部使用的是电力驱动的各种电子器件,他们仅能够感受是否有电(还记得小时候用舌头舔电池吗,有电的是咸咸的,没电的没什么味道)。所以,一台计算机能够理解的仅仅是一堆有电没电有电没电这样的符号。
机器语言有点不太好理解,于是聪明的人类将一串固定的“有电没电”转换为名为“汇编”的代码,然后使用一段程序,将汇编代码作为数据输入进去,输出一串“有电没电”的机器代码。可是,要是你已经看过汇编语言就会发现汇编本身也并不是那么好理解的。懒惰是科技发展的第一动力,人类为了更好的和机器玩耍,于是发明了现代的高级语言(high level language)。
C 语言发展简史
(好懒,我就不写了,请看这里http://www.zhihu.com/question/22826568/answer/65915408)
C 语言学习的第 01 课:先来聊聊计算机吧的更多相关文章
- C 语言学习的第 05 课:C 语言基础(01)
C语言程序中的绝大部分应该记录在以.c作为扩展名的文件里,这种文件叫做C语言 程序的源文件. C语言中还包括以.h作为扩展名的文件,这种文件叫做头文件. C语言中的四则运算: 加:+ 减:- 乘 ...
- C 语言学习的第 03 课:你的 idea 是怎么变成能够执行的程序的
在上一篇文章中,我们说到,C 语言系统应该由程序开发环境,C 语言本身和 C 语言的库组成.且同时说了程序开发环境做了“编写”,“预处理”,“编译”和“链接”这几件事情.但是细节并没有一一呈现.不知道 ...
- C 语言学习的第 04 课:编译器常见错误和警告(1)
同学们可能已经开始使用 C-Free 5 写自己的程序了.但是新手编程,总是会有一些磕磕绊绊.不要紧,在这篇文章中,就主要来了解一些编程开始时经常会遇到的语法方面的问题. warning: no ne ...
- C 语言学习的第 02 课:C 语言的开发环境
工欲善其事,必先利其器.不知道还是不是记得上一篇文章中说到的,计算机本身是一个数据输入及输出的设备.所以,为了将你大脑中的各种 idea 输入到电脑,且最终生成能够执行的程序,总是要预备点什么的. 通 ...
- C语言学习记录_2019.01.29
C语言的灵魂:指针 #include <stdio.h> int main(int argc, char **argv) { printf("Hello, World!\n&q ...
- Java语言学习day26--7月01日
###14内部类 * A: 内部类的概述 将类写在其他类的内部,可以写在其他类的成员位置和局部位置,这时写在其他类内部的类就称为内部类. 其他类也称为外部类. * B: 什么时候使用内部类 在描述事物 ...
- C 语言学习的第 05 课:了解课程配套的平台
在此之前,已经同授课老师沟通,确认课程的配套平台是Coding.net.对于大多数(甚至是全部)同学来说,这个平台应该是极其陌生的.不过不用担心,且还是娓娓道来. 定义:Coding.net是一个集代 ...
- 足球运动训练心得及经验分析-c语言学习调查
在准备预备作业02之前,我参考娄老师的提示,阅读了<[做中学(Learning By Doing)]之乒乓球刻意训练一年总结>一文. 在文章描述的字里行间,给予我的印象是系统.负责,娄老师 ...
- 郝斌老师C语言学习笔记(一)
在给变量分配内存时,很可能这段内存存在以前其他程序使用留下的值.当使用VC编译器,若编译器发现没有给变量赋值而使用,就会返回一个以“85”开头的很大的数字(此时该段内存中为一个垃圾数,为了避免出现较常 ...
随机推荐
- 注解学习(模仿springMvc的注解注入方式)
最近在看springMvc的源码,看到了该框架的注入注解的部分觉的有点吃力,可能还是对注解的方面的知识还认识的不够深刻,所以特意去学习注解方面的知识.由于本人也是抱着学习的态度来阅读源码,若文章在表述 ...
- 设置输入域(input/textarea)中文本光标的位置
以前记录了一篇 将光标定位于输入框最右侧的实现方式 ,实现光标定位在文本的最末.这种需求往往在修改现有的文本.有时可能还需要把光标定位在首位,或者中间某个位置,这就需要实现一个更通用的方法. 这个方法 ...
- I am back-电商网站开发&jQuery
hi 之前有将近两周的时间没有更新,除了懒就是其他的事情耽误了.现在好了,回家了,虽然家里停水,外面又有积雪,天寒地冻的,但诸多不便,都比不过有点闲的好. 开搞每个学PHP的必经之路——电商网站的开发 ...
- [Top-Down Approach] Chatper 4 Notes
4.2 Virtual Circuit and Datagram Networks VC Set up connection Exchange data Free the connection The ...
- 《Writing Idiomatic Python》前两部分的中文翻译
汇总了一下这本小书前两部分的内容: 翻译<Writing Idiomatic Python>(一):if语句.for循环 翻译<Writing Idiomatic Python> ...
- go 字符变量
go语言变量定义 第一类,通过关键字var来声明,可以在main函数体外 // varStudy //变量在main函数体外声明 package main import ( "fmt&quo ...
- 初识Struts2
一.Struts2入门案例 ①引入jar包 ②在src下创建struts.xml配置文件 <?xml version="1.0" encoding="UTF-8&q ...
- GitHub 下载文件夹
工具 TortoiseSVN 步骤 1.打开要下载的项目,选中要下载的文件夹,右键 选择 复制链接地址 2.把链接中的 tree/master 改成 trunk ,(trunk是master分支,可以 ...
- FLEX的动画
1.使用自带效果 在Flex里面不像在Flash里面随意制作动画了,Flex更趋向于应用程序,而不是动画制作了,所以没有了时间轴的概念.在Flex中使用动画效果,可以用Flex自带的Effect,或者 ...
- HTML:图片热点 网页划区 表单
图片热点: 划出图片中的区域,做超链接,点击该区域就可以直接跳转到链接网站 <img src="../../../3.jpg" title="血精灵" u ...