Python和Java二选一该学啥?
简单的说,无论学任何语言,都值得把python当作辅助技术。学Python作为主力语言,也最好有其它语言的知识背景。Java应用广性能好工程性强码农多轮子多,除了写起来啰嗦点没啥坏处(这还有IDE扶着),学好了不愁没饭吃,学得不太好其实也不愁。
Python入门简单应用还算广轮子多,工程性不好性能也不太好,关键在于门槛低并且看起来跨过门槛就无所不能。但是实际上如果不够精通的话会很坑,而精通其实也不简单。学好了不愁没饭吃,并且可以做到少干活多吃饭,学不好愁死你。
如果是与写代码关系比较密切的专业,并且你在此之前没有充分了解过任何一门OOP语言,那么推荐学Java;如果早就熟悉了一门OOP语言并且学得比较好,可以考虑Python;如果是不怎么密切只是要接触一下编程,推荐学Python。自制力强学java,自制力不行学python,选择so easy!画得不好,勿喷。
经知友提醒,对图中坐标轴含义进行说明,
横轴表示学习时间,这里没有问题,而纵轴在这里表示学习的成就感,如果是学习难度的话,两张图应该颠倒下位置。
至于前景,目前来看,Java分为两大方向,移动和Web。移动开发这一块其实就是安卓了,而Web就比较广了,Server、框架,组件,业务逻辑,Map-Reduce等都可以由Java来开发。Java的语言特点是重,对于初学者而言,往往纳闷一个简单的小例子怎么要这么多代码,这都源自其纯OOP的原因。
Python的应用场景蛮多的,从Web到和计算平台都有轮子可供使用,但其在科学计算领域占有重要角色,如时下兴起的机器学习,人工智能,如果你学习Python的话,建议你也顺带了解下数据科学。
声明:这是一篇容易引起撕逼的问答,为了祖国和谐,人民安康,请各位看官尽量理性讨论。正巧我前两天写了一篇 Java和Python现在都挺火,我应该怎么选 的文章,正好对题,就此回答一波。同时,这篇文章是面向一些初入行的朋友进行一些相对中肯一点的分析和建议而已,虽然有浓厚的个人色彩,但我还是尽量以事实说话,以代码说话,大牛们就不要拿自己的牛逼经验来这里装逼了,当然,你如果非得来跟我撕,哥们儿我奉陪。另外,由于文中以自己所在的机构蜗牛学院所做的一些事情来举例,如果你认为这是软文广告,请止步于此。强哥打广告,都是硬的,软的不来(做了**还要立**的事哥不屑)。好吧,咱们进入正题。
我先问大家一个问题,为什么中国人用刀叉是很容易上手的一件事情,而外国人用筷子,应该是他们在中国吃饭时最痛苦的一件事情吧。为什么会这样呢?
其实原因非常简单,当我们学会了一门技术难度要求更高的技能以后,再去降级学习难度更低的技能是非常容易的一件事情,反之则不然。
这个道理同样适用于我们的学习,强哥对Java和Python都有较为丰富的使用经验,当然,Java的应用经验更丰富,代码量比Python更多一些。正是由于我们丰富的Java经验,当蜗牛学院的软件测试方向需要为学生讲授Python课程时,我们所有的讲师都会被分配任务去研究Python,并完成教案编写,教材编写,案例编写。我们会发现,使用Python是一件非常容易的事情。基本上来说,解决问题的方式,方法,算法,思路,所有的编程语言都一样。我们去学习一门新的编程语言的时候就会容易很多,只需要关注与我们所熟悉的编程语言在语法和使用上存在哪些方面的不同即可。
那么问题来了,蜗牛学院也要讲授Python,那到底是Python值得学习还是Java呢?
这里面有三点我必须说破,却很少有人从这个角度来给大家做分析:
- 如果一个不懂2-3门编程语言的人,或者很少使用到Java或者Python,来告诉你Java好还是Python好,这是赤裸裸的不负责任。如果这个人用Python并且混得还稍微可以,他一定会告诉你Python好,如果这个人用Java,他一定会告诉你用Java好。如果两个语言都没有用过的键盘侠,他会告诉你语言都是相通的,不要纠结。每一个人都说得好有道理的样子,于是让你无从选择。强哥熟练使用8种以上的编程语言,所以才稍微感觉有点资格,来说一说这两门编程语言。虽然,从我个人的角度在我心目中,编程语言只有两种,第一种是Java/C,第二种是其它。但是我不能通过这种偏激的方式来误导大家。
- 我们必须要明白Java和Python的各自定位。Java源自C和C++的技术体系,于1995年推出,定位于给专门的程序员设计大型的复杂分布式应用而设计。而Python是1991年推出(比Java还早)主要面向于系统管理,科研,教育和非程序员群体等。大家一定要理解清楚一个现实,这个世界上并不是只有程序员才需要写程序,还有很多群体需要写程序。比如蜗牛学院在这方面的定位就很清楚:Java开发全栈方向的学生学习Java编程和JavaScript编程,软件测试方向的就业班学员学习Python(因为他们并非专业的程序员群体),而软件测试方向下属的自动化测试开发高级研修班,是Java/Python两个方向同时存在。那你说你觉得哪个更好呢?
- Python比Java早4年出身,但是在国内为什么几乎到2010年之后,Python才逐渐火起来呢?原因很简单,因为我们都太现实了。由于大数据的盛行,由于自动化测试方面的人才需求,以及对于互联网的一些基础应用系统的的开发,企业加大了对Python人才的招聘力度(当然,与Java比还有较大的差距),由于有一门感觉很简单又能赚大钱的编程语言出现了,简直是人类的福音啊,所以火起来了。这一点与近几年虚火很旺的Web前端开发很像,其实绝大部分人没什么技术能力,但是工资却拿得不错。这不是个人的原因,企业也很浮躁,仅此而已,一旦虚火泄了,谁能撑到最后?请各位自行脑补。
也不知道大家从哪里得来的一些“误导”,觉得Python简单,Java很难,所谓"人生苦短,我用Python"之类的。一方面,Python上手的确相对要快一点而已,仅此而已。解决复杂问题时,没有人会觉得难点在使用哪门编程语言上,而是解决这个具体问题的算法思路上。这一点各位务必要拎清这个思路。另外一方面,由于Python近几年的火爆,不排除一些人故意散播一些言论,来误导大家使用Python。这件事情就像这么多年,一直有人觉得学习软件测试要容易一些一样,很多人也是报着通过软件测试进入这个行业,选择了一个自己认为没有难度的领域进入。但是,强哥发现,当3,5年过去了,很多测试人员目前最焦虑的就是,自己技术不够深,在企业当中越来越没有竞争力了。所以最终,还是得硬着头皮研究深层次的测试技术,无论是编程,网络,数据库,协议,还是自动化测试,性能测试等。但是这个过程非常痛苦,就像我说的那样,这个世界上99%的人都会选择一条容易走的大路,因为懒惰,因为恐惧。而成功是属于那1%的人一样。这句话同样适用于编程语言或者技术功底的训练上。
其实大家如果有过实际的编程经验,我们不妨认真想想,当我们研发一个系统的时候,究竟会用到哪些技术?
那些什么需求分析,跟测试撕逼,跟客户撕逼,跟老板撕逼的那些烂事我们就不提了。我们就来看看纯技术层面的一些基本要求:数据库,Linux命令,网络协议,接口设计,算法思路,框架,改BUG,编程,前端交互。你应该懂我,利用不同的编程语言编写程序只是研发过程中众多你需要掌握的技术当中的一块而已。其它,与你用哪们编程语言无关,这一点如果你都理解不了,觉得强哥在忽悠你的话,那请自便吧。或者换一个角度,会一门编程语言,而不是完整技术体系,就能当技术大牛的情况,我觉得可能只有在你们家村里可以行得通,因为就你一个人懂。
当然,以上我们讨论是的纯粹的基于技术定位,你也许可以反驳我说,难道做测试的都得懂编程,难道做Python的都不行?
这当然不是这样的,任何一个领域都有大神,随着经验的丰富都能够解决很多难题。但是,那是很久以后的事了,我们现在讨论的是,你还在纠结Java还是Python的这件事,毫无疑问,这个时候,你仍然还是一个菜鸟,甚至连门都没入。强哥建议大家,不要因为什么事情简单,所以我要去做,无论是学习编程语言,还是其它,这是最要命的一个出发点,会毁了你的未来。
下面我给大家列出一段我分别使用Java和Python写的发送一个HTTP协议的一段代码。这段代码收录在强哥今年年底即将出版的一本自动化测试开发的高级教程里面,全书均采用Java进行代码演示,明年,我会有一本几乎一模一样的但是是使用Python进行代码实现的书。之所以能够这样,原因很简单,Java能解决的基本问题,Python也能解决,当然,Python能解决的,Java一样可以。但是在干重活儿方面呢,Java更成熟一些。
Java的代码,实现Agileone系统的需求提案新增功能:
// 实现需求提案的新增
public void doAdd() {
// 先发送POST请求实现登录
String postUrl1 = "http://localhost/agileone/index.php/common/login";
String postData1 = "username=admin&password=admin&savelogin=true";
String resp1 = hr.sendPost(postUrl1, postData1);
System.out.println(resp1);
// 对sendPost()方法进行了额外的封装,一次封装,处处使用
// 再发送POST请求完成新增
String postUrl2 = "http://localhost/agileone/index.php/proposal/add";
String postData2 = "type=Enhancement&importance=Medium&"
+ "headline=&"
+ "content=这是用于Java代码测试的内容-10009&processresult=";
String resp2 = hr.sendPost(postUrl2, postData2);
System.out.println(resp2);
}
我们再来看看Python实现同样功能的代码:
# 导入urllib和http库
import urllib
import http.cookiejar
# 利用cookiejar自动管理整个过程中的Cookie
cj = http.cookiejar.CookieJar()
opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cj))
# 利用urllib构造POST请求并处理登录
logindata = { "username" : 'admin', "password": 'admin', "savelogin" : "true" }
data_encoded = urllib.parse.urlencode(logindata).encode('utf-8')
login = opener.open("http://localhost/agileone/index.php/common/login/", data_encoded)
print(login.read())
# 发送Post请求提交新增需求提案
proposaldata = {"type":"Requirement", "importance":"medium",
"headline":"Headline from Python - 10010",
"content":"Content from Python - 10010", "scope":"1",
"processresult":""}
data_encoded = urllib.parse.urlencode(proposaldata).encode('utf-8')
proposal = opener.open("http://localhost/agileone/index.php/proposal/add", data_encoded)
print(proposal.read())
相信大家很难区分所谓的简单与难。因为代码几乎都很类似,这种情况发生在很多场景,解决很多问题时都是一样的。其实很多人之所以宣传Python简单易学,我们抛开某些可能的商业目的或者社会心理的原因之外(商业目的还用说吗,比如最简单的例子,蜗牛学院专门做Python培训的,当然我会不顾一切地说服你,Python是最好的编程语言,没有之一,Java都是垃圾,都是落伍了的,这种睁眼说瞎话的还少吗?因为你很懒,懒得去求证真相而已。社会心理就是我自己是搞Python的,我怎么能说自己做的技术很Low逼呢,我自己是搞Java的,Java必然是最牛的啊)。让我们单纯从事实出发,Python简单的原因只是因为,我们使用Python时,我们可能跟个傻子一样,在直接调用别人给我们写好的代码接口而已,而Java的很多处理相对要原生一点,我们写的代码要稍微多一点。但是只要完成封装,代码就很难说谁更简单了。而这个封装的过程,其实才是编程最重要的部分,如果这一部分我们都不愿意亲自参与,也不想知道个中实现原理,你想想,你怎么可能成长为一个优秀的程序员,还有天理吗?让那些勤奋的人,情何以堪。
这一点就像C语言,由于C语言更原生,更底层,几乎没有提供太多封装好的代码接口,很多问题的解决都需要我们自己写代码,所以这也是为什么很多人觉得C语言很难,道理是一样的。但是,牛逼的人,都更喜欢自己创造。相比起C语言来说,Java和C#之类的,为我们提供的代码接口要丰富得多,我们使用起来其实也要容易得多,结论就是,在C语言面前,其它高级语言都太简单了,因为封装了太多可以直接用的类库和接口。所以,要成长为一个高级程序员,一定不是写写简单的应用而已,比如Java的源代码是必须要去学习的,我们一定要知道这些封装好的代码接口的实现细节。否则,跟使用Python封装好的东西,又有何本质区别呢?
所以,请不要再纠结了。强哥的经验,如果你把Java作为你的人生的第一门用心学习的语言,那么你只需要花极短的时间,就可以基本学会C++,JavaScript,PHP, Python,R,C#,Objective-C,Swift,Go(是的,每一门语言都可以在极短的时间学会,只是具体的问题解决和一些坑需要多积累一些实战经验而已)。但是反过来,如果你把Python作为你的第一门语言,问题就回到外国人使用筷子这件事情上了,答案不言而喻。
所以,你未来如果要立志成为一个专业的程序员,建议先学习Java(或者C#也行,两者有很多原理上很像,实在不行,C/C++也可以哦),那是给程序员的专属语言,是有门槛的,所以你才能够建立自己的竞争力。如果你只是想玩玩,感受一下,或者是把编程语言作为一个工作中的工具而已,Python是个不错的选择。这是面向学习的建议,如果是在企业中真实做项目,那就不要纠结了,项目需要什么,咱们就学什么,不需要那么多理由,干,才是真理。
锤子好用还是榔头好用?
Java好还是Python好?
为什么非得二选一?
浮躁,一个吃饭的工具而已,搞技术的,通吃它们不就完了吗,你再也不会纠结了,这,才是一个技术人员该有的状态。难道不是吗?
注:本文为蜗牛学院CEO邓强所撰,原文链接http://www.bossqiang.com/article/4,转载请联系我方获得授权并注明原文出处。
生态都很庞大,Python学术界用的偏多,Java工业界偏多。Python适合个人从0开始干,Java适合大团队。Python在科学计算领域用起来很爽,爬虫也是,Java也支持,但是觉得没有Python简单。Web方面,大型网站还是Java支持好,Python支持的也不错。大数据框架一般都提供Java和Python的接口,但是Java的接口更好,像Hadoop就是Java写的,Spark是Scala写的(也是JVM语言)。Python在现在这个AI盛行的年代,大放光彩;Java在Android开发(移动互联网)也一时风光无限,最新的Kotlin也是JVM语言。个人觉得Python很简单,适合快速上手,用途也很多,但是动态语言写起来一时爽,重构要命。建议先学Java,工作好找。再学Python,可以打辅助,这年头不精通两门编程语言,不好意思说自己是学计算机的。下面附一张以前见过的语言层面的对比图:
选Java,自学Python。
来实力干货回答一波。
这个问题嘛,。如果你问一名Java程序员,肯定会建议你先学Java,因为他们认为Python像个乳臭未干的黄毛小子。但如果你问Python程序员,可能会得到一个完全相反的答案,他们认为Java是刻板啰嗦的老大爷,而人生苦短,我用Python。
但别担心,优达菌将会从
- 语言特色
- 学习曲线
- 职业方向
- 市场需求
等多个方面为你解答“选择python还是Java的人生难题”
语言历史
- Python:生而为简
Python是一门拥有简洁语法的高级编程语言。一个名为Guido van Rossum的荷兰大佬在1991年设计了它。Rossum设计这门语言的初衷,就是为了让代码读起来更轻松,并且让程序员们比起用其他语言,可以写更少的代码,事半功倍。
- Java:出生就想当老大
而Jame Gosling在1995年设计了Java。 Java是一门以Class为单位,高度面向对象的高级编程语言。Java的设计初衷是“写一次代码,在哪里都可以用。” Java可以完成任何规模的任务,所以它也是很多公司在做商业级项目的时候的普遍选择。
语言本身
- Python: 语法简洁,容易上手
- Java:语法稍微复杂
从语言本身来说,Python是出了名的简洁,容易上手。一个Python的粉丝曾经写过一首名为 The Zen of Python (Python之禅)的诗来赞颂这门语言的优雅。以下这首诗的节选翻译。
优美胜于丑陋(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服务。典型如国内的豆瓣、果壳网等
- 自动化系统网络的运行维护中,大量重复性工作的地方,并需要做管理系统、监控系统、发布系统等。
- 人工智能和数据分析
- Java
- 安卓app开发
- 大型网站的后端
- 大型的企业级应用
- 大数据
最近一段时间流行度越来越高的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教授。再前几年的关于机器学习的在线课程里,Andrew Ng不管课上讲解还是课下作业,统统一律用MatLab。但是在今年新出的深度学习课程里,他毫不犹豫地选择了Python作为课程讲解和作业的语言,并且强烈推荐广大学习者熟练掌握Python。在人工智能大行其道的今天,Python的运用前景和发展空间绝对是无限的。
虽然说了这么多Python在难易程度上的优点,相对于Java,它也不是完全没有缺点。即使使用Python开发的速度和效率比较高,但从运行的速度和效率来说,Java还是略胜一筹。当运算量很大时,Java的独特平台设计的好处就显现了出来。Java使用的虚拟机架构和独树一帜的JIT编译模式能大大提高它的运行速度。这也是为什么Java至今仍然是世界上最受欢迎的语言之一。
如果你想知道Java在实际生活中可以干什么,其实远在天边,近在眼前。如果你有一部安卓手机,几乎所有App都是用Java写成的。大型网站的后端,比如电子商务交易平台阿里巴巴,淘宝,京东也都主要使用Java开发。大型的企业级应用比如大型企业管理系统,CRM系统,ERP系统也可以用Java开发。有关通信及网络的大型企业,比如移动、联通、电信、网通,有关金融行的大型企业,所有的银行、证券公司、互联网金融和大型管理系统,比如供应链,客户管理系统,物流系统主要的信息化都和Java息息相关。现在越来越火的大数据,最主流的框架Hadoop的主要开发语言也是Java。所以不难看出,Java还是行业应用不可撼动的老大哥。
薪资
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方面:
1、京东
薪资:15k-30k
需要具备以下技能:
1、熟练掌握Java基础,熟练掌握多线程开发技术,熟悉软件开发流程;
2、熟悉主流Java开源框架如struts、hibernate、spring;
3、熟练掌握HTML/CSS/Javascript/jquery/Ajax;
4、熟悉Oracle/ SQL Server/MySQL其中的一种,并能熟练编写SQL和存储过程;
5、熟悉Linux系统,掌握Linux命令。
2、网易
薪资:15k-30k
必须技能:
1、精通java,熟练运用SpringBoot、SpringMVC、Hibernate、Mybatis、struts、struts2等技术,能练使用JQuery或相关的JS框架,精通面向对象设计;
2、熟悉mysql/sqlserver数据库,了解相关的数据库维护和性能优化,熟悉Tomcat、weblogic等服务器的配置与发布;
3、全面扎实的软件知识结构(操作系统、软件工程、设计模式、数据结构、数据库系统、网络安全等);
4、熟练SQL语句的编写;思维活跃,具备一定的软件设计能力及良好的软件工程思想;
总结:
从语言本身,Python语法简洁,容易上手,而Java以独特的架构和较快的速度著称。
Python作为最近越来越火的语言,是大数据和人工智能的主力军,同时也在网页开发中广泛运用。而Java则垄断了企业级应用的开发。两者工程师的薪资也都十分可观。
文章到这里,你还不会选的话,我也帮不了你们了233...
祝编程学习愉快。
最后安利下我们的Python课程,零基础入门,销量绕地球三周(逃
python基础教程_python培训班_python快速入门-优达学城(Udacity)官网 | Udacity当然我们还有Java课程(打起来打起来
Java入门纳米基石学位_Java入门课程_零基础学Java-优达学城(Udacity)官网Udacity | Udacity问题参见若干年前,PHP和JAVA二选一该学啥;或者nodeJs和JAVA二选一,该学啥。
有些问题,很有意思。
学校让你二选一。
你就真的二选一啊。
老师让我们好好学习的时候。
我都知道,不喜欢的课。
可以逃掉。
上课的时候可以发呆。
学校的话,真正听的人又有几个?
学校让你二选一。
反正要是我,
我一定会说。
我为什么要听你的。
我两个都要!
语言是什么?
倾城哭红着眼睛问我,语言比我还重要吗?
我不知道,我没法回答。
因为我是一个Javaer。
Javaer是不是比倾城重要,这个问题本身已经不重要了。
重要的是倾城是一个Pythoner。
在Javaer和Pythoner之间,是永恒的仇恨和数不尽的恩怨,鲜血和断骨早已经磨平了两种流派任何一丝丝共存的可能性。
当我很小很小的时候,我就被教导,Javaer是源代码世界里最纯正的血统,Javaer有九界十三天,而我们就在【架构天】下的【星信系】下的【异步大陆】中的【线程院】里的【变量国】。
我不知道【变量国】有多大,但是我知道,就算是用最快的飞舟,也也要飞行数百年,才可以到达【变量国】的边界线。
在我的世界里,从来不知道有Cer,有Phper,有NoderJSer,有Goer,更不知道有Pythoner,在【线程院】里,修行这些邪门妖术,会被精炼血魂,受尽苦难,日夜哀嚎,不得转生。
我是【变量国】下【九县土镇】里的最有天赋的【编序员】,离【程工师】只有一步之遥,这是【九县土镇】中从来没有得到的最高荣耀。
我擅长上阵杀敌,在和【虫妖界】的撕杀中,未曾一败。【整型术】,【浮点术】,【字符术】都是我最擅长的功法,而我其实已经可以召唤【流云端】,和【阿里天】沟通信仰,获取【云端的力量】。
我从未想过有一天,我会认识一个Pyhoner的姑娘。
Javaer战阵整齐,铁甲分明,流金助阵,兵种复杂却又配合无间,旌旗指向,所向披靡。
我早就习惯了这种战阵打法,打一百个军团,Javaer是这么多人,打一个军团,还是这以多人,打一个人,还是这么多人!
战阵的理念,早就深入到了Javaer的灵魂深处,【程工师】之上,就是【架构师】。
偶尔听到有【虫妖界】的妖灵在自爆之前疯狂的嘲笑,提到过Pythoner,自从那天我刚问出来半句,就被师兄直接封住嘴,绝口不提之后,我就明白了。
“这里有的是大人物,你连名字都不可以提,记着,这是【禁忌之术】”。
好的,我知道了这是【禁忌之术】,而且我真的没有一点点兴趣。
我更希望去学习【数据之构】,【灵魂系统】,【兵甲原理】等这些课程,而不是单纯的【爪语】。
我做过很多轮岗,去过很多战场,在【运维之光】,我负责所有战阵的调度,监控,负载,替换,在敌军千亿级血团攻击而来时,确保每一道防线都安然无恙。
唯一的遗憾就是,我的【爪语】做不到瞬发,吟唱时间太长了,有没有更快捷的瞬发法术?
我不知道,也不敢去改动任何的【爪语】。
可是我没想到,我在战场上捡到了一个银环,改变了我一生的命运。
银环里有了一个清丽秀气的身影,当我第一眼看到她时,就再也忘不掉她笑起来的样子。
她告诉了我,我可以用更快的方式,去构建【运维之光】的体系,我可以将原来七十二柱香的吟唱时间,缩短至三息!
三息!每过一息,就有无数的同胞战死沙场,从七十二柱香,缩短到三息的吟唱法,我怎么能够放弃?
所以我偷偷摸摸的练习了她教我的【命行术】,修行【命行术】之后,我镇守的区域,伤惨率从78%,直线下降到2%。
镇守大将军广亮,意味深长的看着我,只告诉了我一句话:只要你能降低我兄弟的伤残率,就算是天塌下来,我也帮你顶着。
我想,广亮大将军一定发现了什么。
然后他真的做到了他说的事情,很快,上界发现异常,派来巡察使毛星星,他们发现【九彩山光】笼罩下的大地,就是我镇守的【运维之光】。
广亮大将军站在了我的面前,可是他根本抵不住毛星星的随手一击,这一击,叫做【变更】。
他碎成了一地,却为我争取了2息的时间。
而我以我余生之命,将吟唱时间从3息,强行压缩到2息,遁到虚空世界。
可是毛星星派出来的分身【简单需】,尾行我进入虚空世界,危难关头,是倾城救了我,而她也因为我,而身负重伤。
她这才告诉我,她不是Javaer,她是Pythoner。
毛星星将广亮大将军所有的兄弟,都暴晒三月,割腹食骨,任意欺凌,只要我做到一件事,将倾城送出,自刎谢罪,他就可以放掉广亮大将军所有的兄弟。
“只要你能降低我兄弟的伤残率,就算是天塌下来,我也帮你顶着。”这是广亮大将军,告诉我的。我现在才明白,原来他说的伤残率,并不是指的战场。
禁忌之术一出,全镇殉葬。广亮大将军早就明白了,哪怕丢掉了一百个前沿战场,都不能允许禁忌之术有一点点复生,这是天宫铁律,Javaer祖训。
所以倾城看我的眼神,充满了绝望和痛苦,任何一个人被自己最爱的人背叛,都会是心如死水。
我趁着倾城不备,出手破解了她的【本命天言】,此时的她,连自爆的可能都没有。
你问我,语言比你重要么?
我会说,语言不会比你更重要,可是,语言的背后,是广亮大将军的千万兄弟的命,更是他对我的信任和托付。
这比任何语言都重要。
我没有跟倾城有任何的解释,我拖着她的头发,走过“恶魔泥沼”,打断了她的两条腿,Pythoner最擅长的就是灵活多变,现在她还能怎么变?我要救我的兄弟,就一定不可以让倾城跑掉。
当来到毛星星面前的时候,毛星星整个人好像看到了这个世界上最好笑的事情,他指着地上缩成一团,因为寒冷而不停颤动的倾城大笑:这就是救了你的Pythoner?
你对救你的人,就是这么感恩吗?在你的心里,还真的觉得这些Javaer的命更值钱吗?
我没说话,只是拿出来了我的【定时之剑】,静静的刺在自己的咽喉。
毛星星笑的喘不过气来:“你以为我不知道你已经是【JP双修】?你以为我不知道你已经和倾城通过【异构】融为一体?你知道我在这里布下了【内存】法阵,让你无法运转,所以你要用倾城给我致命一击,对不对?”
“可是你不知道啊,【内存】法阵,对Pythoner一样有效啊,你知道上次我无意间被反噬而受伤,所以这次你想剑起偏锋杀死我?哈哈哈哈,受死吧”
我的心里很惶恐,但是又很平静,我已经做到了我能做到的一切,看到毛星星铺天盖地的【变更术】刺向眉心,我知道一切都已经结束了。
因为我,早就成了【架构师】!我在虚空世界,遇到了修真院,晋阶成功,已经是名符其实的【架构师】!
在我的眼里,才知道这个世界的本源是什么样子的,所谓的语言,所谓的吟唱时间,所谓的变量,全部都为我所用,我就是这个世界唯一的主宰!
什么人工智能,什么运维,什么自动化,什么需求变更,什么负载均衡,什么分布式,什么大数据,什么缓存,什么并发,在我眼里,完全没有了Pythoner和Javaer的差别,我由我心意,选择我喜欢的语言和法术去抓取九天之外的元气,我由我心意,幻化成拦截器,过滤器,定时器,三器其下,无人可挡!
在修真院里,我学到最多的就是, 不同的语言都有它不同的应用场景,所谓的术语,都不过是【顺序】,【循环】,【控制】三大流程节点而已,用这些流程,构造出来了【设计模式】,再进而面向【未来】,成为【架构师】!
我早就超越了语言的束缚!以毛星星的眼界,怎么可能理解,在一个架构师的眼里从来没有语言,只有工具!
所以他败了!
轻轻一指,万众归一,我给他他最致命的一击,告诉他:“等【排期】吧”。
我忘不了他恐惧的眼神,【排期】,大概是他生命里最恐怖的事情,也是他能记得的,最后一件事情。
无声又剧烈的黑光弥漫整个【九县土镇】,而我,紧紧的抱着了倾城,在【回滚丹】的治疗下,倾城已经恢复入初。
我看着她,她看着我,就这样笑了。
【修真神界】外传【九县土镇篇】结束。
想看更多的编程小故事?请移步我的专栏~~
IT修真院转载请注明
来自:知乎【暗灭】
==================我是彩蛋的分界线===============
咳咳,还有一个彩蛋。
夕阳西下,我拉着倾城的手,轻轻的问她:你为什么不离开我,回到你的Pythoner之家?
她歪着脑袋,笑着说:因为只会Python找不到工作呀
为了立马就业 学简单的 比如python php
如果对就业没需求 就学java
如果你没有任何编程经验的话,建议学习Java,夯实面对对象编程的基础。
Python虽然容易,但是在学习时很多细节问题不容易注意到
当然如果你学过了其它语言如C++,那完全可以学学Python
之前看过一句话,分享给大家
花半年学python,然后花半年学java,
花半年学java,然后花半个月学python,
皮一哈
万物基于c语言
学好java打天下
意思是学好这两门语言就可以了。因为一个是面向过程始祖,一个面向对象的普及者。
然后你会发现学c#,c++,python,php,JavaScript等语言都很上手。因为语法都大同小异,只需熟悉对象模块的使用就可以了。
所以建议题主先学java。
Java和python的对比就像我们常说的北乔峰南慕容,竞争不相上下。如果有能力同时学习那再好不过了,但很多刚刚接触IT行业的小伙伴在学习初期学习困难较大,还是要两者择其优。
下面是两个编程语言的一些对比描述,大家可以酌情参考一下,依据自己的需求来定夺自己要学习哪一门语言。
1、运行速度
Java是静态语言静态编译的,速度上要比Python快的很多,而Python动态类型语言,一边执行一边编译,速度要上慢一些。
2、对Legacy代码的支持
对于legacy代码的支持,由于Java大量的用于电商,互联网后端,银行等大型系统,所以对于legacy的代码的数量要远大于Python。而Python要更轻量级一些,没有那么多legacy的问题。尤其是Py3即将全面推广,Py2要退出历史舞台。
3、代码开发效率
Python代码开发效率非常高,同样的函数功能,Java需要十几行,Python只要几行,代码数量要远小于Java,这样开发的时间和效率比Java高很多。
4、数据库的支持
Java跟数据库结合更紧密一些,有大量的数据库支持Java,类似JDBC这样的封装,使得的Java使用数据库更容易。Python虽然没有他俩关系那么铁,但是目前支持Python的数据库也非常多,而且很多主流数据库SQL,Mongodb,Redis都有API支持Python, 可以说Python不缺的就是库。
5、应用领域
Java主要的战场是在Android手机开发和Web后端开发,而Python主要应用在数据科学,机器学习,人工智能领域和IOT。可以说两个都是各自领域的霸主,但是随着谷歌扶植Kotlin来取代Java,而后端开发NodeJS强势崛起,所以Java的后端开发霸主地位正在被挑战。
6、薪资收入
月薪收入Python略胜一筹,主要是因为人工智能太火了,起步价都在30k左右,所以应届生的薪资要高于Java。但是对于资深工程师来说,就不一定喽。
6年以上的资深工程师,明显Java程序员的薪资要比Python高一些,但是也只是略高一点点。一个月都是60多K,这个收入还是很诱人的,国内应该没有这么高。
7、语法
Python的语法应该是选胜于Java,简洁优美,而且库非常非常多。如果上手学Python,Python的学习成本和难度要低很多,这也是为什么很多学生的首选语言都是Python。
所以综合来看,Python是一门上手非常快,容易学的语言,如果选择人工智能,机器学习,Python可以成为你的选择。如果你从来没有学过编程也建议你先学Python比较好一点。
而对于后端开发Java目前更占优势,因为legacy的后端市场java的份额比较大,但是对于小公司或者创业公司,后端市场Django,NodeJS也是非常有竞争力的。
学java。
java适合做业务系统,现在计算机多数是业务系统,如果做界面,做性能,可以再学个c++,界面用qt。
python做为数据分析,人工智能,业余自学就可以了,网上看视频教程,再做项目。
英文单词,每天都要记。
数学公式,也需要买个数学辞典,经常要看,温故知新。
先说一下关于问题本身的回答:
作为一个CS学科的学生,两个都学才是正确的选择。各门语言有不同的适应场景,而且在学校里有充足的时间去让你慢慢研究学习,如果一定只能选一门,那就选Java,然后自学Python。
另外是问题的扩展,当你并不是一个 CS 专业学生,没有多少空余时间的时候,你应该怎么选?
1.请深入考虑你的学习目的
不考虑自己的目的,单纯从入门难度、学习回报来做考虑,实际上是相当不恰当的行为。我们看其他答案,特别是涉及到 Python 培训的内容,一说 Python 就是入门简单上手快之类的,从不会从你的真实需求去做考虑,这种就是为了挣钱黑了心,欠妥,相当欠妥。我想学爬虫,你给我推Python,我想学安卓开发,你也要给我推 Python,你不是害我吗?
销售们有 KPI 限制,不会完全从你本身的需求出发,所以你自己必须明确需求。
学这两门语言对你有何意义?
练手,了解一些 IT 技术,锻炼一下?两门语言请随意。
掌握一门工具,对自己目前的工作做一些辅助?Python是不二之选。
做数据、做AI、做全栈,做一个真正的程序员?两门语言都能满足,做数据用Python的更多。
去做性能要求极高的项目或者技术负债严重的公司?谁推荐Python请打爆他的狗头!(当然技术负债严重的公司最好别去)
2.你能付出多高的学习成本?
如果你时间很充裕,那么只需要按照自己的需求去选择语言乃至玩一把“小孩子才做选择,大人全都要”。不过很可惜,大人只是想而已,全都要的代价是万万付不起的。
说到底,这两门语言的学习曲线是不一样的。体现在入门上,Python的语法会比Java友好许多,入门难度也简单许多。如果你只有几个月时间,乃至于只有下班之后的两小时时间,那么请放弃第一条的思考,直接选Python。如果你有足够的耐心,愿意付出一年乃至两三年的时间去学习,那么Java也是一个相当不错的选择。
Python的特点是语言本身不会有太高的门槛,模块的切分度很高,用到的工具则可以随用随学,做数据的,Pandas、Numpy之类的学学就行了,没人强行让你学Django。Java的特点是本身语言有一定的入门门槛,但是在这种入门学习中接触到的思想和理念是非常宝贵的。
3.你对这门语言的规划是怎样的?
这一点其实与目的有一点点重合,但又不完全一样。在学习之前也要思考,你对这门语言的期望是什么?
半个月入门,年薪五十万?你等我打个电话,看看杨永信那收不收你。
学习三个月,月薪一万二三?没有从业经验,不是cs出身,很难很难。
学习四五个月,废寝忘食求个入门,工资无所谓以后慢慢涨?Python,方向多入门快,岗位数量还行,但是完全比不上Java。
学习一年,甚至去专门考个研,工资要求不高只求就业?Java,岗位数量排第一应该不夸张吧,从一线覆盖三线不夸张吧?当然竞争也大。不过你都这么学了,难道还干不过那些四个月培训出来的?
学习三四五甚至十几年年,奔着IT大神去了,那还用我说嘛?你自己就知道该怎么学了。
4.学一门语言真的能改变人生吗?
很遗憾,不能。我理解很多人被培训机构的宣传洗脑,觉得学会一门编程技术就能年薪百万咸鱼翻身,一辈子躺在老本上吃喝不愁。
但这是做梦。学会一门语言,在北上广每月上万不难(这几个地方上万本来就不难),想要两万以上要么大忽悠,要么有履历。三万到五万,基本是普通人实力能达到的巅峰,也得要你摸爬滚打很多年。再往上,一命二运三风水四积阴德五读书(我不信嘻嘻)。
我之前学习,也有过一些不切实际的幻想,什么学完之后BAT,P6、7、8跳跳级,随随便便100W,十年之后退休去。现在做了这么久,也想明白了,多奋斗几年,能拿个三五万的就够了,真能摸到五万以上我感谢上苍,摸不到也就算了。
能改变你人生的不是语言而是习惯,十年如一日学习、提升、奋斗,总有翻身的一天。
如果你是普通家庭出来的孩子,就想着在这行当里靠自己辛苦打拼赚钱养家,这个行业不会亏待你,有多少能力就有多少钱,收入都有明确预期。指望着靠这个过安逸日子当咸鱼,对不起,程序员没有安逸日子,那些企业也不会养咸鱼。
如果你想学Python,可以来这里看一下我之前整理的一些知识教程:
Python知识教程总结
Java和Python都是目前最火的后台语言。
Java的使用时间更久,更成熟,Python语言更年轻,更便捷。
两者各有各的优势:
Python的优势:
1.学起来简单,开发效率高,同样的功能用Java开发可能需要写200条代码,但是用Python只需要30~50条;
2.在大数据挖掘方面有突出优势,是大数据分析首选的编程语言,Python可以让开发人员轻松表达概念,程序员维护和更新代码库更容易;
3.Python是做人工智能的首选语言,其他语言都不具备这样强大的功能,相对Java而言,Python更年轻,目前国内受众小于Java
4.Java重在编程本身,Python重在解决问题,更像是工具
Python适合人群:
1.对互联网开发行业感兴趣,想要从事后端开发、全栈开发、游戏开发、大数据开发、人工智能、数据分析等工程师
2.零基础可以学习
3.英语基础较好(英语好python学习会有帮助,不好也可以快速学习提升)
Java的优势
1.安全稳定性好,在国内发展了一二十年,已经很成熟了
2.目前流行的web技术,广泛用于手机操作系统开发,容易创建应用,还可以利用各种工具和框架加快应用研发
3.一般编程中,需要花较多时间来组织,维护和更新Java代码,成本较高
4.在一二三线城市都有很大的就业空间,需求稳定,薪资好
Java适合人群
1.有基础,最好是计算机相关专业毕业
2.逻辑思维能力、数学能力较好
3.对互联网开发有热情
4.年龄在28岁以下
5.一线城市工作最好大专以上学历
最后我采访了两位正在做开发的朋友,他的看法如下:
总结,想在一线城市发展、想往大数据、爬虫、人工智能方向发展,选Python;
想做传统的互联网程序开发,未来在一二线城市都可以发展,选Java。
想学一门编程语言,是选择最新潮的 Python、Go,还是选择比较传统的 Java 呢?其实没有绝对的优势,都是各有优劣。
Python、Go 虽说比较新潮,但是市面上的岗位需求还是比不了 Java 的,毕竟 Java 作为最受欢迎的编程语言之一,Java 已经走过了 20 多个年头。从已经落寞的诺基亚到现在火热的电商系统,我们都能看到 Java 语言的身影。
虽然这十多年来,也都陆续有众多其它语言出现,但它们在普及程度上仍然无法与 Java 相提并论。
所以,我也认为,在未来十年,Java 仍将会是最受欢迎的编程语言之一。如果你想成为一名合格的后端工程师,并且想入职知名的互联网公司,那我推荐你深入学习 Java。原因如下:
薪水高。Java 工程师的月薪普遍在 10k-50k 之间,相比于一般职位,可谓“高薪”。
工作岗位较多。包括阿里巴巴、京东、去哪儿网、亚马逊在内的知名公司都在使用 Java 语言。
生态非常成熟。Java 不仅仅只是一种主流编程语言,它同时也代表着一整个活跃的生态系统。你在大数据、微服务、云计算等热门领域都能看到它的身影。
可以说,学好了 Java,不愁没有用武之地,未来的开发之路会非常宽广。
对于初学者而言,一开始很容易被各种编程语言的抽象概念吓倒。比如常量、字符类、对象、封装、继承、等等,虽然字都认识,但就是搞不明白什么意思,有时候如果过于关注某个概念的字面含义,反而更容易跑偏。
另外,好不容易把这些抽象的概念都弄懂了,但却不知道该怎样把它们串起来写出完整可用的程序。往往脑子里有思路,就是不知道怎样用代码体现出来。
我觉得这些问题其实很正常,编程语言并不像我们平常讲话用的语言那样是人和人之间交流的语言,它更像是一种人和动物之间交流的语言,两者的思维方式和行为方式是完全不同的,所以从理解一门编程语言到熟练运用,这中间还有不少的路要走。
本回答转载自公众号:奔跑吧墨奈
作者:奔跑吧墨奈
原文链接:https://mp.weixin.qq.com/s/1JCXAMrMqlxHX8OUiV94jg
以上,就是我提供的信息,希望对你有帮助!有帮助的话帮忙点个赞吧~有其他问题欢迎评论区交流或私信我~
如果你现在有点迷茫,可以看看我分享的关于“人生目标规划”、“职业目标规划”的思考。
你可能需要的:
1、动力节点“资源库专栏”,内有各种java开发的资源,并持续更新中,欢迎关注:动力节点Java教程视频库
也欢迎点击蓝字关注我~ @动力节点
2、“北京十年专注教java开发的机构”动力节点课程种类简介(详细了解可私信):
入学测试:java实验班(免费学、报销路费提供住宿、10+年经验讲师测试) 线下:java就业班(线下面授) 线上:java远程就业班(直播面授)、java夜校班(晚上和周末直播) java进阶:java架构师班(直播面授)
一次学习,终身可以问老师问题(学习期、找工作时、实习期、转正后)和看更新的教程。(大概是业内唯一吧)
3、编程技能可以看视频教程,这里推荐一本适合小白的编程思维的书籍:一个人的第一本编程书应该是什么?
4、程序员的前景和工作状态,小白在入行前应该了解一下:刚毕业没多久 学的Java学的不怎么样 以至于 现在 找工作费劲的很 该咋办啊!!!?
5、java的学习路线图看这里:2019年最新的Java学习路线是怎样的,求分享?