C C 學習之路

2021-05-24 07:24:31 字數 2629 閱讀 3581

c/c++學習之路

**www.firnow.com -

-有人說c語言已經過時了,學程式設計應該從物件導向語言開始。在這一點上我持保留意見。

1、關於c語言的學習

在linux下,大部分的程式還是c語言實現的。win32 api仍然是用c語言實現的。

windows平台c++應用廣泛是微軟力推的結果,但是現在windows平台應用軟體的開發,有向c#偏移的趨勢,這要看vista系統推行的效果。到時候,恐怕大家又要跟風似的去學習c#了。作為初學者,不要盲目地去追時髦,到頭來吃到苦頭的永遠是你自己。就像c#,當你剛剛熟悉2.0版本以後,3.0版本已經問世了,又要勿勿忙忙搭上3.0的列車。。。時代在不斷進步,技術在不斷發展,我們要明白我們真正要學的基礎是什麼?就像物理學一樣,在沒有學習經典力學之前,就想學習最新的相對論思想,這可能嗎?

不管c++、java、c#怎麼發展,不管windows平台青睞於哪種開發語言。c語言仍然是程式設計入門語言的首選。過早的接觸物件導向,會讓你忽於對計算機底層的了解。沒錯,程式設計首先是以人為主,然後才考慮機器.但是,只考慮人,而完全不考慮機器是大錯特錯的,那會導致你為所欲為,以為自己想到的,計算機就一定可以實現。然而,事實告訴我們,事情並不是我們想的那樣.

在編譯器層面上,c++的實現最終仍然會被展開為c形式的,完全沒有封裝的**。程式,最終還是要在機器上執行。只有物件導向,而沒有c基礎,在理解計算機底層技術的時候,還是要回過頭來學習c語言的程式設計思想的。

美國在使用java等物件導向語言作為入門語言幾年之後,現在已經又重新考慮使用c作為入門語言了,原因,正如我前述所說。

此外,linux倡導的程式設計藝術是簡單美。在今後相當長的時間內,linux平台下的軟體開發還是以c為主,當然,不排除kde介面是用的c++,web開發使用java。

至於程式設計思想的發展趨勢,現在c++積極提倡泛型程式設計的概念,這與物件導向是完全不同的概念,也是程式設計思想的一次革新。泛型同物件導向的結合,可以產生良好的效果。java和c#等物件導向語言也跟隨其後,提供了對泛型程式設計的支援。但無疑,c++在泛型程式設計方面是推進得最好的。

2、c++的學習

建議學習c++從《c++ primer》等經典外國名著入手,使c++的學習完全不依賴於平台。

畢竟,c++最先是在unix系統,在貝爾實驗室提出來的。只是在windows上得到了發揚光大而已。

一開始就輕視語言本身的學習,過早陷入mfc類庫,會讓你不能理解c++語言的真諦,寫出的c++**只能是c式的c++,這也是國內很多c++初學者常走的彎路。

c++社群的大牛們現在都推薦把c++當作一門全新的語言來學習,完全與c區別開,使程式設計師不再寫c式的c++**。

c++發展了二十年,已經不是簡單新增了類封裝的c語言了。如果你依然這麼認為,那麼你對c++的認識還停留在上個世紀80年代。

然而,我在上面又說學習要先打好基礎,那不是要從最初的c++思想學起嗎?確實,我們應該了解c++的歷史,這對於我們理解這門語言非常有用。但並不是要你抱著80年代的c++書籍埋頭苦讀,而是伴隨在moder c++的學習過程當中。c式的c++相對於modern c++有太多的缺點,我們幹嘛不學最好的方法呢。就像物理學一樣,其中的經典理論也經過了由錯到對的過程,那麼,我們還要從錯誤的思想開始學習嗎?學習c語言,我們也要從ansi c未出現之前學習嗎?當然不是,基礎,並不代表就是陳舊的東西。

但是,在國內,c++標準庫的使用並不廣泛,很多人對c++的使用依然停留在對c**的簡單類庫封裝上。這是很可悲的。還好,從2023年開始,大量現代c++名著被引入國內或者翻譯為中文版,越來越多的人開始接觸modern c++。

國內的c++社群,也湧現出了侯捷、榮耀、劉未鵬等少壯派高手。

還是那句話,學習c++一定要看國外名著,譚浩強、錢能的c++書還是放到一邊吧,他們在誤人子弟。

c++大牛們推薦首選使用stl標準庫,因為它與平台無關,而且拋棄了c語言中的種種缺陷和陷阱。但是人家沒有推薦mfc之類。

充其量,mfc,現在我只用來做介面框架,因為自己用sdk敲介面框架實在太麻煩了。然而mfc並不是唯一選擇,wtl、qt都是不錯的介面庫。而且,實際上mfc的封裝模式早已跟不上c++的步伐,要知道mfc推出時,c++仍未標準化。然而mfc卻沒有跟著c++的發展不斷重構自己的類庫,實際上mfc基礎架構根本沒有什麼大的變化。

而現代c++類庫,如stl、atl、wtl、boost、ace、loki等等,都充分結合了泛型和物件導向的優點,是現代c++的完美體現。mfc類庫,我承認,其中仍有許多東西值得我們學習。但是針對c++的設計思想來說,他的架構已經過時了,它仍然停留在對c語言的api簡單封裝的層次上,到處是稀奇古怪的巨集**。這是不值得我們再學習的。

至於程序和執行緒等底層處理,則直接使用api,即可以提高執行效率,又對於你認識作業系統很有幫助。

在**的整體風格上,應該使用modern c++。在演算法和資料處理上,盡量使用stl。只有使用到作業系統api的時候,才使用c語言。當然這其中有個c++**與c語言api互動的問題,其實很簡單,主要發生在vector和string上。

最後,學習程式設計關鍵在於學習思想,不要禁錮於語言的細枝末節上。

c語言是程式設計的基礎,c++的泛型思想可謂是程式設計思想的尖端、潮流。

在掌握基礎之後,學習頂尖的設計思想,就如同輕車熟路一樣,非常輕鬆。

文章出處:飛諾網(

C C 學習之路(一)

今天我想要寫的是關於呼叫建構函式的問題。那麼,先來看一道題 當我第一次看到這一道題的時候,我第一反應的答案是 9。然後看了一下答案,發現答案是4。於是乎我再一次翻看了建構函式的定義,才恍然大悟自己先前的想法是不對的。要想解決上面的問題,我們先要弄懂以下兩個問題 一 建構函式是幹什麼的 class c...

c c 高階之路

c c 從入門到高手所有必備pdf書籍收藏,喜歡的朋友支援下吧 c c和指標 pdf高畫質版 c程式語言 完美中文版pdf the c programming language 英文原版 c的缺陷與陷阱 pdf高畫質版 你必須知道的495個c語言問題 完美pdf c專家程式設計 高畫質版pdf 中英...

httpRunner學習之路 問題之路

成長過程中,都會遇到問題,就看如何解決!今天想再次研究該框架。因為前面又碰到了一些問題。而技能有限,又需要再次學習js的各項技能。實在耗不起精力。轉而繼續對自己擅長的python入手。按照教程說,先來嘗試一番。建立工程進行開始第一步吧。用相關命令直接生成對應的專案資料夾。hrun startproj...