原創(chuàng)|行業(yè)資訊|編輯:郝浩|2015-04-09 13:15:43.000|閱讀 2657 次
概述:這個世界是辯證統(tǒng)一的,正如太極所表現(xiàn)的那樣,共存的陰陽兩極既有對抗,又有融合。在現(xiàn)實生活中,共存事物間的對抗也是無處不在。本篇文章將講述在軟件開發(fā)領域的10場有意思的對抗。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
這個世界是辯證統(tǒng)一的,正如太極所表現(xiàn)的那樣,共存的陰陽兩極既有對抗,又有融合。在現(xiàn)實生活中,共存事物間的對抗也是無處不在。比如,同為冷兵器的矛與盾之間的對抗,是最鋒利的矛厲害還是最堅固的盾厲害?同為佳肴的魚與熊掌之間的對抗,魚和熊掌不可兼得,是代表海味的魚好還是代表山珍的熊掌好?
同樣的,在軟件開發(fā)領域,這樣的對抗依然在上演。
PHP絲毫不受計算機科學家的待見,卻深受那些只想用一丁點腦力就能完成Web開發(fā)的大眾群體所喜愛。這群人帶來了令人驚嘆的框架,如WordPress、Drupal、Joomla等等。大部分的網(wǎng)站都是基于PHP技術所創(chuàng)建的。
現(xiàn)在,大伙們在技術的選擇上出現(xiàn)了分歧。年輕一代的人開始迷戀Node.js技術了,這是一種由JavaScript編寫的服務器端機制。JavaScript的出現(xiàn),使程序員們發(fā)現(xiàn)自己寫的代碼既能運行在客戶端也能運行在服務器端,自己再也不用學兩種不同的語言了。Node.js擁有自己的特點,但是它所提供的那些功能與最好的PHP堆棧所提供的其實基本一致。
下一代程序員會接受只用JavaScript來簡單編寫的新技術么?或者他們會依靠HTML使代碼更易于嵌入?那些喜歡JavaScript的人幾乎肯定都會選擇Node,而那些使用PHP穩(wěn)定堆棧如WordPress或Drupal來處理重活的人則會抵制Node.js風暴所帶來的影響。
兩大開放源代碼數(shù)據(jù)庫無休止的戰(zhàn)斗已經(jīng)持續(xù)了快20年了。一方面,MySQL因其易于安裝和配置的特性在Web的基礎工作中已經(jīng)占據(jù)了大部分份額。另一方面,PostgreSQL擁有在故障中保護數(shù)據(jù)的更好機制。現(xiàn)在,兩者都在迅速改善自己不足之處,MySQL提供了改進的事務處理功能,而PostgreSQL簡化了自身的啟動流程。
兩者在很久以前存在著的差異性仍然在影響著今天的戰(zhàn)線,PostgreSQL被認為更“可靠”而MySQL則被認為是更“快速”。這是一種先入為主的思想,正如當今的時髦黑客和討厭Oracle的人常會選擇PostgreSQL那樣,這兩個競爭對手可能還需要另一個20年才能改變這種思想在用戶中的影響。
蘋果這些年只用Objective-C來為其進行定制開發(fā),這是一門干凈,混合了C語言的面向對象的編程語言。但是,現(xiàn)在時代變了,Swift提供了一套現(xiàn)代化的語法免除了在蘋果平臺構建代碼的程序員的許多煩惱。當然,那些從小就學習了C語言的人并不介意復雜語法與多文件,但是那些由Python、Ruby甚至是Java入門的人卻對此抱怨頗深。
Swift的整潔結構會抓住蘋果開發(fā)者的心么?Python和Ruby的開發(fā)者會涌向iOS開發(fā)領域并擠掉那些保守的Objective-C程序員的生存空間么? 或者這個世界會被那些Objective-C程序員的可靠驚人效率所征服?蘋果曾公開表示這兩門語言能夠共存,那么新的庫和特性是用Swift還是Objective-C來編寫?開發(fā)者們將會通過熟悉的語言來分成不同的集群,那些喜歡Python或者Java的將會轉到Swift,而從小與C一起長大的將會堅持使用Objective-C。
很久以前,對于軟件來說腳本語言就像萬能膠。如果你需要把大項目粘合在一起,你可以在操作系統(tǒng)中編寫簡單的腳本代碼就可以完成。
在這個過程中的某個時候,那些喜歡擺弄這些小巧語言的人們發(fā)現(xiàn)用它們構建大型程序也是非常有用的。當Ruby與Rails框架聯(lián)姻之后,這個組合瞬間火爆了——它們把一個復雜的數(shù)據(jù)庫前端簡化得只有少量幾段代碼了。
與此同時,Python在科學領域建立了它的粉絲俱樂部。它被廣泛運用于每個地方的實驗室,伴隨著統(tǒng)計學理論在企業(yè)界各個角落的破殼而出,尖端的Python被認為是獲得商業(yè)領域數(shù)據(jù)科學實驗的動力。
下一代的程序員會被使用空格進行代碼設計的Python的簡潔所吸引么?Ruby的擴張速度會超過Rails么?Python的內(nèi)置函數(shù)比Ruby的“塊”更好?與那些科學家或者Web黑客站在同一陣線看起來是否更酷?或許是積習難改,那些網(wǎng)站的站長現(xiàn)在仍然堅持使用Rails,而科學家們則只對Python的庫情有獨鐘。
道路的一側是你的先輩們過去就曾使用的數(shù)據(jù)庫——數(shù)據(jù)很好的融入表格之中,數(shù)據(jù)庫執(zhí)行外部查詢來與表格進行匹配并找到正確的行數(shù)。道路的另一側是突然崛起的NoSQL,它注重速度與并行性,當事情可能變得更糟糕的時候它會每隔一段時間發(fā)出一些小的警告,數(shù)據(jù)庫將會從錯誤中回退并重新作出不同的操作。
使用傳統(tǒng)事務保護機制的傳統(tǒng)數(shù)據(jù)庫“腰帶+吊帶”式的處理方法是你的數(shù)據(jù)所需要的東西?或者你需要一個在計算機集群中能夠有效的將負載進行均衡擴散的更快更便宜更時髦的工具?穩(wěn)定性與準確性對銀行業(yè)來說固然很重要的,但那些來自網(wǎng)絡上喋喋不休的廢話它也需要么?是否所有行業(yè)都需要得到數(shù)據(jù)科學家那種層次的保護?這些問題通常的答案會是:那些需要絕對穩(wěn)定性的行業(yè)如銀行業(yè)和航空業(yè)在處理事務時應當使用傳統(tǒng)的SQL數(shù)據(jù)庫,而其它那些無此特定需求的行業(yè)可以選擇使用快速、簡單、可擴展的NoSQL。
在谷歌這個地方JavaScript也有自己的粉絲,但是你可能還不知道它還常被其它語言不斷替代實現(xiàn)。最早的時候,谷歌推出了GWT(Google Web Toolkit),這是一種聰明的跨平臺編譯器,能夠把Java轉化成JavaScript。但是,如果你曾經(jīng)看到過Gmail或者谷歌其它產(chǎn)品的代碼堆棧,你會發(fā)現(xiàn)它們并不完全是用JavaScript實現(xiàn)的。在稍晚的時候,谷歌創(chuàng)造了Dart和Go。這是兩種可能在未來某天在瀏覽器上完全取代JavaScript的語言。
Dart和Go在各自領域都有其獨特的用處。它們修復了使用JavaScript和瀏覽器堆棧的一些主要突出但是卻不被許多人在意的問題。而由于Node.js的原因,JavaScript在服務器端異常火爆,人們已經(jīng)不再需要其它東西了。
為了掌握絕對的權力,谷歌將面臨著一場與大批曾經(jīng)學習了JavaScript而現(xiàn)在想要用它重寫服務器堆棧的程序員大軍之間的艱苦斗爭。要戰(zhàn)勝習慣是非常困難的,但是那些從早期就深刻體會到Dart和Go干凈語法和簡化模型的最佳體驗者所發(fā)出的贊美將會成為大眾不可忽略的聲音。
很久以前,公司在后臺擁有很少的服務器,并且安裝新的軟件都非常簡單。后來,隨著云技術的興起,為了保持網(wǎng)站的持續(xù)運轉,需要將所有有價值的東西放在集群設備上。這就意味著做N件事情就會訪問N個設備,彼此之間不會產(chǎn)生干擾。Chef和Puppet是為了幫助管理員像流水線一樣配置云設備而出現(xiàn)的兩個工具。
開發(fā)運營專家專注于Chef,這個配置管理工具擁有一流的靈活性——能夠讓你用Ruby來編寫創(chuàng)建設備的指令。他們說:“你能夠無償?shù)墨@得Ruby的力量。”Puppet也被用于集群的配置, 但是用于指定做某事的指令是由類似于JSON一樣的語言發(fā)出的。雖然Puppet的幾個新版本支持一點Ruby了,但是基礎語言仍然占據(jù)著統(tǒng)治地位。那么,到底是為工作創(chuàng)建自定義語法更好呢還是給予人們完全開放、用途廣泛的語言的權力(或者危險)更好?
持續(xù)性集成是一個通過自動測試將所有全新代碼部署到存儲庫中的想法。當這個想法獲得很大成功之后,人們開始爭奪它所帶來的利益。
戰(zhàn)場的一邊是Hudson,它是Eclipse基金會正式項目的一部分,是由收購了Sun公司的Oracle所管理的那個分支。他們用一流的企業(yè)態(tài)度來構建企業(yè)需求使用的穩(wěn)定、嚴肅的工具。而另一邊是Jenkins,它是原Hudson的另外一個分支,現(xiàn)在它是那些眾多從很早就開始玩技術的黑客的家。Jenkins這顆大樹成長非常迅速,它的最新版本基本每個星期就會發(fā)布一次。
Hudson和Jenkins的戰(zhàn)場可以看作是開發(fā)者世界里更大規(guī)模戰(zhàn)場的象征,是堅定奉行謹慎測試、穩(wěn)固代碼的面向企業(yè)理念與更快發(fā)展、更快Bug修復、面向更多用戶群體理念之間的對抗。
說到由于Oracle收購所引發(fā)的戰(zhàn)斗,我們不能不提到MariaDB與MySQL之間的分裂。
當Oracle買下了MySQL后,開源的支持者們開始擔心這個強大的工具會成為Oracle公司私有的賺錢手段。他們的擔心是多余的,但這并不能阻止MySQL創(chuàng)始人之一Monty Widenius另起灶臺。在MariaDB擁護者眼里,MariaDB除了擁有與MySQL同樣的語法和功能,還包含了一些全新特性,甚至存儲引擎運行速度更快一些。
未來的市場將會選擇充滿活力的新事物還是堅持選擇龐大并在這些年里占據(jù)著主導地位的數(shù)據(jù)庫?這個世界會鐘情于矮小且衣衫襤褸的創(chuàng)新者還是龐大穩(wěn)定而可靠的成功者?我們將拭目以待。
在即時編譯器和優(yōu)化器面前,編譯語言和腳本代碼之間的區(qū)別并不明顯,但是這點對程序員們來說仍然很重要。一種是代碼邏輯性更強,需要反復揣摩,優(yōu)化,更接近于底層機器邏輯處理的語言;另一種是開發(fā)更加直觀容易,甚至可讓計算機在代碼在運行時修改自身代碼的語言。
前者的代表都是一些傳統(tǒng)的語言,如C和Java,它們都擁有精心設計的開發(fā)套件。而后者的代表都是一些結構簡單的語言,如Python、Ruby和JavaScript,它們能夠在文本編輯器中創(chuàng)建并可隨時放入小型運行環(huán)境中進行解譯。對于解決更加復雜的問題,它們擁有混合的解決方案,如Groovy,這是一種腳本編譯混合類語言,它能夠運行在Java虛擬機上,而它自身是一個能夠進行大量實時優(yōu)化的工具。編譯語言與腳本語言的區(qū)別正在慢慢模糊,但是這仍然阻止不了人們對于復雜的編譯程序工作是否真的值得去做的爭論。
本文翻譯自 譯者:回憶和感動,轉載請注明:本文轉載自慧都控件網(wǎng)
本站文章除注明轉載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn