從JAVA向C++轉變並不那麼簡單

來源:互聯網
上載者:User

        有人說C++和JAVA很像,我並不這麼認為。C++更像C一點而不是像JAVA,因為C++本質上是C的擴充,C的延續,C的升級,即便它吸取了物件導向的思想,但大多數還是沿用了C的思想,它的文法基本和C相同,語言風格和處理機制也大多與C相同。在很多時候,C和C++可以出現在一個程式裡,他們可以共用一個編譯器,甚至它們還可以相互調用對方的函數庫。很多時候他們沒有太多的區別。大多數人將C++和JAVA相提並論是因為他們都共有OOP的特徵,但在OOP方面它們還是相差甚遠的,JAVA的OOP技術非常的成熟,而C++在這方面只是初步的,它的重點並不在OOP上。C++不像JAVA,應該說它更像C,因為它實際上就是C的升級。
        有人說會JAVA的話C++上手會快一點,他們認為這兩者都是物件導向的語言,所以得此結論。但我認為這是一個誤導,這麼說嚴格的講確實是一個誤導,從 JAVA轉向C++是一個艱難的過程,因為這兩者的語言特點和設計思想相差甚遠。JAVA是非常成熟的物件導向的語言,C++是處於面向結構和物件導向之間的語言,它是初級的物件導向的語言。從時間上說C++比JAVA早(C++誕生於1983年,JAVA誕生於1995年),在那個時代決定了它在OOP 方面不可能被JAVA更完美。JAVA是後起之秀,它在物件導向的設計上吸取了C++及其它語言的很多優點,比C++做的更成熟更完善,目前來說JAVA 是比C++更進階的物件導向的語言。
        而我們從進階語言向低級語言(這裡只是相對,C++也屬於進階語言,只是相對JAVA要低級一些)轉變絕對是一件艱難的過程,因為我們已經熟悉了JAVA 比較完善的OOP思想與技術的封裝,開源的JAVA社區又給我們提供了豐富的基礎包,我們對JAVA的簡單易用產生了很大的依賴。向C++語言的轉變,不僅很多東西需要自己動手,而且先入為主的思想會決定我們對C++的認識有偏見,這樣很容易在開始就犯錯誤,走錯路。也許我們會發現它很難用,很束縛。為什麼它的記憶體需要人工操作?為什麼非要使用指標這麼底層的東西?為什麼它的文法有那麼多的特殊符號讓人暈頭轉向!為什麼沒有介面?為什麼struct和 class要同時存在?為什麼標頭檔要這樣寫?為什麼要使用宏?每次寫程式需要考慮在不同的機器上編譯真讓人難以忍受!這些問題讓我們在學習C++時感覺很不適應,當然它還是不重要的,重要的是我們在開發的時候如果用JAVA的編程思想去套用C++程式,這將是一個可怕的錯誤!
        我們用JAVA的思想寫C++程式一定會曲解C++的意義,而且我們把JAVA思想強加於C++之上會阻礙我們從根本上去領悟C++原本的思想,這將是從 JAVA轉向C++的一個致命的弱點。所以我建議在學習C++時可以與JAVA對比的學習,但在應用的時候一定要拋棄JAVA的思想,遵循“不熟悉的 ”C++的思想,不然我們被老的思想束縛就難以發揮到C++的優勢。我們要遵循C++的設計規範與模式,每個語言都有它的時代使命,不同時代誕生的語言其設計思想是不一致的,OOP雖然好但不是什麼地方用它都好,也不是必須就得用它,我們可以參考JAVA,但不必完全模仿JAVA,因為C++的思想也可以寫出非常優秀的程式。有句成語叫“照貓畫虎”,雖然照貓也能畫出虎來,但畫出來的虎恐怕是沒有虎威了。
        我相信C++與JAVA同樣優秀,但各有其長,各有其方。發揮其長,利用其方才是我們寫程式的根本出發點,而不是硬搬。
        OOP是很好的工具,但它不是唯一優秀的工具,也不是永遠都好的工具,至少我們現在就可以看得出來。當然,這是後話。
        另外,我認為,如果我們反過來,從C++轉向JAVA會是很簡單的!C++建立起了物件導向的概念,而JAVA屏棄了C++許多複雜難用的地方,它封裝的很好,簡單易用,更接近人的邏輯思維,C++相比要更接近機器的思維。JAVA比C++更流行,更有市場,這就是原因之一。但由於人為的操縱,C++在與機器互動的處理上比JAVA更靈活更迅速,這又是JAVA永遠不可比擬的地方。
        我在市面上看到一些書籍,大多的書籍都是教如何從一個C程式員轉換成C++程式員,或者如何從一個C++程式員轉換成一個JAVA程式員,卻很少發現一本從JAVA轉向C++程式員的書籍。
        從JAVA轉換成C++程式員是一個艱難的過程,我們需要做好充分的準備!有清醒的認識!在這樣的前提下我們要腳踏實地,不畏艱難。

總結以上,我說了四件事:
1,    C++和C與JAVA相比,它更像C!
2,    從JAVA向C++轉變是一個艱難的過程,大家要謹慎!
3,    不要用JAVA的思想去寫C++程式,這將是一個嚴重的錯誤!
4,    OOP不是萬能的和唯一的,不要被OOP過於迷惑! 來自:blog.csdn.net/acosoft



聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.