將 G+ 貼文嵌入部落格網頁
介紹網頁:http://julia00.blogspot.tw/2013/09/google.html
中文說明:http://www.google.com/support/plus/?p=plus_embed_posts&hl=en&authuser=0
另外這篇提供置中的語法:http://playubuntu.blogspot.com/2013/09/google-plus.html
....
Search
將 G+ 貼文嵌入部落格網頁
介紹網頁:http://julia00.blogspot.tw/2013/09/google.html
中文說明:http://www.google.com/support/plus/?p=plus_embed_posts&hl=en&authuser=0
另外這篇提供置中的語法:http://playubuntu.blogspot.com/2013/09/google-plus.html
[閒聊] 未來三年程式設計的學習方向
常常有人問我:「老師,我想學程式設計。但是我不知道該學什麼?」通常我會再追問:「為什麼你想學程式設計呢?」如果答案是:「可以賺大錢」,那我會勸他趕快回火星去,地球是很危險的...
如果是:「興趣」,那我勉強還可以聊一下。根據我非~~常個人的觀察,未來三年比較流行的程式設計領域有下列四個:
(1) 網頁程式設計:
就是 HTML5/CSS3/JavaScript 這些東西。這些技術夾著跨平台之賜,可以拿來做網頁,可以拿來寫手機 App,還可以拿來寫遊戲、讓人彼此偷菜... XD。加上入門門檻又不高,進可攻、退可守。實在很適合完全不會程式設計的人,當成敲門磚。
(2) 手機 App
這個不用我再強調了...憤怒鳥、轉來轉去的糖果...都跟這個領域有關。如果你本身已經會 C 語言,建議您走 iOS,因為 iOS 的官方語言 Objective-C,語法跟 C 語言很像。學起來會很輕鬆。如果您會的是 Java,建議您走 Android。因為 Android 背後的官方語言就是 Java。
如果拿「賺不賺錢」這件事來考量,手機 App 能賺錢的不到 1%,賠錢的是大多數。所以抱著「做 App 賺大錢」的人,我會勸你去買張獎券還比較有希望。如果真要說賺錢,根據統計,iOS 雖然市佔率沒有 Android 高,但是 iOS 的使用者很習慣掏錢買軟體。而 Android 使用者比較偏好「免費軟體」。所以,如果要賺錢的話,您可以走 iOS 試試看。
(3) 嵌入式系統(自動控制、機器人)
如果您跟我一樣不怕死、不是硬體出身的卻對控制硬體有莫大興趣,還願意常常掏錢買不同的開發板、齒輪、電料...(這些可沒有免費的可以「下載」... XD),那歡迎您加入嵌入式系統這個煉獄...呃...錢坑...也不對!「樂園」;-) ...。如果您是從軟體跨過來的,我會建議您先買一塊 Raspberry Pi 來玩。如果您是硬體過來的,那麼買塊 Arduino UNO 來玩,您一定會覺得如魚得水的。
這一行要能閱讀大量的原文,因為能寫「硬體+軟體」的書籍作者不多。此外,C 語言是一定要學的。不過學成後,您可以自己做個自走車、機器手臂什麼的,現給人家看,很有成就感喔!
(4) 海量資料(Big Data)、分散式運算(Distributed Computing)、雲端運算(Cloud Computing)
上面這三個名詞事實上都是一件事的不同面向而已,對我來說是同一件事。這也是這一兩年新興的領域,我十分看好!所謂「海量資料」,是由想分析 Internet 時代收集而來的巨大資料,並從中算出某種趨勢而來。舉例來說,每天有上萬人在 Amazon 買書。你怎麼從這些人的購買資料,得知他/她的喜好?
海量資料有三樣東西要考量:(1) 怎麼儲存這些海量資料? (海量資料)(2) 怎麼平行運算這些資料、以便在最短的時間內得到結果? (分散式/雲端運算)(3) 怎麼用最清晰的圖表,讓人一看就了解趨勢,而非只是條列式呈現算出來的結果?國外是以「Store、Compute、Present」三個字來代表。
說到如何「儲存」海量資料,目前最流行的就是 NoSQL 家族。包含 MangoDB、HBase、CouchDB...等。這些資料庫與傳統資料庫不同的是,您可以將資料庫「分屍」放在上百台機器,然後它們還能彼此運作得起來。這點傳統資料庫就做不到!能將資料「分屍」還能運作,才能獲得「叢集運算(Cluster Computing)」的好處。
MangoDB: http://zh.wikipedia.org/wiki/MongoDB
HBase: https://zh.wikipedia.org/wiki/HBase
第二點是「分散式運算」,也就是談怎麼把本來由一台電腦做的事情,分散到上百台電腦做好,然後把成果收集回來。這點,Hadoop、Scala 是目前箇中翹楚。
Hadoop: http://zh.wikipedia.org/wiki/Apache_Hadoop
Scala: http://zh.wikipedia.org/wiki/Scala
第三點就是怎麼用最清晰的圖表,動態呈現這些海量資料運算結果了。目前我看到 Tableau 這家公司非常投入這塊。他們也在昨天掛牌上櫃,股票首日大漲 64%,前景一片看好。
Tableau 官網: http://www.tableausoftware.com/
Tableau 新聞: http://www.bnext.com.tw/Article/view/cid/103/id/27875
閒聊至此!如果您不知道想往哪個方向走,或者您還有問題想問,歡迎留言在下面喔!我會儘快回覆您的!
[網友來信 3] 軟體業領域千百種,有哪幾行?我應該從何開始?
就說今天網友很熱情吧!這是網友後續寫信詢問的問題,老樣子,刪除個人資訊後原文照登。很享受這類對談過程,也希望對大家有幫助。看來我快要可以開個「相談室」了...呵呵(摸下巴)!
--------------------------
紀老師您好:
我大學專題接觸過遊戲程式設計,也對這方面很有興趣。最近要出社會了,有點恐慌。想請問老師對於從事軟體業有什麼看法?就我了解軟體又有分很多領域,不知道老師能不能給我一些建議,未來可以先往什麼領域走比較適合?
我的夢想是能成為科技業的多方位人才,所以對任何領域都不排斥,只是不知道該從何開始。
----
就我對軟體業界的了解,軟體業大慨可以分成下面幾個領域:
1. 應用軟體設計
2. 網頁程式設計
3. 嵌入式程式設計
4. 網路伺服器管理
應用軟體設計,簡單來說,就是學習 Java、C#、C/C++ 這些語言,然後撰寫出客戶所需要的程式來。要再細分的話,可以分為 (1) 企業管理軟體設計 (2) 一般用戶軟體設計 (3) 手機軟體設計 (4) 遊戲程式設計。這四個領域所用到的「底」,都差不多。也很容易從一個子領域,切換到另一個子領域。企業管理軟體設計會撰寫的軟體包括「會計軟體」、「客戶關係管理軟體」、「供應鍊軟體」...等。除了要有基本的程式設計能力外,還得了解公司流程,才寫得出來。這些軟體動輒數十萬起跳,很適合有會計、管理、法律...背景的程式設計師從事。一般用戶軟體包括 MS-Office、Photoshop...這類比較偏個人使用的軟體。手機軟體目前就三大平台:使用 Java 的 Android 手機軟體、使用 Objective-C( C 語言的一種延伸)的 iPhone/iPod/iPad、以及使用 VB/C# 的 Windows Phone。遊戲程式設計您本來就熟,我想我就不再多談。這一個大類入門雖屬不易,不過也非難如登天。很多資訊系剛畢業的人,都是從這一大類中某個子領域開始做起。
網頁程式設計,就是學習 HTML, CSS, JavaScript, PHP, MySQL, Apache 或 微軟的 IIS 網站伺服器這些知識,製作出可執行於 IE/Firefox/Chrome/Safari 這些瀏覽器上執行的網頁型軟體。由於只要有瀏覽器就能跑,所以做出來的東西橫跨 PC, 手機,平板...等平台。也成功跨入如「電子書」這類偏出版的應用領域。入門不會太難,所以成為很多非資訊本科系跨足資訊領域的首選。不過由於入門不難,所以也被資訊業界老闆們賦予較低的起薪。對於不想糾結於 C/C++/Java 這類繁複語法、享受很快看到成果領略成就感的人,進入這個領域很適合。因為完全沒有程式設計基礎的人,學過兩三個小時的 HTML,就能體會自製網頁的那種快感。
嵌入式程式設計,必須要有具備硬體知識(一般而言是電子電機相關科系的知識),學習組合語言、C/C++ 語言(一般而言就是這兩三種語言就夠了),做出控制硬體的軟體來。很適合那種喜歡從無到有、有電子背景、對「機器人」、「自動控制」、「手機軟體客製化」、「作業系統移植」...這些領域有興趣的人。這類人才很難養成,因為不但需要具備「應用軟體設計」那一大類的底子,還得加上對電子、硬體有相當認識,除了用鍵盤寫程式,也願意偶而捲起袖子用「三用電錶」、「示波器」等設備,並看得懂電子電路圖。如果你很嚮往「機器人」或「機器手臂」,覺得能寫程式控制這些東西很酷,那你應該很適合往這個方向走。
網路伺服器管理,就是人家俗稱「MIS」、「網管人員」那一類人。常常出入「機房」,平時還算閒,不過機房出事的話可是半夜都得趕往公司處理。這類工程師是四類中寫程式寫得最少的人。所需的知識包括「硬體組裝」、「網路佈線」、「伺服器架設」、「路由器設置」...等。偶而需要寫些類似「請假系統」、「文件管理系統」...這些公司內控用的軟體。常常會接觸大型的採購案,也得有一點專案管理或執行力。這類比較適合個性嚮往穩定(但不排斥偶發事件時,忙個一兩週),不太想寫太多程式,覺得出入機房是件很酷的事這類人。若有金融、管理背景,我常常會建議他們走這條路。
依照你的情況,我初步會覺得你可以走「1. 應用軟體設計」這一類的「手機遊戲程式設計」。原因是:現在手機軟體設計的人很缺,每天都有企業主要我推薦能寫作 iPhone 或 Android App 的人才。你可以先學一般的 App 怎麼寫,找個需要這類人才的公司先待著,磨練自己。若有機會,就夾著手機 App 的底,往「手機遊戲程式設計」這方面走(因為你說你對遊戲程式設計有興趣),這個方向是往「高層」、「應用面」走。或者開始學嵌入式,學習電子、硬體相關知識,學著怎麼用程式去控制更底層的硬體。這個方向是往「底層」、「系統面」走。所以我覺得,這樣安排算是「進可攻、退可守」的作法。如果你想走 Apple iPhone 系列,那就先從 C、Objective-C,最後學 iPhone SDK 套件,走入 iOS 程式設計。如果你想走 Google Android 系列,那就是學 Java、Android SDK 這條路。
所以你現在應該開始選擇加強 C(iPhone 體系)或 Java(Android 體系)。等你學完了,可以再找我聊聊,我會就屆時狀況再決定如何建議你的。畢竟「世事難料」...呵呵!希望我這樣建議對你有幫助。
紀老師