如何學習一個程式設計?這個問題學校教育似乎沒有好好告訴我們青年學子們。以我自己的經驗來看,學校的程式設計課程大部分都是講述程式語法的使用,我認為這是錯誤的方法,教育程式設計的正確方式是:傳授程式設計的核心概念。
以下分享自己在程式設計學習之路的心得,期望能幫助正在學習程式語言的青年學子們。
首先,我們必須知道程式語言(Programming Language)的意義為何?我認為程式語言是「幫助人類完成處理資料的目的」,重點在於「處理」與「資料」兩個部分。
開始學習之前,根據「工欲善其事,必先利其器」原則,必須先準備好開發工具,不過這又關係到程式語言的種類。個人認為選用自由軟體的開發工具作為學習較好,例如Eclipse或NetBeans,也可以使用微軟的Visual Studio的Express版本。重點不在於開發工具和語言種類,這些都只是工具,學習程式設計在於程式設計本身!
開發工具有了,第一步先了解「資料」這個部分,你必須先認識資料型態,常見的資料型態有:整數、浮點數、字元、字串等, 這些屬於基本資料型態。由這些基本資料型態組合成的資料型態有:陣列、結構、類別等,稱為複合資料型別。學習的核心概念在於認識與瞭解每種資料型態的特性,什麼時候適合採用哪種資料型態,更進階學習則屬於「資料結構(Data Structures)」的領域了。
第二步是了解「處理」這個部分,程式處理資料不外乎兩種模式:重複與判斷。重複(或稱反覆)在程式語言中是迴圈 ,人類利用迴圈自動化處理重複的工作,一般來說有:for迴圈、while迴圈、do-while迴圈、foreach-in迴圈等,用於處理相同的動作。判斷(或稱選擇)在資料處理中依據資料狀態做不同的動作,通常有:if-else判斷、switch-case判斷等。重複與判斷互相搭配使用,已經足夠幫助我們完成處理資料的目的,同樣的,學習的核心概念在於認識與瞭解每種重複與判斷的特性。更進階學習則屬於「演算法(Algorithm)」的領域了。
再來,更進階一些的就是函式(副程式)的觀念,程式寫多的會發現程式碼重複,因此,你可以利用函式將常用的功能包裝起來成為函式,減少後續修改維護的麻煩。更進階的學習則是使用程式庫(library)與開發程式庫。
資料型態、重複與判斷這三類程式語言的基礎知識,如果可以掌握好,我相信你已經有程式開發的基礎能力。至於其他像是物件導向(Object-Oriented, OO)這個部分,我認為這是屬於更進階的程式設計學習,是讓你成為真正的「程式設計師」。
物件導向其實是程式語言的一部分(對於物件導向的語言來說,目前流行的程式語言時之八九都是OO),很難抽離去獨立學習程式語言。因此我建議剛開始學習程式語言,重心放在資料型態、重複與判斷這三類程式語言的基礎知識,物件導向若不明白以後再學習,千萬不要因為不懂物件而受挫,學習程式設計真的是很有趣的一件事情!
###
延伸閱讀
Web Programming Language網頁程式語言
搜尋此網誌
2011年11月2日 星期三
訂閱:
張貼留言 (Atom)
熱門文章
-
即時串流通信協定 ( Real Time Streaming Protocol , RTSP) 是應用層的通訊協定,定義在 RFC 2326 規範中,RTSP 是用來控制具有即時與同步特性的資料,如音訊和視訊的媒體,資料來源包含現場即時轉播和儲存的片段剪輯,媒體資料與控制資料是...
-
對於想接觸 電力電子 (Power Electronics) 這個領域的學生來說,會有不知道該如何著手的問題,我也遇過,總希望有人可以跟你講,這篇文章提供給大家參考,電力電子領域當中有幾本極為重要的 經典著作 (Classic) ,很多學校都是用這些書籍當作教科書,問題是如果...
-
形態學影像處理 (Morphological Image Processing),依據 Gonzalez與Woods的書本上說明\:影像處理的形態學是依據 數學形態學 ( Mathematical Morphology , MM)的應用之一,並且是以數學理論為運算的基礎(集合理論...
-
One picture is worth more than ten thousand words. (A picture is worth a thousand words.) 今天介紹 數位影像處理(Digital Image Processing) 的聖經,這本書是在...
-
今天跟大家介紹的不是什麼專業技術,而是健康知識!Why?因為 疱疹(Herpes) 這種疾病可能是工程師會得到的常見疾病,而且沒有藥可以治癒,唯一的解藥是你自己的免疫與抵抗力。病發原因主要是:熬夜、疲勞、壓力大、睡眠不足、抵抗力差時才會發生疱疹。(這不是現在RD的情形嗎...)...
-
談談 元件物件模型 ( Component Object Model, COM) 這個主題吧!前一陣子都在研究 DirectShow,常常看到 COM 這個關鍵字。由於最近才變成 Windows 程式開發人員所以不熟悉 COM,趁此機會好好研究一番吧! 請注意: COM 是一...
-
起因於"大話設計模式"一書,我將重新學習 Design Pattern (設計模式)這項觀念,對於 資訊工程 類科的學生可能不陌生,但是對於一直都主修 電機工程 (Electrical Engineering, EE) 的我而言是不熟悉的觀念,雖然說現在 E...
-
subprocess 是 Python 程式語言中用來新增子行程的模組,這是在 PEP 324 中所提出的建議,主要是統一 Python 新增子行程的方法,用來取代 os.system, os.spawn*, os.popen*, popen2.*, commands.* ...
-
人月神話之外,另一本軟體開發管理的經典著作! 與大家介紹一下這本「 約耳趣談軟體:來自專案管理的現場實錄 (Joel on Software) 」,當我買了之後閱讀,才發現所有的文章(不知道是不是全部)在網站上都有( Joel on Software Translation ...
-
NSIS (Nullsoft Scriptable Install System) 是一套建置 Windows 安裝程式 (installers) 的開源軟體,用來將程式或文件打包成一個執行檔給客戶安裝使用。NSIS 採用腳本 (Script) 的方式建置 Windows 安裝...
沒有留言:
張貼留言