為何從 Console 而非視窗,開始我的 C# 學習之路 ?

2006年,我出版了一本談論C#的著作,「visual C# 2005精要剖析」,這本書不同於目前市面上的主流程式語言書籍,它以 Console 模式討論C#與.NET類別庫的整合應用,這篇文章要談的,是當初寫這本書的一些心情,最重要的,是我為什麼不以視窗介面的模式探討.NET的應用程式開發技術。

軟體技術發展一「版」千里,應用亦日趨複雜,每一次的改版,都號稱帶來革命性的突破,傳統的程式碼撰寫工作,逐漸的被軟體公司推出的各種炫麗工具所取代,探討程式語言的書藉從早期以程式言語本質為基礎的內容,不斷的演化成以介紹工具的功能為主,教你不用程式碼拉一拉就能完成一支應用程式的雛形,讀完一本範例書就能夠寫出一支具備各種功能的進銷存應用程式…

程式設計領域的門檻被降到最低,很多人不再重視語言的本質,除了學校必修的學程,所謂的程式語言只是工具自動產生的一堆無聊符碼,視覺化UI成為軟體開發人員手中賴以維生的利劍。

.NET歷次的改版,更將這種特質發揮得淋漓盡緻,也因此撰寫「Visual C# 2005 精要剖析」一書的時候,天人交戰無時無刻的上演,是否捨棄原版Console模式,將重心放在UI介面與視覺化控制項,重點介紹資料庫拖曳功能,順便加入些UI的範例,嗯,好像不錯,就算不大賣也不至於讓出版社蝕本…

最後,我們還是沒有這樣作,最主要的原因在於這是一本討論C#語言的書,平心而論,即使工具再如何進化,想要成為一名出色的軟體開發設計人員,對於程式語言本身就必須有深入的認識,基於這樣的理解,我們回歸了最初的想法,除了最後兩章與視覺化設計有關的章節,一律以Console模式撰寫本書,讓閱讀本書的讀者,能夠將注意力集中在言語上,而非如何使用一堆華麗的視覺元素。

寫過一陣子應用程式的開發人員應該都會同意,稍微深入一點的軟體設計,都必須撰寫大量的邏輯程式碼,而非拉一拉就真的能夠完成一支程式,以最普遍的資料庫AP為例,資料交易、統計報表、各種資料存取邏輯,除了坦然面對程式碼,你很難直接透過工具來完成相關的工作,更遑論開發一套像樣的系統。

一開始將重點放在程式碼的本身而非UI,才是學習程式語言的正道,你可以將注意力集中在語言的本質與相關功能,而非視窗的用法,一個程式員寫到最後,很多都是在處理非視窗的東西,他們最後都回到純程式碼的撰寫而非視窗的設計,而真正的事實是,視窗只是應用程式的一部份,你所使用的類別庫,就是最典型的非視窗程式,類別庫有多大,相信讀者應該有概念,只要再繼續深入,很快的你就必須開始撰寫完全沒有視窗的類別庫而非視窗程式。

如果只是想當個入門程式員,或是永遠只想寫寫簡單的資料增刪改程式,或許直接拉一拉控制項就夠了,但事實上,很多程式是沒有UI的,很多邏輯程式碼也跟視窗沒有關係,你看到的所有視窗的東西,其實也是C#程式碼寫出來的,甚至ASP.NET也跟Windows Form沒有關係。

你不見得會一直寫視窗程式,你有可能必須寫Web Form的ASP.NET應用程式,在這種情形之下,你還是必須學好C#語言,無論視窗還是網頁,它們都是用來建構介面的應用程式元素,核心才是C#,而學好C#語言最好的方式,就是從Console下去著手,你可以專心在語言以及類別的功能上,無論你的舞台是Windows還是Web。

如果一開始就從視窗切入,你很可能失去成為一個優秀程式員的機會,你會拉一個按鈕,但是不會去動態建立一個按鈕,你會點兩下產生一個Click事件處理程序的骨架,卻不會用委派憑空實作一個事件處理程式,你甚至不會知道一個應用程式的介面與邏輯程式碼的關聯,以至於寫不出像樣的程式,最後你可能會以為C#等於視窗程式,而ASP.NET是另外一種程式語言…

最後,我要強調的是,本文並沒有眨抑開發工具的意思,事實上軟體架構發展至今,複雜度已非單純的記事本撰碼就可以應付得來,對語言下足功夫,善用工具,軟體開發人員便不會輕易的被淹沒在資訊洪流當中。

9 則留言:

匿名 提到...

您好!之前有拜讀過C#精要範例剖析、Java2、JSP2.0的讀者,之後又購買了Visual C#2005精要剖析,想說您應該會出版視窗設計、Servlet或ASP.Net之類的書藉,但好像沒有看到,想不到您己改名為康廷數位了,我很欣賞您的著作,希望繼續創作更好的書藉,謝謝。
讀者_Fish

康廷數位 提到...

Fish 您好 :

因為工作環境的關係,Java平台我應該不會再接觸了,感謝您閱讀我的相關著作。

視窗設計明年我會出版C#版本的書,目前在準備了,ASP.NET應該會在今年就有新書出來了,不過這本書是曲高和寡的那種內容,就不知道讀者捧不捧場了。

康廷數位已經用很久了,沒有改過呀,只是後來換了網址,因為自已實在無力維護網站,所以專心寫Blog。

無論如何,歡迎常來,這裏幾乎每天都會更新,除了少數特別忙的日子之外(這兩天就忙爆了)。

祝您學習愉快…

匿名 提到...

您好:
回應真是快速,
想不到昨天打今天就回了。

之前有拜讀您的著作,
覺得內容編排、難易和詳細度抓的很好,
適合拿來給初學和進階使用,
就算學過也可以拿來當字典查。

無法分享到Java方面的知識有點可惜,
但大大所著作的C#、.Net我有看過,
也覺得非常的好,
(不像其他的著作是為了商業而寫的書)
到時會到書局翻閱Silverlight的著作,
如果不錯的話會,會支持一下的。

最後,
晚輩指的改名是呂文達這個名字,
也謝謝您,
祝您有個愉快的一天。

讀者_Fish

匿名 提到...

您好:
剛忘了打了一個問題
請問您的視窗設計的走向是:
1)Win32 API
2)MFC
3)Window Form
4)WPF
那一種呢?

讀者_Fish

康廷數位 提到...

呂文達,當初因為某些特別的原因,所以取了筆名,現在因為是自由身了,所以正名回來啦,哈哈

C#這本書可能是自已背景的關係吧,相較於Java,.NET平台的視窗功能雖然強悍,但是.NET要學好還是純粹從Console模式下手會比較好,也比較不會分心,至於商業嗎,哈哈,只是沒什麼圖而已啦,還是希望可以賣好一點…

C#將來的新書會著重在Window Form+WPF,WPF我們文魁目前有一本「精通 MFC 視窗程式設計」,我不太會去碰這一塊,因為還有好多新東西需要讀,沒辦法兼顧了,當然這本會維持原格進行改版…

謝謝妳的支持,我每天都很愉快,也祝你學習愉快,這幾天都在忙Sivlerlight的出版,Blog沒更新,過兩天就會再貼文章囉,歡迎常來

ef2526 提到...

由於在光碟片中附上的是範例程式碼
因此,想請教老師
是否能提供此本書籍的「習題解答」呢?

康廷數位文教網 提到...

由於此本書有一些老師採用作為教材
除非老師提供給學生
我們並不太方便釋出,請見諒

其實大部份習題都是課本的內容
應該都可以在書中找到解答
如果學習內容有任何問題,也可以留下訊息討論,我都會回覆的:)

匿名 提到...

目前小弟仍然在學習C#
由於自學,概念上十分欠缺

經友人分享您的文章
閱讀過,飽讀經文

謝謝您的提醒,會加強console

康廷數位文教網 提到...

祝 學習愉快 ;)