hello程序的生命周期是从一个源程序(或者说源文件)开始的,即程序员通过编辑器创建并保存的文本文件,文件名是hello.c。源程序实际上就是一个由0和1组成的位(又称为比特)序列,8个位被组织成一组,称为字节。每个字节表示程序中的某些文本字符。
大部分的现代计算机系统都使用ASCII标准来表示文本字符,这种方式实际上就是用一个唯一的单字节大小的整数值来表示每个字符。比如,图1-2中给出了hello.c程序的ASCII码表示。
hello.c程序是以字节序列的方式储存在文件中的。每个字节都有一个整数值,对应于某些字符。例如,第一个字节的整数值是35,它对应的就是字符“#”。第二个字节的整数值为105,它对应的字符是“i”,以此类推。注意,每个文本行都是以一个看不见的换行符‘\n’来结束的,它对应的整数值为10。像hello.c这样只有ASCII字符构成的文件称为文本文件,所有其他文件都称为二进制文件。
hello.c的标识方法说明了一个基本思想:系统中所有的信息——包括磁盘文件、内存中的程序、内存中存放的用户数据以及网络上传送的数据,都是由一串比特表示的。区分不同数据对象的唯一方法是我们读到这些数据对象时的上下文。比如,在不同的上下文中,一个同样的字节序列可能标识一个整数、浮点数、字符串或者机器指令。
作为程序员,我们需要了解数字的机器表示方式,因为它们与实际的整数和实数是不同的。它们是对真值的有限近似值,有时候会有意想不到的行为表现。这方面的基本原理将在第二章中详细描述。
旁注:C编程语言的起源
C语言是贝尔实验室的Dennis Rithie 于 1969年-1973年间创建的。美国国家标准学会(American Nationanl Standards Institute,ANSI)在1989年颁布了ANSI C的标准,后来C语言的标准化成了国际标准化组织(International Standards Organization,ISO)的责任。这些标准定义了C语言和一系列函数库,即所谓的C标准库。Kernighan和Ritchie在他们的景点著作中描述了ANSI C,这本著作被人们满怀感情地称为“K&R”。用Ritchie的话来说,C语言是“古怪的、有缺陷的,但同时也是一个巨大的成功”。为什么会成功呢?
- C语言与unix操作系统关系密切。C从一开始就是作为一种用于unix系统的程序语言开发出来的。大部分Unix内核(操作系统的核心部分),以及所有支撑工具和函数库都是用C语言编写的。20世纪70年代后期到80年代初期,Unix风行于高等院校,许多人开始接触C语言并喜欢上它。因为Unix几乎全部是用C编写的,它可以很方便地移植到新的机器上,这种特点为C和Unix赢得了更为广泛的支持。
- C语言小二简单。C语言的设计师由一个人而非一个协会掌控的,因此这是一个简洁明了、没有什么冗赘的设计。K&R这本书用大量的例子和练习描述了完整的C语言及其标准库,而全书不过261也。C语言的简单使它相对而言易于学习,也易于移植到不同的计算机上。
- C语言是为实践目的设计的。C语言是设计用来实现Unix操作系统的。后来,其他人发现能够用这门语言无障碍地编写他们想要的程序。
C语言是系统级编程的首选,同时它也非常适用于应用级程序的编写。然而,它也并非适用于所有的程序员和所有的情况。C语言的指针是造成程序员困惑和程序错误的一个常见原因。同时,C语言还缺乏对非常有用的抽象的显示支持,例如类、对象和异常。像C++和Java这样针对应用级程序的新程序语言解决了这些问题。
个人理解写在后:
1、C语言是面向过程的编程语言,C++等是面向对象的编程语言;主要是因为编程思想不同,很多大佬用C语言也能轻而易举写出高模块化的程序。
2、在我认为,010101001100这样的机器语言和编程语言通过一套约定或者说协议来相互翻译,机器读取:0010 0011,就等于读到了#。通过这些约定协议,组织成一段具备规模的字节序列,就是编程。