前言:
安安,最近在學習Python,讓大蟒蛇在我的腦內進進出出>///<。
建議先花10分鐘的時間看完上集,如果你已經對一門語言有一些些概念,可以用3分鐘快速掃過。
本文面對對象:沒有接觸過程式語言的人、剛開始學習程式語言的人
閱讀時間:10分鐘

程式的簡單特性
程式的特性可以很淺也可以很深,以下提供我認為比較重要的,讓新手可以不用很深的去探討底層關係,對一些基礎有所概念就可以的內容。
資料型別
“讓各種資料依分類而有了形狀”,這是我對資料型別的解釋。
想像一開始空間是沒有形狀的,而你有一筆資料,這個資料是一個數字的形狀,所以空間應該要作為數字的形狀才能放入數字,於是空間就變成了數字的形狀。
空間的形狀就是型別,因為是為了放資料而塑造的形狀,所以是資料型別。
看看以下的影片,假設「1」是數字,「2」是文字。
「1」必須找到屬於數字資料型別的空間(圓形)才能放入資料;而「2」也必須找到文字資料型別的空間(菱形)才能放入,那麼當你擁有「1000」這個數字,知道1000的形狀了嗎?沒錯,就是圓形;那「時鐘」呢?對了,就是菱形。
資料型別是非常重要的,來看看資料型別如何影響程式的運作:
x=1
y='1'
output(x+y) // 程式發生錯誤
咦!怎麼會有問題呢?1+1=2阿?!
上面例子中的 x 與 y 雖然都是「1」,兩個「1」卻完全不同,x 的 1 在資料型別裡屬於數字,而 y 的 1 在資料型別裡屬於文字,那麼想想數字加上文字,會發生問題似乎一點也不奇怪了吧!
程式語言會有很多的資料型別,除了結構式查詢語言以外,大部分的語言約有6-12種基礎型別。為了方便記憶,我通常會再區分單資料型別、多資料型別以及特殊型別。
單資料型別:型別只為一個資料。可能有:整數 int/Integer/number、浮點數float、布林值boolean、字元char以及符號sign
多資料型別:型別為多個資料。可能有:字串str/string、陣列array、串列(列表)list
特殊型別可能有:undefined/null/None
每個語言可能名稱相同,但卻有非常不同的定義,需要額外的去注意。
想想資料型別帶來的好處
假設你現在正在開發一個銀行的系統,銀行的資料關乎所有在這裡存錢的人,這些銀行系統裡的數字,可能是某個人畢生的積蓄。
所以銀行系統的數字,就額外的重要,幾乎不容許任何差錯。所以有些數字資料,在傳遞或儲存的過程中,會偏好使用文字來進行,這個目的就是為了讓所有維護系統的工程師明白,這個資料室不可以輕易進行運算的。可以避免一些工程師或操作員,不小心將這筆資料放到可以更改的運算中。
補充:字串
字串是什麼?為什麼是多資料型別?
由許多符號或是文字所組成的資料就是字串,例如:”我是字串”、”123456″
因為字串可以視為多字元的表示方式,也就是很多字元資料的集合。例如:”我是字串”,就是 ‘我’ + ‘是’ + ‘字’ + ‘串’
是否為物件導向?
如果語言是物件導向式的語言,例如:Java、python、JS…,在了解以上的型別以外,還需要了解物件object,並了解型別屬性以及型別方法。
程式語言的預設與習慣
這個部分每個程式都可能很不同,其實更適合在做中學,只是有些稍微基礎的適合先了解再開始做中學。
- 未賦值之前資料型別的預設值:有些變數建立之後,未賦值之前可能有其他資料在該空間裡,或是使用undefined等表示。
- 程式區塊block的表示方式:大部分的語言採用{ }來分開block空間,有些語言使用縮排。
- 程式的執行順序:部分語言執行程式之前會掃過整個程式,將需要宣告變數的指令往前提。
- 變數名稱的大小寫:大部分語言採用大小寫不同便是不同名稱的做法。
什麼是程式區塊block:
可以想成block是程式的工作環境,資料則是工作環境上的資源,不同工作環境有不同資源,所以不同block之間的資料是不共用的。
不過會有大的block包小block的情況出現,這種情況大block無法使用小block裡的資料,但小block可以使用大block的資料。
( 這部分內容較為複雜,建議可以去google找相關資料 )
語言的錯誤訊息
在執行程式之後,通常都會出現錯誤訊息,因此能夠看懂錯誤訊息提示也是學習語言重要的部分。
熟悉錯誤訊息的類型,可以幫助在寫程式的過程中,更快找到程式的問題。
常見的錯誤訊息有:
- Syntax Errors:語法錯誤
- ZeroDivisionError:除以0錯誤
- NameError:使用了未宣告的變數名稱
- TypeError:發生資料與資料型別不符
函數與模組
函數應該是電腦裡面最簡單的系統。
一個函數最好是直接面對一個功能,這樣可以增加對程式的管理,以下用加法的函數表示舉例。
// 宣告
functionA(x, y){
return x+y
}
// 使用
c=funtionA(1,2)
output(c) //3
函數分為宣告以及使用兩個部分,所以學習函數要了解這兩部分的撰寫方式。
模組是函數的集合。以下舉例一個運算模組:
module operator{
add(x, y){
return x+y
}
minus(x, y){
return x-y
}
multi(x, y){
return x * y
}
divide(x, y){
return x/y
}
}
模組就是將有類似功能的函數蒐集在一起,可以提供給其他程式使用,使用模組之前要先進行匯入的動作。
import operator
main(){
output( add(5, 7))
}
為什麼需要函數?
函數代表著一個功能,在寫程式的時候會發現,有一些功能會很常使用,這些功能就很適合作為函數,好處是不用再重新寫一次程式,同時還可以讓頁面變的整潔。
註解
註解放在最後,因為我認為註解真的太重要了,不過也是最簡單的,雖然有些工程師會認為好的程式本身就是最好的註解,但是很難保證每次寫程式的時候,都在最好的狀態可以寫出最佳的程式,並且有時候程式熟悉了,會想炫技,或是剛學會一種新的程式寫法,這些情況都容易造成寫過之後回頭看,卻認不得程式的作用。
因此保持寫註解很重要,每個程式也都有不同的註解方式,但幾乎都提供兩種註解:單行註解以及多行註解。
結語
一個語言能夠知道以上的部分,我想就應該開始給自己出一些簡單的題目去挑戰,然後在挑戰之中寫自己的程式,去提高對語言的熟悉,並且同時去看類似題目,別人寫的程式內容,並去思考為什麼其他人選擇這樣的寫法。
在挑戰的過程會有很多錯誤,再依終端機給出的提示去尋找原因,漸漸的就會深入這個語言,發現當你深入語言的時候,語言也在深入你。
但也提醒不要認為這樣就是掌握了一門語言(也是我對自己的提醒),當實現以上的過程也只是完成該語言的入門,關於語言需要學習的還有很多很多,當發現在實作與練習的過程中,不滿足於網路上查詢獲得的解法,也無法融會貫通的時候,就該好好地找一本工具書,從頭的給自己補充細節並記錄下來。
或許會很好奇,為什麼不一開始就直接找本工具書好好地讀,當然這也可以,只是學習語言的一開始,與語言還沒有連結的時候,很多細節總是會忽視或遺忘,又或是會自認為不重要而輕視,所以才動手寫下這篇文章,作為能夠快速開始入門一門語言的使用手冊。
This article was written by 好想射射>///<. Any similarities to other works are purely coincidental.