15个热门的编程趋势及15个逐步走向衰落的编程方向

Peter Wayner是InfoWorld的一名特约编辑,也是一个多产的作家。除了InfoWorld之外,他还经常为纽约时报和连线杂志撰写文章。近日,Peter撰写了一篇文章,谈到了未来15个热门的编程趋势以及15个逐步走向衰落的技术方向,该文发表之后在技术社区中引起了较大的反响,也希望文中的观点能给各位读者带来一些启示。

程序员们普遍对时尚界嗤之以鼻,因为这个圈子中的趋势就像风一样变幻不定。裙子忽长忽短、颜色变来变去、领结时大时小。不过在技术界,精确、科学与数学却统治着一切。然而,这并不是说编程没有趋势可言。差别在于编程的趋势是由更高的效率、更好的可定制性以及更棒的易用性来驱动的。新的技术会让旧有的技术黯然失色。下面我们就来介绍一下未来15个热门的编程趋势以及15个逐步走向衰落的编程方向。并非人人都会同意文中的观点,不过编程令人着迷之处恰恰就是快速的变化、激烈的争论以及即时的反馈。

热门:预处理程序

冷门:全语言栈

几年前,如果有人创建了新的编程语言,那么他不得不自己编写一些程序将语言的代码转换为二进制位。后来,有人发现可以利用现有的一些工具和技术做到这一点。现在,有想法的人只需编写一个预处理程序即可,它会将新语言的代码转换为已有的拥有大量库和APIs的语言。

喜爱动态类型的家伙创建了Groovy,这是一个简化版本的Java。那些想要修复JavaScript的人们创造了CoffeeScript。还有很多语言,如Scala和Clojure等,他们运行在JVM之上,已经有了这么好的JVM了,为何还要重新发明轮子呢?

热门:JavaScript MV*框架

冷门:纯粹的JavaScript文件

很久之前,人们学习JavaScript的目的就是为了弹出一个警告框或是检查表单中的email地址是否包含了@符号。现在,HTML AJAX应用已经变得异常复杂了,没有多少人会从头编写代码。更简单的方式是采用一个优雅的框架,编写一些胶水代码来实现业务逻辑。目前有大量的JavaScript框架,如Kendo、Sencha、jQuery Mobile、AngularJS、Ember、Backbone及Meteor JS等等,这些框架都可以帮助你很好地处理Web应用与页面的事件与内容。

热门:CSS框架

冷门:纯粹的CSS

曾几何时,为了向网页中添加一点活力,你需要打开CSS文件并加入一些诸如font-style:italic之类的命令,然后再保存文件。现在的网页已经变得非常复杂了,几乎不可能通过这样几条简单的命令就能达成所愿。改变一处的颜色也许会导致其他地方的颜色显示不正常,老话说的好:万物皆有联系。这正是SASS及Compass等CSS框架的用武之地,他们提供了一些编程元素,比如说真正的变量、嵌套的块等编程结构,这些东西在编程领域不是什么新玩意,不过对于设计来说却是一个伟大的进步。

热门:SVG与Canvas

冷门:Flash

过去,Flash令人着迷,艺术家们也都偏爱着Flash。其渲染的效果如此漂亮,很多聪明的艺术家都使用了大量的Flash创作了不少精致的效果。现在,JavaScript也可以做到过去只有Flash才能做到的那些效果,浏览器制造商与开发者们都为Flash的退出而欢呼雀跃。他们看到SVG(Scalable Vector Graphics)等新格式与DOM层更好的集成。SVG与HTML由大量的标签构成,这对于Web开发者来说是很容易使用的。此外,Canvas对象也提供了大量的API进行绘制。这让我们相信,已经没有多少继续坚守Flash的理由了。

热门:大数据(不使用Hadoop进行分析)

冷门:大数据(使用Hadoop)

每个人都想成为风云人物,如果不行,那他就会换个地方让自己脱颖而出。因此,“大数据”这个词儿的流行也就变得不那么让人惊奇了。有意思的是,很多问题并没有那么大,也没必要使用什么大数据解决方案。当然了,像Google或是Yahoo这样的公司会追踪人们的Web浏览;他们拥有的数据量是非常庞大的。不过对于大多数公司来说,他们所拥有的数据量可能一个普通的PC就装得下。肯定有公司需要使用不少机器,并行运行Hadoop,然后希望快点得到计算结果,不过很多公司其实并不需要这么做,他们只需要单台机器就行,根本没必要搞什么Hadoop。

热门:游戏框架

冷门:原生游戏开发

曾几何时,游戏开发意味着招很多开发者,从头开始使用C编写代码。当然了,这么做的成本也是相当高的,不过看起来好像不错。现在,没有人能够承担得起编写这么多代码的代价。大多数游戏开发者都开始使用Unity、Corona或是LibGDX等库来构建系统了。这样,他们就无需再处理这些细节信息了,可以将精力放在游戏情节、故事、角色以及艺术上了。

热门:单页面Web应用

冷门:网站

还记得通过URL访问只有静态文本和图片的网页时代么?那时,将所有信息放到网页上就可以做一个“网站”了。新的Web应用是包含着内容的数据库的前端。当Web应用需要信息时,它会从数据库中取这些信息,然后将其显示出来,没必要再像之前那样使用了。数据层与展示层和格式层是完全分开的。移动计算的出现是一个巨大的促进因素:单一的、响应式设计的网页看起来像个应用,同时还避免了App Store频繁提交审查的烦恼。

热门:移动Web应用

冷门:原生移动应用

假如你有一个关于移动方面的好点子。你可以为iOS、Android、Windows 8,也许还有BlackBerry OS各编写一个应用。每个应用都需要单独一个团队,使用不同的编程语言完成。开发完成后,你还需要将应用提交到应用商店进行审查,最后才能被用户下载使用。此外,你还可以构建一个HTML应用,将其放到网站上,应用可以运行在所有的平台之上。如果需要做些修改,那么你无需回到应用商店,祈求能够快些通过审查。现在的HTML运行速度已经越来越快了,它完全可以与原生应用展开竞争,即便是那些复杂、交互非常多的应用也没什么问题。

热门:Android

冷门:iOS

几年前,Apple的App Store还是一家独大,不过时间改变了一切。虽然iPhone与iPad还是拥有非常多的粉丝,他们喜欢其精致、丰富的UI,但Android的销量却在节节攀高。有报告显示70%以上的智能手机销量来自于Android。

原因很简单,那就是价格。虽然iOS设备保持了一个比较高的价格,不过Android世界中有太多的竞争者,他们所生产的平板价格甚至只有iPad价格的1/5,省钱总是硬道理嘛。除了价格之外,开源也是一个不容小觑的因素。任何人都可以在市场中参与竞争,实际情况也是这样的。有大的Android平板,也有小的手机;有Android相机,甚至还有Android冰箱。

热门:GPU

冷门:CPU

在软件还很简单,指令可以在一行中清楚显示的时候,CPU是计算机之王,因为它做了所有繁重的工作。现在,视频游戏中有大量并行运行的图形计算,一块显卡的价格动辄就5、600美金,一些执着的玩家甚至会使用多块显卡。这甚至比很多一般的PC还要贵,除了游戏玩家外,计算机科学家们也将很多并行应用转到GPU上运行,速度比之前快了百倍以上。

热门:GitHub

冷门:简历

没错,你可以通过看书等方式来学习,不过,阅读实际的代码却更加直观和有意义。程序员是否写了足够好的注释?是否花时间将大的类拆分成若干各司其责的小类?架构是否还有扩展的空间?这些问题都可以通过查看代码得到答案。

这也是为何现在在找工作时有过开源项目开发经历会变得更加吃香的原因所在。从私有项目中分享代码是比较困难的,不过开源项目可以走进每个人的生活。

热门:租赁

冷门:购买

以前,公司会建立自己的数据中心、雇佣专门的人来维护他们所购买的计算机。时至今日,很多公司开始租赁计算机、数据中心、雇员,甚至按照小时数来租赁软件。这是个非常好的做法,也会为公司节省很多成本;同时,还会保证计算能力。

热门:Web界面

冷门:IDEs

很久之前,人们使用命令行编译器。后来,有人将其集成到了编辑器和其他工具当中,创造出了IDE。现在,IDE有被基于浏览器的工具所替代的趋势。在基于浏览器的工具中,你可以编写代码、创建系统。如果不喜欢WordPress的工作方式,那么你可以通过它自带的编辑器修改代码并立即生效。你可以通过微软的Azure编写JavaScript胶水代码。这些系统基本上都没有提供很好的调试环境,而且在编辑生产代码时也存在着一定的风险,不过这个想法却是非常棒的。

热门:Node.js

冷门:JavaEE、Ruby on Rails及PHP

服务器的世界总是依赖于各种线程模型,不过这种方式会导致程序员所编写的各种低效、不负责任的代码影响到操作系统的效率。无论程序员编写的代码有多么差劲,操作系统总是会在各个线程间切换,从而平衡整体性能。

Node.js带来了JavaScript回调这种编程模型,代码运行速度也绝对够快。这种一开始只是用于弹出警告框的玩具语言的变化超出了很多人的想象。突然之间,创建新线程的开销变得很显著了,这时Node.js来了。如果程序员代码写的不好就会出现问题,不过让程序员清楚了解资源限制有助于他们编写出更快的代码。

Node.js的世界也因让浏览器与服务器之间保持和谐共处而获益匪浅。同样的代码既可以运行在浏览器端,也可以运行在服务器端,开发者可以在两端快速移动,也可以更好地完成功能。因此,Node.js已经成为互联网界最炙手可热的技术之一。

热门:Hackerspaces

冷门:大学

一个是4年250,000美金,一个是每月50美金,如果提前支付还有折扣。Hackerspaces正在不断驱动着创新,同时又没有大学那么多的开销。他们在创造着社交网络,影响着创业公司,没有官僚、没有政治。其课程不需要持续整个学期,这种特性非常适合于快速变化的技术世界。

时间: 2024-11-12 11:01:49

15个热门的编程趋势及15个逐步走向衰落的编程方向的相关文章

一个未排序整数数组,有正负数,重新排列使负数排在正数前面,并且要求不改变原来的 相对顺序 比如: input: 1,7,-5,9,-12,15 ans: -5,-12,1,7,9,15 要求时间复杂度O(N),空间O(1) 。

#include <iostream> using namespace std; void mSort(int *arr, int iLen) { int i, j, k, tmp; for(i = 0, j = 0; i < iLen; i++) { if (arr[i] < 0) { tmp = arr[i]; for(k = i; k > j; k--) arr[k] = arr[k - 1]; arr[j++] = tmp; } } } int main() { in

15.4 xshell使用xftp传输文件 15.5 使用pure-ftpd搭建ftp服务

15.4 xshell使用xftp传输文件 15.5 使用pure-ftpd搭建ftp服务 扩展 vsftp使用mysql存放虚拟用户并验证 http://www.aminglinux.com/bbs/thread-342-1-1.html ftp的主动和被动模式 http://www.aminglinux.com/bbs/thread-961-1-1.html 15.4 xshell使用xftp传输文件 打开xshell,新建一个会话窗口 输入它的用户名 root 密码123465 这个时候它

浅析 Linux 中的时间编程和实现原理一—— Linux 应用层的时间编程【转】

本文转载自:http://www.cnblogs.com/qingchen1984/p/7007631.html 本篇文章主要介绍了"浅析 Linux 中的时间编程和实现原理一—— Linux 应用层的时间编程",主要涉及到浅析 Linux 中的时间编程和实现原理一—— Linux 应用层的时间编程方面的内容,对于浅析 Linux 中的时间编程和实现原理一—— Linux 应用层的时间编程感兴趣的同学可以参考一下. 简介: 本文试图完整地描述 Linux 系统中 C 语言编程中的时间问

大数据技术之_16_Scala学习_11_客户信息管理系统+并发编程模型 Akka+Akka 网络编程-小黄鸡客服案例+Akka 网络编程-Spark Master Worker 进程通讯项目

第十五章 客户信息管理系统15.1 项目的开发流程15.2 项目的需求分析15.3 项目的界面15.4 项目的设计-程序框架图15.5 项目的功能实现15.5.1 完成 Customer 类15.5.2 完成显示主菜单和退出软件功能15.5.3 完成显示客户列表的功能15.5.4 完成添加客户的功能15.5.5 完成删除客户的功能15.5.6 完善退出确认功能15.5.7 完善删除确认功能15.5.8 完成修改客户的功能第十六章 并发编程模型 Akka16.1 Akka 的介绍16.2 Acto

javascript模块化编程(1):为什么要用模块化编程

最近想边学边整一下模块化编程,那么先从为何要使用模块化编程说起吧,可能你刚听说模块化编程,也没有关系,本篇讲的是很基础的东西. 一开始写代码的时候,我们可能只需要一个js文件,去实现一个很小的功能,比如下面这样: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <

【UNIX网络编程(四)】TCP套接字编程详细分析

引言: 套接字编程其实跟进程间通信有一定的相似性,可能也正因为此,stevens这位大神才会将套接字编程与进程间的通信都归为"网络编程",并分别写成了两本书<UNP1><UNP2>.TCP套接字编程是套接字编程中非常重要的一种,仔细分析,其实它的原理并不复杂.现在就以一个例子来详细分析TCP套接字编程. 一.示例要求: 本节中试着编写一个完成的TCP客户/服务器程序示例,并对它进行深入的探讨.该示例会用到绝大多数的基本函数,未用到但比较重要的函数会在后面的补充上

POCO库中文编程参考指南(8)丰富的Socket编程

POCO库中文编程参考指南(8)丰富的Socket编程 作者:柳大·Poechant 博客:Blog.CSDN.net/Poechant 邮箱:zhongchao.ustc#gmail.com (# -> @) 日期:April 16th, 2012 1 POCO 中的 Socket POCO 中有 丰富的 Socket 封装.其继承关系如下: 本文暂且只介绍 StreamSocket.ServerSocket.DatagramSocket 2 Poco::Net::ServerSocket S

编程的97件事——2、应用函数式编程原则

Apply Functional Programming Principles Functional programming has recently enjoyed renewed interest from the mainstream programming community. Part of the reason is because emergent properties of the functional paradigm are well positioned to addres

Java IO编程全解(三)——伪异步IO编程

转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/7723174.html 前面讲到:Java IO编程全解(二)--传统的BIO编程 为了解决同步阻塞I/O面临的一个链路需要一个线程处理的问题,后来有人对它的线程模型进行了优化,后端通过一个线程池来处理多个客户端的请求接入,形成客户端个数M:线程池最大线程数N的比例关系,其中M可以远远大于N,通过线程池可以灵活的调配线程资源,设置线程的最大值,防止由于海量并发接入导致线程耗尽. 下面,我们结合连接模型图和源