在哪些領(lǐng)域只能由C/C++實(shí)現(xiàn)或者C/C++做得很好,而其他語言完全實(shí)現(xiàn)不了或者效果很差?:問這個(gè)問題的,說明你對(duì)計(jì)算機(jī)編程還沒有真正入門。不要相信網(wǎng)上那些什么C
問這個(gè)問題的,說明你對(duì)計(jì)算機(jī)編程還沒有真正入門。不要相信網(wǎng)上那些什么C語言已過時(shí),現(xiàn)在是python的天下之類的營銷語言。那只是忽悠小白交幾萬塊錢去上編程課的。事實(shí)上對(duì)真正的計(jì)算機(jī)入門沒有什么卵用。
計(jì)算機(jī)語言從早到晚從內(nèi)到外從底層到前端,不同的環(huán)境層次需要不同的語言。
最早沒有程序設(shè)計(jì)需要這個(gè)概念,就是機(jī)器語言編程。在紙帶上打孔,代表0或1,然后把打好孔的紙帶放進(jìn)讀卡器讀出來從而控制與非門來實(shí)現(xiàn)程序功能。
后來顯示器出現(xiàn),終于可以不再打孔,直接編程機(jī)器語言。那時(shí)候的程序就是一個(gè)個(gè)二進(jìn)制的矩陣,需要你線性代數(shù)學(xué)的非常遛。再后來,有了匯編語言,終于可以直接控制處理器了,還記得用匯編控制寄存器,累加器等等的場景。于是匯編也成了最底層最初級(jí)的程序設(shè)計(jì)語言,主要面向底層硬件,也可以編寫單片機(jī)。匯編的效率也是非常的低,于是出現(xiàn)了一系列真正的程序設(shè)計(jì)語言如FORTON PASCAL delphi之流。。。。具體發(fā)展歷程就不介紹了,幾乎每本講程序設(shè)計(jì)的書都會(huì)提到。這些語言中,C語言靠簡潔的語言結(jié)構(gòu)和高效的執(zhí)行效率脫穎而出。C語言的應(yīng)用場景非常廣泛,由于可以調(diào)用內(nèi)存,C語言也可以面向底層硬件,keil C也可以寫單片機(jī),比匯編高效很多,但占用存儲(chǔ)空間也相對(duì)更多。
嚴(yán)格來講,從硬件到操作系統(tǒng)之間的中間層,如接口程序,驅(qū)動(dòng)程序,。。。大多用C語言實(shí)現(xiàn)。然后C語言的結(jié)構(gòu)化編程也讓程序結(jié)構(gòu)變得更加清晰易讀,所以C語言也可以用來很高效的編寫應(yīng)用程序?梢哉f從底層到表層,C語言都可以很好的實(shí)現(xiàn)。當(dāng)然C語言有他的弊病,結(jié)構(gòu)化編程的通用性非常差,有點(diǎn)類似于私人定制,所以在此基礎(chǔ)上,提出了面向?qū)ο蟮母拍,發(fā)展出C++語言。引入了類和繼承。這一拓展,大大的豐富了C語言的編程環(huán)境生態(tài)。特別是微軟開發(fā)的VS系列,發(fā)現(xiàn)至今已二十多年,經(jīng)久不衰。就是因?yàn)閃INDOWS編程的生態(tài)發(fā)展的非常好,記得當(dāng)年有本書叫《深入淺出mfc》專門介紹windows上可以應(yīng)用的公共類。mfc就是Microsoft Foundation Classes的縮寫。
c/c++雖然有相當(dāng)多的優(yōu)勢,但由于還是偏底層,最大的問題是所有的程序都需要編譯。特別是在網(wǎng)絡(luò)編程時(shí)代,非常影響發(fā)揮。
于是JAVA橫空出世,JAVA是邊解釋邊執(zhí)行的語言,不需要特定環(huán)境下的編譯器,因此編程環(huán)境相對(duì)簡單。而且JAVA取消了指針,不用操心內(nèi)存控制,導(dǎo)致程序設(shè)計(jì)也更簡單。當(dāng)然,相對(duì)C/C++,JAVA只能實(shí)現(xiàn)更加表層的功能。如各類b/s系統(tǒng),mis系統(tǒng)等等,是JAVA的典型應(yīng)用場景。
再往上,就是一度流行的各類網(wǎng)絡(luò)編程jsp,asp,php。。。。。以及如今的python,號(hào)稱編程生態(tài)第一流;景殉绦蛟O(shè)計(jì)變成了程序搬運(yùn)。把程序員的工作變成了搬運(yùn)工,只要搭積木式的編程就可以實(shí)現(xiàn)各類應(yīng)用。
最后就是前端,各類腳本語言,界面美工,html。。。。不介紹了,沒啥意思,基本不算程序開發(fā)了。
以上純屬個(gè)人淺見,不當(dāng)之處請(qǐng)多理解。畢竟脫離專業(yè)十幾年了。
凡是涉及到硬件控制的固件,都需要用C語言,在底層一些就要用單片機(jī)匯編語言,在上層更高一些用C加加,純軟件的應(yīng)用程序一般用其他的開發(fā)語言!網(wǎng)緣的網(wǎng)管軟件往往也會(huì)用到c和C加加語言!其實(shí)現(xiàn)在的很多的開發(fā)有語言的都在橫向的發(fā)展,所以也有些拓展,例如他們都應(yīng)用到網(wǎng)絡(luò)的程序開發(fā)當(dāng)中,都有跨界的模糊的地帶,只是有擅長與不擅長之分!
嵌入式領(lǐng)域
單片機(jī)就基本上只用c語言寫,其他語言也有的可以寫,但是效果不好,基本上單片機(jī)都是用c語言編譯的。
C語言,在開發(fā)最底層應(yīng)用的時(shí)候,有不可替代性。而C++則屬于結(jié)合底層和上層技術(shù)的語言,不可替代性沒有那么強(qiáng)了。下面探討一下這個(gè)問題。
嵌入式單片機(jī),操作系統(tǒng),通信等底層應(yīng)用,一般使用C會(huì)更好,或者直接使用匯編語言。
高性能服務(wù)器,游戲渲染等偏底層的應(yīng)用,或者對(duì)性能要求很高的應(yīng)用,用C++的比較多。
當(dāng)然這個(gè)層面沒有那么絕對(duì)了,比如Java在服務(wù)器領(lǐng)域也使用非常廣泛,新貴Go語言也在服務(wù)器領(lǐng)域嶄露頭角,甚至JavaScript借助于node也在后端應(yīng)用發(fā)力。
同樣在游戲領(lǐng)域,也有基于C#的unity跨平臺(tái)游戲引擎,也非常出色,騰訊的王者榮耀就是使用C#開發(fā)的代表作。
再往上層應(yīng)用走,使用C或者C++的就很少了。
Android是Java的天下,當(dāng)然Google的flutter也有前景。
iOS是object C的天下,后來者Swift也在蘋果的強(qiáng)勢推動(dòng)下,使用得越來越多了。
至于桌面端,基本上是C#和Java的天下了。
但是有一個(gè)例外,就是Qt,這個(gè)對(duì)跨平臺(tái)支持最全的框架,是基于C++的。從嵌入式到移動(dòng)平臺(tái),再到桌面平臺(tái),Qt基本上可以通吃。不得不說,在需要支持多平臺(tái)的時(shí)候,Qt是一個(gè)不錯(cuò)的選擇。
但是目前最上層的前端應(yīng)用,還是html,css,JavaScript三劍客的天下。web前端應(yīng)用就不說了!現(xiàn)在還有很多基于web技術(shù)的跨平臺(tái)框架,可以同時(shí)開發(fā)桌面端,移動(dòng)端應(yīng)用,這其中的佼佼者有react native,week等。
這類框架的優(yōu)勢在于技術(shù)棧相對(duì)單一,掌握好前端技術(shù),就可以做各端的應(yīng)用開發(fā)了,不需要學(xué)習(xí)新的技術(shù)。比如flutter,也能開發(fā)多端應(yīng)用,但是需要學(xué)習(xí)dart語言,需要熟悉flutter框架。所以學(xué)習(xí)flutter的性價(jià)比就沒有那么高了。
可能有人擔(dān)心web技術(shù)的性能!其實(shí)這個(gè)也屬于多余的。web技術(shù)非;钴S,發(fā)展迅速。性能這塊,隨著webgl技術(shù)的成熟,已經(jīng)完全不輸本地應(yīng)用了。
另外現(xiàn)在有一種新技術(shù),Web Assembly,可以很好的彌補(bǔ)JS的短板。目前各大瀏覽器,也在積極的推進(jìn)該技術(shù),同時(shí)有很多基于該技術(shù)的應(yīng)用在不斷產(chǎn)生。
而且前面提到JavaScript(nodeJS)在服務(wù)器端應(yīng)用也很廣泛,而且性能不俗,長期發(fā)展,不排除JS一統(tǒng)天下。ㄩ_個(gè)玩笑)!
總的來說,編程語言這個(gè)領(lǐng)域,使用什么語言或技術(shù),沒有那么絕對(duì)!
另外軟件行業(yè),很多東西都是分層結(jié)構(gòu)的,在不同層次有不同的編程語言或者相關(guān)技術(shù)。
針對(duì)不同層次的應(yīng)用,選擇合適的技術(shù),才能事半功倍。千萬不要出現(xiàn)殺雞用牛刀的情況,比如說用C語言開發(fā)網(wǎng)頁!
華裔女賭王就此沒落,生前讓所有 濃情端午粽飄香,青浦邀你“云體 上海:“云端”展現(xiàn)端午節(jié)文化內(nèi) “甜咸大戰(zhàn)”!明星藝人們喜歡什 如何做一個(gè)男人喜歡的情人(如何 當(dāng)你和你同時(shí)出現(xiàn)在同一個(gè)場景中 如何在昏暗的光線下設(shè)置快門速度 教育在生活中的價(jià)值是什么? 世上做壞事的人死后會(huì)面臨什么因 拜登就任總統(tǒng)后的第一步是什么? 同意/不同意:人生最重要的目標(biāo) 二戰(zhàn)后,德國在調(diào)和分歧方面做得 亞伯·林肯恨白人嗎? 一個(gè)編輯能把你的故事毀得有多嚴(yán) 現(xiàn)在的iPhone6還能堅(jiān)持再用一年 曹操為什么不殺司馬懿? 現(xiàn)在買房是不是最便宜的時(shí)候,現(xiàn) 我身邊的農(nóng)業(yè)銀行營業(yè)廳關(guān)了,AT 歐洲媒體評(píng)選CBA最有實(shí)力球員, 榮耀play的6+128和榮耀8X的6+128 螞蟻集團(tuán)是科技公司還是金融公司 請(qǐng)問機(jī)友華為mate30P與華為mate3 聽說老詹修剪一次指甲需要5小時(shí) 為什么說寶寶“一月睡二月哭三月 戴笠人稱戴老板,這個(gè)是怎么叫出 沒有工作能一次性補(bǔ)繳社保么? 我想知道定向師范生和免費(fèi)師范生 肺癌引起的咳嗽是怎樣的呢? 5000mAh電池的5G手機(jī)推薦嗎?要 恒大亞冠表現(xiàn)“差強(qiáng)人意”,你覺