洞见未来:21项热点编程趋势和21项趋冷技术

洞见未来:21项热点编程趋势和21项趋冷技术

程序员喜欢嘲笑时尚界,像微风一样吹拂着潮流。 诸如裙子下摆上升和下降、颜料来来去去变、领带变得更肥厚,然后又更轻薄。 但在技术界,严谨、科学、数理和精确统治时尚尺度。

这并不是说编程是一个没有趋势变化的职业。 不同之处在于编程趋势是由更高的效率、更高的定制和易用性驱动的。 交付的一项或多项新技术超越着上一代。 这是一种任人唯才、以才适用精英驾驭的世界,而不是古怪的奇思妙想浮云般略过。

接下来是给当今程序员的一个列表,其中有热点以及非热点内容。当然,不是每个人都会同意A清单列出的内容、D清单列出的内容,以及遗漏的内容。 正因为如此,编程才是一个永无止境的迷人职业:快速变化,激情辩论,突然复出。

1、Hot:预处理器 | Not:全语言栈

不久前,创建新编程语言的人必须构建所有能够将代码转换二进制的位以供硅片识读(由硅质的集成电路芯片处理)。 现在,拥有聪明主意的人,只需编写一个预处理器,就能将新代码转换为具有丰富库和API的旧代码。

像Python或JavaScript这样的脚本语言曾经仅限于小项目,但现在它们是认真严谨工作的基础。 那些不喜欢JavaScript的人创建了个CoffeeScript预处理器,这让他们再次编码,且没有繁琐的标点符号。另外,还有许多变体以不同的方式进行预测和提示语法。

喜欢动态类型的人创建了Groovy,这是一个简单的Java版本,没有过于坚持的标点符号。 似乎有几十种语言,诸如 Groovy,Scala,Clojure,Kotlin等 在JVM上运行,但只有一种JVM。 您也可以在.Net的VM上运行多种语言。为什么重新发明轮子?

也就是说,你可以在现有基础条件上,通过预处理器来开发新的语言,而不是从头来搞一门新语言。

2、Hot: Serverless | Not: Docker

这不完全正确。Docker容器无处不在。 服务器一直在开启着,但同时也关闭着容器,因为,Docker容器比它们需要的容量大得多。

如果你考虑一下,你可能只会为你正在部署的微服务编写几十行真正的决策代码,但是你需要投入大量的配置才能使Node.js和其他任何东西开始 正确使用Docker。 是的,这都是样板,但是没错。

新的无服务器架构让我们只部署那些做出真正决策的if-then-else语句。 其他一切都由那些租用无服务器平台的人来完成。

是的,我们会在几年内抱怨锁定和缺乏定制,但是现在无服务器选项似乎使所有的devops和配置从中得到解脱。

3、Hot: JavaScript MV* frameworks |Not: JavaScript files

很久以前,每个人都学会编写JavaScript以弹出警告框或检查表单中的电子邮件地址是否包含 @符号。 现在HTML AJAX应用程序非常复杂,很少有人从头开始。 采用精心设计的框架并编写一些粘合代码来实现业务逻辑更为简单。

现在有许多框架,如Vue,Kendo,Sencha,jQuery Mobile,AngularJS,Ember,Backbone,Meteor JS等等,都准备好处理您的Web应用程序和页面的事件和内容。

这些只是网络应用程序。 还有一些调整为智能手机/平板电脑世界提供跨平台开发。 NativeScript,PhoneGap,Apache Cordova和React Native等技术是使用HTML5技术创建应用程序的一些选项。

4、Hot: CSS 框架 | Not: 通用CSS

曾几何时,在网页上添加一些趣味意味着打开CSS文件并编写包含的一个新命令,如font-style:italic。 然后你保存了文件,并在一上午艰苦的工作后去吃午餐。 现在网页非常复杂,用这么简单的命令填写文件是不可能的。 对颜色进行一次调整,一切都变得不正常了。 这就像他们对阴谋和生态学所说的那样:一切都是相互联系的。

这就是像SASS这样的CSS框架及其像Compass这样的兄弟存在,已经找到了稳固的基础来解决此类问题。 它们通过提供编程结构(如实变量,嵌套块和混合)来鼓励有识读能力且稳定的编码。 它可能听起来不像编程分层化中的新鲜事,但它是设计层的一个重大飞跃。

5、Hot: SVG | Not: Flash

Flash已经让人们疯狂多年,并且艺术家们一直都喜欢这种结果。 抗锯齿渲染看起来很棒,许多有才华的艺术家已经构建了一大堆Flash代码来提供复杂的过渡和动画。 休闲游戏继续非常受欢迎。 因此,Flash在网络上依然存在。

既然JavaScript层能够做很多相同的事情,那么浏览器制造商和开发人员就为Flash的终结而欢呼了。 他们看到与来自SVG(可缩放矢量图形)等新格式的DOM层可更好地集成。 SVG和HTML包含一大堆标签,Web开发人员通常更容易使用它们。 然后有大量的APIs,通常在视频卡的帮助下,在Canvas对象上提供精细的绘图。 把它们放在一起,你就没有理由再使用Flash了。

6、Hot:不带Hadoop大数据 | Not:带Hadoop大数据

每个人都喜欢感觉像校园里的大人物,如果他们不是,就去寻找一个适合他们能够脱颖而出的的校园。 毫不奇怪,当"大数据"这个词开始流入执行套件(软件解决方案)时,套件就开始要求最大,最强的大数据系统,就好像他们购买游艇或摩天大楼一样。

有趣的是,许多问题都不足大到使用最精彩的大数据解决方案。 当然,像谷歌或雅虎这样的公司跟踪我们所有的网页浏览; 他们有以PB或yottabytes为单位的数据文件。 但大多数公司的数据集都可以轻松放入基本PC的RAM中。 我正在一台拥有16GB内存的PC上写这个内容,足以支持十亿个带有少量字节的事件。 在大多数算法中,数据不需要读入内存,因为从SSD流式传输可以很好。

有些实例要求并行运行的Hadoop云中的数十台机器的快速响应时间,但许多机器可以在一台机器上进行精确插拔,而无需协调或通信的麻烦。

7、Hot: Spark | Not: Hadoop

并不是说Hadoop正在降温。 更多的是Apache Spark炙手可热,使得Hadoop模型看起来有点旧。 Spark借鉴了Hadoop从大量数据中提取含义的方法的一些最佳想法,并通过一些可靠的改进来更新它们,使代码运行得非常非常快。 最大的可能是Spark将数据保存在快速内存中,而不是要求所有内容都写入分布式文件系统并从中读取。

当然,很多人通过使用Spark对Hadoop分布式文件系统中存储的数据的处理速度来合并这两者。 Hadoop和Spark通常更多是合作伙伴而非竞争对手。

8、Hot: 数据库配置 | Not: 软件编程

很久以前,程序员曾经开玩笑说他们不知道下个世纪的编程会是什么样子,但他们知道它会被称为Fortran。 这个笑话很有趣,他们会从恐龙身上掉下来,打破他们的木制内衣。 然后他们会回去配置数据库。

我们今天仍然在构建数据库,但我们所认为的"数据库"现在已经变得更加复杂和强大。 现成的数据库将在各大洲同步,同时在一致性和速度之间提供灵活的权衡。 像Firebase这样的云服务会将新数据推送到移动客户端上运行的网络应用程序。

大多数无服务器革命都基于这样的认识:许多云数据存储现在非常强大,我们只需编写一些if-then-else子句来构建一个非常酷的Web应用程序。

9、Hot: 游戏框架 | Not: 本地游戏开发

曾几何时,游戏开发意味着雇佣大量开发人员从头开始用C编写所有东西。 当然,它耗资数十亿美元,但它看起来很棒,而且像风一样。 现在,没有人能够负担得起定制代码的奢侈品。 大多数游戏开发者多年前放弃了自己的骄傲,并使用Unity,Corona或LibGDX等库来构建他们的系统。 他们不像编写库的指令那样编写C代码。

我们的游戏不是骄傲地手工制作,而是用相同引擎冲压出来,这是不是很可惜? 不。 大多数开发人员都松了一口气。 因为他们不需要处理细节,所以他们可以专注于游戏,叙事弧,人物和艺术。

10、Hot: 静态网站生成器 | Not: 单页面web应用

还记得URL指向充满静态文本和图像的网页吗? 然后,动态的单页Web应用程序出现并用一个聪明的Web应用程序替换它们,这些应用程序将获取要求的数据。 你猜怎么了? 钟摆向后摆动,所有孩子都在建造静态网站的生成器。 有几十个。 它就像hybrid(混合动力车)。 您将所有数据放在一堆里,然后编写一些将数据粘贴到某些模板中的代码,以便每个静态URL都有一个HTML文件,这来自数据表中的每一行。

孩子们认为这些静态网站是超高速的。 只是不要告诉他们像WordPress和Drupal这样的旧动态系统的工作方式大致相同,即通过保持几乎使用最新数据填充生成的静态页面的缓存来工作。

11、Hot: GraphQL | Not: REST

这并不是说REST已经死了。 只是我们想要使用API​​做更多的事情,而GraphQL是一种方法。 GraphQL返回JSON中的数据,就像REST一样。 GraphQL从HTTP POST开始,就像许多REST调用一样。 只是GraphQL语法允许您只需几次敲击就可以指定非常复杂的查询。 这使程序员更容易查询他们想要什么,并且当有人想要稍微不同的API时,它减少了必须完成的服务器端工作量。

也就是,GraphQL可以按需获取数据。

12、Hot: Cloud IDEs | Not: Local IDEs

很久以前,人们使用命令行编译器。 然后有人将其与编辑器和其他工具集成以创建IDE。 现在是时候通过基于浏览器的工具,让IDE黯然失色,这些工具可以让你编辑代码,甚至是工作系统的代码。 如果您不喜欢WordPress的功能,它会附带一个内置编辑器,可让您随时更改代码。 Microsoft的Azure允许您在其门户中编写JavaScript粘合代码。 这些系统没有提供最好的调试环境,编辑生产性代码有一些危险,但这个想法很有道理。

您可以从AWS Cloud9,Codenvy和Mozilla的WebIDE开始,并要保持不断探索。 基于网络的工具正变得越来越强大。 例如,可以在Microsoft的Azure网站上构建一个完整的大数据分析项目。 如果您开始探索无服务器选项,您将很快发现您可以在网页上的表单元素中编写所有代码,这是个不比在Facebook上用于更新朋友信息的表格大多少。

13、Hot: GPU | Not: CPU

当软件很简单并且指令排成一行时,CPU就是计算机的王者,因为它完成了所有繁重的工作。 现在,视频游戏充满了可以并行运行的大量图形例程,视频卡运行了该展现。 在花哨的视频卡上花费500美元,600美元或更多是很容易的,而一些严肃的游戏玩家使用不止一个。 这是许多基本台式机价格的两倍多。

此外,游戏玩家不是唯一吹嘘他们的GPU卡的人。 计算机科学家现在正在将许多并行应用程序转换为在GPU上运行,速度快数百倍。 数据科学家正在使用装有GPU的服务器来加速其机器学习模型的开发。

14、Hot: GitHub | Not: Résumés

当然,你可以通过阅读包括初级国际象棋俱乐部副总裁在内的一系列成就来了解候选人。 但阅读某人的实际代码更丰富,更有启发性。 他们写好评吗? 他们是否浪费了太多时间将物品分成很小的类? 是否有真正的架构可以扩展? 所有这些问题都可以通过他们的代码一瞥来回答。

这就是为什么参与开源项目对于找工作变得越来越重要的原因。 从专有项目共享代码很难,但开源代码可以随处可见。

这是说,在GitHub上秀出你的实际代码,而不是简历的描述,使你更好的找工作。

15、Hot: 租用 | Not: 购买

当亚马逊在黑色星期五推出其计算机和其他电子产品的销售时,该公司忘记了为其云计算提供超值优惠的交易。 给它时间。 不久前,公司开设了自己的数据中心,并聘请了自己的员工来运行他们直接购买的计算机。 现在他们按小时租用计算机、数据中心、员工,甚至软件。 没有人想要拥有任何东西,甚至管理服务器的麻烦。 这是一个好主意,至少在网站流行起来,并且你也意识到你通过点击支付所有东西。

16、Hot: 复杂运 | Not: 简单云

云计算的早期阶段,供应商强调单击按钮并运行机器是多么容易。 朴素是王道。

现在选择正确的机器并找出合适的折扣程序可能比编写代码花费更多的时间。 有许多机器配置文件可用,大多数云提供商支持一些旧型号。 所有这些都提供独特的性能水平,因此您最好准备好对它们进行基准测试,以确定哪种方式对您来说最具成本效益。 是否值得每小时节省12美分以减少内存? 如果你一次开转100台机器,可能就好了。

为了使事情变得更加复杂,云公司提供了几种通过提前付款或批量购买来获得折扣的选择。 您还必须将它们放在电子表格中。 这足以投资于云成本工程的在线课程。

17、Hot: 移动web应用 | Not: 本地移动应用

假设您对移动内容有个好主意。 你可以赶紧为iOS,Android,Windows 10 Mobile甚至黑莓操作系统编写单独的版本。 每个人都需要一个单独的团队讲一种不同的编程语 。然后,每个平台的应用程序商店都会发布自己的一点东西,然后才能将应用程序交付给用户。

或者您可以构建一个HTML应用程序并将其放在网站上以在所有平台上运行。 如果有变化,您无需返回应用程序商店,请求快速查看错误修复。 现在HTML层变得越来越快,并且在更快的芯片上运行,这种方法可以与本机应用程序竞争,即使对于复杂的交互式应用程序也是如此。

就是说,移动web相应更快,迭代更快。随着基础条件的支持会越来越好。

18、Hot: Android | Not: iOS

几年前那条线路是否已经从Apple的商店中掠过? 时代在变。 虽然iPhone和iPad继续拥有热爱其丰富、精致的用户界面的专用粉丝,但原始销售数字仍然偏向Android。 一些报道甚至说,超过80%的手机销售的是Androids。

原因可能与成本一样简单。 虽然iOS设备仍然花费相当一分钱,但Android世界充斥着大量竞争,这些竞争产生的平板电脑价格只有五分之一。 省钱总是一种诱惑。

但另一个因素可能是开源的影响。 任何人都可以在Android市场中竞争——并且他们也可以那么干。 有大型Android平板电脑和小型平板电脑。 有Android相机甚至Android冰箱。 没人非得说,“可以去”谷歌进行创新? 如果他们有一个想法,他们会跟随他们的想法去做。

19、Hot: Node.js | Not: Java EE, Ruby on Rails

服务器世界一直在线程模型上蓬勃发展,让操作系统沉迷于程序员任何任性、低效或放弃的​​行为。 无论愚蠢的循环或程序员编码的浪费计算,操作系统都会通过在线程之间切换来平衡性能。

然后Node.js出现了编程的JavaScript回调模型,代码的运行速度比任何人认为可能只用于警报框的玩具语言快得多。 突然间,创建新线程的开销变得明显,Node.js就开挂了。 当程序员表现不好时会出现问题,但责任在很大程度上对他们有利。 对程序员来说明显的资源限制通常会产生更快的代码。

Node.js世界也受益于浏览器和服务器之间的和谐。 两者都运行相同的代码,因此开发人员更容易移动功能和复制功能。 因此,Node.js层已成为Internet上最热门的堆栈。

20、Hot: PHP 7.2 | Not: Old PHP

在过去,PHP是一种简单的方法来淘汰一些动态网页。 如果您需要一些变化,可以在HTML标记之间嵌入简单的代码。 这对于Web开发人员来说已经足够基础了,但是慢到足够吸引来自核心程序员的冷笑。

这是个老消息,因为像WordPress和Facebook这样的地方的一些PHP爱好者通过采用曾经使Java成为高性能解决方案的Just-in-Time编译器技术,比以往更快地竞争执行PHP代码。 现在,像HipHop虚拟机和PHP 7.2这样的工具提供的速度可能是旧版本的两倍。 接受吧,都赶上了Node.js和Java。

21、Hot: 即时教育| Not: 四年苦学

计算机中介课程不再是新的,每个人都享受着观看带有按钮的视频讲座的优势,这些按钮用于加速、减速或要求教授重复最后一点。 在线论坛也改进了旧的研讨会议室,一次只有一个“大嘴”可以主导讨论。

但是,不仅是在线课程背后的技术性质正在颠覆教育产业的复杂性; 无论何时何地,您都可以灵活地学习。 目前正在改变这种动态,因为人们不再需要为可能与他们的生活相关或可能与他们的生活无关的大量课程投入四年的无耻学费。

为什么要学习编译器课程,你知道你真的会在编译器上工作? 如果老板想要从关系数据库切换到NoSQL引擎,那么您可以将时间花在现代数据存储的课程中。 您可以在需要时获得最新信息,并且不会因为快速腐烂的想法而混淆您的大脑。

也就是说,学会独立思考,把时间和精力放在“适当”的方向上,而不是花四年时间,有关无关的全学一下,又很快忘了。时代在变,掌握新的学习方式,即时教育与终身学习。

编译者:老崔@牛旦教育IT课堂

原文地址:https://www.infoworld.com/article/3188464/application-development/21-hot-programming-trends-and-21-going-cold.html?nsdr=true&page=1

相关推荐