程式就像是菜譜
對,程式不是很高深的東西,就跟在書店看到的菜譜一樣。
簡單來說,程式語言就是給電腦理解的語言。人們想要通過電腦去處理事情,自然就要「告知」電腦,你想要電腦做的是什麼。
於是,人們在電腦上用程式碼寫出一條條指令,來告訴電腦要做什麼。
可是,對於不懂得煮菜的人來說,對於菜譜中的一堆材料、步驟也就跟程式語言一樣,兩眼一黑。但在懂得煮菜的人看到時,就一句「哦…就這樣呀」。就如:
當你要做梅菜扣肉時,你就會跟著上面的步驟來做。先煮肉到5分、再加上老抽、準備薑蔥…等等的步驟。你會知道經過這樣的一個個順序,你就可以煮出一個可能好吃的梅菜扣肉。當然,「可能好吃」是因為可能由於你經驗不足、配料調味的份量錯了等等原因引起。
那寫程式呢?
同樣地,我們要寫出一個程式,就如煮一道菜一樣。我們給電腦放入一條條指令(程式碼),電腦就會按照程式語言的規則來執行,達到程式員所想建立的效果。所以,如果我們了解程式語言中的一條條指令的意思與其語法,就可以看懂甚至開始寫下一點程式,就如你看懂菜譜後,就可以開始準備材料與試著煮菜囉。
那學一種語言是不是要花很多時間?
其實不會,可以老實說,因為程式語言是給電腦看的,所以語言的規則(語法)是真的不會太難,至少比自然語言要簡單多了。因為電腦不可能接受太過抽像化的資訊,如「我覺得這個紅色…唔…可以再紅一點」這種語句,電腦是很不能解理什麼叫「再紅一點」。可是,這一句我們卻可以大概明白,相信這也是人腦利害的地方。
可是,同樣地要怎麼寫出高效、優雅的程式,就如做出色香味俱全的菜色一樣,需要很多的學習與練習。寫出來的程式,也會有bug(錯誤),就如你煮菜加錯了調味的份量一樣,只能通過不斷調整、修改,來消除bug了。畢竟,會煮菜的很多,可是卻很少五星級大廚。
那為什麼有這麼多不同的程式語言?
簡單來說,就是為了不同的需求與科技進步。
在最早期,電腦的程式語言,是機器語言,也就是二進制。通過0和1,也就是Yes和No來控制電腦的電路開閉合,來達至給電腦輸入指令,其亦被標籤為低階語言。可是,如果要每次都需要輸入一大堆0001101011010,那寫一個程式也實在是太痛苦了,於是,人們創出組合語言。組合語言使用較簡單的字串和語法來取代機器語言。但是在漸漸的出現的不同裝置中,不同的組合語言只對應著不同的機器語言指令集,也就是一種組合語言是只可用於某電腦系統結構,那在不同平台之間要移植就變得非常麻煩。
所以就有高階語言的出現。
Python,也是高階語言的一種。那什麼是高階語言呢?根據維基百科:
高階語言(High-level programming language)是高度封裝了的程式語言,與低階語言相對。它是以人類的日常語言為基礎的一種編程語言,使用一般人易於接受的文字來表示,使程式編寫員編寫更容易,亦有較高的可讀性,以方便對電腦認知較淺的人亦可以大概明白其內容。
對的,現在我們學習的程式語言多是高階語言,如C、C++、Python、Java等等,都是更易被大眾所理解,也可以容易地移植到不同的平台中使用,就如Python可以在Windows、MacOS、Linux等不同平台運行,使開發成本跟學習難道亦大大降低。
因為這些不同的高階語言,使我們可以得到很多不同的程式撰寫方法,不同語言之間亦有很多不同的功能與特性,甚至是特地為某些功能而創造程式語言。如Swift的語言應用都是在寫Ios App上,Python可以很好的應用在大數據與機械學習上等等。
不過,不同的程式語言的複雜度與功能性差異,可能會使得撰寫程式的難度亦不一樣,所以要學習的程式語言,最好要選是你想進入或嘗試的領域中會用到的。如寫網頁要會Html、Css、Javascript等等。
另外,可以參考這篇文章:世界上的程式語言已這麼豐富,為什麼我們還需要更多?
說了這麼多,那Python又是怎麼樣的程式語言?
根據維基百科:
Python,是一種物件導向、直譯式的電腦程式語言。它包含了一組功能完備的標準庫,能夠輕鬆完成很多常見的任務。它的語法簡單,與其它大多數程式設計語言使用大括弧不一樣,它使用縮排來定義語句塊。
Python是完全物件導向的語言。函式、模組、數字、字串都是物件。並且完全支援繼承、重載、衍生、多重繼承,有益於增強原始碼的複用性。
唔…是不是都看不明白?對,因為暫時大家都不需要看的明白。
更讓你有理由學習Python的原因,可以是:
1.它是MIT的必修語言。
2.它優雅、簡潔,不需要太多的符號作為語法規則,如使用「;」、「{}」等。(代表你可以少打很多東西!)
3.它有大量的資源可以學習,在Udacity、Udemy、Coursera都在Python的課。亦可以在容易地在書店買到用Python寫成的資源結構、演算法等電腦科學相關基礎課程的書。相信我,資源永遠是自學不可或缺的條件。
4.Python可以使用在開發桌面型程式、網頁後端、大數據方面等等。
沒有什麼是特別利害,可以應付一切的程式語言。很多時候,在不同場景與需求,就需要學習不同的程式語言。不過,程式語言的規則多是不會相差甚遠,當好好的學習了一門語言之後,相信再學習其他程式語言也不會是困難的事。更重要的是,運用語言作為解決問題的工具,才可以發揮語言的功用。