其实Java可以做的东西实在太多了,网站、软件、手机游戏、电脑游戏、中间件以及现在流行的安卓手机app等,都是由Java语言编写的;除了这些,Java还有很多用途,家里的微波炉、洗衣机等家电也有可能是Java控制的。
1、编写网站
现在许多大型网站都是用Java编写的,比如我们熟悉的电子商务交易平台阿里巴巴、淘宝、京东都是使用Java编写的。
即使是简单的jsp、servlet,和以struts为基础的网站,在政府项目中也是很受欢迎的,例如保险、教育、医疗、国防等部门的网站都是以Java基础来开发的。
2、Android应用
Java做安卓不单单是系统,还有APP。对于如今的开发人员来说,他们更多的时间是花在开发APP上面。
你在Android手机上,随便打开一个App应用,都是用Java语言编写。虽然现在Android运用了不同的JVM以及不同的封装方式,但是代码还是用Java语言编写的。
3、大型企业服务器应用
很多大型企业管理系统、CRM系统,ERP系统主要使JAVA编写。例如移动、联通、电信等通讯行业的客户管理系统,快递公司的物流系统离不开Java;交通工具的订票系统绝大部分也是使用Java开发的。
4、做软件工具
一般来说,编程语言都可以做软件,Java也不例外,许多常用的软件和开发工具都是运用Java来编写和开发的,例IneteliJIdea、Eclipse,NetbansIDE等。
5、嵌入式领域及消费类电子产品
Java在嵌入式领域发展空间很大,对于嵌入式系统来说,Java技术因为比C语言和汇编语言有很明显的优越性,而受到了嵌入式领域的青睐,并得到了大量的研究与开发应用。
嵌入式设备及消费类电子产品,主要用JavaMe,信息家电(如数字电视、机顶盒、电冰箱)、无线手持设备、通信终端、医疗设备、汽车电子设备等都是比较热门的Java应用领域。
6、大数据技术
Java最大的优势之一是它在大数据领域的地位,目前很多的大数据的架构都是通过Java来完成的。
例如现在最主流的大数据框架Hadoop的应用主要用Java开发的;Apache的基于Java的HBase和Accumulo以及ElasticSearchas。
当下,人工智能已经成为越来越火的一个方向。普通程序员,如何转向人工智能方向,是知乎上的一个问题。
一目的
本文的目的是给出一个简单的,平滑的,易于实现的学习方法,帮助“普通”程序员踏入AI领域这个门。这里,我对普通程序员的定义是:拥有大学本科知识;平时工作较忙;自己能获取的数据有限。因此,本文更像是一篇“from the scratch”的AI入门教程。
二 AI领域简介
AI,也就是人工智能,并不仅仅包括机器学习。曾经,符号与逻辑被认为是人工智能实现的关键,而如今则是基于统计的机器学习占据了主导地位。最近火热的深度学习正是机器学习中的一个子项。目前可以说,学习AI主要的是学习机器学习。
但是,人工智能并不等同于机器学习,这点在进入这个领域时一定要认识清楚。关于AI领域的发展历史介绍推荐看周老师写的《机器学习简介》。下面一个问题是:AI的门好跨么其实很不好跨。我们以机器学习为例。
在学习过程中,你会面对大量复杂的公式,在实际项目中会面对数据的缺乏,以及艰辛的调参等。如果仅仅是因为觉得这个方向未来会“火”的话,那么这些困难会容易让人放弃。考虑到普通程序员的特点,而要学习如此困难的学科,是否就是没有门路的答案是否定的。只要制定合适的学习方法即可。
三学习方法
学习方法的设定简单说就是回答以下几个问题:我要学的是什么我怎样学习我如何去学习这三个问题概括说就是:学习目标,学习方针与学习计划。学习目标比较清楚,就是踏入AI领域这个门。这个目标不大,因此实现起来也较为容易。“过大的目标时就是为了你日后放弃它时找到了足够的理由”。
学习方针可以总结为“兴趣为先,践学结合”。简单说就是先培养兴趣,然后学习中把实践穿插进来,螺旋式提高。这种方式学习效果好,而且不容易让人放弃。有了学习方针以后,就可以制定学习计划,也称为学习路线。下面就是学习路线的介绍。
四学习路线
我推荐的学习路线是这样的,如下图:
这个学习路线是这样设计的:首先了解这个领域,建立起全面的视野,培养起充足的兴趣,然后开始学习机器学习的基础,这里选择一门由浅入深的课程来学习,课程最好有足够的实验能够进行实战。基础打下后,对机器学习已经有了充足的了解,可以用机器学习来解决一个实际的问题。
这时还是可以把机器学习方法当作一个黑盒子来处理的。实战经验积累以后,可以考虑继续进行学习。这时候有两个选择,深度学习或者继续机器学习。深度学习是目前最火热的机器学习方向,其中一些方法已经跟传统的机器学习不太一样,因此可以单独学习。除了深度学习以外,机器学习还包括统计学习,集成学习等实用方法。
如果条件足够,可以同时学习两者,一些规律对两者是共通的。学习完后,你已经具备了较强的知识储备,可以进入较难的实战。这时候有两个选择,工业界的可以选择看开源项目,以改代码为目的来读代码;学术界的可以看特定领域的论文,为解决问题而想发论文。
无论哪者,都需要知识过硬,以及较强的编码能力,因此很能考察和锻炼水平。经过这个阶段以后,可以说是踏入AI领域的门了。“师傅领进门,修行在个人”。之后的路就要自己走了。
下面是关于每个阶段的具体介绍:
0领域了解
在学习任何一门知识之前,首先第一步就是了解这个知识是什么它能做什么事它的价值在什么地方如果不理解这些的话,那么学习本身就是一个没有方向的舟,不知道驶向何处,也极易有沉船的风险。了解这些问题后,你才能培养出兴趣,兴趣是最好的引路人,学习的动力与持久力才能让你应付接下来的若干个阶段。关于机器学习是什么,能做什么,它与深度学习以及人工智能的关系,可以看我写的博客从机器学习谈起。
1知识准备
如果你离校过久,或者觉得基础不牢,最好事先做一下准备复习工作。“工欲善其事,必先利其器”。以下的准备工作不多,但足以应付后面阶段的学习。
数学:复习以下基本知识。线性代数:矩阵乘法;高数:求导;概率论:条件与后验概率。其他的一些知识可以在后面的学习的过程中按需再补;
英文:常备一个在线英文词典,例如爱词霸,能够不吃力的看一些英文的资料网页;
FQ:可以随时随地上Google,这是一个很重要的工具。不是说百度查的不能看,而是很多情况下Google搜出来的资料比百度搜的几十页的资料还管用,尤其是在查英文关键字时。节省时间可是很重要的学习效率提升;
2机器学习
机器学习的第一门课程首推Andrew Ng的机器学习。这门课程有以下特点:难度适中,同时有足够的实战例子,非常适合第一次学习的人。cs229这门课程我这里不推荐,为什么,原因有以下:
时间:cs229的时间太早,一些知识已经跟不上当今的发展,目前最为火热的神经网络一笔带过。而Cousera上神经网络可是用了两个课时去讲的!而且非常详细;教学:Ng在cs229时候的教学稍显青涩,可能是面对网络教学的原因。有很多问题其实他都没有讲清楚,而且下面的人的提问其实也很烦躁,你往往不关心那些人的问题。这点在Coursera上就明显得到了改善,你会发现Ng的教学水平大幅度改善了,他会对你循循善诱,推心置腹,由浅入深的教学,在碰到你不明白的单词术语时也会叫你不要担心,更重要的,推导与图表不要太完善,非常细致清晰,这点真是强力推荐;字幕:cs229的字幕质量比Coursera上的差了一截。Coursera上中文字幕翻译经过了多人把关,质量很有保证;作业:cs229没有作业,虽然你可以做一些,但不会有人看。这点远不如Coursera上每周有deadline的那种作业,而且每期作业提交上去都有打分。更重要的是,每期作业都有实际的例子,让你手把手练习,而且能看到自己的成果,成就感满满!
3实践做项目
学习完了基础课程,你对机器学习就有了初步了解。现在使用它们是没有问题的,你可以把机器学习算法当作黑盒子,放进去数据,就会有结果。在实战中你更需要去关心如何获取数据,以及怎么调参等。如果有时间,自己动手做一个简单的实践项目是最好的。
这里需要选择一个应用方向,是图像(计算机视觉),音频(语音识别),还是文本(自然语言处理)。这里推荐选择图像领域,这里面的开源项目较多,入门也较简单,可以使用OpenCV做开发,里面已经实现好了神经网络,SVM等机器学习算法。项目做好后,可以开源到到 Github 上面,然后不断完善它。实战项目做完后,你可以继续进一步深入学习,这时候有两个选择,深度学习和继续机器学习;
4深度学习
深度学习:深度学习是目前最火热的研究方向。有以下特点:知识更新快,较为零碎,没有系统讲解的书。因此学习的资源也相对零散,下面是一些资源介绍。其中不推荐的部分并不代表不好,而是在这个初学阶段不合适:
推荐,UFLDL:非常好的DL基础教程,也是Andrew Ng写的。有很详尽的推导,有翻译,且翻译质量很高;推荐,Deep learning (paper):2015年Nature上的论文,由三位深度学习界的大牛所写,读完全篇论文,给人高屋建瓴,一览众山小的感觉,强烈推荐。如果只能读一篇论文了解深度学习,我推荐此篇。这篇论文有同名的中文翻译;推荐,Neural networks and deep learning:这本书的作者非常擅长以浅显的语言表达深刻的道理,虽然没有翻译,但是阅读并不困难;推荐,Recurrent Neural Networks:结合一个实际案例告诉你RNN是什么,整篇教程学完以后,会让你对RNN如何产生作用的有很清晰的认识,而这个效果,甚至是读几篇相关论文所没有的;不推荐,Neural Networks for Machine Learning University of Toronto Coursera:深度学习创始人教的课,最大的问题是太难,而且老先生的吐字有时不是很标准;不推荐,Deep Learning (book):同样也是由深度学习大牛所写的书,但感觉就像是第二作者,也就是他的学生所写的。很多内容都讲了,但是感觉也没讲出什么内容来,只是告诉你来自那篇论文,这样的话可能直接阅读论文更合适。不推荐,cs231n:李菲菲的课程,很有名,专门讲CNN。但是这门课程有一个最大的问题,就是没有字幕,虽然有youtube的自动翻译字幕,但有还不如没有。
5继续机器学习
深度学习未必就是未来的一定主流,至少一些大牛是这么认为的。传统的机器学习有如下特点,知识系统化,有相对经典的书。其中统计学习(代表SVM)与集成学习(代表adaboost)是在实践中使用非常多的技术。下面是相关资源:
推荐,机器学习(周志华):如果是在以前,机器学习方面的经典教材首推PRML,但现在周老师的书出来以后,就不再是这样了。首先推荐读周老师的书。这本书有一个特点,那就是再难的道理也能用浅显精炼的语言表达出来。正如周老师的名言:“体现你水平的地方是把难的东西讲容易了,而不是把容易的东西讲难,想把一个东西讲难实在太简单”;
不推荐,Pattern Recognition And Machine Learning:当前阶段不推荐。PRML是以贝叶斯的观点看待很多机器学习方法,这也是它的一大特色。但对于初学者来说,这种观点其实并无必要。而且此书没有中文翻译,当前阶段硬啃很容易放弃;
6开源项目
当知识储备较为充足时,学习可以再次转入实践阶段。这时候的实践仍然可以分两步走,学习经典的开源项目或者发表高质量的论文。开源项目的学习应该以尽量以优化为目的,单纯为读代码而学习效果往往不太好。好的开源项目都可以在Github 里搜索。这里以深度学习为例。深度学习的开源优秀库有很多,例如torch,theano等等,这里列举其中的两个:
推荐,DeepLearnToolbox:较早的一个深度学习库,用matlab语言撰写,较为适合从刚学习的课程转入学习。遗憾的是作者不再维护它了;
推荐,tensorflow:Google的开源库,时至今日,已经有40000多个star,非常惊人,支持移动设备;
7会议论文
较好的课程都会推荐你一些论文。一些著名的技术与方法往往诞生于一些重要的会议。因此,看往年的会议论文是深入学习的方法。在这时,一些论文中的内容会驱使你学习数学中你不擅长的部分。有时候你会觉得数学知识储备不够,因此往往需要学习一些辅助课程。
当你看完足够的论文以后,在这个阶段,如果是在校学生,可以选择某个课题,以发论文为目的来学习研究。一般来说,论文是工作的产物。有时候一篇基于实验的论文往往需要你写代码或者基于开源项目。因此开源项目的学习与会议论文的工作两者之间是有相关的。
两者可以同时进行学习。关于在哪里看论文,可以看一下CCF推荐排名,了解一下这个领域里有哪些优秀的会议。
下面介绍两个图像与机器学习领域的著名顶级会议:
CVPR:与另两个会议ICCV和ECCV合称计算机视觉领域的三大会,注意会议每年的主页是变动的,因此搜索需要加上年份;Conference on Neural Information Processing Systems:简称NIPS,许多重要的工作发表在这上面,例如关于CNN的一篇重要论文就是发表在上面;
8自由学习
到这里了,可以说是进入这个门了。下面可以依据兴趣来自由学习。前阶段不推荐的学习资源也可随意学习,下面是点评:
cs229:Ng写的讲义很不错,其中关于SVM的推导部分很清晰,想学习SVM推荐;Neural Networks for Machine Learning:大牛的视角跟人就是不一样,看看Hinton对神经网络是怎么看的,往往会让你有种原来如此的感悟。其实看这门课程也等同于读论文,因为几乎每节课的参考资料里都有论文要你读;CS231n: Convolutional Neural Networks for Visual Recognition:最新的知识,还有详细的作业。国内应该有团队对字幕进行了翻译,可以找找;PRML:作为一门经典的机器学习书籍,是很有阅读必要的,会让你对机器学习拥有一个其他的观察视角;
五总结
本文的目的是帮助对AI领域了解不深,但又想进入的同学踏入这个门。这里只说踏入,是因为这个领域的专精实在非常困难,需要数年的积累与努力。在进行领域学习前,充分认识自己的特点,制定合适的学习方法是十分重要的。
首先得对这个领域进行充分了解,培养兴趣。在学习时,保持着循序渐进的学习方针,不要猛进的学习过难资源;结合着学习与实践相辅的策略,不要只读只看,实际动手才有成就感。学习某个资源时要有充分的目的,不是为了学开源项目而看代码,而是为了写开源项目而看;不是为了发论文而写论文,而是为了做事情而写论文。
本文来自公众号:“大技术技术汇”,guanzhu了解大数据行业学习大数据技术和学习路线,还有免费学习资料放送。
如果一个学习资源对你过难,并不代表一定是你的问题,可能是学习资源的演讲或撰写人的问题。能把难的问题讲简单的人才是真正有水平的人。所以,一定要学习优质资源,而不是不分青红皂白的学习。最后,牢记以兴趣来学习。学习的时间很长,过程也很艰难,而只有兴趣才是让你持之以恒,攻克难关的最佳助力。
1、向IT培训师转型
在这个知识付费的时代,想要去成为培训师已经变得异常的容易,你可以通过在线教育平台注册成为讲师,当然你也可以申请去做公司内部的培训师,将各种知识和技能传递给其他渴望学习的人。
更何况35岁以上的技术人员,有着更加丰富的项目经验和技术积累,更能够帮助到年轻人避免重复过去自己所犯下的错误,更快地实现进步和提升自我。
2、变成专才或者转向管理岗
任何一个技术岗位都有两个方向:技术专家和管理岗位。前者更加偏重技术,需要你在当前领域钻研得很深,需要时时关注行业最前沿的动态,保持一颗谦虚学习的心态,时刻走在行业的最前端,最后成为所在行业的技术大牛,薪资待遇和前景也是很不错的。
后者则更加偏向管理,需要你在对技术有着很深的掌握的同时,能够多多了解业务方面的知识,注意培养自身与他人的沟通能力,并且保持良好的人脉关系,往企业中高层去努力。
3、转行从事其他同等级的岗位
适合程序员转岗的位置还是蛮多的,比方说产品经理,程序员平常与产品经理接触较多(应该说是经常撕逼和打架),更何况程序员相比较于产品经理更懂技术,对技术开发的时限、工作量和可落地性更加了解。
又比如说做技术支持或咨询顾问,对于拥有专业技术背景的IT工程师来说,能够为满足客户的需求提供不一样的视角和解决问题的方案,自然而然能够能在非技术部门脱颖而出,久而久之,能够获得更多升职加薪的机会。
有人说程序员挣钱很多,但为什么经常听说程序员想转行呢?
程序员转行一般有以下几个原因:(1)年龄大后,技术条件跟不上。编写程序不仅仅靠的是技术,精力也很重要。随着人的年龄增长,反应力、逻辑能力等都会下降。对应编程行业这些方面都是有限资源,几年的高强度脑力劳动,会使程序员的身心疲惫。
(2)工作压力大。俗话说:“有命挣钱,没命花”,说的就是程序员。
(3)编程工作耗时耗力,陪伴亲人的时间很少。
以上几点就是程序员转行的部分原因,这里没法一一列出,因人而异!
程序员转行,一般有几条出路:去软件教学机构充当管理者或者培训员;去高校任职,轻松不说,各方面福利也不错;自己开个小公司、做网站经营;或者彻底转行,从事与软件无关的行业,毕竟编程这样高逻辑的东东都可以搞定,学习能力还是有的。望采纳,谢谢!
从目前行业的发展趋势来看,程序员可以往以下几个方向发展:
第一,走研发路线。如果程序员未来想在技术领域走得更远,应该走研发级路线,简单的说就是培养自己的创新能力。对于大量目前从事应用级岗位的程序员来说,要想走研发级路线要注重数学能力的培养,因为软件研发问题说到底就是数学问题。对于条件允许的程序员来说,可以重点考虑一下通过读研来完成岗位升级。
第二,走咨询路线。对于长期从事行业定制软件开发的程序员来说,未来可以走行业咨询专家的路线。要想走行业咨询专家路线,需要在平时的工作中积累大量的行业解决方案,并且能够根据技术发展趋势不断完善相关方案。目前行业咨询专家的薪资待遇还是比较可观的,随着产业互联网的发展,行业咨询专家的岗位需求量将持续增加。
第三,走管理路线。管理路线也是不少程序员的重要选择,比如高级项目经理、产品经理等都是不错的选择,另外不少程序员也会转向人力资源管理方面的岗位,比如负责新员工培养以及招聘等工作。在互联网快速发展的近些年来,不少公司都采取“老带新”的培养模式,所以不少经验丰富的程序员逐渐走向了管理岗位。
程序员曾经是一个人人称羡享受高薪的职业,可是随着科学技术的日益发展,程序开发渐渐发展成为一个人人都可以涉足的行业,只要经过培训,就可以成为一个初级的程序设计者,往日的光环逐渐褪去。此外,行业也有程序员最多做到30岁就要重新定位的说法存在。在这样的背景下,越来越多的程序员开始思考转型的问题。那么,程序员转型的话可以做什么呢?下面济南IT培训优就业给大家列举几个常见的例子~
1、向ERP实施顾问转型
在当今信息化时代的互联网环境中,不管企业选择了哪一种转型的方法、途径,都离不开信息化。信息化成为帮助中国企业转型升级的加速。企业转型期将需要大量的信息化实施,这就是说企业需要大量管理软件应用顾问人才。有几年的编程经验, *** 作过大量项目,这样有技术背景又有实施经验,向ERP实施顾问转型是相对比较容易的。
2、向项目管理发展
项目管理可以说是程序员更为便捷的发展之路。目前,软件项目经理是人才市场上炙手可热的人才,有丰富经验、外语好的软件项目经理更是抢手的香饽饽,供不应求,薪水自然也是水涨船高。最重要的是,一个优秀的项目经理可以在这个岗位上长久工作下去,并且有向高层进一步提升的可能。
3、向IT营销转型
IT与其他行业不同,由于技术性较强,营销人员一般也须有较强的技术背景,且最好有着丰富经验。互联网公司、电子商务公司、软件公司目前都需要有技术背景的营销人员;另外,电子商务的再度火爆,使得传统企业开始重视电子商务营销,也需要有技术背景的营销人员。这类工作薪水不低,加上提成应该可以拿到高于程序员的薪水,同时也比较稳定。
4、做IT培训
培训越来越成为应届毕业生从校园走向社会的跳板之一。掌握一些热门的技术,参与过一些有实力的项目,同时对教师这一职业向往已久的程序员来说,培训是展示才能,获得高薪的又一平台。你可以不是那么牛的技术开发者,但只要你能培养出牛气的开发者,相信你在培训这条路上可以越走越顺畅。
当然,还有很多其他的行业可以供想要转行的程序员选择。济南IT培训优就业(itzx007)总结,作为要转行的人来说,首先要明确自己的兴趣,“做自己爱好的事,并从中取得报酬”,物质精神两不误,才能体会出生活的韵味。
以上就是关于Java程序员的发展方向有哪些全部的内容,包括:Java程序员的发展方向有哪些、普通程序员如何向人工智能方向转型、程序员35岁之后的出路有哪些等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)