這裡有兩個問題,一個是C和C++的區別和聯絡,而是如何進行應用軟體開發。
C++比C語言更復雜,也完全相容C的語法,不僅提供了面向物件的特性,還加入了模版超程式設計,直接把複雜度提升了一個檔次。但也別有畏難情緒,C++的基本語法都很簡單,包括模版,主要是看熟練程度,有些東西也不用刻意去學,包括一些語法糖,實際專案中很少用到,所以那些說C++怎麼怎麼複雜,怎麼怎麼難學的,聽聽就好別當真,可以說只要掌握面向物件,瞭解基本的模版程式設計,熟練使用stl或boost(裡面的東西不需要全掌握,只掌握重點的容器、演算法,boost的asio就可以了),就可以開始工作了。
軟體開發這個話題太廣,如果你熟悉了C/C++,到了這個階段,就可以熟悉各種API了,如win32或posix等,比如可以看Windows程式設計或Linux程式設計等這類書籍。
就目前來看C\C++的路的確越來越窄,桌面開發可以選擇Qt,但是windows還是推薦使用.net,C++僅作為備選方案,隨著網際網路和雲計算的盛行,C++在這方面基本沒什麼用武之地,本來以為可以在物聯網上大展宏圖,結果半路殺出一個python,隨後連Ubuntu都將其作為官方開發語言,這也是一個悲傷的故事。
但對於嵌入式工程師,C/C++這個目前還無法替代,而且門檻極高,要熟悉Linux架構,會對核心進行裁剪,要為特定硬體編寫驅動,需要豐富的軟硬體知識積累。
遊戲目前主流的程式語言是C#,各大主流的商業遊戲引擎,如unity,cryengine等都使用C#,目前只有unreal4採用的C++,當然unreal4也可以採用藍圖。像前幾年盛行的cocos2dx也是採用C++,但目前基本已經淘汰了。
遊戲程式設計對數學能力要求較高,首先需要掌握高等數學和線性代數等理論知識,然後看一些計算機圖形學的相關知識,伴隨著這些理論知識的學習掌握相關的圖形api,比如OpenGL或directx,如果是從事移動端,需要學習opengl es,而OpenGL es是在OpenGL上精簡而來的,拋離了OpenGL中的固定功能管線,採用可程式設計管線,即shader(shader是一種類c語言,語法很簡單,但需要一定的數學功底才能寫好),所以要重點學習OpenGL 3.0以上的版本。在這之後就可以開始學習遊戲引擎了,有了上面的知識,遊戲引擎就想對簡單了,就相當於使用ide。
這裡有兩個問題,一個是C和C++的區別和聯絡,而是如何進行應用軟體開發。
C++比C語言更復雜,也完全相容C的語法,不僅提供了面向物件的特性,還加入了模版超程式設計,直接把複雜度提升了一個檔次。但也別有畏難情緒,C++的基本語法都很簡單,包括模版,主要是看熟練程度,有些東西也不用刻意去學,包括一些語法糖,實際專案中很少用到,所以那些說C++怎麼怎麼複雜,怎麼怎麼難學的,聽聽就好別當真,可以說只要掌握面向物件,瞭解基本的模版程式設計,熟練使用stl或boost(裡面的東西不需要全掌握,只掌握重點的容器、演算法,boost的asio就可以了),就可以開始工作了。
軟體開發這個話題太廣,如果你熟悉了C/C++,到了這個階段,就可以熟悉各種API了,如win32或posix等,比如可以看Windows程式設計或Linux程式設計等這類書籍。
就目前來看C\C++的路的確越來越窄,桌面開發可以選擇Qt,但是windows還是推薦使用.net,C++僅作為備選方案,隨著網際網路和雲計算的盛行,C++在這方面基本沒什麼用武之地,本來以為可以在物聯網上大展宏圖,結果半路殺出一個python,隨後連Ubuntu都將其作為官方開發語言,這也是一個悲傷的故事。
但對於嵌入式工程師,C/C++這個目前還無法替代,而且門檻極高,要熟悉Linux架構,會對核心進行裁剪,要為特定硬體編寫驅動,需要豐富的軟硬體知識積累。
遊戲目前主流的程式語言是C#,各大主流的商業遊戲引擎,如unity,cryengine等都使用C#,目前只有unreal4採用的C++,當然unreal4也可以採用藍圖。像前幾年盛行的cocos2dx也是採用C++,但目前基本已經淘汰了。
遊戲程式設計對數學能力要求較高,首先需要掌握高等數學和線性代數等理論知識,然後看一些計算機圖形學的相關知識,伴隨著這些理論知識的學習掌握相關的圖形api,比如OpenGL或directx,如果是從事移動端,需要學習opengl es,而OpenGL es是在OpenGL上精簡而來的,拋離了OpenGL中的固定功能管線,採用可程式設計管線,即shader(shader是一種類c語言,語法很簡單,但需要一定的數學功底才能寫好),所以要重點學習OpenGL 3.0以上的版本。在這之後就可以開始學習遊戲引擎了,有了上面的知識,遊戲引擎就想對簡單了,就相當於使用ide。