各位同学,新学期,我就是你们的助教了。我的个人信息,你们的任课老师都已经介绍过了,所以我这里也就不再啰嗦。下面,来聊聊今天的话题:“先来谈谈计算机吧”。

想必看到这个题目,你们大家一定是不愿意点击进来的,毕竟,现在的你们呐,一定都是差不多天天面对计算机的(要知道,现在你们的手机,都要比早些年的计算机要先进,性能强大很多)。但是,不知道你是不是有想过和它相关的一些问题呢。比如:

  1. 当按下开关机按键以后,它是怎么进入操作系统的;
  2. 进入操作系统以后,它怎么启动第一个程序的;
  3. 软件是怎么控制硬件的(比如你使用手机拍一张照片,它是怎么打开了摄像头,怎么采集到一张图片,又是怎么显示到手机的屏幕上的呢)
  4. ……

是不是在提出这些问题之后,你会觉得,“是哎”这都是为什么呢,计算机的内部,都经历了一些什么,实现了上面列出的种种功能。

这些问题,都可以留着在你们以后的学习中慢慢的一点点的解开,比如计算机原理就可以告诉你计算机到底是怎么进入系统的,它又是如何去控制计算机的硬件。不过,学习这些课程以前,C 语言一定是一项必备的技能,甚至,你需要有一点点汇编的基础。到这里,我们就来简单的聊聊 C 语言吧。

谈 C 语言一定要聊聊计算机。

计算机:硬件和软件

计算机软件

计算机它本身是一件能够计算和逻辑判断的电子设备。所谓计算,就是指它能够在你输入“1+1”之后输出2,所谓逻辑判断就是你在输入“今天下雨不下雨”给出“下”或者“不下”的断言。当然,这仅仅是一个简单的解释,计算机处理的运算和逻辑判断比上面的例子可能要复杂千万倍。这里,我们可以称输入的“1+1”或者是“今天下雨不下雨”为“数据”,它对这些数据的计算或者是判断,是一种操作,最终呈现出来。所以,计算机的功能又可以概括为对输入的数据进行处理,然后输出。

通常来说,假如仅有计算机这个实实在在的实体,是无法完成数据的处理这一过程的,因为数据如何处理往往是由人预设的。预设的过程,我们可以称其为编程。预设的结果,我们可以称其为程序。

计算机硬件

一般来说,不管计算机的外形如何变化 ,它通常都是由 6 个部分构成:

  1. 输入单元(input unit):用于接收数据,巧妇难为无米之炊,要是没有数据,计算机也不知道该做点什么好;
  2. 输出单元(output unit):用于处理好的数据的输出,数据好不容易处理好,总是要秀出来看看的;
  3. 内存单元(memory unit):数据的来来往往,总是要有一个临时的客栈;
  4. 算术逻辑单元(Arithmetic and Logic Unit,ALU):用于执行加减乘除这些数学运算;
  5. 中央处理器(Central Processing Unit,CPU):用于协调各个单元的事务;
  6. 辅助存储单元(secondary storage unit):用于存储一些需要长久保存的数据。

(在一些传统的计算机教材中,仅有 5 个逻辑单元构成,没有第六个辅助存储单元。或者使用存储器这一概念统称第三个和第六个)

机器语言,汇编语言和高级语言

不过,计算机本身并不能够听懂人类的语言,因为他内部使用的是电力驱动的各种电子器件,他们仅能够感受是否有电(还记得小时候用舌头舔电池吗,有电的是咸咸的,没电的没什么味道)。所以,一台计算机能够理解的仅仅是一堆有电没电有电没电这样的符号。

机器语言有点不太好理解,于是聪明的人类将一串固定的“有电没电”转换为名为“汇编”的代码,然后使用一段程序,将汇编代码作为数据输入进去,输出一串“有电没电”的机器代码。可是,要是你已经看过汇编语言就会发现汇编本身也并不是那么好理解的。懒惰是科技发展的第一动力,人类为了更好的和机器玩耍,于是发明了现代的高级语言(high level language)。

C 语言发展简史

(好懒,我就不写了,请看这里http://www.zhihu.com/question/22826568/answer/65915408)

C 语言学习的第 01 课:先来聊聊计算机吧的更多相关文章

  1. C 语言学习的第 05 课:C 语言基础(01)

    C语言程序中的绝大部分应该记录在以.c作为扩展名的文件里,这种文件叫做C语言    程序的源文件. C语言中还包括以.h作为扩展名的文件,这种文件叫做头文件. C语言中的四则运算: 加:+ 减:- 乘 ...

  2. C 语言学习的第 03 课:你的 idea 是怎么变成能够执行的程序的

    在上一篇文章中,我们说到,C 语言系统应该由程序开发环境,C 语言本身和 C 语言的库组成.且同时说了程序开发环境做了“编写”,“预处理”,“编译”和“链接”这几件事情.但是细节并没有一一呈现.不知道 ...

  3. C 语言学习的第 04 课:编译器常见错误和警告(1)

    同学们可能已经开始使用 C-Free 5 写自己的程序了.但是新手编程,总是会有一些磕磕绊绊.不要紧,在这篇文章中,就主要来了解一些编程开始时经常会遇到的语法方面的问题. warning: no ne ...

  4. C 语言学习的第 02 课:C 语言的开发环境

    工欲善其事,必先利其器.不知道还是不是记得上一篇文章中说到的,计算机本身是一个数据输入及输出的设备.所以,为了将你大脑中的各种 idea 输入到电脑,且最终生成能够执行的程序,总是要预备点什么的. 通 ...

  5. C语言学习记录_2019.01.29

    C语言的灵魂:指针 #include <stdio.h> int main(int argc, char **argv) {  printf("Hello, World!\n&q ...

  6. Java语言学习day26--7月01日

    ###14内部类 * A: 内部类的概述 将类写在其他类的内部,可以写在其他类的成员位置和局部位置,这时写在其他类内部的类就称为内部类. 其他类也称为外部类. * B: 什么时候使用内部类 在描述事物 ...

  7. C 语言学习的第 05 课:了解课程配套的平台

    在此之前,已经同授课老师沟通,确认课程的配套平台是Coding.net.对于大多数(甚至是全部)同学来说,这个平台应该是极其陌生的.不过不用担心,且还是娓娓道来. 定义:Coding.net是一个集代 ...

  8. 足球运动训练心得及经验分析-c语言学习调查

    在准备预备作业02之前,我参考娄老师的提示,阅读了<[做中学(Learning By Doing)]之乒乓球刻意训练一年总结>一文. 在文章描述的字里行间,给予我的印象是系统.负责,娄老师 ...

  9. 郝斌老师C语言学习笔记(一)

    在给变量分配内存时,很可能这段内存存在以前其他程序使用留下的值.当使用VC编译器,若编译器发现没有给变量赋值而使用,就会返回一个以“85”开头的很大的数字(此时该段内存中为一个垃圾数,为了避免出现较常 ...

随机推荐

  1. ELK Nxlog->Kafka->ElasticSearch

    Windows 系统下,log4日志通过kafka发送到elasticsearch; windows 下nxlog没有找到直接发送数据到kafka的插件,所以采用logstash中转下     Nxl ...

  2. 如何把报表放到网页中显示(Web页面与报表简单集成例子)

    1.问题描述 现在用户开发的系统基本上趋向于BS架构的浏览器/服务器模式,这些系统可能由不同的语言开发,如HTML.ASP.JSP.PHP等,因此需要将制作好的报表嵌入到这些页面中. FineRepo ...

  3. 三维网格形变算法(Gradient-Based Deformation)

    将三角网格上的顶点坐标(x,y,z)看作3个独立的标量场,那么网格上每个三角片都存在3个独立的梯度场.该梯度场是网格的微分属性,相当于网格的特征,在形变过程中随控制点集的移动而变化.那么当用户拖拽网格 ...

  4. poj 2892

    Tunnel Warfare Time Limit: 1000MS   Memory Limit: 131072K Total Submissions: 7725   Accepted: 3188 D ...

  5. HTML-学习笔记(属性)

    HTML属性 HTML 标签可以拥有属性.属性提供了有关HTML元素更多的信息. 属性总是以键值对的形式出现.例如 name = "value"; 属性总是在HTML元素的开始标签 ...

  6. fMRI数据分析处理原理及方法

    来源: 整理文件的时候翻到的,来源已经找不到了囧感觉写得还是不错,贴在这里保存. 近年来,血氧水平依赖性磁共振脑功能成像(Blood oxygenation level-dependent funct ...

  7. BZOJ 2733 【HNOI2012】 永无乡

    Description 永无乡包含 n 座岛,编号从 1 到 n,每座岛都有自己的独一无二的重要度,按照重要度可 以将这 n 座岛排名,名次用 1 到 n 来表示.某些岛之间由巨大的桥连接,通过桥可以 ...

  8. 转:如何在32位程序中突破地址空间4G的限制

    //如何在32位程序中突破地址空间4G的限制 //首先要获得内存中锁定页的权限 #define _WIN32_WINNT 0x0501 //xp系统 #include <windows.h> ...

  9. Webwork 学习之路【01】Webwork与 Struct 的前世今生

    Struts 1是全世界第一个发布的MVC框架,它由Craig McClanahan在2001年发布,该框架一经推出,就得到了世界上Java Web开发者的拥护,经过长达6年时间的锤炼,Struts ...

  10. 读懂IL代码就这么简单(三)完结篇

    一 前言 写了两篇关于IL指令相关的文章,分别把值类型与引用类型在 堆与栈上的操作区别详细的写了一遍 这第三篇也是最后一篇,之所以到第三篇就结束了,是因为以我现在的层次,能理解到的都写完了,而且个人认 ...