知识点1:众多编程语言,为何选择C?

  现在我们的同学喜欢java,也参加很多java的培训班,java是比较热门,但是C语言在工业界依然有重要的地位,在很多领域无可替代,几乎所有和硬件打交道的地方都得要用C语言,比如再工业界大量实用的linux操作系统,几乎都是C语言编写的。

  至于编程语言的热度,参考TIOBE编程语言排行榜http://www.tiobe.com/tiobe-index// 的三张图:

    2017年2月份最新数据,C语言第二。每个月都会有新的数据出来。

  

  2002年到现在15年时间的一个走向,可以看出各个语言的起起伏伏,占据第一二名的一直是java和C,蓝色的线是java,黑色的是C,从整个趋势看,java的上下起伏大一些,在2002年的时候占据25%(越1/4的软件使用java写的),而在2004和2015年左右java掉到15%以下,而C在2002年的时候是20%多一点点,2008年跌到15%以下,而总体来说,特别是2010年后近几年在c和java不相上下,处于一个比较稳定的状态。java的起伏主要原因是java的替代语言出现,而C之所以一直相对稳定一些,主要是因为在很多场合,C语言是唯一的选择,比如说做操作系统,嵌入式操作系统等,只能选择C,也有的时候是C++,所以C语言在企业界有大量的应用,我们没用理由不去研究下C语言到底是怎么回事~

  从上图的2016年和目前来说,我们看到C和java都有个大滑坡,使得本来占据15%以上的C下降到目前的8%左右,主要原因是近年来软件开发工作逐渐向网站和移动设备应用程序靠拢,C 语言却难以应用其中,且 C 语言也不如 Java、C++ 和C# 等语言有大幅度的进化,而其他新兴的语言比较能胜任这项任务,在上图中也看出其他语言在2016以后的份额都在增长。那么为何不去学习其他语言?

  原因之一我们不能只看一年的流行趋势,而应该看整个10多年的趋势,无论怎么起伏,C始终处于第一或者第二的位置。

  原因之二是现代的编程语言在语法上差异很小,现在很多语言都可以叫做C-like语言,就是一些基础的东西,比如变量怎么起名字,怎么定义,函数是叫做过程,叫做方法等等,基本上和C语言很接近,这和C语言在历史上的地位是有关系的,

  原因三:在我们现在说这个语言很厉害很强的时候,大多不是说这个语言本身的特点,而是面向语言写的库,这些库有针对各种应用的库,一件很难的事情你只要去调用这个语言的库或者一个类来完成,那么很大的一件事情就解决了,所以如果一种语言有你做的事情的库,那么你用它写程序就变得很容易。通常用这种语言写的软件比较多,那么这种语言的比例就上去了。

  所以我们选择C语言做我们的教学语言,因为份额比较多,另外语言之间的差异很小,当你学会了一种编程语言,对另外一种编程语言的掌握就非常快了,而C正好处于比较基础的这个层面的语言。

  下图是三种语言的例子:C,java,python,都是双引号,函数,printf等很详细,所以在学好一个语言后,再去学别的语言就会是一个非常快的事情。

听翁恺老师mooc笔记(1)--为何选择学习C的更多相关文章

  1. 听翁恺老师mooc笔记(16)--程序设计与C语言

    问题1:计算机遍布生活的各个方面,若你需要一个功能可以下载APP,我们需要的大部分功能都可以找到对应的APP,如果没有可以自己写一个软件,但是很少人需要这么做,那么我们为什么学习计算机编程语言? 学习 ...

  2. 听翁恺老师mooc笔记(15)--文件的输入与输出

    <>重定向 如果使用标准的printf输出,有一个比较简便的方法,可以将程序的结果写入一个文件.使用<和>符号,将程序运行结果重定向到文件中去,具体使用到的代码如下: ./te ...

  3. 听翁恺老师mooc笔记(14)--格式化的输入与输出

    关于C语言如何做文件和底层操作: 文件操作,从根本上说,和C语言无关.这部分的内容,是教你如何使用C语言的标准库所提供的一系列函数来操作文件,最基本的最原始的文件操作.你需要理解,我们在这部分所学习的 ...

  4. 听翁恺老师mooc笔记(13)--类型定义和联合

    typedef 虽然我们知道使用struct这个关键字定义一个结构类型,然后可以使用该结构类型定义变量.但是每次要使用的时候都需要带着struct这个关键字,那么如何摆脱这个关键字哪?C语言提供了一个 ...

  5. 听翁恺老师mooc笔记(12)--结构中的结构

    结构数组: 和C语言中的int,double一样,一旦我们做出一个结构类型,就可以定义这个结构类型的变量,也可以定义这个结构类型的数组.比如下面这个例子: struct date dates[100] ...

  6. 听翁恺老师mooc笔记(11)--结构和函数

    结构作为函数参数: 声明了一个结构就有了一种自定义的数据类型,这个数据类型和int.float.double一样,int等基本类型可以作为函数的参数,那么这种个自定义的结构类型也应该可以作为函数参数, ...

  7. 听翁恺老师mooc笔记(10)--结构

    定义结构: 在程序里,如果想要表达一个数据就需要一个变量,而每个变量又都需要一个类型,之前学过C语言中有int.double.float.char等这些基础类型,还有指针.数组等.如果你要表达的数据比 ...

  8. 听翁恺老师mooc笔记(9)--枚举

    枚举类型的定义 用符号而不是具体的数字来表示程序中的数字,这么表示的好处是可读性,当别人看你的程序,看到的是单词,很容易理解这些数字背后的含义,那么用什么符号来表示名字哪?需要const int常量的 ...

  9. 听翁恺老师mooc笔记(8)--字符串2

    字符串的赋值 字符串的输入与输出 对C语言的基础类型,比如int.double等类型,scanf.printf有专门的格式转换,而对字符串,scanf.printf使用%s格式字符进行输入与输出.当使 ...

  10. 听翁恺老师mooc笔记(7)--字符串1

    C语言中字符串的定义 如果定义一个字符数组word,并使用大括号对其初始化,如下图所示: 但是这个不是C语言的字符串,只是字符数组,不是字符串,因为不能使用字符串的方式进行计算.那么C语言的字符串长什 ...

随机推荐

  1. python爬虫--爬取某网站电影信息并写入mysql数据库

    书接上文,前文最后提到将爬取的电影信息写入数据库,以方便查看,今天就具体实现. 首先还是上代码: # -*- coding:utf-8 -*- import requests import re im ...

  2. 异常-----freemarker.core.ParseException: Unexpected end of file reached

    freemarker自定义标签 1.错误描述 freemarker.core.ParseException: Unexpected end of file reached. at freemarker ...

  3. newInstance 与new的区别

    用newInstance与new的区别? 区别在于创建对象的方式不一样,前者是使用类加载机制,后者new 的类可以没有加载: 使用newInstance时候,必须保证:1.这个类已加载,2.这个类已经 ...

  4. 【BZOJ4195】【NOI2015】程序自动分析(并查集)

    [BZOJ4195][NOI2015]程序自动分析(并查集) 题面 Description 在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足. 考虑一个约束满足问题的简化版本:假设 ...

  5. [POI2000]病毒

    题面 传送门 Sol 建出AC自动机后DFS能走的点,如果能走回来就可行 # include <bits/stdc++.h> # define IL inline # define RG ...

  6. kali使用Fluxion钓鱼WiFi

    先介绍一下这个软件 这个软件是一个可以生成一个钓鱼WiFi的软件,可以伪装成一个正常的WiFi,但是是没有密码的,但是其他信息都是一样的,一旦开启这个攻击,正常的那个AP就无法正常连接,只能连到这个伪 ...

  7. css导航条等元素位置不变

    在容器元素中插入 position: fixed; 如果是在微信小程序中,直接用bottom或者top等就可以简单的设置导航条了.

  8. Git知识总览(六) Git分支中的远程操作实践

    前几篇博客陆陆续续的讲了好多关于Git操作的内容,本篇博客仍然也不例外,不过本篇博客的主题是关于git的远程操作的.依照之前博客的风格,我们依然依托于LearningGitBranch中的相关内容来探 ...

  9. 论文笔记(6):Weakly-and Semi-Supervised Learning of a Deep Convolutional Network for Semantic Image Segmentation

    这篇文章的主要贡献点在于: 1.实验证明仅仅利用图像整体的弱标签很难训练出很好的分割模型: 2.可以利用bounding box来进行训练,并且得到了较好的结果,这样可以代替用pixel-level训 ...

  10. 空间金字塔池化(Spatial Pyramid Pooling, SPP)原理和代码实现(Pytorch)

    想直接看公式的可跳至第三节 3.公式修正 一.为什么需要SPP 首先需要知道为什么会需要SPP. 我们都知道卷积神经网络(CNN)由卷积层和全连接层组成,其中卷积层对于输入数据的大小并没有要求,唯一对 ...