成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

開發者應該開始學習 C++ 嗎?

開發 開發工具
在“為什么C++并沒有‘王者歸來’(Why C++ Is Not ‘Back’)”一文中,John Sonmez認為只有如下三個原因才會使用C++。

隨著C++ 11C++ CX的引入,很多人重新燃起了對這門語言的興趣。不少開發者,尤其是Windows開發者,都想知道是否應該放棄C#和Java,轉而支持C++。John Sonmez認為這并不需要。

在“為什么C++并沒有‘王者歸來’(Why C++ Is Not ‘Back’)”一文中,John Sonmez認為只有如下三個原因才會使用C++:

1.需要榨干軟件每一寸可能的性能,并且想用支持面向對象抽象的語言來實現。

2.編寫直接面對硬件的代碼。(例如,編寫底層驅動。)

3.內存控制與定時極為重要,因而系統的行為必須是完全確定的,還必須能夠手動管理內存。(想一下控制機器移動部件的嵌入式實時操作系統。)

Herb Sutter高度稱贊了這篇文章,認為文中的“觀點有些深度,沒有夸張”。關于C++的應用場景,他又做了一些補充:

1.服務,依賴于運行時會更為困難。

2.測試,對比一下全部或者大部分采用靜態鏈接的應用程序與在最終用戶機器上往往是***執行時才編譯或即時編譯(JIT)的應用程序,后者無法完整地測試。

John Sonmez反對學習C++,過于復雜是原因之一。即使C++ 11讓開發容易了一些,但是程序員仍然不得不學習各種老式的C++編碼方法。“你會碰到20年前的C++代碼,看起來就像是完全不同的語言。”為了加強其觀點,他向準備應聘C++職位的開發者提出了36個問題。下面列出幾條:

1.在C++中,基本數據類型有多少種初始化方式?你能都說出來嗎?
12.什么是復制構造函數,何時會用到?尤其是與賦值操作符相比,你能區分嗎?
16.在C++中,何時適合通過引用來返回值,何時不適合?
33.為什么絕對不應該在析構函數中拋出異常?

反對C++的另一個理由是“編程語言真正需要的是簡化并提高抽象層次,而不是反其道而行之”。他繼續道,

編寫底層代碼的需求總是存在的,但我們今天編寫的大部分都是較高層次的代碼。

很多年前,當我終于無法再堅持認為我用C++開發應用的速度比C#快時,我跳下了C++這條船。

我堅持良久,試圖讓自己相信我在C++上的所有投入并沒有白費,但是事實證明, C#帶來的簡化是如此之大,以至于與此相比,C++所提供的額外的力量并不值得這些額外的付出。

在文章結尾,John Sonmez說到,學習C++對于理解計算機的一般工作原理仍然是有用的,“但是我認為C++不會東山再起,這是好事”。

關于這一點,Alo補充到:

我是從C++開始的,而且我職業生涯的前四年都花在了C++上。這種經驗對我非常有價值,正如您的文章中所指出的那樣,因為一旦把C++學到了足夠的水平,就可以很快地撿起其他任何語言;此外,還能從一個更低的層次上更深刻地理解軟件工作原理——如果從其他層次更高的語言開始學習編程,獲得這種知識的難度就大多了。正因如此,我一直不贊成讓程序員從Java開始學起。

Richard Dunks反駁到:

我認為,在***學期的程序設計導論課程和數據結構的教學中,C++是沒什么幫助的,因為光實現就要耗費很多時間,反而讓同學們忽略了他們要復現的結構。我很高興自己能夠精通C++,但我認為這并不值得,而且C++絕對不是一門***的教學語言。

Stephen Cleary有一條評論談到了可重用性:

我原來是C++開發者,幾年之前,市場的壓力讓我成了一名C#開發者。C#的確更有生產率,但是完全不可能實現C++模板那種級別的代碼復用。

經典的例子就是容器、迭代器和算法這三駕馬車。在C++中,能夠創建一個用于任何容器的算法,而且可以在編譯時對算法加以調整以便必要的情況下利用隨機訪問能力。你可以用C#試試。這還是尚未談到“新C++”的情況;1998年的C++對代碼復用的支持就比現在的C#好了。
 

關于性能,Herb Sutter給出了如下建議:

在任何語言中,如果非常關注性能,都會大量使用數組(未必“總是”使用,只是“大量”用到)。不過這在有些語言中很容易,可以很好地控制一般內存布局,特別是控制數組;而在其他語言或環境中就困難一些(有可能讓你使用,但更為困難),如果這些語言或運行時特別偏愛通過指針構造的數據結構,你就不得不“放棄”或者“盡量避開”。

除了在Herb Sutter和John Sonmez的相關博客上的大量高質量評論,Reddit的ProgrammingCoding子群組也有很多可以學習的東西。

原文鏈接:http://www.oschina.net/news/36155/learning-cpp

【編輯推薦】

  1. 這也是C#代碼嗎?代碼閱讀性進階
  2. 最有價值的編程忠告
  3. C++11 標準新特性:Defaulted 和 Deleted 函數
  4. Google GO與C#之間的TCP通信案例
  5. 編程極端主義
責任編輯:張偉 來源: oschina
相關推薦

2010-11-24 10:35:40

Objective-C

2014-04-15 11:27:50

C++開發者Objective-C核心語法

2013-07-29 11:11:33

C++C++11

2012-10-11 10:43:26

開發SQL

2013-09-05 11:04:53

C++開發者

2019-05-24 09:04:31

C++編程語言開發

2014-02-27 10:24:45

Web技術編程語言

2013-03-11 11:20:05

2012-06-05 14:25:46

Windows Pho

2022-04-18 12:29:18

C++

2012-11-13 10:34:03

PythonWeb

2011-06-30 12:15:27

MangoWindows Pho微軟

2010-11-05 11:01:35

Windows Pho

2015-08-07 13:30:46

2011-07-11 15:10:58

HTML 5

2014-10-11 10:20:50

程序員

2011-10-11 10:07:37

2013-07-23 15:28:38

開發者Eclipse插件

2024-03-01 12:03:00

AI模型

2015-11-12 09:24:56

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品国产乱码久久久久久牛牛 | 美国一级片在线观看 | 韩国理论电影在线 | 国产91丝袜在线播放 | 欧美一区二区在线视频 | 国产精品久久久久久婷婷天堂 | 欧美日韩一区二区三区在线观看 | 国产一区二区三区免费 | 亚洲精品一区二区三区四区高清 | 在线免费观看毛片 | 99久久久无码国产精品 | 国产视频h | 国产电影一区二区 | 九九综合九九 | 国产精品爱久久久久久久 | 日韩毛片视频 | 国产成人福利视频在线观看 | 综合久久99| 国产色| 国产7777 | 午夜黄色影院 | 一区二区三区四区毛片 | 日本在线一区二区三区 | 精品欧美一区免费观看α√ | 欧美成人激情 | 国产成人精品午夜视频免费 | 日韩视频中文字幕 | 国产精品一二三区 | 97国产超碰| 天天插天天操 | 亚洲精品乱码8久久久久久日本 | 久久久久一区二区三区 | 亚洲国产成人精品久久 | 国产99久久 | 91精品中文字幕一区二区三区 | 久久久久久国产精品久久 | 91精品久久久久久久久 | 国产欧美日韩一区二区三区在线观看 | 国产1区| 嫩草网 | 日韩午夜影院 |