捐助郴维网
感谢您对郴维网的支持,你的支持将是郴维网持续发展的动力!
二维码
×
当前位置:郴维网 >知识点备忘 > 正文
15 2018.02

S1E2:第一个程序

点击次数:1520 更新时间:2018/2/15 14:30:23  【打印此页

知识点回顾:

1. C 语言被淘汰了吗?

对于其他编程语言来说,C 语言确实是一个老古董了。但却正如古董一样,C 语言是越老越值钱。

 

从最新的 TIOBE 世界编程语言排行榜,我们可以看到虽然这么多年过去了,但 C 语言一直都是在第一名和第二名之间徘徊,并且目前仍然保持着上升的趋势。


2. 莫斯密码

莫斯密码的原理非常简单,就是查表,这儿是一张莫斯编码表,大家看:

 

将明文对着编码表翻译为“点横”组合的过程,我们称之为编码,反过来,将“点横”组合解密回原文的过程,叫做解码。


3. 机器语言

通过查找指令表,CPU 能将 0 和 1 的组合跟具体的指令挂钩,那么这些 0 和 1 的组合我们称之为机器码,也叫机器语言,属于第一代编程语言,也是 CPU 唯一可以直接读得懂的语言。


4. 汇编语言

在汇编语言中,引入了大量的助记符来帮助人们编程,然后由汇编编译器将这些助记符转换为机器码,这个转化的过程我们称之为编译。


5. C 语言

C 语言属于第三代编程语言,第三代编程语言我们称之为高级语言。正如你所听说的 C++、C#、JAVA、Delphi、Python、Object-C、Swift 这些都属于第三代编程语言。

事实上呢,你用 C 语言进行编程,编译器会将你的 C 语言代码编译成汇编语言,再由汇编语言的编译器编译为机器语言,通常我们看到的可执行文件事实上就是机器语言的形式,进而让 CPU 理解和执行。

 


6. C 语言的优势

 

- 效率高

我们说 C 语言效率高是针对其他第三代编程语言来讲的,C 语言是编译型语言,源代码最终编译成机器语言,也就是我们所说的可执行文件,从此 CPU 就可以直接执行。

 

除了编译型语言,时下很流行的还有解释型语言,像 JAVA,Python,Ruby 这类都是解释型语言。解释型语言不直接编译成机器码,而是将源码转换成中间代码,然后发送给解释器,由解释器逐句翻译给 CPU 来执行。这样做的一个好处就是可以实现跨平台的特性,而缺点就是效率相对要低一些,因为每执行一次都要翻译一次。

 

打个吃货比较容易懂的比喻,编译型语言就是做好一桌子菜再开吃;而解释型语言就是打火锅,想吃什么,就下什么料。很明显,打火锅总是比较费时间的。

- 灵活度高

C 语言不仅提供多种运算符,还可以完成类似于计算机底层操作的位运算;语法简单,约束少;丰富多变的结构和数据类型;还拥有可以直接操作计算机硬件能力。这一点大家在学习到指针这一章节的时候将深有体会。指针可以说是 C 语言的灵魂,C 语言有多灵活和强大,完全取决于你对指针这一知识点的掌握程度。所以不同的人在学 C 语言,有些成了大神,有些仍然还是初学者。

- 可移植性高

可移植性高是指源代码在不需要做改动或只需稍加修改,就能够在其他机器上编译后正确运行。

统计资料表明,对于单片机来说,不同机器上的 C 语言编译程序 80% 的代码是公共的,因此使用 C 语言的编译程序更便于移植。另外,无论是 Windows 系统、Linux 系统还是苹果的 MacOS 系统,抛开现象看本质,它们都与 C 语言有不可分割的联系。


7. 彩蛋

C 诡异力气,缺陷重重,却获得了巨大的成功。

                                                              —— Dennis Ritchie

丹尼斯·里奇(1941-2011


 



没错,上边这个屌屌的大叔跟乔帮主同一年离我们而去(事实上他们还是同一个月份走的)

与世界上大多数名人一样,Dennis Ritchie(下边简称 Ritchie)并不是一个人在奋斗、工作……他也有一个很要好的基友——Ken Thompson(下边简称 Thompson)。

 

嗯,挺有那个**相的,对吧?

他们两不仅是 C 语言的发明者,UNIX 系统之父,在 1983 年的那个冬天,他们还一起获得了图灵奖(计算机界的诺贝尔奖)……剩下的你们自己脑补 

噢,我们提到了 UNIX 系统,或许刚接触编程的鱼油可能不大了解 UNIX 系统……那么苹果帝国的个人电脑、iPhone、iPad、iPod、Apple Watch 的操作系统全是基于 UNIX 的!

起初 UNIX 是用汇编语言写的,显得很笨拙,在编制数据结构时浪费了大量的时间,而且系统难以调试,理解起来也很困难。所以哥俩做了个疯狂的决定——用 C 语言重写 UNIX 系统。 

下边说说生平:

1941年9月9日,Ritchie 出生于纽约州的勃浪克斯山庄(Bronxville),但在 9 岁时移居新泽西州的塞米特。Ritchie 的父亲是一个电气工程师,在贝尔实验室的交换系统工程实验室当主任,因此,Ritchie 一家可谓“贝尔世家”。

Ritchie 中学毕业后进哈佛大学学物理,并于 1963 年获得学士学位。其间,哈佛大学有了一台 UNIVAC I,并给学生开设有关计算机系统的课程,Ritchie 听了以后产生了很大的兴趣。毕业以后他在应用数学系攻读博士学位,完成了一个有关递归函数论方面的课题,写出了论文,但不知什么原因没有答辩,没有取得博士学位,他就离开了哈佛,他说:“我厌倦了,怎么也不能深入。这是一种计算数学,是机器都可以做的理论。” 

最终在父亲的介绍下,26 岁的丹尼斯·里奇进入贝尔实验室,从事计算机研究,一个在当时非常前沿的研究工作。同时与比他早一年到贝尔的 Thompson 会合,从此开始了他们长达数十年的基友生活。

听上去有些荒谬,C 语言的产生竟然是源于一个失败的项目。 

1969 年,通用电气、麻省理工学院和贝尔实验室联合创立了一个庞大的项目——Multics 工程(这是 Ritchie 到贝尔实验室做的第一个项目)。该项目的目的是创建一个操作系统,但显然遇到了麻烦:它不但无法交付原先所承诺的快速而便捷的在线系统,甚至连一点有用的东西都没有弄出来。

虽然开发小组最终勉强让 Multics 开动起来,但他们还是陷入了泥淖,就像 IBM 在 OS/360 上面一样。他们试图建立一个非常巨大的操作系统,能够应用于规模很小的硬件系统中。Multics 成了总结工程教训的宝库,但它同时也为 C 语言体现“小即是美”铺平了道路。说明: http://bbs.fishc.com/static/image/smiley/ARU/aru-1x-1_065.png 

当心灰意冷的贝尔实验室的专家们撤离 Multics 工程后,他们又去寻找其他任务。好基友 Thompson 此时对另一个操作系统很感兴趣,他为此好几次向贝尔管理层提议,但均遭否决。

在等待官方批准的时候,Thompson 和 Ritchie 就自己搞,用业余的时间把 Thompson 的“太空旅行”软件移植到不太常用的 PDP-7 系统上。太空旅行软件模拟太阳系的主要星体,把它们显示在图形屏幕上,并创建了一架航天飞机,它能够飞行并降落到各个行星上。与此同时,Thompson 加紧工作,为 PDP-7 编写了一个简易的新型操作系统。它比 Multics 简单得多,也轻便得多。整个系统都是用汇编语言编写的。Brian Kernighan 在 1970 年给它取名为 UNIX,自嘲地总结了从 Multics 中获得的那些不应该做的教训。说明: http://bbs.fishc.com/static/image/smiley/ARU/aru-1x-1_159.png 

 

UNIX 由许多小程序构成,每个小程序只能完成一个功能,任何复杂的操作都必须分解成一些基本步骤,再由小程序逐一完成。虽然看起来很低效,实际上这些小程序可以像七巧板一样自由组合,轻易就能完成意想不到的大任务。另一方面,UNIX 一改 Multics 操作系统的大型程序的复杂性,每个单一执行目的的小程序都是简洁高效,开发时间短,稳定性却更好。

在 1973 年的时候,Ritchie 感到用汇编语言做移植太过于头痛,他们想用高级语言来完成第三版,对于当时完全以汇编语言来开发程序的年代,他们的想法算是相当的疯狂。一开始他们想尝试用 Fortran,可是失败了。后来他们用一个叫 BCPL(Basic Combined Programming Language)的语言开发,他们整合了 BCPL 形成 B 语言,再后来 Ritchie 觉得 B 语言还是不能满足要求,就是就改良了 B 语言,称之为”New B“,也就是今天的大名鼎鼎的 C 语言。

C 语言也贯彻了大道至简的那个原则,语法简洁,结构清晰。他还自己写了本教材,就是今天大名鼎鼎的 The C Programming Language,小甲鱼推荐鱼油买来放床头,就供奉着: 

 

虽然 UNIX 最初的开发是以 Thompson 为主的,但文献资料中一提到 UNIX,都一致地说是 Ritchie 和 Thompson 共同开发的,而且在“排名”上往往是 Ritchie 在前,Thompson 在后。包括 1973 年首次向社会推介 UNIX 的论文的署名,Ritchie 也是第一作者,Thompson 则为第二作者。

其实这里有两个很重要的因素。首先,UNIX 的成功应归功于它的创新。UNIX 吸取与借鉴了 Multics 的经验,但是 UNIX 在继承中又有创新,它采用了一些新方法,比 Multics 更高明一些。正是在这些方面,Ritchie 发挥了很重要的作用,使 UNIX 独具特色。其次,UNIX 成功的一个重要因素是它的可移植性。正是 Ritchie 竭尽全力开发了 C 语言,并把 UNIX 用 C 重写了一遍,这才使它具有了这一特性。(所以啊, Ritchie 才是最佳助攻手 说明: http://bbs.fishc.com/static/image/smiley/ARU/aru-1x-2_167.png )

由于 C 和 UNIX 系统的优秀特性,很快就吸引了一大波黑客的加入(当时黑客这个词指的是极致钻研技术的宅男,相当于今年的极客吧),然后他哥俩就出名了:

 

Ritchie 和 Thompson 在成名以后,都没有走办公司、挣大钱的路,他们仍在贝尔做他们喜爱做的事,而且还一直保持着他们历来的生活习惯和作风,常常工作到深夜,在贝尔是出名的“夜猫子”。Ritchie 在接受记者采访时,就自称自己是“definitely a night person”(绝对是个也猫子)。

最后,Ritchie 1983 年接受图灵奖时已经 42 岁,但仍然单身。看吧,在座还单着的鱼油们,你们可是拥有随时撼动世界的能力!说明: http://bbs.fishc.com/static/image/smiley/ARU/aru-1x-1_117.png

提示
郴维网为您提供各类专业服务:
软件开发,电脑配件销售,WIFI路由器销售,上门电脑维修,上门安装系统,系统安装,软、硬件安装,电脑除尘清灰,显示器维修,WIFI安装调试,服务器维护,数据恢复,密码破解,网络布线,网络检修,打印机维修,打印机加碳粉,苹果电脑安装系统,苹果电脑安装双系统,监控安装维护,电脑外包,笔记本电脑维修,餐饮、美容行业软件安装 等。。。。。。
点击次数:1520 更新时间:2018/2/15 14:30:23  【打印此页

上一条:已经是第一篇了

下一条:S1E3:打印

关键词推荐:郴州电脑城 郴州电脑维修公司 维修电脑公司 郴州软件开发 上门电脑维修 上门安装系统 笔记本电脑维修 郴州打印机维修 打印机加碳粉 电脑安装双系统 苹果电脑双系统 液晶显示器维修 联想笔记本维修 联想笔记本维修电话 戴尔笔记本维修电话 郴州戴尔笔记本维修 戴尔笔记本郴州维修点 华硕笔记本维修点 郴州华硕笔记本维修 郴州笔记本上网维修