C/C++培训
达内IT学院
400-996-5531
当有朋友希望我教授编程的时候,有一个问题对我很困扰。
教哪一门编程语言
我想现在大家或多或少会听说过那么几种编程语言
Ruby
Go
在Wiki上还专门有一个页面列出了几乎所有的编程语言List of Programming Language。没仔细数,感觉怎么也得有几百种。我想这也是想学习编程的初学这感到头大的事情,究竟要从哪个开始学习?
PS: 编程语言列表的网址是 #/wiki/List_of_programming_languages
对我个人而言,教大家c语言是最轻松的,因为我这么多年的工作经验就是c语言。随便挑一个点,都可以讲上很久,直到把你讲晕。然而这么做没有意义。对来听的同学,学不到真的东西。而对于我,这就是随便糊弄。
在《通往财富自由》专栏,老师对知识的定义又加了一个维度—时间。有些知识的时间作用范围比较短,而有些知识的时间作用范围比较长。我想
那些时间作用维度长到一定界限的知识就是经典。
经过多日的思考,我认为c语言确实可以算得上是经典。
历史悠久
C语言在1969年由两位贝尔实验室的科学家创造。仅从年头上来看,也就四十年。但是要知道第一台电子计算机是1946年才发明的,而第一台晶体管计算机诞生于1954年。所以c语言的历史,几乎就是整个计算机发展史。
别看c语言是编程界的老大爷,他老人家身体还硬朗着呢。
这是2017年,全球编程语言的排名。大家可以看到c语言排名第二,活跃程度依然很高。然而与c语言同期的其他很多语言,几乎已经看不到他们的身影了。
看完了这张图,我突然想插入一个观点。
c语言并不难学
现在有不少不推荐入门者学习c语言的原因是觉得c语言的语法太复杂,对初学者来说不容易理解。然而这个排名却恰恰显示了这个观点是不正确的。如果这个语言的语法真的非常难学,那么应该会有更多的项目会采用更好的语言来实现。也就不会有c语言依然保持这么高排名的情况了。比如说大家几乎已经不记得的COBOL。
子孙众多
另一个可以说明c语言是经典的就是由c语言实现或者和c语言相关的语言达到了60多种。
C语言世家 网址为: #/wiki/List_of_programming_languages
这个网站上列出了这些相关的语言,其中包括了大家耳熟能详的
Java
Go
这么庞大的c语言家族正说明了c语言本身的优势。
或是运行快速
或是代码精简
或是结构简练
如果我们从生物学的角度来看,凡是后代众多的都是因为其基因强大。而c语言这么多的后代,也证明了其语言自身强大的生命力。
其中我最想强调的不是运行快速,而是结构简单。当大家去看c语言代码的时候,如果和其它语言进行比较你会觉得c语言代码简直有种“裸”的感觉。
从一个层面上讲,“裸”带来的是“慢”。正如大家知道的,用Ruby搭一个网站可能只要几分钟。但用c语言,那么。。。
但是从另一个层面讲,“裸”带来的是“活”。就好像降龙十八掌,虽然只有十八掌,但是只要内功深厚能破一切。就好像我们所说的“元认知”,虽然简单,却可以用来认知万物。就好像《道德经》中的道,能够“道生一,一生二,二生三,三生万物”。
承上启下
假入我们把编程语言的发展看做是物种的演化,那么粗略的可以把编程语言分成这么几类
机器语言
汇编语言
高级语言
机器语言基本就不是人能看的,一般能看得懂机器语言的我都称之为神。汇编语言也很难懂,除非特别熟悉计算机体系结构的。而高级语言则是我们大家通常能够见到的。比如Java, Ruby, Python这些都是高级语言。
而c语言是最接近机器的高级语言
绝大部分高级语言中出现的语法,在c语言中都有呈现。
判断
分支
循环
这几个套路在各种高级语言中都是一样一样的。从底层逻辑来讲,学好了c语言,其余的高级语言也就学会了。
而c语言还有这其他语言没有的特点—接近机器。
很多人认为这是c语言的缺点,暴露了机器的运行情况对大部分用户来说是不关心的。但是我在使用过程中却并这么认为。
了解了底层机制,你能更好理解语言的运行,发挥语言的效能
通过c语言的代码,你可以完全确认代码执行的行为。但是对于其他的高级语言,你可能必须要查阅手册,甚至是做实验你才能知道函数的行为。这点其实非常让人头疼。在这我就不举例子了,因为大部分读者应该很难理解。
那我说另一个点,为什么理解机器运行是有益的,尤其对初学者来说。最近在看python的代码,发现python中仍然对数据类型需要区分定义。比如fload64, float是区分的,但是不理解原理的就不清楚这是在说什么。
这么讲大家估计还是不懂,那我做一个类比。
就好像食堂师傅炒菜和家里炒菜,使用的锅应该是不一样的。食堂里用的应该会大一些,家里用的会小一些。食堂用小锅,那估计大厨要累死,吃饭的要饿死。家里用大锅,连放哪都不知道。而float64和float之间的关系就类似于这个食堂大锅和家里小锅的关系。
如果你知道了原理,这个概念就非常好理解。而c语言的概念中就包含了这些原理性的东西,让你在一次学习之后就能举一反三,知道这一类问题在其他语言中的处理。
这种原理性的东西和举一反三的能力,我认为就是经典。
填写下面表单即可预约申请免费试听!怕钱不够?可就业挣钱后再付学费! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!
Copyright © 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有
Tedu.cn All Rights Reserved