Python 和 C++ 如何選擇?
大三狗,想要大四找到一線城市工作,主要方向是linux下編程,有linux c編程經驗,最近一直在糾結是學c++還是python,請求各位解答,小弟拜謝…
有等答案的功夫python就學完了。
兩個都學,並且還要學Python的C API。這樣就可以任意互相調了。
基本上只要是靠譜的公司都不是看你現在會什麼語言才要你的。基本上找工作的時候也別抱著『我會XXX』就妄想這輩子只靠這個語言工作。
28原則吧 80%精力學習c++ 20精力學習一門腳本語言
主要看樓主以後方向吧 如果是網路安全python肯定需要 如果是遊戲可以先學lua 光學習語言是不行的 多看看優秀的源碼的 openresty skynet stl對於python可以先過書 幾天搞定一個高級話題 如裝飾器 迭代器 協程 元類 學一門學累了 看看csapp 演算法導論 挺好目測糾結的時間都足夠學個七七八八了。python和c++面對的領域不同,特點不同,都學了也沒壞處。何況編程這事,重要的是思想,不是語言。
語言有什麼用處?不依附平台、需求和project,語言沒有任何價值。所以不要糾結什麼c++、ruby、python、php之類的該如何選,要看你的職業規劃、看你的需求和項目。
要完成一些成規模的項目,軟體架構與性能都必不可少。C++正是為此而生,在盡量不犧牲性能的情況下,提供高層次抽象所需的功能。畢竟C所缺少的命名空間、高級數據結構等,使其完成大規模項目是有一定困難的。
不過C++並不是解決該問題的唯一方案。很多其他方案並不專註於同時確保兩點,而是將目標集中於更好的軟體架構,以及可以接受的性能。Python、Lua等很多語言都是如此。而同時,對於要求性能較高的部分,或者與系統結合緊密的部分,則是交給C模塊去處理。這樣的思路對大型項目是很有利的,架構方面因為有高級語言的支持而得到了更好的抽象,更容易實現複雜的邏輯。而循環次數較多的部分則交給C去處理。尤其是引入高級語言後,可以迫使人們將傳遞的數據交給高級語言,而不是C里隨處使用全局變數。
所以,以實用的角度講,Python+C是更好的選擇。另外就是C++為了尋求性能與架構的折中而不得不引入很多概念,這些概念使得C++比C要複雜很多,同時其對架構的支持能力卻又比高級語言查一截。
總的來說,我的建議是:
1. 學Python,反正很快2. 學好C,結合具體的系統與函數庫3. 學Python與C結合的方法,比如Python的C模塊、Cython、Swig等多種方式4. 學一點C++語法,畢竟還是有一定概率會用到C++的庫,但不要在那些奇怪的C++功能上浪費時間由c++入python易,由python入c++難
真要二選一就選Python吧,雖然我個人認為這兩個都不是什麼特別好的選擇。
大三了啊,建議花多點經歷學C++,畢竟筆試還是以C/C++居多。python有個了解即可,花一天的時間看完《簡明python教程》就可以入門了。不過python入門簡單,學好沒那麼容易 (哪門語言都一樣吧,哈哈)。
既然已經有linux下C經驗,還是學學python吧。
C和C++都有「開發人員過多精力放在人機對話上」的問題,而python好一些,代碼邏輯密度更大,OO也比C++更容易。花同樣的時間,c++可能才入門,python至少熟練了,人生苦短,請用python
先學c++再學python
「人生苦短,我用Python」。不過,不要浮躁。---------------------------------------------------------語言只是做事的方法,你要專註於要做的事情本身。你應該根據實際需要選擇合適的技術去學習。如果是想做網站後台,做爬蟲,做系統管理……肯定python更好。如果想做遊戲,做操作系統級編程,顯然c++好很多。
而且,python和c++並非水火不容。兩者都是c語言系的,基本語法差別不大,而且在python中的關鍵部分可以嵌入c/c++/java程序片段。沒記錯的話,python也被稱作一種「膠水語言」。
-----------------------------------------------------------從筆記本上摘幾句相關的話供參考:- 『你不應該「嫁」給任何特定的技術,而應該有足夠寬的技術背景和經驗基礎,使自己能針對特定的情景選擇好的解決方案。』——《程序員修鍊之道》
- 『我永遠不會用自己的技術來定位自己,而是用我已經做過的和我將要做的事情來定位自己。技術只是一種做事的方法。』
- 『軟體開發界有很多這樣膚淺的專業人士,這些人以「專業人士」為借口,只知道一門技術。』——《The Passionate Programmer》
- 『身為合格的程序員,紮實的基礎+快速學習能力才是你最可靠的武器。至於何種技術,別擔心,不過又是一種微風。』
- 『程序員就是程序員,寫得出程序就是程序員。程序員不要在自己腦門上加太多修飾,什麼C++程序員,什麼Java程序員,什麼Windows程序員,什麼Linux程序員,這些加了修飾的程序員,其實不容易存活的。』
- 『學編程有點像修鍊,心靜神寧可以讓學習更有效率,浮躁要不得。……不要貪多嚼不爛,一定要精於某一方面。』
- 『學以致用』
- 『學習是一輩子的事,不用著急。』
平時有空隨便看幾頁Python官網的Tutorial,沒多久就看完了,然後一邊寫代碼,一邊看Library Reference。
請直接從官網docs開始,看其他教程都是浪費時間,有些書轉述都轉述不好。
關於C++ 學習路線,stackoverflow上有個很好的帖子。