源代碼怎麼編寫的?

看到那些源代碼,好奇它們是怎麼編寫出來的,那些語句,怎麼組成源代碼的,哪些符號,什麼時候加,該敲那個符號,那些單詞又是怎麼工作的,感覺只是一堆單詞和不認識的符號,難道它們的組成有什麼語法之類的東西嗎?就是好奇,怎麼編寫出來的,程序員怎麼知道在哪裡加:或「」或;或#或*或{}或/或()等等...

還有!!!!什麼時候換行,什麼時候加空格!!

要是說給我一堆單詞,我能寫出來英語,但源代碼是不是也是這麼回事,程序員知道該寫什麼,就敲出了那些源代碼,就像翻譯一樣,他們怎麼翻譯的

我想編寫出一段代碼,即使很短,但我想這麼執行,就敲出來了那些代碼,然後執行,比如畫圓之類的代碼,那麼該怎麼做,我又怎麼知道該寫些什麼,該寫什麼單詞,該加哪些符號?

(只是異常感興趣,希望大家說清楚一些,就是好奇為什麼他們要那麼敲,然後神奇的是,電腦可以按他們的想法工作????

這到底是什麼原因,c++編寫代碼到底該怎麼寫,就像怎樣翻譯英語句子一樣)


看到那些英文,好奇它們是怎麼編寫出來的,那些曲了拐彎的,怎麼組成文字的,哪些字母,什麼時候加,該寫那個字母,那些單詞又是怎麼工作的,感覺只是一堆鬼畫符,難道它們的組成有什麼語法之類的東西嗎?就是好奇,怎麼編寫出來的,英國人怎麼知道在哪裡加:或a或the或that或what或how或where或when等等...

還有!!!!什麼時候換行,什麼時候加空格!!

要是說給我一堆符號,我能寫出來源代碼來,但英文是不是也是這麼回事,英國人知道該寫什麼,就寫出了那些英文書,就像翻譯一樣,他們怎麼翻譯的

我想編寫出一本英文書,即使很短,但我想這麼寫,就寫出來了那些英文,然後出版,比如《哈利波特》,那麼該怎麼做,我又怎麼知道該寫些什麼,該寫什麼單詞,該加哪些字母?

回答:學呀


是這樣的,程序員其實就是古時所謂的魔法師,程序員們在選擇了自己的職業之後,他/她本身的大腦中的控制語言的語言中樞就開始進化,與常人不同了。此時如果程序員接到了需求,就會在大腦中開始構思一種邏輯,此時程序員們的語言中樞會將文字慢慢轉化成源代碼,再通過某種方式傳遞到現實世界。

古代的程序員們通過口述的方法念出這些源代碼,而後人把這些口述稱作咒語。古時的程序員們的源代碼可以直接在現實世界運行。他們的這些源代碼可以通過改變現實世界的一些邏輯從而達到自己想要的效果,這樣他們就做到了一些讓人匪夷所思的事情,實際上只是一些程序而已。

後來有一位很厲害的程序員,他造出了一種微觀世界(又稱虛擬世界)叫做計算機。程序員們寫出的源代碼可以改變計算機內最重要的東西,也就是CPU上的一些邏輯門,使得其可以做一些運算得到我們想要的東西。這與現實世界一樣,只不過更小更好控制,使得更多的人可以成為程序員而已。與古代口述不同的是,這樣的源代碼需要用一種叫鍵盤的東西輸入到計算機內。

有的時候,因為個體的差異,每個人的語言中樞不同,所以寫出的源代碼也會有一定的差異。不同地域的源代碼也有不同的語言,例如C、Java啥的。

簡單來說就是,我們寫程序就和說話一樣,語言中樞負責,自然而然就寫出來了。

(今天愚人節所以我就不認真地答一下吧)


英文有語法,代碼也是語言,也有相應的語法,然後用相應的單字,符號,並根據語法表達出想表達的意思出來,甚至如果技術允許的話,還可以用中文英文等自然語言來當代碼


居然有這樣奇怪的問題,凡事要想弄明白,必須親自下水,歡迎樓主親身體驗


編程語言其實就是一種語言,區別於自然語言的主要特徵應該是語法比較固定。

比如說為什麼我們知道要加#,那是因為這門語言規定寫注釋需要在前面加上#

就像英語裡面說最高級的形容詞前面要加the一樣,是語法規定的。

有興趣的話可以去學習編譯原理(不過我怕缺乏專業背景看起來會十分枯燥)

至於計算機怎麼明白的,其實是專門有一個程序負責把C++、PHP、Python等「編程語言」,翻譯成計算機可以理解的「指令」。


鋼筆。

隨便什麼牌子的,英雄或派克,能出墨,書寫流暢,就可以。

特定時刻,若確有必要,也能在國標允許範圍內,使用鉛筆完成代碼修訂任務。下文引自 國標 GB-414141-2017《中華人民共和國強制性國家標準—信息技術 軟體編碼 代碼撰寫工具子集》第四章「編碼工具」、第一條「臨時性工具」:「當任務需要時,確沒有鋼筆,又必須在無鋼筆供給之現場,完成對代碼的實時修訂時,也可採用鉛筆,但必須滿足以下條件:中國第一鉛筆股份有限公司所產中華牌101系列鉛筆,軟度B,黑度≥2。警告:若編碼用筆未能滿足本條規定之要求,造成機讀失敗,查分請求一律不予批准。」


怎麼編寫?

當然是用鍵盤和記事本啊!


《計算機組成原理》

《編譯原理》

附贈 《計算機網路基礎》、《數字電路》、《模擬電路》、《彙編》、《數據結構》、《演算法》、《操作系統》、《資料庫原理》、《計算機圖形學》

當然,最適合題主的是

《 編碼:隱匿在計算機軟硬體背後的語言 》

知乎推送的消息 電腦怎樣執行編程語言的? - 知乎


你們啊!

不要這樣調戲人家小妹妹好不好?

難道它們的組成有什麼語法之類的東西嗎?

是的,就是這樣子的。你說的C++就是一種編程語言,它就有它的語法(不用加引號,真的就叫做語法)。每一種編程語言,都有它自己的語法。所以通常來說,我會C++,就是指我懂C++的語法。

要是說給我一堆單詞,我能寫出來英語,但源代碼是不是也是這麼回事,程序員知道該寫什麼,就敲出了那些源代碼,就像翻譯一樣,他們怎麼翻譯的?

他們就是像你理解的這樣翻譯的。

不過程序世界,講究的是「精確」,而且他們使用的邏輯基本上就是if...else...,就是一步一步的告訴計算機:如果怎麼樣,你就怎麼樣;如果怎麼樣,你就怎麼樣……所以你看現在這些人工智慧,都傻傻的萌萌的很可愛。

比如這個笑話:程序員買包子的笑話合理嗎? - 知乎

老婆給當程序員的老公打電話:「下班順路買一斤包子帶回來,如果看到賣西瓜的,買一個。」當晚,程序員老公手捧一個包子進了家門。。。老婆怒道:「你怎麼就買了一個包子?!」老公答曰:「因為看到了賣西瓜的。」

你看,他們還在討論這個笑話合理嗎,多萌啊!都幾十歲的人啦~~

最前沿的科學家一直在想辦法讓程序能夠更加的「智能」,免得這些傻傻的程序員搞不定客戶的需求,或者發布需求的人受傷

所以,還是大叔我人實在啊!

為了不被程序員砸臉,建議關註:野生程序員 - 收藏夾 - 知乎。多多少少懂一點,好啊……


今天愚人節唉~

佔個坑,明天再答。


其實么這個事情說來話長了。

得從宇宙大爆炸扯起。。。

啊呸。。。。說起。。

實際上,計算機是個很蠢的東西,非常蠢。

你可以認為他只會幾個命令。(腦子是個好東西。。。)

打個比方,你有一頭牛,牛愛吃胡蘿蔔(別管他吃啥),你只要把胡蘿蔔往左放,牛就往左,你吧胡蘿蔔往右放,牛就往右,往前,那麼他就前進。

(假設每條命令都是走一步,你可以通過調這個步數,來調整遠近,暫時不管他)

好了,我們開始編程了,我們讓牛走一個口子路線。(就一個單位,我們假設一條命令為一個牛的長度)

秘籍1.0

往前,往右,
往前,往右,
往前,往右,
往前,往右。

按照這本秘籍!,我們可以讓一個盲人控制那頭蠢牛,走出來一個口字。

沒問題吧?。。看不懂,那麼回頭再看。。。如果你大於三次看到到這裡還看不懂,那麼請關掉這個問題,這個世界不適合你。

少於三次經過這裡,請忽略 下面這句話。

如果當你真的至少第五次經過這裡,那麼,你肯定是有個前途的少年。

如果看到這裡!!!你已經是精英中的精英了。

恭喜你,已經成功入門 武功秘籍了!

好了,我們假定要走一個田字。

怎麼辦,有點複雜了么,我們可以拷貝4個秘籍1.0

一個秘籍1.0代表

往前,往右,
往前,往右,
往前,往右,
往前,往右。

秘籍2.0

秘籍1.0,(走了一個口)
往右,往前,秘籍1.0,(第二個口)
往左,往前,往左,往前,(複位,並平移)
秘籍1.0,(走了一個口)
往右,往前,秘籍1.0,(第二個口)

好了藉由秘籍2.0我們完成了很複雜的事情,居然讓一頭牛走了一個田字,

雖然有很多重複。

自我修鍊時間,如果看不懂,回到頭再來一遍。

如果你還看不懂,繼續努力少年。

我在這裡等著你。

好了。

恭喜你來到第三關,你已經戰勝90%以上的人了。

然後我們來普及關於秘籍中的戰鬥機了!

我們之前每次都是以往前走一牛這個為單位,那麼我們假設需要走二牛,這個長度怎麼辦。

往前很多次?嗯,但是作為聰明的人類肯定是不滿足的,我們修改指令。

往前N牛,往左,往右

N代表在感受到牛走了N個長度之後會停止。(假設不管是通過胡蘿蔔還是鞭子決定,或者把瞎子換成不瞎的,至少我們擁有了一個新的牛,和趕牛的)

秘籍3.0

我們來重新做一個田字。
往前2牛,往右,
往前2牛,往右,
往前2牛,往右,
往前2牛,往右,
往前1牛,
往右,往前2牛,
往右,往前1牛,
往右,往前1牛,
往前2牛

好了感受到高級秘籍的威力了么!

有沒有感覺自己無所不能了?

不信自己走個晶字出來。。忽略中間空的位置。。。

好了如果這裡你都看懂了,,,,居然都看懂了。。。

老夫就要祭出殺手鐧了。。

如果看不懂 回頭再來。。

。。。。。。。。。。。。。。。。。。。

然而並沒有,如果你真的畫出了一個晶,那麼請在下面留言= =。。。

沒有,那就沒有吧。


打個比方,你想得到2,你可以選擇1+1,也可以3-1,或者其他,只要你懂數學就可以,當然,如果你想得到一些複雜的,你數學要好~


每一種語言都有他的語法在,如果你想解答你內心中疑惑,就去買本C++的書認真學習下,自然就知道了,代碼中的世界,很美妙


上次有個英語系的看我寫代碼,先是關心的問我是不是精神出了問題,得到否定的回答後,那一臉鄙視……


我就是好奇這個 才幹的這行.....


就是翻譯呀。最早是翻譯成機器碼,後來是彙編,現在是C++之類代表的高級語言。到目前為止都是一堆符號的組合,懂的人就能看懂。現在已經有追求用自然語言來處理計算問題的想法了。


1、準備一些錢買電腦

2、僱傭程序員幫你寫代碼


隨機生成,運行不了的就刪掉,可以運行的就研究功能並投入生產


源碼是由編程語言寫成的,編程語言分很多種,如c語言,Java,c++,c#.....等等,總體來說分為面向過程的(如c)和面向對象的(如Java,c#)。

每個語言都有自己的關鍵字,保留字。也都有自己語法(其實天下語言,萬變不離其宗)。關鍵字和保留字,是擁有特定功能的單詞,在程序中不能用關鍵字,保留字來定義變數,常量。題主所說的單詞大多數是這些。下文的if……else,for,while就是關鍵字。

{}裡面寫的是代碼段,一般方法,函數後面都要加一個{},然後在{}裡面寫你想寫的代碼。

; 寫在一行代碼的末尾表示該行代碼結束,在這之後要換行,一般我們用一句代碼作為一行,也就是說一行做一件工作。

在語言里都有規定的判斷語句,循環語句,在我已經了解的語言裡面幾乎是一樣的。

if……else判斷語句,用來判斷一件事是不是成立。

int i=1;

if(i&>0)

{printf(「i大於0」);}

else

{printf(「i不大於0」);}

這裡是說如果 (if) i大於0 就輸出 i大於0,否則(else)就輸出i不大於0。

int表示整型變數,int i=1; 的意思是定義一個整型變數,並賦值為1。

這裡可以看到,在if和else後面我們都添加了{}

,其實當判斷,循環後面只有一句話要執行的時候{}可以省略,但是不建議省略。

還有for,while循環語句,循環語句是在循環條件成立的情況下執行之後的語句。

程序員的確實在把自己的想法翻譯成語言

(在高級語言里程序員只是把自己想法翻譯成編譯器所能懂的語言),但是翻譯過程是很麻煩的,需要考慮到數據類型,大小等等相關問題,還要編寫相關的演算法來實現特定的功能。

當程序員寫好一段完整的代碼之後,計算機並不懂程序員的想法,所以是不可執行的,在執行之前需要編譯,所謂編譯就是翻譯,把我們寫好的代碼翻譯成計算機可以讀懂的語言,也就0和1,當編譯成功之後就可以執行了。


不太懂來問這種問題的人,既然想了解的這麼詳細就去查資料看書啊,想讓網友免費給你上課嗎?把原理都講一遍那要超過知乎答題字數限制多少倍了


推薦閱讀:

如何提高閱讀源代碼的能力?
怎麼評價歐陽乾的最後進化?
微軟源碼丟失了會怎麼樣?
jQuery 是庫(library)還是框架(framework)?
android怎樣破解已使用加殼技術的APP?

TAG:程序員 | 編程 | 源代碼 | C | 釣魚廣義的 |