標籤:

有沒有必要學C++?

24歲,研一,專業是力學,演算法方面的,感覺是純理論,對以後發展和工作不太好。

學過C語言(結構化編程部分可以,面向對象沒接觸過,現在在看C++),現在在用matlab進行數值計算。想多學一個語言,但是如果要開始去學的話,必定要付出很多的精力和時間。

所以想先多方面考慮考慮有沒有必要去學和現在專業沒有關係的一門語言(個人是持支持態度的,但是因為現在很多都不了解,所以無從選擇)

如果答案是肯定的,那麼學習哪門語言好呢?或者是這門語言所能做的工作主要是什麼呢?

以前學C語言的時候,只是做過一些小的練習,沒有做過大的項目和軟體,覺得收穫不大。現在感覺,如果想學一個語言,沒有目標的去學,沒有成就感和針對性,那麼這方面該如何取尋找?

網上搜索了一些資料,想聽聽大家的看法。


從大學二年級開始,糾結於學與不學的東西,最後我還是都學了。

以前學 C 語言的時候,只是做過一些小的練習,沒有做過大的項目和軟體,覺得收穫不大。現在感覺,如果想學一個語言,沒有目標的去學,沒有成就感和針對性。

提問者的這種感覺,說明還沒有找到感覺。我只從個人角度出發,希望不要打消積極性。我直到工作之前還沒有用 Java 寫過正式的產品代碼,只是一直在學,甚至小練習做得都不多。工作之後沒多久就獨自寫了一個 5000 多行的 GUI app。所以我認為一個真正喜歡計算機的人,「只是做過一些小的練習,沒有做過大的項目和軟體」不是問題,不會「收穫不大」。真正喜歡計算機的人「just play around with it」。沒有目標的去學,也有成就感。

針對性這個東西,Steve Jobs 在《Connect the Dots》里也說過了。


非軟體專業還是不要學C++了吧...

除非你真的可以投入很大的精力,否則:

0、寫的代碼沒法看

1、寫的代碼沒法用

(沒有足夠的學習經歷,用c++開發「大項目」簡直就是災難,

無論是對自己還是對別人)

如果真心想學一門新語言,建議學python:

0、強制縮進,容易養成良好的習慣

1、文檔豐富(雖然說好多是英文的)

2、社區大,成熟的第三方庫很多


重要的不是學習什麼語言,而是你有什麼問題需要用什麼計算機語言來解決。

只學語言的問題是沒有持續性的動力,因為沒有明確的目標和期限,一時衝動開始學,學了兩天就扔了。但要是考試或者交了昂貴的學費,你就不得不學,因為目標和期限都有了。

而如果你有一個問題或想法要解決,就試著去一邊學習一邊用,這樣學才是最有效的,也是最省錢最省時間的方式。

解決一個問題會不斷產生更多問題,逐漸增強的興趣,會激發源源不斷的動力,這是最持久的。

你是研一,可以參加各種開發大賽,谷歌、百度、騰訊每年都有各種大賽,結合你的專業,開發一套獨特的產品,或許可以拿獎。

研二到企業里實習,做一些項目,會提高更快。


既然有這糾結就還沒到需要學的時候。


1.學什麼語言要記住一句話:學以致用。如果未來研究方向或者工作後產品需要,那就學C++。如果還有時間想去鑽研點技術,那C++確實是不二之選。

2.C++是高級語言的基礎,也是面向對象最好的實踐之一。學過C再學C++,對於基礎性的演算法、數據結構、尤其是指針等是天然的過度。但面向對象對於你是全新的知識,這種模式思想需要仔細研究琢磨,打破舊思維、與結構化完全不同。

3.在圖形、通訊、驅動、嵌入式等太多領域,C++有著巨大的優勢,這是其他高級語言所不能比擬的。

4.C++的難學是很多人誤導的,是相對的難,是每個階段不平等對比的結果:

在C++剛流行的時候是跟C這樣的結構性語言對比,C++是面向對象,增加了太多的知識點,所以覺得難學。

中期是跟delphi、vb這種面向對象語言相比,C++的指針、圖形上的自繪等等,導致大家又覺得C++難、麻煩。

後來C++也出可視化編程,OWL和MFC橫空出世,剛跟delphi接近,但是又碰到了Java來做對比,於是又是難了。

自認為高效率、高性能的語言中佔地,但是Perl、Python等又冒出來了。

5.記得在02年有個項目,是C++與VB混搭的。招了10幾個畢業生,讓畢業生選擇進C++組還是VB組。結果全部都選擇VB,為什麼?還沒正式學習,就被不良的傳言給誤導了。這樣的傳言害死人。

6.學會了C++,再學其他語言,都會覺得輕鬆些。當然這不是絕對的。當初自問C++還算不錯,但是偶然一個項目,要用Perl,結果被Perl的華麗的正則表達式及語法給亮瞎了眼,很久都不適應。


以前用matlab做演算法性能模擬的時候,發現速度太慢,改用C寫關鍵地方的函數,提供給matlab調用,速度能快很多。


如果你的目標是做一個碼農,寫寫 GUI 維護一點已經成型的舊項目,那麼 C++ 是必修課。

或者,你想做一個編程語言方面的百科全書式的人物,C++ 是一個好的起點。C++ 是從 C 發展而來的,在基本沒有其它競爭對手的那段時間裡,為了工程和個人喜好不斷整合不同的編程範式。這種整合過程不斷讓 C++ 變得更強大的同時也變得更臃腫而怪異。理解這個語言、尤其是理解這個「Lv Up」的過程(如果玩過兄貴草泥馬,熟悉那個 Lv Up 過程,這個很像……)是很有趣的一件事。

如果你想要一些更有趣的事情(而不是把學習語言本身當做有趣的事情),Python 是很好的選擇。

  • 語言清晰易懂
  • 簡單易學
  • 直接可用的庫非常多

甚至包括你現在用 Matlab 做的許多事情,都可以嘗試用 Python 解決。Python (programming language): Why is Python a language of choice for data scientists?


別吹了,你隨便問個C++11的特性估計就掛了,別說模板元和泛型了,問個高級靜態new,針向函數指針的引用,函數引用包裝器,仿函數,cpp數組array,lambda,右值引用,智能指針。。。能會多少吧。


如果不是計算機專業的,完全沒有必要學C++,用C就足夠了,C++相對於C多出來的那些特性,對於一個非計算機專業的學生來說基本沒用。

還有一點,C++太複雜了,我認識的人裡面沒有一個人敢說精通C++,而如果只是熟練使用的話,C和C++的區別其實沒有那麼大。

如果真要學,我推薦LZ學一門腳本語言,Perl、Python或者Ruby,這些語言掌握起來都很簡單,至於這些語言能做什麼,百度一下就知道了。


建議換一門語言吧,搞搞Python、Ruby什麼的也比C++好。

Life is too short to program in C++.


還是問題驅動吧!平時需要什麼就學什麼。

沒有什麼是值得學的,唯有學習的能力是值得學的。


建議先學Java, 好學好找工作, 學起來對OOP的理解也比較規範. 務必把Java編程做到的熟練(不太難實現).

然後接下來根據實習和項目的需要, 學習Python和C++.


少林功夫情節,一門武功越難練,越有人練,練成了就一統江湖啊,C++擔當不起這種期望。


首先回答有沒有必要的問題,有必要學!但要學到什麼程度,這得根據你的實際情況。畢竟還是讀研,學學C++,了解些面向對象的思想,也可以加深你對C語言的理解,指不定以後工作中需要用到C++,到時你再用起來也知道方向。

加油!


C++ 傾向於系統編程及對性能敏感的大型軟體的開發

作為日常工具使用,建議 Python 或 Ruby

如果只是想學編程,保持在 C 上就很好(把 C 學紮實並不容易),未來若工作需要也可以較順利地轉到 Java 或 C#


用C的多是國內公司,用C++的外企比較多;語言有許多特性,尤其是面向對象領域;C語言寫的程序對維護要求比較低。C++不同,這也是國內非研發技術性的做產品公司常用C語言的原因。


推薦閱讀:

把編程語言娘化,做成氪金手游,可以怎麼做?
你用c++做過哪些意思的事?
OC 和 C++ 中聲明和實現文件分開的寫法有哪些利弊?
現在的編譯前端技術還是用NFA和遞歸下降實現lexer和parser嗎?
有什麼可以用raspberry pi做的或者實現的有趣的/有用東西?

TAG:編程語言 | C |