C语言是什么样的语言?
对于大部分程序员,C语言是学习编程的第一门语言,很少有不了解C的程序员。
C语言除了能让你了解编程的相关概念,带你走进编程的大门,还能让你明白程序的运行原理,比如:
这些底层知识决定了你的发展高度,也决定了你的职业生涯。如果你希望成为出类拔萃的人才,而不仅仅是码农,这么这些知识就是不可逾越的。也只有学习C语言,才能更好地了解它们。有了足够的基础,以后学习其他语言,会触类旁通,很快上手,7 天了解一门新语言不是神话。
C语言发布于 1972 年,今天已经 50 多岁了,是一个不折不扣的“大叔/大爷”。
但是呢,现在的C语言依然非常流行,每一个科班出身的程序员都必学C语言。在世界编程语言排行榜中,C语言常年霸占着前 3 名的位置,这两年有时候会跌到第 4 名。
到了 1973 年,Unix 的大部分功能都被C语言重写(重构),大大增强了 Unix 在不同硬件平台的可移植性,这标志着 Unix 的初步成熟,也标志着C语言的初步成熟(因为C语言可以用于大型项目开发了)。
你看,C语言只是开发 Unix 过程中的一个副产品!Unix 是伟大的,它的副产品C语言也跟着伟大起来了。
类似的例子还有 Linux 和 Git。
Linux 是一个免费开源的操作系统,由许多大佬共同维护和开发。Linux 的原始作者叫 Linus Torvalds(林纳斯·托瓦兹),为了管理大家的代码,刚开始他使用一款叫做 BitKeeper 的版本控制工具,但是到 2005 年,BitKeeper 作者想让 Linus Torvalds 付费,Linus Torvalds 觉得有违开源精神,于是果断拒绝了。
紧接着,Linus Torvalds 就自己写了一个更好的版本控制工具,叫做 Git。到了 2005 年 7 月,Linux 正式开始使用 Git 管理大家的代码。
Git 是 Linux 的副产品,它随着 Linux 的伟大而变得知名。现在,Git 已经超越 SVN,变成了最流行的版本控制工具,大部分开发团队都在使用。作为程序员,我们也必须要学习 Git 的使用。
咳咳,你看看这些大佬程序员,如果发现没有合适的轮子,就自己造轮子!而C语言,就是 Unix 开发过程中用到的一个轮子。
关于C语言的后续发展,请转到:C语言的四套标准:C89、C99、C11和C17
编程语言的发展大概经历了以下几个阶段:
初学者往往都不了解硬件,从汇编起步是一个艰难的过程,所以不推荐这样做。而 Java、C++、Python、C#、JavaScript 又太高级太复杂,涉及到诸多概念和思想,学习起来有点重,可能会消化不了,所以我推荐从C语言开始学习编程。
通过阅读本教程,一两个月就可以做出小型项目,比如学生信息管理系统、贪吃蛇小游戏等。
最后要记住,学习C语言有两个重要目标:
C语言除了能让你了解编程的相关概念,带你走进编程的大门,还能让你明白程序的运行原理,比如:
- 计算机的各个部件是如何交互的;
- 程序在内存中是一种怎样的状态;
- 一个程序究竟是如何执行的;
- 操作系统和应用程序之间有着怎样的爱恨情仇。
这些底层知识决定了你的发展高度,也决定了你的职业生涯。如果你希望成为出类拔萃的人才,而不仅仅是码农,这么这些知识就是不可逾越的。也只有学习C语言,才能更好地了解它们。有了足够的基础,以后学习其他语言,会触类旁通,很快上手,7 天了解一门新语言不是神话。
具体来说,这些知识包括:计算机组成原理 + 计算机网络 + 操作系统 + 数据结构 + 算法 + 编译原理,它们是所有大厂程序员都要了解/掌握的,你可以转到《高薪/大厂程序员要学习哪些东西》了解更多细节。
C语言概念少,词汇少,只包含了基本的编程元素,所以它相对比较简单。对初学者来说,学习C语言的成本小,时间短,结合本教程,可以快速掌握基本的编程技能。C语言发布于 1972 年,今天已经 50 多岁了,是一个不折不扣的“大叔/大爷”。
但是呢,现在的C语言依然非常流行,每一个科班出身的程序员都必学C语言。在世界编程语言排行榜中,C语言常年霸占着前 3 名的位置,这两年有时候会跌到第 4 名。
你可以转到 TIOBE 查看所有编程语言的历史排名和市场份额。
C语言的诞生
在计算机的发展历史中,有一个非常重要的操作系统,叫做 Unix。Unix 是现代操作系统的开山鼻祖,很多著名操作系统都受到 Unix 的影响,比如 Linux 和 macOS:- Linux 是模仿 Unix 开发出来的,也就是山寨;
- macOS 是在某个版本的 Unix 的基础上演化而来的,也就是二次开发。
更多关于 UNIX 及其子孙后代的故事,我给出了一张高清大图,请猛击这里获取。
Unix 的第一个版本在 1969 年发布,并使用B语言编写。但是B语言有很多缺陷,开发起来非常不顺手,所以 Dennis Ritchie 对它进行了一系列重大改进,并于 1972 年完成。为了突出它和B语言的区别,Dennis Ritchie 又给它起了一个新的名字,叫做C语言。Dennis Ritchie(丹尼斯·里奇)是 Unix 作者之一,也是C语言发明者,于 2011-10-13 去世,享年 70 岁。你可以猛击这里查看丹尼斯·里奇的照片。
C语言的初衷非常简单,就是被设计成一种非常高效的、可以操作硬件的系统级编程语言,然后帮助团队开发 Unix 操作系统。到了 1973 年,Unix 的大部分功能都被C语言重写(重构),大大增强了 Unix 在不同硬件平台的可移植性,这标志着 Unix 的初步成熟,也标志着C语言的初步成熟(因为C语言可以用于大型项目开发了)。
你看,C语言只是开发 Unix 过程中的一个副产品!Unix 是伟大的,它的副产品C语言也跟着伟大起来了。
类似的例子还有 Linux 和 Git。
Linux 是一个免费开源的操作系统,由许多大佬共同维护和开发。Linux 的原始作者叫 Linus Torvalds(林纳斯·托瓦兹),为了管理大家的代码,刚开始他使用一款叫做 BitKeeper 的版本控制工具,但是到 2005 年,BitKeeper 作者想让 Linus Torvalds 付费,Linus Torvalds 觉得有违开源精神,于是果断拒绝了。
紧接着,Linus Torvalds 就自己写了一个更好的版本控制工具,叫做 Git。到了 2005 年 7 月,Linux 正式开始使用 Git 管理大家的代码。
Git 是 Linux 的副产品,它随着 Linux 的伟大而变得知名。现在,Git 已经超越 SVN,变成了最流行的版本控制工具,大部分开发团队都在使用。作为程序员,我们也必须要学习 Git 的使用。
咳咳,你看看这些大佬程序员,如果发现没有合适的轮子,就自己造轮子!而C语言,就是 Unix 开发过程中用到的一个轮子。
关于C语言的后续发展,请转到:C语言的四套标准:C89、C99、C11和C17
C语言难学吗?
和 Java、C++、Python、C#、JavaScript 等更加高级和复杂编程语言相比,C语言涉及到的编程概念少,附带的标准库小,所以整体比较简洁,容易学习,非常适合初学者入门。编程语言的发展大概经历了以下几个阶段:
汇编语言 --> 面向过程编程 --> 面向对象编程和泛型编程
- 汇编语言是低级语言,诞生于编程语言的拓荒年代,主要是面向机器,而不是面向开发者,所以抽象程度不高。汇编非常底层,直接和计算机硬件打交道,开发起来异常繁琐,令人吐血。
- C语言是面向过程的编程语言,已经脱离了计算机硬件,写出来的代码非常容易看懂,更加接近“人类语言”,而不是“机器语言”,所以我们把C语言定义为高级语言。
- Java、C++、Python、C#、JavaScript 是比C语言还高级的语言,它们在面向过程的基础上又增加了很多概念,包括面向对象编程、泛型编程、函数式编程等。
初学者往往都不了解硬件,从汇编起步是一个艰难的过程,所以不推荐这样做。而 Java、C++、Python、C#、JavaScript 又太高级太复杂,涉及到诸多概念和思想,学习起来有点重,可能会消化不了,所以我推荐从C语言开始学习编程。
通过阅读本教程,一两个月就可以做出小型项目,比如学生信息管理系统、贪吃蛇小游戏等。
最后要记住,学习C语言有两个重要目标:
- 一个是掌握常用的编程技能,能够写出简单的代码,比如上面提到的小型项目;
- 一个是了解软件开发的基础和原理,修炼好内功,这一点将在《程序员必须要学习C语言吗》和《高薪/大厂程序员要学习哪些东西》中详细介绍。