Feeds:
Posts
Comments

Archive for the ‘Education’ Category

大多數的編程員,讀書時只學懂procedural programming,會用loop來處理隊列(例如下載多個網頁的隊列)對於像NodeJS這類Lambda演算的電腦語言,卻束手無策。要用NodeJS寫一個,等一個網頁下載完再下載另一個的程式,若不懂得用Recrusion,便寫不成了。

For many programming, as their education were mainly on procedural programming. They used to write a while loop to download a sequence of website. However, writing program in NodeJS, as a programming language in Lambda calculus, we need to understand how to process a series of tasks using recursion. It’s near impossible if you don’t know how to use recursion to call itself one by one until all the tasks have finished.

以下是一個不斷下載的例子,這個例子用NodeJS試圖下載數千個網頁,一個跟著一個。
The following is an example of how to use recursion to download thousands of webpages one by one using NodeJS.

var https =require('http-get');
function getPage(page){
	url="http://localhost/test.php?page="+page;
	req=https.get({url:url},'/tmp/temp'+page+'.html',function(err,result){
		if(err){
			console.log(err);
		} else {
			if(page<3000){
				page++;
				getPage(p,d);
			}
		}
	});
}
getPage(1,0);

Read Full Post »

最近在美國熱爆的「虎媽媽」提倡以嚴格的行為管束來教導子女,引發了很熱烈的討論。傳統的中國家庭,比較多人主張對子女嚴格的管束其行為。為了達致這樣的效果,他們為子女制定了很多行為上的規則。在這些家庭成長的小朋友,從小到大就要學習很多必須要遵守的規則,以及要跟從的作息時間表。

家長有權因應情況,單方面更改規則及時間表。而很多美國的家庭,相對地較少管束子女的行為,較主張自主學習。

今天,我們從另一個很特別的角度去看這個問題。

在「管理系統學」(Operation system)其中一個課題—「多線程」(Multiple-thread)講述在單一「處理器」( Central Processing Unit)下如何同時執行多個程序,這就是所謂多工(Multitasking)。

在傳統的「管理系統學」所提倡的是「管理系統」(Operating System)有絕對的權力管理任何「進程」(Process),包括強行暫停或關閉任何的「進程」(Process)。早期的Java電腦語言就是從這個構思來設計它的「線程管理」(Thread Management),但後來,Java的方針變了,對強制的暫停或關閉任何的「線程」有所保留,認為這種做法有不當的地方。並且鼓勵設計「線程」的人應該審慎設計,而不是依賴「管理系統」作出干預。

「管理系統」好比父母,而「線程」就好像子女。傳統模式之下,「線程」受到「管理系統」嚴格控制。一旦「線程」變得複雜,「管理系統」可能在不適當的情境下強行要求「線程」暫停或關閉,造成不必要的資料損失。只要「線程」在設計時多考慮不同的環境因素下的運作情況,就不需要「管理系統」的干預。

家庭教育都是一樣。如果子女能夠學習自我照顧,其實家長就可以免卻不必要的監管。所以,是不是需要用「虎媽媽」的教育放式取決於子女有沒有有足夠的「自我照顧」能力。如果子女早點學懂「自我照顧」能力,「虎媽媽」的監管反而會妨礙子女的發展。

Read Full Post »