設為首頁| 加入收藏
Email Mobile

業內資訊

首頁 > 業內資訊
軟件開發戰場上,不得不看這10場有意思的對抗

2017-11-10

這個世界是辯證統一的,正如太極所表現的那樣,共存的陰陽兩極既有對抗,又有融合。在現實生活中,共存事物間的對抗也是無處不在。比如,同為冷兵器的矛與盾之間的對抗,是最鋒利的矛厲害還是最堅固的盾厲害?同為佳肴的魚與熊掌之間的對抗,魚和熊掌不可兼得,是代表海味的魚好還是代表山珍的熊掌好?

同樣的,在軟件開發領域,這樣的對抗依然在上演。


開發技術的戰場01

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風暴所帶來的影響。


開發技術的戰場02

MySQL vs.PostgreSQL


兩大開放源代碼數據庫無休止的戰斗已經持續了快20年了。一方面,MySQL因其易于安裝和配置的特性在Web的基礎工作中已經占據了大部分份額。另一方面,PostgreSQL擁有在故障中保護數據的更好機制。現在,兩者都在迅速改善自己不足之處,MySQL提供了改進的事務處理功能,而PostgreSQL簡化了自身的啟動流程。

兩者在很久以前存在著的差異性仍然在影響著今天的戰線,PostgreSQL被認為更“可靠”而MySQL則被認為是更“快速”。這是一種先入為主的思想,正如當今的時髦黑客和討厭Oracle的人常會選擇PostgreSQL那樣,這兩個競爭對手可能還需要另一個20年才能改變這種思想在用戶中的影響。



開發技術的戰場03

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。



開發技術的戰場04

Python vs.Ruby


很久以前,對于軟件來說腳本語言就像萬能膠。如果你需要把大項目粘合在一起,你可以在操作系統中編寫簡單的腳本代碼就可以完成。

在這個過程中的某個時候,那些喜歡擺弄這些小巧語言的人們發現用它們構建大型程序也是非常有用的。當Ruby與Rails框架聯姻之后,這個組合瞬間火爆了——它們把一個復雜的數據庫前端簡化得只有少量幾段代碼了。

與此同時,Python在科學領域建立了它的粉絲俱樂部。它被廣泛運用于每個地方的實驗室,伴隨著統計學理論在企業界各個角落的破殼而出,尖端的Python被認為是獲得商業領域數據科學實驗的動力。

下一代的程序員會被使用空格進行代碼設計的Python的簡潔所吸引么?Ruby的擴張速度會超過Rails么?Python的內置函數比Ruby的“塊”更好?與那些科學家或者Web黑客站在同一陣線看起來是否更酷?或許是積習難改,那些網站的站長現在仍然堅持使用Rails,而科學家們則只對Python的庫情有獨鐘。



開發技術的戰場05

SQL vs.NoSQL


道路的一側是你的先輩們過去就曾使用的數據庫——數據很好的融入表格之中,數據庫執行外部查詢來與表格進行匹配并找到正確的行數。道路的另一側是突然崛起的NoSQL,它注重速度與并行性,當事情可能變得更糟糕的時候它會每隔一段時間發出一些小的警告,數據庫將會從錯誤中回退并重新作出不同的操作。

使用傳統事務保護機制的傳統數據庫“腰帶+吊帶”式的處理方法是你的數據所需要的東西?或者你需要一個在計算機集群中能夠有效的將負載進行均衡擴散的更快更便宜更時髦的工具?穩定性與準確性對銀行業來說固然很重要的,但那些來自網絡上喋喋不休的廢話它也需要么?是否所有行業都需要得到數據科學家那種層次的保護?這些問題通常的答案會是:那些需要絕對穩定性的行業如銀行業和航空業在處理事務時應當使用傳統的SQL數據庫,而其它那些無此特定需求的行業可以選擇使用快速、簡單、可擴展的NoSQL。



開發技術的戰場06

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干凈語法和簡化模型的最佳體驗者所發出的贊美將會成為大眾不可忽略的聲音。



開發技術的戰場07

Chef vs.Puppet


很久以前,公司在后臺擁有很少的服務器,并且安裝新的軟件都非常簡單。后來,隨著云技術的興起,為了保持網站的持續運轉,需要將所有有價值的東西放在集群設備上。這就意味著做N件事情就會訪問N個設備,彼此之間不會產生干擾。Chef和Puppet是為了幫助管理員像流水線一樣配置云設備而出現的兩個工具。

開發運營專家專注于Chef,這個配置管理工具擁有一流的靈活性——能夠讓你用Ruby來編寫創建設備的指令。他們說:“你能夠無償的獲得Ruby的力量。”Puppet也被用于集群的配置,但是用于指定做某事的指令是由類似于JSON一樣的語言發出的。雖然Puppet的幾個新版本支持一點Ruby了,但是基礎語言仍然占據著統治地位。那么,到底是為工作創建自定義語法更好呢還是給予人們完全開放、用途廣泛的語言的權力(或者危險)更好?



開發技術的戰場08

Hudson vs.Jenkins


持續性集成是一個通過自動測試將所有全新代碼部署到存儲庫中的想法。當這個想法獲得很大成功之后,人們開始爭奪它所帶來的利益。

戰場的一邊是Hudson,它是Eclipse基金會正式項目的一部分,是由收購了Sun公司的Oracle所管理的那個分支。他們用一流的企業態度來構建企業需求使用的穩定、嚴肅的工具。而另一邊是Jenkins,它是原Hudson的另外一個分支,現在它是那些眾多從很早就開始玩技術的黑客的家。Jenkins這顆大樹成長非常迅速,它的最新版本基本每個星期就會發布一次。

Hudson和Jenkins的戰場可以看作是開發者世界里更大規模戰場的象征,是堅定奉行謹慎測試、穩固代碼的面向企業理念與更快發展、更快Bug修復、面向更多用戶群體理念之間的對抗。



開發技術的戰場09

MySQL vs.MariaDB


說到由于Oracle收購所引發的戰斗,我們不能不提到MariaDB與MySQL之間的分裂。

當Oracle買下了MySQL后,開源的支持者們開始擔心這個強大的工具會成為Oracle公司私有的賺錢手段。他們的擔心是多余的,但這并不能阻止MySQL創始人之一Monty Widenius另起灶臺。在MariaDB擁護者眼里,MariaDB除了擁有與MySQL同樣的語法和功能,還包含了一些全新特性,甚至存儲引擎運行速度更快一些。

未來的市場將會選擇充滿活力的新事物還是堅持選擇龐大并在這些年里占據著主導地位的數據庫?這個世界會鐘情于矮小且衣衫襤褸的創新者還是龐大穩定而可靠的成功者?我們將拭目以待。



開發技術的戰場10

編譯語言vs.腳本代碼


在即時編譯器和優化器面前,編譯語言和腳本代碼之間的區別并不明顯,但是這點對程序員們來說仍然很重要。一種是代碼邏輯性更強,需要反復揣摩,優化,更接近于底層機器邏輯處理的語言;另一種是開發更加直觀容易,甚至可讓計算機在代碼在運行時修改自身代碼的語言。

前者的代表都是一些傳統的語言,如C和Java,它們都擁有精心設計的開發套件。而后者的代表都是一些結構簡單的語言,如Python、Ruby和JavaScript,它們能夠在文本編輯器中創建并可隨時放入小型運行環境中進行解譯。對于解決更加復雜的問題,它們擁有混合的解決方案,如Groovy,這是一種腳本編譯混合類語言,它能夠運行在Java虛擬機上,而它自身是一個能夠進行大量實時優化的工具。編譯語言與腳本語言的區別正在慢慢模糊,但是這仍然阻止不了人們對于復雜的編譯程序工作是否真的值得去做的爭論。


皇冠篮球比分网 福建11选5技巧稳赚 六合图库助手 山东群英会一天多少期 黑龙江11选5当前遗漏 江苏快3赌注下载 江西多乐彩今天开奖号 正规赛车北京pk10官网 电竞对冲套利 6场半全场投注技巧 1998彩票官方网站-点击登陆 ag电子竞技俱乐部报名 河南快3推荐跨度 北京时时彩计划群7码 秒速时时彩计划免费 华东15选5开奖结果走势图百度乐彩 7星彩所有开奖结果