久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

你知道編程為什么薪水那么高么,?

 _王文波 2017-10-05

第1部分——編程是什么?

簡(jiǎn)單的說(shuō),,“編程就是指導(dǎo)計(jì)算機(jī)執(zhí)行任務(wù)的行為”。編程通常被認(rèn)為是編碼,。

那么,,什么是計(jì)算機(jī)程序?計(jì)算機(jī)程序就是計(jì)算機(jī)所執(zhí)行的一系列的指令,。

上面所定義的計(jì)算機(jī)指的是任何能夠執(zhí)行代碼的設(shè)備??赡苁?span>智能手機(jī),、ATM機(jī)、黑莓PI,、服務(wù)器等等,。

一個(gè)關(guān)于編程的好的類比

首先,我們的日常生活是有規(guī)律可尋的,。宇宙的運(yùn)行某種程度上來(lái)說(shuō)是可預(yù)測(cè)的;例如白天黑夜,、季節(jié)變換、日出日落,。人類在早上起床然后去上學(xué)或者上班的循環(huán)里周而復(fù)始,。工作上我們從別人那里獲得指令,比如上級(jí),。再比如烹制一道菜可以分解成有限的幾個(gè)步驟,。

再次,比如當(dāng)我們使用智能手機(jī)的時(shí)候,,有部分代碼運(yùn)行的在后臺(tái)不可見(jiàn)的。再比如在電腦上將鼠標(biāo)從一個(gè)地方移動(dòng)到另一個(gè)地方,,看起來(lái)很簡(jiǎn)單,,但實(shí)際上,這需要運(yùn)行很多行代碼,。又如在Google Docs上輸入文字這樣一個(gè)看似簡(jiǎn)單的操作,,在后臺(tái)也需要運(yùn)行相當(dāng)多的代碼。代碼隨處可見(jiàn),。

計(jì)算機(jī)程序也可以稱為代碼,。不要使用'codes'這個(gè)詞來(lái)稱呼代碼(因?yàn)椤癱ode”只能用單數(shù)形式)。好了,,這不是一堂英語(yǔ)課,,我們言歸正傳。

計(jì)算機(jī)的自然語(yǔ)言

就像人類一樣,,機(jī)器也有屬于他們的自然語(yǔ)言,。但計(jì)算機(jī)無(wú)法理解人類的語(yǔ)言。計(jì)算機(jī)的自然語(yǔ)言實(shí)際上是二進(jìn)制代碼(binary code)——1和0,。它們代表了兩種狀態(tài):有(1)和無(wú)(0),。

它就是電子設(shè)備的自然語(yǔ)言。但是要讓人類用這種二進(jìn)制代碼來(lái)交流的話,,我們一定會(huì)抓狂的!

進(jìn)入程序設(shè)計(jì)語(yǔ)言

為了和這些只講二進(jìn)制語(yǔ)言的機(jī)器交流,,我們需要一種與我們的自然語(yǔ)言(比如英語(yǔ),、法語(yǔ)、阿拉伯語(yǔ)或斯瓦希里語(yǔ),。)比較接近的語(yǔ)言,。程序設(shè)計(jì)語(yǔ)言就是一種和人類語(yǔ)言相近的語(yǔ)言。但是它們跟加結(jié)構(gòu)化而且必須完全學(xué)會(huì)才能夠使用它們,。

程序設(shè)計(jì)語(yǔ)言可能是高級(jí)程序設(shè)計(jì)語(yǔ)言或是低級(jí)程序設(shè)計(jì)語(yǔ)言,。高級(jí)語(yǔ)言與機(jī)器語(yǔ)言的差別要比低級(jí)語(yǔ)言更大。這種“大的差別”通常被稱之為抽象(abstraction),,這一點(diǎn)我們?cè)谶@個(gè)系列中不會(huì)深入討論,。這樣我們就不會(huì)分心(distracted)了:)

計(jì)算機(jī)需要一種方法來(lái)理解我們的語(yǔ)言。為此,,我們需要一個(gè)翻譯器(Translator),。

什么是翻譯器

源代碼是指以特定編程語(yǔ)言編寫的代碼。

翻譯器有責(zé)任將您的源代碼轉(zhuǎn)換為機(jī)器語(yǔ)言,。 這也被稱為二進(jìn)制化,。 記住1和0。 我們可以將二進(jìn)制文件稱為目標(biāo)代碼,,程序或今天的常用詞:應(yīng)用程序,。

翻譯器可以是以下任何一種:

解釋器

編譯器

混合解釋編譯器

匯編器

解釋器

一些語(yǔ)言是被解釋的。 翻譯器逐行處理源代碼,,程序或應(yīng)用程序運(yùn)行每一行代碼,。 這意味著解釋從運(yùn)行代碼開始,直到它遇到錯(cuò)誤,。 然后解釋器停止工作,,報(bào)告錯(cuò)誤。 Python是解釋型編程語(yǔ)言的一個(gè)很好的例子,。

編譯器

編譯器的工作方式跟解釋器不一樣,。編譯器會(huì)通過(guò)編譯過(guò)程將所有源代碼全部轉(zhuǎn)換成為二進(jìn)制文件。然后執(zhí)行該二進(jìn)制文件,。如果源代碼中存在錯(cuò)誤,,在編譯的時(shí)候編譯器會(huì)檢測(cè)出來(lái)并予以標(biāo)示。這將會(huì)中斷編譯過(guò)程,,并且不會(huì)生成二進(jìn)制文件,。

解釋器是一行行的翻譯源代碼并執(zhí)行的,只有當(dāng)前行的源代碼執(zhí)行完后才能進(jìn)行下一行代碼的翻譯,。而編譯器則是一次性將所有源代碼翻譯成一個(gè)文件(二進(jìn)制),,并執(zhí)行這一整個(gè)文件。

還記得計(jì)算機(jī)程序的定義嗎?就是計(jì)算機(jī)所執(zhí)行的一系列的指令。

一個(gè)正在執(zhí)行的程序通常被稱為進(jìn)程,。這樣的程序需要占用計(jì)算機(jī)或智能手機(jī)一定的資源,,如內(nèi)存硬盤空間還有文件系統(tǒng),。正在執(zhí)行的程序也可以說(shuō)成正在運(yùn)行,。

當(dāng)我們執(zhí)行一個(gè)計(jì)算機(jī)程序的時(shí)候,我們使用“運(yùn)行(run)”這個(gè)詞來(lái)描述,。程序運(yùn)行所花的時(shí)間一般被稱為該程序的運(yùn)行時(shí),。

計(jì)算機(jī)程序通常也被叫做應(yīng)用程序(Apps)。我們經(jīng)常會(huì)把程序和它們所運(yùn)行的,、或者設(shè)計(jì)運(yùn)行的平臺(tái)或者環(huán)境聯(lián)系起來(lái),。比如web應(yīng)用程序是運(yùn)行在web瀏覽器上的,谷歌電子表格(Google Spreadsheet)就是一個(gè)例子,。還有移動(dòng)應(yīng)用程序,,是運(yùn)行在智能手機(jī)上的,如CandyCrush,。另外還有桌面應(yīng)用程序,,如Evernote的桌面應(yīng)用。

再說(shuō)一遍,,解釋型源代碼是直接從源文件上執(zhí)行的,。而編譯型源代碼則是先轉(zhuǎn)換成二進(jìn)制文件。之后再執(zhí)行該文件,。編譯型源代碼編譯成功后,,在運(yùn)行時(shí)仍有可能發(fā)生錯(cuò)誤。

混合解釋編譯器

混合解釋編譯器是解釋器和編譯器的組合,。流行的混合編程語(yǔ)言是 Java 。Java 首先將你的源代碼編譯為稱為字節(jié)碼(Bytecode)的中間格式,。

字節(jié)碼然后由稱為虛擬機(jī)的運(yùn)行時(shí)引擎解釋和執(zhí)行,。這使得混合翻譯器能夠在各種操作系統(tǒng)上運(yùn)行字節(jié)碼。

Assemblers 匯編器

匯編器是將底層的匯編語(yǔ)言翻譯成二進(jìn)制,。

對(duì)于這個(gè)系列,,我們只關(guān)注高級(jí)語(yǔ)言。

分析轉(zhuǎn)譯器的一個(gè)好方法就是把它們看成一個(gè)程序,。你需要下載或獲取它們,,將其安裝在計(jì)算機(jī)系統(tǒng)上并了解其基本工作流程。

你現(xiàn)在已經(jīng)不知不覺(jué)進(jìn)入到了編程中,。你需要做好準(zhǔn)備開始寫第一行代碼了,。

你需要從下面這些內(nèi)容開始:

計(jì)算機(jī)系統(tǒng)

這時(shí)候你需要的不是復(fù)雜或昂貴的計(jì)算機(jī),你只需要一臺(tái)工作正常的就行,。

安裝 CLI

我推薦你從這個(gè)速成教程開始學(xué)習(xí)使用 CLI,。

安裝文本編輯器

我們會(huì)在第二部分回到這個(gè)主題

學(xué)習(xí)一門編程語(yǔ)言

在這個(gè)系列中你會(huì)學(xué)習(xí)一些基礎(chǔ),,建立適用于多數(shù)編程語(yǔ)言的基礎(chǔ)知識(shí)。

詢問(wèn)

開始編程需要哪些基本的工具?

你將在 Bash(CLI) 下使用什么命令?

- 檢查你的當(dāng)前目錄

- 進(jìn)入一個(gè)叫 ‘bin’ 的目錄(現(xiàn)在 bin 是當(dāng)前目錄)

- 創(chuàng)建一個(gè)新叫 ‘lib’ 的新目錄

- 創(chuàng)建一個(gè)叫 ‘book.py’ 的文件

- 列出當(dāng)前目錄的所有內(nèi)容

小結(jié)

我們已經(jīng)了解了基本編程知識(shí),,也介紹了翻譯器,。“源碼” 對(duì)你來(lái)說(shuō)不再陌生,。我們將會(huì)在下一部分仔細(xì)分析源碼,。

第 2 部分?——源代碼

現(xiàn)在你已經(jīng)理解了編程的概念,我們來(lái)分析源代碼,。

源代碼基本上就是一個(gè)文件,,就像 Microsoft (.doc) 文件,但略有不同,。它是一個(gè)原始的文本文件,,使用像 Windows 記事本這樣的簡(jiǎn)單編輯器就可以寫出來(lái)?;貞浨懊嬲鹿?jié)中提到過(guò),,你需要解釋器或編輯器來(lái)把源代碼轉(zhuǎn)換為二進(jìn)制。源代碼必須保存在文件中,,這樣可以作為翻譯器的輸入,。

根據(jù)你寫程序的語(yǔ)言,會(huì)將源代碼保存在指定擴(kuò)展名的文件中,。Python 的擴(kuò)展名是 ‘.py’,。Java 的是 ‘.java’。Php 的是 ‘.php’ 還有 PERL 的是 ‘.pl’ 等等,。

你在寫完源代碼之后,,必須使用翻譯器來(lái)運(yùn)行。

Part 3?—?Debugging 調(diào)試

一旦你開始嘗試編寫代碼片段,,或者你正在嘗試基于代碼解決實(shí)際問(wèn)題,,你將很快意識(shí)到,你的程序總是會(huì)有崩潰,、被打斷并停止運(yùn)行的一些時(shí)刻,。

這通常是由錯(cuò)誤引起的,統(tǒng)稱為運(yùn)行時(shí)錯(cuò)誤或異常,。從我們的代碼中查找和刪除錯(cuò)誤的行為被稱為調(diào)試,。通過(guò)更好地調(diào)試代碼,你的程序會(huì)變得更好,。我們不僅調(diào)試我們自己的代碼,,還可以調(diào)試其他程序員編寫的代碼。

開始之前,我們需要能夠識(shí)別源代碼中可能出現(xiàn)的常見(jiàn)錯(cuò)誤,。

語(yǔ)法錯(cuò)誤

這些錯(cuò)誤不會(huì)讓你的源代碼通過(guò)編譯,。它們會(huì)在編譯期或在解釋源碼的時(shí)候被檢測(cè)到。這些錯(cuò)誤也很容易被 Lint 工具檢查到,。我們稍后會(huì)了解更多關(guān)于 Lint 工具的內(nèi)容,。

語(yǔ)法錯(cuò)誤多數(shù)情況下是由于你在編碼時(shí)破壞了對(duì)應(yīng)語(yǔ)言的預(yù)期形式或結(jié)構(gòu)引起的。比如在某個(gè)語(yǔ)句中少寫了反括號(hào),。

語(yǔ)義錯(cuò)誤

語(yǔ)義錯(cuò)誤也被稱為邏輯錯(cuò)誤,,它是所有錯(cuò)誤中最麻煩的一種。語(yǔ)義錯(cuò)誤并不容易檢測(cè),。語(yǔ)義錯(cuò)誤的標(biāo)志之一是程序可以正確運(yùn)行但不能產(chǎn)生預(yù)期的輸出,。

Run-time Errors 運(yùn)行時(shí)錯(cuò)誤

與語(yǔ)義錯(cuò)誤一樣,編譯時(shí)也不會(huì)檢測(cè)到運(yùn)行時(shí)錯(cuò)誤,。與語(yǔ)義錯(cuò)誤不同的是,,運(yùn)行時(shí)錯(cuò)誤會(huì)中斷程序,并阻止其進(jìn)一步執(zhí)行,。它們通常由源代碼中的一些意外計(jì)算結(jié)果引起,。

調(diào)試

以下是幾條關(guān)于如何調(diào)試你代碼的小貼士:

使用 Linters

Linters 是輔助掃描源代碼的工具,用以檢查它們是否符合你所編寫的語(yǔ)言中的預(yù)設(shè)的標(biāo)準(zhǔn),。許多編程語(yǔ)言都有對(duì)應(yīng)的 linters,。一定要找一個(gè)你正在學(xué)習(xí)的語(yǔ)言的版本。

優(yōu)選 IDE,,而不是簡(jiǎn)單的編輯器

你可以選擇為你正在學(xué)習(xí)的語(yǔ)言所設(shè)計(jì)的 IDE,。IDE 代表集成開發(fā)環(huán)境。它們是用于編寫,、調(diào)試,、編譯和運(yùn)行代碼的軟件。他們通常帶有強(qiáng)大的調(diào)試工具包,,支持查看或單步執(zhí)行代碼,。

Jetbrains 創(chuàng)造了很多偉大的 IDE,例如 Webstorm 和 IntelliJ,。IDE 還有 NetBeans, Komodo, Qt editor, Android Studio, XCode (已移植到 Mac 上),,這里僅羅列部分,。.

大聲地朗讀你的代碼

當(dāng)你正在查找語(yǔ)義錯(cuò)誤時(shí),,這通常很有用。在大聲朗讀代碼的同時(shí),,你很可能會(huì)找到錯(cuò)誤位置,。這可能會(huì)讓你靈光乍現(xiàn),發(fā)現(xiàn)錯(cuò)誤所在。

閱讀錯(cuò)誤日志

當(dāng)編譯器給出錯(cuò)誤時(shí),,請(qǐng)確保查看行號(hào)或被標(biāo)記的代碼部分,。

第四部分:基本編碼流程

代碼行,表達(dá)式和語(yǔ)句

所有源代碼的基本單位是 LOC (Line of Code,,代碼行),。最簡(jiǎn)單的程序是一行代碼。LOC 可以是一個(gè)關(guān)鍵字,、一個(gè)符號(hào)或者一個(gè)語(yǔ)句,。只要代碼位于單獨(dú)的一行,它就是 LOC,。

讓我們來(lái)看看一個(gè)簡(jiǎn)單的代碼行:

area = 0.5 * base * height

0.5 * base * height 是一個(gè)表達(dá)式,。一個(gè)表達(dá)式是有運(yùn)算符和運(yùn)算子組成的。在上面給出的例子中,,運(yùn)算子是 0.5,base 和 height,。你可能會(huì)回想到 0.5 是一個(gè)浮點(diǎn)型常量,而 base 和 height 是變量,。運(yùn)算符是 *(乘法運(yùn)算符),。

作為 LOC,表達(dá)式單獨(dú)存在可能并沒(méi)有什么意義,。當(dāng)我們將表達(dá)式的值賦值給另一個(gè)變量時(shí),,比如在上述代碼中的 area,我們將其稱之為語(yǔ)句,。當(dāng)我們將表達(dá)式附加到關(guān)鍵字之后時(shí),,它仍然是一個(gè)聲明,例如:return 0.5 * base * height

在本節(jié)的后續(xù)部分我們將用符號(hào) S 表示一條語(yǔ)句,。在一系列語(yǔ)句或語(yǔ)句集中,,第 n 條語(yǔ)句將使用 Sn 表示,

要快速掌握編程,,一個(gè)很好的起點(diǎn)是理解基本的編碼流程,。基本流程也被稱為控制流,。一旦你理解了這些流程,,你會(huì)發(fā)現(xiàn)他們?cè)谠S多你所學(xué)習(xí)的編程語(yǔ)言中都存在。

請(qǐng)注意,,本文中給出的例子都是非?;A(chǔ)的。你需要參考你正在學(xué)習(xí)的語(yǔ)言,,以深入了解其所提供的關(guān)鍵字,。

此外,,這里介紹的基本流程與編程中的設(shè)計(jì)模式是不同的。首先了解這些基本流程,。 隨著你學(xué)到更多的東西,,你可以在編程中慢慢涉及到常見(jiàn)的設(shè)計(jì)模式

下面是基本的編程流程:

Sequential 順序

Conditional/Branching 條件/分支

Iteration/Repetition/Loops 迭代/重復(fù)/循環(huán)

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

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多