❶ 美国程序员有中年危机吗
在美国经常能看到工作二、三十年的程序员,比如:PowerBI上游的Common Data Model的作者,二十多年的程序员;hulu等美国总部岗的一线专家很多也是70后;AWS上Aurora等数据库开发者也是二十年的选手(有些还不是核心模块)等,国内这个年龄恐怕要被劝退或者找工作到处碰壁。我们认为原因有以下几个:
1、基础软件比美国落后很多,36项卡脖子的核心技术等待突破:http://www.pinlue.com/article/2019/05/1918/318988000342.html,数据库、操作系统、浏览器、数据分析平台等这些往往需要十年,甚至二十年核心技术的积累,国内这些公司比较少,二十年的技术大牛能去的地方少,也缺少了相应的土壤,用十年多去培养一些这样的选手。
2、国内加班环境比国外厉害,很多公司之间一旦业务有竞争,往往996,007竞争,搭建业务系统不需要十年的经验,拼的体力和执行性,年龄大不占优势,这一点最近的社区买菜可以看出来。
3、前面几年国内的人口红利带来了工程师红利,而美国IT技术人员,亚裔占主体,印裔和华人又占大头;土着白人更倾向律师、医生、精算师等其他工作;黑人在体育和音乐上的天赋,他们又主要从事其他职业;另外,美国的阶层更加固化,读常春藤学生的父母很大一部分也是常春藤毕业,国内因为这几年的互联网、部分城市房价等红利,很多人实现了阶层跨越;
4、国内的环境,导致一批技术天赋不错的年轻选手很早走向管理,项目等横向的事情,让他们慢慢脱离技术,或者只能做做脱离代码的架构师。
5、美国工会和法律相对更健全些,有年龄歧视,会被罚的厉害。国内因为很多企业是纳税大户,也解决了不少就业,有些地方上也是睁一只眼闭一只眼。
对于未来
1、随着国内人口红利不再,加上基础软件崛起,技术环境持续看好,不想走管理路线,想专注技术的选手回报也会越来越多。
2、美国百亿美金的toB技术型公司有50家左右(截止2020年底),国内现在还没有一家,按照市场以及国内经济增速,国内未来几年百亿美金市值的toB公司也会越来越多。相信国内不出五年,持续在一个方向深耕多年、40+的技术大牛会越来越多,也会有更好的土壤让他们安心在那边十年磨一剑,打磨产品的核心能力,也可以不停的试错找到产品的爆款功能。
❷ 数字化对人类社会的负面效应是什么
数字化时代也为人类社会带来了一些负面效应,主要表现在以下几个方面:
(1)将在一定时间引发全球性的社会动荡。如前所述,数字技术的发展给人类带来了新的财富,网络逐渐侵蚀了国家的界限。在数字化时代,一部分人的权力被剥夺了,新一轮的权力分配重新开始,全球文化将吞并弱小文化。同时,全球性的暴力手段并未消失,一些政治团体或民族、种族实体为维护自身利益可能会制造动荡。而且,对比特控制权的争夺也将加剧这场混乱。因此,在一定时期内,将造成人类社会的不稳定。但是,如果人们能够为了人类的整体利益携起手来,这场动荡或许会成为比特时代到来的催化剂。
(2)人群分裂,人际关系冷漠化。网络将把人们分为各个不同的利益群体。随着国界的淡忘,网络将变得越来越大而且越来越重要,世界也许会分裂为华人网络、印度人网络、环境网络、医疗网络、妇女网络、金融网络等不同的网络群体。网络将改变社会生产和生活方式,加深人与人之间的疏离。社会互动以电脑作为中间媒介,人与人之间的直接沟通减少,人际关系淡化,人情趋于冷漠,世态更加“炎凉”。
(3)高科技犯罪增多。数字技术的发展也为犯罪提供了方便,利用信息网络从事高科技犯罪将成为比特时代的一大社会问题。犯罪分子可以进入网络空间,从事盗窃活动和经济诈骗,也可以从事色情贩卖,或进行电子赌博等。任何利用计算机技术知识作为基本手段的非法活动即称为计算机犯罪。在发达国家,利用计算机进行犯罪活动始于20世纪60年代,70年代案件恶性膨胀,80年代已构成日益严重的社会问题。目前,计算机犯罪主要集中在机密信息系统和金融系统。它对国家安全和防御、政治经济、科学技术和社会生活构成了严重的破坏和威胁。
1983年5月12日,伦敦的大通银行接到哥伦比亚中央银行的计算机指示,将1350万美元通过纽约的大通银行过户到纽约的摩根信托保证银行,又继续周转到苏黎世的以色列哈普林银行,再转至巴拿马的一家银行,由于同案犯没有提取现金的正确文件,这笔款项又一次回转到欧洲,同年11月案发,涉及12人作案。
星球大战1986年5月联邦德国的4名罪犯,利用计算机改变信用卡上的磁带密码,骗取10万马克。后案发被捕。
1988年联邦德国汉诺威大学计算机系的学生巴蒂亚斯·斯佩尔,将自己的计算机同美国军方和军工承包商的计算机联网,在2年时间里窃取了大量美国国防机密,其中有美国的“星球大战”计划、北美防空司令部的核武器和通信卫星方面的情报。
由于美国国家航空航天局在全世界的数据网的保密系统存在缺陷,被联邦德国的计算机爱好者钻了空子,这些人窃取了某些关键字,进入美国航天局的数据网,于是通过自己的计算机屏幕就可以看到有关航天飞机研究合同系统的安全调查和助推火箭事故等内容,并可接触这一数据网用户的电子信件,甚至可以使整个数据网陷入瘫痪。
在我国,1986年深圳发生第一起利用计算机窃取储户存款的案件。几年来,我国银行系统共发生利用计算机盗窃、贪污、挪用现金等犯罪案件上百起,涉及款项数千万元,最大一笔竟达1500万元之多。
1992年底,某证券公司发现一起内部工作人员利用计算机挪用80多万元公款炒股谋利的特大案件。据有关部门透露,自深圳开通股市以来,各地证券公司已发生多起内部工作人员,特别是计算机程序员和操作员,采用内外勾结的方法,挪用公款炒股案件。
还有目前最为棘手的电信欺诈问题,案犯自空中拉截电波,利用计算机及特殊软件解译密码,再把这些窃取的密码植入手机空机,炮制与合法用户同样号码的手机无偿使用,而通讯费用由原号码的合法持有者支付。这些利用计算机进行犯罪活动的不法分子,不仅偷取电话录音,盗窃私人长途电话密码,非法解密软件,而且利用先进装置来进行欺诈及其他犯罪活动。
面对猖獗的计算机犯罪,国务院发布了《中华人民共和国信息系统安全保护条例》。这样可使我国的计算机安全问题有法可依,有章可循,可以有效地遏制计算机犯罪的势头,增加打击力度,促使我国的计算机事业健康发展。
(4)人性异化。比特时代个人淹没于信息当中,形成“数字化人”。人们往往对高新技术能作出迅速反应,但逃避现实,不愿与人交往,对他人漠不关心,个人主义流行,安全感差;个人隐私虽具有一定匿名性,但传播受众面积大,速度快;各种变态行为、心理疾病增多;人与人之间缺少信任感,人性异化。
(5)贫富差距加大、“信息至上主义”流行、信息污染、信息欺骗等种种负面效应对未来社会都将产生不良影响,应当引起足够重视与研究。
❸ 程序员能在一线城市里生活一辈子吗
我是南京渣二本2019年毕业,计算机专业,本科毕业后感觉自己啥也不会,就报了南京半圆学社的java培训,当时去也没想太多,反正五个月花一万多,最后出来包分配,能找到7k工作的话,半年就能挣4万多了不久回本了嘛,不然在家自学个技能还得一年呢。
最后在半圆学社学习Java五个月吧,现在Java很吃香唉。学完之后,半圆学社就把学院的简历内推啥的帮忙找工作。然后简历也放在各大网站海投,后来面试去了科蓝软件,老师也有教你一些面试技巧,然后平时做的项目也起了作用,我看面试情况要了个8k的工资,后面就去科蓝上班了。后来因为上班时上午总是犯困,经常被小组长逮住,干了三个月没转正就被辞退了。
然后又找了一个月的工作,还是java工程师,工资6500。这份工作干了一段时间后看不到希望,后来想转手游开发(那段时间重度手游开始流行)。边工作边学cocos2d-x(当时也考虑过入手Unity3D,但自己是做C开发的,转C++感觉会更好些,所以最终选择了cocos2d-x开发平台),还顺便谈了个恋爱,谈了两个月后被分手了,分手后自己又学了一个月的手游开发,但总感觉自己目前的学历太低,就是干手游开发,顶多也是进个小公司,这样的小公司又没法跟腾讯网易这样的巨无霸抗衡。当年也利用周末时间在CSDN上报名参加了几场手游的讲座活动,主办方请了几个当年创业的小公司团队介绍行业情况,他们自己也说这行没有大家想象的那么美好,他们只能天天蹭热度,开发些卡牌博眼球的小 游戏 来挣钱续命,那些高大上现象级的手游根本没他们的份,他们也没有那精力和实力去做。
参加了几场手游开发活动后,发现这些跟我想象的很不一样。还有一个热点引起了我的注意,那就是大数据,是的,那年还不提什么人工智能和深度学习,最经常报道的还是大数据,hadoop。当时我觉得这个行业门槛比较高,也许可以渡过码农最害怕的中年危机。我考虑的更多也是学大数据相比手游开发会更稳定, 游戏 开发早就听说压力大,加班熬夜太正常。这个时候我开始考虑要不要考个研究生,提升学历的同时还能转大数据行业。
如果考研,就至少是211大学,而且还要是计算机相关专业,因为我在南京上班,所以我的目标是只考虑南京的大学,那么可选的范围就基本限定在了南京排名靠后的那几所211大学,又考虑到考试的难度,选择了软件工程专硕这个专业。经过多方打听,综合考虑了学校的知名度和开设的大数据相关研究方向和实力,最终在研究生考试报名截止日期那天报上了某某大的软件学院。
报完名后,距离考试还有两个月的时间。一切都是那么临时的样子,我自己也没必胜的信念,中间还考虑过辞掉工作,全身心的投入到考研复习中去,但最终感觉那样的话压力太大未必是好事而最终放弃了这一想法。不过幸好的是公司当时项目不忙,我基本不用加班,那两个月的时间,我每天早上七点多起,早上背英语到九点半,然后吃饭上班,晚上六点半下班后复习数学。最后的一个月开始复习政治和专业课(软件学院的专业课考试是学校自己命题,相对简单,所以我是在最后半个月才开始准备专业课)。就这样,一直坚持到了研究生考试。这期间,我一直没有跟家里提起我要考研了,直到研究生考试结束,那天晚上我跟家里打了电话说我考研了。
也可能是时间紧迫,自己一直是挤时间,态度还算端正。在过年高中同学一块儿聚会时,听另一个同学说研究生分数下来了。我还记得当时我们几个在理发店排队理发,我自己不敢查分数,让我那个同学帮我查的,最终考了311分,这个分数考某某大的软工专硕,基本算稳了。最后也不出我所料,最终进入了梦寐以求的某某大。不管怎样,我也算是211学校的研究生了。哈哈
考上了研究生,我又面临的一个现实问题——我岁数不小了。我是农村出身,而且自身也不是多聪明的孩子,从小学我就是垫底的,后来上了初中学习还算稍有出色,小学我留了一级,初中升高中我花钱买的分,高考第一年我又没考上,复读了一年,第二年才刚过二本线,报了一家**学院,学了计算机专业。又是留级,又是复读,又工作两年,上了这个研究生,还是软工专硕,我心里压力还是蛮大的,所以在研究生这三年,我也是抓住一切可以抓住的机会来努力提升自己,努力在自己身上贴金。
研一上学期,刚过完十一假期没多久,导师在我们群里说他有个朋友在中科院,做自然语言处理相关研究,问我们谁愿意过去帮忙,当时看到这条消息后,我第一个想法就是可以去中科院做科研,是个不错的贴金体验,我又科普了下NLP的相关东西,感觉还可以接受(其实那时候我对机器学习还处于懵懂的概念,基本啥也不懂,还一股脑的没事就在图书馆自学Hadoop,现在想想感觉挺幼稚,挺可笑的)。看到导师的这个消息后,我用了十分钟看了下相关知识,然后就赶紧给那个中科院的老师打过去电话说我想过去(那个中科院老师只要一个学生,所以我想的就是尽快抓住机会),我是第一个打电话的,而且还有工作开发经验,那边老师感觉我还不错,就接受了我。
到了研一下学期,我就搬到了中科院那边,那边老师还给我安排了宿舍。在中科院,我算是对机器学习,大数据这些名词有了比较明确的概念吧。这个学期,我自学了NLP的一些算法,在中科院的一些师兄帮助下,做了一些小实验,临近暑假时水了一篇论文,算是完成了项目。
这里需要说下自己过来的经验,实习工作尽量选大公司,因为到了毕业时公司都是看你实习公司的,你在创业公司做的东西再多,也不如一个大公司的名头。这是我的感受。
在新浪实习这三个月里,做的大多是一些数据的处理,对spark的开发熟悉,文本的分类还基本停留在关键词匹配上。自己做的也很无聊,另外自己已经开始关注聊天机器人这个领域,该领域在2019年底时算是火到了高峰期。在新浪实习了三个月后,我开始自己学习tensorflow和一些深度学习的基本知识,学了一个星期后,我又面试了一家做对话机器人的创业公司。然后在2029年12月我就跳到了这家创业公司,做对话生成模型。
在这家创业公司,我算是接触到了深度学习,一直用tensorflow做RNN模型,做了有两个多月,然后在微信公账号上看到一家日本研究所在找海外实习生,说也是做深度学习的相关研究。我觉得这是个不错的机会,但我也知道自己的条件,但人生就是这样,看到了这样的机会,不管怎样总要试一试啊,万一成功了呢?!抱着这样的态度,我用谷歌翻译和有道词典花了一晚上弄了个英文简历,又准备了两三天的基础知识,害怕突然袭击的电话面试。然后我就把简历投出去了。
大约过了一个星期左右,日本东京那边来了电话,是个华人,电话里我介绍了自己做的项目,问了我一些专业问题,然后用英语做了自我介绍,就说感觉还行,说这周会给我一篇paper,让我用一周的时间把它实现出来。没几天,paper发来后,我一看是一篇关于对话生成的paper,我之前做了两个月的对话了,还算熟悉,我就利用周五,周六和周日的三天时间加班加点的搞了出来,不算完全实现,但思路还算说得过去,到了周一上午我就迫不及待的把源码和文档发了过去,然后周二那边给我打来电话说我通过了,让我准备下护照和签证,去东京研究所实习。
秋招已经进行的如火如荼,我基本也没做任何准备,所以我的计划是找个有转正机会的实习岗,好好干,然后转正。就这样,我就投了京东金融的算法岗,实习面试简单,面了半个多小时,就同意让我去实习了(这里面有个坑,就是在面试时我明说了我只考虑有转正机会的实习岗,然而那个小组长只是笑了笑,然后转身就走了,过了一会儿HR说我面试通过,我就认为这个实习是可以转正的)。然后结果并非如此,我进去干了半个多月后,发现我们组里已经有四个实习生了,而且都是20届的研究生。其中一个已经实习了大半年,也一直不提转正的事儿,最后那个人再三提出后,这个leader才说组内目前没有校招名额,要等年后再看看有没有。这一说,大家都慌了,我跟大家一样,开始各种请假,各种面试。那时候已经到了11月份,秋招基本结束,各大公司开始补招了。
补招有个好处就是面试时没有那么难了,这期间我也做了一些准备。依次拿到了搜狗和京东商城的SPoffer,因为我已经签了搜狗,就果断拒了京东商城(也是京东金融的那次经历,让我对京东的印象很差)。再后来就是在搜狗实习时,又看到了BAT的算法岗的补招,我感觉还不错,决定再试试,毕竟进BAT是我最好的归宿,自己已经是烂学历了,还做了两年的外包,以后如果能有好的发展,进BAT镀几年金还是很有必要的。然后我就请了一个星期的假,好好准备了BAT的面试,在周五下午面了四面后,我拿到了BAT的口头offer。
年后的3月份,hr打来电话谈待遇,我以为拿到了搜狗和京东的SPoffer,BAT会给我提高待遇,可是hr就是这么叼,给了我一个白菜价,爱来不来,最后我还是来BAT了。就是这样,目前我在BAT实习,2020年6月毕业,拿了BAT的算法岗白菜价。
在这些公司实习时,我最大的感触就是我身边的同事已经不和我同龄了,有时候真的会很羡慕他们的年轻。和我同龄的,一路名校名企走过来的,现在都要比我高两三个级别了,但事实就是这样了,自己能做的,就是尽快赶上去吧!
我和楼主的愿望一样,首先是希望在IT行业能干一辈子(不管是搞技术还是搞管理),所以我当初放弃了二线互联网的SPoffer,来了BAT;再个是希望能一直呆在一线这样充满机遇,好的待遇和高福利的城市。我要做一件能够让自己觉得有意义的事,我要保证我有高收入的同时还能有保障的 社会 福利。说实话,如果按部就班的话,这些东西真的太难了。
IT干一辈子:就我自身目前的条件来看,有能力在IT行业干一辈子的概率应该很大了,BAT出来的应该不太会失业了吧。
在一线城市:我现在倒没有楼主那样的期望,在国外生活一段时间后,我发现了一个更大的世界,给了我更多想象的空间。想留在一线城市,就是为了高收入,高福利和高机遇,但这些东西在承担高房价的条件下就不再是三高了。
我这样的穷屌丝,哪怕攒上三四年够首付,还要承担二十年的房贷,说实话,我真的没有这个勇气。虽然说,我进了BAT,但我还是面临着失业的风险。中国的就业繁荣就集中在金融、房地产和互联网行业,大学各个专业的年轻学生都在学IT,不挤破脑袋往上爬就要面临被后来年轻人挤下去的危险。那么20年的房贷能还的起吗?如果每月一万左右的房贷,能保证自己的程序员寿命从还房贷起达到20年吗?工作没了,房子也就没了。没有什么刚需,哪里住不是住。我个人认为,后10年不再是前10年了,如果人民币再那么放水贬值的话,我觉得我应该多换点外汇,而不是抓紧买房了。所以我真的不敢买房。
相比国内的形势,国外几个发达国家的经济结构则相对平衡(没有说互联网行业一家独大),年轻人没有说只有搞程序才能拿高薪。这样的好处是各行各业的人真的可以安稳的干一辈子(再加上发达国家的人口老龄化),至少不需要像国内这样疯狂加班,还充满压力--以上是我个人见解
我目前的计划是1、强化自己的技术能力,能够做到独当一面;2、报英语培训班,练习口语交际(我现在也在自学并背单词,但发现自学确实太难,我底子差,英文发音都不标准,所以我决定还是要报个正规的培训班)。这是我近两年的计划。希望一切能够顺利,谢谢大家的支持。
目前比较高薪的行业无非就是金融和it行业,而it行业对城市的选择上尤为严格,基本必须是在一二线城市才有工作岗位,且稍弱的二线城市都不行。
那么,题主问的程序员能在一线城市里生活一辈子吗?其实换句话说,就是程序员能否干一辈子。其实我觉得是没问题的。
说实话,早十几年的那批程序员大部分早就实现了财富自由,相对来说,程序员保持在一线环境,奋斗在一线互联网,对 科技 各方面的嗅觉,或者是被动环境来说,是比较有活力的。
第二个,程序员行业的相对高薪起点,以及相对高薪奋斗路线清晰,使得只要肯努力就有收获不至于成为一句空话。很多时候,人们害怕的其实是,我付出了也不一定得到回报。程序员这个行业就不会。你刚毕业5K的程序员也是要写代码,你就算成长到月薪30K的架构师也是需要写代码。就算你其他方面一直不成长(比如待人处事等,当然各方面都优秀肯定更具备竞争力)只是代码水平一直上升,不需要做到管理层领导层级别(有些人天生和人打交道就不行,更何谈如何转型成管理。但是不是管理领导级别,其他大部分行业想要拿高薪基本又不可能),也能拿到丰厚的薪资水平(至少30K40K的纯程序员也算是一抓一大把,但是你是在传统行业?总经理都不一定有这个价位)
第三个,关于程序员是吃青春饭的问题。其实是一种过渡放大的问题。你想下,你做餐饮服务行业,你一直不自我提升,不提高自身素质,那你是不是升不到店长?那你升不到店长,你是不是干服务员干几年就腻了?是不是就想转行?而且服务员的转行是相对被动,第一个赚不到钱,第二个升不了职,被逼无奈。而程序员转行其实是主动转行。第一个是已经赚到钱了,第二个因为种种原因(比如家庭,比如身体等等)没法提升自我向高薪进阶(高薪指的是25K以上),别以为月薪十几K又如何,人都是会腻的,那既然有了钱又腻了,自己想转行想创业那不是分分钟的事?而且作为程序员也不是保守迂腐之辈,说干就干。
所以其实,题主问的,程序员能在一线城市里生活一辈子吗?答案肯定是没问题的。
程序员这三个字太笼统了,我认识一个老师一个大哥他呢硕士学历现在在阿里巴巴工作,快30了他和我说过他30就会彻底辞职不干了做点别的享受生活,对你没有听错,他早就年薪过百万了,同时在多个平台做课卖课,他也是程序员,而我呢每个月苦逼的拿着到手不到一万的工资也算程序员,这差别可就太大了,像他那样优秀的当然可以一直留在一线城市了对吧!!!
我呢其实我本人就不打算留在一线城市,尽管我的实力也不允许,就拿我来说我现在在上海无论我几点下班十点,十一点十二点或是凌晨两点我都能看到许多的人同我一样也就是刚刚下班或是比我还苦逼,还在加班,没办法这就是程序员,竞争压力真的很大像我这种乡下的孩子想要留在这种地方只能靠自己,这种难度可以想象。
当然这其中不排除一些有志青年,他们真的能吃苦肯挣钱拼了命的留在一线留在北上广,真的打心眼里佩服他们是啊这代人拼出来下代人会好过很多 。
所以说啊能不能留在一线城市还要看你意志够不够坚定,或是你的家里能不能提供足够的帮助,如果家中也是农村乡下的凭借自己立足在大城市,真的厉害我陶松服气 加油,打工人。
程序员是从事程序开发、程序维护的专业人员,一般分为两种类型,第一类是程序设计人员,第二类是程序编码人员,软件从业人员分为初级、中级、高级程序员,系统分析员,系统架构师,测试工程师。
上图就是程序员大致的级别以及对应的工资,所以程序员的工资是绝对不低的。
上图对于未来的发展前景的相关产业也做出了一个归纳,“大数据”“人工智能”都是近年来最火的词语,发展趋势更是不可估量,所以如果要是从事相关的编程操作的话,发展空间自然是非常大的。
所以要是你会做程序编程的话,并且你能够顺应时代需求的话,在一线城市生活绰绰有余。
首先还是要看个人定位,如果你的开发工作就是普通的码代码,那跟生产线区别也没多大,互联网内的螺丝钉,技术层面不能一直突破向上做到管理层的话大多数都要转岗或者跳槽,基本上离开一线互联网企业工资水平肯定要下降的,建议买房千万别买压力太大的,一旦遇到裁员后面压力就大了。如果想干一辈子程序员,肯定是要终身学习的,技术更迭速度太快,尽量选择赛道好的,有人情味的,年轻多存钱,多规划。程序员的生涯很宝贵,且用且珍惜,平台也非常重要。
目前比较高薪的行业无非就是金融和it行业,而it行业对城市的选择上尤为严格,基本必须是在一二线城市才有工作岗位,且稍弱的二线城市都不行。
那么,题主问的程序员能在一线城市里生活一辈子吗?其实换句话说,就是程序员能否干一辈子。其实我觉得是没问题的。
说实话,早十几年的那批程序员大部分早就实现了财富自由,相对来说,程序员保持在一线环境,奋斗在一线互联网,对 科技 各方面的嗅觉,或者是被动环境来说,是比较有活力的。
程序员能在一线城市里生活一辈子吗?
这个问题没有标准答案。
为什么这么说呢?因为这个问题本身就不严谨。
一线城市包括哪些城市?只有北上广深?还是包括新晋一线城市?每个城市的生活成本都不一样,每个城市的气候也不一样。有人调侃说广州深圳比北方城市发达是因为暖和,每年光取暖一项就能人均节约三四千块钱。
再者,题主所谓的"生活"又是什么标准?衣食住行,生老病死,子女教育等等各个方面都要考虑。仅仅住房一项,已经把工薪阶层"拒之城外"了,即使程序员普遍工资较高,也没办法承受如今一线城市的房价。
如果仅仅是待在一个城市讨生活,不买房不结婚那我觉得以一个程序员的收入还是可以"生活"一辈子的。
能。但是不能一直当程序员
如果一直做肯定可以立足一线城市,担心的就是做不了一辈子,又没更好的替代工作,那就不好说了。在北京找一个可以和程序员薪酬相匹配的工作还是很难的,基本上算是专业行业进行了彻底的转化。如果可以一直学习不落后从事一辈子程序员也未尝不可以。
❹ 计算机科学与技术考研
考研方向主要集中在:计算机技术、计算机应用技术、计算机科学与技术、工商管理。
计算机技术是(专业硕士)工程下的二级学科专业。计算机技术领域重点研究得是如何扩展计算机系统的功能和发挥计算机系统在各学科、各类工程、人类生活和工作中的作用。
计算机应用技术是计算机科学与技术专业下设的一个二级学科,是一应用十分广泛的专业,它以计算机基本理论为基础,突出计算机和网络的实际应用。
计算机科学与技术培养具有良好的道德与修养,遵守法律法规,具有社会和环境意识,掌握数学与自然科学基枯扰础知识以及与计算系统相关的基本理论、基本知识、基本技能和基本方法。
该专业毕业生就业面宽、就业前景可观,能够在网络通信类科研院所毁败闷、政府机构、银行、电力企业、计算机网络公司、通信公司等各类企纤弯事业单位从事计算机网络的科学研究、系统设计、系统防护、系统管理与维护和应用计算机科学与技术学科的系统开发、设计和系统集成等工作。
专业老师在线权威答疑 zy.offercoming.com❺ 程序员客栈app里面的人是真的吗
是真的,程序员客栈汇聚了全球优秀华人程序员。我们通过履历、作品、专业社区影响力、技能帮助程序员立体地展现成就,不被简历束缚,让收入、机遇和伙伴主动来找您。
远程工作
程序员客栈是远程工作开创者,企业的远程技术中心:雇佣BAT级别开发者; 24个小时内启动项目;成功率翻倍,开发成本减半。
短期雇佣
通过程序员客栈短期雇佣程序员远程、驻场工作,补齐紧缺人力,顺利高质且低成本完成工作目标。
❻ 美欧的程序员不常加班吗为什么
现在国内程序员几乎成为了加班的代名词,但欧美的程序员疯狂加班的相对比较少,对于这一点倒是有这种感受,之前曾经外企工作过一段时间对这种有类似的感受,讲一个真实发生的事情,曾经和美国总部的程序员一起合作做一个项目,由于项目的周期赶得很紧,周末去加班,结果需要配合的美国程序员的加班申请没有被批准下来,只好在自家院子里修栅栏种菜,这种情况在国内几乎是不可能发生的,项目赶得紧加班加点是常有的事情,而且默认是不存在什么加班费之类 ,项目紧急状态下也会默认自动加班。
由于当时入行不到两年,非常不理解,还去找项目负责人说到这个事情,最后这个事情也就不了了之,其实这也反映了中国和美国上的差异,在国内做程序员拿的工资比普通的工种还是要多很多,但在美国这种差异不是很大,主要是各行业整体来讲已经比较成熟,即使环卫工作也算正式的工作,各种保险也是正常给上着,整体来讲不同职业的收入差异不像国内的那么大,在欧美正式的工作加班就需要支付加班费,一般情况下不提倡通过加班来完成任务。
就本质而言中国的软件行业相比欧美还是存在较大的差距,在迎头赶上的阶段加班加点也算是正常事件,再加上国内互联网进行的如火如荼,这也是难得在互联网领域赶超欧美的一个好机会,又把程序员加班的气氛带动了一番。
为什么欧美程序员加班比国内程序员少一些?
1.相比来讲欧美的产业更加成熟一些,加班基本上都会配套加班费,在这中国几乎是不可想象的事情,技术工种和别的工种的工资差异也不是那么大,所以在欧美找一个正式的工作难度要远高于国内,所以从公司角度效率主要在上班时间提升,加班基本意味着加班费,需要领导审批,不提倡加班。
2.国外程序员的比例不像国内这么失衡,需求量不是那么迫切,供需关系没有那么紧张,而且大部分公司不提倡加班,加班支出费用比正常上班的工资要高,即使加班风气很浓的日本,都开始对加班说不了。国内软件行业相比发达国家在积累方面差距还很大,正是需要迎头赶上的时期,加班加点也属于正常现象。
行业成熟了,供需关系平衡了,有底子了加班现象自然就会减少。
去年上半年,一位同事去了德国,仍然是从事程序员的工作,然后给我们讲述了他的亲身经历,让我们羡慕不已。
他们一家三口过去的,孩子已经上小学三四年级,去了德国一个不是很有名的城市,据说华人非常的少。工资在5千欧的样子(估计也是刚过去的原因),不过还要交各类保险,税后多少我也记得不是很清楚。
让我印象最为深刻的是,这位同事去了没多久,媳妇儿就怀了二胎了,于是震撼的消息来了,他现在可以一周只去单位两天,而且工资不变,其余时间可以照顾媳妇儿,直到孩子出生或到一定的年龄(有点儿像我们的陪产假,不过人家的陪产假非常长)。大儿子上学自己只需要缴纳一点点钱,据他说等老二出生之后,不仅没什么开销,而且每月还有几百欧的补助。
那么欧美程序员真的不用加班么?且听我下面的分析:
最近新东方年会的一个节目火了,歌词用到程序员身上,也是恰到好处。
“干活的累死累活,有成果那又如何,到头来干不过写PPT的”
“只会为老板的朋友圈高歌,领导随口一说,立刻讨好跟着,项目马上启动不计后果”
说的太好了,我都不禁起立鼓掌了。
我将持续分享Java开发、架构设计、程序员职业发展等方面的见解,希望能得到你的关注。
相比于国内动则 996,227 的超强度工作,欧美的程序员是没有这么夸张的。但不代表欧美程序员就不加班。
本人工作隶属一世界五百强外企,刚刚带队完成了一个大型的IT系统上线项目。涉及到近百人的项目团队,其中大部分程序员、业务分析师都是老外,有几个外部关联的系统是从美国购买的,所有的程序员都是美国人。
我在中国,所以和美国东部有十二小时的时差,这时候无论中国或者美国的项目团队,都得加班,否则时间上凑不到一块儿。
要么美国人早上5-6点就到公司上班,要么中国人晚上6-7点继续加班,或者反过来。当然,美国人是不怕起得早的,很多人为了早下班,宁可早上5-6点就到公司上班了,这样可以下午4点多就下班回家接孩子或者happy,这点跟中国人相反,中国人很少愿意早上5-6点就来公司上班。
就算是这样,我们在项目非常紧张的时候,也给美国的供应商下了死命令,就是中国人在做系统切换的期间(一周),美国人方面的程序员必须按照 中国的工作时间 同步,也就是他们晚上9点到早上9点之间必须随时待命,这对他们来说是不折不扣的加班。
美国人也没说啥啊,钱给到位了,还是乖乖的加班了啊。
欧美的程序员,能吃苦的还是很能吃苦的,但是混子也多,一个电话就能分辨出来,对于那些一上来就推三阻四各种绕的程序员,我通常做法就是 一次容忍、二次警告、三次请你走人 。
毕竟上百人的大项目,我没这个时间和义务来教育你如何做好你的工作。
当然,欧美毕竟还是要轻松一些,很多人给你加班一周之后把任务完成了,是说什么都要去休假的,只是这时候如果你还非要在他休假的时候去骚扰他,他也会毫不客气的拒绝甚至立刻投诉的。
只能说,欧美人相对守规则一些,把私人时间看得更重要一些,但不代表他们完全拒绝加班,或者说不愿意加班。
希望我们国内的公司,也能多一些这样的契约精神,不要天天搞什么“狼性文化”,把员工都榨干了,最后也不过是涸泽而渔罢了!
国内It最大的问题是许多公司的it从业者素质不高:领导自己对问题都没彻底清楚。提需求的人没有成本,无止境地提不靠谱的需求。码农自己开发时也图快,代码极粗糙,连自己都觉得写的是shi,同时也提高了系统的风险(不少跨专业报名培训学校,培训几个月直接上岗,别指望他们懂更多)总之就是,leader很忙,产品很忙,码农很忙,测试很忙,就是这样的恶性循环。
我在美国做程序员第二个年头了。在刚毕业那会,我会说,放屁!谁说美国程序员不加班,有deadline或出bug的时候都一样都会加班。
但是后来…好吧,我发现我错了。在我了解了996之后,好吧,我觉得美国那不叫加班
推荐你看浪潮之巅这本书,就讲了上世界美国it行业的发展。
怎么说呢,欧美的程序员肯定还是会加班的,只不过不像中国企业这么严重,这么普遍。
首先明确一点,欧美IT企业加班少,并不是不需要加班。欧美IT企业加班的需求也是非常高的。
但是为啥程序员还是加班少呢。
第一个 原因就是工会
其实中国和美国法律都一样,都是规定每天8小时工作制。加班需要付加班工资。
但是美国之所以企业不敢越雷池,主要是有一个逆天的工会存在。美国工会强大到谁都敢怼,美国就发生过警察工会发动警察罢工的事情。警察的雇主是政府,工会政府都敢对着干,还怕你个小小的IT企业?
所以,如果一旦加班弄到员工都不满意,工会真心能让你吃不了兜着走。让你再也招不到人都不是问题。
第二 就是美国程序员工资高
如果企业实在忙,要求员工加班,那就必须付高额的加班费。这个实在是肉疼啊,一般来说企业是承受不了的。
那企业不给行不行?恐怕法院会让你长记性,美国加州某个企业曾经就因为加班,被法院判赔偿了1.7亿美元。这么一来,谁敢不给加班费。
有的人问了,你不是前面说美国IT企业加班需求也是很大的,那怎么办。
是的,任何一个IT企业都有大量的加班需求,但欧美企业又不能强迫员工加班,于是他们想出了几个办法。
一 勾引员工自愿加班
别笑,这是真的,你现在如果去美国硅谷,一定能看到很多程序员在加班,但是基本上都是自愿。
我不是在胡说八道,欧美IT企业勾引程序员加班有很多诏
弹性上班时间
早上不要求你按时到,你自己自由安排上班时间,不知不觉就加了几个小时班。这是很有效的勾引程序员加班的手段。
用办公环境来勾引
我们来看一下:
微软的办公环境
谷歌的办公环境
休息仓
你们以为企业给程序员弄这么好的办公环境是为啥?谷歌甚至还给提供免费理发!这个不是企业钱多烧的,只有一个目的,勾引你加班。
我觉得在这种环境下,员工不自觉的就自愿加了好多班。
第二 外包
如果勾引来勾引去,程序员还是不来加班呢?或者小企业,根本没有谷歌微软这么好的环境,怎么办呢?
这种情况下,美国IT企业会把做不完的活外包给程序员工资相对低的地区,那就是中国和印度了。
中国和印度,法律对加班管的不严,程序员工资低,于是美国很多公司都喜欢把活交给中国和印度来干。
我们中国企业就比较惨了,没办法再外包了,非洲,中东这些地区根本就没有多少IT人才。只能自己干了,反正象征性的给点加班费就行了,成本也不高。
美欧的程序员不常加班吗?为什么?个人认为这是环境决定的,现今国内各行各业都是这样加班加点干事情,看看有多少民营私营企业有周六的,每天能够准时下班的就明白了。良心点儿的企业还给你算加班,有些企业就明确说一周只休息一天,想干就干不想干双方不再见。
而国内程序员这个职业加班更甚。绝大部分的软件、互联网公司基本都是民营私营公司,而且又得赶工期、节约成本,那就只有逼着程序员加班了。虽然看起来名为高工资,可实际上算下来单位时间的工资并不一定比早九晚五的企业高多少。每天10几个小时,有时周六周日都在加班,这种还是常有的事不稀奇。甚至有些公司明确说明,我们给的工资较高,没有加班费甚至也没有换休,干就干不干拉倒。
而这一切也源于我们的工作生活环境造成,还有相关的法律规定是否执行到位,是否有人来监督,是否有地方去申诉。另外整体收入较低的情况下,大部分程序员为了那份收入与那个职位,也就默认被压榨而不出声。你出声可以,那就另谋高就吧。特别是现在程序员供过于求,更是很多企业毫无顾忌这样搞。企业为了追逐利益最大化,加班是一种很常用的手段,而且还不用付出什么成本。
在欧美,市场及管理相对较成熟,程序员与其它行业一样就是个普通的职位。在整体大环境下不提倡加班,有人监督有投诉地方,自己不愿意加班那就不能被逼加班,否则可能被投诉被诉讼,企业会吃亏。所以在做项目计划时,一般会按照正常工作时间进行详细预算计划工作量,如果真正完不成还有可能进行协商,重新预算工作量。不像我们很多企业,有时连周六周日都有可能给你计划上工作量,完不成?要么说你能力不行走人,要么自己往死里加班都要完成工作量,美其名曰为了达到客户期望一定要保证交货期。
企业说,不愿加班?那就到欧美去吧。
更多分享及互动,欢迎点击右上角关注【东风高扬】。
这个问题是多方面的,如果了解国内一线外企的工作状态,可能就很好理解了。
一方面,外企的工作是以效率为导向的,形式化的东西非常少,硬性的规定非常少,从教育上,欧美国家就主张创造性和自主性,更加主张思维独立和创造性思维。所以在一些硅谷的大企业中,一个普通员工也可以提出一个想法,而一旦被采纳,这个项目就可以推进执行。你会发现他们的沟通效率很高,工作效率很高,信息流通性很好,而且员工所在的环境十分自由,可以以自己最舒适的状态工作。这其实就是 以做事为目的,以效率为导向。
而中国的本土企业习惯了所谓的“管理”,从教育上培养的是应试教育,从小教导要听大人话,要听老师话,要听领导话。却很少鼓励学生提出自己的问题和质疑,限制了孩子的创造性思维。等进入了企业以后,官僚气息严重,形式主义严重,基层员工完全没有话语权,埋头苦干受累背锅,领导一句话没活儿也得加班。
然后就是找一群留学海外,有想法的人,带着一群本土毕业没想法的人做事,其实大家都很难受。
第二方面,即便有些时候工作真的做不完,你想加班,在外企也不一定加的成。加班需要申请,因为超过上班时间公司需要严格按照加班标准支付薪酬,而一般在国外,加班要支付的加班费非常高。
所以除非十万火急,国外大部分企业是不可能让员工加班的,各种法律条文保护劳动者不是开玩笑的,不遵守分分钟告到你哭。
第三方面,有很多西方人,即便你给他高额的加班费他也不想加班。很多人说中国是最勤劳的民族不是开玩笑的,我们接受着勤劳致富的教育,也确实做着勤劳致富的事情。国内互联网行业所谓的高工资都是以疯狂加班为代价的,就这还有多少人削尖了脑袋想进入这个行业,估计在西方人眼中很难理解。
外国人大部分没那么勤劳,喜欢享受时光,这跟发达国家本身富裕是分不开的,他们的生存压力没那么大,不太用担心没饭吃,所以穷人很多都不愿意为了钱而卖命,更别提有知识有学历的高级人才了。
动辄好几周去海岛度个假的国家人民,怎么能理解我过有年假都没法放的痛苦。
美欧不光程序员不经常加班,从管理到基层员工也都不经常加班,因为第一,人工昂贵;第二,劳动法严格,加班要付昂贵的加班工资,不付被举报的话企业要被巨额罚款,所以企业方方面面都高效做事。一个产品,从设计方案开始就讲究个环节的完善,实际开始制作的时候各部门要高度同步与协调。各项工作的计划都是提前一年来安排时间表(这也是生产环节外发海外逼出来的传统),很少有像我们这里8月开的大会7月才开始各类订制与协调,各项制度不完善,高管大会摔话筒的事发生。领导也不会今天临时脑袋一拍在产品里加个功能,明天再取消另一个功能,然后让员工日赶夜赶。西方的工作看起来节奏很慢,但是实际效率很高;我们的生活工作看起来节奏快,从领导到员工都很勤奋,但是实际效率很低,一个环节可能重复做五六次。其实西方各大公司的操作才是“计划经济”,我们的是“野蛮的横冲直撞经济”。这跟整个民族的文化气氛与劳动力训练方式有关,也就是教育有关。东西方教育的差距,不仅仅是 科技 成果的差距,还是教育的另一个成果,劳动力素质的差距。
❼ 程序员为什么要学深度学习
费良宏:程序员为什么要学深度学习?
深度学习本身是一个非常庞大的知识体系。本文更多想从程序员的视角出发,让大家观察一下深度学习对程序员意味着什么,以及我们如何利用这样一个高速发展的学科,来帮助程序员提升软件开发的能力。
本文根据费良宏在2016QCon全球软件开发大会(上海)上的演讲整理而成。
前言
1973年,美国上映了一部热门的科幻电影《WestWorld》,三年之后又有一个续集叫做《FutureWorld》。这部电影在80年代初被引进到中国叫《未来世界》。那部电影对我来讲简直可以说得上是震撼。影片中出现了很多机器人,表情丰富的面部下面都是集成电路板。这让那时候的我觉得未来世界都是那么遥远、那么神秘。
时间到了2016年,很多朋友可能都在追看HBO斥巨资拍摄的同一题材的系列剧《WestWorld》。如果前两部电影还是局限在机器人、人工智能这样的话题,2016年的新剧则在剧情和人工智能的思考方面有了很大的突破。不再渲染机器人是否会威胁到人类,而是在探讨“Dreamsaremainlymemories”这一类更具哲理的问题。
“记忆究竟如何影响了智能”这个话题非常值得我们去思考,也给我们一个很好的启示——今天,人工智能领域究竟有了怎样的发展和进步。
今天我们探讨的话题不仅仅是简单的人工智能。如果大家对深度学习感兴趣,我相信各位一定会在搜索引擎上搜索过类似相关的关键字。我在Google上以deeplearning作为关键字得到了2,630万个搜索的结果。这个数字比一周之前足足多出了300多万的结果。这个数字足以看得出来深度学习相关的内容发展的速度,人们对深度学习的关注也越来越高。
从另外的一个角度,我想让大家看看深度学习在市场上究竟有多么热门。从2011年到现在一共有140多家专注人工智能、深度学习相关的创业公司被收购。仅仅在2016年这种并购就发生了40多起。
其中最疯狂的是就是Google,已经收购了 11 家人工智能创业公司,其中最有名的就是击败了李世石九段的 DeepMind。排名之后的就要数 Apple、Intel以及Twitter。以Intel 公司为例,仅在今年就已经收购了 3 家创业公司,Itseez、Nervana 和 Movidius。这一系列大手笔的并购为了布局人工智能以及深度学习的领域。
当我们去搜索深度学习话题的时候,经常会看到这样的一些晦涩难懂的术语:Gradient descent(梯度下降算法)、Backpropagation(反向传播算法)、Convolutional Neural Network(卷积神经网络)、受限玻耳兹曼机(Restricted Boltzmann Machine)等。
如打开任何一篇技术文章,你看到的通篇都是各种数学公式。大家看到如下左边的图,其实并不是一篇高水准的学术论文,而仅仅是维基网络关于玻耳兹曼机的介绍。维基网络是科普层面的内容,内容复杂程度就超过了大多数数学知识的能力。
在这样的背景之下,我今天的的话题可以归纳成三点:第一,我们为什么要学习深度学习;第二,深度学习最核心的关键概念就是神经网络,那么究竟什么是神经网络;第三,作为程序员,当我们想要成为深度学习开发者的时候,我们需要具备怎样的工具箱,以及从哪里着手进行开发。
为什么要学习深度学习
首先,我们谈谈为什么要学习深度学习。在这个市场当中,最不缺乏的就是各种概念以及各种时髦新技术的词汇。深度学习有什么不一样的地方?我非常喜欢AndrewNg(吴恩达)曾经用过的一个比喻。
他把深度学习比喻成一个火箭。这个火箭有一个最重要的部分,就是它的引擎,目前来看在这个领域里面,引擎的核心就是神经网络。大家都知道,火箭除了引擎之外还需要有燃料,那么大数据其实就构成了整个火箭另外的重要组成部分——燃料。以往我们谈到大数据的时候,更多是强调存储和管理数据的能力,但是这些方法和工具更多是对于以往历史数据的统计、汇总。
而对于今后未知的东西,这些传统的方法并不能够帮助我们可以从大数据中得出预测的结论。如果考虑到神经网络和大数据结合,我们才可能看清楚大数据真正的价值和意义。AndrewNg就曾经说过“我们相信(神经网络代表的深度学习)是让我们获得最接近于人工智能的捷径”。这就是我们要学习深度学习的一个最重要的原因。
其次,随着我们进行数据处理以及运算能力的不断提升,深度学习所代表的人工智能技术和传统意义上人工智能技术比较起来,在性能上有了突飞猛进的发展。这主要得益于在过去几十间计算机和相关产业不断发展带来的成果。在人工智能的领域,性能是我们选择深度学习另一个重要的原因。
这是一段Nvidia在今年公布的关于深度学习在无人驾驶领域应用的视频。我们可以看到,将深度学习应用在自动驾驶方面,仅仅经历了3千英里的训练,就可以达到什么样的程度。在今年年初进行的实验上,这个系统还不具备真正智能能力,经常会出现各种各样的让人提心吊胆的状况,甚至在某些情况下还需要人工干预。
但经过了3千英里的训练之后,我们看到在山路、公路、泥地等各种复杂的路况下面,无人驾驶已经有了一个非常惊人的表现。请大家注意,这个深度学习的模型只经过了短短几个月、3千英里的训练。
如果我们不断完善这种模型的话,这种处理能力将会变得何等的强大。这个场景里面最重要的技术无疑就是深度学习。我们可以得出一个结论:深度学习可以为我们提供强大的能力,如果程序员拥有了这个技术的话,无异于会让每个程序员如虎添翼。
神经网络快速入门
如果我们对于学习深度学习没有任何疑虑的话,接下来就一定会关心我需要掌握什么样的知识才能让我进入到这个领域。这里面最重要的关键技术就是“神经网络”。说起“神经网络”,容易混淆是这样两个完全不同的概念。
一个是生物学神经网络,第二个才是我们今天要谈起的人工智能神经网络。可能在座的各位有朋友在从事人工智能方面的工作。当你向他请教神经网络的时候,他会抛出许多陌生的概念和术语让你听起来云里雾里,而你只能望而却步了。
对于人工智能神经网络这个概念,大多数的程序员都会觉得距离自己有很大的距离。因为很难有人愿意花时间跟你分享神经网络的本质究竟是什么。而你从书本上读的到的理论和概念,也很让你找到一个清晰、简单的结论。
今天就我们来看一看,从程序员角度出发神经网络究竟是什么。我第一次知道神经网络这个概念是通过一部电影——1991年上映的《终结者2》。男主角施瓦辛格有一句台词:
“MyCPUisaneural-netprocessor;alearningcomputer.”(我的处理器是一个神经处理单元,它是一台可以学习的计算机)。从历史来看人类对自身智力的探索,远远早于对于神经网络的研究。
1852年,意大利学者因为一个偶然的失误,将人类的头颅掉到硝酸盐溶液中,从而获得第一次通过肉眼关注神经网络的机会。这个意外加速了对人类智力奥秘的探索,开启了人工智能、神经元这样概念的发展。
生物神经网络这个概念的发展,和今天我们谈的神经网络有什么关系吗?我们今天谈到的神经网络,除了在部分名词上借鉴了生物学神经网络之外,跟生物学神经网络已经没有任何关系,它已经完全是数学和计算机领域的概念,这也是人工智能发展成熟的标志。这点大家要区分开,不要把生物神经网络跟我们今天谈到的人工智能有任何的混淆。
90年代中期,由Vapnik等人提出了支持向量机算法(Support Vector Machines,支持向量机)。很快这个算法就在很多方面体现出了对比神经网络的巨大优势,例如:无需调参、高效率、全局最优解等。基于这些理由,SVM算法迅速打败了神经网络算法成为那个时期的主流。而神经网络的研究则再次陷入了冰河期。
在被人摒弃的十年里面,有几个学者仍然在坚持研究。其中很重要的一个人就是加拿大多伦多大学的Geoffery Hinton教授。2006年,他的在着名的《Science》杂志上发表了论文,首次提出了“深度信念网络”的概念。
与传统的训练方式不同,“深度信念网络”有一个“预训练”(pre-training)的过程,这可以方便的让神经网络中的权值找到一个接近最优解的值,之后再使用“微调”(fine-tuning)技术来对整个网络进行优化训练。这两个技术的运用大幅度减少了训练多层神经网络的时间。在他的论文里面,他给多层神经网络相关的学习方法赋予了一个新名词— “深度学习”。
很快,深度学习在语音识别领域崭露头角。接着在2012年,深度学习技术又在图像识别领域大展拳脚。Hinton与他的学生在ImageNet竞赛中,用多层的卷积神经网络成功地对包含一千个类别的一百万张图片进行了训练,取得了分类错误率15%的好成绩,这个成绩比第二名高了将近11个百分点。
这个结果充分证明了多层神经网络识别效果的优越性。从那时起,深度学习就开启了新的一段黄金时期。我们看到今天深度学习和神经网络的火热发展,就是从那个时候开始引爆的。
利用神经网络构建分类器,这个神经网络的结构是怎样的?
其实这个结构非常简单,我们看到这个图就是简单神经网络的示意图。神经网络本质上就是一种“有向图”。图上的每个节点借用了生物学的术语就有了一个新的名词 – “神经元”。连接神经元的具有指向性的连线(有向弧)则被看作是“神经”。这这个图上神经元并不是最重要的,最重要的是连接神经元的神经。每个神经部分有指向性,每一个神经元会指向下一层的节点。
节点是分层的,每个节点指向上一层节点。同层节点没有连接,并且不能越过上一层节点。每个弧上有一个值,我们通常称之为”权重“。通过权重就可以有一个公式计算出它们所指的节点的值。这个权重值是多少?我们是通过训练得出结果。它们的初始赋值往往通过随机数开始,然后训练得到的最逼近真实值的结果作为模型,并可以被反复使用。这个结果就是我们说的训练过的分类器。
节点分成输入节点和输出节点,中间称为隐层。简单来说,我们有数据输入项,中间不同的多个层次的神经网络层次,就是我们说的隐层。之所以在这样称呼,因为对我们来讲这些层次是不可见的。输出结果也被称作输出节点,输出节点是有限的数量,输入节点也是有限数量,隐层是我们可以设计的模型部分,这就是最简单的神经网络概念。
如果简单做一个简单的类比,我想用四层神经网络做一个解释。左边是输入节点,我们看到有若干输入项,这可能代表不同苹果的RGB值、味道或者其它输入进来的数据项。中间隐层就是我们设计出来的神经网络,这个网络现在有不同的层次,层次之间权重是我们不断训练获得一个结果。
最后输出的结果,保存在输出节点里面,每一次像一个流向一样,神经是有一个指向的,通过不同层进行不同的计算。在隐层当中,每一个节点输入的结果计算之后作为下一层的输入项,最终结果会保存在输出节点上,输出值最接近我们的分类,得到某一个值,就被分成某一类。这就是使用神经网络的简单概述。
除了从左到右的形式表达的结构图,还有一种常见的表达形式是从下到上来表示一个神经网络。这时候,输入层在图的最下方,输出层则在图的最上方。从左到右的表达形式以AndrewNg和LeCun的文献使用较多。而在Caffe框架里则使用的则是从下到上的表达。
简单来说,神经网络并不神秘,它就是有像图,利用图的处理能力帮助我们对特征的提取和学习的过程。2006年Hinton的那篇着名的论文中,将深度学习总结成三个最重要的要素:计算、数据、模型。有了这三点,就可以实现一个深度学习的系统。
程序员需要的工具箱
对于程序员来说,掌握理论知识是为了更好的编程实践。那就让我们看看,对于程序员来说,着手深度学习的实践需要准备什么样的工具。
硬件
从硬件来讲,我们可能需要的计算能力,首先想到的就是CPU。除了通常的CPU架构以外,还出现了附加有乘法器的CPU,用以提升计算能力。此外在不同领域会有DSP的应用场景,比如手写体识别、语音识别、等使用的专用的信号处理器。还有一类就是GPU,这是一个目前深度学习应用比较热门的领域。最后一类就是FPGA(可编程逻辑门阵列)。
这四种方法各有其优缺点,每种产品会有很大的差异。相比较而言CPU虽然运算能力弱一些,但是擅长管理和调度,比如读取数据,管理文件,人机交互等,工具也丰富。DSP相比而言管理能力较弱,但是强化了特定的运算能力。
这两者都是靠高主频来解决运算量的问题,适合有大量递归操作以及不便拆分的算法。GPU的管理能力更弱一些,但是运算能力更强。但由于计算单元数量多,更适合整块数据进行流处理的算法。
FPGA在管理与运算处理方面都很强,但是开发周期长,复杂算法开发难度较大。就实时性来说,FPGA是最高的。单从目前的发展来看,对于普通程序员来说,现实中普遍采用的计算资源就还是是CPU以及GPU的模式,其中GPU是最热门的领域。
这是我前天为这次分享而准备的一个AWS 上p2的实例。仅仅通过几条命令就完成了实例的更新、驱动的安装和环境的设置,总共的资源创建、设置时间大概在10分钟以内。而之前,我安装调试前面提到的那台计算机,足足花了我两天时间。
另外,从成本上还可以做一个对比。p2.8xLarge 实例每小时的费用是7.2美元。而我自己那台计算机总共的花费了是¥16,904元。这个成本足够让我使用350多个小时的p2.8xLarge。在一年里使用AWS深度学习站就可以抵消掉我所有的付出。随着技术的不断的升级换代,我可以不断的升级我的实例,从而可以用有限的成本获得更大、更多的处理资源。这其实也是云计算的价值所在。
云计算和深度学习究竟有什么关系?今年的8月8号,在IDG网站上发表了一篇文章谈到了这个话题。文章中做了这样一个预言:如果深度学习的并行能力不断提高,云计算所提供的处理能力也不断发展,两者结合可能会产生新一代的深度学习,将带来更大影响和冲击。这是需要大家考虑和重视的一个方向!
软件
深度学习除了硬件的基础环境之外。程序员会更关心与开发相关的软件资源。这里我罗列了一些曾经使用过的软件框架和工具。
Scikit-learn是最为流行的一个python机器学习库。它具有如下吸引人的特点:简单、高效且异常丰富的数据挖掘/数据分析算法实现; 基于NumPy、SciPy以及matplotlib,从数据探索性分析,数据可视化到算法实现,整个过程一体化实现;开源,有非常丰富的学习文档。
Caffe专注在卷及神经网络以及图像处理。不过Caffe已经很久没有更新过了。这个框架的一个主要的开发者贾扬清也在今年跳槽去了Google。也许曾经的霸主地位要让位给他人了。
Theano 是一个非常灵活的Python 机器学习的库。在研究领域非常流行,使用上非常方便易于定义复杂的模型。Tensorflow 的API 非常类似于Theano。我在今年北京的QCon 大会上也分享过关于Theano 的话题。
Jupyter notebook 是一个很强大的基于ipython的python代码编辑器,部署在网页上,可以非常方便的进行交互式的处理,很适合进行算法研究合数据处理。
Torch 是一个非常出色的机器学习的库。它是由一个比较小众的lua语言实现的。但是因为LuaJIT 的使用,程序的效率非常出色。Facebook在人工智能领域主打Torch,甚至现在推出了自己的升级版框架Torchnet。
深度学习的框架非常之多,是不是有一种乱花渐欲迷人眼的感觉?我今天向各位程序员重点介绍的是将是TensorFlow。这是2015年谷歌推出的开源的面向机器学习的开发框架,这也是Google第二代的深度学习的框架。很多公司都使用了TensorFlow开发了很多有意思的应用,效果很好。
用TensorFlow可以做什么?答案是它可以应用于回归模型、神经网络以深度学习这几个领域。在深度学习方面它集成了分布式表示、卷积神经网络(CNN)、递归神经网络(RNN) 以及长短期记忆人工神经网络(Long-Short Term Memory, LSTM)。
关于Tensorflow 首先要理解的概念就是Tensor。在辞典中对于这个词的定义是张量,是一个可用来表示在一些向量、标量和其他张量之间的线性关系的多线性函数。实际上这个表述很难理解,用我自己的语言解释Tensor 就是“N维数组”而已。
使用 TensorFlow, 作为程序员必须明白 TensorFlow这样几个基础概念:它使用图 (Graph) 来表示计算任务;在被称之为 会话 (Session) 的上下文 (context) 中执行图;使用 Tensor 表示数据;通过 变量 (Variable) 维护状态;使用 feed 和 fetch 可以为任意的操作(arbitrary operation) 赋值或者从其中获取数据。
一句话总结就是,TensorFlow 就是有状态图的数据流图计算环境,每个节点就是在做数据操作,然后提供依赖性和指向性,提供完整数据流。
TensorFlow安装非常简单,但官网提供下载的安装包所支持的CUDA 的版本是7.5。考虑到CUDA 8 的让人心动的新特以及不久就要正式发布的现状。或许你想会考虑立即体验CUDA 8,那么就只能通过编译Tensorflow源代码而获得。目前TensorFlow已经支持了Python2.7、3.3+。
此外,对于使用Python 语言的程序员还需要安装所需要的一些库,例如:numpy、protobuf等等。对于卷积处理而言,cuDNN是公认的性能最好的开发库,请一定要安装上。常规的Tensorsorflow的安装很简单,一条命令足矣:
$ pip3 install —upgrade https://storage.233.wiki/tensorflow/linux/cpu/tensorflow-0.11.0rc0-cp35-cp35m-linux_x86_64.whl
如果想评估一下或者简单学习一下,还可以通过Docker进行安装,安装的命令如下:
$ docker run -it -p 8888:8888 gcr.io/tensorflow/tensorflow
TensorFlow有很多优点。首先,目前为止,深度学习的开发框架里面TensorFlow的文档做的最好,对程序员学习而言是非常好的一点。第二,TensorFlow有丰富的参考实例,作为参考学习起来非常容易。
第三,开发者社区活跃,在任何一个深度学习的社区里,都有大量关于TensorFlow的讨论。第四,谷歌的支持力度非常大,从2015年到现在升级速度非常快,这是其他开源框架远远达不到的结果。
参考TensorFlow的白皮书,我们会看到未来TensorFlow还将会有巨大的发展潜力。让我特别感兴趣是这两个方向。第一,支持跨多台机器的 parallelisation。尽管在0.8版本中推出了并行化的能力,但是目前还不完善。随着未来不断发展,依托云计算的处理能力的提升这个特性将是非常让人振奋的。
第二,支持更多的开发语言,对于开发者来说这是一个绝大的利好,通过使用自己擅长的语言使用TensorFlow应用。这些开发语言将会扩展到Java、Lua以及R 等。
在这里我想给大家展示一个应用Tensorflow 的例子。这个例子的代码托管在这个网址上 https://github.com/anishathalye/neural-style。白俄罗斯的现代印象派艺术家Leonid Afremov善于用浓墨重彩来表现都市和风景题材,尤其是其雨景系列作品。他习惯用大色块的铺陈来营造光影效果,对反光物体和环境色的把握非常精准。
于是我就找到了一张上海东方明珠电视塔的一张摄影作品,我希望通过Tensorflow 去学习一下Leonid Afremov 的绘画风格,并将这张东方明珠的照片处理成那种光影色彩丰富的作品风格。利用Tensorflow 以及上面提到的那个项目的代码,在一个AWS 的p2类型的实例上进行了一个一千次的迭代,于是就得到了下图这样的处理结果。
这个处理的代码只有350行里,模型使用了一个成名于2014年ImageNet比赛中的明星 VGG。这个模型非常好,特点就是“go depper”。
TensorFlow 做出这样的作品,并不仅仅作为娱乐供大家一笑,还可以做更多有意思的事情。将刚才的处理能力推广到视频当中,就可以看到下图这样的效果,用梵高着名的作品”星月夜“的风格就加工成了这样新的视频风格。
可以想象一下,如果这种处理能力在更多领域得以应用,它会产生什么样的神奇结果?前景是美好的,让我们有无限遐想。事实上我们目前所从事的很多领域的应用开发都可以通过使用神经网络和深度学习来加以改变。对于深度学习而言,掌握它并不是难事。每一个程序员都可以很容易的掌握这种技术,利用所具备的资源,让我们很快成为深度学习的程序开发人员。
结束语
未来究竟是什么样,我们没有办法预言。有位作家Ray Kurzweil在2005年写了《奇点临近》一书。在这本书里面他明确告诉我们,那个时代很快到来。作为那个时代曙光前的人群,我们是不是有能力加速这个过程,利用我们学习的能力实现这个梦想呢?
中国人工智能的发展
人工智能的时代无疑已经到来,这个时代需要的当然就是掌握了人工智能并将其解决具体问题的工程师。坦率的说,市场上这一类的工程师还属于凤毛麟角。职场上的薪酬待遇可以看得出来这样的工程师的抢手的程度。人工智能这门学科发展到今天,就学术自身而言已经具备了大规模产业化的能力。
所以说,对于工程师而言当务之急就是尽快的掌握应用人工智能的应用技术。当下在互联网上关于人工智能的学习资料可以说已经是“汗牛充栋”,那些具备了快速学习能力的工程师一定会在人工智能的大潮当中脱颖而出。
中国发展人工智能产业的环境已经具备。无论从创业环境、人员的素质乃至市场的机遇而言完全具备了产生产业变革的一切条件。与美国相比较,在人工智能的许多领域中国团队的表现也可以说是不逞多让。就人工智能的技术层面而言,中国的工程师与全球最好的技术团队正处于同一个起跑线上。
时不我待,中国的工程师是有机会在这个领域大展身手的。不过值得注意的是,要切忌两点:一是好高骛远,盲目与国外攀比。毕竟积累有长短,术业有专攻,我们要立足于已有的积累,寻求逐步的突破。二是一拥而上,盲目追求市场的风口。人工智能的工程化需要大量的基础性的积累,并非一蹴而就简单复制就可以成功。
中国的科研技术人员在人工智能领域的成就有目共睹。在王咏刚的一篇文章里面,他统计了从2013年到2015年SCI收录的“深度学习”论文,中国在2014年和2015年超已经超过了美国居于领跑者的位置。
另外一让我感到惊讶的事情,Google的JeffDean在2016年发表过一篇名为《TensorFlow:Asystemforlarge-scalemachinelearning》的论文。文章的22个作者里面,明显是中国名字的作者占已经到了1/5。如果要列举中国人/华人在人工智能领域里的大牛,吴恩达、孙剑、杨强、黄广斌、马毅、张大鹏……很容易就可以说出一大串。
对于中国来说目前的当务之急是人工智能技术的产业化,唯有如此我们才可以讲科研/智力领域的优势转化为整体的、全面的优势。在这一点上,中国是全球最大的消费市场以及制造业强国,我们完全有机会借助市场的优势成为这个领域的领先者。
硅谷创新企业
硅谷虽然去过许多回,但一直无缘在那里长期工作。在人工智能领域的市场我们听到的更多是围绕Google、Apple、Intel、Amazon这样的一些大型科技公司的一举一动。但是在美国市场上还有一大批小型的创业企业在人工智能这个领域有惊艳的表现。仅以硅谷区域的公司为例:
Captricity,提供了手写数据的信息提取;
VIVLab,针对语音识别开发了虚拟助手服务;
TERADEEP,利用FPGA提供了高效的卷积神经网络的方案;
还有提供无人驾驶解决方案的NetraDyne。
这个名单还可以很长,还有许许多多正在利用人工智能技术试图去创造历史的团队正在打造他们的梦想。这些团队以及他们正在专注的领域是值得我们去学习和体会的。