Java vs Python,谁能胜出?

栏目: Python · 发布时间: 7年前

内容简介:Java vs Python,谁能胜出?作为程序猿,这个问题除了从数据角度分析外,我们更应该从编程语言本身的使用和体验来感受对比一番,然后再谨慎的给出自己的答案。Java诞生于1995年,Python诞生于1991年,是不是很意外,大家以为Java廉颇老矣,Python年纪却更大。Java之父James Gosling

Java vs Python,谁能胜出?作为程序猿,这个问题除了从数据角度分析外,我们更应该从编程语言本身的使用和体验来感受对比一番,然后再谨慎的给出自己的答案。

资历

Java诞生于1995年,Python诞生于1991年,是不是很意外,大家以为 Java 廉颇老矣,Python年纪却更大。

毛发的PK

Java之父James Gosling

Java vs Python,谁能胜出?

python之父Guido van Rossum

Java vs Python,谁能胜出?

Hello World

Java版

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("hello java world");
    }
}

Python版

print("hello python world")

Java说:Hi, code boy.

  • 先定义一个类
  • 再定义一个main入口方法
  • 然后打印输出hello world

Python说:Hi, code boy. Just hello world!

字符串

要说代码中最丑的字符串是什么,那必须是sql。

Java中的sql

String uglySql = "SELECT * FROM"
                + " program_language"
                + " WHERE"
                + " NAME = 'Java'"
                + " AND rank > 5";

Python中的sql

beautiful_sql = """
    SELECT
        *
    FROM
        program_language
    WHERE
        NAME = 'Python'
    AND rank > 5
"""

列表

钢铁侠:Hi,贾维斯,给我一份最新的世界电影票房排名前10的榜单

Java版贾维斯

List<String> top10 = Arrays.asList("Avatar",
                "Titanic",
                "Star Wars: The Force Awakens",
                "Avengers: Infinity War",
                "Jurassic World",
                "Marvel's The Avengers",
                "Furious 7",
                "Avengers: Age of Ultron",
                "Black Panther",
                "Avengers: Endgame");

Python版贾维斯

top10 = [
    "Avatar",
    "Titanic",
    "Star Wars: The Force Awakens",
    "Avengers: Infinity War",
    "Jurassic World",
    "Marvel's The Avengers",
    "Furious 7",
    "Avengers: Age of Ultron",
    "Black Panther",
    "Avengers: Endgame"
]

钢铁侠:Ok,贾维斯,well done,现在给我排名前3的就行了,我比较关注

Java版贾维斯

List<String> top3 = top10.subList(0,3);

Python版贾维斯

top3 = top10[:3]

映射/字典

英文不是很好,上面的榜单谁帮忙翻译一下?

Java

Map<String, String> top10Map = new HashMap<>();
top10Map.put("Avatar", "阿凡达");
top10Map.put("Titanic", "泰坦尼克号");
top10Map.put("Star Wars: The Force Awakens", "星球大战:原力觉醒");
top10Map.put("Avengers: Infinity War", "复仇者联盟:无限战争");
top10Map.put("Jurassic World", "侏罗纪世界");
top10Map.put("Marvel's The Avengers", "复仇者联盟");
top10Map.put("Furious 7", "速度与激情7");
top10Map.put("Avengers: Age of Ultron", "复仇者联盟:奥创纪元");
top10Map.put("Black Panther", "黑豹");
top10Map.put("Avengers: Endgame", "复仇者联盟:终局之战");

String movie_en_name = "Avengers: Endgame";
System.out.println(movie_en_name + "->" + top10Map.get(movie_en_name));

Python

top10_dic = {
    "Avatar": "阿凡达",
    "Titanic": "泰坦尼克号",
    "Star Wars: The Force Awakens": "星球大战:原力觉醒",
    "Avengers: Infinity War": "复仇者联盟:无限战争",
    "Jurassic World": "侏罗纪世界",
    "Marvel's The Avengers": "复仇者联盟",
    "Furious 7": "速度与激情7",
    "Avengers: Age of Ultron": "复仇者联盟:奥创纪元",
    "Black Panther": "黑豹",
    "Avengers: Endgame": "复仇者联盟:终局之战"
}
movie_en_name = "Avengers: Endgame"
print(movie_en_name, "->", top10_dic[movie_en_name])

分支

假如可以回到过去,你会做什么?

Java

Calendar timeMachine = Calendar.getInstance();
int year = timeMachine.get(Calendar.YEAR);
if (year >= 1980 && year < 1990) {
    System.out.println("玩");
} else if (year >= 1990 && year < 2000) {
    System.out.println("学习");
} else if (year >= 2000 && year < 2010) {
    System.out.println("学习,工作");
} else {
    System.out.println("工作,成家,一胎,二胎");
}

Python

time_machine = datetime.datetime.now()
year = time_machine.year
if 1980 <= year < 1990:
    print("玩")
elif 1990 <= year < 2000:
    print("学习")
elif 2000 <= year < 2010:
    print("学习,工作")
else:
    print("工作,成家,一胎,二胎")

循环

90年代,当我们还小时,被罚抄书了,多么不幸的事,谁来拯救?

Java

try {
    FileReader fileReader = new FileReader("book.txt");
    BufferedReader bookReader = new BufferedReader(fileReader);
    String line;
    while ((line = bookReader.readLine()) != null) {
        System.out.println(line);
    }
    fileReader.close();
    bookReader.close();
} catch (IOException e) {
    e.printStackTrace();
}

Python

for line in open("book.txt"):
    print(line)

方法/函数

在钢铁侠多次要求取世界电影票房排名前10的榜单,和前3后,贾维斯进化了。

Java版贾维斯

private String fetchHtmlFromMojo() {
    // fetch html...
    String html = "<html></html>";
    return html;
}

private List<String> parseTop100(String html) {
    // parse html...
    List<String> top100 = new ArrayList<>();
    return top100;
}

private List<String> getTopN(int num) {
    String html = fetchHtmlFromMojo();
    List<String> top100 = parseTop100(html);
    return top100.subList(0, num);
}

Python版贾维斯

def fetch_html_from_mojo():
    # fetch html...
    html = "<html></html>"
    return html


def parse_top100(html):
    # parse html...
    top100 = []
    return top100


def get_topn(num):
    html = fetch_html_from_mojo()
    top100 = parse_top100(html)
    return top100[:num]

终极贾维斯

Java

public class Robot {
    private String name = "贾维斯";
    private Map<String, String> movieMap = new HashMap<>();
    
    public Robot(String name) {
        this.name = name;
    }

    private String fetchHtmlFromMojo() {
        // fetch html...
        String html = "<html></html>";
        return html;
    }

    private List<String> parseTop100(String html) {
        // parse html...
        List<String> top100 = new ArrayList<>();
        return top100;
    }

    public List<String> getTopN(int num) {
        String html = fetchHtmlFromMojo();
        List<String> top100 = parseTop100(html);
        return top100.subList(0, num);
    }

    public String translate(String movieEnName) {
        return movieMap.get(movieEnName);
    }
}

Python

class Robot:
    name = "贾维斯"
    movie_dic = dict()

    def __init__(self, name):
        self.name = name

    def fetch_html_from_mojo(self):
        # fetch html...
        html = "<html></html>"
        return html

    def parse_top100(self, html):
        # parse html...
        top100 = []
        return top100

    def get_topn(self, num):
        html = self.fetch_html_from_mojo()
        top100 = self.parse_top100(html)
        return top100[:num]

    def translate(self, movie_en_name):
        return self.movie_dic[movie_en_name]

结论

Java vs Python,谁胜出?说实话,颜值方面 Python 确实高过Java很多(语法简洁,作者头发浓密),但是,Java在互联网攻城掠地,Python在人工智能快速崛起,各有各的好,非要说谁胜出,当然是我们程序猿自己了,理解编程语言的共性,拥抱编程语言的多样性,让我们可以快速在不同场景做出合适的选择,创造属于程序猿的未来。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

RESTful Web Services Cookbook

RESTful Web Services Cookbook

Subbu Allamaraju / Yahoo Press / 2010-3-11 / USD 39.99

While the REST design philosophy has captured the imagination of web and enterprise developers alike, using this approach to develop real web services is no picnic. This cookbook includes more than 10......一起来看看 《RESTful Web Services Cookbook》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具