软件开发领域的10场有意思的对抗

本贴最后更新于 3300 天前,其中的信息可能已经物是人非

  

      英文原文:10 battles raging for the hearts and minds of developers 

  这个世界是辩证统一的,正如太极所表现的那样,共存的阴阳两极既有对抗,又有融合。在现实生活中,共存事物间的对抗也是无处不在。比如,同为冷兵器的矛与盾之间的对抗,是最锋利的矛厉害还是最坚固的盾厉害?同为佳肴的鱼与熊掌之间的对抗,鱼和熊掌不可兼得,是代表海味的鱼好还是代表山珍的熊掌好?

  同样的,在软件开发领域,这样的对抗依然在上演。

  开发技术的战场之一:PHP vs.Node.js

  PHP 丝毫不受计算机科学家的待见,却深受那些只想用一丁点脑力就能完成 Web 开发的大众群体所喜爱。这群人带来了令人惊叹的框架,如 WordPress、Drupal、Joomla 等等。大部分的网站都是基于 PHP 技术所创建的。

  现在,大伙们在技术的选择上出现了分歧。年轻一代的人开始迷恋 Node.js 技术了,这是一种由 JavaScript 编写的服务器端机制。JavaScript 的出现,使程序员们发现自己写的代码既能运行在客户端也能运行在服务器端,自己再也不用学两种不同的语言了。Node.js 拥有自己的特点,但是它所提供的那些功能与最好的 PHP 堆栈所提供的其实基本一致。

  下一代程序员会接受只用 JavaScript 来简单编写的新技术么?或者他们会依靠 HTML 使代码更易于嵌入?那些喜欢 JavaScript 的人几乎肯定都会选择 Node,而那些使用 PHP 稳定堆栈如 WordPress 或 Drupal 来处理重活的人则会抵制 Node.js 风暴所带来的影响。

  开发技术的战场之二:MySQL vs.PostgreSQL

  两大开放源代码数据库无休止的战斗已经持续了快 20 年了。一方面,MySQL 因其易于安装和配置的特性在 Web 的基础工作中已经占据了大部分份额。另一方面,PostgreSQL 拥有在故障中保护数据的更好机制。现在,两者都在迅速改善自己不足之处,MySQL 提供了改进的事务处理功能,而 PostgreSQL 简化了自身的启动流程。

  两者在很久以前存在着的差异性仍然在影响着今天的战线,PostgreSQL 被认为更“可靠”而 MySQL 则被认为是更“快速”。这是一种先入为主的思想,正如当今的时髦黑客和讨厌 Oracle 的人常会选择 PostgreSQL 那样,这两个竞争对手可能还需要另一个 20 年才能改变这种思想在用户中的影响。

  开发技术的战场之三:Swift vs.Objective-C

  苹果这些年只用 Objective-C 来为其进行定制开发,这是一门干净,混合了C语言的面向对象的编程语言。但是,现在时代变了,Swift 提供了一套现代化的语法免除了在苹果平台构建代码的程序员的许多烦恼。当然,那些从小就学习了C语言的人并不介意复杂语法与多文件,但是那些由 Python、Ruby 甚至是 Java 入门的人却对此抱怨颇深。

  Swift 的整洁结构会抓住苹果开发者的心么?Python 和 Ruby 的开发者会涌向 iOS 开发领域并挤掉那些保守的 Objective-C 程序员的生存空间么? 或者这个世界会被那些 Objective-C 程序员的可靠惊人效率所征服?苹果曾公开表示这两门语言能够共存,那么新的库和特性是用 Swift 还是 Objective-C 来编写?开发者们将会通过熟悉的语言来分成不同的集群,那些喜欢 Python 或者 Java 的将会转到 Swift,而从小与C一起长大的将会坚持使用 Objective-C。

  开发技术的战场之四:Python vs.Ruby

  很久以前,对于软件来说脚本语言就像万能胶。如果你需要把大项目粘合在一起,你可以在操作系统中编写简单的脚本代码就可以完成。

  在这个过程中的某个时候,那些喜欢摆弄这些小巧语言的人们发现用它们构建大型程序也是非常有用的。当 Ruby 与 Rails 框架联姻之后,这个组合瞬间火爆了——它们把一个复杂的数据库前端简化得只有少量几段代码了。

  与此同时,Python 在科学领域建立了它的粉丝俱乐部。它被广泛运用于每个地方的实验室,伴随着统计学理论在企业界各个角落的破壳而出,尖端的 Python 被认为是获得商业领域数据科学实验的动力。

  下一代的程序员会被使用空格进行代码设计的 Python 的简洁所吸引么?Ruby 的扩张速度会超过 Rails 么?Python 的内置函数比 Ruby 的“块”更好?与那些科学家或者 Web 黑客站在同一阵线看起来是否更酷?或许是积习难改,那些网站的站长现在仍然坚持使用 Rails,而科学家们则只对 Python 的库情有独钟。

  开发技术的战场之五:SQL vs.NoSQL

  道路的一侧是你的先辈们过去就曾使用的数据库——数据很好的融入表格之中,数据库执行外部查询来与表格进行匹配并找到正确的行数。道路的另一侧是突然崛起的 NoSQL,它注重速度与并行性,当事情可能变得更糟糕的时候它会每隔一段时间发出一些小的警告,数据库将会从错误中回退并重新作出不同的操作。

  使用传统事务保护机制的传统数据库“腰带+吊带”式的处理方法是你的数据所需要的东西?或者你需要一个在计算机集群中能够有效的将负载进行均衡扩散的更快更便宜更时髦的工具?稳定性与准确性对银行业来说固然很重要的,但那些来自网络上喋喋不休的废话它也需要么?是否所有行业都需要得到数据科学家那种层次的保护?这些问题通常的答案会是:那些需要绝对稳定性的行业如银行业和航空业在处理事务时应当使用传统的 SQL 数据库,而其它那些无此特定需求的行业可以选择使用快速、简单、可扩展的 NoSQL。

  开发技术的战场之六:JavaScript vs.Dart 和 Go (或者说与谷歌本身的对抗)

  在谷歌这个地方 JavaScript 也有自己的粉丝,但是你可能还不知道它还常被其它语言不断替代实现。最早的时候,谷歌推出了 GWT (Google Web Toolkit),这是一种聪明的跨平台编译器,能够把 Java 转化成 JavaScript。但是,如果你曾经看到过 Gmail 或者谷歌其它产品的代码堆栈,你会发现它们并不完全是用 JavaScript 实现的。在稍晚的时候,谷歌创造了 Dart 和 Go。这是两种可能在未来某天在浏览器上完全取代 JavaScript 的语言。

  Dart 和 Go 在各自领域都有其独特的用处。它们修复了使用 JavaScript 和浏览器堆栈的一些主要突出但是却不被许多人在意的问题。而由于 Node.js 的原因,JavaScript 在服务器端异常火爆,人们已经不再需要其它东西了。

  为了掌握绝对的权力,谷歌将面临着一场与大批曾经学习了 JavaScript 而现在想要用它重写服务器堆栈的程序员大军之间的艰苦斗争。要战胜习惯是非常困难的,但是那些从早期就深刻体会到 Dart 和 Go 干净语法和简化模型的最佳体验者所发出的赞美将会成为大众不可忽略的声音。

  开发技术的战场之七:Chef vs.Puppet

  很久以前,公司在后台拥有很少的服务器,并且安装新的软件都非常简单。后来,随着云技术的兴起,为了保持网站的持续运转,需要将所有有价值的东西放在集群设备上。这就意味着做N件事情就会访问N个设备,彼此之间不会产生干扰。Chef 和 Puppet 是为了帮助管理员像流水线一样配置云设备而出现的两个工具。

  开发运营专家专注于 Chef,这个配置管理工具拥有一流的灵活性——能够让你用 Ruby 来编写创建设备的指令。他们说:“你能够无偿的获得 Ruby 的力量。”Puppet 也被用于集群的配置, 但是用于指定做某事的指令是由类似于 JSON 一样的语言发出的。虽然 Puppet 的几个新版本支持一点 Ruby 了,但是基础语言仍然占据着统治地位。那么,到底是为工作创建自定义语法更好呢还是给予人们完全开放、用途广泛的语言的权力(或者危险)更好?

  开发技术的战场之八:Hudson vs.Jenkins

  持续性集成是一个通过自动测试将所有全新代码部署到存储库中的想法。当这个想法获得很大成功之后,人们开始争夺它所带来的利益。

  战场的一边是 Hudson,它是 Eclipse 基金会正式项目的一部分,是由收购了 Sun 公司的 Oracle 所管理的那个分支。他们用一流的企业态度来构建企业需求使用的稳定、严肃的工具。而另一边是 Jenkins,它是原 Hudson 的另外一个分支,现在它是那些众多从很早就开始玩技术的黑客的家。Jenkins 这颗大树成长非常迅速,它的最新版本基本每个星期就会发布一次。

  Hudson 和 Jenkins 的战场可以看作是开发者世界里更大规模战场的象征,是坚定奉行谨慎测试、稳固代码的面向企业理念与更快发展、更快 Bug 修复、面向更多用户群体理念之间的对抗。

  开发技术的战场之九:MySQL vs.MariaDB

  说到由于 Oracle 收购所引发的战斗,我们不能不提到 MariaDB 与 MySQL 之间的分裂。

  当 Oracle 买下了 MySQL 后,开源的支持者们开始担心这个强大的工具会成为 Oracle 公司私有的赚钱手段。他们的担心是多余的,但这并不能阻止 MySQL 创始人之一 Monty Widenius 另起灶台。在 MariaDB 拥护者眼里,MariaDB 除了拥有与 MySQL 同样的语法和功能,还包含了一些全新特性,甚至存储引擎运行速度更快一些。

  未来的市场将会选择充满活力的新事物还是坚持选择庞大并在这些年里占据着主导地位的数据库?这个世界会钟情于矮小且衣衫褴褛的创新者还是庞大稳定而可靠的成功者?我们将拭目以待。

  开发技术的战场之十:编译语言 vs. 脚本代码

  在即时编译器和优化器面前,编译语言和脚本代码之间的区别并不明显,但是这点对程序员们来说仍然很重要。一种是代码逻辑性更强,需要反复揣摩,优化,更接近于底层机器逻辑处理的语言;另一种是开发更加直观容易,甚至可让计算机在代码在运行时修改自身代码的语言。

  前者的代表都是一些传统的语言,如C和 Java,它们都拥有精心设计的开发套件。而后者的代表都是一些结构简单的语言,如 Python、Ruby 和 JavaScript,它们能够在文本编辑器中创建并可随时放入小型运行环境中进行解译。对于解决更加复杂的问题,它们拥有混合的解决方案,如 Groovy,这是一种脚本编译混合类语言,它能够运行在 Java 虚拟机上,而它自身是一个能够进行大量实时优化的工具。编译语言与脚本语言的区别正在慢慢模糊,但是这仍然阻止不了人们对于复杂的编译程序工作是否真的值得去做的争论。

 

转自:http://news.cnblogs.com/n/518559/

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
Vanessa
我们终此一生,就是要摆脱他人的期待,找到真正的自己。

推荐标签 标签

  • Vim

    Vim 是类 UNIX 系统文本编辑器 Vi 的加强版本,加入了更多特性来帮助编辑源代码。Vim 的部分增强功能包括文件比较(vimdiff)、语法高亮、全面的帮助系统、本地脚本(Vimscript)和便于选择的可视化模式。

    27 引用 • 66 回帖
  • TGIF

    Thank God It's Friday! 感谢老天,总算到星期五啦!

    284 引用 • 4481 回帖 • 654 关注
  • 工具

    子曰:“工欲善其事,必先利其器。”

    275 引用 • 682 回帖
  • 深度学习

    深度学习(Deep Learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。

    40 引用 • 40 回帖 • 2 关注
  • 30Seconds

    📙 前端知识精选集,包含 HTML、CSS、JavaScript、React、Node、安全等方面,每天仅需 30 秒。

    • 精选常见面试题,帮助您准备下一次面试
    • 精选常见交互,帮助您拥有简洁酷炫的站点
    • 精选有用的 React 片段,帮助你获取最佳实践
    • 精选常见代码集,帮助您提高打码效率
    • 整理前端界的最新资讯,邀您一同探索新世界
    488 引用 • 383 回帖 • 5 关注
  • Pipe

    Pipe 是一款小而美的开源博客平台。Pipe 有着非常活跃的社区,可将文章作为帖子推送到社区,来自社区的回帖将作为博客评论进行联动(具体细节请浏览 B3log 构思 - 分布式社区网络)。

    这是一种全新的网络社区体验,让热爱记录和分享的你不再感到孤单!

    131 引用 • 1114 回帖 • 151 关注
  • SendCloud

    SendCloud 由搜狐武汉研发中心孵化的项目,是致力于为开发者提供高质量的触发邮件服务的云端邮件发送平台,为开发者提供便利的 API 接口来调用服务,让邮件准确迅速到达用户收件箱并获得强大的追踪数据。

    2 引用 • 8 回帖 • 439 关注
  • Mac

    Mac 是苹果公司自 1984 年起以“Macintosh”开始开发的个人消费型计算机,如:iMac、Mac mini、Macbook Air、Macbook Pro、Macbook、Mac Pro 等计算机。

    164 引用 • 594 回帖 • 1 关注
  • 笔记

    好记性不如烂笔头。

    304 引用 • 777 回帖
  • 开源

    Open Source, Open Mind, Open Sight, Open Future!

    396 引用 • 3416 回帖
  • Logseq

    Logseq 是一个隐私优先、开源的知识库工具。

    Logseq is a joyful, open-source outliner that works on top of local plain-text Markdown and Org-mode files. Use it to write, organize and share your thoughts, keep your to-do list, and build your own digital garden.

    4 引用 • 55 回帖 • 9 关注
  • B3log

    B3log 是一个开源组织,名字来源于“Bulletin Board Blog”缩写,目标是将独立博客与论坛结合,形成一种新的网络社区体验,详细请看 B3log 构思。目前 B3log 已经开源了多款产品:SymSoloVditor思源笔记

    1083 引用 • 3461 回帖 • 285 关注
  • RYMCU

    RYMCU 致力于打造一个即严谨又活泼、专业又不失有趣,为数百万人服务的开源嵌入式知识学习交流平台。

    4 引用 • 6 回帖 • 40 关注
  • PostgreSQL

    PostgreSQL 是一款功能强大的企业级数据库系统,在 BSD 开源许可证下发布。

    22 引用 • 22 回帖
  • Bootstrap

    Bootstrap 是 Twitter 推出的一个用于前端开发的开源工具包。它由 Twitter 的设计师 Mark Otto 和 Jacob Thornton 合作开发,是一个 CSS / HTML 框架。

    18 引用 • 33 回帖 • 684 关注
  • WebComponents

    Web Components 是 W3C 定义的标准,它给了前端开发者扩展浏览器标签的能力,可以方便地定制可复用组件,更好的进行模块化开发,解放了前端开发者的生产力。

    1 引用 • 25 关注
  • HHKB

    HHKB 是富士通的 Happy Hacking 系列电容键盘。电容键盘即无接点静电电容式键盘(Capacitive Keyboard)。

    5 引用 • 74 回帖 • 407 关注
  • Vue.js

    Vue.js(读音 /vju ː/,类似于 view)是一个构建数据驱动的 Web 界面库。Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。

    261 引用 • 662 回帖
  • etcd

    etcd 是一个分布式、高可用的 key-value 数据存储,专门用于在分布式系统中保存关键数据。

    5 引用 • 26 回帖 • 492 关注
  • JRebel

    JRebel 是一款 Java 虚拟机插件,它使得 Java 程序员能在不进行重部署的情况下,即时看到代码的改变对一个应用程序带来的影响。

    26 引用 • 78 回帖 • 623 关注
  • 微信

    腾讯公司 2011 年 1 月 21 日推出的一款手机通讯软件。用户可以通过摇一摇、搜索号码、扫描二维码等添加好友和关注公众平台,同时可以将自己看到的精彩内容分享到微信朋友圈。

    129 引用 • 793 回帖
  • Webswing

    Webswing 是一个能将任何 Swing 应用通过纯 HTML5 运行在浏览器中的 Web 服务器,详细介绍请看 将 Java Swing 应用变成 Web 应用

    1 引用 • 15 回帖 • 635 关注
  • 大疆创新

    深圳市大疆创新科技有限公司(DJI-Innovations,简称 DJI),成立于 2006 年,是全球领先的无人飞行器控制系统及无人机解决方案的研发和生产商,客户遍布全球 100 多个国家。通过持续的创新,大疆致力于为无人机工业、行业用户以及专业航拍应用提供性能最强、体验最佳的革命性智能飞控产品和解决方案。

    2 引用 • 14 回帖 • 3 关注
  • Python

    Python 是一种面向对象、直译式电脑编程语言,具有近二十年的发展历史,成熟且稳定。它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务。它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用缩进来定义语句块。

    536 引用 • 672 回帖 • 1 关注
  • iOS

    iOS 是由苹果公司开发的移动操作系统,最早于 2007 年 1 月 9 日的 Macworld 大会上公布这个系统,最初是设计给 iPhone 使用的,后来陆续套用到 iPod touch、iPad 以及 Apple TV 等产品上。iOS 与苹果的 Mac OS X 操作系统一样,属于类 Unix 的商业操作系统。

    84 引用 • 139 回帖
  • Ubuntu

    Ubuntu(友帮拓、优般图、乌班图)是一个以桌面应用为主的 Linux 操作系统,其名称来自非洲南部祖鲁语或豪萨语的“ubuntu”一词,意思是“人性”、“我的存在是因为大家的存在”,是非洲传统的一种价值观,类似华人社会的“仁爱”思想。Ubuntu 的目标在于为一般用户提供一个最新的、同时又相当稳定的主要由自由软件构建而成的操作系统。

    123 引用 • 168 回帖
  • DevOps

    DevOps(Development 和 Operations 的组合词)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。

    40 引用 • 24 回帖