Showing posts with label freeware. Show all posts
Showing posts with label freeware. Show all posts

Sunday, January 08, 2006

我的 Linux on Windows 體驗

Linux-like 環境下許多好用的工具被熱心的使用者移植到 Windows 上。剛開始人們先移植的是上面的程式開發環境,慢慢的其他實用的軟體也陸陸續續被移植過來。我在 Linux 下接觸了 GNU toolset 後,也在 DOS 下找來了 DJGPP ,企圖讓程式可達到 source code portable 的目的。然後又用了好一陣子的 Cygwin ,也都是用來開發 DOS-based 的程式。在試用了 MinGW with MSYS 後,覺得比 Cygwin 順手多了,就一直沿用至今。 去年才聽說的 coLinux ,更進一步讓我們可以直接在 Windows 上安裝的 Linux ,省掉了許多從前需要移植程式的場合。

十多年前剛接觸 C++ 時,是在 DOS 下開發程式的,當時費了一個暑假的時間完成的〈天線場型電腦繪圖〉程式,就是利用 Borland C++ v3.1 這套工具來開發的。所以接觸 DJGPP 後,我也找了一套叫 RHIDE 的, 除了跟 Borland C++ v3.1 的 IDE 簡直是同一個模子刻出來的外,還是 open source 的。在參考了其他 library 後,我發現可以很容易把〈天線場型電腦繪圖〉程式移植過來,移植後也可以在 re-compiling 後就讓它在 Linux 下跑。

隨著 Windows 及 GUI 的興起, DOS 及其下的 console-based 開發介面慢慢地不能滿足我的胃口,所以就改採 Dev-C++ ,用了一陣子後在 CSZone 聽到有人介紹 MinGW Developer Studio 把 Scintilla 的 code folding 功能整合進去後,也第一時間試用。後來在 Parinya Software 網站的 Resources 上發現它介紹的 Code::Blocks Studio ,一用之下,驚為天人,雖然還有很多改進的空間,但整個設計非常合我胃口。如果你有使用 make 這類 project manager 的習慣,你一定會欣賞 CodeBlocks ,不但支援 multi-project 還支援 multi-target ,且可以跟 makefile 及 shell script 整合得很好。更讓人高興的是它還是 cross platform 的。

如果你想開發或移植程式到 DOS 來,那可以試試 DJGPP 。如果你只是單純的想利用 GNU toolset 開發跨平台的程式,那 MinGW/MSYS 是不二的選擇,再搭配 Code::Blocks Studio 這套跨平台的 IDE 後,更是如虎添翼。如果你想玩玩 XWindow 或 Linux 下其他 open source 的東西,但又不想裝 Linux ,那需要的會是 Cygwin 。 coLinux 則更省事,直接把 Linux 裝在 Windows 上,省了移植的功夫,概念上類似在 Windows 裝上 VMWare ,然後再於上面灌 Linux 。很多 coLinux 的使用者也是 Cygwin 的重度使用者,兩者可以透過 XWindow System 通訊。 Cygwin 下的中文問題可以參考這篇。要在 coLinux 下跑 XWindow ,那一定要看看這篇。

在中文維基百科也有提到一段 Cygwin 的歷史:

Cygwin始於 1995 年,最初作為 Cygnus 工程師 Steve Chamberlain 的一個項目。當時 Windows NT 和 Windows 95 將 COFF 作為目標代碼,而 GNU 已經支持 x86 和 COFF ,以及 C 語言庫 newlib。這樣至少在理論上,可以將 GCC 重定向,作為 cross compiler,從而產生能在Windows上運行的可執行程序。在後來的實踐中,這很快實現了。

在這裡也有相關的討論:

Cygwin 的發展方向是盡最大可能在 Windows 上模擬 UNIX 的 POSIX ,因此採用這套系統編譯出的軟件基本上需要 cygwin 的 POSIX 模擬模塊。唯一的例外,給編譯器賦予-mno-cygwin指令同時安裝有 mingw 運行時庫則可以直接生成原生win32編譯結果直接使用。這麼做如同在 Mingw 下編譯同一個程序一樣,但是要注意如果 mingw 本身都無法編譯這個程序在cygwin 下加 -mno-cygwin 也是沒有意義。

Tags: [] [] [] [] [] []

Saturday, January 07, 2006

Scientific Computation Tools

作科學研究常需要作些計算,可以幫我們作這些運算的軟體很多,其中最讓我印象深刻的是 Mathematica 及 Matlab 。它們用起來方便,功能更是不在話下,但就是要花錢買,而且還不便宜。所以我就找了一些功能雖沒那麼完整,但還算堪用的軟體來試試,重點是都是免費的。例如用於代數、符號運算的 Axiom, Maxima, Yacas 等。方便用於數值、矩陣運算的 FreeMat, Octave, RLaBPlus, SciLab 等。

Mathematica 是一套電腦代數系統(computer algebra system, CAS)。我們可以利用它來作因式分解,及微積分運算,值得注意的是,這些運算單元可以用代數符號表示就好,不用非得要是數值,因為它有精湛的符號運算能力。例如:我們可以要求它作 a^2 - b^2 的因式分解,而得到 (a-b) * (a+b) 這個答案。

Matlab 則對數值運算比較專門。其名字就是 Matrices Lab 的簡稱。可見它擅長在大量的矩陣運算場合發揮。我們把這類的軟體稱為數值運算環境(numerical computing environment, NCE)。

免費的 CAS ,這裡推薦 Maxima ,安裝之前,可以先到這裡試用一下,為了用起來更賞心悅目,記得順便把 wxMaxima 裝上。如果你想玩玩 Java 版的 CAS ,那就試試 Yacas ,介面雖陽春了些,但語法接近 C 語言,可能會讓你感到親切吧,可以偷喵一下 Yacas 的使用範例。此外 Axiom 也是不錯的選擇(它的 Windows 版本沒有繪圖模式,比較難看),你也可以先到 Axiom wiki's Sandbox 試用看看,再決定要不要裝來用。 Maxima 及 Yacas 的 license 是 GPL 的; Axiom 則是 Modified BSD License。

在逛 Axiom 網站時,還意外發現了 GNU TeXmacs 這個 wysiwyw 的科學文件編輯平台,可惜其 Windows 版的 porting 不大穩定,且無法正常處理中文。也許可以改而安裝其掛在 Cygwin 下的版本,有興趣的話可以試試。

要作數值及矩陣方面的科學計算,前述的 CAS 為主的軟體雖然也有支援部份,但總不是那麼方便。所以我另外找了提供專門數值運算環境(numerical computation enviroment)的免費軟體。 Octave 及 SciLab 是其中較有名: Octave 雖然是 GPL 授權的,但其 Windows 版要跟 Cygwin 綁在一起執行,不是那麼方便; SciLab 雖個人使用也是免費的,但它有專屬的授權方式,在商業用途有些限制,且說明文件的安排不是那麼好。我還另外試了一套叫 FreeMat 的,它是 MIT Type licence 的,說明文件淺顯易懂, Windows 的支援也不錯。另外還有 RLaBPlus 這套 RLaB 的後繼者,其 script language 的語言正交性較好,很有發展潛力,目前只有 Linux 版本。