激烈的争夺开发者的心和思想

PHP vs. Node, SQL vs. NoSQL,编译vs.脚本——今天定义编程的激烈争论和技术分歧

安全屏蔽保护主程序100314307

无论你认为二元论是与生俱来的还是社会形成的必然产物,二元论定义了我们生活的大部分:共产主义与资本主义。好吃的和甜的。在足球中传球和带球跑。我们看到的每一个地方,一对对情侣都在进行着一场永恒的战斗,这给我们提供了无数的机会,让我们在任何时候都可以通过自己喜欢的那一边来定义自己。

这一点在计算机行业可能更加明显,在这个行业中,技术——争夺我们的心、思想和支票簿——常常根据它们提供的不同解决方案来定义自己。一边是X;另一方面,显然不是x。粉丝们排起了队,嘲弄和戏弄对方。如果没有这些斗争,没有这些伟大的争论和选择,存储库早就合并了,我们也会继续前进,也许会比我们希望的少一点创新。

以下是当今开发者之间最有趣的10场争论。在我们进行的每一个新项目中,我们都面临着构成这些技术差异基础的基本问题。我们喜欢简单性还是正确性?开源还是企业支持?括号或空格吗?就像阴阳一样,这些问题定义了当今企业开发人员所面临的巨大权衡。

开发技术之战1:PHP vs. Node.js

PHP从未受到计算机科学家的喜爱,但却受到了希望为网站添加一点智能的大众的欢迎。这些人给了我们很棒的框架WordPress、Drupal、Joomla等等。Web的大部分是建立在PHP之上的。

现在这个模型出现了裂痕。年轻人迷上了Node。一种用JavaScript编程的服务器端机制。突然之间,程序员可以编写在客户端或服务器上运行的代码。没必要学两种语言。js有它自己的特性,但是已经有一些惊人的框架提供可以与最好的PHP栈媲美的特性。

下一代会接受编写JavaScript的简洁性,并且只接受JavaScript吗?或者他们会坚持在HTML中嵌入代码的便捷性吗?那些喜欢JavaScript的人几乎肯定会转向Node。那些希望使用WordPress或Drupal等PHP平台的稳定栈的用户将会突出Node.js的风暴。

开发技术之战2:MySQL vs. PostgreSQL

这两个伟大的开源数据库已经争斗了近20年,看不到结束的迹象。一方面,MySQL在Web的基本工作负载中占据了很大的份额,部分原因是它易于安装和配置。另一方面,PostgreSQL早就承诺会有一个更好的交易机制来保护数据在出现故障时的安全。随着MySQL现在提供了改进的事务处理能力,PostgreSQL也简化了它的启动障碍,这两者已经相互发展。

旧的分歧仍然定义着今天的战线。PostgreSQL被认为更“可靠”,MySQL被认为更“快速”,但是这些区别是幽灵而不是现实。旧习难改,这两个软件包可能还要再争20年的思想份额,而PostgreSQL最近获得了一些风潮人黑客Oracle的憎恨者也一样。

Dev tech battle No. 3: Swift vs. Objective-C

苹果一直是Objective-C的唯一堡垒,这是一种简洁、精益的C语言和面向对象编程的结合。但时代变了,现在也变了Swift提供了现代语法免去了程序员在为苹果平台编写代码时遇到的许多麻烦。当然,在襁褓中学会了C语言的人并不介意asterixes和多个文件,但是在Python、Ruby、甚至Java上长大的新手会被分散注意力。

斯威夫特干净的结构会吸引苹果开发者的注意吗?Python和Ruby开发人员会涌向iOS,排挤掉老旧的Objective-C黑客吗?或者这个世界会被那些久经考验的Objective-C程序员的惊人效率所主宰吗?新的库和特性是用Swift还是Objective-C编写的?苹果曾公开表示,两者可以共存。因此,开发人员几乎肯定会选择熟悉的集群。那些喜欢Python或Java的人会转向Swift。那些和C一起长大的人会坚持使用Objective-C。

开发技术之战4:Python vs. Ruby

很久以前,脚本语言就像是软件的口香糖。如果你需要把大的程序粘合在一起,你可以在操作系统中编写简单的代码。

渐渐地,喜欢这些小语言的人们开始构建被证明有用的大程序。Ruby在与Rails框架结合后就大爆炸了——这种组合使得只需几行代码就可以将复杂的前端绑定到数据库上。

与此同时,巨蟒剧团在科学界找到了自己的粉丝俱乐部。它现在被广泛应用于各个实验室。随着统计分析在企业世界的每个角落的爆发,尖头Python正随着商业领域的数据科学“实验室”而获得动力。

下一代会不会被简单的Python代码的空白框所吸引?Ruby会扩展到Rails之外吗?Python的内置函数比Ruby的“块”更好吗?与科学家或网络黑客结盟更酷吗?也许由于网络专家们坚持自己的轨道,而科学家们则躲在Python的库中,这条战线已经变得更加坚固了。

开发技术之战5:SQL vs. NoSQL

走廊的一边是你祖父母使用的数据库。数据很好地放入表中,数据库将执行外来查询来匹配这些表并找到正确的行。另一方面是NoSQL的新贵,他们对速度和并行性做出了很大的承诺,但也有一点警告,即每过一段时间,事情就会出错,数据库会返回错误或不一致的答案。

传统数据库和传统交易保护的捆绑方式对您的数据来说是正确的吗?或者您想要一个更快、更便宜、更现代的工具来有效地将负载分散到一个机器集群上?当然,一致性和准确性对于银行来说很重要,但是对于一张满是来自互联网的胡言乱语的表格呢?一切都需要数据科学家提供的最佳保护吗?答案(通常):银行和航空公司等需要绝对一致性的公司使用传统的SQL数据库处理真实的事务。其他人则选择快速、简单、可伸缩的NoSQL。

开发技术之战第6:JavaScript vs. Dart and Go(或者谷歌本身)

JavaScript可能在谷歌的小隔间里有粉丝,但你不会从无休止的替换中知道它。首先是GWT(谷歌Web Toolkit),这是一种聪明的交叉编译器,可以将Java转换成JavaScript。如果您曾经查看过Gmail和其他谷歌产品的代码栈,您就会知道它不是用JavaScript手工制作的。然后谷歌创建飞镖,这两种语言有一天可能会在浏览器中取代JavaScript。

飞镖和飞跑都是心想事成。他们修复了JavaScript和浏览器栈的主要突出问题,但很多人并不关心。多亏了Node.js,服务器上的JavaScript已经爆炸式增长。谁还需要别的东西?

尽管拥有强大的功能,谷歌仍面临着一场艰苦的战斗,因为一群程序员很久以前就学会了JavaScript,现在又想用它重写服务器堆栈。克服惰性是很困难的。但是,也许早期采集者对Dart和Go更干净的语法和简化的模型的赞美之词会变得太过响亮,以至于大众无法忽视。

开发技术之战7:厨师对木偶

很久以前,一家公司的后台只有几台服务器,安装新软件很简单。然后,云爆炸了,每个有价值的网站都运行在需要保持运行的机器集群上。这意味着对N个机器执行N次操作而不会搞砸。厨师和木偶是帮助管理员运行装配线来配置云计算机的两个工具。

致力于Chef的Devops专家支持配置管理工具的灵活性,让您可以编写使用Ruby创建机器的指令。“你可以免费获得Ruby的力量,”他们说。Puppet也配置集群,但是使用类似json的语言指定的指令,专注于做好一件事。虽然Puppet的新版本允许使用一点Ruby,但基本语言仍然占主导地位。是为工作创建自定义语法更好,还是让人们拥有一种完全开放的、通用的语言的能力(和危险)更好?

Dev tech之战第八:Hudson vs Jenkins

持续集成的想法是为了自动测试和部署提交到存储库的所有新代码。当它开始运行良好时,人们开始为它的遗产而争斗。

争斗的一方是Hudson,这个分支正式成为Eclipse Foundation的一部分,由Oracle的许多从Sun继承代码的人运行。他们带来一流的企业态度,为企业打造稳定、严肃的工具。另一边是詹金斯,许多喜欢实验的原始黑客的家。Jenkins树似乎进化得更快,每周都有新版本出现。

Hudson和Jenkins之间的斗争象征着一场在开发者世界中更大的斗争,一场是坚定地致力于仔细的测试和稳定的代码,另一场是更快速地演进特性、更快地修复bug,以及来自广大开发者社区的更多输入。

开发技术之战9:MySQL vs. MariaDB

说到围绕oracle支持的项目所划定的战线,我们不要忘记MariaDB与MySQL之间的分歧。

当Oracle收购MySQL时,开源的粉丝们担心一个建立在强大的专有工具上的公司会带来什么。他们的担心在很大程度上是没有根据的。但这并没有阻止Monty Widenius, MySQL的创始人之一,用一把叉子开始自己的事业。MariaDB提供了与MySQL相同的语法和特性,但是现在它提供了一些新特性和运行更快的存储引擎,至少在MariaDB爱好者的眼中是这样的。

市场是会选择新的、混乱的fork,还是会坚持使用多年来为我们服务的庞大的、占主导地位的代码库?这个世界会选择一小群乌合之众的创新者,还是一家致力于稳定的大公司?

开发技术之战10:编译vs.脚本

编译代码和脚本代码之间的区别不像在即时编译器和优化器出现之前那么明显,但这对程序员来说仍然很重要。他们希望自己的代码被刺激、修改、优化并翻译成简单的机器码吗?或者他们想要一种更随意的方法,即计算机在运行时解释代码,有时允许代码修改自己?

一方面是经典的语言,如C和Java,它们受到精心设计的开发套件的支持。另一种是更简单的脚本语言,如Python、Ruby和JavaScript,可以在文本编辑器中创建并立即推入小型运行时解释器中。更复杂的是,还有像Groovy这样的混合解决方案,它是一种运行在Java虚拟机中的脚本式语言,本身就是一种进行大量运行时优化的工具。也许这种区别正在消失,但这并不能阻止人们争论编译器的精细工作是否真的值得付出这么多努力。

相关文章

这个故事,“为开发者的心和思想而爆发的10场战斗”,最初是由信息世界

加入网络世界社区足球竞猜app软件脸谱网LinkedIn对最重要的话题发表评论。
相关:

版权©2014足球竞彩网下载

工资调查:结果在