zoukankan      html  css  js  c++  java
  • 六种主流编程语言(C、C++、Python、JavaScript、PHP、Java)特性对比

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

           C、C++、Python和Java四种是通用编程语言,JavaScript和PHP算是Web环境的专用编程语言。C语言由于其底层操作特性和历史的积累,在嵌入式领域是当之无愧的王者;C++是一种支持最广泛编程范式的复杂语言,这些年来发展不太好,目前在服务器后台和游戏领域还有其一席之地;Python作为一种灵活的轻便的通用型脚本语言,使用范围比较广,从应用软件到Web开发都有它的身影,由于其解释语言的特点,比较适合轻量级或原型开发;JavaScript语言由于其是浏览器内置的脚本语言,是Web前端开发的主流,近年来由于google的V8引擎开源,出现了Node.js之类JavaScript后台开发框架,把JavaScript的应用领域扩展到了Web后台;PHP作为一种简单的Web服务器后台脚本语言,在全世界范围内的网站上有最大的使用率;Java由于其跨平台可移植性,在Web开发领域大放异彩,特别是在企业级Web开发,同时由于Android系统采用Java来开发应用程序,所以也随着Android的发展而应用越发广泛。

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

    1、常量定义

    C:#define TEST 0

    C++:#define TEST 0

    或者

    const test = 0;

    Python:test = 0

    JavaScript:不支持

    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关键字来支持。

    (完)

  • 相关阅读:
    redis常见面试题
    nginx常见的面试题
    python学习笔记(15)pymysql数据库操作
    python中的if not
    python学习笔记(24)-类与对象
    python学习笔记(23)-异常处理
    python学习笔记(22)-os文件操作模块
    Maven---pom.xml配置详解
    maven+jmeter+jenkins集成
    适配器模式
  • 原文地址:https://www.cnblogs.com/ghostll/p/3567064.html
Copyright © 2011-2022 走看看