一篇文章告訴你編程的一切(一)

1.從硬件到軟件

? 曾幾何時(shí),電腦的整合、構(gòu)造和銷售業(yè)務(wù)在數(shù)十年時(shí)間里一直都是一棵搖錢樹(shù)氮兵。但后來(lái)利潤(rùn)空越來(lái)越小了。我們看到戴爾(Dell)重新私有化歹鱼,捷威(Gateway)則被弘基(Acer)收購(gòu)泣栈。這兩家世界領(lǐng)先的硬件公司過(guò)去一直不碰軟件,然而弥姻,現(xiàn)在如果你能賣軟件南片,能把屏幕點(diǎn)亮,那你就是在賣可以無(wú)限再生的“無(wú)物”庭敦。無(wú)物的利潤(rùn)空間是很大的——除非另一個(gè)人在以更低的價(jià)錢出售“無(wú)物”疼进,甚至無(wú)償贈(zèng)送。事實(shí)也正是如此秧廉,Linux之類基于自由軟件的系統(tǒng)開(kāi)始蠶食并最終鯨吞服務(wù)器市場(chǎng)伞广,Google Apps等基于Web的免費(fèi)應(yīng)用也漸漸具備了取代桌面軟件的能力。

2.什么事算法疼电?

? ? 人們通常用“算法”(Algorithm)這個(gè)詞來(lái)表示自己對(duì)科技很在行嚼锄。記者喜歡說(shuō)“Facebook的算法”或“Google的算法”,通常都是不準(zhǔn)確的蔽豺,他們?cè)谡f(shuō)的實(shí)際上是“軟件”区丑。 ? ? ? 算法不一定要用到電腦,就像幾何不一定要用電腦一樣。算法是解決問(wèn)題的沧侥,偉大的算法有自己的名字可霎,就像艾茲赫爾·戴克斯特拉(Edsger Dijkstra)算法,它的作用是在網(wǎng)絡(luò)圖中確定最短路徑宴杀。

? ? 一種算法可以被轉(zhuǎn)譯為一個(gè)函數(shù)癣朗,該函數(shù)可以在軟件執(zhí)行時(shí)被調(diào)用。有的算法關(guān)系到圖像處理旺罢,有的是為了提高數(shù)據(jù)存儲(chǔ)效率旷余,有的是為了對(duì)一個(gè)列表中的要素進(jìn)行快速檢索。多數(shù)算法是免費(fèi)的主经,已經(jīng)嵌入到編程語(yǔ)言里荣暮,或者輯錄成庫(kù)庭惜,放在互聯(lián)網(wǎng)上供人下載罩驻。你可以在完全不考慮算法的情況下進(jìn)行大量的編程工作——你可以通過(guò)代碼的剪切、粘貼實(shí)現(xiàn)數(shù)據(jù)存入數(shù)據(jù)庫(kù)护赊,或打印一個(gè)網(wǎng)頁(yè)等操作惠遏。

? ? 戴克斯特拉說(shuō):“計(jì)算機(jī)科學(xué)不是關(guān)于計(jì)算機(jī)的科學(xué),就像天文學(xué)不是關(guān)于望遠(yuǎn)鏡的科學(xué)一樣骏啰〗谒保”

計(jì)算機(jī)科學(xué)有相當(dāng)一部分是在于理解算法的效率——運(yùn)行起來(lái)需要多長(zhǎng)時(shí)間。電腦很快判耕,但是會(huì)被拖慢——比如在一張巨大的地圖上尋找兩點(diǎn)之間的最短路徑透绩。Google、Facebook壁熄、Twitter等公司就是建立在基礎(chǔ)的計(jì)算機(jī)科學(xué)之上的帚豪,非常在意效率,因?yàn)樗鼈兊挠脩舨僮鲾?shù)量十分驚人草丧。它們完全有必要去尋找優(yōu)秀的計(jì)算機(jī)科學(xué)家狸臣,包括很多博士,這些人知道是什么地方在拖累效率昌执。計(jì)算機(jī)科學(xué)家是一個(gè)優(yōu)秀的數(shù)學(xué)家烛亦,而一個(gè)有能力的程序員在數(shù)學(xué)上只要中等水平就夠了。

編程最困難的工作是處理那些無(wú)法計(jì)算的東西懂拾,設(shè)法把不可能的任務(wù)分解成細(xì)小的煤禽、可行的組件,從而營(yíng)造出一種電腦在做事的印象岖赋,實(shí)際上它并沒(méi)有在做呜师,比如和人對(duì)話。這部分內(nèi)容原來(lái)叫做“人工智能研究”贾节,現(xiàn)在可能更多被歸入“機(jī)器學(xué)習(xí)”或“數(shù)據(jù)挖掘”汁汗。

3.標(biāo)準(zhǔn)程序庫(kù)的魅力

要衡量一門語(yǔ)言的優(yōu)劣衷畦,關(guān)鍵不在它如何使用分號(hào);要看每門語(yǔ)言的標(biāo)準(zhǔn)庫(kù)知牌。編程語(yǔ)言是用來(lái)寫(xiě)軟件的軟件祈争。標(biāo)準(zhǔn)庫(kù)是一系列可以重用和再運(yùn)用的預(yù)置軟件。想要高效的利用一門語(yǔ)言角寸,深入理解他的標(biāo)準(zhǔn)庫(kù)是一個(gè)辦法菩混。以Python為代表的許多語(yǔ)言準(zhǔn)備了大量預(yù)先寫(xiě)好的代碼模塊,可以通過(guò)“軟件包管理”工具隨時(shí)下載扁藕。模塊(或庫(kù)沮峡、包)使用來(lái)擴(kuò)展一種編程語(yǔ)言能力范圍的代碼。

圖像處理亿柑、音頻處理邢疙、遇特殊的硬件互動(dòng),與數(shù)據(jù)庫(kù)對(duì)話——這些都有專門的包望薄。但你需要知道怎么找疟游,知道他們叫什么名字。代碼不只是存放在文件里的一堆費(fèi)解的命令痕支。它需要你在腦子里有一張地圖颁虐,知道哪里有好用的庫(kù),哪里的文檔最出色卧须,哪里的論壇最有幫助另绩。如果你不知道這些在哪兒,時(shí)間就會(huì)浪費(fèi)在信息搜索上花嘶,而不是去創(chuàng)造有價(jià)值的新東西笋籽。

4.不同編程語(yǔ)言有什么用?

如果所有的電腦語(yǔ)言功能是一樣的(讓電腦做你想做的事情)察绷,那何必還要挑三揀四的呢干签?原因就好比你會(huì)選擇自行車去運(yùn)冰箱,或是找心理醫(yī)生做身體檢查拆撼。有的工具特別適合完成某種特定的任務(wù)容劳。比如,讓C語(yǔ)言和JAVA語(yǔ)言的程序員合作就很困難闸度,因?yàn)镃和Java使用不同的方式去呈現(xiàn)世界竭贩、構(gòu)建數(shù)據(jù)、與電腦對(duì)話莺禁。團(tuán)隊(duì)里的人全都用一種語(yǔ)言是有好處的留量,在指示電腦去處理數(shù)據(jù)的時(shí)候,大家會(huì)有相同的思路,而一個(gè)大型機(jī)構(gòu)的所有團(tuán)隊(duì)都使用一種語(yǔ)言就沒(méi)有必要了楼熄。

——· 各種語(yǔ)言代表作品 ·——

匯編語(yǔ)言:《吃豆人》忆绰、《蜈蚣》

C: Unix、Linux內(nèi)核可岂、Python错敢、Perl、PHP

C++: Windows缕粹、Google Chrome稚茅、 F-35戰(zhàn)斗機(jī)使用的軟件jets

Python:Instagram、Pinterest平斩、Spotify亚享、You Tube

PHP:Facebook、Wikipedia绘面、WordPress欺税、Drupal

Perl:BuzzFeed

Java:Google、eBay飒货、LinkedIn魄衅、Amazon

Ruby:Twitter峭竣、GitHub塘辅、Groupon、Shoptify

Linux 內(nèi)核是用C寫(xiě)的皆撩。將你打印機(jī)和電腦連接起來(lái)的軟件可能也是C寫(xiě)的扣墩。帶給你Web頁(yè)面的Web服務(wù)器很多是用C寫(xiě)的。它還是一門用來(lái)寫(xiě)其他語(yǔ)言的優(yōu)秀語(yǔ)言——Python扛吞、PHP和Perl等等呻惕。C是用來(lái)創(chuàng)建系統(tǒng)的語(yǔ)言;它在電子計(jì)算中的作用滥比,相當(dāng)于文藝復(fù)興學(xué)者的拉丁文亚脆。

5.面向?qū)ο缶幊蘋(píng)OP——object-oriented programming

面向?qū)ο缶幊陶Z(yǔ)言的原型是Smalltalk,出自施樂(lè)帕羅奧多研究中心(Xerox PARC)的一幫天才之手盲泛,當(dāng)時(shí)這家研究機(jī)構(gòu)正值鼎盛濒持。而C語(yǔ)言是在一個(gè)產(chǎn)業(yè)巨頭AT&T下屬的新澤西研究機(jī)構(gòu)(貝爾實(shí)驗(yàn)室)誕生的,為的是解決手頭的問(wèn)題寺滚,而Smalltalk來(lái)自另一個(gè)產(chǎn)業(yè)巨頭Xerox設(shè)在遙遠(yuǎn)加州的機(jī)構(gòu)柑营,為的是解決未來(lái)的問(wèn)題。因此村视,Smalltalk對(duì)事物的呈現(xiàn)跟C是不一樣的官套。C讓你對(duì)整臺(tái)電腦有一個(gè)概念;Smalltalk讓你對(duì)整個(gè)現(xiàn)實(shí)世界抽象,讓你把世界按類和方法等概念進(jìn)行區(qū)分奶赔。C語(yǔ)言試圖簡(jiǎn)化對(duì)電腦事務(wù)的處理惋嚎,Smalltalk試圖簡(jiǎn)化對(duì)人類事務(wù)的處理。

6.代碼與數(shù)據(jù)

數(shù)據(jù)管理正是編程要來(lái)解決的問(wèn)題≌拘蹋現(xiàn)在到處都是電腦瘸彤,我們不斷在產(chǎn)生數(shù)據(jù),需要更多的編程工作笛钝。這是一個(gè)看不到出路的大難題质况,這就是為什么科技業(yè)的人掙錢這么多。他們不僅在賣可以無(wú)限復(fù)制的“無(wú)物”玻靡,而且由于賣出的的無(wú)限復(fù)制的無(wú)物實(shí)在太多结榄,他們要?jiǎng)?chuàng)造一個(gè)無(wú)限復(fù)制無(wú)物的新門類,專門負(fù)責(zé)處理新產(chǎn)生的數(shù)據(jù)囤捻。這個(gè)門類現(xiàn)在叫做“大數(shù)據(jù)”臼朗。

大型規(guī)模的工作很少能離開(kāi)數(shù)據(jù)庫(kù)。亞馬遜蝎土、谷歌视哑、雅虎、Netflix誊涯、Spotify都擁有強(qiáng)大的數(shù)據(jù)庫(kù)挡毅。最常見(jiàn)的是關(guān)系型數(shù)據(jù)庫(kù),使用一種叫做SQL(Structured Query Language)結(jié)構(gòu)化查詢語(yǔ)句的語(yǔ)言編寫(xiě)的暴构。人們?cè)谡務(wù)摂?shù)據(jù)庫(kù)的時(shí)候經(jīng)常會(huì)用到CRUD這個(gè)縮寫(xiě)跪呈,即創(chuàng)建Create、讀取read取逾、更新update和刪除delete耗绿。關(guān)系型數(shù)據(jù)庫(kù)是在70年代出現(xiàn)的,一只存活到現(xiàn)在砾隅。微軟有Server; IBMyou DB2误阻。SQL甲骨文的商業(yè)企業(yè)數(shù)據(jù)庫(kù)要價(jià)不菲,越來(lái)越多的地方開(kāi)始用自由軟件數(shù)據(jù)庫(kù)晴埂,比如PostgreSQL和MySQL究反。還有一種叫做SQLite的小數(shù)據(jù)庫(kù),由于輕巧邑时、穩(wěn)定和自由的授權(quán)條款奴紧,如今幾乎所有的智能手機(jī)都在用它。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末晶丘,一起剝皮案震驚了整個(gè)濱河市黍氮,隨后出現(xiàn)的幾起案子唐含,更是在濱河造成了極大的恐慌,老刑警劉巖沫浆,帶你破解...
    沈念sama閱讀 211,639評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件捷枯,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡专执,警方通過(guò)查閱死者的電腦和手機(jī)淮捆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)本股,“玉大人攀痊,你說(shuō)我怎么就攤上這事≈粝裕” “怎么了苟径?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,221評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)躬审。 經(jīng)常有香客問(wèn)我棘街,道長(zhǎng),這世上最難降的妖魔是什么承边? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,474評(píng)論 1 283
  • 正文 為了忘掉前任遭殉,我火速辦了婚禮,結(jié)果婚禮上博助,老公的妹妹穿的比我還像新娘险污。我一直安慰自己,他們只是感情好翔始,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,570評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布罗心。 她就那樣靜靜地躺著里伯,像睡著了一般城瞎。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上疾瓮,一...
    開(kāi)封第一講書(shū)人閱讀 49,816評(píng)論 1 290
  • 那天脖镀,我揣著相機(jī)與錄音,去河邊找鬼狼电。 笑死蜒灰,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的肩碟。 我是一名探鬼主播强窖,決...
    沈念sama閱讀 38,957評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼削祈!你這毒婦竟也來(lái)了翅溺?” 一聲冷哼從身側(cè)響起脑漫,我...
    開(kāi)封第一講書(shū)人閱讀 37,718評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎咙崎,沒(méi)想到半個(gè)月后优幸,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,176評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡褪猛,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,511評(píng)論 2 327
  • 正文 我和宋清朗相戀三年网杆,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片伊滋。...
    茶點(diǎn)故事閱讀 38,646評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡碳却,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出笑旺,到底是詐尸還是另有隱情追城,我是刑警寧澤,帶...
    沈念sama閱讀 34,322評(píng)論 4 330
  • 正文 年R本政府宣布燥撞,位于F島的核電站座柱,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏物舒。R本人自食惡果不足惜色洞,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,934評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望冠胯。 院中可真熱鬧火诸,春花似錦、人聲如沸荠察。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,755評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)悉盆。三九已至盯荤,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間焕盟,已是汗流浹背秋秤。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,987評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留脚翘,地道東北人灼卢。 一個(gè)月前我還...
    沈念sama閱讀 46,358評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像来农,于是被迫代替她去往敵國(guó)和親鞋真。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,514評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容