談程式語言的學習方法

作品

書籍

課程

程式集

小說集

論文集

散文集

影片集

編輯雜誌

程式人

電子書

JavaScript

計算語言學

微積分

Blender 動畫

C# 語言

系統程式

高等 C 語言

Java

Android

Verilog

Wikidot

R 統計軟體

機率統計

計算機數學

組合語言

人工智慧

開放原始碼

網路資源運用

計算機結構

相關訊息

常用工具

友站連結

在家教育

RSS

最新修改

網頁列表

簡體版

English

前言

自從開放原始碼盛行的風潮以來,在網路的推波助瀾之下,程式語言進入了一段『文藝復興』時期,各式各樣的程式語言如雨後春筍般不斷推出,其中較為知名的有 Perl, Python, Ruby, PHP, Scala 等,這些程式語言各有千秋,但卻讓初學者非常困惑,到底應該學習哪一種程式語言呢?

上述開放原始碼社群的程式語言並非產業或教學上的主流,目前在產業界而言,仍以 C / C++ / Java / C# / VB 等語言為主,其中除了 C/C++ 之外,都是由特定公司所主導的語言,Java 是由昇陽所主導,而 C#, VB 則是由微軟所主導。也由於這種商業主導行為,這些語言的行銷與整合支援一直都較上述開放原始碼語言更商業化。

那麼,到底我們應該學習哪一種語言呢?

入門

許多人都是從 C 語言開始學起的,但是,C 語言其實相當難以學習與除錯,我看過很多從 VB 開始學起的學生後來都走得很順,這或許是因為 VB 讓大家很容易的進入視窗程式設計的領域,因而建立起一種自信,那就是『我也會程式設計』,因此,我相信第一個語言應該選擇某些簡單易學,但又很有用的程式語言,讓大家不只是使用 printf 印來印去,而是能夠寫一些有用的東西。

目前,我建議從 C# 開始學起,這是一個類似 Java 的語言,由微軟主導而且在 MS. Windows 系統上的運用相當廣泛,可以快速進入『物件導向、視窗程式、網路程式、遊戲程式』等領域,由於支援垃圾蒐集等機制,讓程式設計較不容易出錯,有助於培養初學者的自信心。

但是,目前 C# 有越來越複雜的傾向,這使得 C# 的學習障礙開始出現 (Java 也有同樣的情形,而且更嚴重)。由於微軟力拱 C# 成為 .NET 平台上的主要語言,因此不斷加入新一代的功能,並且在語法上吸收各家的長處,這使得 C# 的關鍵字開始暴漲。筆者建議程式語言的新鮮人不需要學習太多新功能,只要使用傳統的語法就可以了,對於新型的擴展機制,則可以先忽略不學,等到真正需要時在學習就好了。

核心

C# 程式語言的核心其實很簡單,你只要學會下列事項即可:

  1. 常數、變數宣告
  2. 運算式的寫法
  3. 邏輯判斷句 if 的寫法
  4. 迴圈 for 與 while 的寫法
  5. 函數的寫法

只要學會這五樣,你其實就學會程式設計了,任何的程式都可以由這五種語法組合出來,其他的部分都不是必要的。

物件導向

如果你想進一步學習 C# 物件導向的設計方式,那就必須能理解下列概念。

  1. 封裝 — 物件與類別
  2. 繼承 — 如何繼承其他類別
  3. 多型 — 呼叫函數時會呼叫哪一個類別的函數呢?

視窗程式

學會了物件導向概念之後,要學習視窗程式就很容易了,尤其是以 C#, VB 等語言撰寫傳統的 Windows Form 程式,基本上只要會將視覺化元件用拖拉的方式,安排好畫面後,在加上少許事件處理的程式碼就可以了。這也是我認為第一個語言應該用 C# 的主要原因,因為 Java 在視覺化工具上設計得不好,而其他的開放原始碼語言也通常缺乏這樣的工具。

Windows Form 的視窗程式之基本概念包含下列重點:

  1. 控制項 — Control
  2. 屬性 — Property
  3. 事件 — Event

其程式設計原理是在『事件』發生時,利用程式控制其他的控制項,改變其屬性或函數,達到事件驅動的效果。

網路程式

網路已經成為程式設計的一個重要領域,通常可區分為網站程式設計 (像是 ASP, PHP, JSP 等) 以及網路程式設計 (Socket) 兩類,其中 ASP.NET 的設計可以使用 C# ,而且在網路程式設計上,C# 的 Socket 函式庫也很完備。

學習網路程式設計,筆者建議先從 Socket 函式庫下手,這可以讓學習者培養具體的網路程式概念。

如果要學習網站程式設計,ASP.NET 是一個可能的選擇。當然、PHP 也很好,但是對具有 C# 基礎的人而言,使用 ASP.NET 撰寫網站程式就像使用 Windows Form 撰寫視窗程式一樣簡單,這對初學者而言是一大福音。

遊戲程式

微軟在 2007 年釋出了 XNA 遊戲引擎,使得 C# 也能撰寫遊戲程式,這是一個很有吸引力的主題,可以讓學習程式設計的同學找到強大的動力。這幾前的教學經驗告訴我,無法學會程式的學生,最大的問題是缺乏學習的動機。只要有強烈的動機,其他問題都可以克服。XNA 在遊戲程式設計上已經成熟,雖然還有改進空間,但是作為教學用途已經相當足夠。

結語

當您學會用 C# 撰寫基本程式、視窗程式、網路程式、遊戲程式、網站程式之後,應該已經是 C# 語言的專家了。此時,筆者建議各位可以學一學其他語言,開拓一下眼界。

我並不是微軟的擁護者,相反的,我很討厭微軟。但是,我是個實用主義者,好不好用是我考量的重點,因此,雖然我不喜歡微軟,但是我仍然於 2003 年從 Java 開始轉向 C#,原因是 Java 在視窗程式上實在表現得不好,我必須要找一個更好的視窗程式開發工具。

但是,將所有目光集中在微軟或 C# 上是我所不願見到的,最近,我發現了一個有趣的新語言 — Scala,這個語言的語法非常優美,而且可以運行於 Java 的 JVM 虛擬機與微軟的 .NET 平台上。我正在學習這個語言,一個程式設計師應該經常看看其他語言的發展狀況。記得有位著名的程式設計師說過『一個好的程式設計師應該每年學習一種新語言,以保持思想上的活力』,這點我相當認同。

Facebook

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License