Python是這些庫的API binding,使用Python是因為CPython的膠水語言特性,要開發一個其他語言到C/C++的跨語言接口,Python是最容易的,比其他語言的ffi門檻要低不少,尤其是使用Cython的時候。其他語言的ffi許多都只能導入C的函數入口點,復雜的數據結構大多只能手工用byte數組拼起來,如果還需要回調函數輸入那就無計可施了。而CPython的C API是雙向融合的,可以直接對外暴露封裝過的Python對象,還可以允許用戶通過繼承這些自定義對象來引入新特性,甚至可以從C代碼當中再調用Python的函數(當然,也有一定的條件限制)。不過這也是PyPy這樣的JIT解釋器的一個障礙。
而且Python歷史上也一直都是科學計算和數據分析的重要工具,有numpy這樣的底子,因為行業近似所以選擇API binding語言的時候會首選Python,同時復用numpy這樣的基礎庫既減少了開發工作量,也方便從業人員上手。
想要了解更多關于人工智能資訊信息,請關注中培偉業李老師二維碼:
