如何看待微軟開源的 C 語言版本——Checked C?
01-02
Checked C - Microsoft Research
yet anthor typical MS twisted mind
Galen Hunt和Reuben Olinsky兩位提攜過我的人都在這個項目,所以肯定錯不了。
從介紹上看,這個項目為的是解決C的根本問題——缺乏邊界檢查。幾乎所有現代語言都有邊界檢查,而C/C++沒有。如果有一個不失效率而且有邊界檢查的C,可以減少很多緩衝區溢出問題。目前為止這是一個還沒人解決的問題,研究院的目的就是這個。而且這個可以集成到llvm/clang,直接用到現實中的編譯器里。
至於為什麼是C而不是C++?這其實沒關係,因為C++代碼都是可以編譯成C代碼的。檢查部分仍然不變。而且如果放到底層,上面是什麼語言無所謂了。MSR這個組就是整天做這些又好玩又沒有用的事情。本來前年翻牆就是想去這裡的,誰知道satya在醞釀大裁員,除了office以外的都不招人了。
只能說做的太少了,,,,步子邁大點才會有人來追你
看了一眼文檔,滿眼的LaTex,都LaT了,就是最後一個X不大寫……強迫症要瘋。
沒有用。直接用 C++ 就完了。ptr&
講道理,如果你的程序把 contract 理得很清楚,根本就不需要勞什子擴展幫你檢查邊界檢查……
被微軟放棄的項目實在是太多太多了,沒準哪天這個項目也是如此。喜歡折騰的可以看看,不用過多的關注,真的流行的話 再關注不遲,不過微軟的東西要流行真心不易了。被MS坑,不喜歡MS的人實在太多,算我一個。
我是來潑冷水的。
一個正常的商業軟體,本身就應該進行邊界檢查(尤其是傳入的數據),正確的代碼不會出現邊界溢出等bug行為。
退一步說,假如出現了邊界溢出,請問是 捨棄掉多餘的部分繼續錯誤的執行下去,還是 死機,還是 哐得一聲彈出一個大大的警告框? 似乎都不合適。優雅的處理過程是:「你輸入的字元串過長,請重新輸入」、「foo函數第2參數傳入的值大於……」等等。邊界檢查唯一的有用處只在代碼調試階段,而非運行時。看到改了C的語法就不用繼續看了。從ccured開始,這麼多年了,各種介紹安全內存模型的C語言擴展項目,沒有一個實用的,因此也不看好這一個。
歡迎來打臉。
我都不明白為什麼邀請我來回答這個
首先是肯定的。該項目的出發點和實用性還是很高的,規避錯誤是開發者們不斷要提醒自己的,看介紹上來說,主要是檢查常見錯誤,通過增強對指針的控制,此外,也支持邊界檢查了。
港真,與其改造一門舊語言,不如再造一門新語言,反正已經這麼多語言了
微軟做了一件大好事,我們無數C程序員的福音。
推薦閱讀:
TAG:微軟Microsoft | 編程語言 | 開源項目 | Clang | LLVM |