回覆列表
  • 1 # 李豐國創業筆記

    很多程式設計是語言都是c語言希望的解析引擎和執行執行環境,比如php,java和ruby等。這首先取決於你要設計哪個層面用的程式語言。

    如果想要發明一種程式語言,建議還是把計算機硬體和作業系統,相關的應用程式體系等底層基礎吃透一些。

  • 2 # 網際網路晨哥

    程式語言分4種

    一種是如Ruby,有一個設計哲學, 先考慮程式設計師,再考慮機器, 這種就是純屬個人偏好了

    一種是rust, 為了用新的思想,解決工程問題,這種是為了實用

    一種是玩具語言, 為了開發語言而開發語言

    一種是現有語言無法有效工作, 早期語言都是這麼來的, 現在也有,不過都是新興領域,如機器學習,ai。

  • 3 # MMLab

    本人曾經參與過嵌入式專用晶片的C語言編譯器的開發,要想設計一門計算機語言,絕非易事。除了至少精通以下一門語言,比如

    CC++Rust

    你還需要掌握編譯原理,熟讀一本號稱為“龍書”的全英文著作。

    原名:Compilers: Principles,Techniques, and Tools作者:Alfred V.Aho, Ravi Sethi, JeffreyD,Ullman中文名:編譯原理技術與工具

    學習了編譯原理之後,你就會掌握BNF語法,LL(1)左遞迴文法,下面簡單說明下。

    文法G是LL(1)的,當且僅當對於G的每個非終結符Α的任何兩個不同產生式 Α→α,Α→β均滿足下麵條件(其中α和β不能同時推出ε): 1、FIRST(α)∩FIRST(β)=Φ 2、假若β=>*ε,那麼FIRST(α)∩FOLLOW(A)=Φ

    活在當下,就可以採用最新的技術棧啦,你需要掌握LLVM框架,low level vm ,底層虛擬機器的意思,是一個強大的編譯器後端,它負責把編譯器中間語言翻譯為機器指令,現在主流的編譯器都是基於llvm開發的,包括clang, swift, rust, go, 華為方舟編譯器等等。

    最後需要動手實戰了,推薦閱讀一個叫TinyC的C編譯器。Tiny C Compiler(簡稱TCC, 或Tiny CC)是世界上最小的C語言編譯器,而且是開源的, 小到只有約100K,非常適合學習編譯原理。

    別看它小, 功能還是很強. 可以編譯所有C99標準的ANSI C程式 , 支援CPU包括:X86 32或64位, ARM,支援Windows, Linux, OSX.(跨平臺跨系統的能力,比VC強)

    TCC是由大牛Fabrice Bellard開發的,這位大牛還開發過 Qemu, FFMpeg (沒有FFMpeg, 就沒有抄它的騰訊影片,暴風影音...)

    TCC主頁: http://bellard.org/tcc/

  • 4 # 江南一散人

    要自己設計一個程式語言,下面幾點必須要考慮。

    確定目標受眾

    首先要明確你所設計語言的目標受眾是什麼。比如是如C/C++、Java、Python等這種通用的語言,還是如AWK、Make、CMake等領域特定語言(DSL)。

    如果是通用語言,那麼是C/C++這種系統型語言,還是Java、python等這種應用型的語言。

    確定要支援的語言特性

    根據目標受眾,確定你的程式設計所要支援的語言特性。比如是否支援面向物件程式設計,是否支援函數語言程式設計,是否支援並行處理、是否支援泛型程式設計等。

    此外,還要確定是強型別語言還是弱型別語言?是靜態型別語言還是動態型別語言等。

    制定語言的文法規範和語義規範

    根據語言要支援的特性,制定語言的文法規範。比如變數如何宣告、函式如何定義、支援哪些控制語句,各種表示式的運算規則等。

    確定語言的實現方式

    同一種語言可以有不同的實現方式。比如是如絕大多數C/C++的實現一樣,直接編譯成二進位制機器碼?還是像Java這樣,編譯編譯成位元組碼,然後用虛擬機器來執行?還是直接解釋執行等等。

    可利用的工具

    對於編譯器前端來說,可以選擇手工編寫,也可以選擇使用工具。

    手工編寫的話,比較簡單實用的方法是遞迴下降和算符優先等演算法。

    選擇工具的話,也有很多工具可用,比如Lex+YACC、Flex+Bison等

    如果主要的目的是學習的話,建議還是手寫比較好。

    對於後端來說,程式碼最佳化是非常重要的一部分。毫不誇張的說,程式碼最佳化是一個現代編譯器能否成功的決定性因素,也是整個編譯器設計中難度最大,最為複雜的部分,也是最容易出BUG的部分。

    一般,還是建議選擇使用一些成熟的工具。比如LLVM,應該作為首選。大名鼎鼎的Clang的後端就是LLVM。LLVM現在已經相當成熟,近幾年很多新的編譯器都是採用LLVM作為後端。

  • 中秋節和大豐收的關聯?
  • 用眉卡畫眉怎麼樣,那個好用嗎?