六种流行语言(C、C++、Python、JavaScript、PHP、Java)对比
off999 2024-09-29 16:07 27 浏览 0 评论
有些人会说语言学到最后不都差不多吗?其实可以这样讲,也可以不这样讲。虽然每种语言的表达能力大部分是重合的,只是语法表现形式不一样,但是由于历史发展的原因,每种语言形成了自己的支撑环境,所以都有其主要的适用范围。
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++资料分享:
需要的小伙伴们可以【点击下方】链接哦~
相关推荐
- 阿里云国际站ECS:阿里云ECS如何提高网站的访问速度?
-
TG:@yunlaoda360引言:速度即体验,速度即业务在当今数字化的世界中,网站的访问速度已成为决定用户体验、用户留存乃至业务转化率的关键因素。页面加载每延迟一秒,都可能导致用户流失和收入损失。对...
- 高流量大并发Linux TCP性能调优_linux 高并发网络编程
-
其实主要是手里面的跑openvpn服务器。因为并没有明文禁p2p(哎……想想那么多流量好像不跑点p2p也跑不完),所以造成有的时候如果有比较多人跑BT的话,会造成VPN速度急剧下降。本文所面对的情况为...
- 性能测试100集(12)性能指标资源使用率
-
在性能测试中,资源使用率是评估系统硬件效率的关键指标,主要包括以下四类:#性能测试##性能压测策略##软件测试#1.CPU使用率定义:CPU处理任务的时间占比,计算公式为1-空闲时间/总...
- Linux 服务器常见的性能调优_linux高性能服务端编程
-
一、Linux服务器性能调优第一步——先搞懂“看什么”很多人刚接触Linux性能调优时,总想着直接改配置,其实第一步该是“看清楚问题”。就像医生看病要先听诊,调优前得先知道服务器“哪里...
- Nginx性能优化实战:手把手教你提升10倍性能!
-
关注△mikechen△,十余年BAT架构经验倾囊相授!Nginx是大型架构而核心,下面我重点详解Nginx性能@mikechen文章来源:mikechen.cc1.worker_processe...
- 高并发场景下,Spring Cloud Gateway如何抗住百万QPS?
-
关注△mikechen△,十余年BAT架构经验倾囊相授!大家好,我是mikechen。高并发场景下网关作为流量的入口非常重要,下面我重点详解SpringCloudGateway如何抗住百万性能@m...
- Kubernetes 高并发处理实战(可落地案例 + 源码)
-
目标场景:对外提供HTTPAPI的微服务在短时间内收到大量请求(例如每秒数千至数万RPS),要求系统可弹性扩容、限流降级、缓存减压、稳定运行并能自动恢复。总体思路(多层防护):边缘层:云LB...
- 高并发场景下,Nginx如何扛住千万级请求?
-
Nginx是大型架构的必备中间件,下面我重点详解Nginx如何实现高并发@mikechen文章来源:mikechen.cc事件驱动模型Nginx采用事件驱动模型,这是Nginx高并发性能的基石。传统...
- Spring Boot+Vue全栈开发实战,中文版高清PDF资源
-
SpringBoot+Vue全栈开发实战,中文高清PDF资源,需要的可以私我:)SpringBoot致力于简化开发配置并为企业级开发提供一系列非业务性功能,而Vue则采用数据驱动视图的方式将程序...
- Docker-基础操作_docker基础实战教程二
-
一、镜像1、从仓库获取镜像搜索镜像:dockersearchimage_name搜索结果过滤:是否官方:dockersearch--filter="is-offical=true...
- 你有空吗?跟我一起搭个服务器好不好?
-
来人人都是产品经理【起点学院】,BAT实战派产品总监手把手系统带你学产品、学运营。昨天闲的没事的时候,随手翻了翻写过的文章,发现一个很严重的问题。就是大多数时间我都在滔滔不绝的讲理论,却很少有涉及动手...
- 部署你自己的 SaaS_saas如何部署
-
部署你自己的VPNOpenVPN——功能齐全的开源VPN解决方案。(DigitalOcean教程)dockovpn.io—无状态OpenVPNdockerized服务器,不需要持久存储。...
- Docker Compose_dockercompose安装
-
DockerCompose概述DockerCompose是一个用来定义和管理多容器应用的工具,通过一个docker-compose.yml文件,用YAML格式描述服务、网络、卷等内容,...
- 京东T7架构师推出的电子版SpringBoot,从构建小系统到架构大系统
-
前言:Java的各种开发框架发展了很多年,影响了一代又一代的程序员,现在无论是程序员,还是架构师,使用这些开发框架都面临着两方面的挑战。一方面是要快速开发出系统,这就要求使用的开发框架尽量简单,无论...
- Kubernetes (k8s) 入门学习指南_k8s kubeproxy
-
Kubernetes(k8s)入门学习指南一、什么是Kubernetes?为什么需要它?Kubernetes(k8s)是一个开源的容器编排系统,用于自动化部署、扩展和管理容器化应用程序。它...
欢迎 你 发表评论:
- 一周热门
-
-
抖音上好看的小姐姐,Python给你都下载了
-
全网最简单易懂!495页Python漫画教程,高清PDF版免费下载
-
Python 3.14 的 UUIDv6/v7/v8 上新,别再用 uuid4 () 啦!
-
python入门到脱坑 输入与输出—str()函数
-
宝塔面板如何添加免费waf防火墙?(宝塔面板开启https)
-
Python三目运算基础与进阶_python三目运算符判断三个变量
-
(新版)Python 分布式爬虫与 JS 逆向进阶实战吾爱分享
-
飞牛NAS部署TVGate Docker项目,实现内网一键转发、代理、jx
-
慕ke 前端工程师2024「完整」
-
失业程序员复习python笔记——条件与循环
-
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)
