C/C++ 這類更底層的語言,如果把平時常用的高級函數和功能都實現,能否達到 Python 的開發效率?

不是指重新實現一遍 Python。


為什麼不理解成:有人為了用C/C艹語言實現高開發效率,最後發明了Python呢?

你覺得CPython里的C是啥意思…


謝謝邀請。

這個問題的目的有點可疑。讀過這裡的大部分回答之後,我的感覺是,也許我們都誤解了提問者的意思。我猜提問者的意圖跟 Python 沒關係,真實的意思是:「我們能不能把儘可能多的 C/C++ 常用功能塞進標準庫,讓 C/C++ 程序員不再需要打理各種細節」。至於所謂「達到和 Python 的開發效率」,只是一個比方。

如果我的猜測沒有錯,那麼我的回答是:可以,但只在具體的領域有效。

熟悉分散式程序設計的老程序員可能會記得 CORBA 和 ICE。CORBA 是老一輩的分散式架構,C/C++ 綁定時用的是 C 字元串類型;而 ICE 則直接用了 C++ 標準庫的字元串。不僅如此,ICE 大量用了 STL 標準庫。具體到開發效率時,ICE 的 C++ 綁定確實讓我省去了大量時間折騰 CORBA 里的 C 字元串分配和釋放問題,做個小應用確實輕鬆了很多。

但為什麼我說只在具體領域內有效?因為 C/C++ 的定位決定它存在巨大的限制。仍然是字元串的例子:有誰知道有多少廣為使用的 C++ 庫沒有實現自己的字元串類么?ICU、WxWidget、Qt、MFC,還有很多流行的庫,都這樣重新發明著輪子。我無意追問為什麼我們會面對如今這種混亂的情況:這是個歷史問題。無論如何,C++ 使用庫碎片化已經是事實,無法如果。

既然不能如果,現在再談重建標準功能庫,就只能限定在某個具體的框架里,比如 MFC,比如 Qt。在這些具體的框架之內,確實可以有比純利用 C++ 標準庫高得多的開發效率。唯一的問題:請別超出框架的範圍,不然就可能給自己惹麻煩。

那麼,在理想情況下我們能不能達到 Python 的開發效率?也許可以吧,不過如果理想都達不到,我想我們還是別討論了,立足現實更好些。


我有寫include配lib path的時間python都已經執行完了。。。


說實話我開源的一個項目 http://gac.codeplex.com 就試圖這麼干。自從把我需要的基礎的東西(特別是linq to C++)寫完了之後,我覺得我的開發效率特別高。而且帶來一個副作用(我不認為這是壞的),別人一眼看我的C++代碼總覺得那是C#。


不能。

你會花和Python差不多的時間構思。

Python兩倍的時間打字。

Python一百倍的時間編譯。

比以上加起來還多十倍的時間debug內存越界和野指針。


可以通過某些編譯器把Python編譯成二進位讓它和c++差不多快,但是對於c/c++,無論你再怎麼寫類庫,某些語言特性決定了開發效率就是那個水平。


你說的是用 C/C++ 寫個 DSL?


都討論的太專業了,人家只是問如果相關的庫都實現了,然後開發效率怎麼樣而已。開發效率你用過C++和Python就知道,因為庫多,所以實現一個同樣的功能,當然Python會寫起來很快,而不是最後的執行效率。這個問題我就「一個字」:不可能!就一個內存的分配和釋放需要寫代碼的人注意,就讓Python在這方面佔盡了優勢。Over!


C/C++本質上是Raw Memory Processing語言

如果你不需要處理原始用戶態內存,卻選擇了C/C++,說明你不理解C/C++

因為你放棄了這兩個語言最有用的功能


C++11 + STL + boost 的開發效率大可與 Python 一戰,不過編譯速度不能比

for (auto x : { 1,2,3,5,8,13,21,34 }) cout &<&< x &<&< " ";


你可以理解成…… Python 是 C++ 的庫……

---

搬評論:

「考慮下,倘若 C++ 可以做到這個特徵,那麼一般應當有人完成了這個庫。 倘若沒有,似乎可以說明:寫一個達到 Python 的運行效率的 C++ 庫需要的精力,可能超過了寫一門新的語言。 此其一。

其二,受限於 C++ 自身特性(例如語法、動態性、類型系統、lambda算符、內存管理等),某些功能使用 C++ 完成經常會特別繁複,或面臨難以逾越的技術障礙。(記得最後一頁寫滿尖括弧的笑話嗎……)

我也只能想到這些了,能力有限。」


你幹嘛不直接把Python嵌入到你的C/C++程序里,然後你就可以用Python了,當然有Python的開發效率……


首先,寫完程序測試的時候效率就低了,c++還要編譯之後才能運行

python直接就可以運行了

當然你可以說python其實也是要編譯的…


首先回答問題,不行!(僅回答c++語言)

從語言本身角度,c++不是為了這種生產環境設計,就算再多的類庫,再多的補丁,實現再多的python功能,她還是c++,該有的c++功能還是有,而更多功能當然帶來更複雜的邏輯,所以並不能像python一樣快速開發。而且這個C++庫恐怕會大到普通pc無法容忍的地步,編譯時間和大小都不是普通用戶能承受的。

但是!!如果擁有一個非常大的類庫,確實大大增加c++的學習成本,同時增加c++的複雜性,同時,c++的源代碼會變得比較簡短也是事實,如果庫寫的不錯,代碼簡化之後和python差距不大,或者更像一種神奇的c++類似的內存自動管理語言。

我現在剛接觸了一個非常大的C++庫,現在正在學習,個人感覺就像在用一門完全陌生的語言,各種調用都要查詢很久文檔才能寫出幾行代碼,但是如果熟練的話,應該能夠做到原來C++至少一半的代碼量就解決相同問題。


c++的時候覺得最影響開發效率的我覺得是沒法像python那樣對什麼東西都可以print出來。

和成熟的logging日誌庫來幫助調試。

所以在開發c++的時候自己寫了一個頭文件庫。沒有依賴,就沒有傷害。

直接include進來就可以使用的。

https://github.com/yanyiwu/limonp

hope it will help


C++要想達到效率比較高的開發,是得遵守一定代碼規範的,關鍵是寫C++的程序員得有經驗,python那種語言就算一個小白在寫也不會出事。我見過兩個寫java的,其中一個連構造函數都不知道是啥,另外一個連靜態對象什麼情況都不知道。但是人家照樣參與項目,說明那些語言不懂的人稀里糊塗的寫一樣能寫的下去。C++不同,要是稀里糊塗的話會有一堆不可重現的BUG。


如果1,2千行python能搞定的程序,我覺得c++沒法更productive.


要提高語言的開發效率,庫是一方面,另一方面是要給語言做減法。

另外C++作為一門native語言,在二進位模型方面毫無作為還越來越複雜,基本讓調試成本指數上升,這個是改不了的。


感覺這是邁向造一門新語言的路上。

直接換語言或嵌入腳本語言多好啊


objectivec 嘛

開發速度快 但是執行速度慢


推薦閱讀:

python 的絕對優勢在哪些方向?
學習編程,如果只看"工程類"書籍,不看"科學類『書籍,會有哪些不良後果?
個人充電,想學一門替代python的語言?
自動處理excel數據,用什麼語言合適?
python 3.4 下載了PIL第三方模塊,whl格式,如何安裝?

TAG:編程語言 | Python | 效率 |