作者tropical72 (藍影)
看板C_and_CPP
標題Re: [討論] 非得用C++寫不可的原因?
時間Sat Feb 18 02:31:39 2012
※ 引述《don750421 (1+1≠2)》之銘言:
整篇文章看下來,有些事要先釐清,不然會愈描愈黑,
盡可能把認為您聽不懂的專有名詞拿掉。
C / C++ ,這二個是程式語言,程式語言只有「規範」,
而去實作程式語言的規範,有很多公司(軟體),像是 Visual C++ 這套軟體,
本身實作了 C 與 C++ 程式語言之規範,只是他又提供了更多功能而已,
而程式語言之規範不該綁定於某個軟體之上 (所以也有 BCB, gcc 等軟體)。
C# 本身也是一種程式語言,只有規範,但特別的是這種程式語言之規範
只有微軟在實作,所以說它是軟體嗎?oh 好吧,它是。
它也綁定了在軟體之上。
前言恕刪。由於有關鍵字:「產線」,
我想要升級硬體可能不是件簡單的事。
: 於是使用某間廠商的Driver,然而,該間廠商也有C#版本的SampleCode可參考
: 所以在開發上也任何太大的問題。
通常是先去問這間廠商有沒有提供 C++ sample code,
一些做得較好的 document, 會提供多個程式語言 sample code,
諸如 MFC, Win32(C) , VB, C# 等。
: 第一間是以按Button的方式送出訊息,訊息內容包在每個按鍵的事件中。
: 第二間是開啟程式後需先import一個Library,訊息都寫在Library中
訊息都寫到 library 中?指的是有額外的函式去查看訊息嗎?
這方式在 c/c++ 還蠻常見的,諸如 GetLastError() 不也用這方式?
: 如果要發送訊息,是從Library中以拖拉的方式拉到程式中的某個欄位中,就會送出訊息
: 第二間只有C++版本的文件(只有單純的兩三頁),也沒有任何的教育訓練。
我沒看過那份 document 長怎樣, 但若是小公司的話寫得很潔捷並不意外。
可能只像是 C++ reference 前半段說明:
函式名稱、函式功能、函式引數說明、傳回值說明,
但要個 sample code 並不是什麼過份的事。
: 我們經理就要我將原本利用第一間Driver所開發的架構,改用第二間的Driver改寫
: 但是,第一間所使用的方式和第二間的有所差異,不知道要怎麼改寫
: 跟我們經理講解之後,他卻認為程式的邏輯都是一樣,只是換個屬性和方法寫而已。
這個.. domain know how 是什麼我不懂,
但要改寫的話可能要先清楚 物件導向 是什麼,甚至可能連 Design Pattern 都要一點,
不過我納悶的是,經理真的是要把「一間公司開發的東西」,
轉交由「你一人重新開發嗎 (re-develope)」?
: 以上說了很多廢話,重點是經理要我去買本C++的書籍
書單:
#1F5OOCoO (C_and_CPP)
: 要我改寫成C++的版本,這我又不知道該如何做了!!
: 我之前只有稍微接觸過C,之後就直接碰C#
: C++根本沒學過,更別說是MFC了
二個問題先想過
1. C/C++/Win32 API/CLI/MFC/C# , 和視窗程式有什麼關係?
2. 上面哪些不需 .Net framework 就可以執行?
第一題自己找,第二題是 C/C++/Win32/MFC 都不需。
然後有個觀念要釐清一下。
事實上寫視窗程式用 C 語言加上 Win32 API 就可以寫了,
你可以上網 google 一份免費的資源:theForger's Win32 API Tutorial - Winprog
裡面用到的都是 C 語言和 Win32 API 而已,就可寫程式。
但由於這種方式慢慢刻非常費時,
於是有些廠商將這些刻視窗(或其他資源管理等)的 API 以物件導向方式,
以 C++ 封裝成 class,方便呼叫使用,而 MFC 便是微軟封裝 API 之 class,
也有其他類似的選擇,諸如 BCB、Win32++ 等等。
: 而且,目前所開發的程式都是一些WinForm的架構
: 如果使用C++改寫應該要寫成MFC架構吧??
我沒意會錯的話,WinForm 泛指是在 .net 上執行的,
只要避開 .net ,使用單純之 Win32 api 或一些廠商為其封裝好之 class 就行了。
所以的確到時 WinForm 會改寫成 MFC 或 BCB 或 Win32++,
想向你經理證明你實力堅強的話,你可以把所有 WinForm 全都改寫成 C 寫 Win32,
但這行為應該不會被允許。
: 想請問一下,使用C++寫,是不是就不用安裝.NetFramework?
: 我記得有使用到.NetFramework類別的都要安裝啊!!
: 有可能我寫MFC然後不用裝.NetFramework嗎?
如上所說, MFC 實際上是用 C++ 程式語言的規範,
去封裝了 API 成為類別,它在 199x 年就出現了,
而 .net framework 是從 200x 年才出現,
從頭到尾用不到 .net framework。
< 不過在猜想,你的情況會不會用到 COM componment 就不知道了.. >
: 另外,因為我沒接觸過C++,那我該如何做起呢?
: 直接買本MFC的書籍來K嗎?還是一定要買C++的書籍呢?
: 目前是看中兩本書籍
: C++ :C++ Primer 4/e中文版 基峰
: MFC :精通MFC視窗程式設計:Visual Studio 2010版(附光碟) 松崗
: 想請問各位,如果真的要買書,哪本會比較適合我呢?
Repeat again : 書單:
#1F5OOCoO (C_and_CPP)
Repeat again and again : 如果你沒 C++ 基礎,貿然直接砍 MFC 是痛苦、辛苦的事,
原因如上述,MFC 根本就是用 C++ 的概念去封裝視窗程式設計的東西而已,那你到底
該先學些什麼?
< 最後小聲說,如果很急著想學 MFC 的話,學到後半段記得再學 Win32 API 會較好.. >
淺見,參考,也歡迎討論與指正。
--
我知道 ~ 但別說出來 ,
說出來讓人感到特別難過...
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.195.165.40
→ WJAider:就我所知, Unity 不就有使用 c#, 只算實作 c# 的話XD 02/18 03:47
→ damnfool:Ivor Horton那本說MFC出現在物件導向規則之前... 02/18 03:49
→ damnfool:所以MFC跟物件導向規則就像蔣介石跟毛澤東一樣 02/18 03:50
→ damnfool:獲利跟壟斷層次還是不一樣.... 02/18 03:53
→ damnfool:無限制的獲利就是壟斷....... 02/18 03:54
→ damnfool:沒有限制的慾望就是人性黑暗面 02/18 03:56
推 kdjf:小聲問一下: .net不能把所有用到的東西靜態連結起來嗎? 02/18 14:03
推 littleshan:它需要virtual machine 02/18 14:15
→ tropical72:littleshan 提的 web 好酷!! 長知識了。 02/18 14:52
→ tropical72:@damnfool:可能我名詞上使用有誤,上述說的物件導向換成 02/18 14:53
→ tropical72:"類別特性"或許好點.. 02/18 14:53
推 Bencrie:Mono和Moonlight 表示: 02/18 20:17
推 Kerick:C++不熟要弄MFC吃力 有Sample可改還混的過 02/19 01:44
推 meltice:MFC 我只會Dialog Wizard 02/19 09:55
→ meltice:記得把ESC熱鍵拿掉它就會很像是個一般視窗了 02/19 09:56