铁打的Java最终还是败给了Python!

228 篇文章 1 订阅
228 篇文章 1 订阅

在这里插入图片描述
AI 前线导读: 近年来,Python 的热度持续上涨,在 PYPL 最新发布的 7 月编程语言指数榜中,Python 流行指数再次上涨 5.5%,不只霸牢热门编程语言榜首之位,而且逐渐与 Java 拉开了差距。然而就在形势一片大好之际,Python 之父 Guido van Rossum 却宣布永久退出 Python 社区决策层。Guido van Rossum 在创建 Python 之初,并没有想到它会变得如此受欢迎,正如我们也想象不到,创始人离开社区决策层之后,可能会给 Python 的未来带来什么样的变数。

Python 彻底超越 Java,成为最热门编程语言

根据 PYPL 近日发布的 7 月编程语言指数榜,Python 保持上涨趋势,本月流行指数再次上涨 5.5%,以 23.59% 的份额甩开 Java 排名第一,并逐渐与 Java 拉开差距。
在这里插入图片描述

PYPL 全称是 PopularitY of Programming Language Index,这一流行度指标是基于 Google 上搜索相应编程语言教程的频率来创建的:编程语言教程的搜索越多,该语言就越受欢迎。原始数据来自 Google Trends。

其实,在今年 4 月份的时候,Python 刚以 5.2%的巨幅增长超过 JavaScript 爬升到 PYPL 指数榜的第二位,成为了受欢迎程度增长最快的编程语言。当时 Java 的流行度虽然日渐下降,但仍然是最受欢迎的语言。

万万没想到,5 月份,Python 再次以 5.5% 的巨幅增长超越 Java,荣登榜首之位,如今又一次以 5.5% 的增长逐步与 Java 拉开差距。

在这里插入图片描述

使用简单、上手快,优质的文档和丰富库,再加上活跃的开源社区,都是 Python 崛起的重要原因,而人工智能尤其是机器学习的发展更是功不可没。其实,无论在哪个榜单中 Python 都保持着非同寻常的增长速度:

HackerRank 2018 年开发技能报告,当下最受欢迎的编程语言,Python 稳居前三;
ranked.com 的排名中,Python 是 2017-2018 年最受欢迎的人工智能编程语言(C++ 排名第二,R 未上榜)
GitHub 2017 年度报告中,Python 超越 Java 成为第二受欢迎的编程语言。
如今,Python 可以认为是 AI 时代的头牌编程语言,但当初 Guido van Rossum 创建 Python 时,并没有料想到现在的光景。

Python 的崛起

1989 年 12 月,荷兰计算机科学家 Guido van Rossum 为自己设定了一个圣诞节项目。因为不满于其他编程语言存在的缺点,他想自己开发一门语言。他的原则很简单,首先,它应该易于阅读,每个代码块都使用缩进的空格包围,每行不会很长,也不使用花括号。其次,用户可以创建自己的专用模块包,然后其他人可以基于这些包开发新的程序。第三,他想要一个“简短、独特且略带神秘”的名字。因为他是英国喜剧团体 Monty Python 的粉丝,于是就把这门语言叫作 Python,而软件包仓库被称为 Cheese Shop。

差不多 30 年之后,van Rossum 说,“我当时肯定没有想过这门语言会如此受欢迎”。在过去的 12 个月里,美国人使用谷歌搜索 Python 的次数远远超过搜索金·卡戴珊。自 2010 年以来,Python 的搜索率增加了三倍,而其他编程语言的搜索率则持平甚至下降。
在这里插入图片描述

Stack Overflow 的数据显示,Python 的受欢迎程度不仅在专业开发人员当中有所增加——其中近 40%的人在使用它,还有 25%的人打算使用它——而且在普通民众当中也很流行。Codecademy 是一个拥有 4500 万用户的编程语言学习网站,该网站表示,到目前为止,网站增长量最大的需求来自那些希望学习 Python 的人。众所周知,Python 社区已经为 Cheese Shop 增加了超过 145,000 个软件包,涵盖了从天文学到游戏开发等各个方面的内容。

虽然这种现象令 van Rossum 感到兴奋,但作为“仁慈的生活独裁者”,他发现有必要对目前的形势进行监督,但这对他来说沉重不堪。他担心自己会成为别人的崇拜者。他说,“这种名誉让我感到不舒服,有时我觉得我所说或所做的一切都被放大了”。7 月 12 日,他辞职了,让 Python 社区进行自我管理。

这位时髦的统计学家惊艳了所有人

Python 并不完美。相比之下,其他编程语言具有更高的处理效率和专业能力。

C 和 C++ 让用户可以更好地控制在计算机处理器内发生的事情,Java 非常适合用于构建大型的复杂应用程序,JavaScript 是 Web 应用程序的首选语言。无数人在为各自推崇的语言进化贡献着自己的力量。Python 简单的语法降低了学习门槛,而且便于分享,以及庞大的第三方软件包让它成为一门优秀的通用语言。它的广大用户群和应用范围足以说明它的多才多艺。中央情报局将它用于黑客攻击,Pixar 用它来制作电影,谷歌用它来抓取网页,Spotify 用它来推荐歌曲。

Cheese Shop 中有一些极具诱惑力的软件包可用于人工智能(AI)领域。用户可以用它们来创建神经网络,模仿大脑内部的连接,从大量数据中识别出模式。van Rossum 表示,Python 已成为人工智能研究人员的首选语言,他们为此开发了大量软件包。

然而,并非所有的 Python 用户都如此雄心勃勃。Codecademy 的老板 Zach Sims 认为,他的网站的很多用户希望可以获得对“非技术”工作有帮助的技能。例如,营销人员可以使用 Python 创建统计模型,大学讲师可以使用 Python 检验成绩分布是否合理。(即使是《经济学人》的记者通常也会使用 Python 开发程序从网上抓取数据。)

对于长期使用电子表格的专业人士来说,Python 就显得更有价值了,花旗银行(Citigroup)甚至为实习分析师推出了 Python 速成课程。就业网站 eFinancialCareers 的一份报告显示,在 2015 年第一季度和 2018 年之间,与 Python 相关的岗位增加了近四倍。

但这并非没有风险。贝恩咨询公司(Bain&Company)合伙人 Cesar Brea 警告说,在交易中最可怕的事情是“有人学会了一种工具,却不知道背后的原理”。如果没有适当的监督,那些使用 AI 开发库的新手可能会耍花招。波士顿咨询集团合伙人 Bernd Ziegler 表示,他的公司会将此类分析任务交由他的数据团队处理。

Rossum 的万能机器人

解决非专业人员问题的一个方法是适当地向他们教授语言的奥秘。Python 在 2014 年已经是美国大学最受欢迎的入门语言,但它的教学通常仅限于那些研究科学、技术、工程和数学的人。一种更激进的建议是向所有人甚至是小学生提供计算机科学课程,以此来吸引年轻人。Code.org 的老板 Hadi Partovi 指出,现在有 40%的美国学校提供此类课程,高于 2013 年的 10%。大约三分之二的 10 到 12 岁的学生都拥有 code.org 网站的账号。也许是对充满自动化工作的未来感到不安,90%的美国父母希望自己的孩子学习计算机科学。

Python 的增长还将持续多久,没有人能说得准。过去也有占主导地位的计算机语言,现在却只能躲在暗处黯然伤神。20 世纪 60 年代,Fortran 曾风靡世界。作为初学者的教学语言,Basic 和 Pascal 都有过光辉的时刻。Partovi 本人也极力推崇将 JavaScript 作为 Code.org 核心课程大纲中的编程语言,因为它现在仍然是 Web 的标准选择。

任何计算机语言都不可能是真正通用的,专业化仍然很重要。尽管如此,在漫长的圣诞假期,van Rossum 做了一件令人难忘的事情。他不是救世主,但却是一个非常聪明的孩子。
欢迎工作一到五年的Java工程师朋友们加入Java技术交流:611481448
群内提供免费的Java架构学习资料(里面有高可用、高并发、高性能及分布式、Jvm性能调优、Spring源码,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点的架构资料)合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!

喜欢小编轻轻点个关注吧!

好的,以下是一个简单的Android日历控件的demo: 1. 在布局文件中添加日历控件: ```xml <com.example.calendarview.CalendarView android:id="@+id/calendar_view" android:layout_width="match_parent" android:layout_height="wrap_content" /> ``` 2. 创建一个CalendarView类,并继承自ViewGroup,实现日历控件的布局和初始化: ```java public class CalendarView extends ViewGroup { private Calendar calendar; private int year, month, day; private int selectedYear, selectedMonth, selectedDay; private OnDateSelectedListener listener; public CalendarView(Context context) { super(context); init(); } public CalendarView(Context context, AttributeSet attrs) { super(context, attrs); init(); } public CalendarView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); init(); } private void init() { calendar = Calendar.getInstance(); year = calendar.get(Calendar.YEAR); month = calendar.get(Calendar.MONTH); day = calendar.get(Calendar.DAY_OF_MONTH); selectedYear = year; selectedMonth = month; selectedDay = day; setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { showDatePicker(); } }); } private void showDatePicker() { DatePickerDialog dialog = new DatePickerDialog(getContext(), new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) { selectedYear = year; selectedMonth = month; selectedDay = dayOfMonth; calendar.set(year, month, dayOfMonth); if (listener != null) { listener.onDateSelected(year, month, dayOfMonth); } invalidate(); } }, year, month, day); dialog.show(); } @Override protected void onLayout(boolean changed, int l, int t, int r, int b) { // 布局日历控件的子View } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { // 测量日历控件的宽高 } public void setOnDateSelectedListener(OnDateSelectedListener listener) { this.listener = listener; } public interface OnDateSelectedListener { void onDateSelected(int year, int month, int day); } } ``` 3. 在布局文件中添加一个TextView,用于显示选中的日期: ```xml <TextView android:id="@+id/date_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20sp" /> ``` 4. 在Activity中初始化日历控件和TextView,并设置日期选择监听器: ```java public class MainActivity extends AppCompatActivity { private CalendarView calendarView; private TextView dateText; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); calendarView = findViewById(R.id.calendar_view); dateText = findViewById(R.id.date_text); calendarView.setOnDateSelectedListener(new CalendarView.OnDateSelectedListener() { @Override public void onDateSelected(int year, int month, int day) { dateText.setText(year + "-" + (month + 1) + "-" + day); } }); } } ``` 这样就完成了一个简单的Android日历控件的demo。当点击日历控件时,弹出DatePickerDialog供用户选择日期,选择完后更新界面并回调给监听器。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值