久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

C是一門非常非常垃圾的語言號稱最接近底層的高級語言很多

 山峰云繞 2023-10-06 發(fā)布于貴州

   (C是基于棧的無法在沒有配置棧環(huán)境的操作系統(tǒng)Boot階段運行)不支持操作寄存器只能通過內(nèi)聯(lián)匯編的方式進行

https://m.toutiao.com/is/idYJhU7D/ 

評論6:

知道寄存器的地址,然后指針指向該地址,,修改指針的內(nèi)容即修改寄存器的內(nèi)容,。

C 是一門非常非常垃圾的語言。

C 號稱最接近底層的高級語言,,很多時候都是在和計算機底層打交道,。

但是 C 原生并不支持操作寄存器,只能通過內(nèi)聯(lián)匯編的方式進行,。

而且 C 雖然是發(fā)明出來用于開發(fā)操作系統(tǒng)的,但是 C 是基于棧的,,這意味著 C 程序無法在沒有棧配置的環(huán)境運行,,而操作系統(tǒng)的 Boot 階段恰恰是沒有棧的,。

還有,C 語言的原生數(shù)據(jù)類型除了 char 是一個字節(jié)以外其他的都是不統(tǒng)一大小的,。

這些缺陷造成的問題就是 C 是最適合嵌入式和操作系統(tǒng)開發(fā)的語言,,但是卻在這幾個個方面卻并不方便于嵌入式和操作系統(tǒng)開發(fā)。

所以不考慮代碼效果,,即無論是運行出錯還是怎樣,僅僅是功能上,, C 語言的缺陷也是相當大的,。

為了解決這些問題,C23 標準通過了多項提議(事實上早該通過了,,為了兼容早期代碼才拖延到現(xiàn)在),,包括但不限于 asm 成為關鍵字、_BitInt 關鍵字,、支持二進制字面量分段,、#embed 宏等,目的就是方便嵌入式和操作系統(tǒng)的開發(fā)(終于意識到 C 自己的風口在哪里了),。

另一方面,,C 的語言前端設計得也不夠強大。

C 語言類型系統(tǒng)不夠完備,,不支持有關類型的判斷,,這使得很多設計模式不能在 C 中方便地應用。

而且 C 語言的預處理功能設計得很弱,,只能做一些文本替換和基本的宏判斷,。而且標準委員會在預處理這塊比較保守,除了 C23終于添加了 C++ 的很多預處理命令外,,基本沒什么額外設計(#embed 算是個例外),。

所以,就有人開發(fā)了一門叫做 zig 的語言用以代替 C 語言,。zig 提出了一種稱之為 comptime 的概念,。被標識為 comptime 的程序會在編譯期執(zhí)行,并把運行結果放到調(diào)用的位置,。comptime 極大地擴展了語言的預處理功能,,算得上是非常精妙的設計了。



所以,,C 不是沒人噴,,只是別人噴的時候你沒看到罷了。

別人都是一封封郵件發(fā)往標準委員會,或者直接設計一門新的語言,,而不是跑到某些地方發(fā)牢騷(雖然這的確有助于發(fā)泄情緒),。

不過這些噴 C 語言的人都是非常厲害的人物,干的都是改變碼農(nóng)界的大事,,而普通人能做到精通 C 就已經(jīng)很厲害了,,至于噴就別想了,根本噴不到點子上,。


評論:C語言就是一個從匯編到高級語言的跨越,,是一個劃時代的成果。但經(jīng)過40多年的應用,,加上后向兼容的需求,,使其設計暴露出很多現(xiàn)代高級語言所缺乏的新能力,C++和Go lang就是最好的繼承者,!

評論2:

他可能是指Linux或Windows下的C語言,。其實能不能操作寄存器,不在語言本身,,而在于編譯器,。單片機的C編譯器都是直接操作寄存器的。之所以在操作系統(tǒng)下不允許直接操作寄存器,,應該是為安全考量,。

C語言是不可替代的,因為Linux內(nèi)核發(fā)展到今天,,已經(jīng)龐大到無法用其它語言來改寫,。

真的不能,除非內(nèi)嵌進去asm語句,。

評論4

C本來就是為了擺脫操作寄存器這些底層操作而抽象到內(nèi)存地址這一層面的,。要精確到寄存器級別只有匯編。而且桌面端本來就不是C的強項,。你不能用一個全能的心態(tài)去要求一個??啤V皇荂是一個最接近全能的開發(fā)語言而已,。

評論5:

用了20年C,,最不爽的是C沒有this指針,其他沒有感覺明顯缺陷,。

所謂Boot沒有棧,,這都不是問題,絕大部分CPU的啟動代碼,,都與硬件相關,,初始需要少部分機器碼或者匯編碼是難免的,。

類型判斷確實是個硬傷,所以設計模式不是C的強項,,可是使用C的通常并不需要太多語言技巧,,語言的簡練有時不是看寫的代碼量,而是看編譯后的代碼量,。

評論6

學好了c的精髓再來寫文章。

CPU內(nèi)部寄存器,,除了asm,,那個高級語言能直接操作?

外部寄存器,無論什么soc, 單片機也好,,安卓也好,。都是以存儲器地址映射來操作的。

計算機語言沒有高低之分,,只有需求區(qū)分,。好的程序員并不是那種語言掌握的好,而是實現(xiàn)功能邏輯好與壞,。

評論6:

知道寄存器的地址,,然后指針指向該地址,修改指針的內(nèi)容即修改寄存器的內(nèi)容,。

    本站是提供個人知識管理的網(wǎng)絡存儲空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導購買等信息,謹防詐騙,。如發(fā)現(xiàn)有害或侵權內(nèi)容,,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多