Java和C语言谁是编程语言的老大?
最近,TIOBE 公布了 2020 年 7 月的编程语言排行榜。
本次排行榜的最大亮点就是:C语言击败Java,稳坐老大宝座!
这两年,编程语言排行榜榜首位置,不是C语言,就是Java。
以下为具体榜单信息:
TIOBE 7 月 TOP 10 编程语言
那么,Java与C语言到底有哪些区别?
Java与c都属于计算机的高级编程语言,都是为了方便人去编写出来东西控制计算机。
不同的是,Java是一种面向对象的语言,C是一门面向过程的语言。
打个比方来说,你要给你朋友寄快递,Java的做法是找家快递公司,把快递交给快递公司,告诉快递公司需要送到你朋友所在地中你朋友手里,然后快递公司接到快递后,会帮我们把快递送到目的地,你朋友的手中,这样我们就完成了我们的操作,这里面的快递公司就相当于一个对象;
而对于面向过程的编程语言来说,由于没有对象的概念,所以他需要自己想办法走到你朋友所在的地方,找到朋友,然后将快递交给你朋友;这样相比较,Java会简洁方便很多。
其次对于不同的平台来说,Java只需要编译一次,就可以在不同的平台上面运行,对于C来说,如果在Windows上面编译生成的文件只能在window上运行,如果想要在Linux系统下运行,需要重新在Linux下面进行编译。
原因是Java有自己的一套虚拟机体制,Java编译完成之后,会生成class文件,然后将生成的文件移到不同的平台时,Java虚拟机会帮助我们将class文件翻译成计算机所能识别的信息,这样就可以在不同平台运行了。
打个比方来说就是我们要和不同国家的人聊天,Java的做法相当于找了一个厉害的翻译,我们说的话,他都可以根据不同的国家翻译给不同的人听,而C的话相当于请了多个只会我们的语言和其他另一门语言的人,当我们要和美国人聊天,就得找一个英语翻译,当我们需要和德国人翻译,就得找个德语翻译,相对而言Java方便了很多。
第三,从语法结构上来说,Java去掉了C里面比较重要的指针的概念。指针的概念就是我们可以直接去操作计算机的物理地址,在使用C的时候,我们需要经常去自己申请一些内存空间,用完之后还需要自己手动释放,Java的垃圾回收机制较好地解决了这一点,我们不用再去关心申请的内存释放,Java虚拟机会帮助我们去清理一些我们用不到的空间,从而降低了很多出错的可能。
当然,Java和C的主要用途也不一样,Java主要针对的是互联网应用的开发,而C主要偏向于底层的开发。所以现在我们所看到的操作系统,智能设备这些都是使用的C;而我们平时的一些大数据平台、网站开发,比如我们经常使用的电商网站,还有一些企业管理网站等都是使用Java。
Java和C语言谁是编程语言的老大?的更多相关文章
- atitit.java解析sql语言解析器解释器的实现
atitit.java解析sql语言解析器解释器的实现 1. 解析sql的本质:实现一个4gl dsl编程语言的编译器 1 2. 解析sql的主要的流程,词法分析,而后进行语法分析,语义分析,构建sq ...
- Java替代C语言的可能性
前不久CSDN刊登了一篇<C语言已经死了>的文章,引起了一些争论.事实上那篇文章是从Ed Burnette的博客上转载来的,原文题目是“Die, C, die!”,直译过来应该是& ...
- TOP100summit 2017 七牛云许式伟:不用JAVA和C语言,我为什么坚持Go语言
本文编辑:Cynthia 2009年,谷歌发布第二款开源编程语言,Go语言.8年过去了,很多初创公司早期使用Go进行开发,包括云计算巨头Docker.而Go语言在中国的普及程度还比不上JAVA和C语言 ...
- C语言、编程语言发展史
前言 了解和学习一门语言.一个系统乃至方方面面的任何东西时,如果不知道其历史和现状而只是一上来就一味地闷头苦学,你就很容易“一叶障目不见泰山”. 如此这般火急火燎的就上手苦干,私以为大错特错,所谓“学 ...
- 分享:写了一个 java 调用 C语言 开发的动态库的范例
分享:写了一个 java 调用 C语言 开发的动态库的范例 cfunction.h 代码#pragma once#ifdef __cplusplusextern "C" {#e ...
- 比较java与c语言中数字转换成字符的不同
java java中将数字转换成字符非常方便,只要用一个"+"然后在跟一个空格行了.比如,你输入一个122 ,就会变成"122 ". import java.u ...
- JAVA调用C语言写的SO文件
JAVA调用C语言写的SO文件 因为工作需要写一份SO文件,作为手机硬件IC读卡和APK交互的桥梁,也就是中间件,看了网上有说到JNI接口技术实现,这里转载了一个实例 // 用JNI实现 // 实例: ...
- atitit.js javascript 调用c# java php后台语言api html5交互的原理与总结p97
atitit.js javascript 调用c# java php后台语言api html5交互的原理与总结p97 1. 实现html5化界面的要解决的策略1 1.1. Js交互1 1.2. 动态参 ...
- 3、Java调用C语言(JNA法)
这个方法挺方便的……(改写“二.Java调用C语言(JNative法)“的例子) 一.访问https://github.com/twall/jna ,下载jna-4.1.0.jar(版本不同名字不同) ...
随机推荐
- CentOS 7 的防火墙开启2
在虚拟机 CentOS 7 上装了 Nginx,结果发现另一台电脑无法访问其默认页面,通过 telnet 192.168.1.88 80 监听发现是 http 80 端口被 CentOS 7 的防火墙 ...
- 干货分享丨jvm系列:dump文件深度分析
摘要:java内存dump是jvm运行时内存的一份快照,利用它可以分析是否存在内存浪费,可以检查内存管理是否合理,当发生OOM的时候,可以找出问题的原因.那么dump文件的内容是什么样的呢? JVM ...
- Tensorflow-gpu环境搭建
显卡设备:英伟达1060 系统:Windows10 python版本:3.7.4 CUDA:cuda_10.0.130_411.31_win10 cudnn:cudnn-10.0-windows10- ...
- day06 可变不可变类型
1.可变不可变类型 可变类型 定义:值改变,id不变,改的是原值 不可变类型 定义:值改变,id也变了,证明是产生了新的值没有改变原值 验证 x = 10 print(id(x)) x = 11 pr ...
- JVM 专题二十二:垃圾回收(六)垃圾回收器 (三)
4. GC日志分析 4.1 日志分析 通过阅读GC日志,我们可以了解Java虚拟机内存分配与回收策略. 内存分配与垃圾回收的参数列表-XX:+PrintGC:输出GC日志.类似-verbose: gc ...
- 05-Python模块
一.简介 模块是一个包含所有你定义的函数和变量的文件,其后缀名是.py.模块可以被其他程序导入来使用模块具有的功能.这也是使用python标准库的方式. import time start_time ...
- Sympy常用函数总结
基础 from sympy import * 数学格式输出: init_printing() 添加变量: x, y, z, a, b, c = symbols('x y z a b c') 声明分数: ...
- Java应用服务器之tomcat部署
一.相关术语简介 首先我们来了解下tomcat是什么,tomcat是apache软件基金会中的一个项目,由apache.Sun 和其他一些公司及个人共同开发而成.主要作用是提供servlet和jsp类 ...
- Java常用API(Math类)
Java常用API(Math类) Math类的作用 java.lang.Math 类包含用于执行基本数学运算的方法,如初等指数.对数.平方根和三角函数.类似这样的工具 类,其所有方法均为静态方法,并且 ...
- 数字孪生,数据驱动下的北京 CBD 智能楼宇三维可视化系统
前言 楼宇作为建筑基础设施的主体,为人们提供着重要的生存空间.随着物联网.人工智能概念的兴起以及智慧城市如火如荼的开展,智能楼宇的重要性越发突显. 随着城市现代化建设的发展,建筑的智能化,特别是公用建 ...