改变开发者工作方式的15种技术

以前,开发人员写的汇编代码轻巧而且运行速度快。运气好的话,如果预算充足,他们可以雇佣一些人来帮助完成这些代码的输入。运气不好的话,只能靠自己完成复杂的输入工作。

现在,开发人员要和分布在不同大洲的团队成员一起工作,这些成员使用不同字符集的语言,更坏的情况是有的团队成员可能会使用不同版本的编译器。一些代码是新编的,一些库是从很多年前创建的,源代码已经无法获得。所以,要想成为一个程序员,必须要拥有团队精神和吃苦耐劳的信念。

下面我们就来梳理一下正在改变基本开发工作的15种科技技术。这些技术改变着我们与其他团队成员的合作方式,与客户的沟通方式以及我们的编程方式。

1、持续集成(Continuous integration)

当把代码提交到库中以后,你就有足够的时间休息一下,喝杯咖啡,甚至可以去吃个午饭。这个时候,代码库已经与一个持续运行的编译系统绑定,开始重新编译你提交的代码,仔细检查你的代码结构,初始化多个测试程序,标记你代码中可能的问题。在离你办公桌5英尺的范围内,编译系统就通过邮件或短信将需要修复的问题发到你的手机上。重新回到工作岗位,持续运行的编译系统又有新的任务给你了。

2、架构(Frameworks)

通过复制别人的工作进而站在巨人的肩膀上已经不是什么新鲜事了,但是优势却从来没有像现在这么明显。现在只有很少的编程工作是从头做起了。最好也是最有争议的开发方法是:利用一个正确的框架,研究清楚 API,然后自己写代码使用API完成最核心的功能。网页不再是由 HTML 或者 CSS 生成的了;更多的是开始使用 Ext JS,Express JS 或者其它代码库作为编码的基础。

当然,你也可以创新并且从头开始构建所有的东西,但那是相当痛苦的。你没有办法赶上其他人做的所有工作。你不是一个技工,仅仅是一个框架修理工。在你打算自己编码之前,先了解一下已经正在使用的框架。

3、代码库(Libraries)

和框架类似的是代码库,代码库无处不在,程序员已经离不开它了。写关于浏览器的代码可以不用jQuery 吗?是否有人记得有一个内置函数 GetElementByID?像 jQuery 这样的库现在应用在各个层面。人们会谈论他们喜欢的语言,但是确很少谈论他们是怎么编程的。如果你想雇佣一些程序员,你应该多问他们一些关于代码库的知识。Java脚本的开发人员是从 jQuery 或 Dojo 发展来的吗?游戏开发人员可能会使用 C++,但是实际的问题是这些开发人员是否知道 Allegro,Unity,Corona 或者其他更多的选择。代码库的知识和语言本身的来龙去脉一样重要。

4、应用程序编程接口(APIs)

从前,程序员总需要关注数据结构。他们需要将所有的信息打包成字节块,确保将值放在正确的偏移位置。现在,编译程序为我们做了这些。

现在我们通过非常严谨的接口工作,它有一个发烧友一样的名字:应用程序编程接口。它通常在一个完全不同的机器上或是运行在其他公司的,每次调用都需要收费。你想将一个街道地址和一个邮政编码变成经纬度吗?有专门的 API 接口可以调用,并且使用的费用也相当便宜。

很多情况下,数据不需要这么死板的打包。旧的字节打包方式已经被轻量级的数据交换格式例如JSON 或 XML 取代。你需要确保你的数据格式完全正确,幸运的是有现成代码库可以用。

5、平台即服务(Platform as a service)

谁建立了自己的网站?相反的,如何在别人的网站上创建一个用户账户,并做一些定制呢?所有的这些仅仅需要的是一个网站,这样,你的站点就可以做你想做的所有事情了,比如往 Youtube 上传一个猫的视频或者在 eBay 上竞标一个佩斯饮水机。

当然,这个例子有点夸张。许多 PaaS 选项目前都要求程序员清楚的知道每个 Web 表单上放什么东西。以微软的云服务为例,你可以将用 Java 脚本语言写的用于描述网站如何响应的函数放到上面。然后,这个云服务会将这些函数打包成一个库然后放在js节点上运行。

6、浏览器(Browsers)

曾经有一段时间人们分别写桌面软件,服务器软件和设备上运行的软件,这些软件都是不一样的,软件之间相互传递信息的方式也互不相同。现在,所有的这些都使用浏览器了。当我在家里建立一个本地文件服务器来存放音乐,就可以通过一个网站登录到这个网址上。苹果的桌面窗口程序是用 Java脚本和超文本标记语言写的,已经用了很多年。很多用超文本标记语言和Java脚本写的移动客户端的跨平台应用都和 Apache Cordova 绑定了。

当然,很多应用还在继续使用 C/S 结构。最好的游戏仍然使用客户端模式,没有使用浏览器,但是随着越来越多的 Java 脚本开发者研究在画布上绘图这种情况正在改变。例如,愤怒的小鸟,就即将运行在浏览器窗口上。

7、应用程序容器(Application containers)

专门建立一个服务器来做比较困难的工作。程序员可以从服务器上获取代码然后运行,并且将运行日志发送到服务端。有时候可以得到正确的库,有时候得到的库是错误的,但最终,都会找到可用的代码库。

现在,类似 Docker 这样的应用程序容器允许我们按一个按钮就找到正确的库。如果 这个代码库可以运行在我们的测试机上,它也可以运行在服务器上。所有的东西都捆绑在一起了,那些夹在我们桌面和服务之间不兼容的东西都不存在了。

8、基础设施即服务(Infrastructure as a Service)

我提到过服务器策展人团队吗?这些人喜欢在午餐时间或下班后出去玩,但是现在他们都被聚集到了云上,像是在一个全球的数据中心那样为那些自认为是云世界中的领导者的公司工作。少数开发人员会需要服务团队为他们的新工程搭建一个新的服务。他们只需要登录一个站点,按一个按钮,就可以得到一个为他们服务的机器。特别简单,但是这些 IaaS 管理网页不会在工作结束后为你买一杯咖啡。当然,它能为你节省很多工作。

9、Node.js 和 JavaScript(Node.js and JavaScript)

在你们中的一些人出生以前,网络服务器送出静态的 HTML。后来,有人就开始研究如何构建动态的,可以和数据库交互的服务器。每个团队都需要一个人用 SQL 语言编写数据库程序,一个人用PHP 或 Java 编写服务程序,一个人设计 HTML 模板。一旦每个人都开始喜欢上运行在客户端的AJAX 和 Java 脚本,这个网站就需要一个会这种语言的人。

现在 Java 脚本做了所有的事情。当然,浏览器用 Java 脚本,服务端(Node.js)和数据库(MongoDB 和 CouchDB)也一样。即使是 HTML 也通常是用 Ext JS 或者 jQueryMobile 这样的框架,使用 Java 脚本在客户端生成的。

10、二级市场(Secondary marketplaces)

如果你想构建一个游戏,你可以自己雇佣一些设计人员,创建一个非常棒的模型集。你甚至可以雇佣一些开发人员为你的游戏增加一些视觉效果,让游戏看起来更酷。或者你可以去类似统一资源市场的二级市场购买你需要的所有部分。当我写这些的时候,构建下水道的场景的工具箱正降价30%,可以用来构建小型的或大型的游戏场景。这个销售活动在你看见这则新闻的时候可能已经结束了,价钱可能已经升到45美元了。开发人员和设计人员怎么会有这么低的价钱!

现在有越来越多的提供插件,库和其它附加软件的市场。有这么多的库和框架,开发人员也越来越多的去购买所需要的部分,编码工作越来越少了。

11、虚拟机(Virtual machines)

编写大段代码的时代已经慢慢远去了。现在大部分写出来的运行在虚拟机上的代码都被翻译成芯片可以识别的指令了。Java 虚拟机,C#/.Net 虚拟机,现在的 JavaScript 引擎都是代码的最终运行载体。

虚拟机的流行,使得这个领域吸引了越来越多的东西。过去,如果你想创造一种新的语言,你需要创建从处理器到寄存器的整个流程。现在,新的语言运行在旧的虚拟机上。Clojure,Scala,Jython,JRuby 都参与了虚拟机开发的工作,现在这个虚拟机业务是属于 Oracle 的。

相似的情况也出现在浏览器领域。使得,你可以创建你自己的浏览器和语言,也可以通过价差编译在Java 中模拟。现在很多新创建的脚本语言也是这么做的。谷歌的 Web 工具包也有类似的功能:将Jave 语言转换成 Java 脚本。

12、社交媒体网站(Social media portals)

在互联网的早期,你可以搭建一个自己的网站,然后祈祷人们可以找到它。他们需要记住你的网址。

越来越多的网站被吸引到互联网世界中,涌现出了非常多的社交网站和营销网站。如果你建立自己的网站,很可能门庭冷落,大部分用户都在社交网站和营销网站上浏览、点击。解决这个问题的办法是搭建一个社交网站或销售网站的应用,通过这种方式可以进入并集成到这些网站中。但是最后,你的应用也仅仅是一个附庸,会受到很多限制,还很可能会被轻易停掉。你还有别的选择吗?没有,你要么选择做大型网站的附庸,要门只能接受门庭冷落的现实。

13、开发工具(Devops tools)

很久以前,我们仅仅需要在一个服务器上安装软件就能满足应用需要。但是现在,我们要租用大量的服务器,需要几十,成百,甚至上千台机器,其中很多机器都需要按照需求配置,已经不是一个能用手工完成的工作了。

进入运维模式,就会有一些类似 Chef 和 Puppet 这样的工具帮助你完成这些复杂的工作。将软件推送到云端,在这些工具的控制下,可以保证所有的机器上运行的是相同的代码。这些工具替自动完成了我们以前在一台机器上的工作。

有一些服务,例如谷歌应用程序引擎已经在内部处理了这些,你需要做的仅仅是将你的应用程序告知引擎,并授权它开始工作。你甚至不知道后台到底发上了什么,你能看见的仅仅是 CPU 的占用量。

14、GitHub,SourceForge和代码共享(GitHub, SourceForge, and social code sharing)

代码共享网站可能是开源世界的最大贡献。在 SourceForge 出现之前,软件仅仅是在你的机器上创建并且代码也只属于你。如果另一些人想获得源码,他们需要找你来获得源码,当然必须要得到你的统一。

现在代码共享已经变成了一种共识。类似 SourceForge 和 GitHub 这样的网站发布了所有的代码,供所有人阅读和更新。他们为代码的维护、共享、评论提供了一个易于访问的地方。你可以通过一个入口阅读这些代码,并提出修改意见。很多项目每个星期可能有几十甚至几百万的下载量,这在以前是不可能的。

这种模式非常有优势,很多自营项目都使用这种模式。GitHub and BitBucket 这些网站还在一定程度上支持他们售卖自己开发的代码库。

15、性能监控(Performance monitoring)

早期,跟踪代码性能是一件非常容易的事。在代码执行的初始位置打印一个时间,然后在执行结束的位置打印一个时间。如果你想,你还可以把这两个时间做一个差,然后打印出来。很多问题在一台机器上是无法暴露出来。在代码上附加一个分析器可能无法暴露出真正的瓶颈,导致这种瓶颈的的原因可能是内部的一些复杂问题或者是数据库延迟。现在测试网络性能的工具不仅要测试软件本身,还需要测试软件中的每个模块。这是了解内部运行是否正常的唯一方式。当程序从在一个机器上运行演变成通过网络互相连接运行后,这是一种判断程序运行是否正常的非常重要的方式。

原文链接:http://code.csdn.net/news/2821358

时间: 2024-10-24 01:20:08

改变开发者工作方式的15种技术的相关文章

物联网改变人们开展业务方式的三种途径

最近几年,物联网一直在蓬勃发展,如今也变得更加现实.更有意义,而不再是此前只在业界流传的空洞时髦术语. 很难想像会出现这样的一个世界:在这样的世界里,用户的牙刷会告诉用户在刷牙时没有刷到哪一颗牙齿,或者用户的冰箱会在用户出现在超市时告诉用户需要购买哪些食品. 事实上,曾经在人们想像中的这些可能性如今都以各种不同形式的应用和技术而存在.将来,或许了很难想像,如果没有这些应用和技术,那又会是一个什么样的世界.所有的这一切,就是物联网--曾经优良的物体如今装备上传感器和网络连接功能,并将数据传送给这个

《编译与反编译技术实战》——第2章 编译器实践概述 2.1 编译器、解释器及其工作方式

第2章 编译器实践概述 人与计算机之间的交流也是通过语言进行的,但人类能理解的语言与机器可以理解的语言是不同的,中间需要翻译,因此,相应的编译器诞生了.编译技术所讨论的问题就是如何把符合人类思维方式的意愿(即源程序)翻译成计算机能够理解和执行的形式(即目标程序),而实现从源程序到目标程序转换的程序被称为编译程序或编译器.最早的编译器是20世纪50年代后期的Fortran编译器,该编译器也为后续高级语言和编译器的涌现奠定了基础.与编译技术相反,反编译技术所讨论的问题就是如何把计算机能够理解和执行的

《编译与反编译技术实战》——2.1节编译器、解释器及其工作方式

2.1 编译器.解释器及其工作方式就目前计算机的硬件发展水平而言,硬件只能识别由0.1字符串组成的机器指令序列,即机器指令程序或目标程序.在计算机发明的早期,计算机只能按照输入的机器指令程序进行简单的计算.但是,机器指令程序不易被人类理解,用它编写程序不仅困难而且还容易出错.于是后来就引入了代替0.1字符串的由助记符号表示的指令,即汇编指令,汇编指令的集合被称为汇编语言,汇编指令序列被称为汇编语言程序.汇编程序实际上与机器语言程序是一一对应的,都要求程序员按照指令工作的方式来思考和解决相关问题,

正在改变IT服务的8种技术

谁也不能否认服务是人类实施的工作.但是技术可以增强服务,甚至可以接管某些任务.特别是促进数字化转型的技术,可以对服务的交付方式和客户体验产生重大影响. 以下是改变IT服务的8种技术: 1.搜索.当客户需要帮助时,他们的第一本能就是在网上进行搜索.供应商应确保他们的在线公司和产品信息易于查找,并且已针对搜索进行优化,以便首先显示最相关的结果.在理想情况下,这些信息将放在供应商的网站上,并提示访客到哪里访问或查找. 聊天机器人.大多数供应商网站提供在线聊天选项.然而,用户通常不必和服务人员聊天,而是

科技正在改变人们的工作方式和生活习惯

科技正在改变人们的工作方式和生活习惯,颠覆着传统社会的一切. 十年前,或许没有人知道在一年后市场上会出现一个叫iphone的通信产品,更没有人知道在接下来的几年时间里,这个产品会颠覆了大部分人对 手机 .对互联网的认知,甚至这个产品还开创了一个基于移动端的商业生态,也就是大家今天见到的移动互联网生态. 五年前,或许也没有人知道在五年后的今天中国电商会如此发达,你甚至都不用出门,上网就可以购买生活所需的柴米油盐,而且数小时内就能送到你的手中.用不了几年这个过程还会更短,真正做到急需即得,这就是今天

在 Email 之后,Slack 能否再一次彻底改变人们的工作方式?

Erica Baker(注:黑人女工程师)非常喜欢玩德州扑克,她在 Google 的很多其他工程师同事也都非常喜欢这个游戏.Erica 在 Google 位于加州的总部已经工作 10年 了,在加入 Google 很长时间以后,终于有人邀请她参加其他工程师同事组织的德州扑克之夜活动了,然而当她走进活动房间的时候,里面的一群白人男同事都立刻沉默下来了."那种感觉很不好.我知道和自己相近的人在一起会比较舒服,但和那些跟自己不一样的人在一起也同样是非常重要的,因为它能让你成长为真正的人." E

人工智能将会改变IT服务管理的三种方式

为了寻求更智能,更快速的服务,IT部门在部署新方法和流程以改进内部服务交付方面一直处于领先地位.在未来的一年,人工智能(AI)将开始推动服务管理方面的新突破,从而为IT部门和组织带来前所未有的效率. 通过将服务管理迁移到云端,IT团队从主要处理业务中断转向构建综合服务目录,帮助员工更快更有效地完成工作.现在,下一轮的颠覆性技术是由人工智能驱动的,这得益于云服务提供的前所未有的数据洞察力.新的人工智能功能可以提供一个分析输入数据的自解析服务台,并将其与相应的解决方案相匹配. 简单地帮助人们完成工作

《MySQL技术内幕:InnoDB存储引擎第2版》——2.5 Master Thread工作方式

2.5 Master Thread工作方式 在2.3节中我们知道了,InnoDB存储引擎的主要工作都是在一个单独的后台线程Master Thread中完成的,这一节将具体解释该线程的具体实现及该线程可能存在的问题.2.5.1 InnoDB 1.0.x版本之前的Master ThreadMaster Thread具有最高的线程优先级别.其内部由多个循环(loop)组成:主循环(loop).后台循环(backgroup loop).刷新循环(flush loop).暂停循环(suspend loop

Web 设计与开发者必须知道的 15 个站点_相关技巧

 ColorCombos 开发者必须知道的 15 个站点_相关技巧-汇付天下开发者站点"> 配色是 Web 设计的首要大事,Color Combos 帮你预备了数千种配色方案,可以根据色调浏览选取.LIpsum Lorem Ipsum Text 是一中自造的,字典中不存在的单词,是在演示页面结构的时候,需要加文字的地方使用 Lorem Ipsum Text 填充可以避免用户因关注文字的意思而分神.Lipsum.com 可以帮你生成制定数目的 Lorem Ipsum 单词.What the