百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

六种流行语言(C、C++、Python、JavaScript、PHP、Java)对比

myzbx 2024-12-18 15:45 18 浏览

有些人会说语言学到最后不都差不多吗?其实可以这样讲,也可以不这样讲。虽然每种语言的表达能力大部分是重合的,只是语法表现形式不一样,但是由于历史发展的原因,每种语言形成了自己的支撑环境,所以都有其主要的适用范围。

C、C++、Python和Java四种是通用编程语言,JavaScript和PHP算是Web环境的专用编程语言。

C(令人崇拜的语言)

由于其底层操作特性和历史的积累,在嵌入式领域是当之无愧的王者。

C++(神秘莫测的语言)

是一种支持最广泛编程范式的复杂语言,在高级语言当中,处理运行速度是最快的,大部分的游戏软件,系统都是由C++来编写的。

Python(高端大气上档次的语言)

作为一种灵活的轻便的通用型脚本语言,使用范围比较广,从应用软件到Web开发都有它的身影,由于其解释语言的特点,比较适合轻量级或原型开发;

Java(有噱头的语言)

Java由于其跨平台可移植性,在Web开发领域大放异彩,特别是在企业级Web开发,同时由于Android系统采用Java来开发应用程序,所以也随着Android的发展而应用越发广泛;

JavaScript(有潜力的语言)

JavaScript语言由于其是浏览器内置的脚本语言,是Web前端开发的主流,近年来由于google的V8引擎开源,出现了Node.js之类JavaScript后台开发框架,把JavaScript的应用领域扩展到了Web后台。

PHP(低调奢华的语言)

独特的语法混合了C、Java、Perl以及PHP自创的语法。它可以比CGI或者Perl更快速地执行动态网页;还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。

理清不同语言间主要语法特性的差异,才能更好的在合适的领域或场景下去应用合适的编程语言,以满足我们所面对的需求。这六种语言都是从C语言发展而来,所以它们的语法都比较像C语言,下面我就主要语法特性对各个语言做一个对比。

1、常量定义

C:#define TEST 0

C++:#define TEST 0

或者

const test = 0;

Python:test = 0

C#:不支持

PHP:define('test', 1);

Java:final int test = 0;

分析:JavaScript不支持常量,C、C++都用特有的预定义宏,PHP用特殊的define语法,其它的都用定义不变变量的方式。

2、变量定义

C:int test = 0;

C++:int test = 0;

Python:test = 0

JavaScript:val test = 0;

PHP:$test = 0;

Java:int test = 0;

分析:这个最基本的都支持了。

3、函数定义

C:int test(int param){}

C++:int test(int param){}

Python:def test(param):

JavaScript:function test(param){}

PHP:function test($param){}

Java:public class test{

public int test(int param){} }

分析:这个也是最基本的了,只是Java比较特殊,不支持定义类之外的函数。

4、类定义(含继承)

C:不支持

C++:class test2: public test1{}

Python:class test2(test1):

JavaScript:function test2(){}

test2.prototype =inherit(test1.prototype){}

PHP:class test2 extend test1{}

Java:class test2 extends test1{}

分析:C由于是传统面向过程的语言不支持类,其他的都支持了,只是JavaScript的类模型比较特殊,把函数作为类来使用。

5、对象定义

C:不支持

C++:test2 obj = new test2();

Python:obj = test2()

JavaScript:var obj = new test2();

PHP:$obj = new test2();

Java:test2 obj = new test2();

分析:除了C外其它语言都是通过new一个对象。

6、数组定义

C:int a[] = {1, 2, 3};

C++:int a[] = {1, 2, 3};

Python:a = [1, 2, 3]

JavaScript:var a = [1, 2, 3];

PHP:$a = array("1", "2", "3");

Java:int a[] = {1, 2, 3};

分析:数组是语言的基本特性,都支持了,只是PHP通过类似函数调用的语法来完成。

7、条件语句

C:if (test > 0){}

else if (test < 0){}

else{}

C++:if (test > 0){}

else if (test < 0){}

else{}

Python:if test > 0:

elif test < 0:

else:

JavaScript:if (test > 0){}

else if (test < 0){}

else{}

PHP:if ($test > 0){}

elseif ($test < 0){}

else{}

Java:if (test > 0){}

else if (test < 0){}

else{}

分析:这是最基本的语句,都支持了。

8、循环语句

C:for (idx=0; idx<num; idx++){}

C++:for (idx=0; idx<num; idx++){}

Python:for idx in range(1,10):

JavaScript:for (var idx=0; idx<num; idx++){}

PHP:for ($idx=0; $idx<$num; $idx++){}

Java:for (idx=0; idx<num; idx++){}

分析:这个也是基本的语句,都支持了。

9、foreach语句

C:不支持

C++:不支持

Python:for i in a:

或者

for key in d:

d[key]

JavaScript:for(i in a){}

PHP:foreach($a as $i){}

Java:for(int i : a){}

分析:foreach算是循环语句的一个变种,在操作顺序容器的时候非常有用,可以看到C和C++不支持,其它的都语言内置支持了。

10、打印语句

C:printf("test: %d", val);

C++:cout<<"test: "<<val<<endl;

Python:print "test: "+val

JavaScript:不支持

PHP:echo "test: $val";

Java:System.out.println("test :"+val);

分析:打印算是语言所运行环境的支持库功能,除了JavaScript外都支持了,因为JavaScript主要使用来操控DOM树的,没有自己的输出窗口所以也没必要支持。

11、字符串定义

C:char test[] = {"helloworld"};

C++:String test = "helloworld";

Python:test = "helloworld"

JavaScript:var test = "helloworld";

PHP:$test = "helloworld";

Java:String test = "helloworld";

分析:这个都支持了,其中C++、Java都是用标准库来现实的。

12、字符串串接

C:test = strcat(test1, test2);

C++:test = test1 + test2;(STL库)

Python:test = test1 + test2

JavaScript:var test = test1 + test2;

PHP:$test = $test1 .= $test2;

Java:test = test1 + test2;

分析:很有用的功能,除了C是用标准库函数来实现,其它都是语言内置支持了。

13、字符串分割

C:不支持

C++:test.substr(3, 8);

Python:test[3:8]

JavaScript:test.slice(3, 5);

PHP:substr($test, 3, 5);

Java:test.substring(3, 8);

分析:常用的功能,C不支持,Python是语言内置支持,其他的都依靠库来完成。

14、字符串正则表达式

C:不支持

C++:不支持

Python:test.replace("test1", "test2")

JavaScript:test.replace(/test1/gi, "test2");

PHP:str_replace($test, "test1", "test2");

Java:test.replaceAll("test1", "test2");

分析:常用的功能,可惜C、C++不支持,其他都有标准库来支持。

15、内置容器类型

C:数组

C++:数组

顺序容器 Vector

关联容器 Pair MapSet

Python:列表/元组

字典

JavaScript:数组

对象

PHP:数组(含关联数组)

Java:数组

序列 Collection

映射表 Map

分析:C最简单只支持数组,其他都支持容器,不过主要还是顺序容器和关联容器两大类。

16、注释方式

C:/* */

C++://

Python:#

JavaScript:/* */

//

PHP:/* */

//

#

Java:/* */

//

分析:大概就/**/、//、#三种方式,各自支持情况不一。

17、多线程支持

C:支持

C++:支持

Python:支持

JavaScript:不支持

PHP:不支持

Java:支持

分析:四种通用编程语言都支持了,两种专用编程语言都不支持。

18、socket支持

C:支持

C++:支持

Python:支持

JavaScript:不支持

PHP:支持

Java:支持

分析:除了JavaScript以外都支持,这也是JavaScript的应用领域限制所决定的。

19、垃圾回收机制

C:不支持

C++:不支持

Python:支持

JavaScript:支持

PHP:支持

Java:支持

分析:这是现代语言的重要机制,C和C++不支持,其他的都支持了。

20、引入其他文件中的函数

C:export int test();

C++:export int test();

Python:from test import *

JavaScript:<script language='javascript' src="test.js"charset="utf-8"></script>

PHP:require_once('test.php');

或者

include_once('test.php');

Java:import java.util.test.*;

分析:都支持,C和C++用export,Python和Java用import,JavaScript依靠HTML脚本,PHP用自己的函数调用。

21、将字符串作为指令执行

C:不支持

C++:不支持

Python:eval("port=5060")

JavaScript:eval("port=5060;");

PHP:eval("port=5060;");

Java:Porcess proc = new ProcessBuilder(“test”).start();

分析:很有用的一个动态语言特性,C和C++都不支持,Java要类库来支持,其它的语言内置eval关键字.

C/C++资料分享:

需要的小伙伴们可以【点击下方】链接哦~

相关推荐

Django零基础速成指南:快速打造带用户系统的博客平台

#python##服务器##API##编程##学习#不是所有教程都值得你花时间!这篇实战指南将用5分钟带你解锁Django核心技能,手把手教你从零搭建一个具备用户注册登录、文章管理功能的完整...

iOS 17.0 Bootstrap 1.2.9 半越狱来啦!更新两点

这款Bootstrap半越狱工具终于更新,离上一次更新已相隔很久,现在推出1.2.9版本,主要为内置两点功能进行更新,也是提升半越狱的稳定性。如果你正在使用这款半越狱工具的,建议你更新。注意!...

iOS 16.x Bootstrap 1.2.3 发布,支持运行清理工具

本文主要讲Bootstrap半越狱工具更新相关内容。如果你是iOS16.0至16.6.1和17.0系统的,想体验半越狱的果粉,请继续往下看。--知识点科普--Bootstrap...

SpringBoot整合工作流引擎Acticiti系统,适用于ERP、OA系统

今日推荐:SpringBoot整合工作流引擎Acticiti的源码推荐理由:1、SpringBoot整合工作流引擎Acticiti系统2、实现了三级权限结构3、持久层使用了mybatis框架4、流程包...

SpringCloud自定义Bootstrap配置指南

在SpringCloud中自定义Bootstrap配置需要以下步骤,以确保在应用启动的早期阶段加载自定义配置:1.添加依赖(针对新版本SpringCloud)从SpringCloud2020...

Python使用Dash开发网页应用(三)(python网页开发教程)

PlotlyDash开发Web应用示例一个好的网页设计通常都需要编写css甚至js来定制前端内容,例如非常流行的bootstrap框架。我们既然想使用Dash来搭建web应用,很大的一个原因是不熟悉...

Oxygen XML Editor 27.1 中的新功能

OxygenXMLEditor27.1版是面向内容作者、开发者、合作者和出版商的行业领先工具包的增量版本。在27.1版本中,AIPositronAssistant得到了增强,包括用于...

【LLM-多模态】Mini-Gemini:挖掘多模态视觉语言模型的潜力

一、结论写在前面论文提出了Mini-Gemini,一个精简而强大的多模态VLM框架。Mini-Gemini的本质在于通过战略性框架设计、丰富的数据质量和扩展的功能范围,发掘VLM的潜在能力。其核心是补...

谐云课堂 | 一文详解分布式改造理论与实战

01微服务与分布式什么是分布式?首先,我们对上图提到的部分关键词进行讲解。单体,是指一个进程完成全部的后端处理;水平拆分,是同一个后端多环境部署,他们都处理相同的内容,使用反向代理来均衡负载,这种也叫...

基于Abaqus的手动挡换挡机构可靠性仿真

手动挡,也称手动变速器,英文全称为Manualtransmission,简称MT,即用手拨动换挡操纵总成才能改变变速器内的齿轮啮合位置,改变传动比,从而达到变速的目的。家用轿车主要采用软轴连接的换挡...

【pytorch】目标检测:彻底搞懂YOLOv5详解

YOLOv5是GlennJocher等人研发,它是Ultralytics公司的开源项目。YOLOv5根据参数量分为了n、s、m、l、x五种类型,其参数量依次上升,当然了其效果也是越来越好。从2020...

超实用!50个非常实用的PS快捷键命令大全分享

今天,给大家介绍50个非常实用的快捷键命令大全,大家伙都是设计师,关于软件使用那是越快越好啊。一、常用的热键组合1、图层混合模式快捷键:正常(Shift+Option+N),正片叠底(Shif...

Pohtoshop中深藏不露的小技巧(科目一考试技巧记忆口诀看完必过)

邢帅教育ps教程为大家总结了一些Pohtoshop中深藏不露的小技巧,可以帮助到大家在设计时减少不必要的麻烦,提高工作效率哦~~~1.设置网格线保持像素完美不在1:1分辨率下也能保持像素完美,可以...

Ganglia监控安装总结(监控安装工作总结)

一、ganglia简介:Ganglia是一个跨平台可扩展的,高性能计算系统下的分布式监控系统,如集群和网格。它是基于分层设计,它使用广泛的技术,如XML数据代表,便携数据传输,RRDtool用于数据...

谁说Adobe XD做不出好看的设计?那是你没搞懂这些功能

AdobeXD的美化栏具有将设计视图美化的功能,它能使界面设计和原型设计更漂亮、更吸引眼球。美化栏的7个功能包括竖线布局设计、横线布局设计、重复网格、图形大小和位置设置、响应式调整大小、文字美化以及...