軟件是用編程軟件編的,編程軟件又怎麼來的?

冰bingo菓


首先要明確幾個概念,計算機語言、軟件和開發平臺,計算機語言是軟件開發的基礎,通過計算機語言才能實現和計算機硬件的通訊,實現對硬件的操作,一般計算機語言分為低級語言和高級語言,低級語言如:機器語言、彙編語言,可以直接操作硬件,速度快,但是編寫和理解困難;高級語言如:C、C++、JAVA等,需要通過編譯轉換為機器語言實現對硬件操作,速度慢,但是更便於理解。

軟件是通過計算機語言開發的,通過對計算機硬件的操作而實現某些功能的計算機程序的集合體,如:手機APP、PC端的應用、網站,甚至操作系統等都是軟件。

一般所說的編程軟件都是指的開發平臺,也被稱為IDE(集成開發環境),它的主要作用是通過集成一些開發常用的環境或者工具來提升軟件開發的效率,如JAVA開發必須的JDK等。

所以說軟件的基礎是計算機語言,通過計算機語言結合一系列的算法從而實現對計算機硬件的操作,實現某些功能,而開發平臺只是將代碼的編輯過程進行了簡化,使其更符合開發人員的思維邏輯。開發平臺本身也是一個軟件,也是通過某種計算機語言來寫的,並且很多開發平臺都是支持多語言的,如eclipse平臺,除了支持JAVA開發,還支持C/C++、PHP、Python等,甚至可以開發eclipse自身的插件。


數通暢聯


哈哈哈,你這個問題挺有趣,說明你是一個喜歡思考的人,這個問題有點類似雞和蛋的問題,雞和蛋我真不知道怎麼來的,但是這個問題我可以替你解釋解釋。

我用通俗的語言給你講一下計算機的原理,你就大概知道了,後面我再給你分析下,幫助你的理解。計算機說白了就是一個芯片,任何芯片只能執行這個芯片所認識的二進制程序,這個語言我們叫機器語言,就是機器不用翻譯,可以直接讀懂的語言。因為只有0和1,人看起來不方便,所以就有人把這些0和1的命令換成可以讀懂的有意義的字符,執行程序的時候,只需要把這些字符換成0和1就可以,這個語言叫彙編語言。機器語言和彙編語言都屬於低級語言,我們認為機器是可以直接執行的,所以效率也最高。

彙編語言就是機器語言的簡單翻譯,這個時候,人們為了方便,就發明了很多其他語言,後面的計算機語言更利於人們的理解,人清楚了,機器肯定就不清楚,這個就需要編譯器,這就是後面的高級語言,高級語言的特點是:簡單易懂,但是執行效率比機器語言低。所以後來為了兼顧易用性和效率,C語言脫穎而出,現在所有的對性能要求比較高的語言基本都是用C語言寫的。

我們以C語言做例子,看看C語言是用什麼語言寫的?在沒有C語言的時候,肯定是需要用匯編語言或者機器語言寫C語言編譯器,等C語言編譯器有一個基本的最小內核,可以指自行工作後,就可以用C語言編譯寫程序,增加C語言編譯器的功能。

有一些Java語言編譯器就是用C寫一部分,後面都用Java寫,但是Java語言的效率低,有些編譯器後面又改為用C語言開發。

所以用什麼語言開發,視情況而定。在沒有這個語言之前,肯定是用其他語言開發的。


趙濤聊IT


最早的程序是直接打孔控制的-穿孔卡片,這個是機械計算機時代,隨著電氣技術的發展,有了電子計算機,把物理上的孔換成了0和1,但是太繁瑣了,很容易出錯,人們開始慢慢用一些指令助記。但是最終還是要把指令換成二進制0和1,就有人用匯編寫一個替換的程序,這個就是第一版編譯器了。隨著編程語言的發展,從最早的面向過程到後來的面向對象,各種抽象高級特性越來越多,編譯器也變得越來越複雜。已經不是簡單的替換指令了。需要詞法分析,語法分析,編譯,鏈接等等複雜操作,最終生成中間碼,中間碼最後生成對應的二進制文件。任何事情的發展都不是一蹴而就的,這都是幾十年的成果!不妨看下這篇文章瞭解下計算機的歷史!http://hacksth.com/200.html 順便求個關注,給點支持!


搞點兒啥


在這美好的一天很榮幸為大家解答這個問題,讓我們一起走進這個問題,現在讓我們一起探討一下。

以下我為大家分享,我個人對這個問題的看法與想法,希望我的分享能給大家帶來幫助,也希望大家能夠喜歡我的分享。

我認為程序的本質是給定輸入,用指定邏輯給出輸出。所以用basic寫彙編編譯器,JavaScript寫c的編程工具完全做得到。c的編譯器是c寫的,go的編譯器是go寫的,Java的編譯器是Java寫的。

編程語言首先需要編譯器把代碼翻譯成機器語言。而第一個編譯器是慢慢迭代出來的,就是開始寫一個簡單的功能,然後逐步加強,直到完成一個完整的編譯器。最早的C語言編譯器就是這樣寫出來的。

其次,計算機語言、軟件和開發平臺,計算機語言是軟件開發的基礎,通過計算機語言才能實現和計算機硬件的通訊,實現對硬件的操作,一般計算機語言分為低級語言和高級語言,低級語言如:機器語言、彙編語言,可以直接操作硬件,速度快,但是編寫和理解困難;高級語言如:C、C++、JAVA等,需要通過編譯轉換為機器語言實現對硬件操作,速度慢,但是更便於理解。

軟件是通過計算機語言開發的,通過對計算機硬件的操作而實現某些功能的計算機程序的集合體,如:手機APP、PC端的應用、網站,甚至操作系統等都是軟件。

一般所說的編程軟件都是指的開發平臺,也被稱為IDE(集成開發環境),它的主要作用是通過集成一些開發常用的環境或者工具來提升軟件開發的效率,如JAVA開發必須的JDK等。

所以說軟件的基礎是計算機語言,通過計算機語言結合一系列的算法從而實現對計算機硬件的操作,實現某些功能,而開發平臺只是將代碼的編輯過程進行了簡化,使其更符合開發人員的思維邏輯。開發平臺本身也是一個軟件,也是通過某種計算機語言來寫的,並且很多開發平臺都是支持多語言的,如eclipse平臺,除了支持JAVA開發,還支持C/C++、PHP、Python等,甚至可以開發eclipse自身的插件。

所以總結一下,編程軟件通過硬件的支持,創造了我們使用的程序和其他的編程軟件。

在以上的分享關於這個問題的解答都是個人的意見與建議,我希望我分享的這個問題的解答能夠幫助到大家。

在這裡同時也希望大家能夠喜歡我的分享,大家如果有更好的關於這個問題的解答,還望分享評論出來共同討論這話題。

我最後在這裡,祝大家每天開開心心工作快快樂樂生活,健康生活每一天,家和萬事興,年年發大財,生意興隆,謝謝!


科技評測


用一句話回答就是:軟件是用編程軟件編的,那麼編程軟件同樣是用編程軟件編的。

編程軟件有很多功能,包括編輯、編譯、調試、解釋、測試等等。為簡單起見,我們這裡只討論編譯功能。不嚴格地說,編譯可以理解為是將人類能看懂的程序代碼翻譯成機器能看懂能執行的機器語言。如果是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#的編譯器。


犍為真人


在這美好的一天很榮幸為大家解答這個問題,讓我們一起走進這個問題,現在讓我們一起探討一下。

以下我為大家分享,我個人對這個問題的看法與想法,希望我的分享能給大家帶來幫助,也希望大家能夠喜歡我的分享。

我認為程序的本質是給定輸入,用指定邏輯給出輸出。所以用basic寫彙編編譯器,JavaScript寫c的編程工具完全做得到。c的編譯器是c寫的,go的編譯器是go寫的,Java的編譯器是Java寫的。

編程語言首先需要編譯器把代碼翻譯成機器語言。而第一個編譯器是慢慢迭代出來的,就是開始寫一個簡單的功能,然後逐步加強,直到完成一個完整的編譯器。最早的C語言編譯器就是這樣寫出來的。

其次,計算機語言、軟件和開發平臺,計算機語言是軟件開發的基礎,通過計算機語言才能實現和計算機硬件的通訊,實現對硬件的操作,一般計算機語言分為低級語言和高級語言,低級語言如:機器語言、彙編語言,可以直接操作硬件,速度快,但是編寫和理解困難;高級語言如:C、C++、JAVA等,需要通過編譯轉換為機器語言實現對硬件操作,速度慢,但是更便於理解。

軟件是通過計算機語言開發的,通過對計算機硬件的操作而實現某些功能的計算機程序的集合體,如:手機APP、PC端的應用、網站,甚至操作系統等都是軟件。

一般所說的編程軟件都是指的開發平臺,也被稱為IDE(集成開發環境),它的主要作用是通過集成一些開發常用的環境或者工具來提升軟件開發的效率,如JAVA開發必須的JDK等。

所以說軟件的基礎是計算機語言,通過計算機語言結合一系列的算法從而實現對計算機硬件的操作,實現某些功能,而開發平臺只是將代碼的編輯過程進行了簡化,使其更符合開發人員的思維邏輯。開發平臺本身也是一個軟件,也是通過某種計算機語言來寫的,並且很多開發平臺都是支持多語言的,如eclipse平臺,除了支持JAVA開發,還支持C/C++、PHP、Python等,甚至可以開發eclipse自身的插件。

所以總結一下,編程軟件通過硬件的支持,創造了我們使用的程序和其他的編程軟件。

在以上的分享關於這個問題的解答都是個人的意見與建議,我希望我分享的這個問題的解答能夠幫助到大家。

在這裡同時也希望大家能夠喜歡我的分享,大家如果有更好的關於這個問題的解答,還望分享評論出來共同討論這話題。

我最後在這裡,祝大家每天開開心心工作快快樂樂生活,健康生活每一天,家和萬事興,年年發大財,生意興隆,謝謝!


科技文件夾


要回答這個問題 必須學過數字電路 最好也知道紙帶打孔機(計算機行業的祖師爺IBM公司最開始就是做這個的) 單純的所謂“程序員”是無法說清的 因為他們根本沒接觸過硬件 我看了好多回答 大部分都是人云亦云隔靴搔癢 自以為懂了其實非也 只有很少的人提到了譯碼器、觸發器、固定的電路等這些最最最根本的因素 如果不懂這些就不要誤人子弟


清風明月207035999


最初一個編譯器靠彙編實現,後面靠語言自己編譯自己,就是自己進化。以C語言為例,首先用匯編寫出C 1.0的編譯器,然後發現C 1.0需要改進,於是改進到C 2.0,此時不在使用匯編了,直接使用C 1.0來開發C 2.0的編譯器,如此迭代下去,由前一代語言實現下一代語言的編譯器。像今天如此多的語言,再發明一種新語言,有很多選擇來寫編譯器。


jackson316


你這個有點讓我聯想到了是先有雞還是先有蛋的問題。不過這個更簡單,這個給你打個比方可能你就更清楚。我們都知道一些簡單的常識,比如我們生活中用的小玩具,大部分都是通過模具來做的,也就是說你可以想成普通軟件是通過一個模具軟件來做的。而這個模具呢又是通過最基本的一些元素構造起來的 比如用幾塊鐵板經過一定的打磨成形。因為現在編程的軟件種類很多,所以也不清楚你指的是何種的編程軟件。但是大部分編程軟件都是基於自身最基本的原理來做的,有專業人才為了後續製作軟件方便就把許多功能整合在一起了形成了一個編程軟件的平臺,以後需要其他的軟件只需要在這個平臺上來製作就會方便許多了。就好比我們玩的積木一樣,最小單位是一塊一塊的積木,我們可以提前把這些一塊一塊的積木搭成正方形,菱形、長方形等一些常用的形狀,下次要用的時候就直接用這些搭好了的形狀來作就快許多了。因此我們可以把編程軟件想成是由最小的一塊積木來搭成的,而其他的軟件則是通過這個搭好了的編程軟件來進行改造。


用友小賴


把自舉吹得太神了吧。這個東西容易給你造成一個假象,好像是c創造了c。其實不論如何,最初的編譯規則必須用其他語言(或者極端的說連彙編都不用,直接寫機器碼)做載體才能造出編譯器。換句話說,c的編譯器最初就是利用其他語言寫成的編譯器來生成的,好繞。。。。。其實也不用想太複雜,任何語言都可以自舉,編譯器本質上都是一堆機器碼,能自舉則說明編譯器的機器碼特徵符合語言作者定義的編譯規則。java也能自舉啊,但是那樣的話jvm的機器碼特徵就必須要符合jvm自己的編譯規則,可想而知那樣的話jvm效率有多低。所以,如果一門語言適合自舉,則說明其編譯後的機器碼效率高,較為貼近底層,這不是“能或不能”自舉的問題。


分享到:


相關文章: