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 StudioScintilla 的 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 ,那需要的會是 CygwincoLinux 則更省事,直接把 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

作科學研究常需要作些計算,可以幫我們作這些運算的軟體很多,其中最讓我印象深刻的是 MathematicaMatlab 。它們用起來方便,功能更是不在話下,但就是要花錢買,而且還不便宜。所以我就找了一些功能雖沒那麼完整,但還算堪用的軟體來試試,重點是都是免費的。例如用於代數、符號運算的 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 試用看看,再決定要不要裝來用。 MaximaYacas 的 license 是 GPL 的; Axiom 則是 Modified BSD License

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

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