安卓篱笆

标题: 面对java、php、前端、python等,新手小白该如何选择? [打印本页]

作者: GuiTarvvm2098    时间: 2017-11-30 04:46
标题: 面对java、php、前端、python等,新手小白该如何选择?
小编首先告诉大家的是:选择一门编程语言,无论哪一种。然后,开始你的编程生涯吧。[attach]218[/attach]
当你开始学习计算机编程的时候,碰到的第一个问题就是:“我该选择哪一种编程语言呢?”。新手小白经常常会走入这么一个误区,就是去询问那些富有经验的人群,自己应该选择哪种编程语言。
然而,这个问题并不重要。
我正式开始学习计算机编程语言时,老师采用的编程语言是 Pascal。假如你对对 Pascal 还不熟悉的话,以下是一个代码示例:
program HelloWorld; begin WriteLn(Hello World) end.
自那以后,我再也没有用过这门编程语言。如果现在让我使用这门语言编写一个程序,我可能必须要一本参考书。事实上,上述的示例代码,就是我查询之后才补写上去的。
有人会说那样不是在浪费时间吗?坦白地说,通过 Pascal 这门语言,我学到了许多基本的编程概念,如变量赋值、循环语句等等,Pascal 还教会了我什么是面向对象编程。
编程语言都有其共通之处,拥有很多相同的特点和概念。作为一名新手小白,对你来说,重要的是学习那些基本概念,而不是专注于某一门特定的编程语言。与其一直尝试找寻『最佳』的编程语言,不如静下心来,接受 Allen Wirfs-Brock 关于『一个可增长的编程工具箱』的劝诫:
作为一名开发者,我们不应该根据技术在市场上的输赢来做出判断,相反,我们应该使用一个可增长的编程工具箱,并且学习和了解这个工具箱里面的每一个工具的优点和缺点。
——Allen Wirfs-Brock (@awbjs) August 21, 2015

所以呢,不管你选择了哪种编程语言,你都将学到一些有用的东西。在此之后,你将会为你的编程工具箱不断地添加新的工具。
这三门当中,首推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接口。
4. 在工作中体会一下设计模式。推荐《Java与模式》这本书。看完里面的Decorator,IO接口你再也不会去死记硬背了。用的时候,根据Adaptor和Decorator的命名规则,自己临时推都推得出来。
5. 恶补数据结构。搞清楚 LinkedList和 ArrayList的实现机制,了解它们的每一个接口的时间复杂度。同样的还有其他容器,Map啊,Set啊,都是一样的。栈,队列,二叉树,图贯穿编程始终,如果这一步你迈不过去,那就只能在低阶程序员里打转。
6. 如果有可能,最好对一些算法设计也有所涉猎。比如动态规则的思路,贪心算法,诸如KMP这种奇妙的算法等。这一步没有数据结构那么重要,学得好当然好,学不好也不用太挫败。
7. 进阶,这时候就可以有自己的思考了。Java发展到现在,被用在各种各样的情景之中,说它是应用最广泛的编程语言并不过分。你在打好基础以后,就可以考虑应该向哪个方向发展了。比如服务端的架构,最好能学习一下JavaEE。JEE一直以来,都是让人觉得门槛太高。这个其实可以从Spring入手,搞清楚反射,控制反转,依赖注射都是什么鬼(这些神叨叨的名词其实都是为了解决Java本身不够动态这个缺陷而出现的,这里不展开,我只想提醒的是,这些概念没有什么大不了的东西,不要被爱装逼的家伙吓住了)。还有消息这个东西,还有ORM这个东西,都去搞搞清楚。想一下它们要解决什么问题,再猜一下他们是怎么实现的。我面试的时候发现,其实大多数优秀的开发者,即使以前没思考过这个问题,让他现场设计一下Hibernate,都能设计得差不多。这说明,这些框架性的东没有什么大不了的。有了基础,你也能设计出来。关键是要去动脑筋想。以上是以服务端开发举例,那么对于客户端,你就去思考事件响应机制是如何工作的(这个我不熟悉,就不再多说了)。还可以深入研究一下JVM的源代码,以及其实现机制,了解一下垃圾回收算法等等。
8. 架构。到了这一步,你就算是登堂入室,真正迈入高级开发人员了。这一步,你要思考更多的东西,比如,如何处理高并发,如何应对分布式系统,如何提供更健壮的数据服务。到了这一步,那就没有什么可以参考的,现成的东西了。全靠自己的悟性了。那最后能达到什么高度,就不是我这个层次能点评的了。
python的优点:简单我这里所说的简单,是相比于象C和C++这样的语言你为了编程,要学习许多偏底层的东西.在比如,你在学习一个新的编程范式,或者想要马上做个例子看看,试验某个API,如果你是写java的,你不得不去写一个main,写一些构造,即使有IDE这样的东西,能够为你带来代码生成器,而我做得就是写一段“脚本”,或者打开python交互式解释器就行了。
学完python前景会咋样
其实我个人是很看好python未来的就业前景的,我本人也并非一直用python。前些年主要用c/c++以及java开发一些通信,移动系统,互联网通信。近3年开始才转向python。实话说呢,这可能与你相处的公司以及环境不大一样。随便举个例子,google的protocol buffer协议一出来就具有c++/python/java三种语言支持。google的广告系统早在03,04年左右就一并对python进行了webservice支持,大部分涉及基础核心系统的公司,都开始对python进行了扩展支持。甚至开源社区的postgresql数据库,除了自身的ansi SQL,pgsql,pg/TCL,PG/PERL之外对python进行了内嵌支持,唯独却没有呼声很高的java。在FREEBSD(MIT)/LINUX(GPL)平台上,对java可能排斥性比较大,但综合而言,目前python发展还没有java那种普及,主要是python大部分工作仍然是在较为深入地系统层和框架层做设计开发,例如django,SQLAlchemy,fail2ban,mail邮件系统,twisted等等。这部分对于那种习惯应用前辈们框架的编码人员而言,缺乏创造力的他们根本无法适用这种开发。尤其在python涉及一些系统层面需要有较强的c/c++能力,这部分人在国内要么就累得要死没时间,要么就啥都不会就会拷贝代码,而国内公司也鲜有主动去做这部分基础劳动的,大多都是等别人做好了在直接拿来用,所以造就了任何技术性的东西出来,国内都是先等等看,然后抄袭应用。
大环境是这样,但千万别误认为先等等看吧。对于一个技术人员而言,缺乏对新技术的渴望与热情,这是很危险的事情。我工作8年了,按照国内很多的人的说法早已不做代码了,但有一次在听一个老外的演讲,他说他50多岁仍然每天坚持写代码,了解最新的动态,所以他才能做到他们公司的首席科学家,因此它才能时刻指导项目团队前进并保证项目的质量。他坦言对于一个不写代码并且不了解最新的技术动态的技术人员或者技术团队的负责人而言,这种团队也就足够做作小项目,一旦压力和项目过大,就会有很多问题漏出来。
对于新人小白而言,无论学习什么技术,都要以鼓励的姿态出现。不要用薪水和你眼睛所看到的去衡量一门技术,那绝对是欠缺眼光的。任何一门技术,一旦有人学习,他就有可能逐渐成为这个领域的专家,即便再滥再没有人用的开发语言技术,他也有可能就是明日的奠基者或者大师。
自己如何确定目标
生活中要学会不断发掘自己的潜力。我们都是一个普通人,可能有时候不知道自己的优势所在。所以,去学着在生活中找到自己的优势,并根据优势选择一定的就业方向。
希望这篇文章能够真正带给你帮助,愿每一个热爱编程语言的人可以找到属于自己的那条路,越走越远。




欢迎光临 安卓篱笆 (http://www.okapk.cn/) Powered by Discuz! X3.2