假如你可以個人主導 C++,你打算怎樣裁剪、擴充和訂製 C++ 來達到你心中最完美的 C++?

我們先嘗試加入一些功能,通過舉例子來說明。

增加抽象控制功能:

1.如果我們把兩對C++的原則。提供零成本的多範式的一個高層次的抽象,提供硬體有效控制不向後兼容值語義。

2.RAII,強類型的C++語法缺陷優化語法體現在C老和類的子集佔據太多空間新功能語法,寫作是非常尷尬的。

假如你可以個人主導 C++,你打算怎樣裁剪、擴充和訂製 C++ 來達到你心中最完美的 C++

舉例說明:

1.如λ,如屬性。一種語言可以稱為C++,至少滿足表達能力不弱於C++,並提供無限層抽象(0成本的抽象)。

2.這隻能通過調整語法和語義之間的關係來實現。C++是一種靜態類型的語言,和類型的地位不斷上升,這是一件好事,但類型系統需要在一個過於複雜的任務。

假如你可以個人主導 C++,你打算怎樣裁剪、擴充和訂製 C++ 來達到你心中最完美的 C++

3.兩種不同類型的介面是不同的,這是沒有問題的,但{ const,揮發性,noexcept },x和x,& } { *,超載X專業打造的複雜性完全失控。

4.可以說,「類型」的很大一部分不涉及介面,但需要在變數上存儲一組屬性以進行不同的處理。這個概念比類型更接近屬性。

假如你可以個人主導 C++,你打算怎樣裁剪、擴充和訂製 C++ 來達到你心中最完美的 C++

概念另解:

1.另一方面,C++控制硬體的能力還不夠強。

2.例如,在類型安全的前提下,用戶無法控制CPU中的數據安排或代碼執行順序。

3.當然,對於這種操作還是有改進的辦法可以嘗試的。

4.比如把指針和抽象合二為一,取消部分運算,改進概念之的意義,刪掉括弧的位置。

不過這個操作就略小複雜,雖然我感覺有意思,但是可能大多數朋友都覺得難以理解了。



中心思想就是,既然大家這麼想要元編程,那就把語言機制都放開,用元編程的方式來描述,不要一個個分散開毫無聯繫的feature,用一個統一的特性去涵蓋所有方面,甚至語法和編譯報錯都可以自定義。


專家意見

一個人完全可以以C的方式寫C++。C++的某些特性只在某些特定情形下有用,而且往往是巨大的作用。把C++砍成兩個語言,一個簡化到C with template;另一個弄成真正「完整」的對象系統,增加反射、引用計數、事件分發、並行原語等等。把c++這個怪獸整個都裁剪掉吧,留下c的部分,然後添加三個關鍵字,import,class,interface.分別對應包機制,輕度的面對對象,介面用來實現繼承和多態。其他任何都不要,因為都不必要,只會增加複雜度。

假如你可以個人主導 C++,你打算怎樣裁剪、擴充和訂製 C++ 來達到你心中最完美的 C++

假如你可以個人主導 C++,你打算怎樣裁剪、擴充和訂製 C++ 來達到你心中最完美的 C++

  • 重載「.」,這樣就可以做smart reference,比如generic proxy之類

  • 加入"[]="操作符,每次使用或者自製關聯容器的時候我就忍不住要說髒話……

  • 類似於D的"static if"和"compiles" trait,這樣你就可以玩弄meta programming而不是被它玩弄,神馬enable_if/is_convertible之類的垃圾統統可以不要鳥挖

  • 假如你可以個人主導 C++,你打算怎樣裁剪、擴充和訂製 C++ 來達到你心中最完美的 C++

  • 最後希望我的回答幫到你


繼承的方法不用聲明,直接寫實現就行。


命名空間不需要大括弧,一行聲明即可,遇到下一個命名空間聲明自動切換到下一個,文件結束後複位。


std::string增加format方法,可以格式化字元串到string里。


標準庫增加一個utf8_string類


把c++這個怪獸整個都裁剪掉吧,留下c的部分,然後添加三個關鍵字,import,class,interface.分別對應包機制,輕度的面對對象,介面用來實現繼承和多態。其他任何都不要,因為都不必要,只會增加複雜度。


把C++砍成兩個語言,一個簡化到C with template;另一個弄成真正「完整」的對象系統,增加反射、引用計數、事件分發、並行原語等等。把語言機制都放開,用元編程的方式來描述,不要一個個分散開毫無聯繫的feature,用一個統一的特性去涵蓋所有方面,甚至語法和編譯報錯都可以自定義。


推薦閱讀:

TAG:C | C/C | 編程 | C入門 |