计算机编程语言入门从入门到进阶最后登堂入室是怎样的一个过程?

发几个我收藏的网站:&br&&ol&&li&校园招聘类:&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&应届生求职网_校园招聘__中国领先的大学生求职网站&i class=&icon-external&&&/i&&/a&,&a href=&///?target=http%3A//www.haitou.cc/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&海投网 - 大学生求职搜索引擎&i class=&icon-external&&&/i&&/a&,&a href=&///?target=http%3A///& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&/&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&,&a href=&///?target=http%3A///& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&/&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&,&a href=&///?target=http%3A//www.neitui.me/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&内推网-互联网招聘内部推荐直招平台-neitui.me&i class=&icon-external&&&/i&&/a&,&a href=&///?target=http%3A//.cn/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&HiAll-中国雇主品牌领域最佳实践者和行业领先者&i class=&icon-external&&&/i&&/a&,&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&过来人求职网__大学生求职第一门户&i class=&icon-external&&&/i&&/a&,&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&大街网_年轻人专属的社交招聘平台!&i class=&icon-external&&&/i&&/a&,另外还有学校的就业网,学校bbs论坛、各大公司校园招聘官网。&br&&/li&&li&社会招聘类:&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&【猎聘网】招聘&i class=&icon-external&&&/i&&/a&,&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&拉勾网-最专业的互联网招聘平台&i class=&icon-external&&&/i&&/a&,&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&100offer-高端人才招聘平台&i class=&icon-external&&&/i&&/a&,&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&BOSS直聘-互联网招聘神器【官网】&i class=&icon-external&&&/i&&/a&,&a href=&///?target=https%3A//www.jianxun.io/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&简寻-高端程序员精准职位推荐/精准招聘&i class=&icon-external&&&/i&&/a&,还有企业的官网,技术QQ群。&/li&&/ol&
发几个我收藏的网站:校园招聘类:,,,,,
被收藏7次,只有两个赞。路过的弟兄们,能不能顺手点个赞呀?&br&=============== 原答案的分割线 ==========&br&看了那么多答案,我想说,你们不要误人子弟。请相信我的回答。为了增加自己的说服力,必须亮一下自己的经历了。&br&清华大学硕士毕业,在北京写过两年Java,在杭州写过三年Python,深入定制过Python虚拟机,现在从事arm上的javascript虚机机的开发。虽然仍然不是什么牛人,但我觉得我的经验能对大多数新入门的从业人员提供参考。以下是正式回答。&br&&br&这三门当中,首推Java。真的,Python当然是好,但是对于一个新入门的人,最重要的是先找到工作不是吗?而找工作的话,Java无疑是最容易的。对于跨行业的人而言,最困难的其实是第一步,那就是如何进入这个行业。如果你连进都进不来,第一份工作迟迟无法开始,那么好好努力,补上数据结构,设计模式,算法设计这些差距就根本无从说起,不是吗?&br&&br&不要被什么科班出身之类的说法吓坏了。虽然我是科班出身,但我始终觉得,只要你肯努力,这里面并没有什么无法逾越的鸿沟,最重要的是不要好高骛远,也不要急于求成。学习和积累是有一个过程的,在程序员这个行当,你一分付出,就会有一分回报。尊重学习的内在规律,循序渐进,终有一天,你会成为你想成为的那个人的。&br&&br& 接着,我来谈谈具体的规划。&br&1. 了解Java的运行环境。搞清楚path和classpath是干什么的,怎么在命令行进行编译,执行。知道IDE的各个按钮后面真正发生了什么事情。&br&2. 掌握Java的语法。搞清楚包,接口,类,继承这些基本概念。掌握多态,overwrite,死背下IO的接口,包括InputStream/OutputStream和Writer/Reader,死背下网络编程和GUI编程的接口,死背JDBC接口。这一步,推荐的书是《 Thinking in Java》。&br&3. 掌握多线程编程。弄明白ConcurrencyHashMap是怎么实现的,搞清楚synchronized是怎么回事,弄明白为什么要有Runnable接口。&br&&br&在第二步和第三步掌握到80%的时候,你就可以考虑找工作了。&br&&br&4. 在工作中体会一下设计模式。推荐《Java与模式》这本书。看完里面的Decorator,IO接口你再也不会去死记硬背了。用的时候,根据Adaptor和Decorator的命名规则,自己临时推都推得出来。&br&5. 恶补数据结构。 搞清楚 LinkedList和 ArrayList的实现机制,了解它们的每一个接口的时间复杂度。同样的还有其他容器,Map啊,Set啊,都是一样的。栈,队列,二叉树,图贯穿编程始终,如果这一步你迈不过去,那就只能在低阶程序员里打转。&br&6. 如果有可能,最好对一些算法设计也有所涉猎。比如动态规则的思路,贪心算法,诸如KMP这种奇妙的算法等。这一步没有数据结构那么重要,学得好当然好,学不好也不用太挫败。&br&&br&到了这一步,你和科班程序员之间的差距就不大了。可以在工作中独立承担开发任务了。&br&&br&7. 进阶,这时候就可以有自己的思考了。Java发展到现在,被用在各种各样的情景之中,说它是应用最广泛的编程语言并不过分。你在打好基础以后,就可以考虑应该向哪个方向发展了。比如服务端的架构,最好能学习一下JavaEE。JEE一直以来,都是让人觉得门槛太高。这个其实可以从Spring入手,搞清楚反射,控制反转,依赖注射都是什么鬼(这些神叨叨的名词其实都是为了解决Java本身不够动态这个缺陷而出现的,这里不展开,我只想提醒的是,这些概念没有什么大不了的东西,不要被爱装逼的家伙吓住了)。还有消息这个东西,还有ORM这个东西,都去搞搞清楚。想一下它们要解决什么问题,再猜一下他们是怎么实现的。我面试的时候发现,其实大多数优秀的开发者,即使以前没思考过这个问题,让他现场设计一下Hibernate,都能设计得差不多。这说明,这些框架性的东没有什么大不了的。有了基础,你也能设计出来。关键是要去动脑筋想。以上是以服务端开发举例,那么对于客户端,你就去思考事件响应机制是如何工作的(这个我不熟悉,就不再多说了)。还可以深入研究一下JVM的源代码,以及其实现机制,了解一下垃圾回收算法等等。&br&&br&到了这一步,你就可以应聘Java高级开发了。如果运气好,年薪30万是有可能的。保底也要20万了。&br&&br&8. 架构。到了这一步,你就算是登堂入室,真正迈入高级开发人员了。这一步,你要思考更多的东西,比如,如何处理高并发,如何应对分布式系统,如何提供更健壮的数据服务。到了这一步,那就没有什么可以参考的,现成的东西了。全靠自己的悟性了。那最后能达到什么高度,就不是我这个层次能点评的了。&br&&br&编程的世界永远向所有热爱编程的人开放,这是一个自由,平等,共享的世界,我始终是这样坚信的。&br&&br&希望你能成为一个成功的程序员。祝好。&br&以上。
被收藏7次,只有两个赞。路过的弟兄们,能不能顺手点个赞呀?=============== 原答案的分割线 ==========看了那么多答案,我想说,你们不要误人子弟。请相信我的回答。为了增加自己的说服力,必须亮一下自己的经历了。清华大学硕士毕业,在北京写过两年Java…
&p&给你推荐一个写得非常用心的Java基础教程:&a href=&/?target=http%3A///java-basic& class=&internal&&java-basic | 天码营&/a&&/p&&br&&br&这个教程将Java的入门基础知识贯穿在一个实例中,逐步深入,可以帮助你快速进入Java编程的世界。万事开头难,逐步跟着这个教程走一遍,对Java应该就会有一种入门的感觉了。然后再去学习更高级的主题,或者更深入地学习其中的某些知识点。&br&&br&第1课 &a href=&/?target=http%3A///java-basic/lesson/java-environment& class=&internal&&Java开发环境安装与配置&/a&&br&第2课 &a href=&/?target=http%3A///java-basic/lesson/eclipse& class=&internal&&Eclipse的安装与使用&/a&&br&第3课 &a href=&/?target=http%3A///java-basic/lesson/java-hello-world& class=&internal&&第一个Java程序&/a&&br&第4课 &a href=&/?target=http%3A///java-basic/lesson/object-orientation-basics& class=&internal&&面向对象基础&/a&&br&第5课 &a href=&/?target=http%3A///java-basic/lesson/data-types& class=&internal&&基本数据类型&/a&&br&第6课 &a href=&/?target=http%3A///java-basic/lesson/operators& class=&internal&&运算符&/a&&br&第7课 &a href=&/?target=http%3A///java-basic/lesson/string& class=&internal&&字符串操作&/a&&br&第8课 &a href=&/?target=http%3A///java-basic/lesson/control-flow& class=&internal&&程序的控制流&/a&&br&第9课 &a href=&/?target=http%3A///java-basic/lesson/static-variable-and-method& class=&internal&&静态变量与静态方法&/a&&br&第10课 &a href=&/?target=http%3A///java-basic/lesson/collection& class=&internal&&Java集合&/a&&br&第11课 &a href=&/?target=http%3A///java-basic/lesson/encapsulation-and-inheritance& class=&internal&&封装与继承&/a&&br&第12课 &a href=&/?target=http%3A///java-basic/lesson/abstract-class-and-interface& class=&internal&&抽象类与接口&/a&&br&第13课 &a href=&/?target=http%3A///java-basic/lesson/exception& class=&internal&&异常处理&/a&&br&第14课 &a href=&/?target=http%3A///java-basic/lesson/blog-sample& class=&internal&&综合实例&/a&修改&br&&br&&p&&b&入门之后,可以考虑以下学习内容和路径:&br&&/b&&/p&&br&&p&&b&1、学习的基本路径&/b&&/p&&br&&p&首先建立好开发环境非常重要,工欲善其事,必先利其器。做任何开发,首先就是要把这个环境准备好,之后就可以去做各种尝试,尝试过程中就能逐渐建立信心。初学者往往在环境配置中被各种预想不到的问题弄得很沮丧。&/p&&br&&p&建立起来环境了,改变世界就靠你的代码了。学习一门编程语言没有太多的诀窍,你可能可以去找一本比较好的经典的入门书籍,现在网络上也有非常多的资料,图文或者视频都可以,根据个人喜好选择。最重要的练习,熟能生巧,在不断的练习中去加深自己对程序语言的理解。&/p&&br&&p&接下来你需要了解这三个术语,叫SDK、API跟Lib,分别表示软件开发套件,应用编程接口和库。这三者之间其实有一定的联系,或者是交叉。总体来说,它们都是给我们提供的一些封装了底层功能的基础设施。做Java开发的话,这些东西通常体现为我们所经常说的“框架”。事实上要成为一个资深的Java开发者,对各种API和框架的学习,可能是花时间最多的一个地方。&/p&&br&&p&当然你也不可能把所有API或者SDK种的所有内容完全弄懂。在软件开发中也有二八原则,少数的API能够胜任开发中的大部分场景。所以你只需要掌握这些关键部分,当在新场景下遇到不能解决的新问题时,再去查看帮助文档。所以帮助文档的阅读也是技术学习的一个关键因素。了解了基础原理之后一般就能上手开发了,帮助文档可以帮助你在实践中学习。&/p&&br&&p&&b&2、三个神器&/b&&/p&&p&三个神器,对于软件开发者来说非常重要。&/p&&ul&&li&第一个Google,虽然因为各种原因的话有时候我们访问不了,但是这基本上是可以去寻找技术资料最好的方式。&/li&&li&第二个是Github,之前提到过库的概念,Github就是一个可以找到大量第三方库的地方,那是别人给我们封装好的可以复用的代码。比方说造一辆汽车的话,我们经常不要自己造轮子,而Github上可以找到很多优质的轮子,这些轮子还是免费(代码都是开源的),我们应该尽量利用它们来拼装自己的汽车。&/li&&li&第三个是StackOverflow网站,在这个问答网站上你遇到的几乎任何开发问题都能快速找到答案。&/li&&/ul&&b&&br&&br&3、Java Web全栈开发的推荐学习内容&/b&&br&&br&&br&简单总结一下,大概包括下面这些内容。每一部分都可以细化成很多知识点,这只是一个粗略的罗列。把它当做技术地图就好了。&br&&ul&&li&开发环境的建立与项目管理:Eclipse、Maven和Git&br&&/li&&li&Java编程基础:基本语法、面向对象特性、Java8新特性、更高级库(比如Guava)的使用等&br&&/li&&li&前端开发技术:HTML、CSS、Bootstrap和JavaScript基础&br&&/li&&li&Spring基础:依赖注入IoC、面向切面编程AOP、SpringBoot&br&&/li&&li&MVC框架:Spring MVC、Struts等,包括URL路由、模板、表单、Session、拦截器等知识&br&&/li&&li&数据访问:关系型数据库、JDBC、Spring JDBC、事务、ORM框架(MyBatis,Hibernate、JPA)&br&&/li&&li&成熟应用的关键功能实现:邮件发送、异步任务、缓存、日志等&br&&/li&&li&应用的测试和部署&/li&&/ul&&br&&b&4、JSP/Servlet的相关内容&/b&&br&&br&最后专门提一下JSP和Servlet,虽然现在各种成熟的MVC框架已经让Java Web开发基本很少使用JSP和Servlet的原生功能了,基本都做了一层封装。但是这部分基础知识建议初学者还是要认真学习。&br&&br&&ul&&li&Web基础,HTTP协议&ol&&li&C/S模型,浏览器访问网站过程&/li&&li&URL基础知识&/li&&li&HTTP消息——请求和响应&/li&&li&处理HTTP请求的应用程序&/li&&li&Servlet/JSP简介&/li&&/ol&&/li&&li&Servlet&ol&&li&Servlet容器,Servlet处理机制,Servlet生命周期&/li&&li&部署Servlet&/li&&li&ServletContext, ServletConfig&/li&&li&Filter, Event Listener&/li&&/ol&&/li&&li&JSP&ol&&li&表达式,scriptlet, declaration&/li&&li&在JSP中访问Java类&/li&&li&JSP内置对象&/li&&/ol&&/li&&li&处理用户输入&ol&&li&HTTP方法——GET v.s. POST&/li&&li&读取表单数据&/li&&/ol&&/li&&li&构建MVC应用&ol&&li&Servlets/JSP存在的问题&/li&&li&MVC设计模式&/li&&li&使用RequestDispatcher&/li&&li&在Servlets和JSP中传递数据,EL表达式&/li&&/ol&&/li&&li&使用JSTL作为模板&ol&&li&JSP Tag Lib&/li&&li&Core Tag(if, loop)&/li&&li&Function Tag(string, fmt, utils)&/li&&/ol&&/li&&li&Session&/li&&/ul&&ol&&li&Session&&Cookie基本概念&/li&&li&通过Cookie记录用户状态&/li&&li&使用Session跟踪用户&/li&&/ol&&b&5、更进一步&/b&&br&&br&分布式、深入Java虚拟机、针对不同场景的Java技术框架,到这个阶段已经不仅仅是Java的学习了,而是大型应用场景的技术积累、架构设计的精进了。
给你推荐一个写得非常用心的Java基础教程:这个教程将Java的入门基础知识贯穿在一个实例中,逐步深入,可以帮助你快速进入Java编程的世界。万事开头难,逐步跟着这个教程走一遍,对Java应该就会有一种入门的感觉了。然后再去学习更高级…
之前写过一篇文章叫《假如时光倒流, 我会这么学习Java》, 希望对你有帮助:&br&&p&-----------------------------------------------------------------------&/p&&p&回头看看, 我进入Java 领域已经快15个年头了, 虽然学的也一般, 但是分享下我的心得,估计也能帮大家少走点弯路。&/p&&p&&strong&[入门]&/strong&&/p&&p&我在2001年之前是C/C++阵营, 有C和面向对象的基础, 后来转到Java ,发现没有指针的Java真是好简单, 另外Java 的类库好用的让人哭啊。&/p&&p&后来我就看《&strong&Thinking in Java&/strong&》 ,《&strong& Java 核心技术&/strong& 》, 感觉也不吃力。&/p&&img src=&/4dddeb235becd1_b.jpg& data-rawwidth=&318& data-rawheight=&417& class=&content_image& width=&318&&&img src=&/e38d3dff9b3ebd737a04ff6dcdc33073_b.jpg& data-rawwidth=&318& data-rawheight=&417& class=&content_image& width=&318&&&p&如果我之前没学过别的语言,或者半路出家转到计算机行业, 我不会先看上面那两本, 相反我会选&strong&《Head First Java》&/strong&, 这本书非常适合零基础的小白, 读起来轻松搞笑, 不信你看看第一页&/p&&img src=&/ba90fea2f4d_b.jpg& data-rawwidth=&657& data-rawheight=&583& class=&origin_image zh-lightbox-thumb& width=&657& data-original=&/ba90fea2f4d_r.jpg&&&p&但是光看书也挺无趣的,不妨和视频结合着看, 我觉得传智播客的Java基础视频很不错 (唉, 给传智打了个广告), 网上一搜就有, 真搜不到找我吧(QQ )&/p&&p&注意:视频的好处就是能看到敲代码的过程, 代码是活的, 这点很爽。
如果&strong&视频只是按PPT讲编程, 果断扔掉&/strong&。&/p&&p&书也有书的好处,能写成书的, 肯定是作者经过系统化思考,梳理才能形成的东西, 所以系统性比较强。&/p&&p&书还有其他优点, 例如可以随便的翻, 找到重点反复的看。 &/p&&p&所以&strong&混合着看经典书+优秀的视频 应该是最好的入门&/strong&。 &/p&&p&Java 入门, 我不会去上培训班,白白浪费钱 ,自学就够了。&/p&&p&自学过程中如果有实战经验丰富的高人指导一下, 给我绘出路线图, 指出攀登的方向,哪些地方有陷阱, 哪些地方不应该浪费时间, 我的自学就可以减少摸索,少走弯路, &/p&&p&很不幸, 我当年没有遇到, 如果时光倒流, 我会想办法找一个来指导我。&/p&&br&&p&&strong&[实践]&/strong&&/p&&p&软件行业的一大特点就是&strong&光看不做永远都学不会&/strong&,编码不到10万行都不好意思出去打招呼。&/p&&p&所以实践,实践,实践!&/p&&p&在校期间,我还是会尽可能的去找项目做(参见我的另一篇文章《从现在开始丰富你的简历》, 回复“&strong&简历&/strong&”查看) , 实在没找到,也可以先把基础打好&/p&&p&我上大学的时候用的是严蔚敏的《数据结构》, 当时我也把习题都做了一遍,考高级程序员的时候, 成绩非常好。 &br&&/p&&p&后来我知道了一本更好的算法入门书《算法》, 如果时光能够重来, 我还是会这本书上提到的所有数据结构和算法用Java 都实现一遍, 课后作业也争取都做一遍。 &/p&&p&这是个非常重要的训练,因为我知道, 真的做了, 就会发现工作以后只要不是设计算法, 基本的数据结构没有能难住我的。&/p&&img src=&/7e571fa0c61ee891dd4f3_b.jpg& data-rawwidth=&358& data-rawheight=&499& class=&content_image& width=&358&&&p&&strong&【Java SE】&/strong&&/p&&p&对于Java集合框架, 不但要学会用, 我还会尝试着实现一遍,List, ArrayList, Set ,HashSet, Map ,HashSet 等等,
要是不知道怎么写, 看看JDK的源码就可以了, 那里有最好的老师。 &/p&&p&实现一遍能更好的明白面向对象的设计, 接口,抽象类, 具体类的关系, 怎么分离职责,会学习到设计模式中的模板方法, Iterator 等 。 &/p&&p&值得一提的是Iterator,
很有趣, 我还清楚的记得那一年自己实现集合框架中 Iterator 的时候的激动心情啊 :-)&br&&/p&&p&在实现Java 集合框架的时候, 可以顺便把泛型也学了, 不学不行,要不然实现不了啊。&/p&&br&&p&Java 世界里,万事万物都是对象, 大家都知道封装,继承,多态, 但是仅仅了解这些只是入了门,
不可能做出真正的面向对象的程序。 &/p&&p&有一本经典的书《敏捷软件开发, 原则,模式,实践》,里边详细的讲解了一个薪水支付案例,是迄今为止&strong&最好的面向对象设计的例子&/strong&&/p&&p&我会用Java 把它实现一遍, 真正的体会一下OOD,
&strong&了解怎么才能把合适的责任分给合适的类, 什么叫面向接口而不是面向实现编程, 什么是优先使用组合而不是继承。&/strong&&/p&&img src=&/478ba0383fdda34cf9aee_b.jpg& data-rawwidth=&306& data-rawheight=&435& class=&content_image& width=&306&&&p&对于Java线程, 重点还是理解概念, 因为我知道在以后的工作中(除非从事系统级编程) ,自己写线程/线程池的机会是非常罕见的,都被类库,框架给封装好了。所以重点是理解,&/p&&p&看书的话就当然是《Java并发编程实战》 ,一大群大牛写的啊。&/p&&img src=&/09ec350f8c45c09f6b939_b.jpg& data-rawwidth=&321& data-rawheight=&414& class=&content_image& width=&321&&&p&对于Java IO, 我觉得架构设计的很优雅,典型的学院派, 可就是不太实用, 打开读取一个文件都得用装饰者模式包装来包装去, 太累了。&/p&&p&项目实战中呢,也就是读取个property 文件, xml 文件。 我还是重点去理解概念和设计吧。 &/p&&p&不过自己&strong&写个简单的xml 解析器&/strong&倒是不错。 &/p&&br&&p&至于 AWT, Swing , 简单看看就行了, 我不会去深入研究, Java 是典型的服务器端的语言,
开发客户端程序的极少, 你想想, 你用Swing/AWT搞个桌面程序出来, 还得让客户装个JRE才能运行, 是不是有点过分 ? 据我所知,也即是银行的一些应用在用Swing ,AWT了。  有人可能说 Applet, 它曾经流行过, 现在早都没人用了。&/p&&p&所以&strong&我不会在Swing和AWT上浪费时间&/strong&。&/p&&br&&p&Java Reflection 看起来没有集合框架,线程,OO等那么耀眼, 但它可是&strong&很多框架(SSH) 的基础啊&/strong&, 先把基础学会,后面的Java EE得用到它。&/p&&br&&p&想真正的学好Java ,不了解Java 虚拟机怎么可能? 《深入理解Java 虚拟机》一定得看,看完的&strong&目标就是写个简单的Java 反编译器。&/strong&&/p&&img src=&/101ced0fa3ce97d8b6c5a310dfc18ef2_b.jpg& data-rawwidth=&318& data-rawheight=&417& class=&content_image& width=&318&&&p&&strong&&strong&【做个有素养的Java码农】&/strong&&/strong&&/p&&p&我记得08的时候, 我的IBM经理说设计模式是必备技能, 不懂设计模式的我们不能要了。 &/p&&p&所以设计模式是必学, 其实Java里边用的非常多,简直就是设计模式的活教材, 工厂方法,单例,模板方法, 装饰者,责任链都有体现。 &/p&&p&当然我会去先看一下轻松的《Head First Design》, 《设计模式》的作者之一 Eric Gamma 都大力推荐, 绝对不容错过。&/p&&img src=&/fe35a2b64f70_b.jpg& data-rawwidth=&240& data-rawheight=&240& class=&content_image& width=&240&&&p&又过了几年, 我的IBM经理又说,现在我们默认设计模式大家都会了, 敏捷实践是必备技能 !&/p&&p&所以, JUnit 我得会, 重构我得会, TDD,持续集成这些最最基本的敏捷实践也得知道, 要不然会被人鄙视啊。&/p&&p&作为一个有追求的Java码农, 我写代码的时候要遵循Java 的编码规范,例如类名首字母大写, 报名要小写, 方法名要首字母小写...等等。&/p&&p&作为代码洁癖, 我受不了脏代码, 我会不断的打磨自己的代码,直到它像一个工艺品。&/p&&br&&p&Java 的最佳实践 《effective java》 怎么能错过?
里边满满的全是JDK的作者们总结出来的java 编程最佳用法。 &/p&&p&不过翻译的实在是不咋滴, 很多句子都得仔细的琢磨一下才知道什么意思, 所以我打算录一系列视频讲解一下,敬请期待。&/p&&img src=&/7ebdae76105cebcf442ff35ae82e6f14_b.jpg& data-rawwidth=&318& data-rawheight=&417& class=&content_image& width=&318&&&p&&strong&【Java EE】&/strong&&/p&&p&走了这么远, 终于来到Java EE了, Java 不就是写服务器端的Web应用的吗?&/p&&br&&p&我会自己写个Web程序, 可以考虑把上面提到的经典的薪水支付案例改造成Web 版,
用最基础的技术Servlet/jsp/jdbc 。 &/p&&p&然后 研究struts, 自己写个简单mvc框架,
在自己的Web 程序中用起来, 这叫&strong&吃自己的狗粮&/strong&。 &/p&&p&然后研究Hibenete , 自己写个简单的OR mapping框架, 再吃一次自己的狗粮。&br&&/p&&p&然后读一下经典的书《J2EE development without EJB》 , 对,就是Spring 的作者Rod Johnson写的, 它颠覆了大家对于重量级EJB的认识, 开启了新的时代。&/p&&p&有了这本书的铺垫, 自己写个简化的依赖注入也不是难事, 写好后还是在自己的Web程序中用起来, 最后一次吃自己的狗粮。&/p&&img src=&/7a9bb07ce2ded0caf9a9f8c1_b.jpg& data-rawwidth=&327& data-rawheight=&405& class=&content_image& width=&327&&&p&&strong&【阅读代码】&/strong&&/p&&p&熟读唐诗三百首,不会作诗也会吟&br&&/p&&p&模仿是最好的学习!
多看看大牛们的代码是怎么写的, 潜移默化,自己的武功也能提高。&/p&&p&我身边要是有个好师傅, 跟着他,看着他编程, 提高的该有多快啊。&/p&&br&&p&在学习Java SE和Java EE的同时, 我会读一下这些源代码:&/p&&p&&strong&JDK中的 Java Collection 源码&/strong& : 老祖宗的东西绝对经典&/p&&p&&strong&JUnit 源码&/strong& : 看看Eric Gamma 和 Kent beck 是怎么通过模式来创建系统的
(回复&JUnit&查看)&/p&&p&&strong&SpringSide&/strong& :
以Spring Framework为核心的,Pragmatic风格的JavaEE应用参考示例,是JavaEE世界中的主流技术选型,最佳实践的总结与演示。&/p&&p&国人开发的,大力推荐一下。 &/p&&p&此外我还是会研究下本世纪初著名的&strong&Jive论坛&/strong&, 虽然非常古老, 虽然源码学院派十足, 但简直是设计模式的大本营, 都是活生生的应用的例子 &/p&&p&里边有个用代理模式实现权限控制, 让我记忆犹新。 &/p&&p&另外如果有余力的,有兴趣的话, 当然可以阅读Struts, Spring, Hibernate的源码, 甚至参与进去开发了。 &/p&&br&&br&&p&如何学习Java ,这是我这么多年来的感受, 也只是我的一家之谈。
欢迎和我交流 &strong&。&/strong&&/p&&p&学习编程从来就不是一件容易的事情, 不可能看看视频,看看书就学会, 需要大量的编程和实践。 编程虽然是极为辛苦的脑力和体力劳动, 但其中蕴含的创造的乐趣也是无与伦比的。 希望每个人都能够享受这个过程,乐在其中。 &/p&&br&&p&欢迎和我联系: &/p&&p&&b&微信公共号: 码农翻身&/b&&/p&&p&&b&QQ: &/b&&/p&&img src=&/573ee2ff6cb8ffd9e09dcc_b.jpg& data-rawwidth=&258& data-rawheight=&258& class=&content_image& width=&258&&
之前写过一篇文章叫《假如时光倒流, 我会这么学习Java》, 希望对你有帮助:-----------------------------------------------------------------------回头看看, 我进入Java 领域已经快15个年头了, 虽然学的也一般, 但是分享下我的心得,估计也能帮大…
&b&是否非常想学好 Python,一方面被琐事纠缠,一直没能动手,另一方面,担心学习成本太高,心里默默敲着退堂鼓?&/b&&br&&br&幸运的是,Python 是一门初学者友好的编程语言,想要完全掌握它,你不必花上太多的时间和精力。&br&&br&Python 的设计哲学之一就是&u&简单易学&/u&,体现在两个方面:&br&&ol&&li&语法简洁明了:相对 Ruby 和 Perl,它的语法特性不多不少,大多数都很简单直接,不玩儿玄学。&br&&/li&&li&切入点很多:Python 可以让你可以做很多事情,科学计算和数据分析、爬虫、Web 网站、游戏、命令行实用工具等等等等,总有一个是你感兴趣并且愿意投入时间的。&br&&/li&&/ol&&br&废话不多说,学会一门语言的捷径只有一个: &i&Getting Started&/i&&br&&br&&b&? 起步阶段&/b&&br&任何一种编程语言都包含两个部分:硬知识和软知识,起步阶段的主要任务是掌握硬知识。&br&&br&°1 硬知识&br&“硬知识”指的是编程语言的语法、算法和数据结构、编程范式等,例如:变量和类型、循环语句、分支、函数、类。这部分知识也是具有普适性的,看上去是掌握了一种语法,实际是建立了一种思维。例如:让一个 Java 程序员去学习 Python,他可以很快的将 Java 中的学到的面向对象的知识 map 到 Python 中来,因此能够快速掌握 Python 中面向对象的特性。&br&&br&如果你是刚开始学习编程的新手,一本可靠的语法书是非常重要的。它看上去可能非常枯燥乏味,但对于建立稳固的编程思维是必不可少。&br&&br&下面列出了一些适合初学者入门的教学材料:&br&&br&?「笨方法学 Python」:&a href=&///?target=http%3A//learnpythonthehardway.org/book/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&learnpythonthehardway.org&/span&&span class=&invisible&&/book/&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&br&这本书在讲解 Python 的语法成分时,还附带大量可实践的例子,非常适合快速起步。&br&&br&?「廖雪峰的 Python 2.7 教程」:&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Home - 廖雪峰的官方网站&i class=&icon-external&&&/i&&/a&&br&Python 中文教程的翘楚,专为刚刚步入程序世界的小白打造。&br&&br&?「The Hitchhiker’s Guide to Python!」:&a href=&///?target=http%3A//docs.python-guide.org/en/latest/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&The Hitchhiker’s Guide to Python!&i class=&icon-external&&&/i&&/a&&br&这本指南着重于 Python 的最佳实践,不管你是 Python 专家还是新手,都能获得极大的帮助。&br&&br&?「Python 官方文档」:&a href=&///?target=https%3A//www.python.org/doc/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Our Documentation&i class=&icon-external&&&/i&&/a&&br&实践中大部分问题,都可以在官方文档中找到答案。&br&&br&? 辅助工具:&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Python Tutor&i class=&icon-external&&&/i&&/a&&br&一个 Python 对象可视化的项目,用图形辅助你理解 Python 中的各种概念。&br&&br&Python 的哲学:&br&&blockquote&用一种方法,最好是只有一种方法来做一件事。&br&&/blockquote&学习也是一样,虽然推荐了多种学习资料,但实际学习的时候,最好只选择其中的一个,坚持看完。&br&&br&必要的时候,可能需要阅读讲解数据结构和算法的书,这些知识对于理解和使用 Python 中的对象模型有着很大的帮助。&br&&br&°2 软知识&br&“软知识”则是特定语言环境下的语法技巧、类库的使用、IDE的选择等等。这一部分,即使完全不了解不会使用,也不会妨碍你去编程,只不过写出的程序,看上去显得“傻”了些。&br&&br&对这些知识的学习,取决于你尝试解决的问题的领域和深度。对初学者而言,起步阶段极易走火,或者在选择 Python 版本时徘徊不决,一会儿看 2.7 一会儿又转到 3.0,或者徜徉在类库的大海中无法自拔,Scrapy,Numpy,Django 什么都要试试,或者参与编辑器圣战、大括号缩进探究、操作系统辩论赛等无意义活动,或者整天跪舔语法糖,老想着怎么一行代码把所有的事情做完,或者去构想圣洁的性能安全通用性健壮性全部满分的解决方案。&br&&br&很多“大牛”都会告诫初学者,用这个用那个,少走弯路,这样反而把初学者推向了真正的弯路。&br&还不如告诉初学者,学习本来就是个需要你去走弯路出 Bug,只能脚踏实地,没有奇迹只有狗屎的过程。&br&&br&选择一个方向先走下去,哪怕脏丑差,走不动了再看看有没有更好的解决途径。&br&&br&自己走了弯路,你才知道这么做的好处,才能理解为什么人们可以手写状态机去匹配却偏要发明正则表达式,为什么面向过程可以解决却偏要面向对象,为什么我可以操纵每一根指针却偏要自动管理内存,为什么我可以嵌套回调却偏要用 Promise...&br&&br&更重要的时,你会明白,高层次的解决方法都是对低层次的封装,并不是任何情况下都是最有效最合适的。&br&&br&技术涌进就像波浪一样,那些陈旧的封存已久的技术,消退了迟早还会涌回的。就像现在移动端应用、手游和 HTML5 的火热,某些方面不正在重演过去 PC 的那些历史么?&br&&br&因此,不要担心自己走错路误了终身,坚持并保持进步才是正道。&br&&br&起步阶段的核心任务是掌握硬知识,软知识做适当了解,有了稳固的根,粗壮的枝干,才能长出浓密的叶子,结出甜美的果实。&br&&br&&b&? 发展阶段&/b&&br&完成了基础知识的学习,必定会感到一阵空虚,怀疑这些语法知识是不是真的有用。&br&&br&没错,你的怀疑是非常正确的。要让 Python 发挥出它的价值,当然不能停留在语法层面。&br&发展阶段的核心任务,就是“跳出 Python,拥抱世界”。&br&&br&在你面前会有多个分支:科学计算和数据分析、爬虫、Web 网站、游戏、命令行实用工具等等等等,这些都不是仅仅知道 Python 语法就能解决的问题。&br&&br&拿爬虫举例,如果你对计算机网络,HTTP协议,HTML,文本编码,JSON一无所知,你能做好这部分的工作么?而你在起步阶段的基础知识也同样重要,如果你连循环递归怎么写都还要查文档,连 BFS 都不知道怎么实现,这就像工匠做石凳每次起锤都要思考锤子怎么使用一样,非常低效。&br&&br&在这个阶段,不可避免要接触大量类库,阅读大量书籍的。&br&&br&°1 类库方面&br&「Awesome Python 项目」:&a href=&///?target=https%3A///vinta/awesome-python& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&vinta/awesome-python · GitHub&i class=&icon-external&&&/i&&/a&&br&这里列出了你在尝试解决各种实际问题时,Python 社区已有的工具型类库,如下图所示:&br&&img src=&/6c1f92cc8dcafe_b.png& data-rawwidth=&1454& data-rawheight=&1348& class=&origin_image zh-lightbox-thumb& width=&1454& data-original=&/6c1f92cc8dcafe_r.png&&&br&&br&你可以按照实际需求,寻找你需要的类库。&br&&br&至于相关类库如何使用,必须掌握的技能便是阅读文档。由于开源社区大多数文档都是英文写成的,所以,英语不好的同学,需要恶补下。&br&&br&°2 书籍方面:&br&这里我只列出一些我觉得比较有一些帮助的书籍,详细的请看豆瓣的书评:&br&&br&科学和数据分析:&br&?「集体智慧编程」:&a href=&///?target=http%3A///subject/3288908/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&集体智慧编程 (豆瓣)&i class=&icon-external&&&/i&&/a&&br&?「数学之美」:&a href=&///?target=http%3A///subject//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&数学之美 (豆瓣)&i class=&icon-external&&&/i&&/a&&br&?「统计学习方法」:&a href=&///?target=http%3A///subject//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&统计学习方法 (豆瓣)&i class=&icon-external&&&/i&&/a&&br&?「Pattern Recognition And Machine Learning」:&a href=&///?target=http%3A///subject/2061116/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Pattern Recognition And Machine Learning (豆瓣)&i class=&icon-external&&&/i&&/a&&br&?「数据科学实战」:&a href=&///?target=https%3A///subject//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&数据科学实战 (豆瓣)&i class=&icon-external&&&/i&&/a&&br&?「数据检索导论」:&a href=&///?target=http%3A///subject/5252170/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&信息检索导论 (豆瓣)&i class=&icon-external&&&/i&&/a&&br&&br&爬虫:&br&?「HTTP 权威指南」:&a href=&///?target=http%3A///subject//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&HTTP权威指南 (豆瓣)&i class=&icon-external&&&/i&&/a&&br&&br&Web 网站:&br&?「HTML & CSS 设计与构建网站」:&a href=&///?target=http%3A///subject//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&HTML & CSS设计与构建网站 (豆瓣)&i class=&icon-external&&&/i&&/a&&br&&br&... &br&&br&列到这里已经不需要继续了。&br&&br&聪明的你一定会发现上面的大部分书籍,并不是讲 Python 的书,而更多的是专业知识。&br&&br&事实上,这里所谓“跳出 Python,拥抱世界”,其实是发现 Python 和专业知识相结合,能够解决很多实际问题。这个阶段能走到什么程度,更多的取决于自己的专业知识。&br&&br&? 深入阶段&br&这个阶段的你,对 Python 几乎了如指掌,那么你一定知道 Python 是用 C 语言实现的。&br&&br&可是 Python 对象的“动态特征”是怎么用相对底层,连自动内存管理都没有的C语言实现的呢?这时候就不能停留在表面了,勇敢的拆开 Python 的黑盒子,深入到语言的内部,去看它的历史,读它的源码,才能真正理解它的设计思路。&br&&br&这里推荐一本书:&br&「Python 源码剖析」:&a href=&///?target=http%3A///subject/3117898/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Python源码剖析 (豆瓣)&i class=&icon-external&&&/i&&/a&&br&这本书把 Python 源码中最核心的部分,给出了详细的阐释,不过阅读此书需要对 C 语言内存模型和指针有着很好的理解。&br&&br&另外,Python 本身是一门杂糅多种范式的动态语言,也就是说,相对于 C 的过程式、 Haskell 等的函数式、Java 基于类的面向对象而言,它都不够纯粹。换而言之,编程语言的“道学”,在 Python 中只能有限的体悟。学习某种编程范式时,从那些面向这种范式更加纯粹的语言出发,才能有更深刻的理解,也能了解到 Python 语言的根源。&br&&br&这里推荐一门公开课&br&「编程范式」:&a href=&///?target=http%3A///special/opencourse/paradigms.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&斯坦福大学公开课:编程范式&i class=&icon-external&&&/i&&/a&&br&讲师高屋建瓴,从各种编程范式的代表语言出发,给出了每种编程范式最核心的思想。&br&&br&值得一提的是,这门课程对C语言有非常深入的讲解,例如C语言的范型和内存管理。这些知识,对阅读 Python 源码也有大有帮助。&br&&br&Python 的许多最佳实践都隐藏在那些众所周知的框架和类库中,例如 Django、Tornado 等等。在它们的源代码中淘金,也是个不错的选择。&br&&br&?
最后的话&br&每个人学编程的道路都是不一样的,其实大都殊途同归,没有迷路的人只有不能坚持的人。虽然听上去有点鸡汤,但是这是事实。&br&&br&希望想学 Python 想学编程的同学,不要犹豫了,看完这篇文章,Just getting started~&br&&br&另外,欢迎私信本喵交流 Python 的学习经验哦 & .&
是否非常想学好 Python,一方面被琐事纠缠,一直没能动手,另一方面,担心学习成本太高,心里默默敲着退堂鼓?幸运的是,Python 是一门初学者友好的编程语言,想要完全掌握它,你不必花上太多的时间和精力。Python 的设计哲学之一就是简单易学,体现在两个…
已有帐号?
无法登录?
社交帐号登录
231 人关注
459 个回答
2477 人关注
258 个回答
2344 人关注
449 个回答
8644 人关注
249 个回答
518 人关注
141 个回答

我要回帖

更多关于 计算机编程入门 的文章

 

随机推荐