跳到主要內容

發表文章

目前顯示的是有「programming」標籤的文章

VB 真的那麼好嗎?

為了要上空專學生暑修課程:程式設計 VB,想要找一下這門課程的大鋼,了解之前開設課程主要的上課內容是什麼?無意中看到一篇: VB語言比C還要好 ,這個標題在我心中實在是太搶眼,所以查看作者的學經歷,非正統資訊科學背景的博士:台大海洋研究所博士畢業,學歷相當高,經歷也非常豐富:台灣首府大學的設計學院院長;不過, VB語言比C還要好 這一篇文章的內容,有許多論點已經有許多人提出不同的看法,也掀起小小的論戰,更反映了國內非正統與正統資訊科學之間看法的衝突。如果大家不要硬把自己熟悉的語言要說成最好的語言,就如同「 不同的思維下的程式語言與環境 」與「 為何要 modern C++? 」所談到的哲學道理是一樣的,比較能客觀的接受其他別人的看法與觀點。 這篇文章提出許多比較主觀的看法,或許 VB 有簡易、易懂的特性,讓教育工作者可以拿來教育初學者,或是想要入門資訊科學的入門者;又或者說,讓非資訊科學本科系的學生、比較沒有興趣的入門者,提供入門學習的一種語言,提高這些人對於程式語言的興趣,倒是一種可以做的選擇。但是,在現今多如牛毛的程式語言當中,不乏更簡易、更適合入門的程式語言,例如:國內多數教導國小學童程式設計的 scratch、 MIT 主推的 Python 程式語言 等,真的 VB 那麼好嗎?適合當作入門的程式語言嗎?值得商榷。在此篇文中提到可以處理影像辨識的問題,確實可以處理一些影像的資料,其實 Javascript, Perl, Python, etc, ... 等等語言也都可以做到,不是嗎?又影像處理需要用到 FFT 時,那要如何做呢?確實 有 for VB 的 code 可以套用,但是速度真的可以嗎?引用 FFTW 的一句話: Our benchmarks , performed on on a variety of platforms, show that FFTW's performance is typically superior to that of other publicly available FFT software, and is even competitive with vendor-tuned codes. 講話必須要有證據,FFTW benchmarks 的證據就是最好的說明,似乎身為高等教育的教授們,不能固守在...

Cevelop IDE

在 Twitte 上看到 Peter Sommerlad Professor 在 ACCU 2016 Conference 中 使用 Cevelop IDE Demo 'Visualize Template Instantiations - Understand your Template Bugs',影片的網址如下: Visualize Template Instantiations - Understand your Template Bugs Using Units, Qantities, and Dimensions in C++14 在教學上, Cevelop IDE 確實較容易讓初學者了解到 Function, Template 的運作,不過,在這 IDE 多如牛毛的今天,哪一個最合適?Vim, Emacs, CodeBlocks, Visual Studio, Qt, CDT, etc, ...這個問題與 選擇 Programming Language 是一樣的哲學:學習、熟悉及專注在一種最適合你/妳自己或工作的開發環境即可。

不同的思維下的程式語言與環境

昨天在觀看 Scott Wlaschin 的 Functional programming design patterns 影片,簡單的介紹 Functional Programming 的觀念,片中提到 Domain Driven Design, DDD 的是設計,可以參考 F# for fun and profit 網站。 F# 又是 一種程式語言 ,對於英文語系的國家,語法看起來似乎比 C#, Java, Python, Javascript 簡潔,它的適用性,不只是簡單針對「語法簡潔」就能決定的個語言值得花費時間學習,需要再評估它支援的 Library、 效能等因素,況且對於非英文語系的國家,真的適合初學者來學習嗎?就如同 Java, Python 語言最大的缺點在於「效能」,Application 是否真的需要對於「效能」如此斤斤計較?也是在不同思維下,你需要選擇何種語言來學習的考量因素。  今天在 Jetsam 這個網站 讓我連結到 Frog Project 及 Rocket 的這語言 ,在 RocketCon 中的一位 Speaker: Michael Fogus 演講題目「 Extracting a Goose from a Klein Bottle 」,確實讓人不得不去思考這「 不同的思維下的 程式語言與環境」這個問題。 總之,在 21世紀的資訊爆炸時代中,資訊科技千變萬化,程式語言多如牛毛之際,惟有不變的是: Functional Programming, OOP, STL 等這些抽象的哲學思維。 補充: 醫學系學生 Sapan Bhuta 在他的 The Future of Programming 文章中寫道: Ultimately, Object Oriented Programming languages are becoming more powerful, functional, reactive, and Lisp-like overtime in order to help the modern programmer reduce exponential complexity and verbosity in today’s asynchronous performant era....

Gitbook 的安裝與測試

Gitbook 是一種文件產生的套件軟體,提供使用者可以利用簡單的 Markdown 語法來撰寫文件,再使用 gitbook 的工具轉成書本的形式。最大的好處在於: 使用的是 Markdown 語法,讓一般的使用者可以很容易、輕鬆的撰寫文件,相較於其他的文件產生的套件,例如:Sphinx[1], Docbook, TeX/LaTeX, etc ...入門的門檻已經簡單太多、太多了。命名為 Gitbook,意味著它結合 git 的功能,把文件送到 gitbook 網站 ,讓世界所有人都可以看到你/妳的作品。除此之外,系統上也有定價的機制,讓瀏覽者可以付費觀看。 Gitbook 是使用雲端來儲存世界上所有使用者撰寫的書籍,網路上也有其相同雲端服務的系統,如: Read The Docs ,只要到網路上免費申請帳密,就可以在線上編輯、發布自己所寫得書籍,不需要再特別安裝任何軟體。若要離線編輯 gitbook 書籍,需要安裝它提供的 gitbook Toolchain 軟體。這個工具軟體是使用 Javascript 所撰寫的程式,需要安裝 node.js 引擎,配合 npm 來安裝。在不同平台的安裝與設定上略有差異,以下是在 Windows 系統安裝與測試的過程:  首先安裝 node.js 更新 npm 套件: npm update 安裝 git 軟體: npm install git // 若安裝 STL's MinGW 則不需要再安裝 git 使用 npm 安裝 gitbook 工具程式: npm install -g gitbook-cli 完成安裝程序,就可以開始使用 gitbook 來產生書籍的文件。在使用這個工具之前,先說明這個套件的指令: 輸入 gitbook 出現 gitbook help 文件 安裝完成後,預設的 gitbook版本是 2.1.0 版,可以下指令來檢查:gitbook versions 檢查有幾種版本可以使用: gitbook versions:available 安裝 2.2.0 版: gitbook versions:install 2.2.0 移除 2.1.0 版:gitbook versions:uninstall 2.1.0 檢查輸出的版本: gitbook -V 產生 Webstie ...

Code Blocks 的 theme

在 Code Blocks Wiki 網站中有一篇文章 Syntax highlighting custom colour themes ,作者提供 Code Blocks theme,讓使用 Code Blocks 的人有多采多姿的人生,就按照文章所提供的 xml 設定檔及安裝的步驟來安裝,在安裝之前必須注意二件事情:第一件就是先備份 Code Blocks 的設定檔,在 Windows 作業系統是放在 C:\Users\user\AppData\Roaming\CodeBlocks\default.conf 檔;第二件是 Code Blocks 關閉狀態,沒有在執行中。接下來就紀錄在 Windows 作業系統中的安裝步驟: 1. 剪下作者提供的設定檔,存成 colour_themes.conf ,檔名是可以修改的。 2. 到 Code Blocks 目錄(Windows OS)中執行 cb_share_config 程式 3. 選擇 Source configuration file : colour_themes.conf, Destination configuration file: default.conf 4. 勾選 Source configuration file下方的每一項 theme style 5. 按下 Transfer 按鈕,如果成功會出現轉換成功的字樣 6. 按下 Save 按鈕,將 default.conf 設定值更新,完成後再按下 Close 按鈕 7. 開啟 Code Blocks, 到 Settings >> Editor >> Syntax highlighting 選擇你喜歡的 Colour themes

寫程式的思維

在 Overload 120 期中最後的一篇文章中,討論關於哪一種程式語言最適合青少年學習,文章提到 Python 不太適合,而提及 KISS 的軟體,在 Google 找到 Software Development: KISS, YAGNI & DRY. 3 Principles to simplify your life 這篇文章,或許寫程式的思維應該改變,才不會讓自己所寫的程式讓別人看不懂,或者說,讓自己以後也很容易就能看懂以前所寫過的程式碼,這才是真正寫一套好程式的哲學思維。

ABI or ELF library

自從 LLVM release Windows Installer 版本以來,一直希望能在 Windows 中使用 LLVM 工具套組,可是都是由於 Library 格式不同,無法使用到像基本的 iostream 等 std C++ library,所以還是不能在 Visual Studio 中以 Clag++ 來 compile C++ 程式。 在  LSB Infrastructure Project 中,開發了一個   ABI compliance checker 程式,提供程式開發者確認 Library 是否相容?在參考文獻當有一篇 ACCU 的文章,標題是 Interface Versioning in C++ , 討論有關於 share library 版本的問題,與 LLVM Win Installer 的使用問題相關,可以作為參考。

為何 mobile web apps 會慢?

今天在 Twitter 上看到 Herb Sutter post 一篇文章:「 Recommended reading: Why mobile web apps are slow (Drew Crawford) 」,第一句話寫著: I don’t often link to other articles, but this one is worth reading. 更是好奇的想看看 Why mobile web apps are slow 這篇文章的內容,大略瀏覽了一下內容,應該如 Drew Crawford 所道: So if you are trying to figure out exactly  what brand of crazy all your native developer friends are on for continuing to write the evil native applications on the cusp of the open web revolution, or whatever , then bookmark this page, make yourself a cup of coffee, clear an afternoon, find a comfy chair, and then we’ll both be ready. Herb Sutter 認同這篇文章所寫的內容,文章中還提到 Herb Sutter 去年他所寫的 When will better JITs save managed code? 這個文章。 2013.07.26 今天在中央研究院 計算中心通訊2013年第14期 中介紹了一個 mobile 開發環境,叫做 PhoneGap 是一個 open source code 及跨平台的 Framework,可以使用在 Android, iOS, BlackBerry 等不同的 Mobile 平台,文章中有說明其安裝的過程。在文章中有一段 PhoneGap 的問號?第一個最大的問號是: 問號1:只要會寫網頁就可以開發? 多數人選擇PhoneGap的原因大多為只懂得網頁開發技術、例如:HTML、CSS等等,但是其中要注意到的是, 在使用Ph...

C++11 The Future is Here

C++ Father Bjarne Stroustrup 發表了這個 Video, 談論 C++ 的未來 ,唉,許多的工作及家裡的事情要做,無暇及靜心的好好觀看。 Update: 2013.08.21 Bjarne Stroustrup 在 A9 所談論 C++ 未來的影片 而由 C++ 界的三位大師 Andrei Alexandrescu , Scott Meyers and Herb Sutter 所主談的題目: C++ and Beyond 2012 ,可以在 Channel 9 網站觀看。   相同的題目,也是論及 C++ 的未來發展,在 Microsoft所support 的 Channel 9 網站 ,由 ISO C++ Standard 的秘書長 Herb Suttter 主談的內容 。

ISO CPP Website 的文章

在 isocpp.org 網站中總是會 post 一些值得參考的文件,看過之後,卻沒有記錄下來,日後要參考這些資料,需要再次的從網站中尋找,相當耗費時間。又使用紀錄在 daily 無法使用超連結的功能。因此使用 Blog 來紀錄自己認為有價值的文章清單,以下是按照日期的先後順序來做來排序: 2013.10.18 : Out Parameters, Move Semantics, and Stateful Algorithms—Eric Niebler 2013.09.03 : A Glimpse into C++14: Combine Flexibility and Performance with Dynamic Arrays and Runtime-Sized Arrays 2013.08.20 : Functional C++: Type Classes—whanhee 2013.08.20 : C++ String to Int—Ivan Neeson 2013.07.28 : Expression Templates—Volker Krause 2013.07.25 : The Universal Reference/Overloading Collision Conundrum—Scott Meyers 2013.06.23 : Efficient Programming with Components—Alexander Stepanov 2013.05.02 : static constexpr variable vs function 2013.05.02 : Functional Patterns in C++—Bartosz Milewski 2013.05.01 : C++ on the Web: Run Your Big 3D Game in the Browser!—Andre Weissflog 2013.04.30 : Preconditions, Part 4—Andrzej Krzemieński 2013.04.08 : Universal References (revisited)—Ben Hekster 2013.03.29 : Preface for The C++ P...

Symfony--a PHP Framework

PHP長期以來都提供了良好的 Web Application 開發環境,目前流行的開發過程是採用 MVC or MVP or MVVM ,而 MVC 的開發環境是在 PHP Framework 最被使用的一種方式,在之前認為 YII 是一個不錯的 PPH Framework,主要是快速、輕巧,但是今天在 php master 中看到一位開發者是 Using Zend Framework with Symfony ,如果 Symfony 能與 Zend Framework 結合的很好,是乎可以考慮使用這樣的組合來開發 Web Application,而不需要使用到 Wt(a C++ library for developing web applications ) or Qt 5 的平台來開發 Web Application。

Compiling Haru Library with Cmake + CodeBlock

Haru Library 是一種產生 pdf 的 library,所提供的 API 可以支援許多不同的程式語言,當然包括 C, C++。要安裝這個 Library 要下載 source code 來安裝,安裝的步驟如下: 1. 下載 Haru Library Latest development release: 2.3.0RC2 2. 開啟 cmake ,點選「where is the source code」 3.  在點選「where to build the binaries」,最後面加入 /build 4. 按下「Configure」,選擇「Code:Block - MinGW Makefile」 5. 會出現「error in configuration process:poject maybe is invaild」,調整 CMAKE_MAKE_PROGRAM 的設定路徑,以及勾選「CMAKE_USE_RELATIVE_PATHS」  6. 再次按下「Configure」(由於 STL 的 MinGW 套件已經有 PNG, ZLIB 的Library,所以不需要自行編譯) 7.檢查一下各個 Group 中,每一個套件的設定值,調整 CMAKE group 的 CMAKE_INSTALL_PERFIX 設為:「d:\Library\libharu」目錄 8. 如果沒有什麼問題,再次按下「Configure」 9. 接下來按下「Generate」 10. 到 D:/library/src/libharu-RELEASE_2_3_0RC2/build 目錄中,開啟 libharu.cbp 11. build libharu.cbp 時會出現錯誤,是因為程式有 bug ,需要修改下列的程式碼:      在 hpdf_image_ccitt.c 程式中,修改 753行將 「HPDF_Image」改成「HPDF_EXPORT(HPDF_Image)」。 12. 測試 example 的程式是否可以執行

Visual Studio Express 2012 的版本

重新安裝 Windows 8 主要是因為原來 Windows 7 的 C: 空間不足,無法再安裝Visual Studio 2012(原來只 partition 50 GB),等了許久才知道學校已經有 Windows 8 的授權版,也很自然的裝了 VS Express 2012 for Windows 8 的版本。一直都是使用 CodeBlocks + MinGW 寫程式的環境,很自然的不會想用 VS 來 compile 程式;所以,安裝好 VS 之後就把它放在一邊,要等到再次 compile LLVM or 某些 open source 時再來用它。 今天,看到 MSDN 的 VC++中有一個 Parallel Programming 的 C++AMP 的 Classes,想試一下這個 Classes 的效果及是否需要特別的 hardware? Copy Overview 中的程式來測試,當然要拿 VS Express for Windows 8 出來,單獨對這個程式 compile,結果如這一篇文章所說: No more Win32 template on Express Edition at Visual C++ 2011? (ps: Visual C++ 2011 in Microsoft Visual Studio 11.0 就是 VS Express 2012),在 VS for Windows 8 中找不到 Win32 console application, 在 Answer 的第一篇中引述 Visual Studio Express 2012 for Windows Desktop ,第四段中間寫這:With this new Express edition, developers will be able to use C++, C#, or Visual Basic to create Windows desktop and console applications, 所以如果要使用內建的 Win32 Console Applications template 的話,需要安裝 for Desktop 的版本。  如果不想要再安裝 for Desktop 版本,可以使用 這一篇文章 所說的作法: 在 command line...

Installing new version boost library for CodeBlock IDE

2013.08.15 -------------------------------------------- Boost 在 sourceforge   中也有 binary 的檔案 ,不需要到 BoostPro 中下載他們編譯的 binary 檔。 Boost document 是使用 DocBook 的套件所製作的文件,在 Boost document 第39章 有介紹,另外,在 sourceforge 中也有 Boost document for pdf format 的檔案,。 --------------------------------------------- 之前拿 boost library source code 來編譯,當時的版本是 1.38v,現在已經是 1.52v 了,不過編譯 boost 需要很多時間,不想再編譯,而在 Boost Getting Started on Windows 中寫道:The easiest way to get a copy of Boost is to use an installer,這個 installer 是 BoostPro Computing 所提供,下載這個 installer 以後,就像 Windows 安裝軟體那樣容易。   由於將 OS 升級為 Windows 8,之前所安裝的 boost library 已經不在,新版本 (1.51 版 by BoostPro) 是否將 include 的目錄架構變更或以前就沒有這個目錄,已經不可考了,總之,之前所寫的設定過程已經不能再使用了。不管這些的變化,主要能將 1.51 版本的 boost 讓 CodeBlocks IDE 可以讀得到才是重要,底下是整個設定的過程,在 codeblock.txt 檔中是簡單設定的版本。   1. 下載 installer, 選擇所需要的 library 形式來安裝,假設是安裝在 c:\library\boost_1_51 目錄   2. 在 CodeBlocks 中設定 Global variable:       2a.) Setting -> Global variable, new...

The Architecture of Open Source Applications

在 Plan 9 wiki 網站的 reference 中看到 Eric S. Raymond (The Art of Unix Programming 作者)目前正在維護 gpsd system, 在 他個人的網站 中有些他開發的程式,此外,他個人目前的想法,可以從 Blog 中看得出來。他 post 一則 Engineering zero-defect software 的文章,有許多 computer 的 Hacker 在其中提出 comment。其中 Jakub Narebski 提出了一個網址,是 The Architecture of Open Source Applications 線上的書,於 May 8, 2012 出版了第二冊,確實是值得看得書。 gpsd is a daemon that receives data from a GPS receiver, and provides the data back to multiple applications such as Kismet or GPS navigation software

4 大開放源碼鍛造廠

在製作簡報技巧課程的 slide 時,看到在[1]中的一篇「 GitHub 取代 SourceForge 成為開放源碼開發中心 」文章,文章中有下列的內容,是可以參考的資料。以後要找 source code 也可以到這一些網站來找。 綜合來看,C++ 以 36 萬餘次提交成為最普遍的程式語言,其次是 Java、Python、C、JavaScript、Ruby、PHP、C#、Perl。從鍛造廠加以細分,不同的鍛造廠似乎吸引了不同語言的使用者。 例如,GitHub 在 Ruby、Python、JavaScript 用戶中最為普及,SourceForge 傾向吸引 C++、Java、C 使用者,Google Code 則以 Java、C++、Python 居多。至於 Microsoft 經營的 CodePlex,則理所當然地吸引了最多的 C# 開發者,其次則是 JavaScript 和 C。 ------------------------------------------------------------- [1] http://www.openfoundry.org/tw/worldwide-news/8376-github-sourceforge-

mmap()

在讀作業系統時,看到  POSIX API 提供了 mmap( ) 及 umap( ) 的功能,將 memory 當作 file 來使用,以及釋放 memory 空間的 function。 mmap() 就是將 memory mapping 成一個 file ,如果在程式設計有需要用到大量的檔案內容時,可以採用 POSIX API 提供的這個 function 來對 file 做有效率的存取,特別是兩個以上 process 同時存取相同一個 file 時。