很多人念了生物,甚至是分子生物學
但是都不知道DNA,RNA跟protien之間到底是什麼關係
這篇就是用簡單的比喻來說明他們的關係


先來引用一下維基百科的圖

常常我們說DNA是生命的藍圖,DNA其實是"這種分子"的名字
不如我們把細胞想成是一台車子,DNA就是這台車子的設計總藍圖
他很大很大一張,裏面寫滿了各式各樣車子零件的設計圖還有要怎麼組裝起來
RNA就是從設計總藍圖 (DNA)上複製下來的某個零件的藍圖
protien就是根據零件的藍圖 (RNA)製作出來的零件本身

那我們開始囉~~
DNA要轉錄 (transcription)成RNA,也就是把零件的藍圖從總藍圖裡抄寫出來
RNA polymerase佔了很重要的角色,因為他就是那個抄寫員
他會一字不漏的把DNA上的訊息都抄寫成RNA
接著呢在他開始抄寫的時候,會在零件藍圖的開頭加個註記 (capping)
在他超寫完畢的時候呢,會在零件藍圖的結尾加個註記 (polyA tail)
加上這些註記之後,就可以避免這張藍圖被回收人員 (RNase)當成垃圾清掉
大家以為到這邊這張零件藍圖就算完整了嗎
其實不是,這張藍圖還需要做客製化修改 (splicing),修改的過程有點複雜
但是簡單的講,就是依據細胞目前的需求跟狀態,把RNA稍稍修改成他的設計
如此一來,零件藍圖 (messenger RNA)就算是完成了

那從零件藍圖 (messenger RNA)做成零件 (protien)呢
這位工匠就是ribosome (核醣體)大大拉~~~
這位工匠會依據RNA上的設計打造 (translation)一個新的零件
他把amino acid (胺基酸)抓來串起來成為peptide (胜肽鍊)
peptide只是零件的雛型而已,需要加以修飾才會變成真正的零件
這些零件的雛型會被送到細胞核外進行修飾 (post-translational modification)、折疊 (folding)

在DNA上纏繞著一些組蛋白 (histone)
他就像總藍圖的捲軸一樣,會把藍圖捲起來
如此一來,RNA polymerase這個抄寫員就無法抄寫 (transcription)某部份的藍圖 (DNA)
這樣細胞就可以依據環境的改變或是需求改變,去調整該製造出哪些零件
這個領域的學問被稱為epigenetics (表觀遺傳學)

我們都知道gene (基因)在DNA上,然而gene跟gene之間是會互動的!
這個我們稱為基因之間的互相調控,也就是當某些protien變得比較多的時候,他就會告訴gene不要製造這麼多出來,以達到一個平衡
我們再回到汽車零件的比喻,當我生產過多的螺絲零件 (protien)的時候,當然會覺得我用不到這麼多螺絲,所以會跟上游的
製造商溝通,要他們不要製造這麼多
所以細胞當中無時不刻都在進行這種溝通 (調控;gene regulation)

現在發現不只是protien會去調控基因,RNA也會調控基因
所以細胞就處於一種互相調控的網路當中,維持著平衡

如果我們可以了解細胞當中,各種分子是怎麼溝通的話,我們就有辦法去告訴細胞一些事情
例如避免細胞轉變成癌細胞等等事情

留言與分享

我們在日常生活中常常需要溝通
溝通之餘,如果有意見相左的情況,就會想要試著說服對方站在自己的立場
但通常我們以為的說服需要的是理性的力量
就是將事情條理分明的說明清楚,並且加以分析清楚
我們以為如此一來就可以讓對方站在自己的立場

這招有時有用有時沒用
畢竟人類相信一件事並不是因為理性或是邏輯而相信
人類的相信其實是建立在感情面上的

理性並不會讓人信服

你需要的是同理心的力量
同理心可以從感性的一面切入問題點

同理心vs同情心

(有空補)

留言與分享

很多初學java的人都會有這樣的疑問:

我該用類別, 抽象類別還是介面?

尤其在學 java 之前沒有碰過物件導向概念的人。
在多種選擇的情況下,我該用哪一個比較好呢?

我們可以分幾個觀點來看這個問題

概念解釋觀點

在物件導向的語言裏面,物件跟類別是被抽象化的概念。
也得力於這樣的抽象化,我們可以把某些東西廣義化應用到不同的層面。
這樣的抽象化有賴於封裝、繼承、多型的落實。
封裝可以將概念相同的程式碼放在一起,這些程式碼做同一件事,所以他們代表同一個概念。
同時也比較好維護。
繼承可以提高 reusabiity 的機會,同時也展現了概念上的相似性
多型就是一種同中求異的概念。
位於同一個繼承體系之下,可以有不同的行為。

承續我先前寫過的文章
繼承是is-a的概念,而實作介面是has-a的概念。
這些概念是不相違背的,所以我們可以簡單的把類別、抽象類別、介面分開。
類別跟抽象類別應該位於繼承體系之下,因為抽象類別也有is-a關係。
但是相對於(具體)類別,抽象類別是不允許被實體化(instantiate)的。

為什麼?
舉個例,Cat 跟 Dog 都繼承於 Animal,因為 Cat is an Animal and Dog is an Animal.
這時我們會把 Animal 寫成抽象類別,因為 Animal 被實體化之後不具任何意義。
他只是我們在繼承體系上或是概念上的類別,他並不是一個具體的物件,不具屬性跟行為。
所以 Animal 不應該被寫成(具體)類別。

那不能被實體化的類別我還需要去定義他的屬性跟方法嗎?
當然要!
回到我們的例子,通常只要是 Animal 就會 eat()move(),或是我想給 Animal id 或是 name
這時我們不會把這些東西寫在 Cat 或是 Dog 裏面。
我們會把他通通寫到 Animal 裏面,如此一來下面的子類別就可以簡單的具有這些屬性跟方法了。

這時我們來講講介面,就如同我前面提到的。
介面的實作是has-a的關係。
所以他提供了在一個繼承體系之外的功能性
他可以讓繼承於 Animal 的 Bird 擁有 fly() 的行為。
他可以讓繼承於 Animal 的 Turtle 擁有 swim() 的行為。
這些都是無法從 Animal 繼承過來的東西。

那無法繼承過來的話,自己寫就好阿,大驚小怪!
錯!
這時我們就會看到
fly()(飛)的 Bird(鳥)。
transport()(運輸)的 Airplane(飛機)。
swing()(拍翅膀)的 Swan(天鵝)。
但是他們想表達的都是在天上飛的概念。
所以介面可以達到統一格式的效果。
大家都實作同樣的方法來表達同樣的行為。
或許行為的實際內容不一樣,但是在概念上是相同的。

軟體工程觀點

在前一個觀點當中提到抽象化。
抽象化使得同樣的一段程式碼可以提高他使用的頻率。
也達到**reusability (重複利用性)**的效果。

我們有了繼承體系來提高 reusability
在程式碼上,子類別不用重寫同樣的程式碼,只要從父類別繼承來就好。
相對於同樣的程式碼散落在各個子類別,當要維護的時候就要一個一個修改。
這樣父類別就控制了子類別的行為。
如果父類別的方法被修改的話,也會影響到子類別。

如果你不希望父類別的改變影響到子類別的話,這時請確認兩者是否真的要使用繼承關係。
如果是繼承關係但又不希望受影響,那就用多型吧!

我們使用介面來提高系統的flexibility (靈活性)
當你需要有相同概念的方法時只要實作同樣的介面就可以達到。
同時規定同樣的介面便於管理維護。
只要實作同樣的介面就可以簡單地擴充模組。
這是一個靈活的系統該有的特徵。

相對於多重繼承 (ex. C++)

相對於C++的多重繼承,java 只允許單一繼承。
在多重繼承當中,可以讓一個類別擁有很多身份
一個類別可以很多種東西。
這樣的概念其實可以讓人容易了解這個類別在做些什麼。
像是Computer is a Machine and Computer is a Calculator.
這樣我們可以理解電腦是一種會計算的機器。
但是相對應的他也帶來一些不必要的副作用。
繼承於多樣的父類別,也同時繼承到了父類別的屬性跟方法,但是並不是所有的屬性跟方法都是有用的,甚至有些屬性或方法根本用不到。
當你沒有要使用到的時候卻又繼承了太多的東西,這就造成了另一種的設計不良的狀況。
這會讓別人誤解子類別有擁有父類別的某些方法,但卻不知道那是不應該出現的。
造成誤用問題就更大了。
這樣的問題小至程式錯誤,大至系統崩潰,這就成了系統的弱點之一了。

留言與分享

So far, I’ve touched or been familiar with several programming language:

Some I familiar with are Java, Python, Julia

Some I’ve played are C/C++, Haskell, Matlab, R, Perl, Lisp, Prolog, javascript, php

And took a lesson of Programming Language and Software Engineering

Read lots of book about Software Engineering…

Recall the basic programming lesson you’ve took

The quiz or exam would always be:

What does **** stands for?

or

Please write down a program to ****

Just some what like that…

But!

If you pass these kind of quizes or exams, can you say that you can program in this programming language?

As my aspect, a good programmer must understand what compiler says.

That is, an excellent programmer must know what happened while the compile error is thrown out

And he must have the ability to deal with it.

An excellent programmer must know about what will compiler act.

An excellent programmer must know how to tune the perfromance.

An excellent programmer must familiar with the basic syntax without the help of IDEs.

An excellent programmer must have some basic concept about hardware, at least the machine you’re using.

So…

If you think that you become an excellent programmer after taking some lessons of one language
And you cannot do above of these.

Well…

It’s still a long way to go.

留言與分享

自從在雙主修時修了軟體工程之後,一直受益於這個領域,而且最近也會看一些軟體工程的書。

覺得軟體工程強調的是彈性

彈性

  • 可擴充性 (scalability):如何設計系統讓系統在擴充功能或是應用範圍變大的時候變得簡單
  • 可移植性 (portability):如何設計系統讓系統在不同的環境中也能夠順利運作
  • 低耦合性及高內聚性 (low-coupling and high-cohesion):如何設計系統讓系統內部的模組 (module)之間具有此項特質

可擴充性

就像是一個建築師可以好好的完成一間小屋子。

但是他有沒有辦法把小屋子延伸成摩天大樓?

或是已經完成的屋子能不能在添加其他的功能上去?

可移植性

同樣一張小屋子的設計圖,是否可以在不同的環境下建出同樣的屋子?

在沙漠中?在冰原中?在高山中?

如果可以,稱為可移植性。

低耦合性

小屋子當中的各個房間有不同的功能。

各房間通常是打通的呢?或是隔開的?

最好是不要把房間的功能都混在一起。

像是想在廚房看書然後就把廚房放個書櫃。

明明書櫃就該放在書房的,為什麼會出現在廚房。

或許可能會覺得這樣對使用者比較方便。

但是在軟體工程的角度來說,這是不好的示範。

高內聚性

小屋子當中相同功能性的東西最好都放在同一個房間比較好。

這個是相對於低耦合的良好示範。

那如何去決定哪些功能該跟哪些功能放在一起。

這就是工程師該去傷腦筋的了。

留言與分享

又在一次偶然的情況下接觸了MBTI的測試
想起很久一前作過一次
發現這次做出來結果不大一樣

這次:

似乎是成為學者的料的感覺 名人居然是有名的Albert Einstein
"思考者"或是"建築師"的形容很符合我的網誌標題呢(笑

附上之前測試的結果:
之前的結果(ENFJ)
維基百科_INTP
維基百科_ENFJ

似乎除了N以外其他都翻盤了是吧= ="
轉性轉很大呢XD

留言與分享

自從接觸 java 之後,修了資訊安全,開始寫了些密碼學的東西。
其中很多可以藉由 java 的物件導向概念讓程式更為強健、不紊亂。
這算是小筆記,先介紹物件導向的概念(沒有附程式碼也沒有圖)。


物件導向程式設計

1. 封裝(encapsulation)

在物件導向的概念中第一個講的一定是封裝。
當我今天要寫一隻龜兔賽跑的模擬程式。
在以往的結構化程式中大概會把 race()run() 等等動作寫成一個函式。
至於跑了幾秒、速度各是多少等等就會把這些參數寫到 main() 當中。
物件導向提供了不一樣的方法來描述這個問題。
物件導向最主要提供的是相近於人類的思考方式
然而在軟體工程觀點,物件導向最大的優點是程式碼的重複利用(code reusability)
我們可以把烏龜當成一個物件,對這個物件描述他的屬性(attribute)跟方法(method)。
屬性可以是烏龜跑步的速度、烏龜的名字或是烏龜的成績等等。
只要是關於烏龜的特性都可以藉由定義成屬性加以使用。
方法則是描述烏龜的行為,他可以是 run()rush()isWin() 等等。
run() 可以讓烏龜開始賽跑,rush() 可以讓烏龜進行衝刺,用 isWin() 來看烏龜是否贏得比賽等等。
等到我們把屬性及方法都定義好之後就要進行封裝。
到這裡我要來介紹一個原則,要依據這個原則進行封裝。

2. 最小權限原則(Principle of least privilege)

當我們把物件的屬性跟方法定義好之後,物件是需要與程式互動的。
所以程式以可能會需要用到物件的屬性或是方法,但是直接存取物件的屬性是危險的。
因為我們不知道什麼時候物件的屬性會遭到外界竄改而發生錯誤。
所以在這裡引用最小權限原則的原文:

Every program and every privileged user of the system should operate using the least amount of privilege necessary to complete the job. – Jerome Saltzer

「在每個程式跟系統的使用者應該使用最小的必要權限去完成工作」
換言之,物件要開放讓其他人存取的東西應該是最少且必要的,如此才能保障物件內部的運作可以順利,免於受到外界程式修改屬性的影響。
所以通常會把物件的屬性設成私有(private),將方法設成公開(public)。
當然這只是通常的作法,物件應該視不同情況需求有所變動。
那如果某天我想要存取物件的屬性怎麼辦?
我們會設一個 setter 跟一個 getter 的方法,利用 setter 去對某屬性加以設定,利用 getter 去得到屬性的值。
與原本直接存取屬性不同是,我們可以在 setter 中加入限制,以防輸入錯誤的值。
像剛剛的烏龜的速度 speed,可以藉由 setSpeed() 去限制烏龜的速度在什麼範圍。
要是烏龜的速度被設成跟飛機一樣快那不是糟了。
同樣可以寫一個 getSpeed() 去得到烏龜的速度。
如此一來,其他程式在使用烏龜這個物件的時候就不必考慮到內部的運作。

3. 類別(class)

當我們把烏龜寫好,他會被 java 存成一個類別。
外界程式會經由宣告這個類別,將烏龜變成一個實例(instance),我們可以叫他小龜。
我們可以藉由這種方式將很多的烏龜實例加以宣告,造出很多的烏龜,有紅的、有藍的(誤)。
所以類別只是描述烏龜這個物件的一個藍圖,真正將他宣告出來才能加以使用。

4. 繼承(inheritance)

繼承是物件導向當中一個重要的概念。
在表現上類似於生物的分類表,就像貓跟狗都是哺乳類一樣。
所以延續上面的例子,龜兔都是動物,所以龜兔都可以繼承自"動物"這個類別。
我們可以設計動物這個類別,他可含有名字這個屬性,也可以對他 get 或 set。
所以當烏龜或兔子類別繼承自動物的時候。
這時候我們說動物是烏龜跟兔子的父類別(superclass),烏龜就是動物的子類別(subclass)。
(在 C++ 中稱為基礎類別 base class 及衍生類別 derived class)
這時動物的屬性及方法就會被繼承到子類別中,如此可以避免重複的程式碼出現也好維護程式。
這時我們會說繼承關係是is-a關係,是一種關係。
也就是「烏龜**is-a(是一種)**動物」的關係,這也是重要的概念。

5. 多型(polymorphism)

來接續講講多型。
多型這個字的英文其實跟生物的物種多型性是同一個字。
生物的多型性是指同一物種當中的同一族群擁有兩種以上的表現型。
程式的多型也是如此,繼承於同樣的父類別下的子類別可以有不同的表現
就像之前的例子,動物類別可以有 run(),當烏龜跟兔子類別繼承了動物類別的 run()
烏龜的 run() 有自己的執行方式,兔子也是。
所以當需要執行烏龜自己的 run() 時,可以多型地使用,而不會繼承到動物類別的。
更進一步,可以將烏龜的 run() 及兔子的 run()相同的部份加以抽象化並提升到動物類別中。
以避免重複的程式碼,也好維護,同時可以達到多種表現的效果。
多型必須利用**覆寫(override)**父類別的方法來達到效果。
覆寫父類別的方法時,區塊內可以使用父類別的方法來加以建構。
多型當中還有很多的細節,我只在這邊做粗略的介紹而已。

6. 抽象類別(abstract class)及介面(interface)

到這邊為止應該是在程式設計上有點基礎之後的進階說明。
很多人一開始都會有疑問,抽象類別跟介面有什麼差別?
在語法上似乎是差不多的,抽象類別允許宣告抽象方法,介面的方法全是抽象方法。
其實還有很多,我就不贅述,但是在設計觀點,這兩者是不一樣的。
抽象類別仍然還是類別(class),所以他跟其他類別的關係是繼承關係,是is-a關係。
就像「烏龜是一種動物」一樣,動物是抽象的概念,可被寫成抽象類別。
但介面並不一樣,介面跟其他類別的關係是實現(realization),是契約關係
他會規範其他類別遵守介面定下的標準,必須要實作介面的抽象方法
舉個例,鳥會飛,飛機也會飛,但是鳥跟飛機是不同的東西,也不會繼承於相同的父類別之下,所以我們可以寫一個"會飛的"介面,這個介面定義抽象方法 fly()
當鳥與飛機都實現"會飛的"介面時,就必須要把 fly() 實作為具體方法(concrete method)。
所以鳥跟"會飛的"介面的關係是has-a (擁有, 會)
這兩者在設計概念上是不同的。

物件導向設計原則

7. 單一職責原則(single responsibility principle)

接下來講講物件導向設計(OOD)中著名的 SOLID 原則。
第一個 S 就是單一職責原則。
這個原則很簡單,他是說一個類別只要有一種職責(功能)就好
有時候工程師會追求一個類別的強大加了許多附加的功能。
這會使得這個類別難以維護,也失去類別的意義。
所以這個原則強調一個類別只要顧好他自己的職責所在,有簡單而呼應職責的方法即可。
相對也避免單一職責分散在各個類別中。
最極端的例子就是,集各種功能為一身的上帝類別(God class)。

8. 開放封閉原則(open/closed principle)

第二個 O 指的是開放封閉原則,直接引用原文:

Software entities (classes, modules, functions, etc.) should be open for extension, but closed for modification. – Bertrand Meyer

在軟體的類別、模組、函式中應該對擴充開放,而對修改關閉
每當我們要將既有的軟體中加入新的功能,我們應該是將新的元素加入而不是修改既有的程式碼讓他擁有新的功能。
修改會讓程式碼變得越來越龐雜,加入並延伸是讓軟體具有更多的小部份各自運作。
軟體具有這樣的特性的同時,也遵守單一職責原則會讓軟體更好。

9. 芮氏替換原則(Liskov substitution principle)

Let $q(x)$ be a property provable about objects $x$ of type $T$. Then $q(y)$ should be provable for objects $y$ of type $S$ where $S$ is a subtype of $T$. – Barbara Liskov and Jeannette Wing

一開始就把抽象的原文拉進來,這是個關於抽象化的部份。
在敘述一個繼承關係的時候,子類別是一種父類別,所以子類別可以替換父類別被使用
將原文解釋一下: 假設 $S$ 是 $T$ 的 subtype,$x$ 是 $T$ 中的物件,$q(x)$ 是成立的,那對 $y$ 是 $S$ 的物件,$q(y)$ 也是成立的。
這是用來避免一些狀況,當有一個鳥的類別被老鷹類別及鴕鳥類別繼承。
通常鳥都會飛,所以我們在鳥類別中加入 fly(),但是鴕鳥卻不會飛。
這種狀況阻礙了多型的操作,鴕鳥無法飛,也無法 override 父類別的 fly()
比較好的作法是做一個"會飛的"介面,並讓會飛的鳥去實現,將鳥類別中的 fly() 移除。

10. 介面隔離原則(interface segregation principle)

在物件導向設計當中,介面(interfaces)提供了一個抽象化層,可以在提供概念上的解釋,同時避免依賴性的屏障。
物件的功能會隨需求越多,類別會越來越龐大,繼承的層數也會增多。
當底層的類別還要在被子類別繼承時,子類別會依賴於父類別的方法。
或許子類別並不會用到父類別的某些方法,這些方法會變成子類別的累贅。
這時應該定義新的介面,讓需要的類別去實現介面,這樣就不會有多餘的方法被繼承。
當然,介面所定義的方法也要盡可能的少,才能被廣泛的使用。

11. 依賴反轉原則(dependency inversion principle)

在傳統的應用架構中,低層次的模組被高層次的模組使用,進而構成一個複雜的系統。
在這種複合關係(composition)下,高層次的模組直接依賴於低層次的模組去執行一些任務。
這個時候低層次模組的依賴限制了高層次模組的重複使用性。
在這種情況下,為了使得高層次的模組不依賴於低層次的模組,規定:

  1. 高層次的模組不應該依賴於低層次的模組,兩者都應該依賴於抽象體
  2. 抽象體不應該依賴於具體細節,而具體細節則應該依賴於抽象體

12. Don’t repeat yourself(DRY)

接下來講講簡單的。
如字面上的意思一樣,盡量不要寫重複的程式碼

13. Keep it simple, stupid(KISS)

如以上縮寫,寫程式需要親親(誤),快結尾了不說笑XD
程式碼越簡單越"笨"越好。
當然並不是把簡單可以完成的工作使用了很多 if else 完成。
單一的函式只處理他"分內的工作"就好,不要去理外界需要什麼。

14. Program to an interface, not an implementation.

這算是一句至理名言。寫程式到了一定的程度之後,比起實作,更需要關注的是那些介面。
對介面的設計,比起對實作的設計要來得重要的多。

參考:PrinciplesOfOod

留言與分享

當資訊的概念變得單純、經練,用位元來計算,他就變得無所不在。夏農的理論有如一座橋梁,連結了資訊與不確定、資訊與熵、資訊與混沌,催生了光碟與傳真機、電腦與網際空間、摩爾定律與矽谷。資訊處理隨之誕生,還有資訊儲存與檢索。許多人開始為鐵器和蒸氣機之後的新時代命名。一九七六年,媒體理論家麥克魯漢寫道:「人類從食物採集者變身成為資訊採集者。」他說得恰到好處,當時正是運算和網際空間興起的年代。

如今我們都曉得,世界靠著資訊在運轉,他是血液、能量與基本原理,遍布在科學之中,改寫了所有的知識領域。資訊理論成為一座橋梁,帶領我們從數學走向電子工程,再走向電腦運算。英語世界稱為「計算機科學」(computer science)的學問,在歐洲稱為資訊工程(informatique、informatica或Informatik)。現在,就連生物學也成為一種資訊科學,處理的是訊息、指令與編碼。基因乘載資訊,啟動讀取和寫出資訊的程序。生命透過網絡的連結與交換得以拓展。身體就是一個資訊處理器,記憶不只儲存在腦中,還存在每一個細胞裡。難怪資訊理論出現之後,遺傳學一飛衝天。DNA是個典型的資訊分子,也是細胞世界中最先進的訊息處理器。他是一組字母,也是一套代碼,六十億位元組成一個人。演化學家道金斯說:「推動生物的不是火,不是氣,也不是『生命之光』,而是資訊、字詞、指令…想了解生命,就別管震動的膠體與軟泥,專心研究資訊科技。」生物的每一個細胞都是一個節點,位於緊密交織的通訊網中,傳遞和接收資訊,編碼與解碼。演化就是生物和環境之間持續的資訊交換

研究細胞間訊息傳遞三十年的生理學家羅文斯坦表示:「資訊循環成了生命的基本單位。」 他提醒我們,資訊已經有了更深的意涵,資訊「意味著組織與秩序的普遍法則,也是組織與秩序的精確度量單位」。生物有基因,文化則是有迷因(meme)。在文化演進的過程中,迷因是複製者與傳播者,也許是一個概念、ㄧ股潮流、一封連環信或一個陰謀論,但也可能是病毒。

經濟學逐漸認清自己是一門資訊科學,而貨幣正邁向發展的完成階段,從實物變成位元,儲存在記憶體與磁條裡。全球金融在國際神經系統中流動。即使在貨幣仍是實體財貨,沉甸甸收在口袋、船艙與銀行保險庫的年代裡,他就是資訊了。銅板、紙鈔、財帛和貝幣都只是短命的工具,記載著「誰擁有甚麼」 的資訊。

原子呢?原子是物質的「錢幣 」,而科學之最的物理學似乎已經發展成熟。但就算是物理學,現在也被新的理論模型甩在一旁。第二次世界大戰之後是物理學家的黃金年代,當時的大新聞不是分解原子,就是掌握核能。理論物理學家投入無數聲望與資源,全力尋找基本粒子及其作用法則、構築大型加速器、發現夸克和膠子(gluon)。在這個崇高的學術殿堂裡,通訊研究似乎是邊陲中的邊陲,夏農在貝爾實驗是思考的不是物理學,粒子物理學家不需要位元。

但才一轉眼,他們就需要位元了。物理學家和資訊理論家逐漸合而為ㄧ,位元成為另一種基本粒子,不只微小,而且抽象:二進位、正與反、是與否。它沒有形體,但當科學家明白資訊的真諦,就開始思考他也許是最基本的單位,比物質還要基本。他們認為位元是不可在分解的最小元素,而資訊是存在的根基。惠勒橫跨了二十與二十一世紀的物理學,也是現存唯一跟愛因斯坦和波耳共事過的科學家。他用一句真言向世人宣告:「萬有源自位元。」資訊孳生「萬有──每個粒子、每個力場,甚至時空本身」都源自於此。這是另外一種說明「觀察者弔詭」的方式:實驗ㄧ但受到觀察,就會被影響,甚至被決定。觀察者不只用眼睛看,還會發問,提出意見。無論發問或陳述己見,都得用不連續的位元表達。惠勒用隱晦的文字寫道:「所謂真實,會從我們對是與否問題的最終分析當中浮現。」又說:「所有物體本質上都可用資訊理論來理解,我們所在的是一個參與的宇宙。」從這個角度看,宇宙就像電腦,是一台巨大無比的資訊處理器。

==========================================

以前我還不懂為什麼我會傾向資訊工程
一大堆人(包括我爸)一直勸誡我說寫程式會很累時常想不出來…一大堆的。
當時或許我沒辦法說我確切喜歡甚麼,但我知道資訊有種魔力勾著我…
現在我知道他為什麼讓我著迷了。

留言與分享

推薦個好網站~

16型人格職業性格測試

大家可以去測測看喔~

以下是我測出來的結果:


分析:您的性格類型是「ENFJ」( 教育家 )

溫情,有同情心,反應敏捷,有責任感。非常關注別人的情緒、需要和動機。善於發現他人的潛能,並希望能幫助他們實現。能夠成為個人或群體成長和進步的催化劑。忠誠,對讚美和批評都能做出積極地回應。友善、好 社交。在團體中能很好地幫助他人,並有鼓舞他人的領導能力。

ENFJ型的人熱愛人類,他們認為人的感情是最重要的。而且他們很自然地關心別人,以熱情的態度對待生命,感受與個人相關的所有事物。由於他們很理想化,按照自己的價值觀生活,因此ENFJ型的人對於他們所尊重和敬 佩的人、事業和機構非常忠誠。他們精力充沛、滿腔熱情、富有責任感、勤勤勤懇懇、鍥而不捨。

ENFJ型的人具有自我批評的自然傾向。然而,他們對他人的情感具有責任心,所以ENFJ型的人很少在公共場合批評人。他們 敏銳地意識到什麼是(或不是)合適的行為。他們彬彬有禮、富有魅力、討人喜歡、深諳社會。ENFJ型的人具有平和的性格與忍耐力,他們長於外交,擅長在自己的周圍激發幽默感。他們是天然的領導者,受人歡迎而有魅 力。他們常常得利於自己口頭表達的天份,願意成為出色的傳播工作者。

ENFJ型的人在自已對情況感受的基礎上做決定,而不是基於事實本身。他們對顯而易見的事物之外的可能性,以及這些可能性以怎樣的方式影響他人 感興趣。 ENFJ型的人天生具有條理性,他們喜歡一種有安排的世界,並且希望別人也是如此。即使其他人正在做決定,他們還是喜歡把問題解決了。

ENFJ型的人富有同情心和理解力,願意培養和支持他人。他們能很好地 理解別人,有責任感和關心他人。由於他們是理想主義者,因此他們通常能看到別人身上的優點。

您適合的領域有:培訓、諮詢、教育、新聞傳播、公共關係、文化藝術

您適合的職業有:

  • 人力資源培訓主任
  • 銷售經理
  • 小企業經理
  • 程序設計員
  • 生態旅遊業專家
  • 廣告客戶經理
  • 公關專業人士
  • 協調人
  • 交流總裁
  • 作家/記者
  • 非營利機構總裁
  • 雜誌編輯
  • 電視製片人
  • 市場專員
  • 社會工作者
  • 人力資源管理
  • 職業指導顧問
  • 心理咨詢工作者
  • 大學教師(人文學科類)
  • 教育學、心理學研究人員
  • 撰稿人
  • 節目主持人(新聞、採訪類)
  • 公共關係專家
  • 社會活動家
  • 文藝工作者
  • 平面設計師
  • 畫家
  • 音樂家

那我以後是不是要當老師阿~@@

如果要的話我想當大學教授^^

因為有自己的研究室

也可以教教書

還不錯~

生態旅遊業專家~

聽起來還不錯ㄟ

說真的我還蠻嚮往之前那個去大堡礁當生態導覽的工作的^^

畫家也可以(尤其是漫畫家)~

愛畫畫的我^^~


大家也把自己測完的結果複製貼上來喔~

留言與分享

Yueh-Hua Tu

目標是計算生物學家!
Systems Biology, Computational Biology, Machine Learning
Julia Taiwan 發起人


研發替代役研究助理


Taiwan