網頁

搜尋此網誌

2011年12月15日 星期四

Object-Oriented Analysis and Design with Applications 物件導向分析設計與應用

物件導向(Object-Oriented, OO)是目前軟體開發中經常使用的設計典範(paradigm),很重要的概念但我一直以來沒有好好瞭解清楚,「物件導向分析設計與應用」這本書正好補足我這方面的知識,閱讀之後感覺相見恨晚,書中內容都是物件導向的經典!這本書的翻譯相當流暢且確實,非常感謝譯者蔡煥麟先生的用心。


Conallen, Young, Maksimchuk, Houston, Booch & Engle著,蔡煥麟譯,物件導向分析設計與應用,台北:碁峯資訊,2009。譯自:Object-Oriented Analysis and Design with Applications, 3/E

「物件導向分析設計與應用」如同書名一樣,內容主要是講述物件導向分析(OOA)物件導向設計(OOD),較少在物件導向程式設計(OOP)上著墨。全書分成3篇共12章,分別是概念(Concepts)、方法(Method)與應用(Applications)三個部分,前兩部分較偏向理論說明,而最後一部分透過實際案例的分析設計,讓我們讀者對於OOAD能有實務的經驗。

我認為這本書最重要的地方是第一篇概念,學習物件導向往往偏重於設計方法與實作的部分,可是卻造成「知其然而不知其所以然」,我們在這本書中可以清楚知道為何需要「物件導向」的原因,難得一見(也可能是自己看的聽的不夠多)。使用物件導向是為了解決軟體複雜性的問題,這個精神一定要謹記在心,分析和設計都是為了這件事。

物件導向利用物件模型(object model)降低系統的複雜性,於是我們才能比較容易處理問題,其中物件模型包含抽象化、封裝、模組化、階層、定型、並行性、續存性等概念,這些都是物件導向的核心概念。使用物件模型提高程式的可再用性與可維護性,讓軟體開發及維護更有效率。

對於正在學習物件導向程式語言(programming language)的人,我特別推薦閱讀這本「物件導向分析設計與應用」,你將可以結合物件導向的精神和程式碼,學習上將更有所體悟。

###

延伸閱讀
System Analysis and Design 系統分析與設計
Unified Modeling Language 統一塑模語言
Object-Oriented Programming物件導向程式設計
Design Patterns物件導向設計模式

譯者在他的部落格中的書籍資訊
Huan-Lin 學習筆記: 《物件導向分析設計與應用 第三版》書籍相關資訊

2011年12月11日 星期日

Brownfield Application Development in .NET 軟體構築美學

軟體開發當中,最不想遇到的情形就是「接手既有的專案」,因為不曉得藏有多少bug,加上各個開發者撰寫程式風格的差異,於是必須先看懂程式碼才能改善或加入新功能,這有時比重新開發要花更多心力,如果又沒有相關的開發文件或規格,接手這樣的專案只能祈求神明保佑。

現在,「軟體構築美學:當專案團隊遇上失控程式,最真實的解決方案」這本書提供我們面對上述這類「棕地應用程式」應該如何處理。所謂棕地(brownfield)這個詞彙是借用建築領域中的定義:

棕地土地(簡稱棕地),主要是用在工業上或商業上的一塊土地,並且這塊土地可能被低濃度的放射性物質或危險的廢物所污染,一旦清除這些污染,有可能將再次的重新使用。

Kyle Baley & Donald Belcham著,蔡煥麟、張簡才祿譯,軟體構築美學,台北:精誠資訊,2010。譯自:Brownfield Application Development in .NET

棕地應用程式(Brownfield Application)指的是一個既有的軟體專案,此專案可能因為用了一些不好的開發方式、結構、或設計而產生許多問題,但若經過仔細的整理和重構(refactoring),還是有機會繼續發展使用。棕地應用程式包含三個基本元素:(1)既有程式碼、(2)差勁實務做法所造成的污染、(3)仍有改善或重複使用的潛力

注意到「棕地」不同於「老舊(legacy)」應用程式,棕地介於「綠地(greenfield)」與老舊之間,綠地應用程式沒有舊專案或技術的歷史包袱,而棕地應用程式通常有很沉重的,至於老舊應用程式則是處於維護不開發。有了這些概念之後,就會清楚瞭解這本書主要想說明什麼內容了。

「軟體構築美學」總共13章,分成開發環境(The ecosystem)程式碼(The code)兩個部分,一個開發人員面對的不外乎這兩個範疇。第1章是介紹棕地應用程式,後續幾章則說明棕地應用程式在這兩個範疇中有哪些痛點(pain point)和解決方法。
    • 第1章,認識棕地應用程式(Understanding Brownfield Applications)
  • Part 1 開發環境(The ecosystem)
    • 第2章,棕地專案的版本控制(Version Control in Brownfield Applications)
    • 第3章,持續整合(Continuous Integration)
    • 第4章,自動化測試(Automated Testing)
    • 第5章,軟體度量與程式碼分析(Software Metrics and Code Analysis)
    • 第6章,瑕疵管理(Defect Management)
  • Part 2 程式碼(The code)
    • 第7章,在專案中導入好的物件導向實務(Bringing Better OO Practices to the Project)
    • 第8章,應用程式的重新分層(Relayering Your Application)
    • 第9章,鬆散一些:降低程式碼的依賴性(Loosen up: Taming your Dependencies)
    • 第10章,重整使用者介面(Cleaning up the User Interface)
    • 第11章,重構資料存取(Refactoring Data Access)
    • 第12章,管理系統外部的依賴(Managing External System Dependencies)
    • 第13章,持續改善(Keeping the Momentum)
多數軟體專案常常受到「汙染」(通常不是惡意的,是不得已或無知之錯),隨著開發時間的增長,汙染程度與日俱增,最後根本無法維護利用。「軟體構築美學」適合推薦給專案管理與系統開發人員,裡面有太多正確的觀念和務實的作法非常值得學習,期望閱讀後不要再有「汙染」產生。

###

2011年12月8日 星期四

How We Test Software at Microsoft 軟體測試之道

在實際工作環境之中,軟體測試(Software Testing)在軟體開發流程似乎沒有受到重視,大都將軟體重心放在開發(Development)上,這樣的態度實在不好,最後往往導致有產品卻不能用,Bug太多沒有品質。

「軟體測試之道」介紹微軟(Microsoft)這間大型軟體公司的如何去做軟體測試,書中提到微軟的開發人員與測試人員的比例大約是1比1,並且落實軟體工程。我想因為有這些因素,微軟才能做出複雜又高品質的軟體系統(平台與應用程式),其中微軟的工程領域有鐵三角 (triad),指的是測試、開發與計畫管理三個專業領域,這也說明軟體測試是一個專業的技術。

Alan Page, Ken Johnston, Bj Rollison著,林宗斌譯,軟體測試之道-微軟測試團隊的成功經驗、方法與技術,台北:碁峯資訊,2010。譯自:How We Test Software at Microsoft。

本書分成四大部分,總共16章:
  • Part I, 關於微軟(About Microsoft)
    • Chapter 1, 微軟的軟體工程(Software Engineering at Microsoft)
    • Chapter 2, 微軟的軟體測試工程師(Software Test Engineers at Microsoft)
    • Chapter 3, 工程生命週期(Engineering Life Cycles)
  • Part II, 關於測試(About Testing)
    • Chapter 4, 測試案例設計的實務作法(A Practical Approach to Test Case Design)
    • Chapter 5, 功能測試技術(Functional Testing Techniques)
    • Chapter 6, 結構測試技術(Structural Testing Techniques)
    • Chapter 7, 分析複雜程式碼的風險(Analyzing Risk with Code Complexity)
    • Chapter 8, 以模型為基礎的測試(Model-Based Testing)
  • Part III, 測試工具和系統(Test Tools and Systems)
    • Chapter 9, 管理臭蟲和測試案例(Managing Bugs and Test Cases)
    • Chapter 10, 測試自動化(Test Automation)
    • Chapter 11, 非功能性測試(Non-Functional Testing)
    • Chapter 12, 其他工具(Other Tools)
    • Chapter 13, 用戶反饋系統(Customer Feedback Systems)
    • Chapter 14, 測試軟體加服務(Testing Software Plus Services)
  • Part IV, 關於未來(About the Future)
    • Chapter 15, 防患未然(Solving Tomorrow’s Problems Today)
    • Chapter 16, 創建未來(Building the Future)
第一部分主要說明微軟的軟體開發運作情形,可以看到微軟的開發人員有兩種:軟體開發工程師(Software Development Engineer, 簡稱SDE)軟體測試開發工程師(Software Development Engineer in Test, 簡稱SDET),微軟的測試人員本身就是開發人員!SDET除了設計測試案例(Test Case)之外,還需提出設計改善建議、問題原因分析、参與程式碼複閱...等,不是只有找bug就沒事。

第二部分與第三部分則偏重於軟體測試本身的方法與技術說明,我想這部分對於軟體開發人員都應該好好閱讀瞭解,你會發現軟體測試本身真的不是一件簡單容易的事情!這點常常會被忽略而輕視。最後第四部份則是說明微軟未來在測試和品質的方向。

「軟體測試之道」這本書除了講述軟體測試,也包含很多組織與團隊的內容,不只是一本技術的書籍,也適合管理職位的人閱讀,微軟的軟體工程值得借鏡。

###

2011年12月6日 星期二

Designing Web Interfaces 網頁介面設計模式

自從AJAX技術盛行之後,使用者介面(User Interface, UI)設計越顯得重要,期望能夠提高使用者經驗(User Experience, UX)。

現在,網頁設計師可以參考「網頁介面設計模式」這本書,作者整理網頁介面的精隨成為設計原則(design principles),也就是「設計模式(design patterns)」,相信不管你是不是設計師,藉由參考設計模式也可以做出相當品質的使用者介面。

Bill Scott & Theresa Neil著,古又羽譯,網頁介面設計模式,台北:碁峯資訊,2011。譯自:Designing Web Interfaces: Principles and Patterns for Rich Interactions, O'Reilly Media。

官方網站(英文):http://designingwebinterfaces.com/

這本書的架構以6個設計原則為主體,共14章,包含75種介面設計模式:
  • 原則1, 操作直接性(Make it Direct)
    • 第一章,頁內編輯(In-Page Editing)
      • 單欄直接編輯(Single Field Inline Edit)
      • 多欄直接編輯(Multi-Field Inline Edit)
      • 覆蓋視窗編輯(Overlay Edit)
      • 表格編輯(Table Edit)
      • 群組編輯(Group Edit)
      • 模組組態設定(Module Configuration)
    • 第二章,拖放功能(Drag and Drop)
      • 拖放模組(Drag and Drop Modules)
      • 拖放清單(Drag and Drop List)
      • 拖放物件(Drag and Drop Object)
      • 拖放動作(Drag and Drop Action)
      • 拖放集合(Drag and Drop Collection)
    • 第三章,直接選取(Direct Selection)
      • 雙態觸變選取(Toggle Selection)
      • 集合選取(Collected Selection)
      • 物件選取(Object Selection)
      • 混合選取(Hybrid Selection)
  • 原則2, 保持輕質(Keep it Lightweight)
    • 第四章,情境工具(Contextual Tools)
      • 永遠顯示工具(Always-Visible Tools)
      • 滑過顯示工具(Hover-Reveal Tools)
      • 雙態觸變顯示工具(Toggle-Reveal Tools)
      • 多層級工具(Multi-Level Tools)
      • 副選單(Secondary Menu)
  • 原則3, 同頁作業(Stay on the Page)
    • 第五章,覆蓋視窗(Overlays)
      • 對話型覆蓋視窗(Dialog Overlay)
      • 詳細型覆蓋視窗(Detail Overlay)
      • 輸入型覆蓋視窗(Input Overlay)
    • 第六章,嵌入面板(Inlays)
      • 對話型嵌入面板(Dialog Inlay)
      • 清單型嵌入面板 (List Inlay)
      • 詳細型嵌入面板(Detail Inlay)
      • 欄標(Tabs)
    • 第七章,虛擬頁面(Virtual Pages)
      • 虛擬捲動(Virtual Scrolling)
      • 直接分頁(Inline Paging)
      • 捲動分頁(Scrolled Paging)
      • 虛擬平移(Virtual Panning)
      • 可縮放使用者介面(Zoomable User Interface)
    • 第八章,程序流程(Process Flows)
      • 互動式單頁程序(Interactive Single-Page Process)
      • 直接輔助程序( Inline Assistant Process)
      • 對話型覆蓋視窗程序(Dialog Overlay Process)
      • 組態設定器程序(Configurator Process)
      • 靜態單頁程序(Static Single-Page Process)
  • 原則4, 送出邀約(Provide an Invitation)
    • 第九章,靜態邀約(Static Invitations)
      • 採取行動邀約(Call to Action Invitation)
      • 遊覽邀約(Tour Invitation)
    • 第十章,動態邀約(Dynamic Invitations)
      • 滑過邀約(Hover Invitation)
      • 可視線索邀約(Affordance Invitation)
      • 拖放邀約(Drag and Drop Invitation)
      • 推理邀約(Inference Invitation)
      • 更多內容邀約(More Content Invitation)
  • 原則5, 善用轉換效果(Use Transitions)
    • 第十一章,轉換模式(Transitional Patterns)
      • 打亮與轉暗(Brighten/Dim)
      • 展開與摺疊(Expand/Collapse)
      • 自我復原淡出(Self-Healing Fade)
      • 動畫(Animation)
      • 聚光燈效果(Spotlight)
    • 第十二章,轉換效果的目的(Purpose of Transitions)
      • 滑進與滑出(Slide In/Slide Out)
      • 面板(Faceplate)
      • 翻轉(Flip)
      • 手風琴式展開(Accordion)
      • 旋轉木馬跑馬燈(Carousel)
      • 淡入(Fade)
      • 放大(Zoom)
      • 知覺效能(Perceived Performance)
  • 原則6, 即時反應(React Immediately)
    • 第十三章,查詢模式(Lookup Patterns)
      • 自動完成(Auto Complete)
      • 即時建議(Live Suggest)
      • 即時搜尋(Live Search)
      • 精煉搜尋(Refining Search)
    • 第十四章,回饋模式(Feedback Patterns)
      • 即時預覽(Live Preview)
      • 漸進式揭示(Progressive Disclosure)
      • 進度指示器(Progress Indicator)
      • 定期重新整理(Periodic Refresh)
作者在每個設計模式中,除了說明功能和特色之外,還有「問題探討」與「重要常規」兩個部分,「問題探討」講述這個設計模式可能淺在的議題,而「重要常規」則是使用上建議必須遵守的規則。這些內容都只有在書籍中才有敘述,官方網站上沒有細部說明,因此建議購買或借閱來看,這些寶貴的經驗絕對值得。

推薦序提到一個建築觀念,以設計原則為主並以設計考量(design considerations)為輔去建構出建築物,我想這個概念同樣適用於網頁設計上,只要我們掌握住上述這些設計模式,設計時考量各種限制與衝突,則建立優異的使用者經驗將不會是一件困難的事情!

###

2011年12月5日 星期一

Stunning CSS3 想做好網站一定要會的CSS3

Cascading Style Sheets (CSS)是網頁中用來設計樣式的語言,重要性與HTML和JavaScript相當,一個網頁設計師應該要熟悉這三種語言。W3C持續訂定CSS第3版的規範,稱為CSS3,CSS3不只是舊版CSS2.1的延伸,還加入一些新功能!

目前有關CSS的書籍不多,這本「想做好網站一定要會的CSS3」講述CSS3的重要功能,並提出「漸進式增強(Progressive Enhancement)」的網頁製作方式,雖然CSS3標準尚未制定完全(請參考目前CSS3工作進度),各瀏覽器也未必完全支援,但作者認為漸進式使用CSS3的好處多於缺點。

Zoe Mickley Gillenwater著,張雅芳譯,想做好網站一定要會的CSS3,台北:碁峯資訊,2011。譯自:Stunning CSS3: A Project-based Guide to the Latest in CSS

本書共分成7章,第1章說明CSS3的概況,第2章至第7章介紹CSS3的重要功能,基本上是對應於CSS3中不同模組(module)的規範,書中介紹的主題如下:
推薦這本書給想認識CSS3的人,注意「想做好網站一定要會的CSS3」不是參考工具書喔!想要看CSS規範請至W3C網站查詢。

###

延伸閱讀
3 Elements of A Web Page網頁三元素

2011年12月3日 星期六

HTML5: Up and Running

HTML5的話題一直持續不斷,HTML5已經是未來網頁的標準(據說要到2022年才會定案)。最近仔細研究了一下HTML5,發現HTML5的範疇比想像中還要大,不能只說是網頁(Web pages)的標準,由於HTML5新增不少功能,可不只是定義網頁的元素標記(tag)。

因此,我認為HTML5是一個網頁應用程式(Web Applications)的標準,這幾乎是全新的一個「HTML網頁標準」!很多HTML5新功能需要JavaScript的操作才能使用,於是要學好HTML5可能需要花費更多心力,變成HTML5和JavaScript都要熟悉了。

Mark Pilgrim著,莊惠淳譯,「HTML5:建置與執行」,台北:碁峰資訊,2011。譯自:HTML5: Up and Running。

這本書總共10章,第一章「從頭說起」說明HTML的歷史,第二章說名檢測HTML5的方法,使用Modernizr這個JavaScript程式庫工具,從第三章到第十章探討8個主題:
  1. 新的語義元素,HTML5新增的語義元素標記。
  2. 繪圖,使用<canvas>標記。可以參考HTML5 canvas - the basics的說明
  3. 可以內嵌在網頁中的影片,使用<video>標記。
  4. 地理位置,位於navigator物件的geolocation屬性。
  5. 永久性的本地端儲存功能,位於window物件的applicationCache屬性。
  6. 離線的網頁應用程式,位於window物件的localStorage屬性。
  7. 改良的HTML表單,新增input標記的型別。
  8. 微資料(microdata),客製用語典(custom vocabularies)。
整體而言,這本書可以讓我們窺見HTML5的概況,內容方面是講述大方向、以概念為主,因此,「HTML5:建置與執行」適合給想認識HTML5的人。若想細部瞭解HTML5的語法和用法,需要再去閱讀HTML5的規範與相關應用的程式碼。

###

延伸閱讀
3 Elements of A Web Page網頁三元素

2011年11月28日 星期一

Learning SQL

SQL語言是使用資料庫時的基礎能力,對一個資料庫管理系統操作就是「說」SQL語言! 這裡介紹一本學習SQL語言的入門書籍,由歐萊禮(O'Reilly Media)出版,碁峰資訊發行,非常適合想學習SQL語言的初學者。

Alan Beaulieu著,張偉超、林青松編譯,陳佳新審校,SQL學習手冊(第二版),台北:碁峯資訊,2011。譯自:Learning SQL, 2nd Edition (Master SQL Fundamentals), O'Reilly Media。

SQL語言可分為三類:
  1. SQL結構描述陳述式(SQL schema statements)
    有關建立資料庫(資料表、索引、條件約束),通常是資料庫管理員要熟悉的工作內容。
  2. SQL資料陳述式(SQL data statements)
    建立、操縱和擷取儲存在資料庫中的資料,通常是程式開發人員與資料庫使用者,以及資料庫管理員必須熟悉的工作內容。
  3. SQL交易陳述式(SQL transaction statements)
    在多使用者的環境之下,用來開始、結束和回復交易,通常是程式開發人員與資料庫使用者必須熟悉的工作內容。
作者將重點放在講述SQL資料陳述式,全書總共15章,用了前面12章說明資料操作的語法,因此這本書適用於程式開發人員與資料庫使用者。另外,這本書以MySQL做為範例操作的資料庫系統,由於MySQL自由免費,而且安裝與使用都很簡單,因此沒有理由學不會SQL語言!

注意到,書中使用MySQL 6.0版本,目前2011年只有MySQL Community Server 5.5版本。 從Wikipedia搜尋發現,MySQL使用新的發行模型(New Release Model),6.0.11是最後一版,詳細可以參閱MySQL開發週期

###

延伸閱讀
Database 資料庫

2011年11月11日 星期五

System Analysis and Design 系統分析與設計

前些日子研讀系統分析與設計(System Analysis and Design),有個問題讓我感到疑惑,為何系統分析與設計的書籍都是討論「資訊系統(Information System)」呢? 若是如此,那書名應該改成「資訊系統分析與設計」。因為我認為「系統」是一個很大範圍的主題,不應該只侷限於資訊系統的分析與設計。同樣介紹一本書,資訊如下所示,聽jasper312說這是「系統分析與設計」領域的聖經本,各大考試的題目與解答都從參考這本喔!

吳仁和、林信惠,系統分析與設計—理論與實務應用,台北:智勝文化,2010。

書籍只討論資訊系統的理由,我認為有二個原因。第一 ,討論資訊系統比較簡單容易,目前資訊系統的分析設計工具與方法很多,因此討論會比較具體且容易。第二,萬物皆是「資訊系統」, 自然界中不外乎存在三種:物質、能量與資訊,討論資訊系統也就等於包含所有的系統。雖說是如此,但系統分析與設計的書籍看到最後,好像就是一本「軟體工程(Software Engineering)」的書籍,變成都是講述軟體開發流程。關於這點,希望未來能有書籍從不同的角度去討論「系統分析與設計」。

「系統分析與設計—理論與實務應用」這本書從兩個主要技術方法討論系統的分析與設計:「結構化技術」與「物件導向技術」,各別使用5章與6章的篇幅說明。結構化技術是將資料與流程分開考慮,而物件導向技術則是將資料與流程封裝成物件處理。除了這兩種技術外,還有其他如元件導向、服務導向等新技術。

整本書的架構如下:
  • 第01章 資訊系統開發概論
  • 第02章 資訊系統開發模式
  • 第03章 需求分析
  • 第04章 結構化技術
  • 第05章 結構化分析與設計-流程塑模
  • 第06章 結構化企業流程塑模個案
  • 第07章 結構化分析與設計-資料塑模
  • 第08章 結構化企業資料塑模個案
  • 第09章 物件導向技術
  • 第10章 使用個案塑模
  • 第11章 物件互動行為塑模
  • 第12章 使用者介面塑模──結構與狀態
  • 第13章 物件資料結構塑模
  • 第14章 系統元件與結構塑模
  • 第15章 結論與展望
若想對系統分析與設計有所認識,我想這是一本入門的參考書,淺顯易懂。另外,建議搭配一本軟體工程的相關書籍一起閱讀,對於資訊系統開發將會有更深入的認識。

###

延伸閱讀
Unified Modeling Language 統一塑模語言

2011年11月8日 星期二

Golden Rules for Writing E-mails 英文書信寫作

介紹一本實用的英文書信寫作書籍,這是「LiveABC互動英語教學集團」出版發行的書本和互動光碟,書中包含35篇主題的書信,內容除了講述撰寫英文書信的格式外,也詳述200個左右的常見錯誤說明,推薦大家這本書非常實用。

吳嘉玲,E-mail寫作不出錯(Golden Rules for Writing E-mails)全新增修版,台北:希伯崙公司,2008。

以下記錄電子郵件與一般書信的書寫格式重點。

一封電子郵件(e-mail)通常有9個項目:
  1. From:寄件人
  2. To:收件人
  3. Cc:副本,是carbon copy的縮寫
    Bcc:密件副本,是blind carbon copy的縮寫
  4. Subject:信件主旨
  5. Attachment:附加檔
  6. Salutation:稱謂語
  7. Body:信文
  8. Closing Segment:結語
  9. Complimentary Close:結尾敬語
 一般書信(非電子郵件)包含9個項目,由信件上至下依序為:
  1. Letterhead:信頭
  2. Date:日期
  3. Addressee:收信人
    Address:收信人地址
  4. Salutation:稱謂語
  5. Subject:主旨
  6. Body:信文
  7. Closing Segment:結語
  8. Complimentary Close:結尾敬語
  9. Signature:簽名
 另外,商用書信的三大格式分別是:
  1.  Full-block Form齊頭式
  2. Semi-block Form半齊頭式
  3. Indented Form縮格式
###

2011年11月2日 星期三

Beginning Programming 學習程式設計

如何學習一個程式設計?這個問題學校教育似乎沒有好好告訴我們青年學子們。以我自己的經驗來看,學校的程式設計課程大部分都是講述程式語法的使用,我認為這是錯誤的方法,教育程式設計的正確方式是:傳授程式設計的核心概念。

以下分享自己在程式設計學習之路的心得,期望能幫助正在學習程式語言的青年學子們。

首先,我們必須知道程式語言(Programming Language)的意義為何?我認為程式語言是「幫助人類完成處理資料的目的」,重點在於「處理」與「資料」兩個部分。

開始學習之前,根據「工欲善其事,必先利其器」原則,必須先準備好開發工具,不過這又關係到程式語言的種類。個人認為選用自由軟體的開發工具作為學習較好,例如EclipseNetBeans,也可以使用微軟的Visual Studio的Express版本。重點不在於開發工具和語言種類,這些都只是工具,學習程式設計在於程式設計本身!

開發工具有了,第一步先了解「資料」這個部分,你必須先認識資料型態,常見的資料型態有:整數、浮點數、字元、字串等, 這些屬於基本資料型態。由這些基本資料型態組合成的資料型態有:陣列、結構、類別等,稱為複合資料型別。學習的核心概念在於認識與瞭解每種資料型態的特性,什麼時候適合採用哪種資料型態,更進階學習則屬於「資料結構(Data Structures)」的領域了。

第二步是了解「處理」這個部分,程式處理資料不外乎兩種模式:重複與判斷。重複(或稱反覆)在程式語言中是迴圈 ,人類利用迴圈自動化處理重複的工作,一般來說有:for迴圈、while迴圈、do-while迴圈、foreach-in迴圈等,用於處理相同的動作。判斷(或稱選擇)在資料處理中依據資料狀態做不同的動作,通常有:if-else判斷、switch-case判斷等。重複與判斷互相搭配使用,已經足夠幫助我們完成處理資料的目的,同樣的,學習的核心概念在於認識與瞭解每種重複與判斷的特性。更進階學習則屬於「演算法(Algorithm)」的領域了。

再來,更進階一些的就是函式(副程式)的觀念,程式寫多的會發現程式碼重複,因此,你可以利用函式將常用的功能包裝起來成為函式,減少後續修改維護的麻煩。更進階的學習則是使用程式庫(library)與開發程式庫。

資料型態、重複與判斷這三類程式語言的基礎知識,如果可以掌握好,我相信你已經有程式開發的基礎能力。至於其他像是物件導向(Object-Oriented, OO)這個部分,我認為這是屬於更進階的程式設計學習,是讓你成為真正的「程式設計師」。

物件導向其實是程式語言的一部分(對於物件導向的語言來說,目前流行的程式語言時之八九都是OO),很難抽離去獨立學習程式語言。因此我建議剛開始學習程式語言,重心放在資料型態、重複與判斷這三類程式語言的基礎知識,物件導向若不明白以後再學習,千萬不要因為不懂物件而受挫,學習程式設計真的是很有趣的一件事情!

###

延伸閱讀
Web Programming Language網頁程式語言

熱門文章