軟體與硬體該分兩邊站嗎? (一)

我是一位還在研讀資訊工程的大學生,或許我在這裡說話的份量不及許多前輩,但我還是想敘述我的看法。我想先從我的求學經歷簡單的談談我的身分。自國中,不對,自國小開始我就深深對於物理化學等可以看見有趣成果的科目感到好奇,家中有著許多這類的書籍,我記得到了小六,我開始接觸到關於電學部分的實驗,沒碰不知道,一碰不得了…

我是一位還在研讀資訊工程的大學生,或許我在這裡說話的份量不及許多前輩,但我還是想敘述我的看法。

我想先從我的求學經歷簡單的談談我的身分。自國中,不對,自國小開始我就深深對於物理化學等可以看見有趣成果的科目感到好奇,家中有著許多這類的書籍,我記得到了小六,我開始接觸到關於電學部分的實驗,沒碰不知道,一碰不得了。就是這一碰讓我陷入對於電學以及電子學的深度著迷,一發不可收拾。 時至今日我還是對於這門學問有著深深的好奇感以及對於新奇事物的探索熱情,只是這種感覺已經與小時相去甚遠,或許是環境因素所致…

好,簡而言之我就是一名迷戀於電子學的怪異小鬼。

到了高職,我毅然決然地選了職業學校中的電子科就讀,鎖定這一科目,就連推甄項目也只填上另外一個相關科目,資訊科。不過還好,我是直接進到電子科,而這個機會也奠定了我深厚電子學的專業基礎。

之後,大學我選擇就讀的學系也只有一個,那就是資訊工程。或許你會覺得很奇怪,為何我選的不是電子工程之類的,那些學系不是才是我真正該去的嗎?

你問到重點了,這就是我接下來準備探討的內容。

我在高職最後一年,我就決定我未來一定要進資訊工程系,原因無他,只是我想要學電腦的程式語言這麼簡單而已。而當時的我已經會使用8051單晶片並且利用這個晶片去控制一些簡單的東西。

想學電腦程式語言還有另一個重點,就是我認為如果我能夠更加的對於電腦程式有所由研究,那麼我就能夠將我所學的硬體知識搭配並且融合起來,然後就能做到更多有趣的事情。而這是我未來研究的方向以及目的,不過我發現似乎沒有那麼簡單。

我不知道是哪裡的問題,但我在模糊中有稍微看見問題的影像,那似乎是目前所就讀學校的學系方向所致。

目前我這間學校的資工系朝向手機平台上的 Android 方向發展,而且嚴重偏向軟體的方面發展,至於硬體部分則開始逐漸忽略…且許多我身邊的同學對於硬體方面的知識似乎有著嚴重的不足以及問題,並表現出一種「反正以後用不到」或「好難我不會」等等的感覺。這些看在我這位有著理想的人眼中,實在是痛心不已。 前言摘要與鋪陳敘述就到此,接下來我們進入正題。

軟體與硬體該分兩邊站嗎?

如前面提到的,我是一位喜愛電子電路以及

單晶片微控制器的人,我喜歡做這些實驗,而這些實驗我同時需要兩樣知識:

  1. 硬體設計知識
  2. 軟體程式撰寫

而我同時擁有這兩種知識,雖然目前的我對於這兩樣還不到專精的程度,但我想再過不久就能達到我心中想要的樣子。同時,我不只具有硬體程式的設計能力,我還對於電腦軟體的設計有著些許的興趣,其中網頁設計為我最喜愛的一項。 好,那麼對於這個問題,我認為這兩樣是應該同時並進並且其中一項具有一定以上的基礎能力或者水準,為什麼? 當軟體與硬體分開處理,並且其中一方對另一方的了解不多時會出現許多的問題。其中我認為最大的問題在於,軟體與硬體之間的配合度不夠,導致軟體在這個硬體上面的執行效率低於原有的效率,且有可能無法最佳化以達到最高效能,因為這兩邊對彼此互不了解或者僅僅些微了解,更有可能是雙方堅持己見,這樣的情形下如何讓硬體發揮該有的能力呢?

以我目前學習單晶片的過程來看,假設我今天只是一位只會寫軟體的人,雖然我用 C 語言或者是 Basic 語言也能夠控制單晶片的動作,利用電腦也能夠與單晶片通訊,但如果不了解晶片內部的運作以及一些動作原理,那麼產生出來的程式大小很容易會超過晶片內程式記憶體的大小,且效率以及速度上也會大受影響,還有,某些特殊晶片的控制將會難以掌握。

或許你可以說,我又不寫硬體控制的程式,何必了解這些? 也許你也可以說,直接改範例程式或人家寫好的程式也能運作,為何非得要知道內部原理呢?

的確,身為一位開發人員就要能夠充分利用資源並且加速開發的腳步好讓研發時間盡可能地降低,就算犧牲一些品質也在所不惜。這樣沒什麼不對也沒什麼不好,畢竟現在技術越來越好,速度也越來越快,這個跑起來太慢換一顆晶片就是了,反正東西做得好、外觀佳消費者還是會買帳。

但,真的是這樣嗎? 我也不清楚,雖然心中有個答案,但或許你能協助我將底下這份問卷完成,然後我們來一起分析一起看看大多數消費者喜歡的是怎麼樣的裝置。或許會有數據不足的疑慮,畢竟我這只是個小小的網站,那麼可以的話,請幫我盡可能的傳出去,數據越多,我們能得到的準確度越高,對吧?

問卷,請點這個連結進入填寫 =D

軟體與硬體該分兩邊站嗎? (一) 有 “ 5 則迴響 ”

  1. 你的想法跟我很像,我是一個電子系大2的學生,因為我有一台ipod touch和一台HTC desire 在這兩台3C的裝置間我就發現所謂的硬體和軟體的配合度,我發現HTC的硬體再好,規格在棒,但他的作業系統(安卓)都安裝在不同機型上,很難達到100%的配合度,但apple就不同,他都是統一,像iphone itouch,硬體都一樣,所以配合度就很好掌握,就拿這兩隻我在滑首頁來說,desire還會小頓,但touch卻不會,但desire的規格也沒比touch差

    1. 居然有人會回覆這篇文章,這真讓我大感意外…感謝您的意見發表~
      事實上已經有不少人開始發現這樣的問題,所以,就讓我們一起努力,一起加油吧!

  2. 你好我本身是資管科的學生,因為喜歡遊戲所以想學軟體,跟硬體的設計,其實後來有點後悔因為資管科是不教硬體的,就連最基本的硬體拆裝也沒有,老師的解釋是我們是走醫療資訊的,我覺得很奇怪,我覺得其實軟體是建立在硬體之上的,軟體是由硬體拼湊而成的,就像組合語言的指令是由cpu所提供,再由組語到高階語言再到軟體
    學了組語(自學的)之後這個想法更深,軟體其實根本就是硬體巨集化,換句話說不了解硬體而寫程式一旦遇到問題會完全不知道該怎麼辦,這就是只知其然不知其所以然,譬如當在寫vb時隨便宣告一堆變數,完全沒有計算記憶體夠不夠用。(二技打算讀電子科捕齊硬體知識)

    1. 嗨,首先,先感謝你的回覆與閱讀。

      你說的沒錯,軟體是建構在硬體上的東西,若沒有了硬體也就不會出現軟體這種東西。不過你提到的巨集概念頗有趣的,我從來沒想過可以用這個來形容程式設計。

      很高興有人能夠分享自己的親身經歷,也很高興您願意去花時間學習不是課程裏頭的知識,特別強調這點是因為很少人願意這麼做了現在…

      大家一起加油,希望未來會更棒吧!

    2. 2002年出來寫韌體後,才發現程式的目的在控制底層的硬體,也就是暫存器,以遊戲程式來說
      最近看國外一堆網站在介紹任天堂紅白機的遊戲原理,才了解到為何能用32k Byte寫出遊戲
      32K Byte在現在只是小小的jpg圖檔大小的內容而已,但在紅白機中卻可控制繪圖晶片和音效
      所以在1980年代的人寫程式,他們必需要懂硬體,因為資源太少,必需要直接控制硬體才夠快,但在現代高階程式應用來說,有一堆API可以讓你用,就不太需要懂硬體了,除非是工業控制應用上,電路板有雜訊造成的誤動作導致程式誤動作,但在大公司會有專業的硬體RD會幫你去查,不用軟體人員費心

給點回應吧~