1、C、C++、JAVA、Python 关系

关于编程语言。不回避一个比较俗气的话题——程序员该学该用什么语言。

先不讨论这个问题,设想一个游戏,孤岛上分布着敌人,你的体能和枪法不赖,有两个场景。
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++ 。


个人博客总目录

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值