C语言编程二三事

作者:xeonds | 2021.06.14 01:35:10

title: C语言编程二三事
author: xeonds
tags:

  • C语言
  • 计算机

categories: []

date: 2020-12-17 00:22:00

作为计算机界长久不衰的编程语言,C语言到底有什么独到的优势呢? 如果想学习,那么学习路线是什么呢? 学会了之后,能写出些什么程序呢? 这些,就是本文想要告诉你的。
<!--more-->

C语言的起源

1972年,贝尔实验室的丹尼斯·里奇(Dannis Ritch)和肯·汤普逊(Ken Thomson)在开发UNIX操作系统时设计了C语言。然而,C语言并不完全是里奇突发奇想而来,他是在B语言(汤普逊发明)的基础上进行设计。C语言的设计初衷是将其作为程序员使用的一种编程工具,因此,其主要目标是成为有用的语言。

各个编程语言的侧重点都不完全相同。例如,Pascal语言的主要目标是为更好地学习编程原理提供扎实的基础;而BASIC的主要目标是开发出类似英文的语言,让不熟悉计算机的学生轻松学习编程。这些目标固然很重要,但是随着计算机的迅猛发展,他们已经不再是主流语言。然而,最初为程序员设计开发的C语言,现在已成为首选的编程语言之一。

为什么是C语言

在过去的50多年里,C语言已经成长为最重要、最流行的编程语言之一。它的成长归功于用过它的人都对它很满意。虽然现在很多人都转而使用其他编程语言,但是C语言仍凭借自身实力从众多编程语言中脱颖而出。尤其是在一些特殊场合(如嵌入式开发,操作系统底层的编写等)C语言更是有着无可替代的地位。以下列出了C语言较为突出的几点优势。

高效性

在设计上,C语言充分利用了当前计算机的优势,因此C程序相对更紧凑,而且运行速度很快。实际上,C语言具有通常是汇编语言才具有的微调控制能力,可以根据具体情况微调程序以获得最大运行速度或最有效地使用内存(顺便一提,绝大多数情况下,C++都可以看作C的超集,而C的运行速度通常要快于C++)。

可移植性

C是可移植的语言。对于一个编程语言来讲,移植可能是最麻烦的事情。C语言是可移植方面的佼佼者。从你的电子表到超级计算机,许多计算机的体系结构都可以使用C编译器(一种把C语言转换成计算机内部指令的程序)。但是要注意,程序中针对特殊硬件设备或操作系统特殊功能编写的部分,通常是不可移植的。

强大而灵活

C语言功能强大而灵活。例如,大家最为所熟知的Windows7操作系统,其内核的绝大部分都是由C语言完成的,剩下的则是由汇编语言完成的。不仅如此,其他语言的许多编译器和解释器都是用C语言编写的。C程序可以用于解决物理学和工程学的问题,甚至可用于制作电影的动画特效。

面向程序员

程序员利用C可以访问硬件、操控内存中的位。C语言有丰富的运算符,能让程序员简洁地表达自己的意图。C没有Pascal严谨,但是却比C++的限制多。这样的灵活性既是优点也是缺点。优点是,许多任务用C来处理都非常简洁(如,转换数据的格式);缺点是,你可能会犯一些莫名其妙的错误,这些错误不可能在其他语言中出现。C语言在提供更多自由的同时,也让使用者承担了更大的责任。

另外,大多数C实现都有一个大型的库,包含众多有用的C函数。这些函数用于处理程序员经常需要解决的问题。

缺点

当然,人无完人,金无足赤。C语言也有一些缺点。例如前面提到的,要享受用C语言自由编程的乐趣,就必须承担更多的责任。特别是,C语言使用指针,而涉及指针的编程错误往往难以察觉。有句话说得好:想拥有自由就必须时刻保持警惕。

关于C语言,还有一项比赛,是只为C语言举办过的:年度混乱代码大赛。这正是因为C语言紧凑简洁,结合了大量的运算符,以至于我们也可以编写出让人极其费解的代码。虽然没必要但是试试也无妨。

瑕不掩瑜,C语言的优点比缺点多得多。

如何学习

编程语言的学习,其实和语言(比如英语,汉语)的学习是类似的。因此,大家不要有畏难心理。但后者比前者快得多(毕竟前者在“语法”和“词汇”上比后者少得多)。我的建议是:阅读C语言的教材,并且多加练习和思考,不会的问题多百度(这尤其重要,当然如果你能用谷歌更好)。当然,也可以通过这套教程快速掌握一部分基础知识(如果我不咕咕咕的话)。另外,网易云课堂和中国大学MOOC也是非常值得推荐的学习平台。

C语言能干什么?

除了不能生孩子什么都能干。当然,难度是不一样的。比如,如果你想让电脑显示一些文字的话,最多也只需要7行;如果想自己制作一些游戏的话(什么2048啊,俄罗斯方块啊,贪吃蛇啊),要写的可就不止那么几行了(大触请绕行)。我曾经自己动手写过一个俄罗斯方块,大概1000多行代码(现在想想还能精简掉好多)。我甚至还用C语言解决过一个WER工程挑战赛任务(虽然最后那个任务突然被取消了......),算上图形界面,大概3、400行代码。所以,C语言能干什么,完全取决于你的学习深度。可以说,学得越深,能干的事就越多。

毕竟,很多领域和C语言都是紧密相连的。比如单片机,比如操作系统开发,比如嵌入式开发(就像电脑显示器,微波炉等),比如计算机病毒(这个嘛......前面也说到了,C语言是最接近系统底层的编程语言)。在这些领域都能或多或少看到C语言的影子。

总而言之,C语言是非常重要的编程语言。掌握了它,你就获得了一件屠龙宝刀。因此,加油学吧!反正现在不学大学也得学

愿你能用C语言写出你心中最美的天地。


评论