C C++ Python哪個更適合新手?

題主准高二了。以後想上軟體類的專業。
對於一個將要以編程為生的人先學Python合適嗎?還是說最好從C ,C++ 入手呢?
學了Python之後再來學c會有影響嗎?
請各路大神結合題主的實際情況解答。


可以從c入手,這個語言比較簡潔,基本的概念你都能學到,比如內存管理。而且學完了這個,你對Python 裡面的很多東西都有更加深刻的認識,比如迭代器,生成器等等…不然恐怕總是格了一層什麼東西,看不透這個語言。

最主要的,你還很年輕…世間很多,從基礎開始吧。

C++太龐大了,裡面涉及了太多東西,一上來就學,可能感覺有點蒙


還是推薦樓主先學C語言吧!

對於大部分程序員,C語言是學習編程的第一門語言,很少有不了解C的程序員。也許你將來的工作或學習不會使用C語言,但是它能讓你了解編程相關的概念,帶你走進編程的大門,以後學習其他語言,會觸類旁通,很快上手,7 天了解一門新語言不是神話。

C語言概念少,辭彙少,包含了基本的編程元素,後來的很多語言(C++、Java等)都參考了C語言,說C語言是現代編程語言的開山鼻祖毫不誇張,它改變了編程世界。

正是由於C語言的簡單,對初學者來說,學習成本小,時間短,結合本教程,能夠快速掌握編程技術。

對於初學者,學習C語言還可以順便了解很多計算機的運行原理,為後面的學習夯實基礎。

C語言不但運行效率高(比C++、Java都高),而且應用廣泛,可以用來開發桌面軟體、硬體驅動、操作系統、單片機等,從微波爐到手機,從汽車到智能電視,都有C語言的影子。

在世界編程語言排行榜中,C語言大部分情況下排名第一(偶爾會被Java奪得寶座)。

所以說,學習一門年齡比自己還大的語言很有必要(C語言誕生於20世紀70年代初)。

當然,C語言也不是沒有缺點,畢竟是70後老人,有點落後時代。

最近幾年,有一門新的語言異軍突起,奪得了大家的眼球,它就是Python。

在我們開始學編程的時候,Python並不是那麼「甚囂塵上」,中文資料也不多,絕大部分人還是從C學起,大學的課程也是這樣安排的,先學C、再學彙編、C++、Java等,把C作為一門基礎語言。

現在情況不同了,有一部分初學者放棄了C,從Python開始學起,認為Python簡單,容易學習,不像C那麼晦澀。

其實,Python 的「簡單」主要是指代碼格式清晰,語法沒有那麼嚴格,例如,在屏幕上顯示「C語言中文網」: print "C語言中文網" 對比C語言的代碼: puts("C語言中文網"); 你看,Python不需要括弧,也不需要最後的分號。

但是,不要被誤導了,Python涉及到的編程概念和編程思想並不簡單,比C語言要多要複雜。以我的實際感受,Python的學習成本並不比Java、C++小。

任何編程語言都一樣,不管是你的學長學姐告訴你簡單,還是你自己認為簡單,其實都是錯誤的觀念,不要被這些觀念誤導。

你可以認為X語言比Y語言在軟體開發方面更加優秀,或者M語言比N語言在數據挖掘方面更加方便,但是絕不能認為哪一種語言更加簡單。每一種編程語言都有自己的應用領域,要學習合適的語言,而不是「簡單」的語言。

總之,我不認為學習Python的成本比C小。

值得一提的是,Python也是用C來開發的,如果你希望更好的學習Python,那麼肯定也要學。


不要從C++開始。其他語言隨便。

對於智商一般的普通人來講,編程沒啥捷徑只要動手就行,唯手熟爾。

不要想去找捷徑,因為你可能會陷入一個怪圈:以為自己懂得多,其實根本都不會。


還是建議從c語言入門。python雖然簡單,入門快,但是很多東西都被語言本身給做了,你就接觸不到更深層的東西,比如內存分配,內存管理,指針等這些東西。


就語言本身來說,C比Py簡單很多,這裡的簡單是指語法和規則

C的難點在於對程序員的細心程度等方面要求很高,另外就是C標準有很多規定也需要注意,不然比較容易掉坑,然而這些其實是語言之外的素質要求,換句話說,如果你不細心,換其他語言是不會像用C一樣程序崩潰,但依然做不出什麼好東西,只是換個方式出問題罷了

py的話看似比較容易上手,其實坑也挺多的,易學難精,要用好它很多時候也需要啃標準文檔甚至啃源碼實現,就算初學用py,後面還是要補C的,只會py很難有發展


個人覺得是先學c,再python,最後c++

首先c語法簡單,但是因為接近底層,所以你會對編程的好多本質有所了解,比如內存的本質,程序運行的本質,指針強準的本質,關鍵是這些都不難,多用一用就能理解。但是c也只適合入門了,因為他開發效率偏低,解決問題時,花費時間長,也就是開發效率低(當然執行效率高)。

因為c的運行效率高,經常會被用作開發操作系統,而且操作系統也不需要c++那樣花哨的語言特性。當然,一般人不會接觸到操作系統的開發……

python就是一個瑞士軍刀,好像什麼都能做。但是你要擰螺絲的話,是瑞士軍刀的好還是獨立螺絲刀好?肯定是獨立螺絲刀好用!但是有了瑞士軍刀,擰螺絲這個事又不是很急,何必非買獨立螺絲刀呢?而且瑞士軍刀用起來可能有些不方便,但是肯定比出門買個獨立螺絲刀要方便啊!這就是python的最大優勢,他有非常齊全的庫,官方的也好第三方也好,經過十幾年的積累,這是一個龐大的集群。因為python語法簡單,甚至接近偽代碼,所以python對我來說是解決問題一用的,達成目的即可,其他的?shut up!

c++是最不適合作為編程入門的,因為他的規則太複雜了,對於新人來說,當學習時這些東西撲面而來很容易把人嚇蒙的!什麼是顯式構造、什麼是拷貝構造、析構函數為什麼要virtual、虛函數是什麼、虛基類是為了什麼存在的、運算符重載的規則是什麼、指針和引用的區別、模板有那些黑魔法、標準庫究竟會幹些什麼…… 不得不說它的很多特性,讓編程變為像魔法一般的存在,當使用者念咒語施放魔法時會產生非常強的成就感。但當你對咒語一知半解時,一旦犯錯你需要翻經閱典花費大量的時候來搞明白。

所以我建議先從C開始,了解基礎語法之後嘗試更深入地了解本質,這對你接下來學python有好處。然後學學python,並用python嘗試去做一些事情,你會發現python的強大。最後學C++,雖然上面說了C++的語言魔法太複雜,但在當前市場下,C++程序員的需求量還是很大的,因為C++得益於他比C更快的開發效率以及python等腳本語言所無法比你的運行效率,使其成為市場的一個剛需。


題主你是把java給忘了?


雖然學完C++之後轉所有語言都是分分鐘的事情,but!先學C++是極其不明智的!建議先了解C語言,不用學太深,學完第十章(哎呀我忘記了是什麼內容了,反正用到了就想起來了,是文件操作還是啥的)就可以休息休息練練手然後換Python!注意換之前指針一定要學好,腦子裡有內存模型就行,雖然Python沒指針也不需要內存操作,但是知道指針之後理解Python還是很爽的(我是這麼感覺的)。等Python可以做一些項目了你就可以轉C++了,有C的基礎和腦子中的內存模型,C++輕鬆了20%了(數是我胡謅的,大約就這麼多吧),接下來類,模板,運算符重載,STL(我有忘記什麼嗎?)學會C++就差不多掌握了70%了(哼,我又胡謅了一個數),不過以上四個特性每個難得跟重新學個Python似的。然後你可以逢人便說自己會5門語言了(包括漢語英語),是不是很厲害,好了入了C++的坑,以後你就累了,看它天天都跟面向自己的對象聽嘮叨一樣,一堆報錯啊!這個時候不建議再學新的語言了,好好學學數據結構演算法什麼的,用C++或者Python多做練習,時間久了自然很多東西自己就明白了也會有把握了,報錯能看懂了,Python的功能好羨慕寫一個C++版的就好了,Python小打小鬧的時候用,C++自殘的時候用。等個幾個月你基本上就挺厲害了,平時自動化操作電腦什麼的都交給程序吧(反正我用C++寫過程序幫我把別人的課劫了→_→警察叔叔不要抓我,其實這個很多人乾的),其實當你學到這一地步的時候自己就懂要學什麼了。

以上是我的學習路徑,一個人學著文科專業的我自己找資料從微白學到了小白,最後是一定要天天練習,不能保證每天練至少一周要寫寫再看看,要不然手生了下次寫很難受!

好了小白走了,我去拯救世界了(我是鋼鐵俠@( ̄- ̄)@)


大二狗,程序猿,搞過ACM,做過小項目。

首先對於題主在高二就想學習大學的內容表示鼓勵,同時也希望題主能夠先優先照顧好自己的高中學業,畢竟高考勝利了,你才能進到好的學校並自由選擇你喜歡的專業。

以下是正題:

首先反對初學者學Python,Python(以下簡稱P,手機打字太辛苦)是一門非常好的編程語言,我目前也有所涉獵,其中完善的語言結構,簡潔的代碼規範,都讓P有了更容易上手的特性,對於任何一個初學者來說,P都是相對於C++或者Java更容易理解的。

但是!對於一個要當程序猿的初學者說先學P,絕對是耍流氓,用P可以快速建立起項目,做出程序,這種滿滿的成就感適合於用來培養學習興趣,但絕對不利於培養完善的編程思想,這對一個程序猿是不利的。

C++和P是高級語言中的高級語言(相對於C而言,事實上C++和P並不對等),其中很多數據處理的實現已經被高度封裝,比如排序,大數處理,一個類方法就可以實現,一個函數就可以實現,學的時候看不到底層實現,光記住函數名字和參數就可以使用,但還是那句話,這對一個要當程序猿的初學者來說是不利的,因為他沒有辦法了解數據在程序內部是如何實現的,沒有辦法了解程序是如何組織數據的,沒有辦法在多個不同的排序中找到合適的,沒有辦法學會如何對數據進行組織,尤其是P,在初學階段,P的變數並不需要明確定義,對於變數的使用不需要聲明,是一種動態類型綁定的形式,初學者甚至沒有辦法通過P了解各個基本數據類型之間的區別,這種問題在現在來說,都是致命的。

我相信在以後的發展趨勢都是高度封裝和弱類型,但對於程序猿,一上來就學最高級的語言,無疑是不可取的,業餘時間玩一下培養興趣的人另說(那樣的話我覺得VB或者易語言更好)

我的建議是學C沒有之一,C是目前用得最廣泛的面向過程語言,所有的高級語言的語法結構都有C語言的影子,C是所有學習高級語言的基礎,C語言沒有方便的函數封裝,沒有高效的垃圾自動回收,所有的實現都必須自己一個代碼一個代碼敲,但正是如此,你可以通過C語言學習到基本數據類型之間的區別,學會如何操作內存(指針),學會自己實現各種數據結構,比如鏈表,樹和圖,學會自己實現排序,從冒泡到快排到堆排序,簡單來說就是從最最基本的走路開始學起,培養起完善的編程思想,包括對變數的精打細算,對時間複雜度的精打細算,對代碼的一種強烈的語感。

是的,當你學完了一輪C和數據結構之後,再去接觸類似C++,P,Java之類的語言,你就會發現,很多主流的語言都用了類似的編程思想,差不多的實現方式,數據組織方式也大同小異,上手的便捷程度不是一般可以想像的,就好像Java和C++,對於一個沒有學C的人來說,就是兩門不相干的語言(這個觀點來自我一個都技校的同學,他是直接學C++),當對我來說就是同一種東西換了不同的說法,這種語感對於以後要學習大量新語言的程序猿來說無異於是葵花寶典。

所以結論就是,先學走再學跑,跑雖然快,但是沒有走這個基礎,不僅不能舉一反三地體會如何能跑得更快,萬一摔倒了怎麼辦,你能爬起來接著走嗎?

-----------------------------------------------------分割線-----------------------------------------------------------------------------

補充:首先,學什麼語言來入門都可以,只要是一門成熟的高級語言,但我的核心思想是:演算法很重要!炒雞重要!!編程=演算法+數據結構,這個應該是沒有什麼爭議的,什麼語言都一樣,所以初學者如果已經堅定了自己的信念和興趣,已經脫離了培養興趣的階段,那麼我想,從初學就開始接觸演算法實現和數據結構實現一定是個不錯的選擇,是的,C++和Java和Python都已經給了非常成熟的函數和方法給你們直接用了,這是否有利於演算法的學習呢?演算法實現實際上就是一個過程的模擬,很好,C語言就是個面向過程強調過程的語言,如果你拋棄了C++,P的函數和工具包來學習數據結構和演算法,當然就什麼語言都OK 啦,但那不等於是C語言嘛,再加上現在C語言仍然牢牢佔據排行榜第一,學習價值非常高,又何必不從C語言學起呢?

然後就是,評論區我都是就著別人的問題來討論的,所以有時候有很多不太嚴謹的說法,可能會帶給一部分人誤會,實屬無意,只是因為你沒有在那個思路上,換位思考一下應該能懂我想表達的核心思想的,細枝末節的字眼就不要太糾結了,如果有定義錯誤或者原則上的錯誤,請一定指出,畢竟我也是一名求學者,沒有辦法做到事事精通,還請各路大神體諒。


你們一個勁的說這好那好的,忽略了樓主是個高二的娃娃。娃娃基礎最重要,到大一的時候c語言能熟悉就很好了,大二一般開c++課,大四能熟悉就不錯了。大學期間抽空學學python,用django做做小網站之類的。到畢業你就是牛逼的應屆生了。學c和c++還有重要的一點是,這都是專業課,學好了,大學成績就不會差,說不定參加個比賽拿個獎,然後保個研,多好的路。研究生畢業了,你說不會c語言,我靠,回去重讀吧。所以說,c早晚要學,不如早學,果斷c語言開始,寫寫演算法之類的,算是個入門。


專心高考,考完了再開始學習。

首先,C/C++/Python學哪個都無所謂,但他們都不是基礎,基礎是數據結構,微機原理,資訊理論,也就是數學

語言層面上,建議你先學Python,興趣很重要,能快速做出東西,有成就感,建議參考Python教程 - 廖雪峰的官方網站。

一個合格的軟體開發人員,至少掌握&>3門語言,學完Python,可以繼續學C,Java,JavaScript,Lisp等等。


有個詞叫,類c語言,

一定程度上承託了c語言的地位,,,


我是從 qb 開始的,這門語言早就絕種了吧。

然後是 java 學的 oop,之後才學的 c++。

所以我個人還是推薦 python 起步,有一個程序的思維了之後,再切 c++ 或者 c。

不過個人感覺 c 稍微有一點複雜,而且這些複雜對於你之後理解程序的效率幫助一般般。所以更推薦 c++,當然,不要用庫,自己寫演算法和數據結構。

如果剛上手就是 c++,我個人覺得有一些語法,比如 for(int I =0; I

但是沉迷於 python 的簡單語法,不了解指針啊動態定義啊等等基本的計算機理論,python 也是不會寫好的。


糾結毛線,哪本便宜買哪本。


做好一個心理準備吧,五到十年後,Python 這類工具性的語言將是基本能力,類似於現在的ppt和word的使用能力。

想學軟體,那麼就選一種學精,都行


C++毫無懸念的被排除了。這不是因為輪子,而是因為這不是一門可以被學習的語言。C++是一門工程語言,以後你有錢了可以買本字典每天好好學。

至於C還是Python, 這其實是在看你是想做中國人呢,還是美國人。

中國人就學C吧。幾乎所有985,211都開設C作為全校通選計算機入門課。你不學C,就是在否定他們的教育正統。在中國,這要命。許多學校,教育正統就是他們的根。

美國人的話,識時務為俊傑,你學Python。 學完了自己知道怎麼繼續學C。「學了python之後再學c是否會有影響?」。「這個問題堪比「產婦不做月子會不會落下病根」,「產婦不喝高湯會不會沒有奶」。這些只有落後國家在特定時期(缺乏糧食,缺乏必要的衛生手段)才會問的問題,就不要在知乎上問了。


高中生的話從C學起或許比較好

首先,C++過於複雜,初學者學的話很容易學一點混一點,作為入門過於吃力,排除

現在是C和Python二選一了,讓我們來對比一下。

Python的優點在於,入門簡單,庫豐富,語法精簡,可以很容易的寫出比較有趣的東西。缺點在於,Python的各類東西太過於齊全且隱藏了許多細節,不利於初學者對於一些很基本的概念和問題(如內存,地址等)有直觀的體會

C,優點在於語法簡單,可以用於信息競賽,缺點是過於簡單以至於稍微大型點的東西就沒有需要第三方庫或自己實現,貼近底層所以對底層不了解時容易踩進一個又一個的深坑,不那麼容易能寫出有趣的東西。

看起來Python更適合新手,確實是,從Python入門比從C入門在開始的階段要容易的多,可過了最開始菜鳥期,該遇到的問題一個都不會少的,這不過是推遲了瓶頸。因此我覺得Python更適合那些急需學會編程去做一些簡單工作的人。

而題主作為一個高二黨,學編程明顯不是一個很著急的事情。再加上你以後想讀相關專業,那麼這就是一個很長期的事情了。我覺得,在時間不緊迫的情況下,學習C對後續發展更有利。學C過程中遇到的種種問題實際都在加深你對計算機的體會,這個對於後續許多課程都有著比較大的幫助。同時,學習C可以讓你有更多的機會去實踐一些基礎的演算法和數據結構,這個對後續發展同樣有著很大幫助,而且還可以用來參加信息競賽,一舉兩得。

綜上所述,如果不著急的話完全可以從C學起,如果急著能做點小玩意的話Python是個不錯的選擇。


別聽那些人瞎說,從 c++ 開始,你不會後悔,他們覺得 Pyhton 簡單是因為他們中的大多數在接觸 Python 之前已經會其他語言,那些推薦你把 Python 作為入門語言的人,你先問問他們第一門語言是 Python 嗎? 大多數都不是,有從 c++ 轉過來的,有從 java 轉過來的……,各種各樣的都有。不建議非教育行業的程序員隨意給人學習建議,程序寫的好不見得能教好。再說了,程序員隊伍中應該有超過 60% 的人是在做偏工程類的項目,對編程語言的了解其實有限。


我覺得語言不是重點,重點是你要學哪一門課。語言是為你學的那門課服務的。


既然還這麼年輕,那就按照asm,c,c++,p的順序來吧


推薦閱讀:

為什麼編程語言中,循環計數器的默認變數都是「i」?
C 語言中字元串常量的好處在哪裡?
C 語言如何判斷等差數列?
在C語言中,math.h中定義的各種數學函數在電腦上具體是怎麼實現的?
數據結構中所講的動態分配的數組如何在 C 語言中實現?

TAG:Python | 編程 | C編程語言 | C編程 |