程序設計/概論
在本章中,我們將介紹學習程序設計過程中些需要關注的一些問題以及大多數程序語言都具有的一些共有元素。
如果你只希望學習一門特定的語言的話,你可以跳過本章直接閱讀你希望學習的那門語言的相關教程,但是我們推薦初學者快速瀏覽一下本章以獲得一個總體的印象。
你需要學習什麼?
[編輯]如果你希望在軟件開發的領域中能夠獲得長足的發展,那麼僅學習一門或者幾門語言是遠遠不夠的。事實上對編程語言的掌握是一個程序員所要具備的最基本的技能,這就好比一個書法家首先要認識字一樣。世界上認識字的人有很多,但並不是每一個都是書法家。除了要掌握編程語言,一個好的程序員還需要很多其他方面的知識。
在這裡我們向大家推薦Robert L. Read博士所寫的一篇文章《How to be a Programmer: A Short, Comprehensive, and Personal Summary》,你可以從[1]得到這份基於GNU 自由文檔許可的文章。根據Read博士的觀點,一個好的程序員除了要具備可以寫出有效代碼和測試的技能以外,還需要能夠融入到團隊中去,掌握與人溝通的各種技巧,要不斷的學習,另外還需要具有判斷能力,比如在時間和空間的複雜度上進行平衡考量,對風險的預計等。
對於一個程序員來講,一些基本的計算理論知識是必需的,比如數據結構,基本的算法,基本的計算機系統理論和軟件工程知識等。如果你經過了大學計算機系的專業系統學習,那麼你大概已經具備了這些知識。但是一定要記住:能夠靈活運用知識永遠比單純的記憶更重要。
這並不是說,沒有上過大學或者沒有上過計算機系的人們就不能成為好的程序員。在如今這樣的信息時代裡,有心的人們可以通過各種途徑獲取知識。所謂「條條大路通羅馬」即是講的這個道理。
為了更加明確的說明成為一個程序員需要哪些知識,我們列出下面一些知識點以供參考:
- 基本的結構化編程或者面向對象編程的思想
- 數據結構以及算法
- 數理邏輯
- 計算機系統結構原理
- 軟件工程知識
- 團隊協作的知識以及相關工具的使用:比如版本控制,開發進度控制等
- 恰當的與人溝通的方法:包括與客戶溝通,與同事溝通的方法等
這些當然還遠遠不夠,舉例來講,如果你從事MIS系統的開發,那麼你應該對數據庫系統原理有所了解,如果是驅動的開發,則需要硬件知識。對於一個程序員來講,應該不斷的學習,不能滿足於現有的知識。
泛泛而談:程序設計中的一些概念
[編輯]所有的計算機程序都可以認為是數據和邏輯的集合。一門程序語言一般都有若干基本的數據類型,比如整形,字符型等,在書寫程序時,通常用變量和常量來表示各種數據。在一些高級語言中,也存在複雜的數據類型,比如一些語言中的用戶自定義類型(User Defined Type,簡稱為UDT),以及類等。
而處理數據的邏輯一般是由各種語句以及函數構成的,而函數又是由語句構成的,比如賦值語句,各種數學以及邏輯運算語句,分支跳轉語句(即類似if...else...的語句),循環語句等。
各種計算在語句中被頻繁的使用,最基本的運算有兩種,即數學運算和邏輯運算。數學運算比如加法,減法,平方等,而邏輯運算則包含與,或,非,異或等等。
在下文中,我們將分別對這些要素進行介紹。
數據類型與變量,常量
[編輯]讓我們想一下小時侯:大人們會扳着手指教我們數數。我們逐漸的知道整數是什麼,後來又知道了小數、正數、負數、實數、虛數……這樣的概念。
我們知道,一個事物在這個世界上通常具有各種特徵,而具有相同特徵的事物通常被劃為某一種類別。比如說起"書",我們就會想到它是可閱讀的一類東西。
在程序語言中,一種數據類型指的是具有某些共同特徵數據的集合。比如「整數」就是0、1、2、3……的集合。也有的數據類型只包括有限的元素,比如大部分程序語言中都存在的布爾型數據,就只包含兩個值:真與假。
多數語言中都有一些共同的基本數據類型,比如表示整數的整型,表示實數的浮點型,字符串型,等等。
有些語言允許自定義新的數據類型,比如我們在面向對象語言中經常見到的類,c語言中的結構體等。
數據類型說明了一種語言可以對什麼樣的數據進行處理,而變量和常量則是語言中表示數據的方法。