2009年2月19日 星期四

Homework 1

1. 兩年前寫了幾篇文章,探討為什麼要學寫程式。參考之後,也描述一下你對寫程式的看法。

寫程式最重要的就是條理清晰,因此理所當然可以訓練邏輯的思考,如果從事電子相關的工作,寫程式幾乎已經是最基本所具備的能力,只有會寫程式才有可能繼續往上搭築更多的東西,硬體只是一個提供功能的東西,而軟體才是真正控制要如何發揮它的功能。就算從事相關的產業,我想也就如老師所說,他的確可以鍛鍊邏輯思考,
因為程式語言中,使用演算法來表示,是以一種非常嚴謹的方式來執行每一步,你希望它可以做出你心裡想的事,你就必須一步一步來,因為電腦只能一次執行一件事,因此如何正確的表示出來,也就需要相當的邏輯思考。所以對我而言,不論如何寫程式都會是一個必須具備的能力,而不是軟體開發人員才要會的一種工具。


2. 參考課本第一章,回答以下問題

a. What is Java Virtual Machine and Java Bytecode?

Java Virtual Machine

以C語言來說,我們先編寫source program(程式原始碼),再經由編譯器轉換成程式閱讀的object program(目的程式碼),但若我們需要更換硬體操作時,不僅要考慮到新硬體是否具備應用程式所需的程式庫,以及程式碼是否相容,為此,Java的程式開發者,使用Virtual Machine(虛擬機器),讓程式不需要以實體機器為真正目的碼,而是以Virtual Machine為主,因此只要操作的平台有Virtual Machine,就可以使用舊平台編譯出的目的碼。

Java Bytecode

Bytecode(位元組碼)就像是assembly language(組合語言)之於C,assembly language非常接近C語言使用的object code,透過assembly language我們可以直接了解到程式運作時,我們應該如何更有效的表示,而不須先以source code再透過編譯器轉換。因此Java開發者將Java的原始碼轉換成Bytecode,雖然他並不是真正的機器碼,但可以透過適當翻譯,而在任何機器上被執行,達到極高的可攜性。

b. Explain Java's feature "Write once, run anywhere."

昇陽公司藉由上面兩種工具,來達到只要編寫程式一次,即可在任何平台執行的理想,因此現在的手機只需要有JVM(Java Virtual Machine)就可以執行Java編寫的程式,不論我們使用的平台是Windows、Linux、Solaris、NetWare、HP-UX或Mac OS都可以執行。昇陽公司也發展出Java Chip,以硬體方式取代軟體解譯,將Java的virtual machine做成實際的微處理器,往後也就更多的產品可以使用Java來運作。

參考資料
http://www.ibm.com/developerworks/ibm/library/it-haggar_bytecode/
http://en.wikipedia.org/wiki/Write_once,_run_anywhere
http://programming.im.ncnu.edu.tw/J_index.html

沒有留言: