Keep Walking(轉貼去年寫的BLOG)

這篇文章,其實是去年12月寫的, 換了BLOG,但是捨不得丟掉,所以移過來...
從去年,到今年又改變很多了,VS2008又級將推出,時間過得真快...

  
  昨天和一位同樣在資訊出版界的朋友小聊了一下,不知不覺的居然天色突然變暗,果然冬天來了,儘管今年是暖冬,不過天黑得還真快。三、四個小時中談到不少近十年資訊領域的變化,趁著記憶猶新,跟大家分享一下。

  在我們那個年代,程式設計是從MS-DOS開始學起的,施威銘的『Assembly程式設計』大概是對我幫助最大的書。回想這10年,變化還真是大,十年的時間物件導向主宰了程式設計的走向,Design Pattern引領了程式設計師的大腦,Web應用程式經過了一段網路泡沫化的淬練之後,開始走上主流的康莊大道,兒時(真的是兒時)和我一起寫程式的聶哥現在不知道到什麼地方去了(我始終佩服可以在一片360k的磁片和有限的記憶體內寫程式的高手,聶哥如果看到這篇文章,跟我聯絡一下吧!)。

  在我寫『Visual Basic2005程式設計與案例剖析』一書時,曾經很掙扎資料庫那一章的寫法,我究竟要不要把那一坨ADO.NET的類別詳細的介紹呢?還是用拖拉法把資料和控制項binding一下就搞定?最後我選擇前者而放棄後者,終究還是在書籍中稍微討論了一下ADO.NET的架構,儘管我猜想很多讀者可能會選擇直接跳過那一節,而直接使用我們幫讀者準備好的DbAccess類別,甚至可能某些讀者因為沒看到很炫的『拖拉完成式』程式設計法,以致於不選擇我的書…不過,好歹對得起自己的良心和讀者的支持。(當然,『Visual Basic2005程式設計與案例剖析』一書的資料庫章節僅是入門的入門,後續筆者會有更完整的資料庫程式設計書籍之計畫,相信不會讓讀者失望)

  現在在.NET的架構底下,透過VS2005要完成一套系統已經相當簡單了,但是我們開始發現另一個問題,初學者慢慢的迷失在眾多炫麗的控制項和包裝好的機制底下,無法明白究竟電腦中的程式究竟是怎麼跑的,我們也發現不管是中英文書籍,介紹技巧(Skill)總是遠多過於技術的方法(know-how),可能讀者也會說,我管它這些東西是怎麼完成的,我能寫出一套系統(或完成作業)就好了啦,是沒錯,和過去15-20年前,我們還設法將程式盡量縮小,塞在1M的主記憶體當中,現在動輒以G計算的主記憶體和File Swap技術,我管它也出來的程式效能和大小如何咧,反正強大的Widows和Intel CPU會幫我搞定,我常說事情沒有對錯,只有是否適合而已,當七年級生這麼說的時候,除了把五年級的主管氣死之外,有沒人能夠說你怎樣,某種角度來看這也真的是一項事實。

  但是就像當年學習『Assembly程式設計』一樣,我至今始終沒有用過『Assembly』寫過什麼偉大的系統(除了測試一下那時很熱門的Friday病毒程式寫法),但是我依舊要說,那段時間的學習是奠定日後程式設計基礎功力的重要關鍵。

  很有趣,完全無關的一種程式設計語言,卻給我最大的幫助;同樣的,學習C語言的時候,則是讓我對結構化程式設計、記憶體運作、乃至於日後為何要轉換成OOP奠定下了深厚的基礎,D-Base是我第一套學習的資料庫系統,Clipper則是我第一個撰寫資料庫產品所使用的程式設計語言,COBOL、Pascal、Fortran乃至於日後的Delphi(我還強烈的支持了一陣子)、C++、Java、VB、C#…每一種語言多少都陪我走過了一段或長或短的時間…

  我不知道當年為何要學那些語言(我真的忘了),我只記得,我想要了解,更深入的知道電腦究竟怎麼運作的,各種程式設計語言之間究竟有何差異,最後有大半的語言我沒有真的拿來在工作上使用,但是,無庸置疑的,幫助確是很大。

  現在的初學者,可能很清楚知道怎麼透過控制項來設計程式,但是往往不知道為什麼要使用控制項,控制項的原理為何?很可能知道(也熟悉)如何透過DataBinding的機制把資料庫欄位連結到畫面上的控制項,卻不知道為何要這麼作?如果沒有這些DataBinding的機制時,要怎麼連結資料庫?絕大部分開發人員一定知道『物件導向程式設計』這個字,也每天在程式當中使用了物件的屬性、方法,但是卻不曾嘗試設計過一個物件,或是繼承一個類別…

  更重要的是,初學者似乎對這些也不是很有興趣!!!

  我在想,這應該不全然是初學者本身的問題,我們這些在進行教育訓練和技術分享的講師、作者,可能或多或少也得負上一點責任。這是一個講究速食的時代,我昨天晚上開車到得來速,從買一個三號餐到吃完,大概只花了7分鐘,快速,但是卻沒什麼營養的一餐。

  我們發現,『學習』慢慢也染上這樣的趨勢,畢竟這是一個高度競爭的時代,時間就是金錢?不,時間已經不只是金錢,時間根本是一切的關鍵。很多讀者提到,在.NET 2.0還沒模熟的時候,微軟.NET 3.0(特別是WPF)已經鋪天蓋地排山倒海而來(筆者會針對WPF、Ajax、Web Solutions這個主題再寫一篇文章,也是當天和朋友談了一下午的結果和感想,希望對讀者們安排自己學習WPF的時程有些幫助),這些每天更新的技術,你現在打算是學?還是不學?

  Vista和Office2007已經推出,出版社第一時間推出了書籍,Office2007終於把自己調整像樣了一點,人性化了很多(沒用過?這篇文章就是用Word2007寫的,挺順手~),但是相信我,不少Office還在使用Office2000呢。(對了,如果你要安裝Office2007,也得先換成WindowsXP或Windows2003。如果我是用Windows 2000呢?喔,你被放棄了…)

  時間不夠,同時需要完成很多事情,又得學習最新的知識,這都是IT人員的無奈(相信我,我們也很清楚,並且深受其害),同時關鍵技術始終掌握在別人的手上,引領趨勢的也是別人,orz。

  但是,總是得生活嘛,我又不會炸雞排或是蚵仔煎,只好在這條路上持續努力。不過哪天,如果我真的去開一家Java咖啡廳(放心,我練過espresso),屆時再請讀者朋友們蒞臨指導,我一定在網路上放個讀者專享值價券,當然,咖啡廳裡面絕對也有寬頻上網,每周再來個技術分享,邀請各大作者、各領域技術導師、或是讀者和大家一起聊聊。

  不過在此之前,還有一段不短的辛苦路要走,我很喜歡的一個廣告字是『Keep Walking』。
  
  其實,每個人都有自己的速度,不見得要跟著別人的腳步,依照自己的速度,走自己的路,才能夠走的久、走的遠;我常常提醒自己,人生裡最終的成就往往都是留給持續走下去的人,而非短時間走的最快的人。

  很多話短短的這篇文章寫不完,下回再找時間和各位分享了。

Keep Walking ~

留言

匿名表示…
我是VB 2005程式設計與案例剖析的讀者,也是一個初學者,有一個將控制項關閉的功能
Private Sub RadioButton2_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton2.CheckedChanged
For Each control As Windows.Forms.Control In Me.Controls
If control.GetType Is GetType(Button) Then
control.Enabled = False
End If
Next
End Sub
這段當中 將button改成checkbox 卻不能正常將checkbox.enabled設為false
表單中是有checkbox的,我是想用來將checkbox一次都設為false or true
請問是哪裡有問題?
感謝回應

這個網誌中的熱門文章

原來使用 .net 寫個 MCP Server 如此簡單

使用LM Studio輕鬆在本地端以API呼叫大語言模型(LLM)

開啟 teams 中的『會議轉錄(謄寫)』與Copilot會議記錄、摘要功能

在VS Code當中使用 Azure DevOps MCP Server

原來使用 .net 寫個 MCP Client 也如此簡單