編程基礎: 基本原理

來源:互聯網
上載者:User

標籤:

一,什麼是編程

究竟什麼是編程?你可能以前聽過類似的詞語。電腦編程是一套指令?這就是問題,這些聲音就像說明就像人類的大腦80%是水。因為你聽到他們,並且然後你看到一個複雜的程式如Photoshop或者Flash高清晰度的視頻或者3D遊戲。

是的,但不能僅僅是一組指令。但他們這些究竟是什嗎?每一個電腦程式是一系列的指令,一組單獨的小命令,一前一後的序列。一個程式可能只包含5個指令,或者5000個,或者500萬個。每一個指令告訴電腦做一件很小但很具體的,

把一個偉大的想法分解成個別的步驟的藝術。最精彩的是每個人都能這麼做,讓我們想象下,你坐在郊區的一個房子裡,等待一個朋友來拜訪你。你的電話響了,就是她,她問你路線,她告訴你她在附近的加油站,你知道那個加油站,

因為你每天就要經過那。所以有個點A到點B的路程,並滴到你的頭裡面,但你馬上知道這條直線不能相通。你必須分解成簡單的部分,這對你來說是自然的事情。因此你開始扣除,你告訴她,首先”向前行駛1公裡後“,“右轉”,然後

在“雲棲路”的“第二個路口”,“右轉”。具體,個別,簡單,清晰的自包含指令。現在你知道順序是至關重要的(vitally),你把這些單獨的指令混淆能得到很多不同的結果。比如先”右轉“,然後”向前行駛1公裡“。順序的不同,會讓她到達

其他不同的地方。這些都是同層級的指令"左轉",“右轉”,“直行”。可以帶你在拐角處,也可以帶你去美國或者世界的某個地方,只是你需要更多的指令。所以編程就可以理解為給電腦方向,把複雜的想法或者複雜任務拆解到更小的個體指令中

並且使用一個程式設計語言寫那些指令。當然如果你沒有編過程,可能不太明白那些指令。你可能只知道右轉,左轉,直行。那些給電腦最基礎的指令到底是什嗎?它們常常是些基礎的東西,就像2個數字相加,螢幕上顯示一個字母,檢查使用者

是否點擊了空格鍵,改變一個單獨像素的顏色。你把足夠的指令串到一起它就能獲得足夠遠。所以你編寫複雜的遊戲或應用程式時候,當你有100個人寫這些指令,一周60個小時,然後相互協同合作,就能很快完成複雜的產品了。電腦處理指示是非常快的,

電腦會準備的執行指令,但指令是你告訴它的,如果出來的效果和你想要的效果不一樣就表示你的指令有錯誤或者只是順序上的錯誤。在程式設計語言中,我們通過statement來使用那些指令,statement就像中文和英語中的句子一樣,使用單詞,數字,標點(Punctuation)來表達

一個想法。大多數程式設計語言的statement是非常短的,就只有幾個單詞。具體是什麼單詞,就根據你使用的程式設計語言不同而不同,一些語言在statement結束後使用分號(semicolon)來作為結束,就像平常句子中的一個句號(period)。一些語言不需要分號結束,只

需要換行即可。一些語言全部是大寫字母,一些語言全部是小寫字母,一些不在意大小寫。現在理解每個語言的規則和文法。所以編程是把你的想法分解成一些指令塊,並且知道如何使用程式設計語言寫那些指令塊,注意正確的順序,正確的文法。

二,什麼是程式設計語言

到目前為止,已經有數百種程式設計語言,但在任何給定時間內,有十幾種比較流行的語言,流行的語言表示被用於許多當前的軟體,大量開發人員使用的語言,並且有活躍的社區(community),某種語言顯著(significant)的就業市場。隨著時間的流逝

(as the years go by),以前流行的語言可能會沒落或者更新,但時間會比較慢,大多數程式員在職業生涯(career)中學習和使用多種語言,一旦你瞭解基礎知識,學習額外的語言是非常容易的,稍後(a little later),我們會更深入當前流行的語言。

但如果是你新手,你可能會思考,為什麼有什麼多語言,不能都使用最基礎的電腦語言嗎。其實(actually)這個語言是存在的,CPU的晶片中央處理單元,是不理解目前那些流行的語言的。我們可以非正式(informally)的說,當我們寫代碼編程時,

電腦能直接理解,但事實一般不是這樣。那些是晶片理解的機器碼或者叫機器語言,那些指令直接運行在電腦硬體中。那為什麼我們不自己寫機器碼,因為這幾乎是不可能的,這些數位操作,微小的指令,工作於很小的記憶體塊中。即使你能寫它,但

其他人不一定會讀。這是為機器而不是為人,因為機器碼工作在CPU層級,不同的CPU型號對應不同的機器碼。在機器碼寫一個完整的程式就像用鑰匙在一座山中挖通隧道(digging a tunnel)一樣,理論上(theoretically)可能,但會很長很乏味(tedious)。

因此不要去嘗試。所以目前大多數流行的語言實際上是一個折中(compromise),它們是被發明(invented)的語言,就像一座橋來串連機器硬體和人類眾生。現在有些語言其實相當靠近機器語言,最接近的被叫做(assembly language),大體上靠近

機器語言,這寫起來是很困難的,並且你必須識別實際的硬體。所以被稱為低級語言,現在讓我看看被成為進階語言的程式設計語言,進階語言基本上不用讓你關心硬體,並且寫起來更容易,甚至能跨平台。但這些語言運行起來會相對慢一點,因為這些進階語言

不直接在CPU層級最佳化。話說回來(having said that)無論我們使用哪種語言,就會在它執行前被轉換成機器碼,不管我們寫java,C++,ruby,python的源碼,最後都會被轉換成機器碼在電腦上運行。寫原始碼需要知道三點:

1.怎麼寫代碼,字面上(literally)其實就是打字

2.理解原始碼如何被轉換成機器碼

3.怎麼運行它,怎麼執行我們的程式

三,寫原始碼

原始碼寫在一個空白文本中,你能開啟一個簡單的文字編輯器如Notepad或TextEdit。注意每個語言的原始碼副檔名是不同的,比如java下是.java,javascript下是.js她們都不是.txt這樣的副檔名。很多語言可以使用同樣的statement。比如

print("Hello World") ALGOL68/Python3/Lua。有些需要嚇人的(intimidating)大括弧(curly brace),和怪異神秘的(weird esoteric)的關鍵字,比如java ,C++, C#。可能你記得多種語言的寫法,並且一個個敲出來。但當你熟練後

我們需要一種更搞笑的方式來書寫代碼,這時候程式員的文字編輯器出現了,他方便你寫代碼,更進階的如IDE,它提供的功能更複雜,有些代碼能自動產生。當然有些是免費的,有些是收費的。像行號,功能更強大的尋找和替換這典型的功能。

他們往往有顏色編碼。這是不一樣的格式。彩色編碼是自動發生的,它可以協助你閱讀和識別語言的不同部分。他們往往有語法檢查,有點像在一個文文書處理器的拼字檢查。如果它發現了你代碼的問題,語法檢查將讓你知道是什麼問題。一些文字編輯器是面向

特定的語言,說的不僅僅是Java,以及一些其他人可能有幾十個語言的支援。現在,如果你做任何web開發你可能會發現,你所選擇的web開發應用也是一個可用的程式員的文字編輯器。整合式開發環境的例子是蘋果的Xcode或微軟的Visual Studio和跨平台的Eclipse。

現在,在這個過程中,我們是不會擔心的IDE。雖然IDE不是寫代碼必須的工具,但你最終很可能會想要的。然而,一旦我們開始寫代碼了,接下來需要瞭解如何將其轉化為機器代碼,以便它可以在電腦本身上運行。

四,編譯型語言和解釋型語言

因此,我們需要讓我們的原始碼轉換成機器碼,才可以運行,有這樣的兩個主要途徑:什麼叫做編譯原始碼的,什麼是所謂的解釋原始碼。現在,幸運的是,這不是一個很大的決定,你不用擔心。但它的差異是值得瞭解的。因此,讓我們有一個簡單的情境。比方說,

你和我。你有你的電腦,我有我的電腦,你會寫一個要我啟動並執行程式。現在,用一個編譯語言,你寫完原始碼後會發生什麼事?你有一個叫做編譯器的程式將通過該原始碼來建立一個包含機器代碼的單獨檔案,你只要給我那個檔案。這個最終的結果是有時被稱為一個可

檔案,因為我可以直接執行它。我現在可以運行你的程式。你不需要給我原始碼,我從來沒有看到它。現在,用另一方面解釋型語言,你不用事先編譯原始碼。你只要給我一個副本我就可以運行了。所以,我需要我的機器來解釋它,來運行你的程式。現在,解譯器不同

於編譯器。我們可以把它看作是通過你的原始碼並一行一行當場處理它。它不會將其儲存為一個單獨的機器代碼檔案。現在,您已經使用解釋語言,即使你不知道它。每當你看著一個使用JavaScript的網頁,這是已經發生。JavaScript已發送到您在網上以及一堆其他文

件,如網頁和映像,它已經作為原始碼發送到你的機器,你的網頁瀏覽器剛剛解釋了JavaScript,因此它可以運行該代碼。那麼,哪一個是最好的?嗯,他們都有自己的好和他們的優缺點。編譯的代碼的好處。一旦它的編譯,這是馬上就可以運行,你可以將其發送給

100或1,000或100,000不同的人。這是蓄勢待發。它可以用於CPU進行最佳化,所以它實際上可以更快,你沒有給你的原始碼發送給大家,這可能是一件好事。然而,缺點是如果我在Windows PC上編譯它,該可執行檔將無法在Mac上工作。事實上,它往往需要單獨

編譯為不同類型的CPU,即使在同一個平台上,當你寫代碼是編譯型的,你必須在每一個的步驟測試你的程式。現在,有瞭解釋型的代碼,一個很大的好處是我真的不關心在另一端是什麼樣的機器,因為我們不提供機器代碼。我們只是發送原始碼,我們讓對方照顧它。

因此它可以是更輕便,在各種平台上也更加靈活。這也是一個比較容易測試,因為你唯寫你的原始碼,然後運行它的時候,讓解譯器把它轉換。沒有在兩者之間編譯步驟。它出問題時更容易調試,因為你總是可以訪問所有的原始碼。然而,它有它的兩面性,因

為大家都需要他們的機器上有一個解譯器他們的機器上的語言。它會慢一些,因為你必須在每次程式運行時解釋它,而原始碼是公開的,因為你把它發送到需要運行該程式的人的機器上。現在,有關於編譯語言和解釋型語言的好東西,是兩者兼而有之的第三條道路。編

譯模型,所有的工作就完成了前期,運行快,但就是不靈活。解釋模型,所有的工作就完成了在接收端,很靈活,但可以稍微慢一點。所以像java這種語言就是同時有編譯和解釋性的特點,本地編譯,跨平台運行。因此,舉例來說,C,C + +和Objective-C,這些通

常是編譯語言,所以你需要一個編譯器。編譯器可以免費下載,但它們通常內建在整合式開發環境中的應用。現在,像PHP和JavaScript,這樣是為解釋語言,以及如Java,C#,VB.NET和Python(Python是一個解釋型的語言。但是為了效率上的考慮,Python也提供

了編譯的方法。編譯之後是bytecode的形式)語言使用解釋型和編譯型的結合。現在,無論是語言是編譯或解釋,或介於兩者之間你都可以根據你自己具體的需求。

五,核心編程文法

 

我們不想成為的概念(conceptual),我們希望得到的方法,我們希望一個良好的語言能做到這一點。我們希望對初學者友好,但不只是一個初學者的語言。它需要的是真實的。它需要的是流行,它需要的是相關的。總之它需要的是很好的解釋這些概念的語言。現在有

很多的適合該法案的語言,但非常重要的並且我們也想要的是,儘可能操作簡單,不用裝太多東西因此,決定去用JavaScript。這不是最強大或最靈活的語言在,但它肯定受歡迎,它肯定是相關的,它是探索這些概念的一種偉大的語言。所以,即使你腦子裡想一些其他

的語言,但你知道JavaScript是一種非常實用的語言就行。JavaScript是操作網頁的語言。有人發明了它。我們不會使用JavaScript來說傳統型應用程式,我會用C++或Java或C#或Objective-C語言。儘管名稱Java和JavaScript類似,但他們是完全不同的語言,是不相

關的。現在,有可能你喜歡的ActionScript或AppleScript或VBScript。這些是指令碼語言,指令碼語言是被嵌入到另一個程式更有限的程式設計語言。因此,ActionScript中的例子是,我們使用內部Flash的程式設計語言。 VBScript中可使用在Microsoft Office應用程式,同樣的

JavaScript也只能在其他應用程式,就是Web瀏覽器。您的瀏覽器是否是Internet Explorer或Safari或Firefox或Chrome或Opera,他們都有一個JavaScript引擎,它們內部有JavaScript解譯器。一般指令碼語言並不比這些通用程式設計語言更有限制,他們往往更容易拿來

用和他們非常善於做些他們領域的事情。因此,JavaScript的最像的指令碼語言是一種解釋型語言。我們不必手動將其編譯成機器代碼。它會自動通過Web瀏覽器來完成,當我們試圖運行我們的JavaScript。作業系統上啟動並執行Web瀏覽器並且Web瀏覽器中運行我們的

JavaScript。JavaScript的很重要的是區分大小寫語言。當我們看到一些其他程式設計語言,大量的使用這些花括弧,當我們看到語句似乎都以一個分號結束,和一些其他的事情,這種語言是由C語言編程的影響。自20世紀70年代初周圍許多最流行的語言和像C的形狀

。有些人甚至共用名稱為C++,C#,Objective-C語言,而有些則沒有。Java是一種C風格的語言,還有如ActionScript中,因JavaScript。並知道一個C語言風格可以更容易地跳進任何其他語言。因此,JavaScript是一種基於C語言的解釋型區分大小寫語言。這

是高度相關的,它是對初學者很友好。因此,讓我們看看如何在JavaScript中建立我們的第一個程式。

還有大量內容後續繼續更新。。。。。

 

編程基礎: 基本原理

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.