听翁恺老师mooc笔记(1)--为何选择学习C
知识点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的更多相关文章
- 听翁恺老师mooc笔记(16)--程序设计与C语言
问题1:计算机遍布生活的各个方面,若你需要一个功能可以下载APP,我们需要的大部分功能都可以找到对应的APP,如果没有可以自己写一个软件,但是很少人需要这么做,那么我们为什么学习计算机编程语言? 学习 ...
- 听翁恺老师mooc笔记(15)--文件的输入与输出
<>重定向 如果使用标准的printf输出,有一个比较简便的方法,可以将程序的结果写入一个文件.使用<和>符号,将程序运行结果重定向到文件中去,具体使用到的代码如下: ./te ...
- 听翁恺老师mooc笔记(14)--格式化的输入与输出
关于C语言如何做文件和底层操作: 文件操作,从根本上说,和C语言无关.这部分的内容,是教你如何使用C语言的标准库所提供的一系列函数来操作文件,最基本的最原始的文件操作.你需要理解,我们在这部分所学习的 ...
- 听翁恺老师mooc笔记(13)--类型定义和联合
typedef 虽然我们知道使用struct这个关键字定义一个结构类型,然后可以使用该结构类型定义变量.但是每次要使用的时候都需要带着struct这个关键字,那么如何摆脱这个关键字哪?C语言提供了一个 ...
- 听翁恺老师mooc笔记(12)--结构中的结构
结构数组: 和C语言中的int,double一样,一旦我们做出一个结构类型,就可以定义这个结构类型的变量,也可以定义这个结构类型的数组.比如下面这个例子: struct date dates[100] ...
- 听翁恺老师mooc笔记(11)--结构和函数
结构作为函数参数: 声明了一个结构就有了一种自定义的数据类型,这个数据类型和int.float.double一样,int等基本类型可以作为函数的参数,那么这种个自定义的结构类型也应该可以作为函数参数, ...
- 听翁恺老师mooc笔记(10)--结构
定义结构: 在程序里,如果想要表达一个数据就需要一个变量,而每个变量又都需要一个类型,之前学过C语言中有int.double.float.char等这些基础类型,还有指针.数组等.如果你要表达的数据比 ...
- 听翁恺老师mooc笔记(9)--枚举
枚举类型的定义 用符号而不是具体的数字来表示程序中的数字,这么表示的好处是可读性,当别人看你的程序,看到的是单词,很容易理解这些数字背后的含义,那么用什么符号来表示名字哪?需要const int常量的 ...
- 听翁恺老师mooc笔记(8)--字符串2
字符串的赋值 字符串的输入与输出 对C语言的基础类型,比如int.double等类型,scanf.printf有专门的格式转换,而对字符串,scanf.printf使用%s格式字符进行输入与输出.当使 ...
- 听翁恺老师mooc笔记(7)--字符串1
C语言中字符串的定义 如果定义一个字符数组word,并使用大括号对其初始化,如下图所示: 但是这个不是C语言的字符串,只是字符数组,不是字符串,因为不能使用字符串的方式进行计算.那么C语言的字符串长什 ...
随机推荐
- 自用公共js文件
// 加载配置文件var instance = axios.create({ baseURL: 'http://zy-shop.tincent.me/Wechat/', headers: { 'Con ...
- jquery绑定onkeyup()事件3中方法
$('input').keyup(function () { ... }); $('input').bind('keyup', function () { ... }); $('input').liv ...
- Eclipse远程debug服务器
一,找端口号 二,Eclipse配置 三,测试是否成功 四,结束远程debug
- Mac上使用虚拟机搭建Hadoop集群
一. mini安装一台centos到虚拟机上 安装过程参考这篇博客http://www.linuxdown.net/install/setup/2015/0906/4053.html 二. 修改网络配 ...
- 【CJOJ P2110】YL杯超级篮球赛
[CJOJ P2110]YL杯超级篮球赛 Description 一年一度的高一YL杯超级篮球赛开赛了.当然,所谓超级的意思是参赛人数可能多于5人.小三对这场篮球赛非常感兴趣,所以一场都没有落下.每天 ...
- 【POJ3461】Oulipo
题面 The French author Georges Perec (1936–1982) once wrote a book, La disparition, without the letter ...
- 微信公众号接口配置验证URL
/** * 审核填写的URL */ public function checkUrl(){ //获得参数 signature nonce token timestamp echostr $nonce ...
- error:安装手电筒程序后在打开程序后报错:你的camera flashlight正在被其他程序占据
Q:没打开权限 A:设置里面,把这个app的camera权限打开就行了
- 【Demo Project】AjaxSubmit+Servlet表单文件上传和下载
一.背景 前段时间公司要求我做一个上传和下载固件的页面,以备硬件产品在线升级,现在我把这部分功能抽取出来作为一个Demo Project给大家分享. 话不多说,先看项目演示 --> 演示 源码 ...
- 使用IIS Server Farms搭建应用服务负载均衡
当公司的业务扩大, 伴随着大量的请求,应用服务器的承受能力已经不能满足不断增长的业务需求,使用IIS Server Farms搭建应负载均衡的方式,把请求分发给不同的应用服务器进行处理,这个时候就降低 ...