2013年6月10日 星期一

The Role of the Study of Programming Languages in the Education of a Programmer

課程:論文研討(二)
日期:2013/3/22
時間:14:00 ~ 15:30
地點:S104
講者:政治大學資訊科學系陳恭教授兼系主任
作者:資工研一 李翼豪

我們所寫的程式語言其溝通對象是人類而不是電腦,意思是說我們寫程式是寫給人看的,電腦需要透過編譯器將程式翻譯成機械碼 (binary code) 才可以被執行。

因此有一套好的程式語言 (programming language) 是很重要的,所謂好的 (適合的) 程式語言會依照問題需求有所不同,例如我想寫一支計算萬年曆的小程式,使用C語言或許就綽綽有餘,而不用C#、Java等高階語言,殺雞焉用牛刀。
如果需求是開發一套銘傳大學學生資訊系統,我可能需要選擇 asp、php 等物件導向語言來開發,因為問題有一定的規模與複雜度,使用物件導向語言所提供的函式庫 (Library) 可以讓我們用積木拼裝出我們想要的軟體或特定功能;使用整合開發環境(IDE)可以輔助我們開發程式,一個好的IDE可以讓你除錯更輕鬆、支援圖形化設計讓你事半功倍。

我將程式設計分為兩類:一類是著重演算法的設計,設計出解決問題的方法,可能用虛擬碼或數學符號式子來表示,並透過程式語言來實作,通常這類問題都比較困難。
一類是欲解決的問題規模夠大夠複雜,但並不困難,在實作階段上會比較依賴於函式庫使用、加速開發;也有問題是既困難又複雜,以我的經驗是在業界,大多困難的部分有提供函式庫能解決之。

通常規模夠大的軟體需要講求專案團隊合作,其分析師的工作除了管理手下的成員外,最重要的就是發掘問題、找出功能需求和系統性的開發軟體,因此有了軟體工程這個名詞出來,希望將開發軟體使用工程的方式去完成。但軟體工程卻不像土木工程一般能準確的估算時間,原因之一就是土木可以準確算出門有幾扇、窗戶有幾扇。軟工則是物件的概念,物件本身在記憶體中是動態的,而物件與其他物件之間又會有互動 (訊息傳遞) 的行為,變成我們很難去掌握、預期下一秒會發生什麼預料之外的錯誤。

軟體開發本身是一件複雜的事情,雖然我們希望使用工程的方式去開發軟體,但其實不然,軟體開發是一門藝術。

沒有留言:

張貼留言