日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

java有什么压力_编程语言的心智负担!你学编程得有多大的压力快来测试一下...

發(fā)布時(shí)間:2023/12/9 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java有什么压力_编程语言的心智负担!你学编程得有多大的压力快来测试一下... 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

很多編程語(yǔ)言對(duì)比的文章,總喜歡比較各種編程語(yǔ)言的性能、語(yǔ)法、IO模型。本文將從心智負(fù)擔(dān)這個(gè)角度去比較下不同的編程語(yǔ)言和技術(shù)。

內(nèi)存越界

如:C語(yǔ)言、C++(C with class)

C/C++可以直接操作內(nèi)存,但編程必須要面對(duì)內(nèi)存越界問(wèn)題。發(fā)生內(nèi)存越界后,程序會(huì)直接core dump,開(kāi)發(fā)者需要使用gdb工具分析內(nèi)存錯(cuò)誤的原因,如果內(nèi)存越界是偶發(fā)的,比如由于數(shù)據(jù)同步問(wèn)題造成,數(shù)億次中會(huì)出現(xiàn)一次,解決起來(lái)非常困難,甚至需要頂級(jí)專家才能找到問(wèn)題原因。

心智負(fù)擔(dān):10

現(xiàn)代C++提供了STL庫(kù)包含大量容器,另外C++支持引用語(yǔ)法,不再需要直接操作指針,降低了內(nèi)存錯(cuò)誤讀寫(xiě)的風(fēng)險(xiǎn)。使用現(xiàn)代C++的編程風(fēng)格可以避免此問(wèn)題。但由于C++沒(méi)有完全從語(yǔ)法層面移除指針,不夠徹底。

C/C++程序中經(jīng)常使用預(yù)定義宏實(shí)現(xiàn)一些邏輯,導(dǎo)致可讀性變差。有些情況下會(huì)嵌套多次宏的使用,展開(kāi)后變得極其難讀。

心智負(fù)擔(dān):6

因此在C/C++中建議使用enum或static inline函數(shù)代替宏。

內(nèi)存管理

如:C語(yǔ)言、C++

C/C++語(yǔ)言,需要手工管理內(nèi)存,malloc/new申請(qǐng)的內(nèi)存要與free/delete成對(duì)使用。申請(qǐng)的內(nèi)存忘記釋放,就會(huì)出現(xiàn)內(nèi)存泄漏。

心智負(fù)擔(dān):8

Java/PHP/Go等有GC的編程語(yǔ)言,不需要手工管理內(nèi)存,不會(huì)因?yàn)榇a錯(cuò)誤引起內(nèi)存泄漏。

心智負(fù)擔(dān):0

數(shù)值類型

C/C++/GO等編程語(yǔ)言,提供了有符號(hào)、無(wú)符號(hào)整型和浮點(diǎn)型,8/16/32/64不同尺寸的整型。編程時(shí)需要額外處理,避免數(shù)值溢出。

心智負(fù)擔(dān):6

PHP/Java等編程語(yǔ)言,默認(rèn)整數(shù)為有符號(hào)int64,降低了心智負(fù)擔(dān)。一般業(yè)務(wù)項(xiàng)目中很難有超過(guò)2^63的數(shù)字,不會(huì)遇到問(wèn)題。但如果是做科學(xué)計(jì)算,int64就難以滿足需求了。在PHP中超過(guò)2^63底層會(huì)轉(zhuǎn)為浮點(diǎn)型,計(jì)算將丟失精度。

心智負(fù)擔(dān):1

而Python整數(shù)是不限長(zhǎng)度的,可以做任意位數(shù)的數(shù)值計(jì)算。

心智負(fù)擔(dān):0

類型約束

Java是靜態(tài)強(qiáng)類型編程語(yǔ)言,因此在編程中存在類型約束,某些情況下可能不是特別方便。如JSON序列化。不同類型的變量互相操作時(shí)可能需要進(jìn)行顯式類型轉(zhuǎn)換。

心智負(fù)擔(dān):2

PHP/JS是動(dòng)態(tài)弱類型編程語(yǔ)言,底層自動(dòng)進(jìn)行隱式類型轉(zhuǎn)換。編程更方便。

心智負(fù)擔(dān):0。

項(xiàng)目維護(hù)

在大型項(xiàng)目,或?qū)σ延邢到y(tǒng)進(jìn)行代碼重構(gòu),以及項(xiàng)目代碼更換開(kāi)發(fā)者時(shí),弱類型帶來(lái)可維護(hù)性、可讀性的難題,與Java/Go/C++這樣的靜態(tài)強(qiáng)類型編程語(yǔ)言在編譯期就可以發(fā)現(xiàn)問(wèn)題。而動(dòng)態(tài)、弱類型語(yǔ)言可能會(huì)因?yàn)橹貥?gòu)或其他維護(hù)操作產(chǎn)生運(yùn)行時(shí)錯(cuò)誤,增加了心智負(fù)擔(dān)。

心智負(fù)擔(dān):5

多線程編程

Java/C++/Go提供了多線程并行編程、無(wú)鎖編程,在編程中會(huì)存在數(shù)據(jù)同步問(wèn)題。因此需要對(duì)臨界資源進(jìn)行加鎖。而錯(cuò)誤的鎖操作又會(huì)帶來(lái),死鎖和熱點(diǎn)爭(zhēng)搶問(wèn)題。需要開(kāi)發(fā)者具備極高的素質(zhì),否則難以做到正確無(wú)誤并性能良好,這可能需要耗費(fèi)大量心智。

心智負(fù)擔(dān):10

內(nèi)存泄漏

除PHP(php-fpm)之外的其他編程語(yǔ)言和技術(shù)(包括PHP + Swoole),在服務(wù)器端程序中均為長(zhǎng)生命周期。對(duì)全局/靜態(tài)變量操作可能會(huì)導(dǎo)致內(nèi)存或資源句柄泄漏。編程時(shí)需要注意。

心智負(fù)擔(dān):3

而PHP(php-fpm)是短生命周期的,在請(qǐng)求結(jié)束后會(huì)立即釋放所有內(nèi)存和句柄,無(wú)需擔(dān)心泄漏。

心智負(fù)擔(dān):0

IO 超時(shí)

同步阻塞IO模型的編程語(yǔ)言和技術(shù),在遇到某個(gè)慢IO會(huì)導(dǎo)致整個(gè)進(jìn)程或線程掛起。極端情況下會(huì)出現(xiàn)所有進(jìn)程/線程掛起,引起線上服務(wù)不可用。開(kāi)發(fā)者需要格外注意設(shè)置IO操作的超時(shí)時(shí)間,避免慢請(qǐng)求帶來(lái)進(jìn)程/線程阻塞。

心智負(fù)擔(dān):2

而且異步IO的Go/Node.js/Swoole等無(wú)需擔(dān)心此問(wèn)題。

心智負(fù)擔(dān):0

匯總

看到這里是不是又有很多感悟了呢~

點(diǎn)擊播放 GIF 0.0M

總結(jié)

以上是生活随笔為你收集整理的java有什么压力_编程语言的心智负担!你学编程得有多大的压力快来测试一下...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。