怎样看待512月13日是什么星座2号发作在各高电脑勒索比特币病毒

打开小木虫APP,查看更多回复
Copyright &copy
600万学术达人首选写给想成为前端工程师的同学们 - WEB前端 - 伯乐在线
& 写给想成为前端工程师的同学们
前端工程师是做什么的?
是互联网时代软件产品研发中不可缺少的一种专业研发角色。从狭义上讲,前端工程师使用 HTML、CSS、JavaScript 等专业技能和工具将产品UI设计稿实现成网站产品,涵盖用户PC端、移动端网页,处理视觉和交互问题。从广义上来讲,所有用户终端产品与视觉和交互有关的部分,都是前端工程师的专业领域。
2005年的时候大多数网页长这样:
现在的网页一般是这样的:
前端工程师的发展之路和前景是怎么样的?
前端是一个相对比较新的行业,互联网发展早期(1995年~2005年)是没有专业的前端工程师的。随着互联网的发展,大约从2005年开始,正式的前端工程师角色被行业认可,到了2010年,互联网开始全面进入移动时代,前端工程师的地位越来越重要,前端领域的技术发展也越来越快,各种新的思想、设计模式、工具和平台都快速发展,对前端工程师的技能要求也越来越高。
有一些数据可以说明前端行业的发展迅速。
在2010年之后最流行的新编程语言中有相当部分和前端有关,比如 Dart、Clojure、CoffeeScript 和 TypeScript。
作为前端最重要的编程语言 JavaScript,在最近几年里不论是代码量还是关注数都稳居 Github 平台热门编程语言榜。
行业对前端需求量持续增加,前端程序员薪水在行业里面处于较领先的位置。
近年来最流行的编程语言很多都是JavaScript替代语言
JavaScript在最热编程语言 TOP10
近几年互联网公司前端团队每年扩张一倍
JavaScript工程师平均薪水排名在程序语言工程师收入前10
前端工程师需要什么样的知识和技能?
有人说前端工程师的技术栈是这样的:
还有人说是这样的:
实际上前端工程师最核心的技能还是:
在一个典型的互联网公司的产品研发流程中,前端工程师和其他角色的关系大致上是这样的:
前端是最接近产品和设计的工程师,起到衔接产品和技术的作用,前端为用户可以看到的部分负责,所以也是最接近用户的工程师。
在多终端的时代,如果一个产品同时支持PC、移动端,前端工程师还需要和更多的角色打交道:
JavaScript 对于前端是最重要的技能,所以优秀的前端工程师要有扎实的JavaScript基本功。而JavaScript这门编程语言也是目前程序设计领域炙手可热的宠儿,如今的它不仅仅只是用来开发Web,还可以用在各个方面。
JavaScript 可以用在“树莓派”这类智能硬件芯片开发
前端工程师也是软件工程师,所以软件工程师的基础知识也是非常重要的,这些基础知识包括:
计算机体系
数据结构和算法
HTML和CSS也是前端工程师非常重要的基本功,很多同学,尤其是喜欢写代码的同学容易忽视 Markup Language,实际上 ML 也是 UI 相关的领域里面很重要的内容,不应该被忽视。
有同学问说:“前端工作需求很多,老是改来改去,实际的技术点并没有多少,产品决定业务逻辑,从事底层基础服务会不会更有挑战和职业未来?”
的确,越贴近业务和产品层面上的工作,需求差异性越大,可能改动越频繁。不仅仅是前端改来改去,PHP服务端做业务的同学也面临这样的问题,业务逻辑改来改去。越底层通用性越强,改动相对较少。
不过事情都是有两面性的,首先可以这么想想,是底层基础服务的市场大还是互联网业务和产品的市场大。其次,基础服务的通用性很容易达成,而产品层面上如何通用化,如何在业务驱动的产品研发中利用工程化和工具化提升开发效率,这其实是一个很难的问题。丰富的互联网产品已改变和正在改变着我们的生活,然而作为产品的创造者,工程师们怎样让自己过得更好,这个领域值得研究。
另外,不要觉得实际的技术点没有多少,举几个例子:实现曲线和曲面动画,计算地图的最短路径,让png静态图片类似于gif图一样做局部的运动,抽奖游戏,物理效果的HTML5游戏,3D图表,增强现实的WebGL视频流处理等等,这些都是在前端领域中遇到的实际问题。
就 JavaScript 来说,在实际项目中设计最合适的模型高效率解决现实问题本身就很有挑战。作为一种典型的新生代编程语言,JavaScript 特性丰富,使用灵活,性能优良。面向对象、函数式编程、各种设计模式、MVC 和 MVVM,这些本身就有足够的吸引力。
前端要解决界面和交互问题,实际上UI层面上的问题一直是软件工程方面的一个难题,因为UI不停地在变化。浏览器各个版本的兼容性、Web 标准、移动设备、多终端适配,给了前端工程师很大的挑战,对前端工程师的能力也有很高的要求。许多UI问题有不只一种解决方法,许多问题有非常巧妙的思路和精彩的解决办法,前端在工程师群体里是属于非常有创造力的一个群体,因为这个行业需要丰富的创造力和想象力。
前端工程师还是Web标准的制定者、实践者和推动者,而现在的W3C标准不仅仅局限于浏览器,还包括各种手持智能设备,车载设备、智能家居等等。在未来万物互联的时代,前端将不仅仅是网页上的工程师,而是所有人机交互领域的工程师。
前端工程师的学习和成长
前端领域发展很快,各种新技术新思想不断涌现,这是一个好现象。但是前端发展太快也带来一些问题,比如有同学就问到我究竟应该学些什么,Angular.js、React、Node.js、ES6、ES7、CoffeeScript、TypeScript……似乎永远有太多东西需要学习,有些东西好像还没学明白就被另一些新的技术取代而“过时了”。
其实还是那句话,前端工程师首先是软件工程师,基础是最重要的,如果基础不扎实,一切应用技能就都是“浮云”。前端的基础是什么?HTML、CSS、JavaScript基本功,数学、算法、数据结构、操作系统、编译原理基本功。
一个优秀的前端工程师必须要有自己擅长的领域,并且钻研得足够深入,同时要有眼界,能“跨界”。可以以前端作为职业,但千万不要把自己的技能限制在前端领域,因为有很多东西,只有站在前端之外,才能看得更清晰,更透彻。
学东西千万别盲目跟风,大家都在谈AngularJS就立即跑去学习,过几天大家都谈React了,就又放下AngularJS去学习React。前端领域知识点很多,值得学的东西也很多,聪明的同学懂得花时间学习成体系的知识并且研究得足够深入,因为只有这样才能从中总结出规律,形成方法论,这样才能最大化学习的价值。
知识的正确用法 —— 一个领域里面的大师永远不会是另一个类似领域的菜鸟
这次前端星计划布置的一个实现带有农历和节气的万年历,有些同学卡在农历计算上,大约70%的同学懂得去网上找代码,但只有不到1%的同学真正弄明白农历计算的原理。
在面试的时候,面试官问到如何做前端性能优化,有的同学能够拿雅虎的性能优化军规回答得头头是道,反复强调使用工具压缩静态资源,但是自己搭建的博客的nginx服务却没有开启gzip。都知道说要合并静态资源,要减少HTTP请求,然而为什么要减少HTTP请求,减少请求之后预计能改善多少性能,获得多少收益呢?需要弄明白这些问题,也需要深入了解HTTP协议本身。
还有一个更有趣的问题,大家都说写HTML的关键是语义化,那么到底什么是语义化呢?这个问题难住了不少同学。标签要符合语义,这个答案看似简单标准,但什么样的标签才是符合语义?强调用 strong 不用 b?那如果有个外星文明,它们的语言里 strong 相当于地球的 bold,bold 相当于地球的 strong,那么它们究竟该用 strong 还是用 b?我们说 i 标签是斜体的意思,那为什么
拿它做 icon font 的标签,这是不是“反语义”的?
过去很多地方农村有一种民间的染坊,制作染布的染料。这种染房里面有一口很大的铁缸,通常都要有一个身体非常强壮的工人拿一根很长的铁棒在染缸里面用力地敲击,敲得越响,制作出来的染料颜色越鲜艳。 为什么越用力敲打铁缸染料就越好?染坊的人说这是祖祖辈辈传下来的经验,而事实上也是如此,真的染料的颜色和敲打用力有很大关系。直到有一天,一位从村里走出去学化学的大学生,弄明白了原来只需要在染料中加适当比例的铁屑,就能让染料和含铁元素氧化物产生化学反应而变得更鲜艳。原来祖祖辈辈传下来的“仪式”实际上在真实原理面前只是一种信仰和宗教。同样,如果我们不去了解技术的本质而止步于应用,那么我们就只是技术宗教的信徒。所以在周爱民老师的《JavaScript 语言精髓与编程实践》中说,计算机语言如同祭司手中的神杖,神杖换了,祭司还是祭司,世人还是会把头叩得山响。祭司掌握了与神交流的方法,而世人只看见了神杖。
由兴趣选择前端
在我学程序设计的最初,我学习的是C语言,然而整整一本书除了教我如何在黑洞洞的控制台上输出 Hello World 和各种其他字符或者用键盘输入一些什么然后依然是字符输出外,就没有什么其他的内容了。学习了一段时间之后,我的内心一度是崩溃的,因为我觉得这和我想得不一样,学了那么多知识,我都不知道自己究竟算不算是“学会”了C语言,因为在我看来,那些丰富多彩的操作系统和各种应用软件和黑洞洞的控制台之间明显还有着非常巨大的鸿沟。
事后回想起来,当时的想法当然是幼稚可笑的,那时候的我并不知道程序语言和运行环境之间的区别,对操作系统、用户API、硬件接口、网络服务等等都完全不了解。然而这并不能怪我,因为C语言的教程并没有任何一言半语来告诉我这一点,我也不知道学习了C语言的语法之后接下来还应该学习些什么。
相对来说,Web开发更吸引我,因为不需要安装任何环境,只需要在文本编辑器里面输入一些字符,保存后打开浏览器,马上就能看到丰富的视觉效果,这就是前端的优势,你所做的努力立即就能看得见。
相对于死板的输入输出,Web开发在界面可见的一层要丰富多彩得多,这一点吸引了我,如果这一点也能吸引你,让你着迷,那么你就适合学习前端。
在选择前端作为职业之前,要明确判断自己对前端开发的确感兴趣,选择做前端,应该是确认自己喜欢和适合做前端,而不是为了一份看起来体面而且薪水不菲的工作。如果你对构建丰富多彩的界面、处理各种交互逻辑不感兴趣,甚至厌烦,那么最明智的选择是放弃成为前端工程师的想法 —— 因为选择一个自己不喜欢的职业,为之忍受数十年直到退休,实在是一件很悲催的事情。
对在校学生,我们看重哪方面能力?
有同学问,360前端是否一定要求实际经验的学生,在这里我可以回答:否。
对于学生,我们比较关心的是:
基础:包括数学、算法、数据结构、计算机相关基础的掌握。
学习能力和学习方法:如何学的前端,学了多久,学到什么程度,遇到过什么问题,是如何尝试解决这些问题。
兴趣:对前端的兴趣如何,这一点可以体现在很多细节上。有一个反面的例子比较常见,一般来说我会问学生最近在关注什么前端新知识,有的学生会说我关注某某某,但当我再问他究竟关注到什么程度,会发现他实际上根本没有在这项新知识上花费多少时间。如果你对感兴趣的问题都不花费时间,如何证明你自己对前端的“兴趣”呢。
解决问题的能力:遇到难题如何解决的,遇到没接触过的问题是如何思考和最终解决的。从这里可以判断出同学有没有前端思维,这些问题没有标准答案,我们不追求某些“官方思路”,看重过程而不是结果。
关于简历,有同学提到说现在似乎很多公司都希望学生会点 Node.js,会点 React,我自己不会该怎么办。
我想说的是,我们并不要求学生必须会这些。相反,我个人更鼓励学生利用时间打好基础。简历上写自己真正擅长的内容即可,我们不会因为在你的简历上看不到 Node.js 或者 React 就忽略你。只要你真心热爱前端并用心学了,你应该明白如何用前端基础来打动我。有的学生喜欢在简历上堆砌词汇,实际上这一点不见得好,因为如果你写了一个你自己一知半解的东西,最后在面试中被面到了,一定会得负分的。
技术本身是有深度的,A 同学说“我知道React但没用它做过东西”, B 同学说“我用AngularJS写过一些个人的小项目”, C 同学说“我上个月使用弹性布局的思路来写我的博客,结果在Android系统4.1版本的Webkit浏览器下出现了一个显示bug,最后我是这样这样解决的”。你们说 A、B、C 三个同学我们会选择哪个同学?
面试是一个彼此交流的过程,我们希望看到大家在前端领域的能力和潜力,“知道”一件事,并不是一种有价值的能力,尤其是在知识廉价的互联网时代。我们的同学千万不要像背书一样去死记硬背一样东西,而应该真正用心去学。我们的高等学校不仅仅教授大家知识,还有如何真正学习和做研究,不是吗?
如果你对前端真的感兴趣并有潜力,花点小心思,你该知道如何学习它。
最后,祝愿大家都能成为优秀的前端工程师。
可能感兴趣的话题
说得真好!!!
o 131 回复
o 164 回复
关于伯乐前端
伯乐前端分享Web前端开发,包括JavaScript,CSS和HTML5开发技术,前端相关的行业动态。
新浪微博:
推荐微信号
(加好友请注明来意)
– 好的话题、有启发的回复、值得信赖的圈子
– 分享和发现有价值的内容与观点
– 为IT单身男女服务的征婚传播平台
– 优秀的工具资源导航
– 翻译传播优秀的外文文章
– 国内外的精选文章
– UI,网页,交互和用户体验
– 专注iOS技术分享
– 专注Android技术分享
– JavaScript, HTML5, CSS
– 专注Java技术分享
– 专注Python技术分享
& 2017 伯乐在线2016年,有哪些适合你学习的编程语言? - 推酷
2016年,有哪些适合你学习的编程语言?
译者:张天军
本文为极客学院Wiki组织翻译,转载请注明出处。
众所周知,理工类的人才一直是很紧缺并且有不错收入的。而且,从2007年到2012年,美国的在线招聘对软件方面的工作的需求涨了31%,这几乎是平均水平的3倍。美国劳工部的数据预计,软件开发的工作从2012年到2022年要继续涨22%,软件开发者的年收入中位数在2014年5月达到95,510美元。
如果你正考虑学习编程,各种编程语言的介绍可能让你难以招架 — 到底应该学哪门编程语言呢?希望这篇文章能从各种编程语言的收入,流行度,未来的前景方面给你一些启发。
以下是一个有趣的问答,也许能帮助你选择哪种语言是2016年适合你学习的语言。
编程语言一览
在我们对比各种语言之前,首先让我们来看一下包含了哪些语言。
动态语言通常被人们认为更加适合初学者学习,因为它们更加多样化也更加有趣。你可以很快地用相对少的代码构建一个应用程序,在你希望用代码实现某个你想要的功能时,没有太多的强制规则限制。
由于动态语言通常是很高级的语言,你只需要话很少的时间去掌握编程语言的细节,从而让更多的精力集中于学习编程概念上,由于初学者对于能让学习成果立竿见影感到很有动力,这也是动态语言在初学者中很流行的另一个原因。
JavaScript
别和Java搞混淆了,JavaScript是一门主要在客户端运行的脚本语言,用来做前端开发的。Javascript兼容所有的浏览器,一般通过使用比如jQuery的库和一些比如AngularJS,Ember.js,React等的前端框架来创建web应用。
由于Node.js平台的出现,Javascript 现在也可以作为一门服务器端语言了,虽然Node.js相对来说比较新,但该社区正在获得更多的关注。你也可以通过JavaScript的框架(比如:phonegap)来构建混合的移动应用,Facebook的React Native旨在让开发者通过JavaScript开发本地语言的移动应用。
然而,由于JavaScript的 untyped ,导致debug很困难,所以也被认为是一门很难的语言。它也有一些有类型的语言版本,比如:微软的TypeScript,或是React使用的JSX。
为了让开发更加开心和高效地开发而设计的语言,Ruby因Ruby on Rails框架而流行,Ruby on Rails 是一个一站式的 Web 开发框架,为了开发者开发的便利而优化。Ruby代码阅读起来更像是在读英语,Rails的工具使得日常的开发任务更简单(这些工具方便使用,无需繁琐配置)。
Ruby 主要被用来做后端的开发,一些很流行的网站比如 Airbnb,Shopify,Bloomberg,Hulu,Slideshare,和更多的网站开始用Ruby on Rails构建后台。
Python 是另一门被强烈推荐给初学者的编程语言,是美国大学里入门编程语言最流行的。开发者可以用它来编写桌面端和服务器端的应用,它也有用来数据挖掘的很好的工具。另外,Python在科学计算,数据分析,生物信息等学术领域也非常流行。
Google,Dropbox,Pinterest,Instagram,Reddit,BitTorrent,Civilization IV 和更多的公司已经开始用Python构建软件了。
PHP是一门服务器端的脚本语言,由于易于其代码掌握而通常被认为是对初学者友好的语言,PHP入门并不难。大部分网站曾经用过PHP构建,因为很大程度上这就是一门专门为Web开发设计的语言。
Facebook, Wikipedia, Yahoo!, Tumblr, WordPress等更多的网站曾用过PHP构建。
用静态的类型的语言构建的软件通常以更易扩展,更稳定也更加好维护而著称。静态语言通常在通过类型检查而捕获错误方面更严格,需要更多的代码来构建一个原型。游戏引擎,移动应用和企业级的后台一般都是用静态的类型语言构建的。
作为一门通用功能的语言,Java被用来构建Android应用,桌面应用和游戏。Java也通常被用作服务器端的开发语言用来开发企业级的后台-90%的世界500强企业使用Java。
而且,Hadoop 也是一个基于Java的很流行的存储和处理大数据的框架,它也被Yahoo,Facebook,and Amazon这样的企业用于Web服务。
C 通常被用于系统软件的开发,也是操作系统的通用语言。
C语言几乎影响了所有我们介绍的编程语言,尤其是Objective-C和C++。所以如果你很了解C语言,你在学习其他语言时就不会有什么困难。由于使用C完成一个简单任务需要更复杂的代码,初学者也许会发现如果他们如果把C作为入门语言,会很难保持学习的动力。然而C语言的有关知识会使一个程序员受益匪浅。
Objective-C / Swift (for iOS development)
Objective-C 是在C语言上进行了一层封装,使得它变成静态,但同时也能用于动态类型。苹果的Swift是一门设计成与Objective-C兼容的的静态语言,但它的静态类型使得他更不容易出错。
受Python的启发,Swift是想成为编程新手易于掌握的语言,也是按照能修复一些Objective-C的问题的方向设计的。
C++是一门基于C的强大语言。它是设计用来编写系统软件的,但也用来编写游戏或者是游戏引擎,桌面应用,移动应用和web应用。C++非常强大和快速,所以以至于Facebook用它开发了一些高性能的,可靠的组件。
许多软件的部分是用C++来构建的,包括Adobe系统,Amazon,Paypal,Chrome等等。想C一样,C++通常被认为是初学自学比较难的,所以如果你决定把C++作为你学习的第一门百年城语言,最好是通过在一些分享会上找个好的导师,或是找一个C++的编程老师教导一下。
C# 是被设计成在.NET框架在开发的一门语言,主要在微软的Windows上运行。
C# 被用来进行web开发,游戏开发和一些微软通用的开发。尽管微软在过去并不提倡跨平台兼容,Xamarin一直致力于一个名为Mono开源项目,这个项目目的是把C#移植到其他平台上和给Linux开发者提供更好的开发工具。你现在也可以通过Xamarin使用C#为iOS和Android构建本地移动应用。
SQL,也叫结构化查询语言,是一种和数据库交流的查询语言。尽管SQL不能被用来构建应用,但它被用来管理应用中的关系型数据管理系统的数据。
现在你对编程语言有了一点了解,也许还稍微有些难懂。但不是所有的编程语言都有同样的需求和薪水。如果你学习编程的目标是寻找工作机会,你是不会轻易因这中语言难学而被别人劝阻的,以下几点也许能帮你搞清你应该学习那种语言。
来自的招聘广告基于薪水的数据,我们大概能把编程语言分为9个梯度:
基于这些结果,显示出Swift能给你最多的收入,然而Java,Ruby,Python,C++也是不错的选择。另外,如果你考虑的是收入,那似乎JavaScript,C#,SQL和PHP不是理想的选择...不是吗?
平均工资会受到很多因素,比如的需求(工作的招聘有多少),比如供给(有多少开发者了解这门语言)和经验(一个初级开发者比高级开发者挣的少)的影响。所以在我们得出结论之前多考虑这些因素不失为一个好主意。
你有多大可能用你知道的这门语言找到工作?一下是一些提供的工作趋势图。
我们能从此图看到Java,JavaScript和SQL开发者的需求量很高。JavaScript尤其在过去的几年里有着明显的增长,由于它在2010年的增长,如今已经和Java并驾齐驱了。
关于C#开发者的招聘海报相对于其他语言还是很多的,对其他语言的开发者的需求似乎很接近。C++开发者会发现其相关需求有所下降。
但是,如果你的目标是在一家创业公司工作,那么也许来自的有关工作趋势的数据并不能给你一个好的建议。AngelList是一个获得关于工作信息更好的去处,那么让我们来看一下AngelList发布的关于不同编程语言的软件开发者的市场需求吧。
JavaScript再一次地成为需求最大的编程语言,但是相比于Java,C,C++,C#而言,创业公司似乎更加青睐Python和Ruby(on Rails)。
软件开发者的市场供应情况
让我们看一下Codementor提供的开发者所掌握的语言种类的数据吧:
当然,这绝不是对实际市场的准确描述,但这也能给你一个关于市场上具体情况的大概了解。我们可以发现,虽然移动应用开发已经爆炸式增长了一段时间,但精通Objective-C的专家却寥寥无几。由于市场上缺乏好的Objective-C的开发者,他们的薪水也就自然水涨船高了。
另一方面,市场上的PHP开发者似乎有着一个健康的供应数量,这就意味着雇主可以有更多的选择,并且能在薪水方面有讨价还价的余地,但我们也发现它并没有如同Java,SQL或是JavaScript一样的市场需求。因此PHP开发者挣的相对少一些。
JavaScript是一个特例。尽管供给最大,但它并不在收入最低的梯队里,文章后面我们会对JavaScript进一步观察。
现在你已经对每种语言的市场供需有了大概了解,让我们基于招聘广告薪水的有关信息,再来看看你的薪资潜力有多大。这个数据来自于 gooroo.io ,从中我们了解到一种语言的薪水高低是从该语言的单个招聘广告的薪水演化而来。
从这我们能发现那些会Ruby,C++或者Java的开发者似乎有着更高的起薪。Python和Ruby的薪水潜力似乎是最大的,这也就意味着优秀的Ruby/Python开发者更加稀缺,需求量也更大。JavaScript在薪水潜力方面似乎经历了一个大下滑,在2015年4月的时候它高达188,168美元的年薪,但是现在只有大约124,000美元的年薪。然而JavaScript保持了一个特例,我们稍后会加以阐述。
特例:JavaScript框架
仅仅比较把JavaScript开发人员挣的收入同其他编程语言做比较的这种行为其实好比管中窥豹。
如同我们在编程语言一览众提到过的,JavaScript是一个大类。许多框架被开发出来用于网站的前端开发,所以你如果仅仅了解JavaScript和jQuery,你可能就比那些会开发JavaScript框架的开发者挣的少。
让我们看看在美国不同的JavaScript框架的开发者的平均薪水情况吧(React和Backbone是库,而非框架,Nodejs更像是一个开发环境);
平均工资现在看起来并不糟糕。特别是React,有着一个非常漂亮的数据。当然这只是为你提供一个想法,提供的数据可能略微不同,平均至少105,000美元。但你必须会JavaScript才能学习这些技术,这也使得JavaScript成为一种收入不错的技能。
让我们看看有关这些框架的相应的开发者的需求吧:
Node.js是做后端开发的,所以如果仅仅是对前端框架而言,你会发现AngularJS是需求最旺盛的赢家。因此,如果你想做前端开发,你应该学学AngularJS。
另一方面,React是一门相对新的技术,发展势头很猛,早期和AngularJS分庭抗礼。它可能仍在以迅猛的势头发展,有可能以后会需求更广,这是由于React的性能总体比AngularJS要好。
如果你对开发者的世界有一些了解,那么你很可能知道其他开发者对你的帮助是至关重要的,尤其是如果你打算自学编程。
如果你成为开发者社区的一员,这绝对会使你开发的过程更加顺畅。
StackOverflow
StackOverflow 是全世界开发者所使用的最大的能互相取得帮助的开发者社区,所以我们自然会对于一门编程语言的流行度和体量做一个检测,也会关注这门语言的社区能给开发者有多大的帮助。
语言的受欢迎程度
基于StackOverflow上的关注者,我们能断定一门语言的大体受欢迎程度:
我们已经可以从职位需求趋势中了解Java和JavaScript开发者的需求量最高,所以它们的关注者最多也不足为奇。JavaScript是StackOverflow上关注量最多的,已经超过Java。
SQL,Ruby和Swift的关注着最少,很可能是因为Ruby主要是只能用于web开发,而Swift是一门相对新的开发语言。
StackOverflow的问题回答率
StackOverflow有一个不成文的规定,那就是你必须措辞“正确”地提问,否则人们就不会回答你的问题。牢记这条原则,让我们看看每种语言的提问的回答率:
基于以上信息,尽管只有相对少的StackOverflow的用户关注C,SQL和C++,但超过60%的相关问题也得到了答案。那些知情者可能会争论说C和C++是很先进的语言,从而问问题的用户很可能是更有编程经验的,也知道怎样措辞提问。另一方面来说,SQL并不是用来构建应用的一门语言。
值得一提的是那些Python和Ruby的开发者在StackOverflow上得到了很多的支持。初学者一般都不太会正确地提问,如果之前提到的那样,Python和Ruby的是初学者的最佳入门语言。然而,除了这两门语言是相对流行的语言之外,他们大概都有接近30天内60%的问题回答率。(Python的头号问题回答者是Martijn Pieters,他也是一个很好的编程导师。)
另一方面,PHP作为一门被广泛关注的语言,却有着最低的问题回答率。这意味着很多人问有关PHP的问题,但能得到答案的人却不多。
一旦你进入开发者的行当,你将不可避免地发现到:最好是尽可能地在你的项目中使用已经存在的解决方案。你一般从一些开源的项目中或者这些解决方法,GitHub是获取这些开源项目的一种途径。用户可以给他们所喜欢的项目打分,越多的分数意味着这个项目可能越有用。
因此,可以从GitHub存在的数据中我们也可以决定使用不同种类的语言来使得开发相对容易一些。我们也能对一门语言在一些新技术的改革方面的速度有个了解。不用大费周章,这里既有一个相对简单的图表来展示GitHub上的流行项目;
很明显,JavaScript有着最新最亮的工具,即使你不考虑各种文档,学习手册和入门教程。JavaScript还是以极度的快速变化著称的语言,它的框架变化率很高,一些新的技术会使开发者觉得很难跟上JavaScript不断革新的步伐。另外,它也不是直接和像Ruby,Python,Java和PHP一样的后端开发语言直接较量。正是如此,JavaScript会和其他语言有如此大的鸿沟也就不足为奇了。
Ruby和Objective-C在另一方面来说也有很多工具和资源来进行开发。有趣的是,我们在StackOverflow的比较中发现这两种语言都不如Java那么广泛的受欢迎,但是开发者通常发现一些关于他们的开源项目很有用。如果你查看用各种语言写的开源项目的话,这对于Objective-C来说尤为如此。
除此之外,大部分的用C/C++写的开源项目不是仅仅为了C/C++项目本身用的,而是为开发提供了一种通用的工具(例如:适用范围最广的Python解释器是CPython,这就是用C写的)。之前的语言简介里提到的C/C++大部分都用于系统应用的开发,所以那些GitHub上的开源项目是系统工具也就说得通了。另外,你还可以从开源项目中学到很多东西。
最后,PHP尽管是一门应用广泛的语言,但因在学习资源方面的缺乏而给它拖后腿了。至于说C#,微软已经在为它的开源服务而加大力度了,所以在不久的将来,我们很可能会在GitHub上看到C#更多的出现。
每种语言的未来前景
到底一门编程语言在未来将会导致多大的关系呢?首先,一门语言的未来很大程度上取决于它的社区的成长情况,因为新鲜血液的注入率和吸收率是保持这门语言流行并且持续获得资源的关键。因此,让我们来看看人们对那些语言的学习最为关注:
似乎Python, JavaScript, C#和 Swift的受关注度增长最为迅速。基于现阶段我们了解的趋势,我们可以得出以下结论:
JavaScript
毋庸置疑,JavaScript的关注度即将增长,尤其是现在它也可以用来开发后台,甚至能用来构建本地语言的移动应用(通过使用React Native)。JavaScript将持续地获得更多的开发工具,并且以相当快的速度升级着,所以你可以料想到它将在仍然会极度的重要。
创业公司喜爱Ruby on Rails。许多著名的网站比如:Airbnb, Twitch, Hulu等,都用Rails构建网站,这也意味着他们需要Ruby的开发者。另外,既然觉得使用Rails开发很有趣并且它也很容易学会,Rails将会继续在编程新人中很流行。
那就意味着Node.js的崛起必然会对Ruby on Rails的流行度有一个冲击-Node.js已经在GitHub上超越Rails了。当然这也不是Node.js超越Rails绝对的迹象,我们应该注意到前些年Rails也超越了Python的最大的后端开发的web框架:Django,GitHub上Rails比Django的评分更高。
甚而有之,一种新的“同态”应用软件的趋势很可能会影响到Rails的普及,这种趋势提倡改善web应用的性能。同态应用需要在Node.js的平台上运行-这就是要使用同样在前端使用的JavaScript语言。这样只需要通晓一门语言(JavaScript)的要求可能会使一些想学Ruby的新人转而学JavaScript。Google的Go语言也是另一门后端的开发语言,它也正在得到越来越多的关注。
然而,既然Rails能持续获得更新,它仍将保持关注度,尤其是因为他有一个忠实的社区提供海量且有用的开发工具来使得开发变得更容易。因此,抛开受欢迎成都不谈,Ruby也将在未来一段时间内榜上有名。
Python在学院派学者和数据科学家中很流行,如同之前提到的,许多学校向初学者推荐Python。这意味着Python将持续稳定增长并且保持相关度。然而Python的进化速度并不快,也没有JavaScript那样的爆炸性的需求增长,所以它讲持续的稳健自己的地位,尤其是在数据科学家们的高要求之下。
这些年后端开发的趋势已经从PHP转到别的语言上了,但是如今80%的线上网站仍然是用PHP构建的-它毕竟是一门专为web开发设计的语言。
然而,如果你用Google搜索初学者应该学哪门语言,你也许会发现那些开发者一般不推荐你学习PHP。事实上,许多开发者显然很讨厌PHP。
PHP社区正试图用新的关于“怎样正确地使用新的开发工具编写PHP程序的教程”来摆脱它的坏名声,但是总体来说PHP的未来似乎相对停滞不前,至少在2015年的美国是这样。希望PHP7能使它的社区重新焕发活力,即使众所周知这个社区相对分散。
Android 使得Java在流行语言中有了大爆发,大多是企业因Java的稳定和扩展性而对它钟爱有加。
随着Spark(用Scala语言)和Cassandra(支持其他语言)处理大数据的框架的崛起,将很难说Hadoop作为最流行的大数据系统还能统治多久了,但是根据企业出来的数据大小,Hadoop并不会消亡。同样的情况也适合Java,由于Java有一些极佳的后台开发工具并且Java更多的为企业开发着想。
因此,Java在未来几年将继续作为最流行的编程语言而坚挺下去。
Objective-C/Swift
由于苹果发布的Swift和Objective-C仅仅只服务于苹果的产品,我们不能期望Objective-C在未来能坚持多久。然而只要你继续使用苹果的产品,Swift就必然将在来未来流行。
然而,这也不意味着你在2016年就不应该学习Objective-C,由于大部分的iOS的开源项目都仍是用Objective-C编写的。所以总体上来看,使用一些你不了解的东西并不是一个明智的选择,如果你会了Swift,那么学习Objective-C并不是难事,反之亦然。
C相对与其他编程语言来说是一门相对低级的编程语言,但既然它是操作系统的构建语言,它就依然会存在下去,因为许多开发工具仍然是用C写的,Linux也是用C写的。
SQL 几乎是所有的数据库管理员都了解的语言。一段时间里,SQL似乎在例如MongoDB和Redis这种NoSQL服务兴起的时候被遗忘了,随着大数据计算平台如Hadoop,Spark和Cassandra的non-SQL的使用,许多人叫嚣着说SQL语言将要灭亡了。
很明显并不是这样。其实,即使NoSQL仍然需要重新定位自己为“不仅仅是SQL”。
随着大数据的兴起,管理大数据的难度也陡然上升,SQL比以往更加炙手可热了(你已经了解了工作机会的趋势)。Google最近也升级了它的BigQuery服务,使得它每秒每张表能处理高达100,000行的记录,BigQuery用的就是SQL。Spark自从1.3版本后也有了Spark的SQL模块。
总而言之,SQL又活跃起来了,这是因为需要用它来管理而非存储大数据。因此,虽然不是说SQL在哪都会用到,但是说SQL在相当长的一段时间内会榜上有名也不足为过。
C++仍然被认为是在性能和能力范围方面最出色的编程语言(即使是相对与Rust来说),C++很可能在一些对性能要求很高的领域(比如:游戏引擎)仍然流行。一个先今主要的标准(C++14)被认为将在2017年发布,所以它仍是一门在进化的语言。
在未来,Rust也许将会在系统编程的某些领域取代C++,由于Rust旨在相对于C++能够编写出更少缺陷的软件。如果你是一个高级的开发者,现在也许是一个学习Rust的好时机。
由于微软平台的限制和不开源,这没有给C#帮助,但是Mono几乎解决了这些问题(尽管Mono有一些性能问题,最近的更新已经解决了这些问题)。
C#的开发者似乎很喜欢C#这门语言,所以它有着很强的社区支持。更别说C#是Unity 3D的主要开发语言了,Unity 3D是一个相当火爆的游戏引擎,它可以兼容iOShe Linux等系统。Unity3D作为一个独立游戏引擎的崛起使得C#的未来更加光明,Unity3D也能用来开发虚拟现实的应用。由于虚拟现实是很有前景的,所以C#一定会有一个相当好的未来。
值得一提的是,C#在一些比如美国,英国的国家,做企业级开发也很流行。很明显微软将会是C#保持活力并且使它在.NET平台上存活,微软已经大胆地开源了这个项目,使得开发者能更容易地了解和利用这个平台。
到底编程初学者应该学哪门语言呢?很显然,如果你希望做web开发,你就不可避免地要学习JavaScript,无论你是否喜欢它。如果你希望做web的后台开发,你还必须学习一些SQL语言。
进一步说,如果你想从一些网站上爬虫数据或者你对数据科学比较感兴趣,Python可能是一个不错的选择。如果你想为企业开发工作,那么Java是一个好的去处。如果你对构建产品不是那么感兴趣,而对工作机会更加青睐,也许SQL是你不错的开始(尤其是如果你很喜欢数学的话);
总而言之,2016年应该学哪门语言将最终取决于你具体想干什么。
如果你想学习怎样编程,并且能确定你已经掌握了有关学习资料的话。可以关注Udemy的#1编程课程,该课程有一对一的专门老师教导。点击了解更多
来发现更多信息吧!
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致

我要回帖

更多关于 12月13日是什么星座 的文章

 

随机推荐