編程語言的設計
❶ 編程語言(比如C語言、JAVA)是怎麼被設計出來的設計的過程又是怎樣的
參考一些資料,可以看一些發展歷史。C語言歷史
早期的操作系統等系統軟體主要是用匯編語言編寫的,如UNIX操作系統。由於匯編語言
依賴於計算機硬體,程序的可讀性和可移植性都比較差。為了提高可讀性和可移植性,最好
改用高級語言,但一般高級語言難以實現匯編語言的某些功能,而匯編語言可以直接對硬體
進行操作,例如,對內存地址的操作、位(bit)操作等。人們設想能否找到一種既具有一般
高級語言特性,又具有低級語言特性的語言,集它們的優點於一身。於是,C語言就在這種
情況下應運而生了,之後成為國際上廣泛流行的計算機高級語言。它適合於作為系統描述語
言,即用來寫系統軟體,也可用來寫應用軟體。
C語言是在B語言的基礎上發展起來的,它的根源可以追溯到ALGOL 60。1960年出現的
ALGOL 60是一種面向問題的高級語言,它離硬體比較遠,不宜用來編寫系統程序,1963年英
國的劍橋大學推出了CPL(Combined Programming Language)語言。CPL語言在ALGOL 60的基
礎上接近硬體一些,但規模比較大,難以實現。1967年英國劍橋大學的Matin Richards對
CPL語言作了簡化,推出了BCPL(Basic Combined Programming Language)語言。1970年美國
貝爾實驗室的Ken Thompson以BCPL語言為基礎,又作了進一步簡化,它使得BCPL能擠壓在
8K內存中運行,這個很簡單的而且很接近硬體的語言就是B語言(取BCPL的第一個字母),並
用它寫了第一個UNIX操作系統,在DEC PDP-7上實現。1971年在PDP-11/20上實現了B語言,
並寫了UNIX操作系統。但B語言過於簡單,功能有限,並且和BCPL都是「無類型」的語言。
1972年至1973年間,貝爾實驗室的D.M.Ritchie在B語言的基礎上設計出了C語言(取BCPL的
第二個字母)。C語言既保持了BCPL和B語言的優點(精練,接近硬體),又克服了它們的缺點
(過於簡單,數據無類型等)。最初的C語言只是為描述和實現UNIX操作系統提供一種工具語
言而設計的。1973年,K.Thompson和D.M.Ritchie兩人合作把UNIX的90%以上用C改寫,
即UNIX第5版。原來的UNIX操作系統是1969年由美國的貝爾實驗室的K.Thompson和
D.M.Ritchie開發成功的,是用匯編語言寫的,這樣,Unix使分散的計算系統之間的大規
模聯網以及互聯網成為可能。
後來,C語言多次作了改進,但主要還是在貝爾實驗室內部使用。直到1975年UNIX第6版
公布後,C語言的突出優點才引起人們普遍注意。1977年出現了不依賴於具體機器的C語言編
譯文本《可移植C語言編譯程序》,使C移植到其它機器時所需做的工作大大簡化了,這也推
動了UNIX操作系統迅速地在各種機器上實現。例如,VAX,AT&T等計算機系統都相繼開發了
UNIX。隨著UNIX的日益廣泛使用,C語言也迅速得到推廣。C語言和UNIX可以說是一對孿生兄
弟,在發展過程中相輔相成。1978年以後,C語言已先後移植到大、中、小、微型機上,如
IBM System/370、Honeywell 6000和Interdata 8/32,已獨立於UNIX和PDP了。現在C語言已
風靡全世界,成為世界上應用最廣泛的幾種計算機語言之一。
以1978年由美國電話電報公司(AT&T)貝爾實驗室正式發表的UNIX第7版中的C編譯程序為
基礎,Brian W.Kernighan(柯尼漢)和Dennis M.Ritchie(里奇)合著了影響深遠的名著
《The C Programming Language》,常常稱它為『K&R』,也有人稱之為『K&R標准』或『白
皮書』(white book),它成為後來廣泛使用的C語言版本的基礎,但在『K&R』中並沒有定義
一個完整的標准C語言。為此,1983年,美國國家標准化協會(ANSl)X3J11 委員會根據C語言
問世以來各種版本對C的發展和擴充,制定了新的標准,稱為ANSI C,ANSI C比原來的標准C
有了很大的發展:K&R在1988年修改了他們的經典著作《The C Programming Language》,
按照ANSI C標准重新寫了該書。1987年,ANSI又公布了新標准——87 ANSI C。目前流行的C
編譯系統都是以它為基礎的。當時廣泛流行的各種版本C語言編譯系統雖然基本部分是相同
的,但也有一些不同。在微型機上使用的有Microsoft C(MS C),Borland Turbo C,Quick C
和AT&T C等,它們的不同版本又略有差異。到後來的Java、C++、C#都是以C語言為基礎發展
起來的。
❷ 怎麼研發一款編程語言
編程語言,作為人與計算機溝通的橋梁,有著重要和深遠的意義。有過計算機編程經驗的人,多少學習或掌握過一到多種編程語言。計算機專業領域的編程語言成百上千種,主流的編程語言也有數十種之多。每種編程語言面向的領域和特性都不盡相同,不過歸根結底是為了解決人與計算機之間溝通的效率問題,提高計算機的生產力。想必有不少人對那些主流編程語言的創造者十分傾佩,也相信有不少人會好奇一門編程語言是如何誕生的。那麼如何創造一門編程語言呢?
總的來看,創造一門編程語言需要有以下幾個過程:
(1)設計語言的特性。
(2)定義語言的單詞、語法和語義。
(3)實現編譯器或者解釋器將程序翻譯為計算機底層表示。
(4)生成計算機程序的二進制存儲格式。
(5)完善語言的運行時環境和標准庫。
一、語言特性設計
所謂語言特性,就是編程語言為開發者提供了什麼樣的原子性功能特徵。比如是否支持數學表達式計算、字元串處理,是否支持變數、函數和遞歸,是否支持分支、循環復合語句等。語言的變數類型是強類型、弱類型,還是動態類型,程序是過程式、函數式,還是面向對象的。是否支持模板、泛型和反射機制,是否支持多線程和並發特性,是否支持錯誤和異常處理機制等等。
語言特性設計是一門編程語言最關鍵的環節,直接決定了語言的基本特徵和雛形。當然,這也是最難的一個環節,因為語言設計是面向具體問題領域的,是語言設計者從大量的編程實踐中的獲得的總結和升華。比如C語言設計者希望面向計算機底層,擁有對操作系統和硬體的直接操縱能力。而python的設計者則希望盡可能地減少操作計算機資源的繁瑣過程,以獲得語言的簡潔性、高度的靈活性和擴展性。SQL的設計者面向具體的數據查詢和分析領域,希望幫助開發者獲得快速檢索和操縱數據的能力。而Go語言的設計者則希望在保留C語言優秀功能的基礎上,擴展編程語言對高並發環境的支持,並擁有垃圾回收和快速編譯的能力。
凡此種種,編程語言特性的設計都是面向具體的問題領域的,是語言設計者構建於開發者和計算機之間的中間層,是對開發過程中重復功能邏輯的原子性「封裝」,最終的目的是為了提升具體問題領域內的軟體開發效率。
二、單詞、語法和語義
和人類使用的自然語言類似,編程語言也有自身的單詞、語法和語義,專業上稱為詞法記號、語言文法和語義。
常見的詞法記號可以分為數字、字元、字元串、標識符、關鍵字,以及用於連接表達式的運算符、分割語句或者程序段落的界符等符號。這些是編程語言程序的基本單位,通過它們的有序組合,構建出了一門編程語言形形色色的代碼片段。
編程語言的文法是用來描述語言的語法規則的,具體來說是規定詞法記號之間的排列組合的順序與規則。它描述了編程語言程序的基本模式,不符合該模式的詞法記號的排列被擋在了合法語言程序的大門之外。同時,它也是各種編程語言對於開發者最明顯的差異化特徵。一個有經驗的開發者可以很容易地通過掃視一段代碼,就能分辨出這是哪種編程語言編寫的計算機程序。
編程語言的語義描述了一段符合語言語法的程序,對於計算機而言的真正含義,是開發者最終要傳達給計算機的意願和指令。語言的語義必須是准確的、無二義性的,編譯器也正是通過語義的指導,將計算機程序翻譯為計算機可識別的表達形式。
三、程序的翻譯
計算機程序是用來供人閱讀和修改的,計算機硬體並不能理解程序內的思想和含義。因此,必須有一個翻譯轉換的過程,將人所表達的意願准確無誤地傳遞給計算機,讓計算機明確並執行人下發的指令。實現這種翻譯工作的工具就是編譯器或解釋器。
對於編譯器來說,它的輸入是人類書寫的計算機語言程序,輸出則是計算機可識別的底層表示。首先,它需要識別出程序中的單詞,即詞法分析。然後,根據單詞的組合模式識別出程序的語法結構,即語法分析。最後,根據不同的語法結構對應的語義,將程序按照每個語法模塊的形式轉換為計算機可識別的指令序列,即語義分析和目標代碼生成。
眾所周知編譯器的實現具有一定的復雜度,其根本原因來自於語言語法的結構靈活性和計算機底層表達形式的多樣性,這也是創造一門編程語言最核心的環節。
四、二進制存儲
編譯器將語言程序翻譯轉換後,需要將轉換後的結果存儲起來,以便計算機在需要的時候將其載入、執行。這里不可避免的涉及到兩個問題:
(1)轉換後的結果是什麼樣的形式?
(2)轉換後的結果保存在哪裡?
第一個問題描述的是計算機程序被轉換為怎樣的形式,才是計算機可以識別的。由於計算機中實際運行程序的硬體模塊是CPU,因此計算機程序只有被轉換為CPU的二進制指令格式才能被正確識別、執行。比如常見的Intel體系的CISC指令格式、ARM體系的RISC執行格式等。
第二個問題描述的是計算機程序轉化為二進制指令格式後,以什麼樣的方式保存在計算機的磁碟上。由於絕大多數的計算機程序是需要通過運行在計算機硬體之上的操作系統載入運行的,因此計算機程序的二進製表達形式必須以對應操作系統可識別的文件格式存儲。比如常見的Windows操作系統的PE文件格式、linux操作系統的ELF文件格式等。
五、運行時環境和標准庫
理論上講,一門編程語言如果能提供出完備的操縱操作系統和硬體的原子性功能就已經成功了。但是不提供強大的運行時環境支持和標准庫,是很難讓一門編程語言真正的好用和流行的。沒有人希望簡單地列印一行字元串,還需要使用編程語言提供的基本特性實現調用操作系統提供的列印介面的邏輯。Java語言之所以久興不衰,正是因為它不僅提供了完善的運行時環境和開發庫支持,甚至提供了更強大的開發框架和工具支持。
因此可見,除了完備的語言特性,為開發者提供更方便好用的庫和框架支持,消除軟體構建過程中復雜和重復的邏輯,才是一門優秀編程語言的長盛之道。
六、自己動手,立即開始!
《自己動手構造編譯系統——編譯、匯編與鏈接》一書詳細闡述了一門編程語言從無到有的過程,從語言的功能特性設計,到詞法、文法、語義分析;從編譯器、匯編器的設計實現,到目標文件的鏈接生成可執行文件;甚至編譯優化器的實現、二進制指令、可執行文件格式以及語言運行時和標准庫的概念,都在書中做了認真細致地剖析。相信對本書的閱讀,將是一次不錯的獲得知識的體驗!
❸ 如何理解一門編程語言本身的設計思路
可以去看語言設計者自己寫的書,一般都會在其中或多或少的談一些設計思路。如Ruby語言的設計者寫過一本《松本行弘的程序世界》,從全局的角度,利用大量的程序示例及圖表,深刻闡述了Ruby編程語言的設計理念,並以獨特的視角考察了與編程相關的各種技術。
另外,有門子學科叫做「程序設計語言」,專門研究如何設計一門編程語言,包括其編譯、語法、與底層的交互等等。裘宗燕翻譯過一本《程序設計語言-實踐之路》,很不錯,可以當武功心法來看。
❹ python語言程序設計是什麼
Python是一種跨平台的計算機程序設計語言。 是一個高層次的結合了解釋性、編譯性、互動性和面向對象的腳本語言。最初被設計用於編寫自動化腳本(shell),隨著版本的不斷更新和語言新功能的添加,逐漸被用於獨立的、大型項目的開發。
它是由荷蘭數學和計算機科學研究學會的Guido van Rossum 於1990 年代初設計,作為一門叫做ABC語言的替代品。之所以選中Python(大蟒蛇的意思)作為該編程語言的名字,是取自英國20世紀70年代首播的電視喜劇《蒙提·派森的飛行馬戲團》(Monty Python's Flying Circus)。 Python提供了高效的高級數據結構,還能簡單有效地面向對象編程。Python語法和動態類型,以及解釋型語言的本質,使它成為多數平台上寫腳本和快速開發應用的編程語言。
自從20世紀90年代初Python語言誕生至今,它已被逐漸廣泛應用於系統管理任務的處理和Web編程。
Python是一種解釋型腳本語言,可以應用於以下領域:
4.1 Web 和 Internet開發
4.2 科學計算和統計
4.3 人工智慧
4.4 桌面界面開發
4.5 軟體開發
4.6 後端開發
4.7 網路爬蟲
它的特點有:
簡單:
Python是一種代表簡單主義思想的語言。閱讀一個良好的Python程序就感覺像是在讀英語一樣。它使你能夠專注於解決問題而不是去搞明白語言本身。
易學:
Python極其容易上手,因為Python有極其簡單的說明文檔 。
速度快:
Python 的底層是用 C 語言寫的,很多標准庫和第三方庫也都是用 C 寫的,運行速度非常快。
免費、開源:
Python是FLOSS(自由/開放源碼軟體)之一。使用者可以自由地發布這個軟體的拷貝、閱讀它的源代碼、對它做改動、把它的一部分用於新的自由軟體中。FLOSS是基於一個團體分享知識的概念。
高層語言:
用Python語言編寫程序的時候無需考慮諸如如何管理你的程序使用的內存一類的底層細節。
可移植性:
由於它的開源本質,Python已經被移植在許多平台上(經過改動使它能夠工作在不同平台上)。這些平台包括Linux、Windows、FreeBSD、Macintosh、Solaris、OS/2、Amiga、AROS、AS/400、BeOS、OS/390、z/OS、Palm OS、QNX、VMS、Psion、Acom RISC OS、VxWorks、PlayStation、Sharp Zaurus、Windows CE、PocketPC、Symbian以及Google基於linux開發的android平台。
解釋性:
一個用編譯性語言比如C或C++寫的程序可以從源文件(即C或C++語言)轉換到一個你的計算機使用的語言(二進制代碼,即0和1)。這個過程通過編譯器和不同的標記、選項完成。
運行程序的時候,連接/轉載器軟體把你的程序從硬碟復制到內存中並且運行。而Python語言寫的程序不需要編譯成二進制代碼。你可以直接從源代碼運行 程序。
在計算機內部,Python解釋器把源代碼轉換成稱為位元組碼的中間形式,然後再把它翻譯成計算機使用的機器語言並運行。這使得使用Python更加簡單。也使得Python程序更加易於移植。
面向對象:
Python既支持面向過程的編程也支持面向對象的編程。在「面向過程」的語言中,程序是由過程或僅僅是可重用代碼的函數構建起來的。在「面向對象」的語言中,程序是由數據和功能組合而成的對象構建起來的。
可擴展性:
如果需要一段關鍵代碼運行得更快或者希望某些演算法不公開,可以部分程序用C或C++編寫,然後在Python程序中使用它們。
可嵌入性:
可以把Python嵌入C/C++程序,從而向程序用戶提供腳本功能。
豐富的庫:
Python標准庫確實很龐大。它可以幫助處理各種工作,包括正則表達式、文檔生成、單元測試、線程、資料庫、網頁瀏覽器、CGI、FTP、電子郵件、XML、XML-RPC、HTML、WAV文件、密碼系統、GUI(圖形用戶界面)、Tk和其他與系統有關的操作。這被稱作Python的「功能齊全」理念。除了標准庫以外,還有許多其他高質量的庫,如wxPython、Twisted和Python圖像庫等等。
規范的代碼:
Python採用強制縮進的方式使得代碼具有較好可讀性。而Python語言寫的程序不需要編譯成二進制代碼。
這只是一個簡單的理解,希望對你有幫助,望採納,謝謝!
❺ 網頁設計有哪些編程語言
網頁設計的語言分兩類,一是CGI類,本質上就是機器上可以執行的程序,可以用所有語言編寫,只要編寫的程序代碼能獨立執行就可以,例如WINDOWS平台的BAT、CMD都是可以的,能編譯為EXE的C、PASCAL、匯編等任何語言都是可以的。二是伺服器腳本類,主要有ASP(以及.NET)、JSP、PHP等。
❻ C語言程序設計是什麼
C語言是古老而長青的編程語言,它具備了現代程序設計的基礎要求,它的語法是很多其他編程語言的基礎,在系統程序、嵌入式系統等領域依然是無可替代的編程語言,在各類編程語言排行榜上常年占據前兩名的位置。
程序設計是一門基礎課程。對於計算機相關專業而言,程序設計是專業基礎知識,是進一步學習其他專業知識的第一步階梯;對於非計算機專業而言,程序設計的學習有助於理解計算機的能力所在,理解哪些是計算機擅長解決的問題,怎樣的方式方法是計算機擅長的手段,從而能更好地利用計算機來解決本專業領域內的問題。
❼ 電腦編程語言誰設計出來的
編程語言很多,不同的語言由不同的前輩發明或者你說的設計。比如fortran語言是IBM公司的前輩設計的,設計用來進行科學計算,所以直到現在結構計算等科學研究領域仍然在廣泛使用fortran語言。fortran語言對高精度浮點運算、多處理器、多線程等支持優於其它語言,但非科學計算的方面fortran的表現就差一些。
還有algol、pascal、cobol、basic、c、lisp、Java 、Python 等等。編程語言很多,都是特定環境條件下的發明刨造,也都有自己的應用范圍。你可查網路的相關詞條。
❽ 電腦編程語言怎麼設計出來的
編程語言..是人為製作的....
那麼,,怎麼製作出來的呢????
那就要從C語言講起了..C語言是祖宗了..但也不是最早的祖宗...
當年98操作系統,,就是用C語言編寫的..
後來微軟推出的編程工具,,也是用C++或者C語言編寫的..
那麼C語言和C++又是誰發明出來的呢????
C語言和C++都被稱為高級語言..什麼叫高級語言呢?
就是能夠被人理解的語言.就叫高級語言了...
那麼,,怎麼發明出來的呢?
其實,,當初人們和計算機打交道,,當初的計算機,,也就是最早的計算機,,有一個房子那麼大..操作他要幾十個科學家..
為什麼呢?因為計算機只能識別二進制語言..
人們就在二進制的基礎上,,慢慢編寫,,用了發明了匯編語言這種低級語言,,畢竟匯編比二進制容易理解很多很多..
但由於匯編學習起來很難理解..於是人們 又在他的基礎上,進一步解釋,簡化..最後發明C語言,,到C++(其實C++和C語言是完全不同的語言,,但他們都是計算機語言,不過是表達規則不同罷了),,
之後又在這個基礎上發明了什麼VB等的語言..
這些都是從低級語言一級一級發展而來的的後輩了..
如果你想編寫自己的計算機語言,,那麼你可以學習C語言..C語言功能強大,,接近計算機硬體..
如果你覺得不爽,,就學習匯編吧..這個語言比C語言更低級..更接近計算機硬體..用這種語言編寫的病毒程序,,甚至能讓計算機硬體損壞..
當今變成工具,,繁多,,但最終都是從幾個基礎語言系發展出來的..
一個是C語系..包括C++,,等
另一種是BASIC語系....
等..
想發明自己的計算機語言學好最基礎的BASIC和C語言是個不錯的做法...
最好就學匯編吧..
❾ 如何設計一門計算機編程語言呢
第一步:首先要對這種語言的大體操作和理論知識要有一些了解,這個可以看哈相應的教材。第二步:研究代碼程序的執行過程第三步:就是最重要的要多練,最好是再點由淺到深的題去做這樣只要你堅持兩個月相信你會有很大的進步的
❿ 程序設計語言通常有哪些
程序設計語言通常分為:機器語言、匯編語言、高級語言三類。
機器語言是最底層的語言,只有「0」和「1」,二進制語言,就像開關一樣,0是關,1是通過。匯編語言指令是機器指令的符號化,與機器指令存在著直接的對應關系。
高級語言面向用戶的、基本上獨立於計算機種類和結構的語言。高級語言的一個命令可以代替幾條、幾十條甚至幾百條匯編語言的指令。

(10)編程語言的設計擴展閱讀:
主要語言
1、習語言,即中文版的C語言
2、O語言,O語言是一款中文計算機語言(或稱套裝:O匯編語言、O中間語言、O高級語言)
3、APT( Automatically Pro-grammed Tools)——自動數控程序。第一個專用語言,用於數控機床加工,1956。
4、FORTRAN(FORmula TRANslation)——公式翻譯程序設計語言。第一個廣泛使用的高級語言,為廣大科學和工程技術人員使用計算機創造了條件,1956。
