我理解的"高级"是抽象层次更高,"低级"是抽象层次更低。
那么问题就变成了:python和c++,Java哪个是抽象层次更高的语言?为什么?
我的(个人)看法是:python > java > c,当然,并不是抽象层次越高越好(trade off)。
我的观点是:我们把c++/c放在一起,从CSAPP中我们看到c语言是非常接近汇编语言的,c语言中的算术与逻辑操作、控制、过程、数组以及一些异质的数据结构在汇编级别有对应的实现方法,而且实现方法非常直观,像翻译一样。c++呢,由于一些历史的原因,以及c++各种编程范式的不断发展,c++扩展了c,又有了自己的不同之处,可以这么说,c++即支持“低级别”(类c)的操作,也支持一些"高级别"的抽象:如面向对象思想,模板编程思想,函数式编程思想。所以,c是“low level”的高级语言,c++是高级语言。
java相对于c来说做了一点的抽象:VM。java"无需"内存管理(GC),那么我们就重点关注业务逻辑、算法如何实现,至于它在内存中的表示,内存有没有回收,都不是关注焦点。就是说VM是一个中间层,这个中间层让Java抽象层次更高。因此Java程序员很舒服:我不用关心内存的回收问题了。
python是解释型语言,运行过程中也有一层VM,从这里看python的抽象层次是不会低于Java 的,同时python还提供了一种抽象:动态类型。动态类型让python程序员很舒服:我不用关心数据在内存中是如何表示的了。
总结来说,同意有些答主的看法,他们都是高级语言,但是他们的抽象层次不同。
我感觉是翻译的锅(哈哈哈):high-level,高级?高水平?高层次?高程度(高程度xx)?你开心就好。