一起学习C语言:C语言发展历程以及定制学习计划

如何才能学好一门语言? 这个问题始终伴随着不同的答案。

从本篇开始,作者定期发布<一起学习C语言>系列文章,本系列文章指引着您翱翔C语言世界,在这浩瀚的知识海洋里,您将会感受到学好一门语言应具备哪些条件。

前言

初接触编程那会儿,编程世界充满了神秘感觉,对于我来说是那么的遥不可及。也许您会问,为什么这么说呢?由我慢慢道来…
学生时期,我比较痴迷于游戏,导致各项成绩都不太好,痴迷到什么程度呢?就拿“xx西游xx”来说,有时候为了完成本周所有副本可以晚上不睡觉,为了带上喜爱的神兽,连续2个月带小号挣钱(大概在暑假时期…)…
虽然玩游戏既浪费时间,又浪费精力,但是那时候取得成绩数不胜数,几乎每款游戏都接近职业玩家的水平。基于那时候酷爱计算机的原因,大学也是选择的计算机专业,就这样玩物丧志的生活一直到接近工作前5个月,我的父母比较担心我的未来发展(现在想起来也比较愧疚~),特意让我哥做我的思想工作,大致就是让我重新学习编程把重心转移到学习及工作上…
我正式学习的第一门语言是C语言,当时花了3天时间完成了入门(了解基本语法使用)学习,也许是那时候态度比较坚定得到我哥的认可(也是在那时候建立的自信),从此在编程的道路上渐行渐远。
对于我来说,学好编程必要条件有以下三点:
1. 相信自己:
找到适合自己的方向一直走下去,不要回头。
2. 学会领悟:
学习是一段繁琐并枯燥的过程,默默忍受这段过程所带来的压力并领悟出自己的学习(记忆)方式。
3. 循环渐进:
每当学习新的知识点时,结合以往所学知识可以更快融入新的知识领域,并拥有自己的学习思想。

每当学习新知识时,迷茫属于不可缺失的一部分,如何把迷茫转化为动力这个应该也是需要百分之九十九的努力加百分之一的天赋,当然天赋也是通过后天努力所积累的。

正文

1. 了解C语言

“世间没有一种具有真正价值的东西,可以不经过艰苦辛勤劳动而能够得到的。” ——爱迪生

每个人对“学习”有着不同的看法,有人说学习是简单的,也有人说学习是复杂、痛苦的,在作者看来“学习”是一种过程,痛苦伴随着快乐,它分为三个阶段:了解、认知和运用。本章节作者与大家一起了解C语言的发展历程,为我们接下来的学习提供一个庞大的想象空间。

1.1 C语言发展历程

正式接触C语言之前,我们先来了解一下C语言的发展历程:
1972年贝尔实验室的Dennis M.Ritchie在B语言的基础上进行改良,最终以C命名这个新诞生的语言。
C语言的设计初衷是为了重复利用及可移植性,在C语言之前,项目的移植是困难、昂贵的(技术方面),早期的程序员在做着一些重复的工作,C语言的问世改变了这种局面。
C语言初期,没有统一的标准,各大厂商编写的编译器独具一格,编写方式也没有明文规范,从移植性来讲,这点是不可取的。
1978年,Bran W.Kernighan和Dennis M.Ritchie编写的 The C Programming Language正式出版,这本书成为第一个非正式的C语言标准参照。
1983年,美国国家标准协会(ANSI)成立了一个委员会X3J11,根据C语言问世以来的各种版本的发展与扩充,制定了第一个C语言标准草案(’83 ANSI C)。
1989年,美国国家标准协会(ANSI)公布了一个完整的标准 ANSI X3.159-1989,简称为C89标准,也可以称为ANSI C。
1990年,国际标准化组织(ISO)认证C89作为国际标准ISO/IEC 9899:1990,简称为C90标准。
1995年,国际标准化组织(ISO)对C90进行修订,名为ISO/IEC 9899:1990/Amd 1:1995,简称C95标准。
1999年,国际标准化组织(ISO)在C95的基础上进行修订,增加了一些功能,名为ISO/IEC 9899:1999,简称为C99标准。
2011年,国际标准化组织(ISO)在C99的基础上再次进行修订,新的标准提高对C++的兼容性,并增加一些新特征,简称为C11标准。

1.2 C语言拥有特性

“知彼知己者,百战不殆”。 ——《孙子·谋攻》。

1.2.1 高效性

C语言既有接近汇编语言的执行效率,又具有高级语言的易用性。在设计上,语法清晰易懂并充分利用了当前计算机在执行能力上的优点。经过多年发展,C语言的应用场景也变得非常广泛,从操作系统到上层应用程序皆可使用。

1.2.2 移植性

目前主流C、C++编译器或多或少支持着GNU相关许可(GNU全称GNU is Not Unix),当我们使用C标准库编写的程序移植到别的系统时,基本不会出现不兼容问题。当然,也需要对系统平台相关引用定义做一些修改。

1.3 C语言适用场景

C语言的用途非常广泛,用一句话形容就是“上天入地,无所不能”。C语言的黄金时期是在二十世纪八十年代左右,UNIX系统用C语言进行了重写,从那时开始,C语言成为系统开发首选语言。
C语言在嵌入式、数据库、服务器、单片机、编译器等都取得了巨大成功,使用C语言编写这些程序可以极大程度缩小程序体积。

1.4 为自己定制学习目标

学习知识的过程是枯燥乏味的,编程也是如此。作者本人学习编程的时候,情绪比较复杂,可以说是兴趣伴随着迷茫。
兴趣:计算机太神奇啦!可以做到人类无法做到的事情,如果学好编程也许可以像那些大神一样,在计算机界叱咤风云,无所不能。
迷茫:编程对于我来说太陌生,我是否能学会其中的知识,是否可以坚持下来,学会之后是否可以找到工作?
大多数初学者或多或少会有这些情绪波动,对于不了解的领域,我们非常谨慎,这是人之常情。
作者作为一位过来者,或多或少经过一些坎坷,每到情绪低沉时期便向身边的亲戚朋友请教:从事编程工作的朋友给予的答案大部分是再坚持一下,再试试看。而从事另外行业工作的朋友偶尔支持学习,大部分是一起迷茫……(作者和朋友一脸懵逼的情况)。
作者现在看待编程的感觉:入门比较容易,想要到达中级或更高级别需要的是耐心。工作后一星期保持3天或以上时间每天抽出一到两个小时查看资料或源码,一个月就可以感受到明显变化,比如思维上的提升,遇到问题查找资料更快捷等。
在这里作者提供自己的学习定制计划供大家参考:
入门期:顺序学习每一章知识,遇到不理解的问题应温习前一章内容并分析当前困境,三思而后行可以帮助我们更快走出困境进入新的知识点。
编程初期:认真编写每一个示例并学会记录笔记,知识一般按照循环渐进方式逐步增加难度,每当忘记学过的知识时可以通过查看笔记更快进入新的知识点。
编程中期:拥有基本编程技术与思想为前提。首先学会寻找新的知识点,分析经典示例中的设计风格以及设计背景(比如在什么情况下设计这个程序),每当有新的领悟时,可以采用博客的方式编写属于自己的程序或示例,国内的博客平台有很多,其中CSDN就是作者常用的一个写作平台。
编程后期(高手):记录生活中的研发技术知识点,编写大型项目中的核心模块,日常有博客发布。
学习编程过程中,或多或少都会遇到困境,坚持初心才能在这条道路上越走越远。

1.5 学会解决问题

在上小节中,我们了解到学习编程的基本方法,遇到复杂问题的时候,仅仅了解学习方法还是有些相形见绌。
遇到问题时,我们至少有四种解决方案:

  1. 请教编程高手或老师
    通常情况下,编程经验比我们丰富的人统称为高手。首先,他们拥有更广阔的编程思想领域,即使有些复杂问题他们没有接触过,但也能提供基本解决思路。另外,他们认为思路走不通的情况下,可以提供别的实现方式。

  2. 网络搜索资料
    在一些特定情况下,比如难以启齿或身边没有更深资的编程人员(偏向中高级编程人员),网络搜索资料或许是个不错的选择。
    网络搜索资料分为以下几种:
    2.1 官方资料
    遇到问题时,查找官方资料是比较直接的一种方式,但要求基础稍高,不适合入门或初级编程人员。
    2.2 门户网站搜索
    国内的门户网站主要有百度、新浪、腾讯、网易、搜狐等,推荐使用百度。
    国外的门户网站主要有谷歌(Google)、雅虎(Yahoo)等,推荐使用谷歌,但需要翻墙工具。
    2.3 托管平台
    全球开源项目用的比较多的是Github,在Github上主要用来访问这些开源项目,可以参考、下载源码或者参考它们项目中的文档,一般用于偏向于高级编程人员。

  3. 阅读书籍
    如果遇到的问题多而复杂,并需要了解其中的原理,阅读相关书籍可以提升全方面的理解,当然阅读书籍也是最耗时的一种方式。

  4. 发帖求助
    在CSDN论坛中心,可以看到大量的求助文贴,注册账号后,我们也可以使用这个功能。

发布了87 篇原创文章 · 获赞 195 · 访问量 17万+

猜你喜欢

转载自blog.csdn.net/a29562268/article/details/103666071