2008年12月20日 星期六

C++ 之父 Bjarne Stroustrup 談軟體教育

Bjarne Stroustrup 是當代軟體的大人物之一。身為 C++ 程式語言設計人,他的成就已經
影響了無數的軟體開發專案,包括Google 搜尋引擎、到 iphone 手機

Bjarne Stroustrup 在貝爾實驗室有 24 年的研究員經驗,2002 年獲任德州 A&M
大學的資訊工程學系主任,這些經驗讓他對教育未來的軟體開發員有深度的見解。

在訪談中 Bjarne 也坦誠表示教育界所面對的挑戰與問題,以及相關的改進。談到的問題
包括學生觀察能力不足以深入瞭解,學校教育要如何平衡理論與現實之間的差距,他也
指出業界最常抱怨的是資訊科系學生的能力並不完全合格

他也認為學生在學時將太多重心放在 Java 程式語言上。也許 Java 讓開發員入門學習
更為容易,但問題的癥結點是在寫程式的態度上,而非單純歸咎到程式語言上。學界
正在努力將程式語言課程設計得更完善,來讓學習軟體開發更有實際用處。

就 Bjarne 所知從 Adobe, Apple, AT&T, IBM, Intel, Microsoft, 到不知名的小公司,
幾乎每一家大大小小的軟體公司,或是有使用到軟體的公司都曾經跟他抱怨過缺乏好
的軟體開發員。

可能 C++ 程式語言至今仍是許多公司採用的重要程式語言,許多業界公司人員都會找
Bjarne 討教相關議題,主要的問題不外乎缺乏好的程式框架 framework 、基礎架構配置 infrastructure、以及大型機構普遍都缺乏對能夠駕馭複雜軟體系統的人才。

由於學校教導的重點在於電腦科學而非軟體開發,可能有學習多年程式經驗的學生仍然
會寫出充滿神奇數字( Magic number)的程式碼,造成日後他人/自己閱讀困擾。原因不外
乎程式設計被認為是低階的技術,或是認為學生自己有能力學會

有些研究生對於寫出來的程式碼,完全沒有考慮到日後擴充、維護。學生的學習重點
在於演算法、資料結構、計算機架構、程式語言、作業系統。

Robert Dewar 則是指出公司機構會發出這些抱怨,就是因為他們找到的程式開發員無法
在公司所要求的便宜價格、穩定性、時限內產出所需的程式碼,因此制定出許多防呆
防錯的限制。但也因為這些陳規陋習讓真正有才能的高產出程式設計師無法盡情發揮,
甚至會因此被同化而墮落下去。

Bjarne Stroustrup 在他的新書 Programming - Principles and Practice using C++
(for educators)中指出,教導學生如何寫出一個可供他人接手使用的軟體專案,其中包括
錯誤處理、類別設計、檔案輸出入、畫圖與圖型介面、標準函式庫的容器與演算法。
其中也呈現了基本的物件導向程式設計泛型程式設計。

軟體開發教育的其中一個缺失是,現今有太多現成的工具、軟體可供使用、修改,學生
們缺乏獨立工作思考、並且要習慣不是為了考試成績而學習(但出了社會還是要面對考績)
努力認真的精神、尋找所需資料的能力、學習寫作與口頭表達思考的能力專案導向
的工作是最適當的訓練方式,使用什麼程式語言倒是其次的問題,最好有點難度給與
學生挑戰的機會與成長空間。

給與學生重複訓練的機會相當重要,因為人總是健忘的,特別是結合學過的演算法、
資料結構、計算機架構的理論後,給與學生可以整合這些理論與實際寫出專案程式的
機會是相當重要的。這也是 Bjarne Stroustrup 熱衷的教育方向之一,他認為資訊科學是
相當完美的應用科學,不論偏廢理論或實作都無法成功(這也是現今大家面對的問題)。

Bjarne Stroustup 認為身為一名資訊科學教授,不能只偏重在一種程式語言上,本身也要
熟悉多種程式語言。

除了資訊科學的工程面以外,最終的目標在能夠寫出有品質的程式專案後,還要能追求
軟體藝術層面的提升。但這仍需要有科學的計算模型來評估工程面的實用性,以及藝術
性。

軟體教育不只是熟練程式設計的技巧,需要放更多心力在數學、科學、工程面上。訓練
學生觀察出軟體專案之美的最佳方法,就是給學生們欣賞更多趨近完美的軟體專案成果
。最好是像藝術家、建築師的展覽般,舉辦學生的成果發表會,讓學生們多觀摩何謂美
的軟體專案,這是軟體美學教育的最佳途徑

軟體教育也是需要下苦功的,就像要成為一名稱職的水管工人、你不可能一夜之間成為
一名專業的軟體工程師,做你該做的系統分析、設計,實作並驗證你的設計,反覆的
練習直到這些動作成為你自己的一部份

像 Java 這類滿載許多預製好的函式庫可供使用的程式語言,可以是很便利的工具,但
如果你只知道如何使用這些預設的函式庫並不能讓你學習、成長。Bjarne 認為 C/C++
的記憶體配置觀念仍然是相當重要的。

有人說軟體外包造成資訊科學學生遞減,但也許我們可以說是因為沒有足夠多的好軟體
設計師,導致這些工作外包到海外尋找更多的好工程師。

C++ 的問題之一是標準函式庫並不那麼好用,希望 C++0x 可以解決這個問題。包括
vector 初始化 {} 與 for loop 的 auto range 語法,都是要簡化軟體設計的工作。

Bjarne Stroustrup 認為軟體開發者的偉大之處,在於他的好奇心、創新、韌性、邏輯
推理、能夠溝通進行團隊合作。這應該可以適用在軟體開發以外的領域,另外一項重要
的特質是,不要忘了你的幽默感

Bjarne Stroustrup 給所有軟體設計師的建言:
程式設計只是軟體開發的一部份,不管你的程式寫得多棒,前題都是必須要正確運作
、解決問題,並且能讓別人看得懂,請改善你的溝通技巧,學習傾聽、問正確的問題
、寫作簡明,表達清楚。正式的軟體開發工作是藉由團隊合作完成,請改善你的社交
技巧。埋首在成堆比薩跟可樂的頂尖聰明技客已經無法靠單打獨鬥面對當代軟體開發。

認真完整的學完你的第一個程式設計語言,試著用這個程式語言解決困難的問題,不要
沉迷在奇淫技巧當中,專注在技術跟科學本質上。

學習第二個程式設計語言,最好是跟第一個程式語言不完全類似的語言(interpreter, compiler),只會一種程式語言絕對不足以面對現今多樣化的問題。每個問題都有相對
最適合的程式語言。

不要只會程式設計。軟體是解決問題的工具。將你的軟體技能運用在各種可能的領域
中世紀歷史、汽車引擎設計、火箭科技、血壓分析、圖形影像處理、幾何計算、生物學
塑模等,任何你可能有興趣的領域。就我個人領域來看,這些都是真實可應用的領域。
當然最理想的是你已經有對某個領域抱有相當的興趣,請開始使用程式與軟體解決你所
遇到的問題吧!

相關文章:

程式設計的文藝復興

相關連結:

Bjarne Stroustrup on Educating Software Developers

2008年12月19日 星期五

網路匿名,是自由還是亂源?

一名開 Dunkin' Donuts 甜甜圈咖啡店的 Zebulon J. Brodie 因為
自己開的分店被網路上某人評論為世界上最髒、最不衛生的餐
廳,他向州立最高法院提出訴訟,認為 NewsZap.com 線上討
論區必須提供毀壞他的甜甜圈店名譽的發言人真實身份。

究竟對於他人、店家、事物的負面評價,是人民該受到保障的
匿名言論,還是該受到限制的實名化管制?

相關連結:

Maryland Court weighs internet anonymity

Md. Court weighs internet anonymity

2008年12月17日 星期三

副食品的好幫手

從SSH開始吃副食品到現在已快2個月了,食物種類也從純米精變成
各式蔬果粥泥。目前嚐試過的有地瓜粥、南瓜粥、紅蘿蔔粥、香蕉粥
、蘋果粥、葡萄粥、菠菜粥等。我從網路上發現很多媽媽製作副食品
都會準備一台馬力強的食物調理機。可以節省製作粥泥的時間,也可
確保食物不會殘留顆粒造成寶寶噎到。因為剛開始吃副食品的階段必
須將食物壓成泥狀,原本我也是用鐵湯匙將地瓜、南瓜、紅蘿蔔等壓
成碎泥狀,但費時又費力,後來改用貴夫人後,就稀飯+地瓜一起用
調理機打成泥,省時又方便。

食物調理機從1千多到好幾萬的都有。我用的是貴夫人LS-528型,使
用至今感覺還不錯,可以將粗纖維的蔬果打成綿細的泥狀,這對每天
要製作寶寶副食品的媽媽來說,的確是不可或缺的好幫手。價位約五
千元左右,跟動輒兩三萬的BlendtecVita-mix相比,實在是便宜又
好用。

2008年12月12日 星期五

日本科學家成功重建腦中影像

世界首創!日本京都科學家成功重建腦中影像。這項研究對於年長
以及表達有困難的人帶來新希望。

在國際先進電信研究單位的神經資訊系所的
Yukiyasu Kamitani 以及 Yoichi Miyawaki 宣稱已經可成功從人腦
中直接重建一億個影像。以後有可能直接讀取人類心靈以及夢境
直接重建影像!

這項研究結果將被發表在美國 Neuron 科學論文期刊(summary)

影像的光線在經過視網膜傳輸後,到達腦部視覺皮層,我們找了兩
個受測者,觀看 440 張 100 畫素的影像後。每張圖有隨機的灰色,
閃光區域。同時採用功能性磁震造影 fMRI (functional magnetic
resonance imaging)
掃描,並借由照片分類區分出大腦辨示照片的
模式。

受測者接收到的是 100 乘以 100 種路徑、也就是 2 的 100x100 次
方種光影變化。

接著科學家給受測者關看 "neuron" 單字,以及五張方形、十字圖
樣,依據收到的腦部活動模式重建中光影打出來的羅馬字母與其
他數字影像。

簡單的說這個重建是先給觀看者影像,記錄他在觀看影像的腦波活
動、血液流動變化進行配對,再利用這些配對出來的腦部活動跟影
像,反推出被觀察者腦中影像。

關於隱私,將可以成功重建所有人腦中的影像時,我們腦中的心靈
活動與夢境影像隱私將無處可藏,即使只是浮光掠影的一瞥也可能
被記錄下來,我們要面對的會是更深一層面大腦影像的隱私危機。

相關文章:

三菱研發能演出舞台劇的機器人

創新非觸控式介面

Honda 走路輔助器

英國植眼計劃為盲人帶來希望

相關連結:

Japanese scientist claim to resconstruct images from brain data

Images read from human brain

視覚情報、脳活動分析し再現 ATRが成功、世界初

Visual Image Reconstruction from Human Brain Activity using
a combination of Multiscale Local Image Decoders

2008年12月10日 星期三

Google Zeitgeist 與 Google book search 加入雜誌內容

Google 最近的兩個動作都跟時代、當代思潮與流行相關,一個是
每年都會公布的年度 Zeitgeist 搜尋趨,讓我們瞭解大部份的人
上網都在搜尋什麼?

Zeigeist 的 Google 線上翻譯是時代精神、思潮,放到個人來看就
是思想靈魂的精神食糧、主體。我們是自己思想的綜合體。

Google Zeitgeist 2008 Taiwan 1/2
Google-zeitgeist-2008-tw-01-sshot-1

Google Zeitgeist 2008 Taiwan 2/2
Google-zeitgeist-2008-tw-02-sshot-1

另一個是新加的 Google 圖書搜尋也可以搜尋雜誌內容。現代雜誌
內容已經包羅生活中各種當代流行、時尚的事物,除此之外我們
想要回溯十年、二十年前的時代流行也是可以藉由搜尋過往雜誌
內容深入瞭解。

在台灣的雜誌內容有些雜誌會有節錄內容上網以外,各大入口網
站、新聞網站也都會存有雜誌內文供使用者閱讀,如果不考慮即
時性,其實一些雜誌佳文都是可以在隔月就讀到的。

但是 Google 圖書搜尋是將實體紙張掃描成數位檔案,給使用者
更接近翻頁的感覺,期待台灣的 Google 圖書搜尋也可以加入雜
誌內容。

人類知識的數位化正在繼續加速當中。

相關文章:

科學進步中的知識與無知

網路搜尋阻礙科學進步

片段與系統化的知識

提供連結的科技


相關連結:

Google Zeitgeist by country (tw) this month

[Zeitgeist] Google 2008 年度關鍵字排行榜出爐!陳冠希、彎彎
奪冠!

Google 把舊雜誌搬上網路了

Search and find magazines on Google Book Search

2008年12月5日 星期五

Google Friend Connect 社群工具的集合

早上在例行的打開 Gmail 看新郵件,飄過一封標題是 Google Friend
Connect
的信件,直覺以為又是一封詐騙信,但是檢視了原始郵件內
容後,還真的是從 Google 發出的,也在 Google Reader 上看到 Not
My Business
的新文章寫 Google Friend Connect 的新外掛 Widget
才確定是 Google 新推的服務。

但是我真的忘了是不是有向 Google 發出要求加入 Google Friend
Connect 的要求信 XD

看了一下 Google Friend Connect 的服務用法,主要是針對部落客開
發一組小型社群專用的外掛 Widget 工具集合。包括有誰追蹤(訂閱
RSS) 的 Widget、加為朋友的 Widget、留言板的 Widget,看來
將來 Google 將為部落客、社群網站增加許多建立、維繫社群的相關
工具網站,也許是 Google 發現 jaiku.com 的網路社群無法比過
twitter 服務之後的覺悟吧,就退到更上游的社群工具。

另外 Google Friend Connect 也有連結到 Google 先前的 Orkut 等早
期社群網站,以及推文網站 Digg, 書籤網站 delicious

以後網路社群的連結,將會是由一群一群的小型社群組成的多連結
擴張,不管你是一個部落客、或者是經營社群的網站但是缺乏某些
工具,用了 Google Friend Connect 之後,只要有心、人人都可以建
立、經營網路社群。

相關文章:

經營網路社群

相關連結:

Google Friend Connect

利用Google Friend Connect做出留言板

Google新推出Friend Connect社群平台