-
1 # 好空間網路小程式開發
-
2 # 來自月亮的他
很簡單啊,搞計算機的人研究出來的,也可能是花錢買來的。不要低估錢的力量。——我又不是研究電腦的,你們以為我真知道啊?
-
3 # 理科也有歷史
這你得看一下計算機發展史,首先是出現了機械計算機,齒輪的,十進一再回彈那種,但是不夠用啊,只有加減,於是一幫小二缺想法把乘除也做裡面,這傢伙,做出來一個計算機跟公交車那麼大,但是還不夠,算不了公式,這時候,紙帶卡出現了。有人就透過紙帶卡卡住一些齒輪啊什麼的,能使機器做想要的運演算法則。
這時候,有個哥們發現了二極體,臥槽,好使,用高階的機械計算機原理用二極體造了個電子計算機,但是怎麼控制運算,就是沒紙帶卡了咋辦....這時候01出現了(主要是二極體只能是開或者關,就倆方向。說01也好,說57也好,找倆代表)用基礎的01做紙帶卡,給它個複雜的公式,算得更高階一些。
其實就是在控制二極體,訊號輸入後哪些二極體開,哪些二極體關,電流到最後給了個結果。但是公式越來越多....不好辦吶,全是卡,這換卡我得累死。於是CPU出來了,寫死的,也可理解為硬體電路就只能這樣,然後配合硬體電路有一個指令集,每個CPU指令集肯定不一樣,和硬體二極體開關有直接關係。也就是你見過的dir什麼的,當電路碰到比如說look這個詞其實碰到了代表look的一堆010100101010,但是電流透過硬體讀出的010010100101001這些得到的結果就是look,當然多數你沒見過,因為軟體都在指令集上層,一般也看不到。
你說的程式設計軟體,就是寫一些字母以及背後的01010010100讓二極體電子計算機去計算得到一個結果,基本都能直接呼叫到指令集,也就是公式,固定了。你就在這麼一個框架內用它給你的不多的公式來編纂出你想要的結果的公式。
偶這麼講不知道你聽懂沒聽懂...
-
4 # 山上的老白白
創造程式語言的方法叫做編譯。有一種語言叫做彙編,是介乎機器語言,也就是晶片指令,與高階語言之間的語言。早期的basic,c語言或者其他高階語言,都是由組合語言編譯的。後期的,面向物件,視覺化的程式語言,往往是用c編譯的。
-
5 # 小小弓長
大多數程式設計軟體IDE是c寫的,也有c++,硬體是看不懂語言的,他只懂二進位制,所以人們就製作了一本詞典ASCII碼錶,約定好什麼樣的字元對應什麼樣的二進位制數,比如大寫字母A對應二進位制的01000001,編譯器就是翻譯官,幫助人們把字元翻譯成二進位制,使機器知道我們人像幹什麼,從而執行相應的命令。
-
6 # 相反丶
現今軟體程式設計多是由計算機高階語言編寫,如vb、c++等,計算機在執行指令時需要把高階語言“翻譯”成低層硬體能夠識別的機器語言,也就是二進位制數。軟體其實與軟體程式設計在時間上是同時發展的,當有“軟體”這種說法的時候,“程式設計軟體”就已經產生。不難想到,最初的程式設計軟體是用機器語言寫成,並隨著歷史發展,逐步用匯編語言,高階語言來編寫。
-
7 # Migod
電晶體,開關——>機器碼(二進位制指令,用打孔控制開關)——>組合語言(已經有了彙編編譯器,將其轉換成二進位制機器碼)——>中級語言(C語言等,經編譯器編譯成可執行程式碼)——>高階語言(高階語言編譯器或直譯器出現,直接將需要翻譯成可執行的二進位制程式碼)大概就這樣。各種編譯器配合執行庫都是由更原始的語言或程式碼來開發的程式,後期升級之後,可能把編譯器,翻譯器改由更高階的語言重新編寫過,並實現更多功能。於是有了各種版本的程式設計軟體。甚至很多程式設計軟體可以同時使用多種語言來編寫軟體。比如作業系統需要同時使用匯編語言和C語言。
-
8 # feelingtheworld
今天我們用到的程式設計軟體也是軟體,所以也是軟體編寫出來的。首先是晶片硬體整合機器指令執行能力,用機器指令編寫的彙編編譯程式,然後用匯編寫的FORTRAN等高階語言編譯軟體,用來編譯FORTRAN語言,後來又用FORTAN編寫其他語言的編譯器,一步一步到C語言,後來又用C語言重寫編譯軟體來編譯C自己,然後又用C語言來編寫C++編譯軟體……其他各種語言的編譯軟體,又用C++來編寫更高階語言的編譯軟體和IDE整合開發軟體……
-
9 # 犍為真人
用一句話回答就是:軟體是用程式設計軟體編的,那麼程式設計軟體同樣是用程式設計軟體編的。
程式設計軟體有很多功能,包括編輯、編譯、除錯、解釋、測試等等。為簡單起見,我們這裡只討論編譯功能。不嚴格地說,編譯可以理解為是將人類能看懂的程式程式碼翻譯成機器能看懂能執行的機器語言。如果是Windows上寫C程式,那編譯器的作用就是將C程式翻譯成exe字尾的二進位制檔案(也可能是dll,這裡不去深究)。
那麼編譯器本身也是exe,也是機器語言,它又是誰編譯出來的呢?不失一般性,我們假設有一個編寫C語言的程式設計軟體,或者就直接叫編譯器,它的名字是cl。有一個很好玩的事實,編譯器可以自己編譯自己。說的具體點,cl3.0版本可以用cl2.0版本編譯生成出來,cl2.0用cl1.0編譯出來。當然前提是假設這個cl2.0以上都是用C語言寫的源程式。所以說有了第一個cl版本,1.0版本,後面的都不是事。
現在問題來了,第一個cl.exe怎麼來的呢?有很多可能。說不定當時市面上已經有了另一款C語言編譯器,而第一個cl如果是用C語言開發的,它當然就可以用那款C編譯器編譯出來。
而如果假設cl本身就是世界上第一個C語言編譯器,怎麼破?那麼它肯定不可能也是用C語言寫的,因為第一個嘛,還沒有誰能編譯C語言程式。第一個C語言編譯器可以用匯編,或者B語言,或者其他的某種已經有編譯器的語言編譯出來。至少用匯編是絕對沒有問題的。
接著思考,第一個彙編程式怎麼來的?那就沒有辦法了,靠手寫了,人工寫機器語言。而在那個時候,程式是非常短小的,用人工寫也不會是太複雜。彙編程式就是把組合語言翻譯成機器語言的程式。比方說一句彙編指令,叫做mov ax,bx,翻譯成機器語言就是1000100111011000。簡單吧。基本上接近一一對應,至於如何對應,就要查CPU廠商的硬體手冊。比如因特爾386,比如酷睿i7。只要手工寫出一段用二進位制形式的機器語言,能實現將組合語言翻譯成等價的機器語言,就搞定了。當然這不是一兩天能搞定的,但是一旦寫好,後面的事就簡單了。有了第一個彙編程式,就能彙編出第一個C語言編譯器,有了第一個C語言編譯器,就能編譯出第二個第三個其他的C語言編譯器。有了C語言編譯器,還可以編譯出其他語言,比如JAVA、C#的編譯器。
-
10 # 吃燒烤的企鵝
寫軟體的軟體是用編譯器做開發出來的。編譯器也是一種軟體,當時它與硬體聯絡的非常緊密,可以說不懂cpu的構造,是做出不編譯器的。編譯器這個軟體較特殊,不要看他簡陋粗糙,它是把電晶體二進位制數碼翻譯為軟體的重要橋樑。編譯器再向底層走,那就是各種邏輯譯碼器了,比如最常見的3-8譯碼器啦、8421BCD譯碼器啦、格雷碼譯碼器啦,這些譯碼器再往底層走,那就要用到鍵盤這個關鍵的IO互動裝置了。需要提及的是,這個鍵盤可不是你現在電腦上用的鍵盤,是一種廣義的IO互動裝置,最初的鍵盤只有計算器那麼簡單。最後,透過特定的數學編碼,那麼在鍵盤上按相應的操作就可以實現所需功能,這個所需功能複雜化那麼就是軟體了。可能我說的有點亂。最後再說兩點輔助理解,1)數碼管和撥碼開關本身是不具備任何顯示資訊功能的,但是透過特定的線路排列,加電後,撥通某個對應開關就能顯示0-9數字,那麼此時撥碼開關就相當於鍵盤,線路排列過程就相當於編譯過程,0-9數字就相當於一個最簡單的軟體了;2)想用一個俗語來形容一下0-1二進位制數是怎麼變革為複雜軟體的,這個俗語就是“羅馬不是一天建成的”“冰凍三尺非一日之寒”,因為我們沒有出生在60年代,所以對計算機的發展沒有那麼清楚。最初的軟體、硬體非常簡單,正是由於這些簡單的東西,相互不斷地發展促進了對方的複雜化,才有了今天豐富的網際網路計算機世界。
-
11 # 範帥專一啊
你說的程式設計軟體一般指IDE,例如vs2010,eclipse等。IDE只是程式設計軟體的外殼,外殼的實現沒有太大的難度。什麼程式語言都可以實現。核心部分是編譯器,不的的程式語言有不同的編譯器或直譯器,例如java虛擬機器,gcc等。編譯器一般是c語言實現的,c語言是底層程式語言,同樣是最古老的程式語言之一。世界上第一個c需要編譯器可能是組合語言實現的,組合語言是機器指令的符號描述。機器指令是cpu的核心,也是硬體和軟體聯絡的橋樑,不同的cpu支援不同的指令集,以至於形成不同的指令架構,如x86架構,arm架構等。機器指令用二進位制描述,所以組合語言出現之前,程式執行都是直接輸入機器指令,就是一系列的0和1,這個裝置叫紙帶機,上面有一系列小孔,有孔代表0,沒孔代表1,完成機器指令輸入。
-
12 # 海底核電站
假如你經歷過紙帶時代,z80等計算機原理必用的單板機,就應該搞得明白程式設計軟體怎麼來的。
簡單地說是從撥開關開始一步一步發展來的。
首先,計算機硬體只認機器碼,就是一個體系的計算機只認它硬編好的機器碼——指令,例如定義:01011001=暫存器相加,後面跟兩個表示暫存器的數就行……;一堆不同的指令組成指令集,例如x86,arm什麼的。硬體廠商為了寫程式的方便,把這樣機器碼用人好理解的簡寫詞來表示它,叫助記符,例如上面這個可以用add表示,例如:add r5, r6 對應的機器碼可能是:01011001 00010101 00010110,你都記住指令集了,原理上通過幾個開關就可以把指令輸入給計算機,但……人總是很懶的,不停開關總是很麻煩很枯燥很容易出錯,而且計算機執行再慢也比你按開關快,開始時硬體還巨貴,所以人們想到輸指令和錄入分離,便宜簡單的方法就是紙帶機,“程式設計序”的可以透過打孔機在紙帶上打洞洞表示一串串指令及資料,打好後透過紙帶機讀入到計算機執行,計算結果再透過打孔機打到紙帶上,程式猿判讀結果……。
初期的計算機基本就是這樣工作的,會編這些機器碼的自然就是“編碼”了,就是現在說的程式設計師。
漸漸地,人們在實際工作中不斷開發出各種外圍裝置,例如鍵盤,顯示器,磁帶機,磁碟機,印表機等。工具的進步又帶動編碼方式的進步,編的碼越來越複雜,這樣就不能讓人一個機器碼一個機器碼地往裡敲,計算機做重複的事情畢竟快嘛,固定的東西不犯錯,所以就有人用紙帶機什麼的編出一些可以把助記符序列轉成機器碼的程式,可以理解成組合語言編譯程式,有了這個東西就可以用匯編寫程式,再由編譯程式翻譯成機器碼,程式語言就從簡單到複雜不斷迭代發展,例如蓋茨在最早時就是用紙帶機寫出個人機的basic直譯器的。
現在不少人總認為組合語言是由機器語言寫的,所謂“中級”語言是由彙編寫的,“高階”語言又是由“中級”語言寫的……其實這是烏有的事,用任何一種語言都可以寫出其它語言的翻譯器,沒錯,任何語言都行,只要你夠牛,用解釋型basic寫一個c編譯器沒任何問題,同樣,你腦子有夠用的話用機器碼也可以寫一個。
現在的巨無霸級“開發系統”,沒十G八G都不好意思出門,無他,這都是幾十年積累來的。
-
13 # 衚衕口兒王大爺
首先樓主想要明白這個問題的答案,那麼就要先糾正一下不能叫程式設計軟體編的。程式是由語言所編寫的,語言是由編譯器編譯或直譯器解釋的。何為編譯或解釋?我們先要了解程式我們在這裡可以粗俗的理解成資料交換和傳遞的容器。最早程式裡的資料傳遞就是1010二進位制的(具體可補充計算機原理知識和ASCII碼相關知識),但1010實在不方便人類可讀可知,後來各個晶片廠商就推出一個介面語言可以操作晶片裡的暫存器進行資料的交換和計算,我們統稱操作這類CPU晶片介面語言叫做組合語言。他們是除了二進位制最貼近底層的人類可讀的語言。再後來由於晶片廠商不斷增加晶片種類不斷增加,為了方便,就有人寫了一個語言,並可以將這個語言中表示的內容轉換成當前晶片上的組合語言。這個轉換的動作就叫做“編譯” 而這個語言就叫做“C”。再後來就是基於C系列的派生語言(這裡只說C系的),這類語言會有“物件”這類的高階概念,它們會自身先編譯或解釋成C語言由C語言再轉換成彙編去執行。這類語言統稱為“高階語言”也就是大家接觸最多的。如Python Go Java等。目前世面的程式都是由高階語言或C這類的語言寫出來的。over
-
14 # 默默的叫了一聲爸對吧
學計算機的人不會糾結這個問題,不學計算機的 弄清楚了也沒意義 這麼和你說 現在機器都是機器生產的 那生產機器的機器是啥生產的 是人
計算機一開始啥也不認識 只認識通電沒通 然後最底層的程式其實是硬體代替的 和你說了你也不懂 基礎的軟體都是彙編出來的
-
15 # Nicetrip
二進位制碼程式設計(最基礎的機器碼0101),形成彙編(低階語言);彙編程式設計產生高階語言(C語言等)。windows作業系統框架很大成分是用C語言編寫的。
一把泥土形成一塊磚,若干磚塊砌成一堵牆,若干堵牆形成一個房, 若干間房形成一座城。
-
16 # 噴子來啦好熱鬧
機器碼程式設計→彙編程式設計→C/C++語言程式設計→Java/C#/PHP程式設計
計算機程式語言是一個自我迭代升級的過程,最初透過編寫機器碼來操作指令完成運算,後期有了彙編編譯器以及文字編輯器,透過彙編編寫BIOS、作業系統,然後有了C語言就透過C語言開發系統引導、作業系統、更高階的編譯器,有了C語言,利用C語言開發更高階的面向物件的程式語言以及指令碼語言
-
17 # 搖椅小琦
不扯遠了,上面很多人扯到了計算機發展史,這個可就扯遠了,比較簡單的說法,程式設計軟體同樣可以是程式設計軟體做出來,你只要演算法清楚用V B也可以編出直譯器乃至編譯器來,但業界從程式執行效率和底層訪問便利性上來決策,一般仍用C語言及彙編來製作程式設計軟體為多
-
18 # wlhx_idear
程式設計軟體也是用程式語言,只是它內部集成了編譯器,程式設計軟體只是給人編輯人可以看懂的程式碼,編譯器把它編譯成CPU可以識別的由指令集表達的程式碼包,然後這些指令傳送給CPU之後由它的控制器表達為CPU內部的各個模組的邏輯控制電平,而這些控制電平訊號和時鐘訊號一起控制整個CPU的運轉,實現資料的運算!
-
19 # 花謝風塵3
作為一個程式設計師,我來回答一下。軟體由程式設計軟體來寫的,那麼程式設計軟體呢?程式設計軟體也是由軟體寫的。只是,第一個軟體是怎麼出來的的?這樣給你解釋,為什麼有軟體?其實是計算機構造出來的,計算機透過電訊號高低,也就是010101這樣的電訊號,然後有了最初的軟體,簡單點說就是:程式是建立在硬體的基礎上產生的,現在的程式設計軟體,其實也是告訴計算機01010101001這樣的訊號,然後計算機硬體將它們拼裝成文字,圖片,程式等,所以總結一下,程式設計軟體透過硬體的支援,創造了我們使用的程式和其他的程式設計軟體。
不知道這樣解釋大家有沒有明白。
-
20 # 圓播軟硬
回答這個問題,先看一下第一個編譯器是怎麼回事吧。早期的電腦,採用的是真空管組成閘電路,輸入是靠人手去開啟和閉合開關,做不了稍複雜的邏輯,又慢又累,這時候程式設計師的工作是控制開關。後來發明出了穿孔打卡的方式,對人手是一個解放。程式設計師們的工作是打孔。這減少了相當多的工作,寫一個卡片能使用相當久,也避免了重複造輪子。當程式設計師開始在卡片上寫這些程式時,人們開始構建程式庫(libraries)。隨著時間的推移,大部分的程式漸漸的有了一些規則手冊來指導編寫。雖然比之前手動開關方便了太多,但還是很繁瑣。這時候出現了世界上第一個編譯器 (Compiler),名字叫做 A-0。由格雷斯·霍珀(Grace Hopper)發明。原先打孔的方式,紙帶上要打的內容為機器碼,程式設計師要對每一個碼的意思非常瞭解,才能編寫或看懂這段程式碼的意思,而這些碼是指導電腦執行的,並不符合人的思想邏輯。如果讓程式設計師寫一段人類看得懂的語句,這段語句做成紙帶卡片,在電腦上執行,電腦執行後會輸出另一組包含機器程式碼的卡片,輸出的這個卡片,是電腦真正需要輸入的打孔的卡片。程式語言因為編譯器而迎來了曙光。雖然只是科技史上的一小步,但是真的是革命性的,改變了人類對於程式設計的思考方式。它創造了抽象的思維方式。這意味著他們可以在更高的層次上思考。這改變了人們對如何編寫程式的想法。
再看看現在的編譯器是怎麼做的。例如Java編譯器,最早是James Gosling用C寫的一個Oak編譯器,後來Arthur van Hoff用Oak自身重寫了一個Oak的編譯器”。用C寫的版本編譯用Oak寫的版本就得到了一個可以執行的用Oak寫的版本的編譯器,這樣就完成了自舉(bootstrap)。這句話不好理解,請仔細體會。現在在build OpenJDK的時候需要事先有一個可以執行的JDK,就是因為javac是用Java寫的,至少要用已有的JDK去把新的javac編譯了之後才可以用新的javac去編譯JDK的其餘部分。
所以回答題主的問題,程式設計軟體也是一種軟體,他是由另一種或另一個版本的程式設計軟體編譯出來的。
有朋友問我軟體和硬體之間的底層是如何聯絡起來的。這個問題我想用簡單的微控制器來回答,因為可以省略很多東東,嘿嘿。首先,CPU執行的是機器碼,加入微控制器上電覆位之後,指標會指向特定的地址,就是程式開始執行的地址,在這個地址內,CPU會獲取這裡放的機器碼,假如這個機器碼是10101010B,CPU解析這個是跳轉,他會控制指標順序下移,再繼續獲取下2個地址的資料,如果發現是00100000B,00010000B,那麼它會控制指標繼續跳轉到2010H這個地址,讀取這個地址的機器碼,繼續執行。程式碼中的運算、跳轉、條件判斷,對CPU來說只是獲取到不同的機器碼之後進行不同的處理而已。當然就算是微控制器這個過程還是有很多特殊的,例如中斷產生的處理,CPU睡眠的處理,控制IO讀取IO等。在微控制器內的機器碼一般是需要程式設計師灌進去或者演模生產時批次灌進去,機器碼是彙編程式碼或者C語言透過編譯程式產生的。如果是以微控制器來說,硬體的底層在設計之後就按固定的規則去執行,軟體是在硬體執行過程中引導硬體執行過程。如果是電腦的軟體和硬體之間,大道理是相同的,但是電腦啟動之後,由boot程式引導下去執行作業系統,程式設計師的程式是在作業系統基礎上執行的。
回覆列表
程式設計軟體,也是程式設計編寫出來的,一般都是c語言,大公司n多人一起開發,個人很難開發,別說程式設計工具了,就是作業系統好像都是c編寫的