c 是哪一代编程语言,c是经典编程语言
当有朋友希望我教授编程的时候,有一个问题对我很困扰。
教哪一门编程语言
我想现在大家或多或少会听说过那么几种编程语言
Java
Ruby
Go
在Wiki上还专门有一个页面列出了几乎所有的编程语言List of Programming Language。没仔细数,感觉怎么也得有几百种。我想这也是想学习编程的初学这感到头大的事情,究竟要从哪个开始学习?
对我个人而言,教大家c语言是最轻松的,因为我这么多年的工作经验就是c语言。随便挑一个点,都可以讲上很久,直到把你讲晕。然而这么做没有意义。对来听的同学,学不到真的东西。而对于我,这就是随便糊弄。
在《通往财富自由》专栏,老师对知识的定义又加了一个维度--时间。有些知识的时间作用范围比较短,而有些知识的时间作用范围比较长。我想
那些时间作用维度长到一定界限的知识就是经典。
经过多日的思考,我认为c语言确实可以算得上是经典。
历史悠久
C语言在1969年由两位贝尔实验室的科学家创造。仅从年头上来看,也就四十年。但是要知道第一台电子计算机是1946年才发明的,而第一台晶体管计算机诞生于1954年。所以c语言的历史,几乎就是整个计算机发展史。
别看c语言是编程界的老大爷,他老人家身体还硬朗着呢。
编程语言排名
这是2017年,全球编程语言的排名。大家可以看到c语言排名第二,活跃程度依然很高。然而与c语言同期的其他很多语言,几乎已经看不到他们的身影了。
看完了这张图,我突然想插入一个观点。
c语言并不难学
现在有不少不推荐入门者学习c语言的原因是觉得c语言的语法太复杂,对初学者来说不容易理解。然而这个排名却恰恰显示了这个观点是不正确的。如果这个语言的语法真的非常难学,那么应该会有更多的项目会采用更好的语言来实现。也就不会有c语言依然保持这么高排名的情况了。比如说大家几乎已经不记得的COBOL。
子孙众多
另一个可以说明c语言是经典的就是由c语言实现或者和c语言相关的语言达到了60多种。
这个网站上列出了这些相关的语言,其中包括了大家耳熟能详的
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语言的概念中就包含了这些原理性的东西,让你在一次学习之后就能举一反三,知道这一类问题在其他语言中的处理。
这种原理性的东西和举一反三的能力,我认为就是经典。
写在最后
王强老师说过“读一流书,做一流人”,所以学习就要学经典。
经过了几日的思考,我终于确认在编程语言界,c语言是我能见到的经典语言。大家通过对c语言的学习,不仅能掌握绝大部分高级语言必须的知识,更能够通过c语言了解计算机体系相关的知识点,做到融会贯通,举一反三。那么此时我再推荐大家学习就问心无愧了。
PS:不知道王强老师的请关注微信公众号《杨小伟的世界》,查阅文章《学编程,究竟学的是什么》。
c 是哪一代编程语言,c是经典编程语言相关推荐
- 函数式编程语言python-函数式编程语言
最近一段时间总是听到或者看到有人谈论"函数式编程",第一次接触是在大概半年前的一次沙龙中,当时听人讲的时候,心想这有什么难理解的,函数式编程,函数嘛,那就是C呀,C++放在首位的是 ...
- python编程语言能干什么-python编程语言的优势与劣势--python能干啥
首先先发表小编的观点吧嘿嘿:python并不适合作为第一编程语言,但是第二编程语言的首选 (哥哥们先别喷我,且听我慢慢说来~~~) 先解释一下啥是第一第二编程语言吧: 通常从事开发的程序员都会学不止一 ...
- Java 答疑:编译器和解释器有何区别?Java 语言属于编译型编程语言还是解释型编程语言?
文章目录 前言 一.Java 与 Java 字节码 二.什么是编译器(Compiler) 三.什么是解释器(Interpreter) 四.编译器与解释器有何区别? 五.Java 语言属于哪种语言? 总 ...
- PHP跌出前十,Python依然霸占榜首,C#有望摘得年度编程语言 TIOBE 12 月编程语言排行榜
整理:丁广辉 出品:CSDN 日前,全球知名 TIOBE 编程语言社区发布了 12 月编程语言排行榜.下面让我们一起来看看,本月榜单中有哪些值得注意的新变化吧. PHP跌出前十,C#可能成为2021T ...
- 「干货」编程语言十大经典算法,你知道几个?
算法与数据结构是计算机学习路上的内功心法,也是学好编程语言的重要基础.今天给大家介绍一下十大经典算法. 十大经典算法分别是:冒泡排序,插入排序,选择排序,希尔排序,快速排序,归并排序,桶排序,堆排序, ...
- C/C++只做经典编程语言
1.从C到C++ 计算机诞生初期,用机器语言或汇编语言编写程序; 第一种高级语言FORTRAN诞生于1954年; BASIC语言(1964)是由FORTRAN语言的简化而成的是为初学者设计的小型高级语 ...
- 计算机编程语言历史_早期编程语言的历史
计算机编程语言历史 From Babbage to Babel and Beyond is an article written by Linda Weiser Friedman. This text ...
- 全部python编程语言-可以用 Python 编程语言做哪些神奇好玩的事情?
贪吃蛇.迷宫.吃豆人.扫雷.Flappy Bird...这些游戏可以是非常经典,甚至伴随着很多人的童年回忆.那么,你是否想过自己开发一款专属游戏?是否思考过开发这样一款游戏需要多少工作量? /> ...
- 脚本语言和编程语言的区别_编程语言和脚本语言之间的区别
脚本语言和编程语言的区别 A programming language is a language used to write set of instructions to perform a tas ...
最新文章
- RabbitMQ入门(4)--路由
- LCLFramework框架之Service模式
- 第七周项目一-友元函数(3)
- 产品网络推广方案浅谈网站的相关性对优化的影响!
- Gradle项目中gradle.build文件中的buildScript代码块
- 为什么font-family最后都会加上sans-serif字体?
- comet for java_java comet tomcat推送
- 转----ASP.NET中常用的优化性能方法
- JS原型继承工作原理
- 月薪多少最幸福,离你有多远?
- 【CodeForces - 471D 】【构造差分kmp】MUH and Cube Walls
- 单片机ISP烧录原理
- oracle复合索引第一个字段,复合索引的先决使用条件 - stacktestor的个人空间 - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园...
- 计算机音乐A谱,WPSOffice谱写音乐简谱
- 微信电脑版找不到服务器,实用微信小技巧:微信无法连接服务器解决办法
- MongoDB报错,Sort operation used more than the maximum 33554432 bytes of RAM.Add an index
- 百度收录提交 网站快速收录提交方法【附工具】
- c语言编程统计学生个数,c编程统计并显示500至800之间所有素数的总个数以及总和...
- Packet Tracer学习小结(基本SwitchPort VLan)
- 关于人工智能的定义,这篇文章定义比较全面了
热门文章
- 美光并没有背信弃义,而是在向英特尔示好
- 从新版电视剧《笑傲江湖》看到的颠覆思维
- 在 64 位 linux 机器上安装 jdk1.6 jdk-6u45-linux-x64.bin的安装
- 软件测试需要学什么(软件测试人员怎么入行)?
- 招商银行2021FinTech精英训练营数据赛道方案分享
- 自动驾驶汽车?法律:伦理
- 问渠那得清如许?为有源头活水来。——java面向对象的思想
- 一家赔了15年的书店,为什么得到人们如此厚爱?丨好书优选
- 有数列:9,99,999,9999...,编程计算前10项的值。
- 服务器双通道与单通道的差别