最近,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语言谁是编程语言的老大?的更多相关文章

  1. atitit.java解析sql语言解析器解释器的实现

    atitit.java解析sql语言解析器解释器的实现 1. 解析sql的本质:实现一个4gl dsl编程语言的编译器 1 2. 解析sql的主要的流程,词法分析,而后进行语法分析,语义分析,构建sq ...

  2. Java替代C语言的可能性

        前不久CSDN刊登了一篇<C语言已经死了>的文章,引起了一些争论.事实上那篇文章是从Ed Burnette的博客上转载来的,原文题目是“Die, C, die!”,直译过来应该是& ...

  3. TOP100summit 2017 七牛云许式伟:不用JAVA和C语言,我为什么坚持Go语言

    本文编辑:Cynthia 2009年,谷歌发布第二款开源编程语言,Go语言.8年过去了,很多初创公司早期使用Go进行开发,包括云计算巨头Docker.而Go语言在中国的普及程度还比不上JAVA和C语言 ...

  4. C语言、编程语言发展史

    前言 了解和学习一门语言.一个系统乃至方方面面的任何东西时,如果不知道其历史和现状而只是一上来就一味地闷头苦学,你就很容易“一叶障目不见泰山”. 如此这般火急火燎的就上手苦干,私以为大错特错,所谓“学 ...

  5. 分享:写了一个 java 调用 C语言 开发的动态库的范例

    分享:写了一个 java 调用 C语言 开发的动态库的范例 cfunction.h   代码#pragma once#ifdef __cplusplusextern "C" {#e ...

  6. 比较java与c语言中数字转换成字符的不同

    java java中将数字转换成字符非常方便,只要用一个"+"然后在跟一个空格行了.比如,你输入一个122 ,就会变成"122 ". import java.u ...

  7. JAVA调用C语言写的SO文件

    JAVA调用C语言写的SO文件 因为工作需要写一份SO文件,作为手机硬件IC读卡和APK交互的桥梁,也就是中间件,看了网上有说到JNI接口技术实现,这里转载了一个实例 // 用JNI实现 // 实例: ...

  8. atitit.js&#160;javascript&#160;调用c#&#160;java&#160;php后台语言api&#160;html5交互的原理与总结p97

    atitit.js javascript 调用c# java php后台语言api html5交互的原理与总结p97 1. 实现html5化界面的要解决的策略1 1.1. Js交互1 1.2. 动态参 ...

  9. 3、Java调用C语言(JNA法)

    这个方法挺方便的……(改写“二.Java调用C语言(JNative法)“的例子) 一.访问https://github.com/twall/jna ,下载jna-4.1.0.jar(版本不同名字不同) ...

  10. 讲一下java,c语言,c+和c++都是干嘛的,他们运行的软件都是哪些

    讲一下java,c语言,c+和c++都是干嘛的,他们运行的软件都是哪些 都是用于开发软件的,用于不同的方面.比如,淘宝的后台,是java做的.而腾讯的qq的后台服务器,是c和c++的.暴雪游戏的后台服 ...

随机推荐

  1. (转) CCEditBox 编辑框

    CCEditBox 编辑框 原文: http://blog.csdn.net/cloud95/article/details/8773470 分类: cocos2d-x 2013-04-08 19:1 ...

  2. 关于asp.net MVC 中的TryUpdateModel方法

    有比较才会有收货,有需求才会发现更多. 在传统的WebFormk开发工作中,我们常常会存在如下的代码块 //保存 protected void btnSubmit_Click(object sende ...

  3. 从客户端(txtNewsContent=&quot;&lt;hr /&gt;&quot;)中检测到有潜在危险的 Request.Form 值。怎么办呀?

    <system.web><httpRuntime requestValidationMode="2.0" executionTimeout="3600& ...

  4. c#基础知识索引器

    代码 ]);    }} 在这里我们看到,无非是实现了一个泛型算法 等同于 Ontology List<string> lit=new List<string>(); lis. ...

  5. Playrix Codescapes Cup (Codeforces Round #413, rated, Div. 1 + Div. 2)(A.暴力,B.优先队列,C.dp乱搞)

    A. Carrot Cakes time limit per test:1 second memory limit per test:256 megabytes input:standard inpu ...

  6. Collection集合框架详解

    [Java的集合框架] 接口: collection      map list     set 实现类: ArryList   HashSet HashMap LinkList   LinkHash ...

  7. encode()、decode()字符编码问题

    python3中,更改了默认的编码方式,更改为了unicode 前提知识: utf-8与Unicode的关系:https://baike.baidu.com/item/UTF-8/481798?fr= ...

  8. excel批量导入

    https://www.cnblogs.com/mingyue1818/p/4828865.html

  9. 一个关于集合的问题,为什么添加进List集合中的元素被莫名其妙的改变了

    以前自己理解的不够深刻,特此记录一下提醒自己,如果正好也帮到了你,我会很开心.相信只有自己正好遇到这个问题,才觉得哦,原来这样.自己小白,大神莫喷 为什么添加进List集合中的元素被莫名其妙的改变了? ...

  10. (转)Hibernate快速入门

    http://blog.csdn.net/yerenyuan_pku/article/details/64209343 Hibernate框架介绍 什么是Hibernate 我们可以从度娘上摘抄这样有 ...