R+介紹
更徹底的類型推斷,C++11需要使用關鍵字auto,R++可以省略auto
語句後面的分號是可選的
宏自動加括弧,也不需要寫折行符號
空參函式的括弧是可選的
支持自定義新的運算符和優先權
更簡潔的模板寫法
更簡單的函式指針語法,函式指針不需要聲明
默認參數更靈活,默認參數可以訪問到前面的參數,也可以訪問到類的數據成員
Lisp的S表達式和C++的中綴表達式可以混合使用,也為C++增加了一些動態特性
可以遞歸引用,不需要向前聲明
無縫內聯彙編,不需要關鍵字asm,暫存器幾乎可以當做一個整型變數使用
程式設計師可以隨意DIY,可以認為R++沒有內置數據類型,int也是程式設計師自定義的
R++既可以編譯運行又可以解釋運行,靜態類型和動態類型都可以使用
自動處理重複包含問題,R++沒有.CPP檔案,只有.H檔案
1.更徹底的類型推斷,C++11需要使用關鍵字auto,R++可以省略auto
2.語句後面的分號是可選的
3.宏自動加括弧,也不需要寫折行符號
4.空參函式的括弧是可選的
5.支持自定義新的運算符和優先權
6.更簡潔的模板寫法
7.更簡單的函式指針語法,函式指針不需要聲明
8.默認參數更靈活,默認參數可以訪問到前面的參數,也可以訪問到類的數據成員
9.Lisp的S表達式和C++的中綴表達式可以混合使用,也為C++增加了一些動態特性
10.可以遞歸引用,不需要向前聲明
11.無縫內聯彙編,不需要關鍵字asm,暫存器幾乎可以當做一個整型變數使用
12.程式設計師可以隨意DIY,可以認為R++沒有內置數據類型,int也是程式設計師自定義的
13.R++既可以編譯運行又可以解釋運行,靜態類型和動態類型都可以使用
14.自動處理重複包含問題,R++沒有.CPP檔案,只有.H檔案
適合人群
編程初學者,希望了解語言的本質
喜歡DIY語言的玩家
需要一種腳本語言,但又不習慣腳本內置的運算符優先權和數據類型
希望自己的程式能在手機上運行,但又不想使用Java,也不想安裝龐大的開發環境
喜歡DIY作業系統的玩家,R++能編譯成nasm彙編代碼,也可以使用grub引導
1.編程初學者,希望了解語言的本質
2.喜歡DIY語言的玩家
3.需要一種腳本語言,但又不習慣腳本內置的運算符優先權和數據類型
4.希望自己的程式能在手機上運行,但又不想使用Java,也不想安裝龐大的開發環境
5.喜歡DIY作業系統的玩家,R++能編譯成nasm彙編代碼,也可以使用grub引導
R++ v1.5:
使用PJIT(Pseudocode Just-In-Time),編譯速度大幅提高,但運行效率遠遠不如C++,不過R++將在下一版本支持RJIT(Real Just-In-Time),理論上RJIT的運行速度和C++完全相同,而編譯速度卻比C++快得多。
強大的元編程支持,元函式可以直接訪問實函式的變數
完整的反射和自省機制,解釋器和R++代碼幾乎融為一體
字元串常量統一使用utf8(如果需要在控制台輸出中文請參考rpp.pdf修改控制台的編碼)
完整的模板函式支持,模板函式不僅可以作為類的成員,還可以動態生成
可變參數支持
內部列表多改為紅黑樹,動態調用效率大幅提高
方便的調用外部DLL接口(R++所有數據類型和C/C++二進制兼容)
暫不支持跨平台和生成機器碼,如果需要這些功能請暫時使用v1.1
1.使用PJIT(Pseudocode Just-In-Time),編譯速度大幅提高,但運行效率遠遠不如C++,不過R++將在下一版本支持RJIT(Real Just-In-Time),理論上RJIT的運行速度和C++完全相同,而編譯速度卻比C++快得多。
2.強大的元編程支持,元函式可以直接訪問實函式的變數
3.完整的反射和自省機制,解釋器和R++代碼幾乎融為一體
4.字元串常量統一使用utf8(如果需要在控制台輸出中文請參考rpp.pdf修改控制台的編碼)
5.完整的模板函式支持,模板函式不僅可以作為類的成員,還可以動態生成
6.可變參數支持
7.內部列表多改為紅黑樹,動態調用效率大幅提高
8.方便的調用外部DLL接口(R++所有數據類型和C/C++二進制兼容)
9.暫不支持跨平台和生成機器碼,如果需要這些功能請暫時使用v1.1
特性 | R++ | C++ | Java | Lisp |
模板 | √ | √ | × | × |
宏 | √ | 不太安全 | × | √√ |
運算符自定義 | √ | 僅重載 | × | 僅前綴 |
語法簡潔 | 簡潔 | 不太簡潔 | 較簡潔 | 極簡潔 |
內聯彙編 | √ | √ | × | × |
指針 | √ | √ | × | × |
元編程(非模板) | √ | ×(boost已實現) | × | √ |
動態編譯 | √ | × | √ | √ |
模組(包) | v1.1支持 | × | √ | √ |
內置並行通訊 | × | × | × | × |
依賴解釋器 | 雙運行模式 | 不依賴 | 依賴 | 依賴 |
國產 | √ | × | × | × |
R++ v1.8:
目前DIY作業系統一般使用gcc+nasm,R++是編譯型語言,抽象能力強過C,可直接內聯彙編,不需要面對討厭的AT&T彙編,絕對是您DIY作業系統的利器(支持GRUB從隨身碟或硬碟引導)。
R++沒有GC,所以理論運行速度和C++一樣,可以作為lua的替代者候選。
R++既可以編譯運行又可以解釋運行,既可以用靜態類型又可以用動態類型。語法層支持C++、JS、Lisp、python、asm混合編程,一種語言,五種語法。
R++自由度極高,完全開源,您可以隨意DIY運算符的優先權,增加新運算符,增加修改“內置類型”,甚至於int、double這些基礎類型都是由用戶自定義的,一切由您做主。(如果您想製作屬於自己的程式語言並進入實用階段,R++將是您的最佳參考,沒有之一)
它的語法相當簡潔,支持N種省略語法,最大程度減少您的擊鍵次數。(R++支持類似《算法導論》的偽代碼)
R++支持多種花括弧風格,無論是python的無花括弧風格還是K&D風格,或者是花括弧單獨占一行,隨你喜歡。
它是C++的山寨版,如果您習慣了C++的語法,又需要一種類似C++的腳本語言,似乎選擇R++是一個明智的決定。
既然它是C++的山寨版,所以R++幾乎不需要學習成本,很多C++和C的代碼經少量修改都可以移植過來,甚至能夠寫出同時兼容R++和C++的代碼。
又因為它是C++的山寨版,R++所有數據類型和C++二進制兼容,無論是靜態連結還是動態連結,想怎樣就怎樣。
R++原始碼檔案可以使用任意後綴,在R++的世界裡,一切都是代碼。
支持中文編程是必須的。
1.目前DIY作業系統一般使用gcc+nasm,R++是編譯型語言,抽象能力強過C,可直接內聯彙編,不需要面對討厭的AT&T彙編,絕對是您DIY作業系統的利器(支持GRUB從隨身碟或硬碟引導)。
2.R++沒有GC,所以理論運行速度和C++一樣,可以作為lua的替代者候選。
3.R++既可以編譯運行又可以解釋運行,既可以用靜態類型又可以用動態類型。語法層支持C++、JS、Lisp、python、asm混合編程,一種語言,五種語法。
4.R++自由度極高,完全開源,您可以隨意DIY運算符的優先權,增加新運算符,增加修改“內置類型”,甚至於int、double這些基礎類型都是由用戶自定義的,一切由您做主。(如果您想製作屬於自己的程式語言並進入實用階段,R++將是您的最佳參考,沒有之一)
5.它的語法相當簡潔,支持N種省略語法,最大程度減少您的擊鍵次數。(R++支持類似《算法導論》的偽代碼)
6.R++支持多種花括弧風格,無論是python的無花括弧風格還是K&D風格,或者是花括弧單獨占一行,隨你喜歡。
7.它是C++的山寨版,如果您習慣了C++的語法,又需要一種類似C++的腳本語言,似乎選擇R++是一個明智的決定。
8.既然它是C++的山寨版,所以R++幾乎不需要學習成本,很多C++和C的代碼經少量修改都可以移植過來,甚至能夠寫出同時兼容R++和C++的代碼。
9.又因為它是C++的山寨版,R++所有數據類型和C++二進制兼容,無論是靜態連結還是動態連結,想怎樣就怎樣。
10.R++原始碼檔案可以使用任意後綴,在R++的世界裡,一切都是代碼。
11.支持中文編程是必須的。
RPP v1.86:(為避免與貝爾實驗室的R++名字衝突,從1.86開始R++改名為RPP)
全新JIT引擎,極致的編譯和運行速度。
精簡Lisp核心,無限的動態擴展能力。
完全開源,真正的開源不需要協定。
集成IDE,編輯、編譯、運行一體化,支持代碼自動完成。
兼容50%的C++語法,70%的C語法,編譯器本身使用C++編寫,但其90%的源碼都可以自我編譯。
1.全新JIT引擎,極致的編譯和運行速度。
2.精簡Lisp核心,無限的動態擴展能力。
3.完全開源,真正的開源不需要協定。
4.集成IDE,編輯、編譯、運行一體化,支持代碼自動完成。
5.兼容50%的C++語法,70%的C語法,編譯器本身使用C++編寫,但其90%的源碼都可以自我編譯。