29 10月 2009

[啊?] 天才老媽的跳躍式思考!

我跟老媽說『我想養一隻巴戈犬!』
結果老媽竟然回我說『你想買車嗎?』

啊?什麼跟什麼啊?

我很喜歡腳踏車那種安安靜靜地穿過一片林子,只有風聲呼呼地從耳邊帶過的感覺。曾經也自以為是地說『我以後都不要騎摩托車!』

後來~呵呵~我「為了考機車駕照」而「去考機車駕照」。
想想…考機車駕照真的是很棒的回憶呢!

退伍後,又為了找工作方便,就考了汽車駕照。
讀碩士時,有一陣子要天天往來新竹和桃園之間,一個人開著可以載四個人的車子,穿梭在其他也是可以載四個人,卻只載了一個駕駛的車陣之間…「只是一個人而已,要車子幹嘛?」我心想著:「一個人開車真的是一種好浪費的行為啊…」

回過神來,我說「媽,巴戈犬是一種狗。我是說我想養狗啦。」
想不到老媽又回了一句「你想抱小狗哦?我想抱孫子耶?」
「啊你想抱孫子和我要不要買車有什麼關係?」
「那你想養狗和我問你要不要買車有什麼關係?」

天啊…我的天才老媽,想不到你腦袋動這麼快。不過…你還是指望老弟那裡看會不會有孫子給你抱吧!

「我養條晚上回家時可以說說話的小狗就好了…我買車幹嘛?」
「可是那種狗好醜哦!」
「就是狗很醜,所以回家的時候就會覺得『啊…我不順一天算什麼,你可是要醜一輩子耶!好可憐…來惜惜…』」

不過…話說回來,我到底要不要去買部車呢?
大家都說,車子是男人「身份地位」的象徵,開太糟的車,別人看你的眼光會…

呵~我才懶得去解釋什麼呢。被人誤解又不是一天兩天的事了,很多事情沒有人問起,我也不會主動去說明啊。何況,一個成功的男人,應該只要注意「一個人」的眼光就好了吧。還會在意「外人」的眼光?那…這位老兄的修為火候還不到家哦!

嘖嘖…我想…我還是抱抱醜不拉機的巴戈就好了。

28 10月 2009

[勵志] 誰說企鵝不會飛呢?

"馬達加斯加" 是一部很有趣的動畫電影。不過...我對裡面主角獅子的自我認同、友誼的輕重或是長頸鹿與河馬之間的跨物種戀愛...沒有什麼興趣。

我覺得最有趣的是那四隻企鵝!

我用 Linux ,它的象徵也是一隻企鵝、
我有一位很重要的朋友曾被形容為「狂奔的企鵝」...

怎麼大家都要拿企鵝來開玩笑咧? -_-

在電影裡,出生在動物園的企鵝,只因『你不覺得不對勁兒嗎?這裡都沒有企鵝...因為我們不屬於這裡!』這樣簡單的信念,就立志要前往南極,回到那個「不曾去過的家鄉」(好奇怪的講法...)

立志沒什麼了不起的,我小時候天天也立志啊,了不起的是那股執行的意志,貫徹的行動!

電影裡的企鵝最後終於抵達南極...(結果在那裡受凍了幾天後,感想是『南極遜斃了...』)
Linux 在最近這兩年的應用也開始愈來愈普及、
我的朋友,則是狂奔到地球的另一邊去追尋夢想了!

誰說,企鵝不會飛呢?

同樣簡單的信念,我相信能「思考」的機器,是有辦法被造出來的,這幾個月來也嚐試做了一些程式碼撰寫的工作。工作單位的師長覺得『你會遇到的問題,別人一定都處理過了,你去學他們怎麼做...』如果,就要落入「一樣」的思維模式裡,那又怎麼會有突破呢?

我只用了 143 行程式碼,就做到了他們要做好幾年才得到的效果...

企鵝不只要飛,還要狂奔呢!

04 10月 2009

[自省] 一樣?不一樣?

Read for Joy 是一個很棒的部落格。最近看的一篇『我為什麼和別人不 一樣?』似乎又觸動了一直在逃避的什麼…

年紀很小的時候,我就開始體會到我和別人「不太一樣」。這句話的時候不是用那種「哈~我比較厲害!」的語氣,而是那種很氣餒的心情。

國語老師說:「回家作業是每個生字寫半行…」,每個同學繳上去的是上下半行,只有我是左右半行…一個格子左邊右邊各「塞」了一個瘦瘦長長的字。我還記得「顯」示的「顯」真是超難擠進去的。我記得老師發作業的時候,氣得把我的作業本甩得老遠…他一直以為我是故意和他作對,所以從此以後別的孩子維持寫「半行」的作業,我被罰寫「一行」。

數學試卷上我永遠只會算那幾題老師說「全年級沒有幾個人會」的題目,而剩下的基本題目…我真的算不出來。數學老師也以為我在故意耍帥…

我花了很多時間,很大的力氣想要去「和別人一樣」,但是下場往往卻是更加突顯自身的位置,而當我不再那麼努力的時候,卻當場就變成「隱形人」了。

在求異與求同之間,我像是沒做歸零的天平又配上了鏽蝕的砝碼,兩個秤盤搖來晃去讓我只在疲於奔命之間一天過了一天…

在廣告中的老提琴手問小女孩:「你為什麼要和別人一樣呢?」嘿~我也不知道,對草原上的斑馬來說,每隻長得都一樣,可以降低自己被吃掉的機率嗎?(沒有這回事兒,對任何「一隻」斑馬而言,「被吃就是被吃」;「沒被吃就是沒被吃」,這是「零」與「一」的問題,沒有中間數。)

不要再求同求異了!(也不要再相信沒有根據的說法了!拔獅子的…呃…離題了…)

就做自己吧。是同也好,是異也好。有遺憾也好,沒遺憾也罷。
我就是我,一組壞掉的秤子,我要學著接受我的不完全,帶著那股遺憾繼續活下去。

29 5月 2009

難得正經:語言學在學什麼?

大學同學 gustavw 的邀請,在他公司的美寶百科上貢獻了一個條目:
原文可以在 [這個連結] 找到,一樣都是我寫的,所以我把全文轉到獸窩來…

==語言學在學什麼?==

許多人會誤以為「外文系」或是「英文系」在學的就是「外文」(包括英文),但這種誤會就像誤以為食品系整天在吃東西讓或是森林系整天在種樹一樣讓人無言…

抱歉,外文系沒有教英文!

就像生物學是以生物為研究對象,研究生物的生理結構、分類及造成這些結構和分類的原因一樣,語言學是一種以「語言」為研究對象,研究語言的結構、分類及造成這些結構和分類背後的「原因」的學科。

學這幹嘛?語言,不是會說話就好啦!

就像我們開始讀語言學的第一天,教授們就會威脅我們說:『讀語言學的社會地位很低哦!要休學的還是不想讀的快去把手續辦一辦,不要浪費自己的人生!』那…語言學到底是幹嘛的?

從比較玄一點的說法來說,人類所描述的這個世界是以「語言」建構而成的。要瞭解這個世界,你得先透過語言才能與其他人或是其他物件交流你的想法。

用比較有「錢景」的講法,如果你能把語言結構像 DNA 序列一樣地描述出來,那麼你就能讓我們這些碳基的有機生物和電腦這種矽基的無機物開始溝通交流了。

是哦…那錢景在哪裡?

當有機的人類可以把自己的創造力和無機的矽基電腦晶片的計算能力結合在一起的時候…看到錢景了嗎?

雖然這個錢景可不會在接下來的十年內看到類似的產品上市,但是不得不承認這個目的的確能帶來「巨大」的商業利益和人類文明的跳躍式發展。

語言學家的養成訓練有很大一部份是落在邏輯思考的訓練和從雜亂的資料中找出潛在的規則的能力的訓練。不管是前者還是後者,語言學的研究方法離社會科學是比較遠一些,而離自然科學是比較近一點的。

但是又因為它的研究材料是來自於人類社會,而不是實驗室,所以和其他取材於社會的人文學科一樣,通常語言學也不被當做是一門多高深或是嚴肅的學科就是了。這種心態就像是『人人都會吃雞腿,所以餐飲系就不被社會大眾視為是多重要的科系;但不是每個人都知道羧甲氧基鳥嘌呤是什麼,所以 生物系就變得很神秘了!』(神秘的東西都很高級!古時候的巫師就是很高級的職業!)

語言學家應該至少具備兩項基本能力:

1). 對目標語言發音、文法、結構和意義之間的基本認識和分析能力。用白話文說就是『這些語言學家學新的語言,會比一般人快。因為語言學家知道哪些元素的變化極限在哪裡。』所以語言學家可以利用這項技能來編寫語言文法書,而且會比市面上大部份的文法書還要「簡單」且「小本」很多。

2). 對雜亂材料中潛在規則的截取能力。就像解碼器一樣,語言學家應該要有能力從一團亂七八糟的元素裡,找到它的規則。這項能力不管是應用在商場上的指數判斷、戰場上的情報解碼甚至是停車場上的格子安排,都能有相當程度的幫助。

07 4月 2009

[美食] 烤布蕾&秘方黑咖啡

布蕾是很典型的法國點心,一如其他「法式」開頭的玩意兒,外表看起來和實際上的內涵總是有點不太一樣。也正因為這點差距,讓這個愛狗愛成痴,遍地狗屎的國家一直給人「浪漫」的印象吧。

用電烤箱烤出三個小巧可愛的烤布蕾三兄弟,待會兒還可以搭配新的秘方調製出來的黑咖啡。
但就如剛才說的,法國玩意兒一定要搞得內外不一,外冷內熱才夠法國味兒;所以法國麵包的皮硬得像牛角,內餡卻要軟得像牛油;法國的計程車也要外表看起來像是普通的標誌,內在卻是莫名奇妙地可以拍到第四集 (還愈拍愈爛…)。所以我們既然準備好了香甜的烤布蕾內餡,當然要來幫它披上一層硬硬的殼才行囉!

廢話說太多,快把機絲頭拿出來!

嚇!這不是真正的瓦斯噴燈,這只是一支 99 元卻能讓普通家用打火機搖身一變,變成殺很大的噴火龍!(根據說明書的內容,它能噴到 3000 度呢!)!打開安全栓 (對,它只賣 99 元,但是也有防小鬼拿來火燒厝的安全栓哦!),對準剛撒上去的糖粒,開始噴射吧!

#Before >>>>>>>>>>>>>>#After









一邊吃著烤布蕾,一邊啜飲著加了特別的秘方的黑咖啡。也許是無心,但是加了這個秘方以後,我的咖啡終於「完完全全地」和教我煮咖啡的師父 Mr. H 的黑咖啡一樣了…想到我這次新試的秘方,再想到剛結束一段婚姻,獨自一人帶著三個孩子的 Mr. H …我突然了解了,師父的秘方是什麼了。

05 4月 2009

[哦耶] 我也有生日禮物!(炫耀文)

的生日向來都很低調,其實只要一杯咖啡配著音樂,如果能有心中在意的人一起陪伴,靜靜地度過,就很滿足了。

想不到,今年卻在生日前收到學生親手做給我的生日禮物和卡片!真是讓人忍不住哇哈哈哈地既開心又驕傲呢!

可愛的紙袋上還寫著 "Peter is a Good Teacher!" (給我一時眼花看成 "Peter is a God Teacher" 害我一時大驚…哦?原來我在學生的心中地位這麼『神』哦!趕緊再看一眼,原來是自己白目…)


袋子裡拿出的三顆手工包裝的糖果和一張「厚工」的卡片!


另一個學生送的藍色小熊和立體的手工卡片!


哎呀呀…雖然已經拿到禮物好幾天了,但是因為自己的情緒總是來得比較慢,因此也算是暗地裡樂了好幾天吧!(哇哈哈哈哈!)

03 4月 2009

Java & Python 程式碼疊疊樂之二

週的作業是簡單的流程控制。在 Java 裡有 If...else if...else, switch...case, for, while... 和 do...while 五種,但是 Python 卻只有 if...elif...else, for...else..., while ... else 三種!差了兩種,難道 Python 比較弱嗎?其實也不是,只是 Java 已經把許多工具準備好了,在應用上會比較快一點。而 Python 的「極簡美學」是不會允許疊床架屋的取向。

廢話不多說,馬上進入本週的題目:「請寫出一個能將數字分數轉為等第分數 (e.g., A, B, C... F) 的程式!」因為每個禮拜天上午還要工作的緣故,這個禮拜的課程應該會錯過「使用者輸入」的部份,所以,我自己把題目再加上『數字分數的取得,是由使用者輸入的』的條件。經實作以後,在 Java 上,做出了以下三種版本:

Java 評等機器人一號 (完全使用 if...else if...else 的運算;耗用資源 2*5 = 10)

public class gradingRobotOne {
public static void main (String [] args) {
java.util.Scanner readingRobot = new java.util.Scanner(System.in);
System.out.print("請輸入分數:");
int input = readingRobot.nextInt();
String gradeLevel = "未判定!";
System.out.println("您輸入的分數為" + input);
System.out.println("===================");

if (input > 100 || input < 0) {
System.out.println("分數應該介於 0 到 100 之間!");
}
else {
if (input <= 100 && input > 90){
gradeLevel = "A";
}
else if (input <=90 && input > 80){
gradeLevel = "B";
}
else if (input <=80 && input > 70){
gradeLevel = "C";
}
else if (input <=70 && input >= 60){
gradeLevel = "D";
}
else {
gradeLevel = "F";
}
}
System.out.println("成績評定為:" + gradeLevel);
}
}


運作畫面:


if...else if...else 的語法像是一把雙面刃,每做「一個」判斷,就要佔「兩個」資源數,感覺實在是太不划算了。如果用 switch 的話,每做一次比對,只會佔用「一個」資源數,這麼看來,也許用 switch 會是比較好的選擇哦!依據此原則,做出機器人二號!

Java 評等機器人二號 (完全使用 switch...case 的運算;耗用資源 41+2*1=43)
public class gradingRobotTwo {
public static void main (String [] args) {
java.util.Scanner readingRobot = new java.util.Scanner(System.in);

System.out.print("請輸入分數:");
int input = readingRobot.nextInt();

System.out.println("你輸入的分數為:" + input);
System.out.println("====================");
char grade = 'N';

if (input > 100 || input < 0) {
System.out.println("分數應該介於 0 到 100 之間!");
System.out.println("成績無法評定");
}
else {
switch (input){
case 100:
grade = 'A';
break;
case 99:
grade = 'A';
break;
case 98:
grade = 'A';
break;
case 97:
grade = 'A';
break;
case 96:
grade = 'A';
break;
case 95:
grade = 'A';
break;
case 94:
grade = 'A';
break;
case 93:
grade = 'A';
break;
case 92:
grade = 'A';
break;
case 91:
grade = 'A';
break;
case 90:
grade = 'A';
break;
case 89:
grade = 'B';
break;
case 88:
grade = 'B';
break;
case 87:
grade = 'B';
break;
case 86:
grade = 'B';
break;
case 85:
grade = 'B';
break;
case 84:
grade = 'B';
break;
case 83:
grade = 'B';
break;
case 82:
grade = 'B';
break;
case 81:
grade = 'B';
break;
case 80:
grade = 'B';
break;
case 79:
grade = 'C';
break;
case 78:
grade = 'C';
break;
case 77:
grade = 'C';
break;
case 76:
grade = 'C';
break;
case 75:
grade = 'C';
break;
case 74:
grade = 'C';
break;
case 73:
grade = 'C';
break;
case 72:
grade = 'C';
break;
case 71:
grade = 'C';
break;
case 70:
grade = 'C';
break;
case 69:
grade = 'D';
break;
case 68:
grade = 'D';
break;
case 67:
grade = 'D';
break;
case 66:
grade = 'D';
break;
case 65:
grade = 'D';
break;
case 64:
grade = 'D';
break;
case 63:
grade = 'D';
break;
case 62:
grade = 'D';
break;
case 61:
grade = 'D';
break;
case 60:
grade = 'D';
break;
default:
grade = 'F';
break;
}
System.out.println("成績評定為:" + grade);
}
}
}

運作畫面: 本來以為一號的解法已經夠浪費資源了,想不到因為從使用者手上取得的輸入分數可能會落在 60~100 之間而有 41 種不同的可能性,每種可能性的比對都佔一個資源,再加上一開始排除 100 以上和 0 分以下的判斷,結果反而讓耗用資源數比純粹的 if...else if...else 多了一倍多呢! 為了解決以上的問題,套用「食神」裡的台詞『爭什麼爭,摻在一起做撒尿牛丸不就好了』!接下來的機器人三號,就要同時使用 if 和 switch 的語法來實作。首先要開刀切除的就是那 41 種可能性的比對,如果我們把從 60 ~ 100 之間的數字都除以 10 ,然後再取它的個位數來做比對,再把 100 這個特別的數字額外處理,這樣一下子需要比對的數字就從 41 個縮減變成 4 個了! Java 評等機器人三號 (混合 if...else if...else 和 switch...case 的運算;耗用資源 4+2*2=8)
public class gradingRobotThree {
public static void main (String [] args) {
java.util.Scanner readingRobot = new java.util.Scanner(System.in);
System.out.print("請輸入分數:");
int input = readingRobot.nextInt();
System.out.println("你輸入的分數為:" + input);
System.out.println("====================");
char grade = 'N';
int score = (int)(input*0.1);
if (score > 10 || score < 0) {
System.out.println("分數應該介於 0 到 100 之間!");
System.out.println("成績無法評定");
}
else if (score == 10){
grade = 'A';
}
else {
switch (score) {
case 9:
grade = 'A';
break;
case 8:
grade = 'B';
break;
case 7:
grade = 'C';
break;
case 6:
grade = 'D';
break;
default:
grade = 'F';
break;
}
}
System.out.println("成績評定為:" + grade);
}
}

運作畫面: 哈哈~做到這裡,真是忍不住說一聲「食神好棒啊!」果然讓耗用的運算資源大大降低了不少咧! Java 的部份做到這裡,那一樣的功能,在 Python 裡會怎麼做呢? 首先是 Python 的 if...elif...else 的語法。 Python 評等機器人一號(完全使用 if...elif...else 的運算;耗用資源 2*5 = 10)
#!/usr/bin/python
# -*- coding: utf-8 -*-
# Filename: gradingRobotOne.py

grade = raw_input("請輸入分數: ") #利用 raw_input 的函式取得鍵盤輸入
score = int(grade) #從 raw_input 取得的字串類型 (String) 資料,轉換為 int 的類型
print "====================="
print "您輸入的分數為:", score

gradeLevel = "未判定!" #預設成績等級為「未判定!」
#利用判斷式把輸入的成績分等級
if score > 100 or score < 0:
print "分數應該介於 0 到 100 之間!"
elif score <= 100 and score >= 90:
gradeLevel = "A"
elif score <= 89 and score >= 80:
gradeLevel = "B"
elif score <= 79 and score >=70:
gradeLevel = "C"
elif score <= 69 and score >=60:
gradeLevel = "D"
else:
gradeLevel = "F"

print "成績評定為:", gradeLevel #印出評定結果

運作畫面: 整體看起來,和 Java 版本的評等機器人一號幾乎沒什麼分別。只是 Python 的程式碼結構較為簡單,掐頭去尾大概可以少個七~十行左右吧!果然是「載入 Python,少做多玩」的精神。 寫到這裡,應該就沒有其他的 Python 寫法了吧?畢竟 Python 本身是沒有帶著 switch 的語法的。而在 Java 版本的評等機器人二號和三號裡,switch 都是主要的判斷式呢。嗯…不過我不信邪,難道先天沒有,後天不能學嗎?在網路上查了查, Python 的 switch 能力,可以透過它特有的 dictionary 資料結構配合預先制定的 function 來達成。這樣說起來太玄了,還是直接看看程式碼配合在其中的註解來神遊一下吧! Python 評等機器人二號 (使用「自製的」switch 配合 if...elif...else 的句法;耗用資源數:5+2*3 = 11)
#! /usr/bin/python
# -*- coding: utf-8 -*-
# Filename: gradingRobotTwo.py

grade = raw_input ("請輸入分數: ") #利用 raw_input 的函式取得鍵盤輸入
score = int(grade) #從 raw_input 取得的字串類型 (String) 資料,轉換為 int 的類型
numLevel = int(score * 0.1)
print "====================="
print "您輸入的分數為:", score

gradeLevel = '未判定!' #預設成績等級為「未判定!」

#建立模擬 switch 語法的執行內容
def funcA():
gradeLevel = 'A'
return gradeLevel
def funcB():
gradeLevel = 'B'
return gradeLevel
def funcC():
gradeLevel = 'C'
return gradeLevel
def funcD():
gradeLevel = 'D'
return gradeLevel
def funcF():
gradeLevel = 'F'
return gradeLevel
#利用 dictionary 的資料結構建立模擬 switch 語法的 case 條件
values = {
9:funcA,
8:funcB,
7:funcC,
6:funcD,
5:funcF,
}
#設定判斷式,先排除超過 100 和低於 0 分,再額外設定 100 分和所有低於 60 分的條件,餘項目呼叫模擬 switch 的內容
if score > 100 or score < 0:
print "分數應該介於 0 到 100 之間!"
elif score == 100:
gradeLevel = 'A'
elif score <= 59:
values.get('5')()
else:
gradeLevel = values[numLevel]()

print "成績判定為:" + gradeLevel #印出結果

運作畫面: 哈~雖然用自製的 switch 在 Python 下編寫出的程式耗用資源還是比 Java 的評等機器人三號多了些,但是 Python 的程式是不用「預先編譯」的哦!所以如果遇上一個評等標準要一直改來改去的操作環境時, Python 評等機器人二號就比 Java 的評等機器人三號更能勝任愉快了! (ps.我覺得我好像有一點對 Python 偏心…) Note: Thanks for the feedback from an expert. Now I know that there is a handy module which can do better than the Python version of gradingRobotTwo.py (感謝匿名的高手回覆,我才知道還有一個好用的模組可以達到和 Python 版機器人二號一樣的目的,但卻更省資源的寫法) Python gradingRobotThree (By adopting bisect module, CPU resource consuming drop down to the lowest record: 2*1 = 2)(Python 評等機器人三號!藉由 bisect 模組的採用,這個版本的資源耗損達到了歷史的新低點: 2*1 = 2)
#! /usr/bin/python
# -*- coding:utf-8 -*-
# Filename: gradingRobotThree.py

from bisect import bisect #Thanks for the feedback with this handy module :)

grade = raw_input ("Please key-in the grade: ")
score = int(grade)
#numLevel = int(score * 0.1)
print "====================="
print "The grade is:", score

gradeLevels = "FDCBA"
breakpoints = [60, 70, 80, 90] # This can be rughly seen as [F < 60 => D < 70 => C < 80 => B < 90 => A]

def grading(total):
return gradeLevels[bisect(breakpoints, total)]

if score > 100 or score < 0:
print "The score number should be between 0 and 100 !"
else:
print "The grade level is:" + grading(score)

Screenshot:

22 3月 2009

Python & Java 程式碼疊疊樂之一

個月以來我一直在工作之餘自學 Python。這套程式語言在國內的資源很少,所以許多文件都是原文寫就。但畢竟自己總是外文系畢業的,所以這倒是不對我造成什麼困擾。

與此同時,也因為 Java 和 Python 一樣都是屬於物件導向 (Object-oriented) 的語言。所以我在學習 Python 的同時,也摸索著 Java 的同一功能的實作方式,並且記在一本很有趣的筆記本上。我把筆記本的左頁寫著 Java 該功能的概念和實作法;右頁則是記著在 Python 中的實作方式。

兩個月過去,自己用 Python 配合 wxPython 開發自己的第一支「有圖形介面」(GUI) 的程式給自己工作室使用!但是對使用 Java ,仍然不是一個很有自信的語言。

今天,終於排到了電腦補習班的 Java 課,開始「真正地」跟老師學習這套號稱簡單,實則「眉角」很多的程式語言!為了繼續維持這種「同時學兩種語言」的感覺,從現在開始,就把每次的 Java 作業,同時也實作一份 Python 的版本,放在這裡當做是筆記。同時這種「疊疊樂」的行為,也的確是所有宅男會對自己手邊的新玩意兒做的事情呀!

如果在少少的讀者中有人看出了什麼問題,因而得到指教的話,那對自己也是好事一件呢。

本週的 Java 作業:變數的屬性和 System.out.println() 的功能!
---------------------------------------------------------------
public class dataType {
public static void main (String [] args){

System.out.println("整數");
byte b = 7;
short s = 77;
int i = 777;
long l = 7777;
System.out.println("byte: " + b);
System.out.println("short: " + s);
System.out.println("int: " + i);
System.out.println("long: " + l);
System.out.println();//空一行

System.out.println("浮點數");
float f = 7.0f;
double d = 7.7;
System.out.println("float: " + f);
System.out.println("double:" + d);
System.out.println();//空一行

System.out.println("字元");
char c = 'P';
System.out.println("char: " + c);
System.out.println();//空一行

System.out.println("布林值");
boolean boo = true;
System.out.println("boolean:" + boo);
System.out.println(); //空一行

}
}


---------------------------------------------------------------
同樣的功能,在 Python 下的寫法就簡單許多!

#!/usr/bin/python
# -*- coding: utf-8 -*-
# Filename: dataType.py

print "整數"
b = 7
s = 77
i = 777
l = 7777
print 'byte: ', b
print 'short:', s
print 'int: ', i
print 'long: ', l
print '' #空一行


print "浮點數"
f = 7.0
d = 7.7
print 'float:', f
print 'double:', d
print '' #空一行

print "字元";
c = 'P'
print 'char:', c
print '' #空一行

print "布林值"
boo = True
print 'boolean:', boo
print '' #空一行


這次最有趣的發現是原來 Java 的布林值是 true/false 而 Python 是用大寫的 True/False!

31 1月 2009

[閱讀]「向周星馳學成功」+「燦爛千陽」

著年假,一口氣讀了兩本書。
一是寶鼎出版,盧俊、張永美合著的「向周星馳學成功」。
以成「書」的角度來看,整本書的內文其實有點上下文接不太起來,而且行為的風格則是近年來台灣的年輕人不太能接受的說教文了。以周星馳的成功做為經緯,鋪成一個影迷各方面的分析,總是不免會帶著三分崇拜的味道。當一個人成功了以後,在「粉絲」的眼裡似乎做什麼都是對的了。同樣的閱讀經驗在另一本陳昇的歌迷寫的「昇迷歲月」裡也曾經體會過,不過那是另一個話題了。

我對周星馳沒有什麼偏見,甚至我自己也認為是他的影迷之一。

雖然以「書」的角度來看這本文字集,會和期望有所落差,但我還是為裡面的一段文字感動許久…『…因為人總是會隨著長大而變得理性,不只是愛情,人是否還有勇氣為一件自己認為值得的事,決定自己的一生呢?』今天是年假的最後一天,明天開始又要和學生們繼續為了學習而努力打拼。去年的收入很少,今年的收入在哪裡也還不知道。但參與這些孩子的學習成長是一件我覺得「值得」的事情,於是我就撩下去了。

另一本讓我讀得整顆心都揪起來的,則是木馬文化出版,Khaled Hosseini (卡勤德.胡賽尼) 著,李靜宜譯的「燦爛千陽」。

故事的內容交雜了兩個相差十五歲女性的一生。一個是私生女背景的瑪黎安,因為身為名人的父親沒有勇氣拋棄自己的「好名聲」而被迫遠嫁給外地一位相差二十五歲的家暴丈夫;另一個則是出身中產家庭,父親為老師,自己也受過良好教育的萊拉。兩名女性因為阿富汗軍閥政權派系的戰火而嫁給了同一個先生,從彼此當對方是隱形人的階段一直到情同姐妹。

在故事裡,各式各樣權力派系的掌權像是翻頁一樣的快速,但是對女性的壓榨、迫害卻像是兩位主角受不完的苦難一樣讓人難過。直到後半部,瑪黎安為了救萊拉而殺了自己的丈夫,並且出面自首好讓萊拉能和年輕時的愛人重新開始一個新的人生時,我還是一直害怕在下一頁,命運或是作者是不是還另外安排了什麼苦難折磨在等著萊拉。這種既想快點翻到下一頁,又害怕未來是另一段無止盡的折磨的閱讀經驗,還真是第一次。

說是作者的安排,其實我寧可相信這樣的故事在戰火肆虐的阿富汗應該是隨處可見的心碎故事。但和周星馳的個人奮鬥史一樣,每個人都是為了自己內心那一點點「希望」、「夢想」和「愛」,努力地、卑微地使盡身上每一份力氣,活著吧。

[註:本文圖片引用自博客來網路書店]

27 1月 2009

define: Peter. w...

2008 是變動的一年。四月初開始做人生的第一份「正職工作」,然後在九月底把它給辭退了。在事後花了很多很多的時間在反省這件事到底做得對不對,終於,在農曆春節的前夕,應該可以把心安定下來,像是 CSI 每集結案時主角們都要從對受害者的投射情緒中抽離般,對自己說「那是很正確的事情!

如果說一個人一輩子遇到的每個起起伏伏都會留下印記的話,我希望我能儘量用正面的態度來看待每個印記,不管是一個讓人驕傲的刺青,還是一道難堪的傷疤。生命中的時時刻刻或多或少都定義了一個人「自我」的模樣。

現在過著創業的生活,收入不多,但是精神上是富足且愉快的。同時學習著 Java 和 Python 兩種程式語言,同時看著 Linguistics 和 Bioinformation 的書籍文章,不用對哪個教授或是學派負責,我愉快地充實自己。也不是為了什麼「文憑」或是「技能」考量,而是單純地享受「學習」的純粹樂趣。這麼說來,我的生活其實遠比上班族或是研究生幸福太多太多了!

在學習 Python 和 wxPython 的 GUI 時,我也才發現我很喜歡用條理分明的方式來表示每一道命題,也許這正是我一開始時受實驗語音學吸引的原因,也是再後來受形式語意學吸引的原因。只是當學習的目的是為了討好某位大咖時,那股純粹的樂趣就大打折扣了。

>>> peter
Traceback (most recent call last):
File "", line 1, in
NameError: name 'peter' is not defined