為什麼C 沒有Python那麼多開源庫?

時間 2021-05-06 01:53:59

1樓:李淵

其實c/c++有很多開源庫,但是c/c++的開源庫用起來都比較麻煩,所以一般除了那些大的開源庫,其他的小東西都自己寫了,畢竟寫也就半天,學習庫可能就要一天再花半天來呼叫,花半天來確定問題在哪。

2樓:塵世之夢

很多python的開源專案都是C++或者C寫的,然後給python乙個呼叫介面,你說這是python的庫,但他本質就是C和CPP

3樓:Leo

Cpp沒有很好的包管理工具,也沒有很好的依賴管理。還有cpp的特性太多,編譯器太多,沒有乙個預設的比較易用且相容的cpp版本

4樓:phoex xu

你可能對python比較了解,而對c++不是特別了解。

不說別把,就我知道的c++ gui開源庫就很多。

QT,wxwidgets,fox-toolkit,fltk,WTL。

這還算比較有影響力的,一些小的就更多了,比如輪子哥的gayui其中QT也有python使用,pyqt。

5樓:奔跑的蝸牛

為啥python被叫做膠水?

就因為python呼叫其它任何語言都做得比較好,都有人做好相應的庫,而那些其他語言的庫作者只需要很簡單的適配一下就能同時支援本語言和python,同時更方便給其他語言呼叫,何樂而不為!

所以,其它語言的很大一部分庫,適配一下就能作為python庫,就這樣而已。

6樓:牧塵

這要從c語言說起來,太麻煩了就不提了。說簡單點,C++的庫早期也不少,但是各自的覆蓋範圍都不小,有一些範圍比較單一的庫逐漸被淘汰了。講道理,對於很多任務作來說,C的庫完全夠用了啊,更別說還有傢伙開發了萬能庫。。

7樓:悟 悟

時代進步了唄,

以前跑遍全球,可能連乙個計算器都裝不起來

現在足不出戶就可以自己攢一部手機

C確實是較為底層的語言,可是現在想吃一頓大餐,不需要從墾荒開始現在問為什麼外賣這麼流行,而大家不自己去養殖,其是刀耕火種的日子早已流行了數萬年,想要體驗生活隨時都可以,切記不要違法

8樓:Antmuse

何以見得,pip install 的好多庫都是c/c++寫的,cv2, tensorflow, ffmpeg......

9樓:

說的簡單點,白話一點。

C++是給專業人士用的,專業人士為了更靈活,都公司內部自己造庫,一些對於小白使用者生活中常用的庫,在C++圈子裡沒有市場,C++有造搜尋引擎、作業系統的庫,普通人用不上。

python 語法簡單,小白市場巨大,小白生活中需要一些庫方便自己,於是就有了市場。

10樓:tearshark

如果算上C的庫,畢竟C++可以無縫用C庫。

c++的開源庫是比Python多的。原因很簡單,Python沒有c庫,啥都不是。絕大部分Python開源庫,背後都是c/c++庫。

11樓:尚嘉宣

不是很清楚,但是我覺著還是有不少的,但是不成體系,也沒什麼宣傳。

甚至不少c++寫的庫最後對外的介面也都是C的(主要是abi和對其它語言的介面)(說的就是你,openal-soft)

不過要找總還是有的。像是Fmod那些,RtAudio那些,QT(算不算不確定)這些

12樓:harrison

這有可比性嗎?

本質上現在c和c++是平台和核心語言,他們是被依賴的,而不是依賴別人的。python是上層邏輯,也被稱為膠水語言,所以是會有更多依賴庫。設計的目標和使命如此,去比較這個有什麼意義呢?

13樓:lhelpme

c++太古老了,缺少現代語言基礎設施

包管理基於module

依賴的版本控制

要基於不同環境做不同編譯配置

工具鏈變一變,編譯相容就哭了

有個笑話,別的語言,都是包管理,拉一下就好了,cpp 得自己看readme 來編譯

14樓:小栗子

按照我開發c/c++的經歷來看,就算某個功能有開源庫,也不是很敢用,出了問題找起來說不定比自己寫的時間還長,用同事寫的模組出了問題還能找,開源庫出了問題就不好改了,誰知道改了是不是會把系統搞掛。

基於這個很多人應該也不敢把自己寫的開源出去,大的模組很難保證沒問題,出了問題就難搞咯。除非是以公司名義開源內部孵化專案,個人也沒這精力。

Python的話功能上沒問題基本上就出不了事

15樓:喵嗚大將軍

方向不一樣,cpp的庫的特點不是多,而是大

乙個boost,乙個QT,要是拆散了,再各種命名風格,各種設計模式重複幾遍,那就不比python少了

更何況,很多其他語言的庫都是對當年c庫的封裝

16樓:愛吃茄子

想想c++安裝三方庫多麻煩,更不用說自己寫了,更不用說自己寫的庫依賴三方庫,想想就頭大。根源在於c++沒有 pip這樣的工具 。

17樓:

估摸著是因為:

1、C++應用領域沒有Python那麼廣,但應用領域非常固定、很難替代。這導致沒有像Python那麼多的人來為C++做貢獻,而且因為固定、難替代、歷史久,導致現在的庫基本夠用了,質量也經過檢驗,沒必要重新發明輪子。

2、C++比Python難伺候多了,門檻在那擺著,很難寫出高質量、別人敢用的庫。

3、不像python那樣有pip, conda那樣易用的包管理工具。編譯個別人的庫煩得要死。

18樓:W3nl1nG

我在github上用的開源庫,5%編譯成功,剩下都失敗了。不開玩笑,有時候要編譯乙個lib,要找到lib23456789…

最後的解決辦法是盡量用lib manager或者直接找別人編譯好的binary。

19樓:普通少年pro max

C++的庫,或者說C++吧,很多東西可以算很依賴編譯器、構建工具之類的版本、特性等等的了,"Header Only"的庫好多也這樣。

最簡單的就是這樣一種情況,原始碼全給你了,怎麼編譯都說了,也會有很多人編譯半天都編譯失敗,就算是很熟練掌握那一套編譯、鏈結過程的,有時候可能也要去稍微改一下庫的原始碼,適配一下自己的環境。

然而你要是沒搞好,報錯就算了,要是你用的庫模板多,那套娃式報錯上來給你來幾十條幾百條,要是寫庫的人寫飛了什麼指標,那錯誤定位也是麻煩得很....

良心的庫,會針對各個主流平台做測試、適配,比如LLVM,每次release那一堆,但很多庫作者是大佬中的大佬,他覺得這些東西都挺簡單的,我核心思想都給你了,你應該一點通啊,自己寫乙個都可以了。

而且C++正規化多,C++的開發者也都在自己吵,都覺得自己的正規化是對的,這樣庫的特異性就更高了。

Python的庫,因為python這一類語言的特點,本身社群就比較統一,絕大部分的庫都是直接拿過來import就可以了,儘管很多底層可能是C++來做的,但畢竟有大佬給套殼了,這樣使用門檻大大降低,所以感覺上python開源庫就特別多。

(我覺得C++的庫還算挺多的....就是拿來即用的可能是真的不多..)

20樓:

一方面是沒有像pip,conda這種完善的包管理機制,很多庫根本沒人知道。另一方面是c++程式設計師比較喜歡造輪子,都喜歡從頭寫起

21樓:零度

當你用到C++庫了,要麼就是平台相關了,要麼就是對效率,記憶體有極致的要求了,再要麼就是有特殊需求。這個時候用第三方庫,會放心嗎?首先考慮穩定性,弄不好搞個野指標飛飛,找起來要死人的。

能不能進一步優化?改改能不能符合現在的特殊需求?這一套調查下來,發現花的時間,將來要填的坑。

搞C++的,當然對自己有信心啊,這一評估,發現不如自己挖坑自己填。乙個新的庫就這麼誕生了。

22樓:lu luce

有些回答都是什麼胡言亂語。

Windows平台下,微軟的庫不香嗎?微軟不開源怪我哦!

Linux平台上,C語言的庫大把啊!加個extern C就能用啊!

其他平台上都有各大廠商支援啊!我要是研發乙個產品,肯定是優先支援C/C++語言啊!

為啥Python有這麼多庫!難道不是Python相比C++是一門新語言。各大廠商不會優先支援嗎?

最後你以為Python庫內部是怎麼實現的。還不是呼叫C++庫的函式!!

23樓:Neo Xiao

如果題主問的是僅僅是對比開源的庫,那確實cpp沒有py的多,因為py自己本身就是開源的,號召大家也都開源嘛。但是cpp不一樣,cpp更接近底層,輪子多,但是很多不開源。其實對於使用者來說我覺得cpp輪子使用者並不需要知道輪子的原始碼,可以拿來用就可以了。

實際py使用者拿到不也是嗎?我相信大部分人也沒去研究輪子的原始碼。

24樓:子猫

fffaraz/awesome-cpp

這裡面除了gui、遊戲等涉及ui的庫,沒見過哪個c++庫起手就是乙個BaseObject,估計10年前的庫是這樣的,不過boost也10多年了,裡面也沒有起手就是BaseObject的,各個庫你想用哪個庫,都可以單獨用。

25樓:熊起

C++設計之初就只考慮了乙個公司或小圈子自己攢庫的問題,根本沒考慮全球聯合開源,表現就是基礎模組和介面(module)機制缺乏。

所以每個需求的庫和框架特別多,但不同需求的庫難以組合到一起使用。

26樓:

你想到的都有,你想不到的也都有!不是有句話來著,這個世界不缺少美,是缺少發現美的眼睛。哈哈哈哈哈哈~

cpp只是沒有類似pip的集中發布工具,畢竟cpp出道早,早些年網際網路哪兒有這麼發達,要麼自己擼,要麼自己到處搜。

後來呢,後來寫cpp的就習慣了。。。。23333333

27樓:Star.E

c++的開源,就是一場絕地求生。你能看到的庫,都已經成功吃雞了,百裡挑一。

c++的世界,只有最終生還者,剩下的都是盒子精、快遞員。玩久了個個都是lyb,還有很多神仙,環境是很不友好的。

開發c++庫,首先落地時間要早,落地晚的容易被落地早的當靶子打,翻翻stl和boost,已經覆蓋了多少庫了,再做是不是傻。

然後要落在好地方,周圍資源要多。要是落在ia64、uwp、mips這種荒郊野外,基本窮困潦倒,死在跑毒。落到win城、L城、A城這種大城才有可能肥。

當然大城的競爭是非常激烈的,技術不好的,比如新手,一般直接落地成盒,一點機會也沒有。

技術好的,也要經過一輪搏殺才能出城。像ace這種開局順利的,也會被asio伏擊。哪怕殺到城裡只剩一隊,也會有戰鬥減員,消耗過大,比如qt。

更不要說有巨硬、從不作惡、果子這種神仙玩家了。

開源庫的功能,就是乙個個毒圈,大家功能越來越接近,毒圈就越來越小,最後就是你死我活。當然能進決賽圈的,都算是成功的。

別的語言,沒這個現象。主要是c++追求zero overhead,別的語言不追求。c++寫的不符合需求、質量不行、效能不好、用的不爽,就沒人用了。

python不是吃雞玩家。

svchost exe 為什麼會占用那麼多 CPU?

駿馬秋風 我遇到的問題是這樣的WIN7 64位系統,任務管理器中svchost.exe老是在後台載入重新整理,導致電腦視窗頻繁失焦,最多的時候有十幾個,挺好的電腦一開機CPU就占用了20 連瀏覽網頁都變卡了,這種情況是以前從來沒有過的。一開始我太懶了沒太在意,手動結束程序就解決了,但每天開機這麼關一...

為什麼人沒有狗那麼多品種?

李溯本 Unancha 狗,或者準確地說應該叫狼,估計是全世界種內差異最大的動物,第二都離著它老遠!首先圈養環境跟自然環境就是不一樣的,圈養條件下,一方面很多變異都能得以儲存而不被淘汰,另一方面據說基因本身的變異也真能增多,就像基因會感知環境似的,能作出相應調整?其次狼是所有動物中第一種被人類馴化的...

為什麼吹 Uzi 的人那麼多,全球總決賽那麼多冠軍選手,為什麼認準 Uzi 了?

南見雪 有哪個奪冠了的AD選手,主動吹UZI了?那些主播吹uzi,大程度是沒辦法,畢竟退了,不能跟現役的比。你看現在烏茲退了,誰還吹?bang 每次都是我贏。IMP 我只用了五成力。別的ad 烏茲都沒跟人家交過手吧?S1,S2不提了,S3名場面豬讓塔下Q死UZI,S4冠軍ad imp,S5冠軍S6冠...