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

发几个我收藏的网站:&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 个回答}

我要回帖

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

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信