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”开头的很大的数字(此时该段内存中为一个垃圾数,为了避免出现较常 ...
随机推荐
- 命令行向php传入参数的两种方法
##$argv or $argc $argv 包含当运行于命令行下时传递给当前脚本的参数的数组. $argv[0] 就是脚本文件名. $argc 包含当运行于命令行下时传递给当前脚本的参数的数目 ...
- vi/vim实用命令
查找 n是下一个,N是上一个 撤销和重做 u:撤销上一步的操作 ctrl+r:恢复上一步被撤销的操作 替换 :1,$ s/aaa/bbb/g
- LinuxAsm#Chapter10
Dividing and Conquering Book: Assembly Language step by step Complexity kills programs. Remember to ...
- 【转】【收藏】LINQ学习心得分享--------(二)LINQ语法详解
原地址:http://blog.csdn.net/xuemoyao/article/details/8053444 通过上一章节的学习,相信大家已经掌握了学习LINQ的前期的准备知识.在这一节里, ...
- opencv源码阅读之——iOS的两条接口UIImageToMat()和MatToUIImage()
本文为作者原创,未经允许不得转载:原文由作者发表在博客园: http://www.cnblogs.com/panxiaochun/p/5387743.html 在ios下开发基于opencv的程序时经 ...
- NOIP2014飞扬的小鸟[DP][WRONG]
坑人啊朴素的dp 75分 用了完全背包才是80分,结果普遍偏小 为什么啊啊啊啊啊 等以后再写一遍吧 #include<iostream> #include<cstdio> #i ...
- KSFramework:集成U3D热重载框架 - README
KSFramework KEngine + SLua+ Framework = KSFramework KSFramework是一个整合KEngine.SLua的Unity 5开发框架,并为程序.美术 ...
- IT菜鸟的第2天(输入输出,数据类型,运算符的使用)
1:输入输出 另一种读写方法: 注释:Console.Write(Line{自动换行})是输入,string xxx = Console.ReadLine();是输出. string :字符串类型 ...
- poj1001 Exponentiation 大数的幂
Description Problems involving the computation of exact values of very large magnitude and precision ...
- stunnel+CCProxy,搭建加密代理
总所周知,不可抗拒的特别有用心的原因,我们无法访问youtube,picasa,Twitter……国外优秀网站,很多人采用了代理服务器的方法访问. 如果您有一台放在海外的服务器,这个就好办了.下载一个 ...