久久精品精选,精品九九视频,www久久只有这里有精品,亚洲熟女乱色综合一区
    分享

    編程是什么?我要學(xué)嗎?

     汕頭能率 2016-09-01
         
      閱讀時(shí)間
      5 分鐘

        ▲


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

    什么是編程

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

    Algorithms + Data Structures = Programs

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

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

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

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

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

    • 超市里疊在一起的一箱箱牛奶

    疊在一起的箱子,最開始放置的肯定是最下面的那個(gè),然后一箱一箱往上壘。要拿出來的時(shí)候,當(dāng)然是先拿最上面的,最下面的最后才拿。這種結(jié)構(gòu)就是棧。棧的特點(diǎn)是先進(jìn)后出

    • 電腦的文件夾

    文件夾可以包含有子文件夾和文件,子文件夾又可以再包含下一層的文件夾和文件。這個(gè)結(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í)間就會(huì)成倍增加。有些卻無論數(shù)據(jù)多大,時(shí)間都基本恒定。舉一個(gè)例子:

    假設(shè)你買了一個(gè)圓柱型的水果軟糖,里面有 9 粒糖果。如果它的包裝開口是在某一邊,你需要拿第 5 粒,那么你就必須先把前面 4 粒拿出來,才能拿到第 5 粒。而且你想拿的糖果越在后面,花費(fèi)時(shí)間就越多。但是,假設(shè)有一種包裝是橫著把圓柱形打開(結(jié)構(gòu)不同了),你一次可以看到和拿到 9 粒糖果。那么無論你拿哪一粒,花費(fèi)的時(shí)間都是一樣的。

    在電腦里是怎樣的?

    假設(shè)我把上面的糖果問題抽象到計(jì)算機(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 // 挪到下一個(gè)位置  }  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è)計(jì),是學(xué)會(huì)抽象,學(xué)會(huì)如何把現(xiàn)實(shí)問題,在計(jì)算機(jī)里面表現(xiàn)出來。還有數(shù)據(jù)處理

    從另一種角度來看,編程和程序設(shè)計(jì),就像寫作。從上面第一段順序取數(shù)據(jù)的代碼看,我就像寫作一樣。我在用計(jì)算機(jī)能理解的語言,寫操作指引出來。一個(gè)好的程序員,寫的代碼,一定像好文章那樣容易理解。不同的語言,指令有點(diǎn)不同,但差不太遠(yuǎn)。所以學(xué)會(huì)一種語言,再學(xué)一種難度就沒那么大。

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

    其實(shí)編程和程序設(shè)計(jì)并不難,尤其是當(dāng)你能把它和實(shí)際問題結(jié)合,理解。回到最開始的問題,我應(yīng)該學(xué)編程嗎?首先,問問你自己,你學(xué)編程的目的是什么?

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

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

    3. 你想找一份工資相對高的工作,不用搬搬抬抬,還能在辦公室吹空調(diào)。  —  這也是不錯(cuò)的選擇。

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

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

    但是,即便你不需要把它當(dāng)作職業(yè),我認(rèn)為,多少具備一些編程的能力,讓計(jì)算機(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á)到什么效果?從事哪個(gè)領(lǐng)域?

    比如說,如果你要處理 Excel,做各式各樣的報(bào)表。或者要從固定格式的 Excel 里面抽取數(shù)據(jù)。那你可能只要學(xué)習(xí) VBA 就可以了,或者用 JAVA。因?yàn)?Excel 這種企業(yè)級的東西,你用回微軟自家的語言會(huì)方便些。企業(yè)級的 JAVA 語言也是不錯(cuò)的選擇,因?yàn)橐呀?jīng)有很多寫好的工具,你學(xué)會(huì)拿來用就可以了。但是如果你非要選 Node.js 和 JavaScript 來處理,就真有點(diǎn)作死。

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

    數(shù)據(jù)分析最主要的是有數(shù)據(jù)思維,基本的統(tǒng)計(jì)學(xué)知識和數(shù)據(jù)分析的能力。如果你用 Excel, SQL 就能挖掘出數(shù)據(jù)里面的商業(yè)價(jià)值,看到別人看不到的規(guī)律,那就牛了。當(dāng)然你還可以學(xué)習(xí) Python 或者 R 這種最基礎(chǔ)的數(shù)據(jù)分析領(lǐng)域的語言,因?yàn)樗鼈兲峁┴S富的數(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ù)枚啵瑢τ谝粋€(gè)稍微有點(diǎn)編程經(jīng)驗(yàn)的人來說。自學(xué)應(yīng)該完全不是問題,不愁沒有資源。但是,對于一個(gè)完全是自學(xué)起步,沒有任何編程背景的人來說,最好找一個(gè)靠譜的師傅來指引起步

    首先,從上面說的問題出發(fā),新手是不可能有答案的。即便在論壇上提問,用什么語言,什么建議都會(huì)有。你可要知道程序員最喜歡討論什么語言,什么框架好。所以有個(gè)笑話說,你想讓程序員們吵起來,只要在里面喊一句,XXX 語言是最好的語言就可以了。

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

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

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

    最后,無論有沒有老師,學(xué)編程最重要就是:模仿,模仿,模仿;練習(xí),練習(xí),練習(xí)


        ▲


    作者簡介:

      本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
      轉(zhuǎn)藏 分享 獻(xiàn)花(0

      0條評論

      發(fā)表

      請遵守用戶 評論公約

      類似文章 更多

      主站蜘蛛池模板: 日韩女同在线二区三区| 国色天香成人一区二区| 日韩高清亚洲日韩精品一区二区| 亚洲图片自拍偷图区| 久久久亚洲AV成人网站| 亚洲人妻精品一区二区| 国产精品久久国产精品99| 亚洲人妻精品中文字幕| 无码人妻精品一区二区三区蜜桃| 在线精品国产中文字幕| 99久久久国产精品消防器材| 日韩精品无码一区二区视频| 国产免费一区二区三区不卡| 亚洲av无码精品色午夜蛋壳| 99精品视频在线观看婷婷| 97在线视频免费人妻| 国产L精品国产亚洲区在线观看 | 久久综合九色综合欧洲98| 国产欧美日韩VA另类在线播放| 日韩精品中文字幕人妻| 亚洲AV成人中文无码专区| 男女18禁啪啪无遮挡激烈| 人妻少妇精品视频专区| 久久久这里只有精品10| 国产成人啪精品午夜网站| 好爽毛片一区二区三区四| 欧美国产日韩在线三区| 2021国产精品视频网站| 免费看国产美女裸体视频| 国产SM重味一区二区三区 | 国产午夜亚洲精品福利| 亚洲综合欧美色五月俺也去| 人妻少妇偷人无码视频| 欧美激情一区二区三区成人 | 国产娱乐凹凸视觉盛宴在线视频| 又爽又黄又无遮挡的激情视频| 人妻丰满熟AV无码区HD| 一本精品中文字幕在线| 国色天香成人一区二区| 一区二区福利在线视频| 亚州少妇无套内射激情视频|