Home  >  Article  >  Backend Development  >  零基础应该选择学习 Java、PHP 还是 Python?

零基础应该选择学习 Java、PHP 还是 Python?

WBOY
WBOYOriginal
2016-06-17 08:30:22962browse

感谢各位前辈的建议,已经开始学习php,已经看韩顺平老师的视频。
现在主要任务就是学习,等我学习有成再来分享经验=。=

回复内容:

被收藏7次,只有两个赞。路过的弟兄们,能不能顺手点个赞呀?
=============== 原答案的分割线 ==========
看了那么多答案,我想说,你们不要误人子弟。请相信我的回答。为了增加自己的说服力,必须亮一下自己的经历了。
清华大学硕士毕业,在北京写过两年Java,在杭州写过三年Python,深入定制过Python虚拟机,现在从事arm上的javascript虚机机的开发。虽然仍然不是什么牛人,但我觉得我的经验能对大多数新入门的从业人员提供参考。以下是正式回答。

这三门当中,首推Java。真的,Python当然是好,但是对于一个新入门的人,最重要的是先找到工作不是吗?而找工作的话,Java无疑是最容易的。对于跨行业的人而言,最困难的其实是第一步,那就是如何进入这个行业。如果你连进都进不来,第一份工作迟迟无法开始,那么好好努力,补上数据结构,设计模式,算法设计这些差距就根本无从说起,不是吗?

不要被什么科班出身之类的说法吓坏了。虽然我是科班出身,但我始终觉得,只要你肯努力,这里面并没有什么无法逾越的鸿沟,最重要的是不要好高骛远,也不要急于求成。学习和积累是有一个过程的,在程序员这个行当,你一分付出,就会有一分回报。尊重学习的内在规律,循序渐进,终有一天,你会成为你想成为的那个人的。

接着,我来谈谈具体的规划。
1. 了解Java的运行环境。搞清楚path和classpath是干什么的,怎么在命令行进行编译,执行。知道IDE的各个按钮后面真正发生了什么事情。
2. 掌握Java的语法。搞清楚包,接口,类,继承这些基本概念。掌握多态,overwrite,死背下IO的接口,包括InputStream/OutputStream和Writer/Reader,死背下网络编程和GUI编程的接口,死背JDBC接口。这一步,推荐的书是《 Thinking in Java》。
3. 掌握多线程编程。弄明白ConcurrencyHashMap是怎么实现的,搞清楚synchronized是怎么回事,弄明白为什么要有Runnable接口。

在第二步和第三步掌握到80%的时候,你就可以考虑找工作了。

4. 在工作中体会一下设计模式。推荐《Java与模式》这本书。看完里面的Decorator,IO接口你再也不会去死记硬背了。用的时候,根据Adaptor和Decorator的命名规则,自己临时推都推得出来。
5. 恶补数据结构。 搞清楚 LinkedList和 ArrayList的实现机制,了解它们的每一个接口的时间复杂度。同样的还有其他容器,Map啊,Set啊,都是一样的。栈,队列,二叉树,图贯穿编程始终,如果这一步你迈不过去,那就只能在低阶程序员里打转。
6. 如果有可能,最好对一些算法设计也有所涉猎。比如动态规则的思路,贪心算法,诸如KMP这种奇妙的算法等。这一步没有数据结构那么重要,学得好当然好,学不好也不用太挫败。

到了这一步,你和科班程序员之间的差距就不大了。可以在工作中独立承担开发任务了。

7. 进阶,这时候就可以有自己的思考了。Java发展到现在,被用在各种各样的情景之中,说它是应用最广泛的编程语言并不过分。你在打好基础以后,就可以考虑应该向哪个方向发展了。比如服务端的架构,最好能学习一下JavaEE。JEE一直以来,都是让人觉得门槛太高。这个其实可以从Spring入手,搞清楚反射,控制反转,依赖注射都是什么鬼(这些神叨叨的名词其实都是为了解决Java本身不够动态这个缺陷而出现的,这里不展开,我只想提醒的是,这些概念没有什么大不了的东西,不要被爱装逼的家伙吓住了)。还有消息这个东西,还有ORM这个东西,都去搞搞清楚。想一下它们要解决什么问题,再猜一下他们是怎么实现的。我面试的时候发现,其实大多数优秀的开发者,即使以前没思考过这个问题,让他现场设计一下Hibernate,都能设计得差不多。这说明,这些框架性的东没有什么大不了的。有了基础,你也能设计出来。关键是要去动脑筋想。以上是以服务端开发举例,那么对于客户端,你就去思考事件响应机制是如何工作的(这个我不熟悉,就不再多说了)。还可以深入研究一下JVM的源代码,以及其实现机制,了解一下垃圾回收算法等等。

到了这一步,你就可以应聘Java高级开发了。如果运气好,年薪30万是有可能的。保底也要20万了。

8. 架构。到了这一步,你就算是登堂入室,真正迈入高级开发人员了。这一步,你要思考更多的东西,比如,如何处理高并发,如何应对分布式系统,如何提供更健壮的数据服务。到了这一步,那就没有什么可以参考的,现成的东西了。全靠自己的悟性了。那最后能达到什么高度,就不是我这个层次能点评的了。

编程的世界永远向所有热爱编程的人开放,这是一个自由,平等,共享的世界,我始终是这样坚信的。

希望你能成为一个成功的程序员。祝好。
以上。 我想说的是,选择一门编程语言,任何一门语言。然后,赶紧开始你神奇的编程之旅吧。
当你开始学习计算机编程的时候,碰到的第一个障碍就是挑选一门编程语言。初学者经常犯的一个错误,就是去询问那些富有经验的开发者,他们应该选择哪种编程语言。

事实真相是,这个问题根本不重要

我正式开始学习计算机编程时,老师采用的编程语言是 Pascal。这距离我在孩童时期初次接触和摆弄 ST BASIC 已经很多年了。那是在 1998 年,我十七岁。如果碰巧你对 Pascal 还不熟悉的话,以下是一个代码示例:

<code class="language-text">program HelloWorld;  
begin  
  WriteLn('Hello World')
end.
</code>
你既然私信我,那我就勉力一答,说直白点。

你太小看你口中的码农了。就是二本科班出身,经过四年大学游戏性学习,最后加上三个月培训班,2500税前撑死了。基础没学好,仅靠那几个月的培训班课程,码农也当不了,那叫徭役。

你一个零基础土木出身的,不是因为兴趣而是因为it看上去很赚钱就想为了生计而投身,而且做这个决定似乎只花了几天时间,还想在半年内速成找到6000税后的工作,这是华为中兴这一档公司技术类校招的水平(2014)。在北京,你有任何竞争力吗?

不愿意做土木就辞职在家,你还有挑工作的余地,为了买房才想去工作,属于根本不缺钱的状态。你私信我让我给你提建议,看到你的家庭条件我羡慕死了好吗,哪有心情给你提建议。

劝你一句,搞好it,最主要靠的是踏实,不是智商。当然你智力拔群就当我没说,但目测你不是因为打个游戏就能让你英语数学都学不好了。而你,一没学it的兴趣,二没踏实的性格,真的不是在浪费我的时间吗?

最后甩干货:coursera.org/learn/pyth 这个学不下来的话,就别瞎费劲了。 现在去掷骰子 1 2就Java 3 4就PHP 5 6就Python 掷到什么就立马开始学 也别在来问怎么学XX语言 你来来回回看了5天知乎决定学什么语言?我5天早都把Java基本语法看完了开始慢慢刷leetcode了
你要知道 你能不能拿到买得起房子的工作 他至少也要会C++ Python Java PHP Ruby C# Objective-C中的3门吧 至少数据结构学的好吧 何况你不是科班 编译原理 OS还不一定能敢的上科班出身的 有时间在这纠结?要我跟你说UCB的学生大一上Python 大一下就Java写数据结构了么?差距? 学 Python!学 Python!学 Python!
我觉得我应该有资格聊聊这个问题。而且我不会聊关于语言的优劣,而是关于一个人能力和决心的问题。
我本科是商科,在学校没有上过一节关于编程的课,数学到线性代数就没学了,而且我感觉自己这门还学得不算好。
13年毕业后一直到15年底才正式进入互联网公司,全职开始编程。 进入公司半年不到,现在开始自己立项目,负责搭建团队。

毕业前2年,都是在传统行业,工作中没有任何涉及到编程的事情。从13年开始,我自己学了下Python。一开始主要是对政治方面很感兴趣,爬下了中国领导干部资料库所有资料,做了下关于领导人出生年月的统计分析。(PS爬虫项目强烈推荐这个网站,没有任何限制,新手村专用)
后来又自己做了几个小项目,懂得了怎么爬取数据,解析网页,和存到数据库。 凭着这些能力和大学中学得一些统计相关的课程,进入了一家互联网公司做数据挖掘和爬虫相关的工作。

进入公司几个月之后,明显感觉我和一些用Java的同事的不同(不是全部)。 我学得更快,Python我是自己学的,我懂怎么在没有老师的教导下获取信息,达到目的。我做得更主动,公司有些Java同事,往往是被需求赶着的生物,推一步才走一步,有时候还根本推不动。 而我在需求没来之前,自己就去发现需求,自己就去提前满足没被提出来的需求。

(我觉得人如果太被动,就容易进入舒适区,无法更好的学习。主动学得更快。)

后来因为我满足了某些老板很看重的需求,所以让我来建立团队满足这部分更大的需求。然后我招人,照样也只招Python的, 并不是因为我只会Python,这几月里面Java入了门,C#也会了不少。而是用Python的程序员天生和会国内主流语言的程序员不一样。

Python因为在中国市场不旺,所以导致培训机构不热衷开设这部分的班级,而且这门语言在中国大学没有做到像Java,C++那样普及。 所有会Python的程序员都是自学的,会Python本身就证明你有能力独立解决问题,有能力快速的成长。 招进来的人,都能很快的达到预期效果,这是大部分Java程序员做不到的。

(我并不是说全部,一部分Java程序员,可能学习能力更强。不过筛选成本比Python高)

所以你作为Python 程序员,在现在就有了天然的标签,你会学习,你懂学习,你能独立解决问题。这是大部分公司需要的。

有这些标签,为什么要去首先学那些国内的主流语言?(国际上Python也是主流语言)
如果你说是为了更好的找工作,我可以和你说Python在某些方面更有竞争力。

我最近在招Python工程师,基本上是来一个简历我要看一下。(因为太少了) 而我们公司其他项目找的Java工程师,同事说简历根本看不完。

可能你会说我们公司是特例,事实上Python工程师出名的难招。很多公司因此把项目改成了Java。国内很多基于python的网站开始招聘java工程师,原因是什么? - Java
他们不想要会Python的工程师吗? 不,仅仅是太太太太太难招了。

最后再说Python最快入门转行攻略。
学爬虫。
2个星期入门, 6个星期搞清楚爬去,解析,录入数据库的流程,加多个项目。 你就准备好跳吧。
需求?
旺盛到爆。

最后打个广告,深圳地区,长期招聘Python爬虫工程师,征信相关的大数据项目。不看经验,不看背景。 只看做过什么项目。有兴趣的请私信我。 不会批评题主对“程序员”的看法,毕竟隔行如隔山,不知水深是正常的。
我单纯的评论题主的主干问题。有点本末倒置了,不是先选语言去干活,而是选活干,然后用需要的语言。
这三种语言没有难易之分,严格的来说甚至可以说没有可比性,没有一个能完全替代另外两个。题主选一个你觉得名字好听的。
然后赶紧开始吧,25不小了,等你达到这个行业“能干活”的初等水平,普通速度应该是3年(毕竟你数学和英语不好,这两个对程序员都很重要),努力一点2年。那时候二十七八了,也快结婚了吧,结婚的时候初涉新行业,你自己掂量一下,谨慎选择。 随便选一个能坚持下来就好。
但是一般都不好坚持,正常人一般都必须陷入一个“不得不”的情况下才能坚持到底。 有些答案给楼主泼冷水,我并不能认同,作为一个从商科转到cs的人来讲,我也不认为转cs是什么不可能的,我一商科都过去了,你们理工科还不行吗?认为为了生计转cs不合适的,难道大家上大学不是为了生计?

但是我想泼其他方面,比如你大学四年游戏浪费时间。我是否可以大胆猜测,你土木毕业找工作不好真的是因为本专业不好吗?不是因为你自己浪费了大学四年吗?虽然土木可能没有it那么耀眼,但我认识的土木毕业也并不差啊,尤其中国这样急需大量建设的国家,我们认识的一些土木、建筑类的同学并没有混得差啊。。。我爸以前总工,现在总监理,老给我讲公司其实很缺优秀的后继年轻人,优秀公司愿意培养自然也愿意花钱留住你。但很多后继实在不堪重用,甚至某些top名校的都是。。。一看就是大学4年游戏过来。。。所以你原来的专业其实也是很好的。。。

当然如果下定决心搞it也行,但是你需要明白程序员是一种什么状态。我社工的同学放假叫出去玩,我说不去要写作业被别人认作高冷,但cs就是这样的啊,尤其我一转过来的,比别人更努力但不一定能比别人拿更好的成绩,但是只有更努力。。。

我同系的一个同学,以前他女朋友嫌他陪她时间少,后来她也转cs了,结果变成嫌他太烦。。。你现在cs基础为0所以给你说什么技术怎么难学你也没有概念。但是你要明白,学cs非常辛苦,即使不上升到学cs的地步,学一些培训班技术去找工作那也是不轻松。。。

做好早上起来到晚上睡觉,除了吃饭拉翔都写代码的准备,那题主就可以转了。。。

至于具体的话,我觉得php吧,不仅好入门,还没多线程这种高级运用,和html/css/js等混编,适合web开发,而web又需求量大。java看起来好上手,但毕竟编译型,很多高级特性不掌握不能说学会了java,光一个多线程可能就能把非科班难倒。python是好东西,但是需求量有点小,而且很多不是纯应用开发,比如做统计、人工智能。。。

与君共勉。。。 java,比较容易让你明白编程的原理。
要是科班出身,我会建议就应该从cpp开始。
其实语言之间的差异相当小。特别是从低到高,一般自学很快就可以搞定。
如果掌握了计算机组成原理,操作系统,数据结构,离散数学。
那么这些语言几乎都是随便翻翻就拿来用了。
实际工作中有时候抓不到专业的人,场景就是这样的。
你会php(python\c#)不?
不会。
那我这里有段代码,你先拿去看看。照着改改。

然后改吧改吧就给改出来了。 个人觉的还是学强类型语言Java比较好,养成良好的编码习惯,之后学什么都快的
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn