一场编程语言之战

一场编程语言之战

@Author:Runsen

本人懂一点Python,Java,根据自己想法而来,纯属虚构。

现状

进入2020年3月,新的编程语言排行榜新鲜出炉,TIOBE 最新发布了 3 月编程语言排行榜。

image

从榜单中我们可以看到,前三名分别为Java、C、Python。相较于上个月,Python继续以1.85% 上升至 10.11%,以10.11% 的份额稳居第三。

我们先了解下比较常见的编程语言的,如Java,Python,JavaScript,C/C++,Go,C#各编程语言的用途。

image

“众口难调”,面对多种多样的编程语言,大家众说纷纭,每种编程语言都有其存在的意义,编程之战从未停止,“战火”一触即发。

家庭内战

最近,编程语言家族开了一场“家庭聚会”,都是在讨论TIOBE自己的排名。

下面是家庭成员的对话。

老三Py:最近,我可厉害了。从2015年,人工智能的开始,人人学我,基本上我成为最无敌的大佬。

老四C++:可不是嘛,老三,你的爬虫,数据分析,机器学习,深度学习,自然语言处理再加上你的Django,flask等Web开发等,就连你的PyQt也想占领我的QT图形界面市场,都是你这个流氓,害得我从老三变成老四。

老三Py:那都是你太难写了,学我就是几分钟就能入门的,谁叫你这么难懂,什么面向对象,你的一百行代码,我十几行就搞定了,谁还会学你,很快,我就是老大,你就是我的小弟。

老四C++对老大Java说:大哥,有人想谋权篡位。

老大Java:现在,确实是老三的时代,现在个个数据分析师只会Python,都喊出了:人生苦短,我用Python。要怪就怪数据分析人员编程水平太低了,写来写去就是py代码,完全学不会其他语言。

老二C鄙视的说:就算写Python太厉害,也最多就是一个导包侠,没有什么了不起的。老三,话说你有什么本事当老大,我都不敢谋权篡位。

老三Py:不如我们比一比,看看现在开发者需要我多些还是老大多先。

老大Java:好,比就比。谁怕谁,我到底看看你有什么本事。

老三Py:我代码简单,写起来轻松易懂,比如我打印一句Hello World,就是一个print("Hello World"),就是这么简单。就问你们服不服?

老大Java:打印一个Hello World,我确实需要好几行代码,还要声明一个HelloWorld对象。

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

老二C: 我还要定义一个main的主函数,打印一个Hello World确实有点多。

#include <stdio.h>main() {  printf("hello world");}

老四C++:我是抄老二的,写个Hello World比老二还要多。

#include<iostream>using namespace std;int main(){  cout << "hello world!"<< endl;  return 0;}

老三Py:看见没有,这就是差距,谁会写那么多代码,直接简单粗暴我就是一个打印Hello World。

老大Java:老三,你这样不行啊,万物都是对象,写一行代码,我觉得都要声明一个对象。

老三Py:什么对象,我能打印出来就Ok了。

其他人:确实老三写的代码太简单了,连小学生基本都能学会,我们自愧不如,老三,你还要什么本事吗?

老三Py:要说我牛逼莫过我的第三方库,超过上万个,安装也简单,一个pip install就轻松搞定,还给人看到安装进度条,你们说我牛不牛逼。

老大Java:这我可不服,你去的maven仓库看看

image

我的jar包任何一种场景都有,我的生态系早就完善,怎么不如你老三?

老三Py:你在pom.xml安装什么任何信息告诉别人,而且你的dependency鬼死那么长,人家愿意写吗?

老二C和老四C++:我们gcc和cmake添加第三方库还要编译才可以。

老三Py:我的requests,selenium,beautifulsoup,pyquery,lxml,Scrapy,Crawley,Pyspider等一系列爬虫库和爬虫框架厉害到爆,几乎所有爬虫都是我来编写的,你们的爬虫市场早没有你们的份了。

老大Java:我的WebMagic,Nutch,Heritrix,Jsoup, SeimiCrawler,JLiteSpider爬虫编写的代码确实比你多了好几倍,以前爬虫的市场都是基本用我,现在给你占去,悲哀。

老二C老四C++:爬虫,小心爬进监狱,现在首例爬虫禁令,禁止爬取微信公众号,都是老三你的爬虫造成多少假流量,造成多少网站 奔溃,就说12306有尽20%以上都是爬虫访问流量,有多少人抢票,再提价出售,官方发票,又被他们抢了,你以前让多少人抢不票,这背后引发了一系列的肮脏的资产链。

老三Py:这关我毛事,现在的百度蜘蛛爬取,多少网站双手叫好,这都是他们的问题。

其他人:你除了爬虫,还有什么?

老三Py:我的数据分析三剑客numpy,pandas,matplotlib,在加上Seaborn,Scipy,StatModels, Pyecharts,Bokeh,Blaze,Plotly,NetWorkX,Biopython,SymPy和gwpy等数据科学库简直无敌,都喊出了,从excel学Python了。

老大Java:数据分析我虽然也有jar提供,但是我派了我的儿子scala去帮我完善。

老二C老四C++:这东西不是SPSS,stata,tableau,powerbi,excel,Echart,FineReport等强大的数据分析工具就可以解决了,都是用我们和老大开发的,干嘛还要写代码。

老三Py:我一把屠龙剑Pycharm,一把倚天剑anaconda,一个开发,一个数据分析,双剑合并,威力无敌。

老大Java:比IDE开发工具,我可不怕,我有Eclipse,MyEclipse,Intellij IDEA,NetBeans功能厉害到爆。

老二C老四C++:Dev-C++,C-free,CLion, Code::Blocks,CodeLite,C++ Builder,我们觉得同样没问题。

老三Py:我的Web开发Django社区非常庞大,江湖上,Python有两条腿跑,一腿就是我的django,因为两万个包,一万以上都是我的Django,再加上了其他儿子flask,tornado,我开发了国内的豆瓣、知乎,国外:Instagram、Disqus、National Geographic、NASA

老大Java:Web开发,你还敢比,我就拿出一个Spring家族就够了,SpringMVC,SpringBoot,SpringCloud,再说了我还有自己的Tomcat,Jetty应用服务器,微服务的架构早就深化人心。如果以前的网站不是用php开发,那基本就是我以前的Servlet,jsp开发的(虽然落后了,但基本都在维护),现在网站开发首选我的Spring家族。

老二C老四C++:虽然在网站开发我们几乎没有市场,但是软件开发都是采用我们的,比如早期的QQ,微信,支付宝等大部分软件都是我们开发的。

老三Py:有本事比一比现在最火的人工智能,我的机器学习sklearn,深度学习keras,Pytorch,tensorflow,Caffe,PaddlePaddle,哪个不知道,哪个不用?就是因为这个,我才算最近的王者。

老大Java:你是不是想王者荣耀想多了,王者荣耀的客户端应该是C#(Unity3D)开发的,核心后端服务是C++开发,可没有你的份。人工智能,我怎么实现不了,我的深度学习库——DL4J、ND4J以及Deeplearning4j ,深度学习框架就是因为数据分析者只会用Python,才让你火到现在。

老四C++:CPP-Call-Tensorflow,Caffe2 C++ API, PyTorch-CPP,我的性能比你的好不知道多少倍。对了,说说性能,老三,你这不怎么行。

老大Java补刀:连数据都没有,老三你做什么人工智能,看看得我的apache社区的大数据框架Apache Hadoop,Apache Hive,Apache Hbase,Apache Sqoop,Apache Flume,Apache Spark,Apache Beam,Apache Flink ,Apache Storm,Spark Streaming,Apache Oozie还有 Clouders Manager(CDH)都是我开发出来,大数据平台都是我干的,没有了数据,你做什么Ai,你是不是猴子请来的逗逼?

老三Py:游戏方面,我可以有我的Pygame,性能方面,我承认比较低效,大数据不是还有我的pyspark?

老五C#:你的Pygame就是小孩子过家家的,游戏市场我已经占领,老三你可不要来。

老大Java笑道:spark是我的儿子scala开发的,spark就是为了你们这些数据分析的人不会我(Java)和我儿子(scala),你们的压力下,不好意思的开发了pyspark ,对Python提供了APi,再说了我们也给R提供了Rspark。话说,老R从前十掉下到了十一。

老R:就是你老三一直打击我,害得现在数据分析的人员不学习R了,都以为学你,就天下无敌了。

老四C++:就是明明每个人占领一种市场就够了,现在提出了”人生苦短,我学Python“口号。

老三Py:就是要”人生苦短,我学Python“。

老大Java:就是因为你,害得所有人的编程水平只降下来。Java开发人员学习Python,就是分分钟的事情。

老二C:不要说,大学我敢保证所有人都必须学习我开始。

老四C++:有本事你让学Python的来学我或者老大,我不信他能学得了。学我的人基本被我折磨死了,学你py就是分分钟的事情,有本事继续聊性能,我好像记得知乎得推荐系统用go重写了,还不是因为你的效率。

老十go:今天我难得上了前十,什么”人生苦短,我学Python“,明明就是”2020年,我们一起学go“。

老三Py:我去你的,你老十有什么资格说话?再说了我有cpython,Numba提高运行速度不就可以了吗?

老大Java:那你老三有什么资格在我面前说话,你连多线程和并发都处理不好,还不如提出我的口号”OnceWrite,RunAnywhere“,一次编写,到处运行,我的强大的JVM,你老三有吗?

老三Py:我可以用Pyinstall打成exe,到处运行,不就是”一次编写,到处运行“,

老大Java:我的强大,你不知道,你还是在mac和liunx运行你的exe吧。我还有一个儿子Kotlin和我占领APP市场,你有APP市场吗,还想当大佬,这日子是不是有点早了。

老三Py:我有kivy开发APP。

老二C老四C++:老三,你怎么不说用flutter开发APP?

老三Py:那是Google 开源的 UI 工具包,关我毛事。

老二C老四C++:flutter的底层是基于我们的开发的。

老三Py:我不管,反正现在人人学Py,我的市场就是慢慢变大,我就是当老大。

老二C: 我从1972年诞生,可以说我是老三你的长辈。Java可是运行在全球的三十亿设备上的,我都没有把握当老大,你哪里来的勇气?

老三Py:我是从1991年出生,Java可是1995年出生,这样我不就是老大的长辈吗?

老大Java:老三说得没错,老三要当老大,他膨胀了,要先超越老二你了。

老二C: 什么?老三,他连编译器都没有,一个解释器基于我的编译器,竟然敢叫嚣超越我,用我编译器,底层封装我的代码, 没有我,哪里来你,脚本就是脚本,动态语言就是动态语言,老大,老四和我哪个不是静态语言,哪个没有自己的编译器?信不信我不给你用我的编译器,让你从前十消失。

老三Py:卧槽,爸爸,我错了,别让我从前十消失啊。

一声不吭的老八php叫道:php才是最好的语言。

我想说的

Python这语言,只适合作为加分项,不适合作为技术支撑。因为它写不了复杂逻辑。只适合写一个爬虫,计算器,记事本,Qt之类的小程序。Python超越了Java和C,那是不可能的。Python从老四超越了C++,已经是一个很震惊的大事了。

说这个也许有人不服,凭什么Python就写不了复杂逻辑?豆瓣和知乎不是用Python写的吗?

先声明,豆瓣的后端,已经废弃了绝大部分的Python代码,重新写过了。youtube也正在重写中。目前以Python为主的网站,就只有知乎这么个独苗,而且知乎的推荐算法已经用go重写了。

为什么?不是因为Python的性能慢,而是因为Python的语法太悲剧了。也许Python的语法简洁,在初学者看来是优点。因为初学者一般练手,都只写1000行以下的小玩意,Python的语法简直爽翻了,真没任何缺点。

但如果你真的尝试用Python封装几十个类,去写个一万行以上的东西,自然就明白它的语法问题有多严重了。不只是难受,而是根本写不下,去维护成本太大了。没有静态类型检查是主要原因。能解决么?也能,好的模块设计还有code review能回避掉一些,不过这样一来也就抵消掉一些Python能带来的快速开发的优势了。

还是江湖那句话,动态一时爽,重构火葬场。并不适合大项目,Python还是适合原型,前期项目。

搞it要想混得好,如果哪能只会一样东西呢,除非你不想混好,拼得就是综合素质,除非你Python登峰造极的程度,python五分钟都能入门,Python的语法和英语完全一样。学Python的人,去学Java,真的觉得很难。

如果按难度评分0-5的话,Python没有难度指数0,php难度指数1,go难度指数2,Java难度指数3,C++/C难度指数4。静态语言的难度是比动态脚本难的,如果你是编程零基础,建议从学习Python,再深入到Java。一手Python,一手Java基本在市场属于比较靠前的水平。

阿里基本Java的天下,腾讯的前世是靠C/C++出生,华为主要业务是在硬件方面,也需要C/C++的编程基础。百度,字节相反用的Python,go,ruby比较多。

不过如果自己想要有更长远的发展,只学python肯定是不够的,个人觉得Java、Python这二门语言都熟练掌握最好。如果想成为大神,那就补充一个C++,你就是无敌的存在。

@Author:Runsen 公众号:润森笔记

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,099评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,828评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,540评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,848评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,971评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,132评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,193评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,934评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,376评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,687评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,846评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,537评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,175评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,887评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,134评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,674评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,741评论 2 351

推荐阅读更多精彩内容

  • Python语言特性 1 Python的函数参数传递 看两个如下例子,分析运行结果: 代码一: a = 1 def...
    时光清浅03阅读 482评论 0 0
  • 1 通知 老四:姐姐,十月一放假你回家不?咱爹让我下通知,让咱们仨十月一都回家。 妞:什么事?咱娘病了? 老四:没...
    九月流云阅读 778评论 46 41
  • Python语言特性 1 Python的函数参数传递 看两个如下例子,分析运行结果: 代码一: a = 1 def...
    伊森H阅读 3,057评论 0 15
  • 什么是 CSS hack CSS hack是一个编程技术,指根据浏览器的版本、功能来隐藏或显示CSS标记语言。也用...
    _Dot912阅读 246评论 0 1
  • (一) 其实在我们成长的历程就是我们的上学时间线,我们经历的人和事,也许很小,很平凡。但是谁又能说自己不是个平凡的...
    八月蜗牛阅读 168评论 1 0