常見的 C 語言是屬於程序導向結構化程式設計的概念,採取『自上而下逐步細化模組化』的方法,將軟體的複雜度控制在一個範圍內,從而降低軟體發展的複雜度,因此 C 語言成為 20 世紀 70 年代軟體發展的潮流。

隨著硬體的快速發展,業務要求越來越複雜,而且程式設計應用領域越來越廣泛,結構化程式設計的軟體生產力遠跟不上硬體和業務的發展。

因為結構化程式設計的方式無法滿足軟體『可擴充性』和『可維護性』的需求,因此物件導向的概念才開始普及。從 C++ 到後來的 JavaC# 把物件導向推向巔峰。

和程序導向相比,物件導向的概念更加貼近人類思維的特點,這也是軟體設計的一次重大突破。


 

程序導向簡介


程序導向是一種以『程序』為中心的程式流水線設計概念,其中最中要的就是『完成一件事情的步驟』。這是一種機械式的邏輯,每個階段都有自己的輸入資料處理單元輸出資料

在程序導向中,我們需要將程式分成不同的處理單元,然後設計不同單元該如何銜接,並定義每個單元的輸入及輸出資料類型。

程式設計人員應該都聽過「程式設計 = 演算法 + 資料結構」,這其實就是程序導向的概念,而這種特徵其實和電腦的本質相關,其核心 CPU 處理指令的方式就如同流水線一樣,所以電腦是以程序導向為基石來進行處理。

即使我們使用物件導向語言來進行程式開發,但它最後還是要轉換成 CPU 能執行的指令,依舊屬於程序導向。


 

物件導向簡介


物件導向是一種以『物件』作為中心的程式設計概念,著重在對現實世界的模擬

跟程序導向不同,物件導向的方法中沒有主要控制的角色,也不需要指定嚴謹的操作順序,而是以物件為主體,指定這些物件完成任務,以及這些物件如何對外界的刺激做出反應。

人們大多是按照物件導向的方式進行思考,所以物件導向更加符合人類的思維習慣。

在物件導向的程式設計中,「程式設計 = 物件 + 互動


 

為什麼需要物件導向?


由於程序導向是電腦運行的基石,因此目前 C 語言作業系統協定堆疊驅動程式,依然還是程序導向的天下。

但程序導向有著先天性的不足,那就是流程結構相對固定,雖有效率但其擴充比較麻煩。每次需求的變更,都要對流程的每個步驟、中間的進出的資料結構進行修改。

物件導向是為了解決程序導向的『擴充性』問題而誕生的,因此物件導向的最大特徵就是『可擴充性』。要將變化帶來的影響控制在有限的範圍內,避免產生全流程或大範圍的影響,降低開發上的風險

因此,經常發生變化的地方就是物件導向的發威之處,常見及可變的主要集中在客戶需求部份,不變的一般都屬於電腦系統的基礎

作業系統、資料庫及協定等,相對穩定而且要求高效率,因此較適合程序導向;而企業應用、網際網路或遊戲等應用,需求經常變更且功能不斷擴展,適用物件導向的概念。

效能要求很高的系統軟體,基本上都是利用 C 語言寫的,例如作業系統、驅動程式、嵌入式軟體及網路設備等。


 

物件導向語言不等於物件導向程式設計


C 語言是純粹的程序導向的程式語言,但不代表用 C 語言撰寫程式就是程式導向程式設計,利用 C 語言一樣可以寫出物件導向的程式。

同理, Java 是純粹的物件導向程式語言,但也可以用 Java 寫出程序導向的程式。

程序導向和物件導向都是一種思維方式,它是一種思考問題的方法,和具體的語言沒有必然的關係。

舉例來說,在 Java 中寫程序導向的程式碼,最簡單的方式是撰寫一個大類別,內含很多方法,然後在 main 函式裡面按照程式導向的方式呼叫即可。


 

重點摘要:


1. 程序導向是一種「機械的思維」。
2. 物件導向是一種「人類的思維」。
3. 物件導向適合解決軟體的「可擴充性」問題。
4. 物件導向程式語言不等於物件導向程式設計。

文章標籤

OtakuYeh 發表在 痞客邦 留言(0) 人氣()

在開始寫實戰系列之前,先說明一下主要用到的參考書籍

1. 如何用物件導向實作複雜的業務需求

2. C++ API 設計

3. 自行編寫的講義

我們常常使用別人設計好的 API 來使用,這符合現代軟體設計的概念,利用軟體元件拼湊組合出新的功能,不做重覆的事。

在實務上,為了求快,工程師們常知其然不知所以然,反正呼叫 API 能動或能給出想要的結果就好。但這樣的想法到底是讓軟體設計變的更輕鬆,還是入門容易熟練難呢?

我游走教育的第一線時,其實也碰到類似的問題,當學校在教理論課程時,實作部份是直接呼叫別人已經設計好的函式庫,這中間會有個很大的學用落差,那就是學這麼多幹嘛?會呼叫函式庫就好。

但真的這樣就夠了嗎?中間跳過了甚麼?那就是這個軟體元件為何要這樣設計,它隱含的分析及設計流程全部跳過,如果一昧地只會用別人設計好的東西,那當遇到的非典型情況時,自己又該怎麼處理呢?等待別人出手救援?

倒也不是說甚麼東西都要自己重新設計,這樣太沒效率也不符合現代軟體設計原則,但最起碼還有機會當學生上課或自己下班進修時,能多一點耐心去了解常用到的工具軟體從何而來。

當你邊上理論課程,然後自己又有能力設計出基於理論的實用軟體工具,並分享給其他人使用時,豈不是更滿足也更有成就感!

上面講的扯遠了,很像老學究在講的話,事實上以我的話來說,撇開實用性的問題,能自己設計軟體就是

人在兩種情況下會特別開心,一是自己在創造東西、二是自己有在成長進步。

當我在設計軟體,學習新技術時,特別開心,因為同時滿足前面說的兩種情況,所以就是爽。

話說回來,如果又爽又能夠幫到別人的忙,然後自己也能有正向回饋,那就是爽上加爽,這種事為何不做?

所以呢? 開這個實戰系列,或許短期看起來是有點浪費自己的時間,然後壓力大又累,但長遠來看絕對是利大於弊

如果有聽過費曼學習法的人,一定對我現在的所做所為不陌生,要怎麼自主學習,設定目標並想辦法提升自己的能力到可以教人為止。

自主學習難就難在怎麼幫自己設定目標,跟工作或唸書不同,不管是工作或唸書都是在別人設定的框架下被動學習,但要主動去學習就得有很強烈的動機,我寫實戰系列就是希望幫自己創造動機,讓我有機會能夠主動學習

對我來說是如此,希望對在讀這些文章的同學們,也能有一樣的感受。

一起加油!

 

文章標籤

OtakuYeh 發表在 痞客邦 留言(0) 人氣()

我從來沒想過要寫部落格來行銷公司,應該說以前完全想不到可以這樣做,但因為陸續看了很多自媒體/部落格行銷的書跟文章,都說明了信任度及品牌建立的重要性,因此我決定幫公司新開一個部落格,專門寫一些技術性或學術性的文章,以前自己埋頭做也沒太多機會整理發表出來,這或許是個契機吧!

讓我鼓起勇氣嘗試這條路的原因:老婆的鼓勵和歐飛的部落格實戰。事實上還有一些早期的創業前輩靠部落格行銷有所小成,但我太晚知道了。

我開了一間軟體公司,說是公司其實沒多少人,可以說是校長兼撞鐘。我的客戶大多是熟人介紹或展覽認識,一轉眼九年過去了,公司沒倒,但業務其實沒有多大的開展,生意如何?坦白講:吃不飽,餓不死。

我自認是專業的工程師,但沒太多人知道,我希望有很多人都採用我們開發的軟體但卻事與願違,碰上一些有力難施的狀況時還會自嘆懷才不遇,中年男子專屬淡淡的哀傷。

來痞客邦寫部落格是因為歐飛先生的實戰文影響,因此我也模仿他寫了一篇開格文,希望歐飛先生看到類似的內容敘述莫怪

之前公司有發生一些風波,讓我真心覺得自己不適合創業,事實擺在眼前,我沒有想像中的那麼厲害;但我沒有後悔,因為當初不管怎麼選擇,我知道自己最終還是會走上創業這條路,現在只能硬著頭皮往前衝,直到衝出一條屬於自己也屬於公司的路。

我本來的經營思維跟歐飛類似,開公司→客戶越來越多→生意會越來越好。(好天真

結果實際的情況是,開公司→沒行銷→技術能力沒跟上→客戶數量沒增長→生意毫無起色。(好傻眼

當我認為這個行業在台灣真的不好做,也找不到新的方式來打造品牌的時候,看到在歐飛在部落格行銷上做的非常成功,原來公司行銷與推廣真的可以不用靠業務跟傳統線下的方式去經營,只是要看誰做,看你怎麼做。人的思維是有侷限性的,雖然我偶爾會看到有人用部落格的方式推廣產品,但從來沒想過可以用在自家公司身上。

舊路到不了新地方,我想用不同於以往的方式來行銷公司與相關產品技術,因此就準備開個部落格來行銷。我也想過現在才開始想到要寫部落格行銷是不是太慢了? 但如果都沒嘗試過就放棄,那就表示我還不夠痛,沒有決心想做成這件事,這似乎跟我過往的人設也不相符。

老婆聽到我的說法後,有支持但也有懷疑,她常嗆我:「你搞這些東西是真的能幫到公司嗎? 不會又是在浪費時間吧!」。別懷疑,其實連我的股東們也對於部落格行銷這件事感到疑惑,從他們的表情跟回應,我可以感受到滿滿的不信任感,確實連我都沒把握可以搞出甚麼名堂來,畢竟線下傳統的行銷活動,是真的可以接觸到客戶,拜訪後再進一步了解需求,從這個過程中就大概知道成功的機率有多少,中間的磨合都是在培養彼此的信任度,部落格的集客效用在我們這個產業真的有用嗎? 我不知道!

再接下來,歐飛先生的部落格實戰就幫上大忙了,至少讓我在事前就大概知道有哪些事要做,自己盤算了一下,我應該有足夠的毅力跟時間每週寫文章吧! 應該.......

在開始寫之前,讓我花最多時間想的就是部落格名稱跟網址名稱,跟老婆腦力激盪後,就決定「宅葉的QQ筆記」吧。我就是宅葉,QQ筆記就是我的學習筆記或工作筆記等,以後說不定會有心情筆記或學術筆記吧,天曉得。至於部落格的副標題我還在想,之後再說!

未來會怎樣不知道,出路在哪裡,我也不知道,不過至少,我打算給自己兩年的時間。至少要用心耕耘一次試試看。

這個部落格寫文章對公司的生意(業務)有什麼幫助?坦白說,我也不知道。但我可以確定件事,寫這些文章對我來說並不難熬,需要有輸出我就會想辦法輸入,以我一路以來的學術訓練來說,說不定還會樂在其中。

唯一的缺點放在哪都一樣,這會需要花到我上班的時間及平常休閒的時間,怎麼辦? 涼拌! 這就是人生中常見的戲碼:理想與現實的拉扯。要知道專注力在哪,成就就在哪! 但也可能甚麼都沒有。

理想是豐滿的,但現實是骨感的。我希望透過部落格行銷公司,集客並深化客戶關係,然後再建立公司品牌,這就必須要花時間努力寫文章經營,至於未來能不能靠寫這個賺錢,坦白講:我不知道。在我的心裡,我沒把握,但「沒把握」這種事在現實中不能講出來,我只能偷偷寫在這裡 (跟歐飛當初的心情一模一樣)。

我想表達自己的想法,但沒人想聽。怎麼辦?我可以寫在這裡。

最後我想說:感謝老婆的鼓勵和歐飛先生的分享。(很受用

文章標籤

OtakuYeh 發表在 痞客邦 留言(0) 人氣()

«12