2015年6月30日 星期二

教育學習類-給程式初學者的建議

  電腦的發明對人們的生活造成深遠的影響,學習編寫程式亦成為世界的一股風潮。有時在FB社團、課堂中,看到剛接觸程式設計的初學者詢問「學習程式很困難嗎?」、「該選擇哪一種語言學習呢?」日常生活人與人之間需要溝通、交談對話。其實程式就像交代電腦按照我們希望的步驟,一一完成工作罷了;只是「步驟」需要嚴謹點!坊間有相當多介紹程式概論、設計、甚至演算法、資料結構的書籍,本篇僅簡單地提供程式初學者些許參考意見,希望踏上這條新的旅程能夠更順利愉快。

  不論哪一種語言,一開始學習只要寫出「Hello World!」註1,大概就算是入門了。每種程式都有方法,控制資料的顯示。編寫出「Hello World!」就代表已掌握了顯示靜態資訊的方式了,可以寫出任何想呈現的數字、文字、符號,甚至是換行,透過排列組成圖案。

  接著進入第二階段-讓程式進行簡單的運算及判斷,這時設計適當的輸入資料,讓程式處理後得到結果。這部分使用變數的宣告、判斷語法,接著是迴圈的使用。常見的問題大多是語法錯誤,如變數未宣告(undefined)、重複宣告、宣告名稱錯誤(像是使用不允許的特殊字元)、是否正確插入分號、括號、換行與對齊……等等。可以透過練習熟悉語法,逐漸熟練後這方面的錯誤便減少了。

  進入第三階段-學習進階技巧並運用程式解決問題。如陣列、副程式、遞迴、指標、字串處理、檔案輸入輸出等進階技巧可以讓程式更彈性、多元,或增加編寫的效率。解決問題是學程式很重要的目的,也是最需要思考、長時間累積經驗的部分。有些問題相當著名,如費氏數列計算、圓周率計算、質數判斷搜尋、河內塔(或譯漢諾塔)、大數運算等,書本、網路皆可查詢到許多解決之道,甚至能比較不同方法之優劣!但初次碰到這些問題時,若能在查閱答案前,試著用心的思考,即使最終並未成功,對於培養計算性思維(Computational thinking)依然有些幫助。當面對未知的難題,或許google找不到解答,只要大腦靈機一動,說不定馬上迎刃而解囉!



註1:或許有些人從arduino、Keil C等平台,甚至組合語言學習程式開發,這些與硬體控制相關語言的「Hello World!」,可以視為讓一支I/O port為1(高電位)或為0(低電位)。總而言之,「Hello World!」是程式最基本的功能之一。

2015.7.1 初稿

2015年6月20日 星期六

教育學習類-淺談電腦檔案系統概念

  昨天把相機SD卡中的相片、影片copy到電腦上;剛將讀卡機接上電腦,顯示磁碟、進入資料夾後突然當機一陣子!隨後整個SD卡就出現需要格式化的訊息如下。


  當下立刻退出,嘗試以chkdsk修復,執行後磁碟區出現了,雖然已使用、未使用容量看似正常,但資料夾中檔案全消失了!使用磁碟救援軟體掃描,照片回復回來,但影片幾乎不堪使用。
  談起為何以讀卡機、電腦讀取SD卡,會導致磁碟檔案損毀呢?格式化又是什麼呢?
  坊間已有許多書籍、網路上亦有相當多資料討論檔案系統架構、管理和運作。本篇只淺談大多檔案系統的概念。
  每一顆磁碟、隨身碟,每一張記憶卡都像一本書籍,一本筆記本。假設剛剛到3C賣場購買了一個隨身碟,隨身碟一般拆封後即可直接使用(與隨身硬碟一樣,但內接式硬碟就不同了,需要先格式化)。當我們把檔案放進去時,就像我們在筆記本上記下資料,只是這筆記本已經規劃好目錄區」與「資料區」,記下資料的同時也在目錄區新增索引。


  上述資料區所記下的資料僅是簡單比喻,實際上檔案儲存時的開頭和結尾可能有特定的符號代表,舉例如下(在此假設@為資料起頭,#為資料結束)

  在這裡可以試想一個情況:如果資料、目錄讀寫到一半突然中斷,是什麼樣的狀況呢?
  • 狀況一:目錄讀寫到一半中斷
      上述目錄區資料42的結尾頁碼發生寫入錯誤,在往後讀取資料42時,僅檢視目錄便不曉得該讀到哪裡結束了!這時候就需要進行修復:經過目錄比對,資料43P345開始,所以推知資料42的結束是P344
  • 狀況二:資料讀寫到一半中斷

      這樣的狀況下,資料便損毀了;對應資料與目錄,資料41P291結束,資料區卻無#符號!即使磁碟修復,資料也難以復原。
  接著討論資料的刪除,前述的內容已將一個個檔案視為一個個資料區塊。如將一個檔案刪除,在此以資料1刪除為例;一般完整的刪去應同時修改目錄區資料區」;但如果資料量龐大,修改資料區的時間便較長,若要重新排序則更加花費時間。因此現今的作業系統進行檔案刪除時,僅修改了目錄。


  當資料1被刪除,目錄中P1P3視為空白,可寫入新的資料。但尚未寫入新的資料前,資料區原本記錄的資料1仍存在!這便是為什麼雖然按下刪除,看似無法還原了,經過軟體深層掃描,還是有機會回復的原因。
  在實際檔案系統中較這些比喻複雜許多,目錄在技術上稱為「檔案配置表(File Allocation Table)」,頁碼就相當於硬碟的磁區、隨身碟或SD卡等快閃記憶體裝置上的區塊(block)。由於檔案不斷新增刪除,導致同一資料區存放的頁碼可能不連續,在目錄損毀的情況下即使資料完整仍有可能無法順利復原!定期備份才是保護資料的有效方法。

參考資料:
硬碟的儲存格式:

維基百科-檔案系統:


維基百科-快閃記憶體檔案系統:

DiskGenius硬碟 磁碟 USB隨身碟 資料遺失救援 磁區格式化 都能救回 很棒的工具程式(圖片參考)


2015年6月18日 星期四

教育學習類-arduino在學習微電腦上所帶來的影響


  曾經看過一篇標題名為「Arduino\NXT 有害論」的網路文章,簡單發表一些淺見。


  一般電路中運算控制核心晶片,依照硬體特性大致可分為三個族群:第一類為MCU-Microcontroller Unit(微控制器),整合ALU(Arithmetic Logic Unit)、控制單元、記憶單元(RAM、ROM)與I/O介面,可以設計適當的軟體,對晶片進行燒錄(program),內部的控制單元便根據燒錄在ROM裡面的程式依序執行。如傳統的8051家族(89C51、89S51等)、Arduino UNO上面的IC-ATMEGA328P、Arduino Mega上面的ATMEGA2560等就是這類的晶片。近年來MCU功能日趨強大,高階晶片內建FLASH,DMA控制器,甚至支援USB protocol(如Texas Instruments公司的MSP430F55系列MIXED SIGNAL MICROCONTROLLER晶片)。


  第二類為MPU-Microprocessor Unit(微處理器,亦簡寫為µPs),一般內部具有ALU(Arithmetic Logic Unit)、控制單元、高速I/O介面,記憶單元除了快取記憶體(cache memory),RAM、ROM及A/D、D/A延伸功能需要外部擴充。舉例而言:較早期的晶片如Zilog公司的Z80(1976問世)、Intel 公司的8088、8086(約1980年問世)皆為此類;目前MPU多用於高速運算處理系統,進行大量的資料信號分析,如個人電腦中統稱的CPU(Intel Core i3、Core i5、Core i7、Xeon系列等)。


  第三類為PLD(可程式邏輯元件)系列,不論PEEL、CPLD、FPGA等,皆透過VHDL、Verilog硬體描述語言決定晶片功能;這類晶片只有數位I/O,若需要A/D、D/A功能亦需設計外部電路。使用這類晶片,需要對硬體邏輯架構有較多了解,且設計時需要考慮時脈同步、邏輯閘延遲、電路化簡與最佳化的問題。


  Arduino的產生,很大一部分依賴晶片技術的進步,當功能強大的MCU日漸普及,取代過去一一獨立的控制晶片!在過去10年或更早,常見的是「單板微電腦」,上面佈滿許多IC,舉例如下:


●8237:direct memory access (DMA) controller-直接記憶體存取控制器


●8255:Programmable Peripheral Interface (PPI) chip-可程式並列I/O介面


●8259:Programmable Interrupt Controller (PIC)-可程式中斷控制器


●8279:Keyboard/Display Controller-鍵盤/顯示控制器


  詳細datasheet網路上即可下載,我們可以很清楚的看到、量測到微電腦系統運作時信號的傳遞、處理;但在整合之後,電路板上的晶片數量減少了,雖然處理方式大同小異,我們卻更難認識、學習微算機的操作-訊號全部藏在IC內部處理完成了!我們比較過去的主機板與現代的主機板(圖片來自維基百科),也可以看出些端倪:

參考資料:

●Arduino\NXT 有害論:


●Intel chipsets:


●主機板圖片:


●8088 datasheet:


●8088微電腦電路:


●Texas Instruments公司MSP430F55系列MIXED SIGNAL MICROCONTROLLER晶片datasheet:


2015.6.15初稿



教育學習類-Maker Faire Taipei 2015心得




  今天的華山文創園區-Maker Faire 2015,可說是自造者的盛會。
  人潮來來往往的展場裡,機器人、四軸或多軸飛行器的出現已不太令人意外,反倒是有一個攤位,桌上擺放著數個乍看之下難以猜測其功能的作品,寫著英文的說明,不禁引起好奇上前詢問。原來是位日本人,來自株式会社鳥人間-大概是一間工作坊,專門研究IoT(Internet of Things,物聯網)、嵌入式系統、手機app、PCB設計和開源硬體等等。一問之下就用英文對話起來了!首先談一架滑翔式的飛行器,可藉由改變機翼弧度調整飛行方向;更特殊的作品,是一個稱為DNA Amplifier的裝置,根據介紹,似乎是一個可以放置DNA樣本,藉由溫度的調控提供基因複製有利的環境,覺得十分新奇!注意了一下DNA Amplifier其中一個模組上的晶片:VNH3SP30,上網查詢Datasheet,其功能描述為FULLY INTEGRATED H-BRIDGE MOTOR DRIVER(完整智慧型H形馬達驅動器),大概是用來驅動風扇轉速及轉向了。



  近年來Maker風潮盛行,大概是起源於兩項物品的普及:一是3D printer;二是arduino。在過去,一般人在生活中突發奇想,可能靈光乍現,腦中閃過一個點子、一個創意;但由於專業技術複雜、接觸門檻高、需要投入相當的資金成本等因素,在實現過程中遭遇許多困難。隨著時代變遷,我們有了不同的選擇。先談3D printer,目前3D列印技術不斷革新,製造簡單物品不必依循傳統鑄造、灌模等程序,就精密度而言亦較純手工製作佳;有了3D列印,只要將圖繪製出來、找來3D列印機與適當的原料,經過數個小時,機器便自動加工完成。在3D列印之後,甚至發展出更先進的方式,如CLIP 技術,試圖提升精密度、縮短製造時間。

  再來是arduino,arduino起源於義大利,整合式、模組化的硬體設計,大大降低電子元件控制、使用上的技術問題,插槽經過設計,能夠很直觀的連接。整組套件有如積木般,需要哪些功能,直接找尋適當的model組合即可,不用擔心任何關於電路零件布局、雜訊處理、介面相容性等困擾,程式上更提供許多參考範例、SDK(Software Development Kit)。想要當Maker不需要埋首苦讀,學習一大堆公式理論。只要有創意,人人都可以做到!

  至於arduino和3D printer帶來哪些衝擊、對於電資領域學習造成哪些影響,又是另外可以討論的主題了!(可參見arduino在學習微電腦上所帶來的影響一文)



參考資料:

●【活 動】Maker Faire Taipei 2015:

http://www.huashan1914.com/exhibition/playing_detail.php?cate=exhibition&id=1468

●株式会社鳥人間:

http://www.tori.st/

●比傳統 3D 列印快上一百倍!這支團隊讓一堆專利變成廢紙-CLIP 技術:

http://buzzorange.com/techorange/2015/04/02/carbon3d-clip/

●Arduino\NXT 有害論:

http://web.ntnu.edu.tw/~60132057A/SubPage/AntiArduino.htm

●英特爾微處理器列表:

https://zh.wikipedia.org/wiki/%E8%8B%B1%E7%89%B9%E5%B0%94%E5%BE%AE%E5%A4%84%E7%90%86%E5%99%A8%E5%88%97%E8%A1%A8




2015.5.31初稿

2015年6月13日 星期六

教育學習類-2015學生計算機年會心得

  到中研院參加學生計算機年會(SITCON,Students’ Information Technology Conference),雖然台灣科技產業以硬體發展為主,以軟體為核心的公司不多;但在這次活動中,可以看到在這片土地上,依然有一群人,大多是學生,對於資訊軟體具有相當的熱情與投入。在一場場的演講中,談論互聯網的演進、機器學習及背後的演算法、在校園推動Open Data,Open Campus讓學生能夠參與校務系統開發,以及其他專題作品、有關電腦程式活動的經驗分享,是一個良好的交流平台。

  關於互聯網的演進(Evolution of The Internet),網路的發明可說是資訊傳遞的一大革新,從國防、學術到逐漸商業化的過程,未來將成為物聯網(IoT)。當資料不斷以指數形式增長,產生許多有趣的應用。討論校務系統,大多交由外包廠商開發、維護,但使用的人是學生與老師,只有從使用者的角度,才能發現系統操作上的不便。從選課、作業上傳繳交的流程,是否能有更大的改進呢?與其抱怨,不如實際行動!當我們想要改善系統的設計,學校是否願意提供資源(如API)呢?所謂API,即為應用程式介面;維基百科上定義為「軟體系統不同組成部分銜接的約定。」如果說UI是應用程式與user之間的橋樑,API就是程式與程式之間的橋樑。換句話說,程式需要從課程、圖書館藏等Database索取資料的管道,是經由API指令直接傳入輸入參數以獲得結果,與一般網頁介面上有textbox、button的UI不同。有適當的API,對於應用程式製作上有莫大的幫助。

  整個活動從起始到圓滿結束,除了滿滿的收穫,更看到工作人員的用心。洽詢廠商贊助、邀請講師、場地租借、美工動畫、音效燈光、用餐與交通接駁等等環節的籌劃、執行,都相當不易;深深令人敬佩與感謝。
2015.3.8初稿

類比振盪電路-NE555無穩態多諧振盪電路實驗



一、實驗目的:


  嘗試以IC555達成不穩態多諧振盪器(Astable Multivibrator)之實驗並觀測調整各項參數對振盪訊號頻率以及工作週期(Duty Cycle)等之影響。
二、實驗原理:



1 NE555無穩態振盪電路圖
1、根據Datasheet資料,555 IC內部三顆電阻皆為5kΩ,構成一分壓網路,產生1/3Vcc及2/3Vcc之比較電壓,內部電路如下圖:


2 NE555內部電路圖
2、由比較器特性可知:
  • 當第二腳低於1/3Vcc且第六腳低於2/3Vcc時,IC內部上比較器(Upper Comp.)輸出邏輯0,下比較器(Lower Comp.)輸出邏輯1SR正反器之S=1R=0Q(n+1)=1、Q(n+1)'=0,NPN電晶體截止(OFF),第三腳輸出Vo為高準位邏輯1
  • 當第二腳高於1/3Vcc且第六腳低於2/3Vcc時,IC內部上比較器(Upper Comp.)輸出邏輯0,下比較器(Lower Comp.)輸出邏輯0SR正反器之S=0R=0,Q(n+1)=Q(n)、Q(n+1)'=Q(n)',第三腳輸出Vo維持原態。
  • 當第二腳高於1/3Vcc且第六腳高於2/3Vcc時,IC內部上比較器(Upper Comp.)輸出邏輯1,下比較器(Lower Comp.)輸出邏輯0SR正反器之S=0R=1Q(n+1)=0Q(n+1)'=1NPN電晶體導通(ON),第三腳輸出Vo為低準位邏輯0
狀態整理如表1所示:


1 NE555無穩態電路工作狀態整理


3、電源啟動瞬間,電容端電壓Vc=0VC視為短路,接腳26輸入電壓為0V,此時IC內部SR正反器之S=1R=0,第三腳輸出Vo為高電位,Q(n+1)=1;同時Q(n+1)'=0,使得NPN電晶體截止(OFF),故電容C經由Ra和Rb開始充電。
4、當第二腳(即第六腳)電壓上升至1/3Vcc時,IC內部SR正反器之S=0R=0,Q(n+1)=Q(n),第三腳輸出Vo不變(維持之前準位),電容C持續充電。



教育學習類-IEEE International Congress on Big Data 2015心得

  談起大數據-這個近幾年來十分火紅的議題,似乎許多問題都能透過大數據解決。但面對新興的概念,我們應該先思考一些問題,有一定初步的認知之後,再進一步討論技術、應用的層面。

問題1:為何要Big Data?

  資訊網路科技興起,資料呈現指數性成長,曾經有人針對網路的資訊量進行估計,討論「把整個網路列印出來需要用多少張紙?」這類的問題,發現確實是海量資料。既然資料量如此龐大,分析需要強大的運算能力,甚至要找尋適當的處理平台、有效率的技術,是相當不容易的事,為何要Big Data?

  「美國有些人在處理巨量資料後,發現一些一般人難以置信卻又鐵證如山的推論,有時候也能驗證一些資料規模縮小就驗證不出來的現象。」重點在於找尋一些資料規模縮小就驗證不出來的現象。人們對未來總是好奇;從過去的占星、求神問卜,到商業、科學發展希望能預測潮流、趨勢都是如此。透過海量資料,我們可能看到市場的脈動,消費者、使用者偏好等等巨觀的現象,因此投入Big Data。

問題2:從Big Data能得知哪些訊息,有哪些好處?

Big Data重點在資料的來源與分析的方法,假設Data是百貨公司消費者購物的記錄,結果也大概跟百貨公司消費行為有關,可能可以得知淡旺季、得知經濟成長的概況等等。如果資料不夠完整,量不夠大,所看到的結果可能與事實有落差;或根本沒有資料,就完全談不上Big Data了。



參考資料:

把整個網路列印出來需要用多少張紙?:

http://technews.tw/2015/05/03/print-internet-paper/

大數據瞎掰症候群:

http://www.businesstoday.com.tw/article-content-99205-115527?page=1

教育學習類-林宏裕校友的啟示

  最近看了一本傳記,描寫北科大畢業校友、陽光電子儀器廠創辦人林宏裕的人生故事,他不僅是成功的企業家,對於人生的態度與理念更令人欽佩與感動。

  童年生活的貧窮與坎坷,除了念書,還得出外打工貼補家計;工專時期的他前往石粉工廠,專門處理矽酸鹽類的礦物,需要將礦物中的雜質,如氧化鐵,和碎石機磨損產生的鐵屑去除才能出售。當時相關的電磁分離設備所費不貲,他便自行以電磁鐵設計、製作。即使他當時沒有相當的經驗,依然根據所學的基本電學基礎加上努力自修來達成目標,同時涉獵電化學知識……。

  從這樣的故事中我們看到什麼?

  我們可以看到學以致用的積極態度,希望能利用在學校或自修所得的專業知識解決問題。「學以致用」是我相當喜歡的一句話,更是我不斷嘗試力行的原則。在人生中我們不斷學習、不斷成長,但學習的動機與目的、意義為何?恐怕能回答的人不多了。學習的「動機」應該出自於好奇心,而學習的「目的」應該在於學以致用。有了「動機」與「目的」,才能夠賦予一件事物的價值與意義。許多人的所學與工作上的需求難以契合,無法發揮其所長是相當可惜且遺憾的。

  了解學習的價值,才能有更強烈的動力,深入探索一個領域。在探索的過程中,可能遭遇困難、挫折,面對多樣、多變的問題。在資訊發達的現代,找尋問題的答案容易許多,透過網際網路的流通,世界各地的人隨時可以分享不同的經驗與資源。但也由於技術與科學的發展,有更多過去前所未見的情況,新的挑戰依然不斷產生。因此更需要培養「解決問題的方法」。問題的定義廣泛,可能是完成某項目標、達成某些需求。而方法可能是指我們已經具備的能力,或是我們未具備,但懂得透過進一步學習而獲得的能力。

2014.9.11初稿

新聞類-18歲以下用3C逾半小時 父母要罰

  當放任孩童持續使用3C產品逾半小時將違法,未來是否也該制定個法律,放任孩童飲食而導致肥胖也開罰呢?是否該制定個法律,為避免孩童受到二手菸的危害,養育小孩的家長全面禁止吸菸呢?

  台灣的法律逐漸演變得「瑣碎化」,少數人的始作俑者,真的有必要制定一套死板的規範,讓全民來遵守嗎?我相信部分的問題,應該可以由道德來解決;以孩童重度使用3C產品而言,罰款的行政處分過重,可以先行宣導改善,或是聯合衛教機構與科技業者,在孩童使用模式下限制使用時間,或是當孩童發生近視徵兆時,由醫師與家長共同協調孩童使用3C產品之時間安排即可;否則未來親子在家共同觀賞電影,是否也有犯法疑慮呢?實在沒有必要制定這樣的法律嘛!

新聞網址:
https://tw.news.yahoo.com/18%E6%AD%B2%E4%BB%A5%E4%B8%8B%E7%94%A83c%E9%80%BE%E5%8D%8A%E5%B0%8F%E6%99%82-%E7%88%B6%E6%AF%8D%E8%A6%81%E7%BD%B0-221615083.html

教育學習類-教育需要帶給學生什麼樣的思維?

關於「教育需要帶給學生什麼樣的思維?」

第一:知道為什麼要學習。

  從小時候,每個人總有一定的好奇心,想認識一切事務。因此,我們透過閱讀、發問、觀察學習常識知識。遭遇問題,學習解決的技巧,以克服困難。但逐漸成長,台灣教育以強行填鴨式抹煞學習樂趣;又注重成效,不斷藉考試制度檢驗,希望能立竿見影;當應付測驗成為學習目標,補習文化盛行,失去目的,同時缺乏方向的盲從,一味順從外在的安排,囫圇吞棗。許多人認為學生大多缺乏想法與見解。針對開放性的問題,建立屬於自己的立場與觀點,並適當地進行表達是相當重要的。但這項能力在高中、國中小教育中普遍未受到重視,反而受到壓抑,曾經試圖提出自己的疑問時,大多老師皆以「這不會考」為由,難以深入探討!考試引導教學,大家看的是成績表面上的數字,有人說「數字會說話」,但數字到底說了些什麼?能夠培養出思考力,培養出表達力嗎?還是只是訓練出一群只會記憶一連串死板知識、人云亦云的人呢?只有先知道為什麼要學習,才能以正確的態度與方法學習。

第二:獨立思考。

  面對事件、現象、定律、公式,除了知其然,更要知其所以然。教科書上固然會提及起因與緣故,但我們是否質疑過呢?古人曰:盡信書,不如無書。獨立思考是一項檢驗的工具,從框架外的角度檢視,提出新的假設及推論,才有創新與突破的機會。

第三:勇於找尋新方法解決問題。

  教科書上的內容是有限的,永遠有前所未見的問題。具備獨立思考技能,從嘗試中進步,才是最佳的解決方法。

教育學習類-2015北科大創新創業工作坊心得

  參加北科大舉辦的8th全國大專盃創業競賽,今天的工作坊研習又帶來創新的思維與滿滿的收穫。
  早上的第一場演講帶給我相當高的興致,由葛如鈞講師談「從奇點看創新與未來」。「奇點」透露講師的特殊經歷,曾經前往美國「奇點大學」(Singularity University),一間由google、NASA及各大科技公司於2009年所創立,討論許多創新想法的夢想實踐中心,包含能夠上太空無重力環境下運作的3D列印機、能夠從紐約快速飛行至東京的航空運輸機……很多與眾不同的點子。
  從一張張簡報投影片中,我們看到世界快速的轉變:以摩爾定律為車頭的列車、機械自動化、網際網路高度連結、人工智慧研究……許多都是近代環境快速變遷的結果。摩爾定律約在1960年代,由Intel工程師提出,從一開始描述半導體元件技術的突飛猛進,單位面積電晶體數量每18個月將增加一倍,價格減半,延伸出資訊爆炸性流通的局面,世界發展呈指數性成長,唯一的限制就是想像力了,讓思考要有指數型的成長,才有機會跟上時代的變化。



教育學習類-2014台北國際發明暨技術交易展參觀心得

  這是我第二次參觀台北國際發明暨技術交易展;去年第一次參觀時,發現有許多發明與新興技術,不論學校、研究機構或業界皆有參展。展覽的主要目的,是希望媒合技術與需求,降低產學落差,並提供技術轉移交流的平台。臺灣整體科技發展的主導單位是行政院國科會,也就是現在的科技部,研究機構為國家實驗研究院,包含十一個研究中心。從現場的介紹資料中,發現國家高速網路與計算中心曾經研發過超級電腦「FORMOSA福爾摩沙」,這部超級電腦還曾登上世界五百大排行榜。簡單的說,超級電腦就是依靠數百、數千的CPU,進行平行運算,以分析或模擬的方式嘗試解決問題。很好奇的詢問現場服務於國網中心的人員,關於台灣下一代超級電腦的發展;得到了帶有些許遺憾的回答,說設備主要是由廠商提供,還屬於研討階段。而台灣一直處於代工的地位,究其主因,大陸則挹注大量(相對於台灣)資源在科研領域,台灣在資源有限的情況下,力求發展重點產業。但什麼是重點呢?

2015年6月6日 星期六

教育學習類-2015微軟實習分享會心得

  今天前往市政府附近,參與「微軟未來生活體驗計畫」分享會;來自全國南北各大學青年學生齊聚一堂,除了聆聽學長姐經驗分享,也對於微軟公司行政、行銷的相關工作有更多認識。

  在整個Intern Game中,每年提供約100個實習名額,篩選條件「三不」:不限學校、不分科系、不問成績,職位分為AA、MAA、SAA及RDAA四大角色。AA為行政助理,負責資料彙整處理分析、文案發想與撰寫、業務資訊整合管理;MAA為行銷助理,負責社群行銷企劃執行、市場數據分析;SAA為協銷助理,負責活動規畫企劃執行;RDAA為RD技術助理,負責企業程式開發與模擬、開發軟體測試、客戶專案維護與執行和雲端技術。

  演講剛開始,由微軟經理Grace Ma開場致詞,接著是曾加入第六屆微軟生涯體驗計畫的田芝寧學姊談通路行銷、業務、Marketing、Sales,也討論企業對新鮮人所要求的能力:表達力、學習力、耐力,鼓勵初入職場時多請教主管同事,更要擬定未來目標。

  從四大角色中,十分明顯的AA、MAA與SAA屬於管理、商業行銷方面;不論哪個領域,皆具有其專業知識。從工程背景的角度,我比較關注的是RDAA的部分。一開始就對於RDAA相當好奇,既然是著名軟體外商公司的研發部門,應該有比較多編寫程式的機會,類似於作業系統設計、研究程序平行處理、記憶體管理技術、編譯器開發……等等。但在會議結束後,得到的結論是:RDAA業務主要偏向手機APP客製化、客戶端技術顧問、網頁設計、軟體操作介紹影片之製作;較少深入且大型的專案。

  當微軟提出「三不」:不限學校、不分科系、不問成績時,乍看之下使得人人有機會;但提及實際工作情形,AA包含買咖啡、訂便當與下午茶、送文件、文書工作、接聽電話、跑腿;MAA進行物料倉管、拍片剪片、操作Photoshop、更新網站平台、問卷整理、文件翻譯;SAA進入資訊展駐點主持,上市記者會產品介紹……。雖能夠親身體驗企業文化,但難以發揮專精才能,令我有些失望!若所學無法致用,面對問題便缺乏解決的自信;基本上問題可大致歸為三類:第一類為「能完全掌握解決方案的問題」,能夠輕鬆處理。第二類為「需查詢參考資料,但可有效解決的問題」,清楚從何處尋找解決方案並順利處理。第三類為「需查詢參考資料,但不一定能解決的問題」!當實現學以致用,大多數的問題將回到第一類,更凸顯所學價值。

  可見微軟雖在台灣開設分公司,更提供學生大量接觸業界的機會,其目的為「銷售產品、提供服務」;核心研發主力關鍵依然位於美國。相較於硬體而言,台灣軟體在全世界的實力和競爭力真是令人擔憂呀!

2015.2.1初稿

2015.2.3增修1

課程類-大一上高階語言程式實習心得

  談到程式設計,許多人注重語法與編寫格式。一學期的課程結束了,介紹了基本的程式概念,從基本的變數宣告、條件判斷式、重複執行的迴圈、結構化副程式,到遞迴、陣列、指標與檔案讀寫的進階技巧。內容豐富,更提供不少習題,有大量的練習機會。但依然有些部分較為缺乏:

1.          思考程式的處理方式與步驟

  上課中講解範例,自問題、程式碼到執行結果都一覽無遺,如此確實能夠增進語法的熟悉,但還有更重要的,是「如何處理輸入資訊」,才能解決問題。課堂中缺少思考的過程,不應該直接公布程式答案,將思維局限於框架中。是否應該讓同樣的問題,鼓勵每個人創造不同的方式解決,殊途同歸也更靈活呢?

2.          輸入範圍的設定與測試資料的完備性

  不論是例題或課後作業,總是缺少「輸入」範圍。在生活中,飛機有設定運輸載客量,電梯有設定最大乘載人數,電器有設定額定輸入電壓範圍。在程式設計中,考量輸入狀態相當重要,給定正常範圍是必要條件。以下列程式為例:

請輸入a、b兩數字,輸出為a*b

這乍看之下是個完整的題目,但實際上,要求

-1000<a<1000;

-1000<b<1000;

-1000000<a*b<1000000



-100000000000<a<100000000000;

- 100000000000<b<100000000000;

-1000000000000000<a*b<1000000000000000

或要求a與b皆為小數,a*b需計算至小數點後10位

有極大不同。當輸入範圍愈大、愈廣,考慮因素便愈複雜。

  另外,應提供數筆測試資料,以供檢驗程式正確性;當題目狀態多元時,經由比對測試資料及程式輸出,可驗證設計可行性。讓我們來看看網站「高中生程式解題系統」 中的一個題目-因數分解:
----------------------------------------------------------------------------------------
內容 :
各位在國小時都學過因數分解,都瞭解怎麼樣用紙筆計算出結果,現在由你來敎電腦做因數分解。
因數分解就是把一個數字,切分為數個質數的乘積,如 12=2^2 * 3
其中, 次方的符號以 ^ 來表示
輸入說明 : 
一個整數, 大於1 且 小於等於 1000000
輸出說明 : 
一個字串
範例輸入 :  
20
17
999997
範例輸出 :
2^2 * 5
17
757 * 1321
----------------------------------------------------------------------------------------

輸入說明、輸出說明、範例輸入、範例輸出是不是很清楚呢?

3.          評估執行時間、記憶體用量

  為了比較程式的性能,除了結果正確;更應該以執行時間愈短、記憶體用量愈小為目標,提升軟體效能。