1、C、C++、JAVA、Python 关系
2015-09-11 22:10
477 查看
关于编程语言。不回避一个比较俗气的话题——程序员该学该用什么语言。
先不讨论这个问题,设想一个游戏,孤岛上分布着敌人,你的体能和枪法不赖,有两个场景。
A : 有2个敌人。
B : 有5个敌人。
可以选择的武器也分为两种
I : 一把手枪(3颗子弹)。
II : 一把极其锋利的匕首。
每种场景下会怎么选择武器。
你的选择,其实和选择语言没什么本质区别。
语言是工具,工具是用来干活的。
在这里,谈谈个人对C、C++、JAVA、Python关系的理解。
C,不多说,很多语言的鼻祖。精炼强悍,面向过程,可以看作可移植的汇编。
C++,开始称做C with class。和C关系不言自明。因为历史原因,C++完全兼容C,套用面向对象的观点,是“is a”的关系,但是,C++又必须看作一种全新的语言。从语法角度看,C++不愧是号称最难的语言。语法点多,特别是,在一套通用的语法规则下,经常有特殊的语法技巧“违背”规则。比如friend,破环了private的权限保护。当然做这些就是为了使它更强大。少受约束,更具有适用性——“万金油”。从思想的角度看,有人说C++不是语言,是一种哲学。面向过程,面向对象,泛型编程,函数式编程。无所不能。
JAVA,简单的说,是阉割版的C++(不考虑运行机制)。C++有个让很多人用的不爽的地方——资源需手动回收,new必须在某个地方delete,否则,编译,运行也许正常也许不正常,用过的人都知道后果的严重性(可以通过类等特殊技巧解决,但总归没有解决根本问题)。这个问题是考虑到性能才没从语言角度解决。JAVA比起C++就简单了,垃圾自动回收,只能单继承(个人理解是伪装的,因为从语法角度JAVA的接口就是一个虚类,而java的接口支持多继承)。不像C++包罗万象,JAVA中的所有的代码都在类中,完完全全的面向对象。从运行机制看,借助虚拟机,JAVA是“一处编译,到处运行”。C++是”一处编写,到处编译“。因为JAVA需借助虚拟机做转换,性能上还是不能和直接产生二进制的C++比的。
Python,是一种脚本,但不像shell是解释型的,Python执行过程也会产生一些中间层,从而效率上比解释型的语言好。和C/C++比,语法简单,追求做一件事只有一种方法,一种尽可能好的方法。借助庞大的类库支持,Python写的程序代码行数只有C/C++/JAVA的1/5~1/3 。Python可以用于快速模型开发。但因为效率问题,产品阶段可能会被C/C++替代,或者引入C/C++ 。
先不讨论这个问题,设想一个游戏,孤岛上分布着敌人,你的体能和枪法不赖,有两个场景。
A : 有2个敌人。
B : 有5个敌人。
可以选择的武器也分为两种
I : 一把手枪(3颗子弹)。
II : 一把极其锋利的匕首。
每种场景下会怎么选择武器。
你的选择,其实和选择语言没什么本质区别。
语言是工具,工具是用来干活的。
在这里,谈谈个人对C、C++、JAVA、Python关系的理解。
C,不多说,很多语言的鼻祖。精炼强悍,面向过程,可以看作可移植的汇编。
C++,开始称做C with class。和C关系不言自明。因为历史原因,C++完全兼容C,套用面向对象的观点,是“is a”的关系,但是,C++又必须看作一种全新的语言。从语法角度看,C++不愧是号称最难的语言。语法点多,特别是,在一套通用的语法规则下,经常有特殊的语法技巧“违背”规则。比如friend,破环了private的权限保护。当然做这些就是为了使它更强大。少受约束,更具有适用性——“万金油”。从思想的角度看,有人说C++不是语言,是一种哲学。面向过程,面向对象,泛型编程,函数式编程。无所不能。
JAVA,简单的说,是阉割版的C++(不考虑运行机制)。C++有个让很多人用的不爽的地方——资源需手动回收,new必须在某个地方delete,否则,编译,运行也许正常也许不正常,用过的人都知道后果的严重性(可以通过类等特殊技巧解决,但总归没有解决根本问题)。这个问题是考虑到性能才没从语言角度解决。JAVA比起C++就简单了,垃圾自动回收,只能单继承(个人理解是伪装的,因为从语法角度JAVA的接口就是一个虚类,而java的接口支持多继承)。不像C++包罗万象,JAVA中的所有的代码都在类中,完完全全的面向对象。从运行机制看,借助虚拟机,JAVA是“一处编译,到处运行”。C++是”一处编写,到处编译“。因为JAVA需借助虚拟机做转换,性能上还是不能和直接产生二进制的C++比的。
Python,是一种脚本,但不像shell是解释型的,Python执行过程也会产生一些中间层,从而效率上比解释型的语言好。和C/C++比,语法简单,追求做一件事只有一种方法,一种尽可能好的方法。借助庞大的类库支持,Python写的程序代码行数只有C/C++/JAVA的1/5~1/3 。Python可以用于快速模型开发。但因为效率问题,产品阶段可能会被C/C++替代,或者引入C/C++ 。
个人博客总目录
相关文章推荐
- C++的const类成员函数
- 项目11.4输入3个双精度实数,分别求出它们的和、平均值、平方和以及平方和的开方,并输出所求出各个值
- C++函数中const形参与非const形参
- 设计模式C++实现(1)——工厂模式
- 项目11.3如何买玫瑰
- P2P通信原理与实现(C++)
- 编写一段程序,从标准输入读取string对象的序列直到连续出现两个相同的单词或者所有单词都读完为止
- 深入理解c语言——‘\0’ ,‘0’, “0” ,0之间的区别
- C++实现图的邻接表
- C++中智能指针的设计和使用
- 设计模式(c++版)
- C/C++
- C语言学习之结构体struct
- Effective C++ 条款45 运用成员函数模板接受所有兼容类型
- 为什么在C++使用pthread_create()的时候,类成员函数做线程的处理函数必须要定义成static类型的?
- C语言实现的百分比加进度条的显示程序
- C++_递归习题汇总
- C语言指针和文件笔记
- C++面试考点
- C++面试考点