我是谁,我在 Java 方面有哪些经验?
你好,我叫臧萌。目前在 PayPal 担任企业服务数据处理组的技术负责人。我 06 年毕业后就一直从事一线的编程和架构设计工作,在Sybase,eBay,亚马逊,携程等企业都工作过。
这十多年来主要使用的就是 Java 语言,同时,我还是《Java 入门 1 2 3》这本书的作者。这本书也被用户称为 Java 入门图书中的战斗机。
基于过去的这些经验,我相信能给你带来一堂看得懂、学得会、用得着的 Java 入门课,并以此为契机,帮你迈进编程世界的大门。
学习编程有哪些好处?Java 作为初学者的入门编程语言有哪些优势?
对我来说,学习编程最大的好处是让我找到了一个既能赚钱又能让我感兴趣的事情。我相信完成一个程序之后,那种创造带来的成就感是很多程序员乐此不疲坚持在做一线工程师的原始动力。
其实学习编程就是打开了一扇进入计算机内部的大门。你会发现编写软件并不是一件高深莫测的事情。通过学习编程,可以将脑子里想的程序变成现实,而这一切只需要一台计算机和一根网线(Wi-Fi 也行)。
同时编程也是一种迅速普及化的全民技能。即使不以编程为职业,学习计算机也有助于扩宽思路,就像乔布斯所言:每个人都应该学习编程,编程能够教会你如何思考。
2019-05-1546人觉得很赞给内容提建议
全部留言(39)
作者回复: 这个问题我思索了一天。写了一篇文章来给大家参考。 文档地址 : https://github.com/deepnighttwo/LetsJava/blob/master/FAQ/00%E7%AB%A0-%E8%BF%99%E9%97%A8%E8%AF%BE%E9%80%82%E5%90%88%E6%88%91%E5%90%97.md 学习不仅仅付出的是钱,更多的是付出了学习的时间。所以我觉得我有责任来告诉大家这门课是不是适合你。抱有以下两个学习目标的同学,我相信这门课会让你学有所获。 - 零基础学编程,并且想继续深入学习编程的同学 - 希望夯实基础,系统学习 Java 和面向对象编程思想的同学 下面说说为什么哈 # 零基础学编程,并且想继续深入学习编程的同学 这门课在录制之初的定位,就是要让零基础的同学能看懂学会 Java。有了编写《Java入门1·2·3》的经验,这个目标我还是很有底气能达成的。从同学们问的问题来看,同学们不仅学懂了,而且还提出了很多优质的问题。这些问题我都总结放在了 FAQ(源代码的GitHub repo里的FAQ目录) 里面。 说到提问,也是这门视频课的优势。极客时间这个平台可以很方便的提问和互动,及时且有针对性的解决大家的疑问。 这门视频课也为同学们后续继续深入学习编程打好了基础,如果有计划深入学习 Java 或者编程,那么这门课就更适合了。为什么呢,请接着向下看。 # 希望夯实基础,系统学习 Java 和面向对象编程思想的同学 录制这门课时距离我写书又过了六七年。十几年的一线编程经历,让我无论是 Java 语言的掌控力,还是面向对象的理解,还是程序设计和架构的经验,都能够候游刃有余的准备这门 Java 视频课。相比《Java入门1·2·3》这本书,我将很多理解和经验的内容,以合适的方式和力度放到了这门视频课里。 这门课不仅仅是 Java 的入门课,更是 Java 和面向对象的基础课。入门的特点是要简单,门槛低,由浅入深。而基础的特点是抓住根本,理解本质。在这门课的备课过程中,我结合自己的经验和理解(还有教训),由表及里,从语法元素开始,涵盖语法的本质和语法背后的意义。知其然,还要知其所以然。这是基础要解决的问题。 如果 Java 是自己的工作语言,但是写 Java 的时候又感觉没底,不知道有没有更合适的写法,不知道写了这行代码,实际上代表的意义是什么,那么学习这门课会有帮助。 如果自己一直在听别人说面向对象,听的耳朵都起茧子了,还是不知道什么是面向对象,不知道为什么面向对象的三要素是封装、继承和多态,甚至说不清什么是封装、继承和多态,那么这门课将给你一个清晰的,生动的答案。 # 题外话:编程入门怎么选 抛开 Java,我认为一门好的入门语言应该具备以下特点 - 不能太难,也不能太简单 - 成熟,资源丰富 - 使用广泛/有被广泛使用的潜质 - 有深入学习的途径/氛围,能从开始就帮助树立正确的学习编程观 Java 还是比较适合入门的: - 难度适中:不至于简单到三天从入门到精通, 也不至于难到让人望而却步。 - 成熟:坑基本都填平了。 - 热门:会的人多,有问题很多人可以帮忙解决。如果学一个冷门的语言,会有很多问题。比如资源匮乏,问题没人能解答,环境不成熟等等。 - 当然还有很多,视频中也说了一些。这里不再赘述。对于入门时的那些门槛,课程中也着重进行了讲述,让大家能够容易的迈入 Java 的大门。 别的好理解,为什么入门的编程语言不宜太简单呢? 如果一门语言纯粹是为了讨好入门者,那么它可能也只能用来入门。Java是一门实实在在的工业级语言,Java 是有深入学习的路径的。 很多语言简单到不需要深入学习,或者说整个生态不鼓励深入学习。这样的话,一门语言入门即精通,并不是一个好的事情。这门语言做的事情可能只能停留在堆砌代码的水平。学习这样的语言,对于进一步深入学习编程,成为一名合格的软件工程师,并没有太大帮助。甚至于还有坏处。让人产生“编程不过如此”的错误认知。 比如说 basic 语言,作为编程的启蒙语言没有问题,但是太过简单的设计,也让人没有深入学习的欲望/途径。 又比如 .net 生态环境,太过于“讨好”开发者,让开发者只是重复的堆砌业务代码,造成整个.net生态都有些浮躁,没有深入学习的氛围。我曾经见过有的.net 程序员以不需要深入学习为荣,并拒绝学习写多线程的程序。很难想象在这种氛围下,能培养出优秀的程序员。(当然这可能也是微软不想开放底层细节有关系。还有这也算是我一家之言,对于.net的更全面的见解,大家可能要找.net专家(如果有的话)详细咨询)。
作者回复: 培训班这种花不少钱的事情,确实不大好给个建议…… 仅供参考: 如果你自己觉得看书看视频已经可以学会语言的基础语法了,那就不要报这种语言基础的培训班了。学好了基础之后,后面的主要是多加锻炼。如果自己有想法,可以自己多学多练。遇到不会的技术,就去学。这样比较省钱,自己有兴趣的东西做着也比较有意思。编程这种东西就是既要多学也要多练,否则学会的东西确实很容易就忘掉了。 如果想要有老师带着做项目学习,可以考虑有一些实战类的课程。比如带着做一些电商系统等,这样会涉及一个有实际意义的项目的所有过程和技术,比如技术选型,Linux,Spring,DB,部署,监控等等。 培训班具体的事情我了解的不多。只是据说培训班坑很不少,而且听说都不便宜,量力而为。
作者回复: 是的,我一点都不慌(擦擦手心汗
作者回复: 会python可以对比着学。Java对于有编程经验的同学来说还是挺简单的。
作者回复: 是吗?我今天再好好照照镜子。
作者回复: 先学基础,再优先学框架,让自己有做东西的能力,然后穿插着学底层核心技术。 我这么说的原因是,如果只是学底层核心技术,好处当然是基础更牢固。但是缺点是很难坚持,因为底层核心的技术,做东西一般用不到,学了没有用武之地,就容易放弃,或者硬用,而硬用很容易适得其反。 学习框架,可以很快的让自己能开始做一些东西,让自己把想法变成可以跑的应用,而在这个过程中,你自然会接触到底层那些不会的知识,也可以更有针对性的去学习,因为这时候是真的用到了,真的能解决实际问题了。 当然,如果本身从事的事情就是需要用到底层核心技术的,那就不用想了,使劲儿学就是了。 所以先学什么没有固定答案,最合适的答案是:用到什么学什么。
作者回复: 有C++基础学起来会很快~,哦,建议你从第二篇开始上心看,或者从第一篇的数组那一节开始。前面的看个意思就够了,Java比C++要简单,前面的东西其实跟C++都是一样的。
作者回复: 参加给你的另一个回复
作者回复: 不用,视频的形式更生动一些
作者回复: 只是学会还不够,要多写代码,积累一些代码量。可以根据自己的兴趣,做一些相对功能完整的程序,证明自己的能力。