当前位置:  开发笔记 > 编程语言 > 正文

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

感谢各位前辈的建议,已经开始学习php,已经看韩顺平老师的视频。现在主要任务就是学习,等我学习有成再来分享经验。
感谢各位前辈的建议,已经开始学习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 还不熟悉的话,以下是一个代码示例:

program HelloWorld;  
begin  
  WriteLn('Hello World')
end.
你既然私信我,那我就勉力一答,说直白点。

你太小看你口中的码农了。就是二本科班出身,经过四年大学游戏性学习,最后加上三个月培训班,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比较好,养成良好的编码习惯,之后学什么都快的
推荐阅读
coco2冰冰
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有