跳到主要內容

[有感而發] 硬體,軟體?

硬體跟軟體有什麼差別?
我的哲學是,設計軟體其實就是在控制硬體。但是設計硬體,是用更 hackable 的方法控制硬體。

我們下載的 APP,玩的遊戲,幾乎都是軟體程式,但我們常常忘記,我們操作軟體的同時,實際上是在控制硬體的訊號。以前大學時代,我遇到很多研究生想把硬體跟軟體硬生生分開,認為硬體跟軟體是兩個不同的研究領域,我認為這種觀念需要修正。

軟體的開發,只是把硬體的控制工作,建一套完整的 flow,包裝成程式語言,讓硬體開發,更容易掌握。

軟體開發最大的優點,就是開發的流程靈活,這種靈活性,造成許多人覺得軟體比硬體更生動有趣。現在程式語言很成熟,只要有個想法,可以輕鬆地用各種程式語言,在短時間內寫出程式。但我們常常忘記,程式語言的誕生,一開始也是從硬體的角度去設計編譯器,經過很多硬體工程師的努力,才讓程式語言普及,也大大降低寫程式的門檻,許多國家的小學,都已經有寫軟體的課程,即使不需要懂得太多的硬體知識,也能無腦地完成強大的程式,人人都可以是一名小駭客。

另一方面,從硬體的角度來開發,好處是開發出來的應用很省電,運算通常較有效率。
以晶片設計為例,晶片就是用奈米等級的電路,來實現某個想法跟功能。硬體的程式開發,需要考慮用到的資源。在寫硬體程式時,通常面對的都是線路層級,以及線路之間的邏輯接線,這造成設計硬體的過程,比軟體繁瑣,開發過程也比較耗時。

我認為做硬體需要一種態度,就是從「小事做起」。在硬體設計中是不可能體會到做大事的感覺。因為設計硬體,跟設計軟體的感覺不同。設計硬體很難在短時間內獲得成就感。在做硬體的時候,有時花了很深的功夫,搞了老半天,最終獲得的也只是把資料從一個記憶體搬到另一個記憶體而已。而設計軟體,卻能在短時間內,完成一個生動的遊戲。
但是,如果你想成為一名駭客,你必須學會硬體。
只會設計軟體,永遠只能在現有的硬體架構上,執行你的想法,而真正的創意,是軟體跟硬體都要互相溝通,靈活地運用硬體跟軟體的優勢,才能設計出高效能的技術。

           by 最近有感而發的我。


留言

這個網誌中的熱門文章

[Linux] Elementary OS 字體調校

用 gesetting 取得 elementary os 的等寬字體(這也是終端機默認字體): gsettings get org.gnome.desktop.interface monospace-font-name 會顯示目前字型跟字體大小: Roboto Mono 10 設定字體大小: gsettings set org.gnome.desktop.interface monospace-font-name 'Roboto Mono 12' 可以微調 text-scaling-factor: gsettings set org.gnome.desktop.interface text-scaling-factor <value>

[C++] 計算程式執行時間:clock 和 time 函式

要計算一段程式碼執行時間,可以用 time 函式: 1 2 3 4 5 time_t start, end; start = time(NULL); // DO SOMETHING... end = time(NULL); cout " [Msg] total time: " difftime(end, start) " sec" endl; time 函式的精確度只到達秒,如果要精確到毫秒等級,要用 clock 函式: 1 2 3 4 5 6 clock_t start, end; start = clock(); // DO SOMETHING... end = clock(); cout ( double )(finish - start) / CLOCKS_PER_SEC endl;

[Vim] 我的 .vimrc

我用過的文字編輯器有 sublime text/atom/notepad++/gedit 等等。 後來我在 window 和 Linux 寫程式還是比較慣用 vim。 以下整理我常用的 .vimrc:  set nu "show line number. set rnu "related line number. nmap ; : "replace ';' with ':' in normal mode. set ai "auto indent set mouse=a "activate mouse set expandtab "replace tab with space. set tabstop=4 "replace tab with 4 spaces. set bg=dark "background set to dark. color desert "color scheme. syntax on "enable syntax highlight. " auto complete: inoremap ( ()<Esc>i inoremap ' ''<Esc>i inoremap " ""<Esc>i inoremap [ []<Esc>i inoremap { {}<Esc>i set cursorline " active cursorline 到此 vim 搭配 Ctrl + N 當自動補全,已經很好用了,之後有好用設定會再補上來。