2017年程序员需要掌握哪些技术?你会几个?

PriVallery 7年前
   <p> 我是非常支持程序员们抱着终身学习的态度的。尽管新型技术成果不断出现,但对于从业者而言,打好基础永远更为重要。因此如果大家对以下六项基本技术方案还不太熟悉,请在2017年到来之前做好准备。</p>    <p>(注:不管市场如何曲折,如HTML这类内功性质的技能是不可能很快消失。很多朋友可能会奇怪我为什么没有把JavaScript列入进来。事实上,如果列入JavaScript,那么React、jQuery等等,或者其他多种软件包或框架也都需要被列入进来,然而这些显然会在未来几年中逐步更新换代的。考虑到篇幅所限就不多叙述别的知识了。)</p>    <p><strong>1.Go语言</strong></p>    <p>今年10月的TIOBE编程语言人气榜上,Go语言得到了简单但有力的描述:“谷歌的Go语言几乎无可匹敌,而这主要是受到Docker等Go语言编写的容器应用方案的大力推动。”</p>    <p style="text-align: center;"><img src="https://simg.open-open.com/show/022c7c8f45592f911a9344e14090e7cd.jpg"></p>    <p>尽管Go语言最初的目的有实验性质,但Docker以及其它企业都把它作为自身基础设施的有力支柱,而理由则非常简单:它拥有迅如闪电的编译与执行速度,可以使用简单方法(Goroutines)支持并发机制,并且也为程序员们提供大量选项来构建并维护现有及新型技术。然而Go语言的好处需要到代码量达到一定量之后才能体会出来,比如当你遇见一个cpp文件一个小时都编译不完的时候,你就知道简化语法增加编译速度有多重要了。Go同样面向对象,但它不存在类型结构。</p>    <p>以下为Go语言中的“Hello World”编写方式:</p>    <p>package main import "fmt" func main() { fmt.Println("Hello, World") }</p>    <p><strong>2.Rust</strong></p>    <p>与火狐浏览器同宗同源的Rust是一类系统编程语言,它运行速度极快、不存在段错误并且可以保障安全。与Go不同,Rust并不具备垃圾回收机制(Go的垃圾回收机制速度很快),因此Rust编程适用于嵌入式系统。</p>    <p style="text-align: center;"><img src="https://simg.open-open.com/show/c1edcb25c9fe5bb1f929ff8d06977c3e.jpg"></p>    <p>与Go类似,Rust依赖于代码分支结构——但Rust更为复杂。两种语言都是免费,并且它们都拥有自己的支持工具生态系统。Rust博客主页中的“稳定性即可交付性”口号正是Rust的理念所在; 其在RedMonkt及其它编程语言榜单上皆拥有不俗表现,其未来发展自然值得关注。</p>    <p>下面来看一段出色的Rust代码示例:</p>    <p>let number = 13; println!("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); }</p>    <p><strong>3.Git</strong></p>    <p>时至今日,每个人都需要使用版本控制系统(简称VCS)。VCS实际上就是一套容纳代码及数据的存储库。它能够追踪变更,并使用开源meld等diff工具进行变更查看。</p>    <p style="text-align: center;"><img src="https://simg.open-open.com/show/1cbdbfb0d6a64938e1742193a1da49eb.jpg"></p>    <p>各类VCS的工作原理大体相同。大家需要利用源代码文件建立一个项目,而后即可随时对其进行检查、编辑而后确认(提交)。</p>    <p>由Linux之父Linus Torvalds编写的Git是一套分布式VCS,因此其可供团队成员以远程方式使用各自的文件进行编辑,而后将变更的结果进行合并。如果存在冲突,也就是两位成员对同一文件提交了不同编辑结果,Git则会在合并时以高亮方式显示冲突部分。接着,大家必须手动编辑并修改这些内容。从人气角度讲,Git已然所向披靡。</p>    <p><strong>4.HTML</strong></p>    <p>在今天探讨的四种技术中,HTML显然最为简单。HTML是网页标记语言,是浏览器能够阅读的语言。只要你写的东西想要浏览器能正确显示出来,那就要懂HTML。其中的/代表着关闭标签,而且大多数HTML标签都利用这种开放标签加/关闭标签的形式起效。(对于以HTML起始的内容,标头可选且为文档中的不可见部分,而本体则容纳可见部分。)</p>    <p style="text-align: center;"><img src="https://simg.open-open.com/show/21236438aa75bc1a30c93076a487b737.jpg"></p>    <p>大多数其它HTML标签用于实现布局与文本格式; 其同样易于使用。尽管HTML的技术标准已经相当陈旧,但其仍然被广泛使用——如果大家尚不了解,请一定找点时间进行学习。</p>    <p><strong>5.Python</strong></p>    <p>如果,只能选择掌握一种编程语言,那么我的答案是Python。早在互联网诞生之前,Basic是每一位开发者所必须了解的语言选项; 如今Python就是新时代下的Basic。这是一种通用型编程语言,虽然没人会利用其编写那些“重量级”应用——例如游戏或者操作系统(这类应用仍然使用C++)。</p>    <p style="text-align: center;"><img src="https://simg.open-open.com/show/63b9d28348becce56c40fa56191c7df5.jpg"></p>    <p>Python易于学习,且使用缩进而非大括号标记结构。以下代码来自Python维基词条:</p>    <p>parents, babies = (1, 1) while babies < 100: print 'This generation has {0} babies'.format(babies) parents, babies = (babies, parents + babies)</p>    <p>Python语言带有解释特性,因此大家可以在Python shell中尝试各种命令丈表达式。其速度很快,但相比优化型编译语言稍慢一点。它拥有规模庞大的资源库,且可通过多种方式实现进一步提速。大家可以使用pypy等替代性方案或者利用Cython将其编译为C; 如果大家了解C语言,也能够编写自己的C、Go或者Rust扩展。</p>    <p>Python在科学家群体中亦大受欢迎。最近推出的英特尔Python(免费)使得Python成为一种面向机器学习的可用语言,其适用场景包括大数据、神经网络以及其它相关技术。英特尔打造的这套发行版包含超过100套软件包(NumPy、SciPy等),且专门进行了优化以使用英特尔MKL及英特尔TBB库——二者内置于其中且可免费使用。大部分高强度任务都可由这些经过优化的英特尔库负责执行。</p>    <p><strong>6.Linux</strong></p>    <p>即使大家身为专业Windows用户及程序员,Linux同样值得加以关注,它能帮助您更快地学习,它还能使用多种技术方案。举例来说,Python、Go以及Rust就更适合在Linux平台上使用。(要在Windows上进行Rust程序编译,大家需要使用微软VC++或者MinGW——这是一套GNU编译器与工具集合,专门用于Windows平台上的开发与运行任务)。</p>    <p style="text-align: center;"><img src="https://simg.open-open.com/show/bc2cb362c93c5c26cce8b7f65653fc79.jpg"></p>    <p>对于Windows用户,大家只需要下载免费VirtualBox并安装一套Linux发行版(我个人推荐Ubuntu 14.04 LTS或者16.04 LTS)即可开始Linux之旅。在此之后,大家即可学习Linux,安装各类编程语言,运行本地LAMP(Linux Apache MySQL PHP)Web服务器甚至尝试进行开发工作。</p>    <p> </p>    <p> </p>    <p>来自:http://cloud.51cto.com/art/201612/526066.htm</p>    <p> </p>