1.啥叫编程

编程乃编写程序的简称,所以要想知道啥叫编程,首先要清楚什么是程序(Program)。

普及一点计算机小知识:从根本上说,计算机是由数字电路组成的运算机器,处理的数字也仅限于0和1组成的数字串,也就是二进制范围内的运算,至于运算的具体细节在这里就不细说了。

回到程序上来,什么是程序呢?

程序由一系列指令(Instruction)组成,指令是指示计算机做某种运算的命令。

程序就是通过一系列指令的集合,告诉计算机应如何完成一个计算任务。这里的计算可以是数学运算,比如解方程,也可以是符号运算,比如查找和替换文档中的某个单词,甚至可以处理声音和图像。

根据前面提及的计算机小知识,相信大家也能得出结论:除了数学运算,程序之所以能做符号运算,声音和图像处理,是因为这些内容在计算机内部也是用数字表示的。这些数字经过专门的硬件设备转换成我们的所见所闻。(如显卡、声卡等硬件设备)

到这里,我们大体上就知道啥叫编程了。编程就是编写能够让计算机完成某项任务而执行的程序。

2.用啥编程

人类语言的产生是为了人与人之间的沟通,计算机编程语言的产生则是为了人与计算机之间的沟通,我们正是用计算机编程语言进行编程。

与人类语言一样,计算机编程语言也是逐步发展丰富的。那就先从最原始的编程语言,即机器语言开始说起。

所谓机器语言,通俗讲就是计算机能够直接理解并执行的语言,也就是由0,1组合串构成的语言(原因可从前文获知^_^)。这些0,1的组合并不是任意的,而是受到限制的。那具体是什么限制呢?受指令集限制。

所谓指令集,就是CPU中用来计算和控制计算机系统的一套指令的集合,而每一种CPU在设计时就规定了一系列与其他硬件电路相配合的指令系统。换言之,不同的CPU它的指令集是有差别的。

我们在用机器语言编写程序时,只能用它完成当前指令集的描述和组合,超出这个范围CPU自然就无法识别程序意图了。

现在我们下这样两个结论:a.机器语言写出来的程序满篇都是0和1;b.在张三型号CPU环境下写的机器语言代码拿到李四型号CPU的计算机上去,多半是无法运行的。(指令集不同所致)

由于原因a,机器语言太难写难记,更难改----想象一下一万行0,1组成的代码里有某个1错写成0了,你找找试试。于是发展出了汇编语言,它给0,1组合而成的指令起了好记的名字,如指令“1010000100011100”(十六进制表示)起名叫mov,“100000111100000000001”起名叫add。这样一来,指令就好记了也好用好改了。不过问题是,计算机无法直接读懂了(它可不知道啥叫mov,add)。怎么办?想想你如果想跟火星人沟通怎么办?找个懂火星语的好翻译呗。这里也是,把汇编语言翻译成机器语言即可,这个翻译工具就叫汇编器。

汇编语言跟机器语言的关系决定了它也具有b的特征,此特征在计算机界有个术语叫“可移植性差”。谁都想为了解决某个难题写的程序拷贝到其他的计算机上也能运行。于是计算机编程又进一步发展,诞生了高级编程语言,C语言就是其中灰常灰常经典的一个。

高级编程语言克服了a,b两点,但由于将高级语言翻译成机器代码的过程很复杂,耗时多,所以执行效率高级语言比不上前面的两种低级语言。不过由高级语言带来的便利那可是数不胜数的,so,由此计算机编程开始遍地开花,进入寻常百姓家。

至于高级语言翻译成机器代码的过程这里略过,只提两个翻译有关的名词,编译和解释,具体介绍诸君可以看维基,阅百度,找Google。

3.程序好编吗

简单的好编复杂的难(这不废话吗)。编程能力是日积月累,不断提高的一个过程。

计算机指令通常只包括以下5类:

输入(Input)类:从键盘、文件或者其它设备获取数据。

输出(Output)类:把数据显示到屏幕,或者存入一个文件,或者发送到其它设备。

基本运算类:执行最基本的数学运算(加减乘除)和数据存取。

测试和分支类:测试某个条件,然后根据不同的测试结果执行不同的后续指令。

循环类:重复执行一系列操作。

我们编程就是用对应的五类语句组合起来去解决问题,而组合的思路我们称为算法。

C语言中对应的这五类语句,以及应试类程序设计所涉及的算法,后面会逐一介绍。

初识C(1)----与C基本无关的开篇的更多相关文章

  1. 为什么mysqlbinlog --database选项不起作用

    群里看到有同学提问,多瞅了眼 [root@mysql55 mysql]# mysqlbinlog --no-defaults -vv --base64-output=decode-rows mysql ...

  2. 初识Java

    Java是一种简单的.面向对象的.分布式的.解释的.安全的.可移植的.性能优异的多线程语言.它以极强的安全性.平台无关性.硬件结构无关性.语言简洁.面向对象的特点,在网络编程语言中占据了无可比拟的优势 ...

  3. Java初识

    基础概念 特点: 完全面向对象,动态 解释性,简单.易移植,跨平台 安全健壮,高性能 多线程,分布式 三种核心机制: Java虚拟机 Java Virtual Machine 垃圾收集机制 Garba ...

  4. hadoop初识

    搞什么东西之前,第一步是要知道What(是什么),然后是Why(为什么),最后才是How(怎么做).但很多开发的朋友在做了多年项目以后,都习惯是先How,然后What,最后才是Why,这样只会让自己变 ...

  5. 初识 Android

    创建博客有一年的时间了,一直没把它用起来,颇感惭愧.近日突感有写博客的冲动,更可怕的是这种冲动似乎比我体内的洪荒之力更为凶猛.于是乎,这篇博客悄然诞生.废话不多说,进入正题--初识Android. 这 ...

  6. Java 面向对象编程——第一章 初识Java

      第一章    初识Java 1.  什么是Java? Java是一种简单的.面向对象的.分布式的.解释的.安全的.可移植的.性能优异的多线程语言.它以其强安全性.平台无关性.硬件结构无关性.语言简 ...

  7. WPF学习之路初识

    WPF学习之路初识   WPF 介绍 .NET Framework 4 .NET Framework 3.5 .NET Framework 3.0 Windows Presentation Found ...

  8. [翻译]初识SQL Server 2005 Reporting Services Part 4

    原文:[翻译]初识SQL Server 2005 Reporting Services Part 4 这一篇是关于SQL Server 2005 Reporting Services四篇文章中最后一篇 ...

  9. 第二章 初识JSP

    第二章   初识JSP 一.JSP简述 1.是JSP JSP是指在HTML中嵌入Java脚本语言.全称(Java Server Pages) 当用户通过浏览器访问Web应用时,使用JSP容器对请求的J ...

随机推荐

  1. Http请求头中的字段理解

    1.Accept属于请求头, Content-Type属于实体头. Http报头分为通用报头,请求报头,响应报头和实体报头. 请求方的http报头结构:通用报头|请求报头|实体报头 响应方的http报 ...

  2. Struts2返回Json数据(使用Struts2插件)

    这篇我将介绍如何使用Struts2的struts2-json-plugin.jar插件返回JSON数据. 一.其中主要步骤有: 1.将struts2-json-plugin.jar插件拷贝到项目的&q ...

  3. 关于debug和release 以及new 和delete

    题目:给出一组字符串 输入:"ate","eat","Eat","new","ENW",“wha” ...

  4. 动态改变ComboBox下拉框的宽度

    在C++Builder中有时下拉框的内容比较长,标准长度下根本显示不完,可以调用PostMessage()方法来实现 ::PostMessage(comb->Handle,CB_SETDROPP ...

  5. The method replace(int, Fragment, String) in the type FragmentTransaction is not applicable for the arguments (int, SettingFragment, String)

    The method replace(int, Fragment, String) in the type FragmentTransaction is not applicable for the ...

  6. jquery学习(3)--高级选择器

    自己手写的学习笔记.常规选择器: /****************学习--高级选择器(1)****************/---高级选择器:ie7+ 层次选择器: 后代选择器     ul li ...

  7. struts2笔记04-XxxAware接口

    1.XxxAware接口 ApplicationAware, RequestAware,SessionAware, ParameterAware.      struts2提供了这四个Aware接口用 ...

  8. python Memo

    list&tuple 运算 乘以constant >>> x = ((1,2),) >>> x*2 ((1, 2), (1, 2)) >>> ...

  9. CDC变更数据捕获

    CDC变更数据捕获 (2013-03-20 15:25:52)   分类: SQL SQL Server中记录数据变更的四个方法:触发器.Output子句.变更数据捕获(Change Data Cap ...

  10. android DatePickerDialog theme

    网上搜索了下没有找到DatePickerDialog的各种 Theme 的样例.我就一个一个试了下,传上图片 DatePickerDiaolog有两个构造函数分别是: DatePickerDialog ...