新生大學(xué)陳鵠:編程是什么亡呵?我要學(xué)嗎?

?

很多人覺得編程是很高端神秘的事情硫戈,覺得自己可能學(xué)不來锰什。但是了解到程序員的工資比較高,所以又蠢蠢欲動,想進(jìn)入這個領(lǐng)域汁胆。那么梭姓,在回答這個問題前,我們先了解一下什么是編程吧嫩码。

*什么是編程*

編程誉尖,也叫程序設(shè)計,其實就是用編程語言處理數(shù)據(jù)铸题,以達(dá)到你想要的效果铡恕。有一本書的名字很清楚地表達(dá)了這個觀點(diǎn)。

Algorithms + Data Structures = Programs

算法 + 數(shù)據(jù)結(jié)構(gòu) = 程序

*什么是數(shù)據(jù)結(jié)構(gòu)*

數(shù)據(jù)結(jié)構(gòu)其實就是數(shù)據(jù)存儲的方式丢间。我們不妨用下面幾個生活中的例子來理解探熔。

地鐵站X光機(jī)上的一件件行李

行李是排成一排,按順序進(jìn)入 X 光機(jī)處理的烘挫。排最前面的诀艰,先處理。最后進(jìn)的饮六,最后處理其垄。如果把行李看作是數(shù)據(jù),這種數(shù)據(jù)結(jié)構(gòu)其實是隊列卤橄。隊列的特點(diǎn)是先進(jìn)先出绿满。

超市里疊在一起的一箱箱牛奶:疊在一起的箱子,最開始放置的肯定是最下面的那個虽风,然后一箱一箱往上壘棒口。要拿出來的時候,當(dāng)然是先拿最上面的辜膝,最下面的最后才拿无牵。這種結(jié)構(gòu)就是棧。棧的特點(diǎn)是先進(jìn)后出厂抖。

電腦的文件夾:文件夾可以包含有子文件夾和文件茎毁,子文件夾又可以再包含下一層的文件夾和文件。這個結(jié)構(gòu)可以理解為樹型結(jié)構(gòu)忱辅。文件是樹的葉子節(jié)點(diǎn)七蜘,子文件夾可以是樹的分支,也可以是葉子墙懂。樹的特點(diǎn)是分支和層級關(guān)系橡卤。

*什么是算法*

算法就是對數(shù)據(jù)進(jìn)行處理的方法。

從數(shù)據(jù)層面看损搬,結(jié)構(gòu)不同一般需要不同的處理方式碧库。從處理效率看柜与,對同一種數(shù)據(jù)結(jié)構(gòu),也可以有多種不同的處理方式嵌灰。有些算法弄匕,可能要處理的數(shù)據(jù)量越大,時間就會成倍增加沽瞭。有些卻無論數(shù)據(jù)多大迁匠,時間都基本恒定。舉一個例子:

設(shè)你買了一個圓柱型的水果軟糖驹溃,里面有 9 粒糖果城丧。如果它的包裝開口是在某一邊,你需要拿第 5 粒吠架,那么你就必須先把前面 4 粒拿出來芙贫,才能拿到第

5 粒搂鲫。而且你想拿的糖果越在后面傍药,花費(fèi)時間就越多。但是魂仍,假設(shè)有一種包裝是橫著把圓柱形打開(結(jié)構(gòu)不同了)拐辽,你一次可以看到和拿到 9

粒糖果。那么無論你拿哪一粒擦酌,花費(fèi)的時間都是一樣的俱诸。

*在電腦里是怎樣的?*

假設(shè)我把上面的糖果問題抽象到計算機(jī)里面赊舶,是什么樣子的呢睁搭?下面用一段 JavaScript 代碼來模擬吧。(懂編程的朋友笼平,別吐槽順序取的代碼园骆,我知道可以按位置,這里只是說明一下寓调。)

function showMeTheCandy(candy) { ? ?console.log(candy) ?} ?// 排成列锌唾,順序取 ?var candy = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I'] // 我有9粒字母糖果 ?var toPickCandyLocation = 5 // 我要取的糖果是第5粒 ?var currentCandyLocation = 1 // 現(xiàn)在我要開始取的是第1粒 ?var candyPicked = null // 我取的糖果要放這,但現(xiàn)在還不存在 ?while (currentCandyLocation <= 5) { // 當(dāng)我要取的糖果還不是第5粒的話夺英,重復(fù)下面的事情 ? ?candyPicked = candy.shift() // 從最前面取1粒 ? ?currentCandyLocation = currentCandyLocation + 1 // 挪到下一個位置 ?} ?showMeTheCandy(candyPicked) // 看看拿到的糖果是什么字母 ?// -> 'E' ?// 做成特定的晌涕,可按位置/編號取的結(jié)構(gòu) ?var candy = { ? ?'1': 'A', ? ?'2': 'B', ? ?'3': 'C', ? ?'4': 'D', ? ?'5': 'E', ? ?'6': 'F', ? ?'7': 'G', ? ?'8': 'H', ? ?'9': 'I', ?} ?showMeTheCandy(candy['9']) ?// -> 'E'

從上面可以看到,同樣的數(shù)據(jù)痛悯,可以按照不同的結(jié)構(gòu)來存放余黎。不同的處理邏輯/算法,效率不同载萌。所以惧财,從這種角度來看亲族,學(xué)習(xí)編程和程序設(shè)計,是學(xué)會抽象可缚,學(xué)會如何把現(xiàn)實問題霎迫,在計算機(jī)里面表現(xiàn)出來。還有數(shù)據(jù)處理帘靡。

從另一種角度來看知给,編程和程序設(shè)計,就像寫作描姚。從上面第一段順序取數(shù)據(jù)的代碼看涩赢,我就像寫作一樣。我在用計算機(jī)能理解的語言轩勘,寫操作指引出來筒扒。一個好的程序員,寫的代碼绊寻,一定像好文章那樣容易理解花墩。不同的語言,指令有點(diǎn)不同澄步,但差不太遠(yuǎn)冰蘑。所以學(xué)會一種語言,再學(xué)一種難度就沒那么大村缸。

*應(yīng)該不應(yīng)該學(xué)習(xí)編程*

其實編程和程序設(shè)計并不難祠肥,尤其是當(dāng)你能把它和實際問題結(jié)合,理解梯皿〕鹣洌回到最開始的問題,我應(yīng)該學(xué)編程嗎东羹?首先剂桥,問問你自己,你學(xué)編程的目的是什么百姓?

你覺得通過指尖敲擊的指令渊额,就能創(chuàng)造無限可能,這實在是太酷了垒拢。 ?— ?你絕對應(yīng)該學(xué)習(xí)旬迹。

你目前遇到些繁瑣而重復(fù)的事情,想看一下計算機(jī)能否代勞求类。 ?— ?你應(yīng)該嘗試奔垦。

你想找一份工資相對高的工作,不用搬搬抬抬尸疆,還能在辦公室吹空調(diào)椿猎。 ?— ?這也是不錯的選擇惶岭。

你想學(xué)到一種編程語言讓你當(dāng)金飯碗用,拿高工資犯眠。 ?— ?早早死了心算了按灶。

計算機(jī)應(yīng)該是變化越來越快的領(lǐng)域,雖說有不少語言誕生的時間已經(jīng)幾十年筐咧,但是它們也是持續(xù)演化的鸯旁。說不準(zhǔn)你剛學(xué)會沒多久的東西,兩三年后就沒什么人用了量蕊,就像現(xiàn)在的前端框架铺罢。所以,如果你想把程序設(shè)計作為你的職業(yè)残炮,請做好長期持續(xù)學(xué)習(xí)的準(zhǔn)備韭赘。

但是,即便你不需要把它當(dāng)作職業(yè)势就,我認(rèn)為泉瞻,多少具備一些編程的能力,讓計算機(jī)輔助你解決問題蛋勺,提升思考方式和效率瓦灶,真的非常有好處鸠删。送上 Linus 大神的話:

Most

good programmers do programming not because they expect to get paid or

get adulation by the public, but because it is fun to program.

*怎么開始抱完?*

如果你已經(jīng)下定決心要學(xué)習(xí)程序開發(fā)。那怎么開始刃泡?

*從問題出發(fā)*

你想解決什么問題巧娱?處理什么數(shù)據(jù)?最后達(dá)到什么效果烘贴?從事哪個領(lǐng)域禁添?

如說,如果你要處理 Excel桨踪,做各式各樣的報表老翘。或者要從固定格式的 Excel 里面抽取數(shù)據(jù)锻离。那你可能只要學(xué)習(xí) VBA 就可以了铺峭,或者用

JAVA。因為 Excel 這種企業(yè)級的東西汽纠,你用回微軟自家的語言會方便些卫键。企業(yè)級的 JAVA

語言也是不錯的選擇,因為已經(jīng)有很多寫好的工具虱朵,你學(xué)會拿來用就可以了莉炉。但是如果你非要選 Node.js 和 JavaScript

來處理钓账,就真有點(diǎn)作死。

還有絮宁,很多人想學(xué)數(shù)據(jù)分析梆暮,一上來就學(xué)什么 Spark, Hadoop,搞大數(shù)據(jù)绍昂,但我覺得那是不對的惕蹄。只學(xué)會搭建工具環(huán)境,卻不會數(shù)據(jù)分析的基礎(chǔ)治专,難道不是本末倒置嗎卖陵?況且,工具和框架更新?lián)Q代比語言變化得還快张峰,一年后說不定又換新了泪蔫。

數(shù)

據(jù)分析最主要的是有數(shù)據(jù)思維,基本的統(tǒng)計學(xué)知識和數(shù)據(jù)分析的能力喘批。如果你用 Excel, SQL

就能挖掘出數(shù)據(jù)里面的商業(yè)價值撩荣,看到別人看不到的規(guī)律,那就牛了饶深。當(dāng)然你還可以學(xué)習(xí) Python 或者 R

這種最基礎(chǔ)的數(shù)據(jù)分析領(lǐng)域的語言餐曹,因為它們提供豐富的數(shù)據(jù)分析算法和展示工具,讓數(shù)據(jù)分析工作更簡單敌厘。所以台猴,我覺得只有真的具備一定的基礎(chǔ),而且數(shù)據(jù)真的

大到一定程度俱两,你才需要去用那些大數(shù)據(jù)的處理工具饱狂。

Web Application

開發(fā)領(lǐng)域,無論前端后端宪彩,我覺得肯定要學(xué)的是 JavaScript, HTML, CSS休讳。如果你打算在前端發(fā)展,不管你是打算用 jQuery,

AngularJS尿孔,React 或者 VueJS 也好俊柔,原生 JavaScript

都是基礎(chǔ)。即便你想從事后端活合,擁有基本的前端知識雏婶,可以讓你方便和前端溝通合作。后端的語言選擇相對較多芜辕,一般是 Ruby, Node.js,

Python尚骄,PHP, Java。Java 在傳統(tǒng)企業(yè)領(lǐng)域用的比較多侵续,初創(chuàng)公司一般選其它的來起步倔丈。Go, Rust, Clojure

比較新憨闰,用的人相對少一些。

*如何起步*

現(xiàn)在互聯(lián)網(wǎng)如此發(fā)達(dá)需五,書鹉动,視頻,在線教育和練習(xí)編程開發(fā)的資源都相當(dāng)?shù)枚嗪暧剩瑢τ谝粋€稍微有點(diǎn)編程經(jīng)驗的人來說泽示。自學(xué)應(yīng)該完全不是問題,不愁沒有資源蜜氨。但是械筛,對于一個完全是自學(xué)起步,沒有任何編程背景的人來說飒炎,最好找一個靠譜的師傅來指引起步埋哟。

首先,從上面說的問題出發(fā)郎汪,新手是不可能有答案的赤赊。即便在論壇上提問,用什么語言煞赢,什么建議都會有抛计。你可要知道程序員最喜歡討論什么語言,什么框架好照筑。所以有個笑話說吹截,你想讓程序員們吵起來,只要在里面喊一句朦肘,XXX 語言是最好的語言就可以了饭弓。

其次,開始學(xué)習(xí)編程開發(fā)遇到的最大的障礙是搭建環(huán)境媒抠。很多新手都是在最開始的時候就遇到各種環(huán)境問題,導(dǎo)致完全無法跟教程練手咏花,挫敗感太強(qiáng)而放棄趴生。所以,如果有人在身邊指導(dǎo)昏翰,至少先把搭建環(huán)境這關(guān)過了苍匆,后面會順暢很多。

再說棚菊,一個有經(jīng)驗的靠譜的老師浸踩,還可以告訴你學(xué)習(xí)使用某一種語言的最少必要知識,不至于讓你迷失在太多技術(shù)細(xì)節(jié)中统求,真的可以事半功倍检碗。

如果確實身邊和網(wǎng)絡(luò)上找不到這樣的朋友据块,老師,又不舍得花錢去培訓(xùn)班折剃,要如何降低遇到障礙的可能性和提高問題解決效率呢另假?最好選擇 Mac 來開發(fā),學(xué)會如何使用 Google和正確提問怕犁。

最后边篮,無論有沒有老師,學(xué)編程最重要就是:模仿奏甫,模仿戈轿,模仿;練習(xí)阵子,練習(xí)凶杖,練習(xí)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末款筑,一起剝皮案震驚了整個濱河市智蝠,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌奈梳,老刑警劉巖杈湾,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異攘须,居然都是意外死亡漆撞,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進(jìn)店門于宙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來浮驳,“玉大人,你說我怎么就攤上這事捞魁≈粱幔” “怎么了?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵谱俭,是天一觀的道長奉件。 經(jīng)常有香客問我,道長昆著,這世上最難降的妖魔是什么县貌? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮凑懂,結(jié)果婚禮上煤痕,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好摆碉,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布塘匣。 她就那樣靜靜地躺著,像睡著了一般兆解。 火紅的嫁衣襯著肌膚如雪馆铁。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天锅睛,我揣著相機(jī)與錄音埠巨,去河邊找鬼。 笑死现拒,一個胖子當(dāng)著我的面吹牛辣垒,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播印蔬,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼勋桶,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了侥猬?” 一聲冷哼從身側(cè)響起例驹,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎退唠,沒想到半個月后鹃锈,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡瞧预,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年屎债,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片垢油。...
    茶點(diǎn)故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡盆驹,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出滩愁,到底是詐尸還是另有隱情躯喇,我是刑警寧澤,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布惊楼,位于F島的核電站玖瘸,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏檀咙。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一璃诀、第九天 我趴在偏房一處隱蔽的房頂上張望弧可。 院中可真熱鬧,春花似錦、人聲如沸棕诵。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽校套。三九已至价脾,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間笛匙,已是汗流浹背侨把。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留妹孙,地道東北人秋柄。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像蠢正,于是被迫代替她去往敵國和親骇笔。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評論 2 354

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