程序员界里,天天都会有无数史诗级别的部落冲突上演,大到编程工具的使用,小到是该用空格仍是Tab。其中编程语言的选择,可谓是历史最悠久,最有争议的问题之一。特别对于初学者来讲,在作选择时,常常想送本身一首《凉凉》。前端
对于初学者,最频繁地听到的两种语言莫非Python与Java了。若是你问一名Java程序员,确定会建议你先学Java,由于他们认为Python像个乳臭未干的黄毛小子。java
但若是你问Python程序员,可能会获得一个彻底相反的答案,他们认为Java是刻板啰嗦的老大爷,而人生苦短,我用Python。mysql
一边是全世界使用最普遍的Java,一边是用过的人都会以为是最好的语言的Python,到底如何选择,的确很让人纠结。jquery
但别担忧,本文将会从程序员
语言特点web
学习曲线spring
职业方向sql
市场需求数据库
等多个方面为你解答“选择Python仍是Java的人生难题”编程
01人生苦短,我用Python
Python是一门拥有简洁语法的高级编程语言。一个名为Guido van Rossum的荷兰大佬在1991年设计了它。设计这门语言的初衷,就是为了让代码读起来更轻松,而且让程序员们比起用其余语言,能够写更少的代码,事半功倍。
从语言自己来讲,Python是出了名的简洁,容易上手。一个Python的粉丝曾经写过一首名为The Zen of Python (Python之禅)的诗来赞颂这门语言的优雅。如下这首诗的节选和翻译。
《The Zen of Python》
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
优美胜于丑陋(Python 以编写优美的代码为目标)
明了胜于晦涩(优美的代码应当是明了的,命名规范,风格类似)
简洁胜于复杂(优美的代码应当是简洁的,不要有复杂的内部实现)
复杂胜于凌乱(若是复杂不可避免,那代码间也不能有难懂的关系,要保持接口简洁)
扁平胜于嵌套(优美的代码应当是扁平的,不能有太多的嵌套)
间隔胜于紧凑(优美的代码有适当的间隔,不要奢望一行代码解决问题)
可读性很重要(优美的代码是可读的)
即使假借特例的实用性之名,也不可违背这些规则(这些规则至高无上)
国外著名科普暴漫xckd也有这样一张形容Python之酸爽的著名漫画。
漫画中提到了学习一门编程语言,如烧香拜佛般必作的一件事:让屏幕输出Hello World! 这句话。 在Python中,作这件事只须要写一行代码:print "Hello World!"。 可是相比之下,Java实现这句话就要繁琐得多,须要至少4行代码(不当心就diss了一下Java)。总之,用Python编程,比起其余语言,更像是直接在和电脑对话。
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World");
}
}
如此对比,Python的简洁明了和上手的容易程度就一目了然了。固然,这还只是一个例子,不少时候Python一两行代码就能搞定的事情,Java却须要多达10行,甚至20行。Python省去了像Java同样死记硬背语法和结构的时间。只须要基本的学习,你就能够读懂不少代码了。
正是由于如此简单平缓的学习曲线,经过Python的学习,你能够很清晰地了解程序员的思惟,更专一地学习编程通用的基本概念。在领悟透彻了这些知识之后,学习任何语言都是小菜一碟。许多国外知名大学,如MIT和哈佛,也渐渐地将计算机导论课程语言的选择,从Java转变成Python。Python甚至还所以进入了小学计算机教材中。
Python的流行也不是没有缘由的,它在行业与生活中的运用也十分普遍。经过丰富的Web开发框架,如Django和TurboGears,Python能够用来快速完成一个网站的开发和Web服务。典型如国内的豆瓣、果壳网等;国外的Google、Dropbox等。在系统网络的运行维护中,有大量重复性工做的地方,并须要作管理系统、监控系统、发布系统等,将工做自动化起来,提升工做效率,这样的场景Python是一门很是合适的语言。
由于Python的易于维护性,就连谷歌前段时间也将网站后台的不少代码用Python重写代替。业余时间,也能够用Python写写简单的网络爬虫,看看谁拉黑了你的微信,甚至作一个刷票机器人。
固然,说到Python,就不得不提它目前最火热的运用:人工智能和数据分析。Python拥有十分完善的数据分析生态系统。Numpy & Scipy、Pandas、matplotlib 是 Python 最基本数据分析的三驾马车,而 Jupyter notebook 则是分析的最基本交互式环境。只要涉及机器学习,深度学习,神经网络这些高大上的领域,是绝对避不开Python的。
甚至看到不少研究者的讨论帖子都建议早点把研究工具迁移到 Python 生态系统。再前几年的关于机器学习的在线课程里,Andrew Ng无论课上讲解仍是课下做业,通通一概用MatLab。可是在今年新出的深度学习课程里,他坚决果断地选择了Python做为课程讲解和做业的语言,而且强烈推荐广大学习者熟练掌握Python。在人工智能大行其道的今天,Python的运用前景和发展空间绝对是无限的。
02喝咖啡补充Java代码
虽说了这么多Python在难易程度上的优势,相对于Java,它也不是彻底没有缺点。即使Python开发的速度和效率比较高,但从运行的速度和效率来讲,Java仍是略胜一筹。
当运算量很大时,Java的独特平台设计的好处就显现了出来。Java使用的虚拟机架构和独树一帜的JIT编译模式能大大提升它的运行速度。这也是为何Java至今仍然是世界上最受欢迎的语言之一。
早在1995年,Jame Gosling就设计出了Java。 Java是一门以Class为单位,高度面向对象的高级编程语言。设计初衷是“写一次代码,在哪里均可以用。” 它能够完成任何规模的任务,因此它也是不少公司在作商业级项目的时候的广泛选择。
若是你想知道Java在实际生活中能够干什么,其实远在天边,近在眼前。若是你有一部安卓手机,几乎全部App都是用Java写成的。大型网站的后端,好比电子商务交易平台阿里巴巴,淘宝,京东也都主要使用Java开发。大型的企业级应用好比大型企业管理系统,CRM系统,ERP系统也能够用Java开发。有关通讯及网络的大型企业,好比移动、联通、电信、网通,有关金融行的大型企业,全部的银行、证券公司、互联网金融和大型管理系统,好比供应链,客户管理系统,物流系统主要的信息化都和Java息息相关。
如今愈来愈火的大数据,最主流的框架Hadoop的主要开发语言也是Java。因此不难看出,Java仍是行业应用不可撼动的老大哥。
03两种语言的“钱途”如何?
最后,来谈谈你们最关心的部分:薪资。咱们来看看最受程序员欢迎的一些互联网公司都招什么Python岗位:
1.美团
薪资:20k~40k
岗位职责: 1. 负责云数据库/云主机控制平面研发工做 2. 增强平台管理和控制功能,提高资源交付和管理效率
岗位要求:
1. 熟练使用Python,能写出漂亮的Pythonic的代码;
2. 极强的学习能力和动力,对未知技术和领域能快速掌握并实践;
3. 熟练掌握操做系统原理,Internet网络原理;
4. 有云平台开发、自动运维平台开发等大型Python项目经验者优先;
5. 在开源社群活跃并有积极贡献者优先。
2.携程
薪资:15k-25k
Python开发工程师:1. 负责运维平台设计及开发,实现运维自动化和运维效率的提升 2. 帮助开发团队改进开发流程和效率 3. 与运维团队合做,收集需求,改善运维流程,实现各类运维工具,提升运行维护做业水平 4. 负责网站监控系统、数据收集和数据分析等系统的开发 5. 结合虚拟化技术,打造和完善携程云平台
如下是加分项:
6. 熟悉大型网站运维工做,有运维开发经验者优先;
7. 有CMDB/monitoring system/agent/automation系统设计与开发经验者优先
8. 熟悉Puppet/Zabbix/Celery/RabbitMQ优先
9. 熟悉Python/Django/Tornaod优先
10. 熟悉前端开发(XHTML/JQuery/CSS)优先
11. 对OpenStack熟悉者优先
同时,数据显示,2017年在雇主发布的职位说明中,Python技能需求增速达到174%,居于首位,Spark、Hadoop等大数据技能需求增幅也十分靠前。
Java方面:
一、京东
薪资:15k-30k
须要具有如下技能:
一、熟练掌握Java基础,熟练掌握多线程开发技术,熟悉软件开发流程;
二、熟悉主流Java开源框架如struts、hibernate、spring;
三、熟练掌握HTML/CSS/Javascript/jquery/Ajax;
四、熟悉Oracle/ SQL Server/MySQL其中的一种,并能熟练编写SQL和存储过程;
五、熟悉Linux系统,掌握Linux命令。
二、网易
薪资:15k-30k
必须技能:
一、精通java,熟练运用SpringBoot、SpringMVC、Hibernate、Mybatis、struts、struts2等技术,能练使用JQuery或相关的JS框架,精通面向对象设计;
二、熟悉mysql/sqlserver数据库,了解相关的数据库维护和性能优化,熟悉Tomcat、weblogic等服务器的配置与发布;
三、全面扎实的软件知识结构(操做系统、软件工程、设计模式、数据结构、数据库系统、网络安全等);
四、熟练SQL语句的编写;思惟活跃,具有必定的软件设计能力及良好的软件工程思想;
04两种语言综合比对
敲黑板,划重点!
从语言自己,Python语法简洁,容易上手,而Java以独特的架构和较快的速度著称。
Python做为最近愈来愈火的语言,是大数据和人工智能的主力军,同时也在网页开发中普遍运用。而Java则垄断了企业级应用的开发。二者工程师的薪资也都十分可观。
大连好的男科医院 http://mobile.nk0411.com/