第五章:編程,我來了。
大家又重新住在了一起。大家都很開心,張偉每天都在認真工作、學習各種知識,就是為了完成那本屬于他的計劃。
“你們說,我是學c++還是jave?我覺得我有必要問一下展博了?!睆垈ゼ毤毜膯柕?p> 張偉你至于嗎?這么努力,你放心大力不會在德國跟別人跑的。我的學生,我相信他。胡一菲拿出老師應有的氣質(zhì)。
就是,張律師。大力是你的,沒人跟你搶。還有你的鋼琴老師跟我說你的進步很大,只要自己買個鋼琴在家練,就OK了,你不用慌!準不準備買個好鋼琴,我可以贊助你點。趙海棠哈哈大笑。
“你什么時候變得對我這么好了?我都不太相信了。算了,先感謝你的好意。對了不要忘了跟那個老師說,我還要再練練。不著急出師。我去給展博打電話了。”
“喂,展博,你有空嗎?我想學一種編程語言,你跟我說說有哪幾種。什么好學一點,又上手快?!睆垈е鴳┣蟮恼Z氣。
“沒問題,張偉。你拿筆和紙記下來,有C語言(繪圖能力強,具有可移植性)、java(通用性、高效性)、c++(支持多重編程范式)、php(超文本預處理語言)、c#語言等等。你可以學c++或者jave但是兩個還是有區(qū)別的。1、 JAVA的應用在高層,C++在中間件和底層
2、 JAVA離不開業(yè)務邏輯,而C++可以離開業(yè)務為JAVA們服務
3、 java語言給開發(fā)人員提供了更為簡潔的語法;取消了指針帶來更高的代碼質(zhì)量;完全面向?qū)ο?,獨特的運行機制是其具有天然的可移植性。
4、 java 是運行在JVM上的,之所以說它的可移植性強,是因為jvm可以安裝到任何的系統(tǒng)
5、 c++不是不能在其他系統(tǒng)運行,而是c++在不同的系統(tǒng)上運行,需要不同的編碼(這一點不如java,只編寫一次代碼,到處運行)。java程序一般都是生成字節(jié)碼,在JVM里面運行得到結(jié)果。
6、 java 在web 應用上具有c++無可比擬的優(yōu)勢
7、 java在桌面程序上不如c++實用,C++可以直接編譯成exe文件,指針是c++的優(yōu)勢,可以直接對內(nèi)存的操作,但同時具有危險性。(操作內(nèi)存的確是一項非常危險的事情,一旦指針指向的位置發(fā)生錯誤,或者誤刪除了內(nèi)存中某個地址單元存放的重要數(shù)據(jù),后果是可想而知的)。
8、垃圾回收機制的區(qū)別。c++用析構(gòu)函數(shù)回收垃圾,java自動回收(GC算法),寫C和C++程序時一定要注意內(nèi)存的申請和釋放。
9、 java 豐富的插件是java 發(fā)展如此迅速的原因
10、 java 很大的沿襲了c++的一些實用結(jié)構(gòu)
11、對于底層程序的編程以及控制方面的編程,c++很靈活,因為有句柄的存在。
Java并不僅僅是C++語言的一個變種,它們在某些本質(zhì)問題上有根本的不同:
(1)Java比C++程序可靠性更高。有人曾估計每50行C++程序中至少有一個BUG。姑且不去討論這個數(shù)字是否夸張,但是任何一個C++程序員都不得不承認C++語言在提供強大的功能的同時也提高了程序含BUG的可能性。Java語言通過改變語言的特性大大提高了程序的可靠性。
(2)Java語言不需要程序?qū)?nèi)存進行分配和回收。Java丟棄了C++中很少使用的、很難理解的、令人迷惑的那些特性,如操作符重載、多繼承、自動的強制類型轉(zhuǎn)換。特別地,Java語言不使用指針,并提供了自動的廢料收集,在Java語言中,內(nèi)存的分配和回收都是自動進行的,程序員無須考慮內(nèi)存碎片的問題。
(3)Java語言中沒有指針的概念,引入了真正的數(shù)組。不同于C++中利用指針實現(xiàn)的“偽數(shù)組”,Java引入了真正的數(shù)組,同時將容易造成麻煩的指針從語言中去掉,這將有利于防止在c++程序中常見的因為數(shù)組操作越界等指針操作而對系統(tǒng)數(shù)據(jù)進行非法讀寫帶來的不安全問題。
(4)Java用接口(Interface)技術(shù)取代C++程序中的多繼承性。接口與多繼承有同樣的功能,但是省卻了多繼承在實現(xiàn)和維護上的復雜性。
總的來說Java和C++各有各的優(yōu)勢,無需爭論那種語言好,哪種語言不好,能夠存在就一定有它的優(yōu)勢,只要你決定了要學編程就扎實的學好,編程語言都是相同的,學會一種,其他的學起來就很容易了。你可以慎重考慮一下,自己選。
張偉和展博通了兩個小時的電話,張偉不是心疼跨國電話費,而是在想學什么。
最終他選擇了c++。