為什麼有些程式語言的型別推斷可以推斷函式引數,有些不會,哪種更好?

時間 2021-06-01 13:54:02

1樓:clears Pan

強答加不請自來。

js應該是很極端的例子了吧,他允許程式設計師不宣告所有變數的型別,全是編譯器自己推斷。

結果是:執行同樣的演算法js幾乎是最慢的。

問題是:js本身在前端,很多時候並不需要太複雜的演算法,基本只根據使用者的輸入進行相應的反饋。所以即使慢一點,也在使用者可接受範圍內,甚至只多百來毫秒看不太出來。

不用宣告型別還有乙個不是好處的好處就是入門會稍簡單一些。

然而那些總是需要處理大量資料、執行複雜演算法的語言,當然要求盡可能的優化執行效率執行速度。

不寫型別乙個最大的壞處就是維護會麻煩些,而且有時隱式型別轉換會導致出現一些不必要的bug。

最後提一下,連js都開始轉向typescript了。ts也是為了解決js存在的這些問題而出現的。(大概吧)

所以還有什麼理由去偷那麼沒必要的懶?

2樓:ally

What does "no global type inference" mean regarding Scala?

local type inference vs global type inference

程式語言為什麼有變數型別這個概念?

劉志軍 並不是所有語言的變數都有型別啊 python中的 變數 嚴格來說是name 是沒有型別這一說的。例如 a 1 b hello c 1,2 3 a,b,c 3個變數都是沒有型別的,真正有型別的是後面那個值,1 是整數型別,hello 是字串型別,1,2,3 是列表型別。其實python中的 變...

為什麼有些程式語言的陣列要從零開始算?

周娛娛雨御與漁 非要問有什麼優勢的話,我給你分享一點思路。陣列 Array 是一種線性表資料結構,它用一組連續的記憶體空間,來儲存一組具有相同型別的資料。因為陣列的儲存結構是一組連續的記憶體空間,所以陣列具有 快速查詢 的特性,支援隨機訪問。陣列根據首位址和下標,實現對元素記憶體的隨機訪問。定址公式...

程式語言中內建型別是怎麼實現的?

Yunfei Lu 都有。一種語言,首先有基本型別,其實就是資料在記憶體的布局,方便表示不同種類的資料,例如整型和浮點是一定要有的,因為cpu的規範。再組合得到陣列,函式型別等,再發展出代數型別,然後包裝成介面 類 泛型等高階概念。基本型別在編譯器裡規定。至於標準庫中定義的型別,通常是某種組合的封裝...