分享

【新手必看】浙大翁恺老师告诉你:学习JAVA的N个理由(附独家答疑)

 nisz 2016-06-25
适看人群:计算机专业学生/JAVA开发工程师。

浙江大学计算机学院教师,ACM-ICPC优秀教练奖得主,2011世界总决赛金牌教练。主要讲授包括C、C++、Java程序设计,程序设计语言原理,计算机体系结构,嵌入式系统等课程。

经常有学生问我:怎么样才能学好java?自学java难吗?
 
我认为,自学Java并不难。相对于其他语言来说,因为Java95年才出来,所以比较新(其实也不够新了),旧的语言中一些不合适的东西在Java里面已经被改掉了。当然Java它还是非常丰富庞杂的语言,它有很多的成分在里面,但是从初学者的角度来说,Java需要理解或掌握的东西并不太多。任何一个人学编程,首先要掌握变量表达式语句,语句里面的条件、判断、循环,这些基本概念掌握之后, 剩下的都是一些语言特殊相关的。

TIOBE2016年6月前10名编程语言长期走势图,
JAVA始终处于优势

在我看来,JAVA是一个非常值得学习的语言。

我们现在看到一个很有意思的变化是:软件开发的面貌已经有了很大的不同。大家可以回想一下,最常一个使用的软件是什么?相信绝大多数的同学都会说:微信。我们传统提到的软件是在计算机桌面上的软件,但是现在“软件”常常指的是在其他载体上。传统在桌面上的软件一般是用C#、C++、Objective-C来写的,其中有一部分是JAVA,虽然份额不是很多。
 
现在很多软件的运行都是靠背后的服务器,而服务器通常是需要JAVA和各种新兴语言。也有很多软件是在浏览器中运行的,如果是学过前端的同学,那么对JavaScript就不会陌生。另外还有一些在嵌入性设备中运行的软件,可能是用C语言来写的。所以在不同的地方,是由不同的语言来写的。
 

根据数据显示,占据份额最大的是后端,其大部分是由JAVA制作的。其次是企业级的应用,大部分的该应用都是基于网页的,那也就是由Java编写的。第三的是移动应用客户端,如果是安卓的系统,那又是由java编写而成的,即使是iOS系统,其后端也是java。

JAVA语言在计算模式演变过程中,寻找到了适合自己发挥的地方,因为java不擅长桌面,但是现在桌面变得越来越不重要。
 
目前的软件普遍表现为前端/后端模式。网站不再是提供网页的站,而是服务提供者。前端的语言用的是HTML、CSS或者JavaScript;而后端则是Java、PHP、.net、Python and JavaScript。

而我们在选择用什么样的语言来写程序的时候,通常有两个因素会起到重要影响:
1)这个语言有一个现成的库,而这个库正好能解决这个问题;
2)身边所有的程序员只会某一种语言。

目前的情况是:人们会因为JAVA很好用而开发自己可以用的库,所以当别的人要开发应用的时候发现JAVA有合用的库,就选择了JAVA。因为这变成了一种正向的循环和反馈。与各种新兴动态语言相比,JAVA显然更适合大型系统。

彩蛋:来自翁老师的独家答疑
提问:我非常喜欢JAVA这门语言,那我接下来应该怎么深入学习呢?

翁恺:我觉得做网络上的编程题目不是一种特别有效的方式,与将来大家在工程中做的项目还是不一样的。建议大家应该自己想办法找一些比较大的应用来做,如果只是学了java还没有学习java web相关的东西,可以尝试做一些简单的桌面应用,比较容易上手,能体会一些感觉。

提问:我在学校学过C,C++,知道基础知识,但是学完学校的课程后除了会做一些简单的编程,其他的我却毫无想法,这该怎么办?

翁恺:以我对学校课程的理解,学校的这些编程课程一般不会教你做一个大型的所谓架构设计的东西。当你面对一个需求,怎么把这个需求分析出来,去用计算机的方式理解出来,去做整个软件的架构设计,该有一些怎么样的部分,这些部分怎么做接口等等,这些是在编程语言之外的,光把语言学好是做不到这些东西的。

提问:听说现在学前端的同学,都开始学后端语言了,老师怎么看这种流行趋势?

翁恺:这确实是一种流行。既然学了前端,不如再学后端,也许就能成为一个全站的工程师。或者也有另外一个考虑,就算不从自己职业成长角度考虑,你想要在一个企业里面大家一起做事情,你如果能够了解别人做事情的方法或他的能力,尤其是他的局限,这样双方互相沟通上交流上会好一些。一个需求或功能总是可以由前端来做,也可以由后端来做,这个时候到底该谁来做,双方是协作,还是互相较劲,这就很不同。如果前端多少懂点后端,后端多少懂点前端,这样子会比较和谐,是不是?

提问:老师觉得野生的程序员好还是圈养的好?

翁恺:我觉得程序员需要圈养,这不是说野生的程序员有什么不好,而是因为真正在做大事情的都是很多人合作的,不会只是你一个人,圈养的程序员排除掉不好的含义,至少在你成长的过程中你是跟很多人一起成长的,不是你自己在瞎想的,你是跟很多人一起碰撞交流的,我觉得这个过程对一个人的成长是很有用的,不是必须在一个很高级的机构或名校学习或在大公司工作,但你学习的过程应该是一个有序的团体性的过程。

提问:老师觉得什么是“程序猿的自我修养”?

翁恺:总结三点我觉得很重要的。
1) 用一手资料不用二手资料,例如只在官网下软件和读官方手册;
2)学会用命令行工作,也要学会用脚本做常做的事,在积累后,一些常规工作就会变得十分快捷。并且在远程操作的时候,脚本的网络带宽需求很小,办公便捷性提升。
3)学会在线代码托管和版本管理。将你写的所有的代码和文档都放上去,不会害怕电脑损坏、被盗。并且,几年下来就有了足以表明自己成就的展示空间。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多