2017程序员该学习些什么技术

Python013

2017程序员该学习些什么技术,第1张

事实上,如果列入Java,那么React、jQuery等等,或者其他多种软件包或框架也都需要被列入进来,然而这些显然会在未来几年中逐步更新换代的。考虑到篇幅所限就不多叙述别的知识了。)

1.Go语言

今年10月的TIOBE编程语言人气榜上,Go语言得到了简单但有力的描述:“谷歌的Go语言几乎无可匹敌,而这主要是受到Docker等Go语言编写的容器应用方案的大力推动。”

尽管Go语言最初的目的有实验性质,但Docker以及其它企业都把它作为自身基础设施的有力支柱,而理由则非常简单:它拥有迅如闪电的编译与执行速度,可以使用简单方法(Goroutines)支持并发机制,并且也为程序员们提供大量选项来构建并维护现有及新型技术。然而Go语言的好处需要到代码量达到一定量之后才能体会出来,比如当你遇见一个cpp文件一个小时都编译不完的时候,你就知道简化语法增加编译速度有多重要了。Go同样面向对象,但它不存在类型结构。

以下为Go语言中的“Hello World”编写方式:

package main import "fmt" func main() { fmt.Println("Hello, World") }

2.Rust

与火狐浏览器同宗同源的Rust是一类系统编程语言,它运行速度极快、不存在段错误并且可以保障安全。与Go不同,Rust并不具备垃圾回收机制(Go的垃圾回收机制速度很快),因此Rust编程适用于嵌入式系统。

与Go类似,Rust依赖于代码分支结构——但Rust更为复杂。两种语言都是免费,并且它们都拥有自己的支持工具生态系统。Rust博客主页中的“稳定性即可交付性”口号正是Rust的理念所在其在RedMonkt及其它编程语言榜单上皆拥有不俗表现,其未来发展自然值得关注。

下面来看一段出色的Rust代码示例:

let number = 13println!("Tell me about {}", number)match number { // Match a single value 1 =>println!("One!"), // Match several values 2 | 3 | 5 | 7 | 11 =>println!("This is a prime"), // Match an inclusive range 13...19 =>println!("A teen"), // Handle the rest of cases _ =>println!("Ain't special"), } let boolean = true// Match is an expression too let binary = match boolean { // The arms of a match must cover all the possible values false =>0, true =>1, }println!("{} ->{}", boolean, binary)}

3.Git

时至今日,每个人都需要使用版本控制系统(简称VCS)。VCS实际上就是一套容纳代码及数据的存储库。它能够追踪变更,并使用开源meld等diff工具进行变更查看。

各类VCS的工作原理大体相同。大家需要利用源代码文件建立一个项目,而后即可随时对其进行检查、编辑而后确认(提交)。

由Linux之父Linus Torvalds编写的Git是一套分布式VCS,因此其可供团队成员以远程方式使用各自的文件进行编辑,而后将变更的结果进行合并。如果存在冲突,也就是两位成员对同一文件提交了不同编辑结果,Git则会在合并时以高亮方式显示冲突部分。接着,大家必须手动编辑并修改这些内容。从人气角度讲,Git已然所向披靡。

4.HTML

在今天探讨的四种技术中,HTML显然最为简单。HTML是网页标记语言,是浏览器能够阅读的语言。只要你写的东西想要浏览器能正确显示出来,那就要懂HTML。其中的/代表着关闭标签,而且大多数HTML标签都利用这种开放标签加/关闭标签的形式起效。(对于以HTML起始的内容,标头可选且为文档中的不可见部分,而本体则容纳可见部分。)

大多数其它HTML标签用于实现布局与文本格式其同样易于使用。尽管HTML的技术标准已经相当陈旧,但其仍然被广泛使用——如果大家尚不了解,请一定找点时间进行学习。

5.Python

如果,只能选择掌握一种编程语言,那么我的答案是Python。早在互联网诞生之前,Basic是每一位开发者所必须了解的语言选项如今Python就是新时代下的Basic。这是一种通用型编程语言,虽然没人会利用其编写那些“重量级”应用——例如游戏或者操作系统(这类应用仍然使用C++)。

Python易于学习,且使用缩进而非大括号标记结构。以下代码来自Python维基词条:

parents, babies = (1, 1) while babies <100: print 'This generation has {0} babies'.format(babies) parents, babies = (babies, parents + babies)

Python语言带有解释特性,因此大家可以在Python shell中尝试各种命令丈表达式。其速度很快,但相比优化型编译语言稍慢一点。它拥有规模庞大的资源库,且可通过多种方式实现进一步提速。大家可以使用pypy等替代性方案或者利用Cython将其编译为C如果大家了解C语言,也能够编写自己的C、Go或者Rust扩展。

Python在科学家群体中亦大受欢迎。最近推出的英特尔Python(免费)使得Python成为一种面向机器学习的可用语言,其适用场景包括大数据、神经网络以及其它相关技术。英特尔打造的这套发行版包含超过100套软件包(NumPy、SciPy等),且专门进行了优化以使用英特尔MKL及英特尔TBB库——二者内置于其中且可免费使用。大部分高强度任务都可由这些经过优化的英特尔库负责执行。

6.Linux

即使大家身为专业Windows用户及程序员,Linux同样值得加以关注,它能帮助您更快地学习,它还能使用多种技术方案。举例来说,Python、Go以及Rust就更适合在Linux平台上使用。(要在Windows上进行Rust程序编译,大家需要使用微软VC++或者MinGW——这是一套GNU编译器与工具集合,专门用于Windows平台上的开发与运行任务)。

对于Windows用户,大家只需要下载免费VirtualBox并安装一套Linux发行版(我个人推荐Ubuntu 14.04 LTS或者16.04 LTS)即可开始Linux之旅。在此之后,大家即可学习Linux,安装各类编程语言,运行本地LAMP(Linux Apache MySQL PHP)Web服务器甚至尝试进行开发工作。

近期和朋友聊天时听到了这样一个观点:在今天这个多变的社会里,做职业规划,根本就是一件浪费时间的事情。

因为各行业的变化实在是太快了,今天你规划在这个行业里好好大干一番,可能明天整个行业就突然完蛋了。

你根本没法预料10年甚至两年以后你所处的行业会发生什么,在这种情况下进行个人的职业规划,没有任何意义。

我相信有很多人,跟前面这位朋友所持的观点是一致的,那么我们今天就来聊一聊,在这个瞬息万变的时代,对于年轻人来说,是否有必要进行职业规划?

诚然,这个社会确实是多变的,每时每刻都有新鲜的东西从不知道什么地方冒出来,每分每秒,也有太多曾经辉煌过的东西慢慢消失。

也许你前两年一脚踏进了共享经济的风口当中,本打算用5~10年的时间干出一番事业来,谁曾想一夜之间风没了,猪掉下来了,你的一番事业还见不到影子,拿到手的却是一封裁员通知。

行业是如此,而技能甚至也会过时,前两年大火的Go语言,现如今在招聘需求里面已经难以见到,今天所有的招聘都在抢AI,抢神经网络方面的人才,但再过几年会怎样谁都不知道。

大时代的变化如浪潮一般风起云涌,而个人在其中难免会觉得变化来得太快,自己跟不上节奏。

从这一点看来,似乎我们的确难以把控、预测行业的变化。而这个时候去制定什么5年10年的职业规划,看起来似乎真的没有了太大意义。

然而,如果你真的这样想,那恐怕你在思维上已经陷入了一种误区。

无论行业和社会上发生多大的变化与倾覆,个人的成长轨迹始终是连贯且统一的。

职业规划,不是让我们对行业的发展,甚至未来有可能出现的行业进行未卜先知式的预测,而是回归于个人成长的本身,让我们能够时刻提醒自己在人生的某个阶段应该做什么,以及应该做到什么。

很多人把职业生涯规划想的太过复杂,其实这种规划没有那么神奇,你甚至可以简单理解成一个人给自己在不同阶段制定的不同目标,然后再规划一个合理的达成路径罢了。

哪怕是一个没学历、没背景、没技能的年轻人,在当今社会他也能找到一份自己可以从事的工作,比如去送外卖。

送外卖虽然辛苦,但收入也并不算太低。

当然,送外卖不管怎么说,也不是一个可以一直做下去的工作。但是只要他有心,勤奋一些,节俭一些,做几年就能凑出一辆车的首付。

这时候,不用送外卖了,去开网约车吧!虽然依旧辛苦,可也不同风吹日晒,风里来雨里去了不是吗?

再往后,有了更多的钱,还可以换辆商务车跑专车,或者换辆SUV跑旅游专车,收入将会有明显的提升,工作强度也能适应年龄的增长。

事实上,就连《骆驼祥子》中的祥子虽然不懂“职业生涯规划”是什么意思,但他也有自己对人生未来发展的思虑与考量:租几年车,买辆自己的车,成家立业,多买几辆车,开个车行。

只可惜,祥子遭遇的是整个大时代的悲哀,而我们面临的,其实是蓬勃向上的社会机遇。

我们在这里思考一下,一个人,如果对自己的职业生涯缺乏规划会怎样?

对于绝大多数人来说,缺乏对职业生涯的规划,会使其迷失在行业变化的颠簸,与日复一日的简单劳作中。

现在在很多行业里都有一种现象叫做“35岁焦虑”。

所谓的35岁焦虑就是指疼一个人35岁时,他会渐渐变得患得患失,焦躁不安,感觉自己的人生压力倍增。

原因很简单,一方面年龄的增长,精力的衰退,让人感觉自己的竞争力越来越弱,而身后跟着一群群虎视眈眈的“后浪”们,随时准备把自己拍在沙滩上。

另一方面,上有父母,下有子女,手头没有存款,只有尚余20来年的房贷车贷。

今天早上听说公司高层又在讲“狼性”,讲“996”,看看自己三高的体检单,想要换份工作,却发现招聘网站上纷纷写着“年龄35岁以下”。

在这种情况下, 又怎么可能不焦虑呢?

可是换个角度再来想一想,35 40来岁,其实正是一个人事业的黄金时期,如果一个人在行业中有所建树,拥有一定的资源与能力,40岁对于多数的管理岗来说,刚刚是他实现个人价值的开始。

那为什么却有这么多人在面临着35岁焦虑呢?其本质就在于对于很多人来说,职业生涯缺少规划,导致他错过了应该积累的时期。

对于一个对自己的职业有明确规划的人来说,跟别人最大的不同就是,他会非常关注自己目前的职业状态是否“可持续”。

而对于缺乏职业规划的人来说,他们的职场生涯往往是“得过一天是一天。”

当一个人对自己的职业生涯缺乏规划的时候,他所能考虑到的往往只有眼前。

而要命的是,如果一个人越是只能看到眼前,那么他越难以获得持续的精进,生活就会变得越不稳定,就越需要疲于奔命,就越是只能先顾眼前。毫无疑问,这是个可悲的恶性循环。

看看我们身边有多少人正处于现在这样的状态呢,明明知道自己目前的工作没有前途,明明知道这个行业已经是日薄西山,却受困于当下的条件,难以做出足够的决心,只能先这么耗下去。

可耗下去的结果会是什么你我他都心知肚明,而在这一次又一次的拖延之中,他最大的损失,就是自己的光阴。

因此职业生涯其实非常重要,对于年轻人来说更是如此。

我们需要做的不是去预测自己在未来多少年实现财富自由,在什么时候做成公司的老总,而是明确的搞清楚,如何在正确的阶段做正确的事情。

通常来说,我们会把职业生涯分为四个部分:技能学习期、职业尝试期、职业稳定期、职业成熟期。

而每个时期,都有各自的重点与目标。

比如正处在学习期刚刚踏入职场的年轻人,最不应该追求的就是所谓的稳定,因为在这个事情,你需要做的是试错找到自己最适合的道路。

很多人批评现在年轻人不够稳重,一言不合就辞职,然而说实话,在我看来很多情况下“不喜欢,所以要换工作”其实是年轻人的正当诉求。

对于年轻人来说资历是最大的资本,这个时候负担小,精力旺盛,学习能力强,拿出几年的时间去试错,这点代价放到他整个职业生涯的旅程上来看根本就是微乎其微。

我曾经招聘过一个应届生,以美工的身份入职,一个月的试用期里,小伙子的工作可以说是可圈可点。

眼看就要转正了,他就突然跑来辞职,给出的理由是他觉得这份工作并不是他想做的,他不喜欢这个职业,他真正想做的是去做影视后期,尽管他没有相关的经验。

小伙子辞职了之后,我关注了一段时间他的动态,很快他找了一家做后期的工作室去实习。

学习了半年之后,又离开了那家工作,重新找了一份正式的后期工作。

到了现在他已经开了一家小工作室,专门从事高端婚礼年会的创意视频制作工作。

从很多角度来说,像他这种毫无经验就裸辞,然后又跑去贸然进入一个完全陌生的行业,很明显是一个不合理也不理智的选择。

但是,如果他是一个本身对自身看的很轻,又对自己的职业生涯有着明确规划的人,那么这一步的果断,其实正是他对未来奠定良好发展的基础。

学习期之后,当一个人的职业生涯进入了稳定期,这个时候他最重要的就是开始积累自己的能力与经验。

谨慎选择一份在未来几年相对稳定,且能够让自己获得持续成长的行业,在行业中不断的深耕下去,稳定期的积累多寡,往往也就决定了他成熟期的收获。

到了职业生涯的成熟期,前面所做的一切努力都开始得到回报,或许前面几年你的收入并没有很高,但到了此时你会发现,自己的收入增长开始变得后劲十足。

在自身的发展之下,好一些会成为行业当中的优秀之人,差一点也是经验丰富可以倚靠的老成持重之人。

人工智能是python语言的一大应用领域,python也是最适合人工智能的语言,需要学习python,以下是学习大纲:

阶段一:Python开发基础

Python全栈开发与人工智能之Python开发基础知识学习内容包括:Python基础语法、数据类型、字符编码、文件操作、函数、装饰器、迭代器、内置方法、常用模块等。

阶段二:Python高级编程和数据库开发

Python全栈开发与人工智能之Python高级编程和数据库开发知识学习内容包括:面向对象开发、Socket网络编程、线程、进程、队列、IO多路模型、Mysql数据库开发等。

阶段三:前端开发

Python全栈开发与人工智能之前端开发知识学习内容包括:Html、CSS、JavaScript开发、Jquery&bootstrap开发、前端框架VUE开发等。

阶段四:WEB框架开发

Python全栈开发与人工智能之WEB框架开发学习内容包括:Django框架基础、Django框架进阶、BBS+Blog实战项目开发、缓存和队列中间件、Flask框架学习、Tornado框架学习、Restful API等。

阶段五:爬虫开发

Python全栈开发与人工智能之爬虫开发学习内容包括:爬虫开发实战。

阶段六:全栈项目实战

Python全栈开发与人工智能之全栈项目实战学习内容包括:企业应用工具学习、CRM客户关系管理系统开发、路飞学城在线教育平台开发等。

阶段七:数据分析

Python全栈开发与人工智能之数据分析学习内容包括:金融量化分析。

阶段八:人工智能

Python全栈开发与人工智能之人工智能学习内容包括:机器学习、数据分析 、图像识别、自然语言翻译等。

阶段九:自动化运维&开发

Python全栈开发与人工智能之自动化运维&开发学习内容包括:CMDB资产管理系统开发、IT审计+主机管理系统开发、分布式主机监控系统开发等。

阶段十:高并发语言GO开发

Python全栈开发与人工智能之高并发语言GO开发学习内容包括:GO语言基础、数据类型与文件IO操作、函数和面向对象、并发编程等。