編程創造片
Ⅰ 一門編程語言是怎麼創造出來的呢
如果你學了數字電路、8086匯編語言、一種單片機的原理,再看一下編譯原理頭幾頁就大概可以明白了。
Ⅱ 編程可以在電腦世界裡創造一切嗎編程的威力有多大編程愛好者來,是不是電腦所有的一切編程都可以改變
對的,根據我個人理解,編程如果吧編程跟機械結合起來,應用程度將會很高並且,只要掌握了編程,在電腦世界裡幾乎能想得到就能做得到,而且系統什麼的不過都是編程的產物而已,完全可以自己去改變,望採納謝謝
Ⅲ 有沒有一種科幻電影是一個人為了找他的父親進入了一個由數字編程的世界裡面,他父親和另一個人創造了這
電子世界爭霸戰2,那個人其實不是他父親的朋友,是他父親在電子世界創造的一個和其本人長的一樣的智能,最後失去控制把主角父親囚禁在了電子世界。。還是值得一看的,視覺效果做的不錯
Ⅳ 怎麼研發一款編程語言
編程語言,作為人與計算機溝通的橋梁,有著重要和深遠的意義。有過計算機編程經驗的人,多少學習或掌握過一到多種編程語言。計算機專業領域的編程語言成百上千種,主流的編程語言也有數十種之多。每種編程語言面向的領域和特性都不盡相同,不過歸根結底是為了解決人與計算機之間溝通的效率問題,提高計算機的生產力。想必有不少人對那些主流編程語言的創造者十分傾佩,也相信有不少人會好奇一門編程語言是如何誕生的。那麼如何創造一門編程語言呢?
總的來看,創造一門編程語言需要有以下幾個過程:
(1)設計語言的特性。
(2)定義語言的單詞、語法和語義。
(3)實現編譯器或者解釋器將程序翻譯為計算機底層表示。
(4)生成計算機程序的二進制存儲格式。
(5)完善語言的運行時環境和標准庫。
一、語言特性設計
所謂語言特性,就是編程語言為開發者提供了什麼樣的原子性功能特徵。比如是否支持數學表達式計算、字元串處理,是否支持變數、函數和遞歸,是否支持分支、循環復合語句等。語言的變數類型是強類型、弱類型,還是動態類型,程序是過程式、函數式,還是面向對象的。是否支持模板、泛型和反射機制,是否支持多線程和並發特性,是否支持錯誤和異常處理機制等等。
語言特性設計是一門編程語言最關鍵的環節,直接決定了語言的基本特徵和雛形。當然,這也是最難的一個環節,因為語言設計是面向具體問題領域的,是語言設計者從大量的編程實踐中的獲得的總結和升華。比如C語言設計者希望面向計算機底層,擁有對操作系統和硬體的直接操縱能力。而python的設計者則希望盡可能地減少操作計算機資源的繁瑣過程,以獲得語言的簡潔性、高度的靈活性和擴展性。SQL的設計者面向具體的數據查詢和分析領域,希望幫助開發者獲得快速檢索和操縱數據的能力。而Go語言的設計者則希望在保留C語言優秀功能的基礎上,擴展編程語言對高並發環境的支持,並擁有垃圾回收和快速編譯的能力。
凡此種種,編程語言特性的設計都是面向具體的問題領域的,是語言設計者構建於開發者和計算機之間的中間層,是對開發過程中重復功能邏輯的原子性「封裝」,最終的目的是為了提升具體問題領域內的軟體開發效率。
二、單詞、語法和語義
和人類使用的自然語言類似,編程語言也有自身的單詞、語法和語義,專業上稱為詞法記號、語言文法和語義。
常見的詞法記號可以分為數字、字元、字元串、標識符、關鍵字,以及用於連接表達式的運算符、分割語句或者程序段落的界符等符號。這些是編程語言程序的基本單位,通過它們的有序組合,構建出了一門編程語言形形色色的代碼片段。
編程語言的文法是用來描述語言的語法規則的,具體來說是規定詞法記號之間的排列組合的順序與規則。它描述了編程語言程序的基本模式,不符合該模式的詞法記號的排列被擋在了合法語言程序的大門之外。同時,它也是各種編程語言對於開發者最明顯的差異化特徵。一個有經驗的開發者可以很容易地通過掃視一段代碼,就能分辨出這是哪種編程語言編寫的計算機程序。
編程語言的語義描述了一段符合語言語法的程序,對於計算機而言的真正含義,是開發者最終要傳達給計算機的意願和指令。語言的語義必須是准確的、無二義性的,編譯器也正是通過語義的指導,將計算機程序翻譯為計算機可識別的表達形式。
三、程序的翻譯
計算機程序是用來供人閱讀和修改的,計算機硬體並不能理解程序內的思想和含義。因此,必須有一個翻譯轉換的過程,將人所表達的意願准確無誤地傳遞給計算機,讓計算機明確並執行人下發的指令。實現這種翻譯工作的工具就是編譯器或解釋器。
對於編譯器來說,它的輸入是人類書寫的計算機語言程序,輸出則是計算機可識別的底層表示。首先,它需要識別出程序中的單詞,即詞法分析。然後,根據單詞的組合模式識別出程序的語法結構,即語法分析。最後,根據不同的語法結構對應的語義,將程序按照每個語法模塊的形式轉換為計算機可識別的指令序列,即語義分析和目標代碼生成。
眾所周知編譯器的實現具有一定的復雜度,其根本原因來自於語言語法的結構靈活性和計算機底層表達形式的多樣性,這也是創造一門編程語言最核心的環節。
四、二進制存儲
編譯器將語言程序翻譯轉換後,需要將轉換後的結果存儲起來,以便計算機在需要的時候將其載入、執行。這里不可避免的涉及到兩個問題:
(1)轉換後的結果是什麼樣的形式?
(2)轉換後的結果保存在哪裡?
第一個問題描述的是計算機程序被轉換為怎樣的形式,才是計算機可以識別的。由於計算機中實際運行程序的硬體模塊是CPU,因此計算機程序只有被轉換為CPU的二進制指令格式才能被正確識別、執行。比如常見的Intel體系的CISC指令格式、ARM體系的RISC執行格式等。
第二個問題描述的是計算機程序轉化為二進制指令格式後,以什麼樣的方式保存在計算機的磁碟上。由於絕大多數的計算機程序是需要通過運行在計算機硬體之上的操作系統載入運行的,因此計算機程序的二進製表達形式必須以對應操作系統可識別的文件格式存儲。比如常見的Windows操作系統的PE文件格式、Linux操作系統的ELF文件格式等。
五、運行時環境和標准庫
理論上講,一門編程語言如果能提供出完備的操縱操作系統和硬體的原子性功能就已經成功了。但是不提供強大的運行時環境支持和標准庫,是很難讓一門編程語言真正的好用和流行的。沒有人希望簡單地列印一行字元串,還需要使用編程語言提供的基本特性實現調用操作系統提供的列印介面的邏輯。Java語言之所以久興不衰,正是因為它不僅提供了完善的運行時環境和開發庫支持,甚至提供了更強大的開發框架和工具支持。
因此可見,除了完備的語言特性,為開發者提供更方便好用的庫和框架支持,消除軟體構建過程中復雜和重復的邏輯,才是一門優秀編程語言的長盛之道。
六、自己動手,立即開始!
《自己動手構造編譯系統——編譯、匯編與鏈接》一書詳細闡述了一門編程語言從無到有的過程,從語言的功能特性設計,到詞法、文法、語義分析;從編譯器、匯編器的設計實現,到目標文件的鏈接生成可執行文件;甚至編譯優化器的實現、二進制指令、可執行文件格式以及語言運行時和標准庫的概念,都在書中做了認真細致地剖析。相信對本書的閱讀,將是一次不錯的獲得知識的體驗!
Ⅳ scratch編程優秀的作品有哪些
scratch是圖形化編程軟體。
1、《萊茵河2號》(1999年)攝影師:安德烈亞斯·古爾斯基。scratch編程,整個作品集總共包含六幅畫,描繪了萊茵河的美麗景色。而這幅作品是其中的第二張,也是最大的一張。畫面中的草地、河流和灰色的天空幾乎形成了完美的水平結構。
Ⅵ 上編程課有什麼好處
1、抓住成長黃金期,讓孩子更聰明
編程的本質,是一套理解問題、解決問題的方法。
3、打好基礎,無縫銜接小學教育
前央視主持人張泉靈,曾在一個活動上感慨:
「在未來,不懂編程的孩子,就像不會英語的孩子一樣讓人焦慮。」
隨著國家政策的推動,編程會越來越普及。
孩子現在開始學,時間比較充裕,上小學之後比同齡人更有優勢。
功利一點來看,學習編程還能為萌娃經歷增加亮點,幼升小時可以在千篇一律的簡歷中脫穎而出。
Ⅶ 每種編程語言各由誰創造的
語言這么高級的東西可不是一個人創造的啊。
C 和 C++ 都是貝爾實驗室創造的。
Ⅷ 像c++這樣的編程語言是怎麼創造出來的
編程語言的發展是隨著硬體一起發展的,最初沒有當前成熟的101鍵盤前,技術人員是無法用字母輸入命令和語句的,顯然也不存在任何高級語言的。
機械計算機我就不談了,太遙遠,第一台電子計算機是ENIAC是1946年製造的,開始用的是連接線,後來用的是打孔機,以紙帶作為輸入,一根紙帶邊上是齒孔用於步進電機帶動紙帶,類似現在的針式列印機的紙張,當然紙帶比針式列印機紙張窄,編程人員事先寫好二進制指令的編碼和數據,逐一在紙帶上打孔,比如一個指令和數據是8位,如果是1,則打一個孔,如果是0則不打孔,打完一個位元組讓步進電機進一格,打後面一個數據。所有程序代碼和數據打完,將紙帶裝到計算機的讀入設備中並逐一讀入並運行,當時還沒有存儲器,所以執行完如果需要再運算一遍,要復位重新裝紙帶。當然如果程序要改寫就得重新打一卷紙帶。
這就是電子計算機最原始的編程(機械計算機則還要麻煩),後來有了存儲器,還是用紙帶輸入程序,然後可以重復運算,因為輸入的指令和數據都存入存儲器了,不需要再跑一遍(真正意義的跑)。此時程序員編寫的程序都是機器語言,形式就是二進制碼
類似這樣
01010100
11001101
01101010
...
後來人們覺得這樣很麻煩,考慮到一種CPU的指令都是固定,如果有一種簡單容易能幫助記憶符號來代替一串二進制就方便多了,因此設計出了匯編語言,因此匯編指令稱為助記符,比如MOV,ADD,JMP等等。這時候就需要一種新的輸入設備代替打孔機,而且能直接連接在計算機上,之後隨著晶體管的發展,單片機出現,一個按鈕代表一個指令,同時結合數碼鍵(0-9,A-F)輸入16進制數據,讓設備轉成二進制數據,這應該算最早的編譯器了,屬於硬體編譯器。
再之後,人們發現計算機不僅可以處理數據,還可以處理文本,因此有了ASC碼,ASC碼也發展了好幾代,既然可以處理文本,隨著計算機設備的發展,把打字機鍵盤復制過來,擴展單片機的按鈕,這樣計算機鍵盤的雛形出現了,取消了專用匯編指令鍵,而改用程序來翻譯輸入的文本,比如單個匯編指令MOV改用鍵盤輸入這三個字母的文本,由翻譯程序翻譯成二級制碼,這應該是最早的源代碼了,而這個翻譯程序最先當然還是用單片機開發的,而這個翻譯程序就是最早的匯編指令編譯器了。
有了匯編指令編譯器,人們可以直接通過鍵盤輸入匯編指令,由編譯器編譯成二級制碼執行程序,有了匯編編譯器,人們不僅直接用於各種科研運算,而且開發了更高級的語言了,那麼後來各種語言蓬勃發展起來了,在C語言前還有A,B,以及其他高級語言陸續出現,比如1954年的Fortran。
所以你可以看到,技術都是迭代發展的,你只要學習到足夠的知識,可以用任何語言開發你的編譯器,當然這可是件不簡單的任務,同時,所開發的編譯器受你所用的語言限制。
Ⅸ 如何創造一種腳本編程語言
好的腳本編程語言如python,它的源代碼是用c實現的。
另外就是你可以用腳本語言本身來創造一種新的語言,,,在python ,ruby上都有這樣的實現。python上甚至有用python本身語言來寫的python。