回答:謝邀。程序員編程時(shí),C語言的確可以看做一門外語——一門我們?nèi)祟惻c計(jì)算機(jī)交流的語言,編程就是將人類的意圖通過這門外語翻譯給計(jì)算機(jī),計(jì)算機(jī)理解我們的意圖后,就知道該做什么了。不過,編程語言這門外語與我們?nèi)祟愔g交流的語言(漢語,英語等)還是有一些不同的,這里將嘗試說說我認(rèn)為的二者的區(qū)別。自然語言和形式語言在開始看 C 語言代碼之前,我們先來說說自然語言和形式語言。自然語言就是我們?nèi)祟愓f的語言,比如漢語...
回答:c語言是由匯編語言開發(fā),是目前除匯編語言外效率最高的語言,是主要面向過程的語言,是全能的語言,操作系統(tǒng)及其他編程語言基本都由c開發(fā)。Python由c開發(fā),比c靈活,是解釋性語言。但學(xué)了Python你會(huì)發(fā)現(xiàn)基本沒用,因?yàn)檫€要學(xué)很多知識(shí),還要倒回頭學(xué)c,c++,那才是編程的根本,所以不要問小白要先學(xué)什么,就是先學(xué)c,打好基礎(chǔ)再學(xué)別的。
回答:首先上結(jié)論:(1)不是所有的編程語言都要先編譯成C(2)甚至有編程語言連編譯成匯編這一步都跳過了。(3)不是所有的編程語言都需要編譯,有的是純解釋型語言1. 編程語言到硬件執(zhí)行之間到底發(fā)生了什么?硬件執(zhí)行的本質(zhì)就是一堆電子元件的開關(guān)動(dòng)作,開、關(guān)兩種狀態(tài)可以用二進(jìn)制的1和0來表示,這樣整個(gè)硬件的執(zhí)行就和二進(jìn)制對(duì)應(yīng)了起來。硬件是無法理解上層的高級(jí)編程語言的(比如Java、C++、C,、C#、Javas...
回答:程序源碼被翻譯成機(jī)器碼之后才能被電腦執(zhí)行。通過匯編和反匯編,匯編語言和機(jī)器碼可以相互轉(zhuǎn)換。我的回答中就只說機(jī)器碼了。按照?qǐng)?zhí)行方式大致可將程序語言分成三類: 編譯方式 將源代碼翻譯成機(jī)器碼后執(zhí)行的方式。這種方式執(zhí)行速度快,但對(duì)操作系統(tǒng)有依存性。 混合方式 將源代碼翻譯成中間碼(如,字節(jié)碼)后,在有各OS上的虛擬機(jī)翻譯成其他語言或命令執(zhí)行。或者,使用實(shí)時(shí)編譯(JIT)轉(zhuǎn)換成機(jī)器碼后執(zhí)行。 解釋方式 將...
回答:**1、C**C語言的應(yīng)用領(lǐng)域極為廣泛,從操作系統(tǒng)、嵌入式領(lǐng)域、數(shù)據(jù)庫、服務(wù)器、單片機(jī)、編譯器,到Linux開發(fā)等,幾乎每個(gè)領(lǐng)域都有其身影。對(duì)于新手來說,C語言起步難度較大,然而一旦穩(wěn)定掌握即可前途無憂,擁有3-5年開發(fā)C語言經(jīng)驗(yàn)的程序員月薪約為10-15k,而擁有5-10年工齡的碼農(nóng),月薪可達(dá)到25K-50K。C語言是一門非常基礎(chǔ)的必學(xué)語言,硬件開發(fā)行業(yè)對(duì)于優(yōu)秀的C語言開發(fā)者將是不錯(cuò)的選擇方向,...
回答:反匯編程序。匯編語言絕對(duì)有用。如果能讀懂匯編語言的話,那程序反匯編之后,你也讀不懂。我曾經(jīng)自學(xué)過匯編語言,而學(xué)習(xí)匯編語言的目標(biāo)很簡單,就是反匯編動(dòng)態(tài)跟蹤游戲,然后找到游戲的所謂的call。然后用其他的高級(jí)語言程序編寫外掛。可以完成游戲中的一些動(dòng)作,這種外掛被稱為內(nèi)存掛,效率要遠(yuǎn)遠(yuǎn)高于像按鍵精靈一樣的游戲外掛。如果您玩游戲的話又想自己寫外掛的話,這一個(gè)是必須學(xué)習(xí)的,不然的話你沒法做一個(gè)好的游戲輔助。...
...是指在應(yīng)用源程序執(zhí)行之前,就將程序源代碼翻譯成匯編語言,然后進(jìn)一步根據(jù)軟硬件環(huán)境編譯成目標(biāo)文件。一般我們稱完成編譯工作的工具叫編譯器。而解釋型語言,在程序運(yùn)行時(shí)才被翻譯為機(jī)器語言。但是執(zhí)行一次...
...執(zhí)行了四步操作:1.預(yù)處理(Preprocessing)2.編譯(Compilation)3.匯編(Assemble)4.鏈接(Linking) 示例代碼: // test.c #include #include mymath.h// 自定義頭文件 int main(){ int a = 2; int b = 3; int sum = add(a, b); ...
...執(zhí)行了四步操作:1.預(yù)處理(Preprocessing)2.編譯(Compilation)3.匯編(Assemble)4.鏈接(Linking) 示例代碼: // test.c #include #include mymath.h// 自定義頭文件 int main(){ int a = 2; int b = 3; int sum = add(a, b); ...
...和const修飾的全局變量 c的源文件經(jīng)過了預(yù)處理, 編譯, 匯編, 鏈接, 每一步的作用是什么。 預(yù)處理Pre Pocess:包含頭文件, 條件編譯, 宏替換 編譯:檢查語法錯(cuò)誤. 檢查無誤后, 將代碼翻譯成匯編語言 匯編:將匯編語言轉(zhuǎn)化成二...
...和const修飾的全局變量 c的源文件經(jīng)過了預(yù)處理, 編譯, 匯編, 鏈接, 每一步的作用是什么。 預(yù)處理Pre Pocess:包含頭文件, 條件編譯, 宏替換 編譯:檢查語法錯(cuò)誤. 檢查無誤后, 將代碼翻譯成匯編語言 匯編:將匯編語言轉(zhuǎn)化成二...
...義域限制,而const常量只在定義域內(nèi)有效 const定義常量從匯編的角度來看,只是給出了對(duì)應(yīng)的內(nèi)存地址,而不是象#define一樣給出的是立即數(shù),所以,const定義的常量在程序運(yùn)行過程中只有一份拷貝(因?yàn)槭侨值闹蛔x變量,存在...
...幾個(gè)階段: ??預(yù)處理 (?gcc -E?) 編譯 (?源文件?轉(zhuǎn)換成?匯編代碼?) 匯編 鏈接 2.3 運(yùn)行環(huán)境 3. 預(yù)處理詳解 ? 3.1 預(yù)定義符號(hào) 3.2 #define ? 3.2.1 #define 定義標(biāo)識(shí)符 3.2.2 #define 定義宏 3.2.3 #define 替換規(guī)則 3.2.4 #和## 3.2.5 帶副作用的宏參...
...Script 使用他們。 WebAssembly 處于哪個(gè)環(huán)節(jié)? 在上一篇關(guān)于匯編的文章中,我介紹了編譯器是如何從高級(jí)語言翻譯到機(jī)器碼的。 那么在上圖中,WebAssembly 在什么位置呢?實(shí)際上,你可以把它看成另一種目標(biāo)匯編語言。 每一種...
... 文章目錄 程序預(yù)處理程序的翻譯環(huán)境預(yù)編譯編譯匯編鏈接 程序的執(zhí)行環(huán)境 程序的預(yù)處理預(yù)定義符號(hào)#define#define 定義符號(hào)注意 #define 定義的宏錯(cuò)誤形式 #define 的替換規(guī)則注意 宏操作符 `#`和`##`帶副作用的...
...編譯器能夠準(zhǔn)確無誤的選擇是使用根據(jù)OF位的進(jìn)行操作的匯編指令,還是選擇是使用根據(jù)CF位的進(jìn)行操作的匯編指令,總結(jié),c語言的符號(hào)設(shè)計(jì)是讓程序員顯示指導(dǎo),消除歧義。 類型強(qiáng)轉(zhuǎn) 他這個(gè)設(shè)計(jì)又是為了什么呢??說白了就...
...和插座,從而來完成各種計(jì)算任務(wù) IBM的Plugboard 2 編譯=>匯編 代碼=>機(jī)器碼 代碼,到底是怎么變成一條條計(jì)算機(jī)指令,最后被CPU執(zhí)行的呢? test.c 編譯(Compile)成匯編代碼要讓這段程序在Linux跑起來,需要把整個(gè)程序翻譯成匯編...
ChatGPT和Sora等AI大模型應(yīng)用,將AI大模型和算力需求的熱度不斷帶上新的臺(tái)階。哪里可以獲得...
大模型的訓(xùn)練用4090是不合適的,但推理(inference/serving)用4090不能說合適,...
圖示為GPU性能排行榜,我們可以看到所有GPU的原始相關(guān)性能圖表。同時(shí)根據(jù)訓(xùn)練、推理能力由高到低做了...