这个世界是辩证统一的,正如太极所表现的那样,共存的阴阳两极既有对抗,又有融合。在现实生活中,共存事物间的对抗也是无处不在。比如,同为冷兵器的矛与盾之间的对抗,是最锋利的矛厉害还是最坚固的盾厉害?同为佳肴的鱼与熊掌之间的对抗,鱼和熊掌不可兼得,是代表海味的鱼好还是代表山珍的熊掌好?
同样的,在软件开发领域,这样的对抗依然在上演。
开发技术的战场之一: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虚拟机上,而它自身是一个能够进行大量实时优化的工具。编译语言与脚本语言的区别正在慢慢模糊,但是这仍然阻止不了人们对于复杂的编译程序工作是否真的值得去做的争论。
本文翻译自10 battles raging for the hearts and minds of developers
相关推荐
小东东可以供所有VB程序人员参考,可以自动为自已的小店做推广哦。
【标题】"礼物小软件-超有意思"揭示了一个有趣且具有创新性的软件应用,它可以作为一个独特的礼物赠予他人,或者激发个人创作灵感。这个软件很可能包含互动性、趣味性或个性化定制的功能,使得它不仅是一个实用工具...
这场有意思的面试经历揭示了许多关于程序员面试以及职场沟通的宝贵经验。面试不仅是展示技术能力的舞台,更是展现个人素质和沟通技巧的重要环节。 首先,面试者汤XX展现了良好的准备工作,他在面试前对公司进行了市...
嵌入式软件开发是一个复杂的领域,需要掌握多种编程语言、开发工具和技术。以下是根据给定的文件信息,生成的相关知识点: 1. 嵌入式软件开发Language: * C 编程语言:掌握 C 语言的核心思想和技巧,对 C 语言的...
- **应对措施**:1968年,业界专家们提出采用工程化的方法来开发软件,希望通过借鉴传统工业的成功经验来解决这些问题,从而形成了“软件工程”这一概念。 #### 三、软件工程的基本观念 - **观念核心**:林锐强调,...
【标题】:“电脑软件桌面发泄小工具超级有意思.rar”这一标题揭示了这是一个压缩文件,里面包含了一款有趣的电脑桌面应用,旨在提供一种情绪释放的方式。这类软件通常设计成简单易用,用户可以通过互动来发泄压力或...
恶作剧小软件-用了才知道有意思.rar QQ:284466130 邮件:284466130@qq.com
标题 "收集的一些有意思的项目" 暗示了这个压缩包可能包含了一系列有趣或者创新的编程项目,可能是由个人开发者或小团队创作的。这些项目可能涵盖各种编程语言、技术领域和应用类型,旨在提供学习、探索或启发新思维...
云端软件平台安装包,或许比绿色版软件更有意思的云端软件平台安装包可以尝试下
LABVIEW开发的钢琴控件,非常有意思!
安装 /install 一步一步继续 填写好数据库 不要填错!体验包不打勾! 后台/dede 系统-数据库备份/还原-还原数据 ...要是再不行,就系统-系统参数-把默认风格随便填个数确认一下再换回来一般就可以了。...
今天我们要介绍的就是这样一款软件——“有意思的绘图板1.0”,它凭借其丰富的功能和友好的用户界面,赢得了广大用户的喜爱。 首先,“有意思的绘图板1.0”以其实用性为亮点。这款软件提供了多种绘图工具,包括不同...
7. **文件操作**:读取和写入文本文件,或者处理XML或JSON数据,这些都是日常开发中常见的任务。 8. **多线程**:通过创建并运行多个线程,理解并发执行的概念,比如生产者消费者模型。 每个小程序都可以作为一个...
网上看到的比较有意思的动态打字效果的菜单
3. MVC(Model-View-Controller)架构:此项目可能采用了MVC模式,这是一种常见的软件设计模式,将业务逻辑(Model)、用户界面(View)和数据控制(Controller)分离,使代码更加清晰和易于维护。 4. HTML和CSS:...
用Python实现在微信头像右上角加上红底白字的数字,类似于微信未读信息数量那种提示效果
VB编写的有意思的自恋拍照程序,带有Access数据库,数据库密码请查看USER下的MDB文件,因窗体使用了较多的图片修饰文件,因此整个压缩包看上去比较大,实际上代码也不过10多K,感兴趣的下载研究一下。
C语言是一种强大的、低级的编程语言,以其简洁、高效和灵活性著称,是许多系统级程序和嵌入式软件开发的基础。对于已经掌握了C语言基础知识的开发者来说,深入学习C语言开发小程序能够提升编程技巧,理解程序设计的...
erp沙盘模拟人机对抗软件 很不错的 值得大家分享 挺有意思的 得多多练习
随着社会的发展,京剧脸谱已经超越了舞台,融入了现代生活的各个领域。例如,在动漫、游戏、影视作品中,我们可以看到脸谱元素的创新运用,既保留了传统韵味,又赋予了新的时代气息。此外,脸谱也被广泛应用于时尚...