25歲了,從未接觸過編程,還可以把編程作為愛好培養嗎?

經濟碩士在讀,發現對編程挺感興趣,想想如果自己也能編程序該多有成就感,只是考慮到年齡、時間、和入門難易問題,所以來請教各位,多謝回答,還有可以按著考試的路線走嗎?先二級然後三級?如果每天投入兩個小時,哪個考試級別以及多久能稍有成效自己能編小程序呢?


給跪了,都是圍城,經濟學碩士我羨慕的要死~


24學的,先學cpp,艱難的數次想放棄。現在用的比較多是python和lua了。無論學什麼語言,第一門都是最難的,考慮到易用和通用的平衡性,python是最佳入門,每天兩小時是夠用的,保證好就沒問題。不要輕言放棄,也不要因為別人說你就放棄,他們只是自己做不到而已。


我21歲才開始真正編程,一開始用Shell,後來用Perl。24歲才開始用C++。

考級有毛用,沒聽說過哪個程序員還拿這個當回事的。

其實書本上的練習題也只對於完全的初學者有用。我只在大學裡上C語言課的時候做過習題,後來完全是需求導向的。

==========

再補充一些:

1:建議你從腳本語言入門,比如Python、Ruby、Perl。不要上來就學C、C++,那根本就不是初學者能正確理解的。比較推薦Python,語法比較精簡,而且科學、數學庫比Perl要強。

2:編程要需求牽引,否則學起來會有漫無目的的感覺。你可以嘗試把編程和自己的研究內容結合起來。


Dave Cutler像你這麼大的時候才剛開始學編程,才過10年就成為矽谷最牛逼的內核程序員。顯然只要你努力的話,拿它混飯吃都沒問題,我就不要求你成為最牛逼的那個了。

有很多人都對Dave Cutler學編程之前幹什麼很有興趣,據他自己說,他那會兒想著畢業了之後出來蓋房子。當然後來沒蓋成。


如果我喜歡一件事情,是不會問別人可以不可以,而是直接去做的。


唉,你們這些高智商的就是愛糾結啊。。。

首先明確一點:既然咱談的是愛好,那咱的目標就一個——為了爽!

題主是連看個電影都會先搜下影評的那類人么?

「《XXX劇》貌似很好火,但有聽說是個爛尾,不過 尼古拉斯凱逼 參演哎~ 想看,又糾結,怎麼辦呢?上網看看大家的意見!」

(有搜索影評的功夫,電影早看完了)

看電影圖的是一樂兒,花費掉的是時間與精力,你害怕自己看完電影沒得到樂趣,白白浪費了時間,所以會糾結。

好了,再扯回到本蛋,(⊙o⊙)…扯回到本題...

題主現在糾結要不要學習編程,跟看電影之前糾結影評是同樣的道理。

咱可以在做選擇的時候浪費一點時間,但千萬別淪陷到糾結里,那就一點意思都沒有了。

何況咱現在僅僅是挑個愛好而已啊,你就上手學唄,又不排名次又不奪金牌兒的。

咱有糾結的精力興許早入門了,別說helloworld,保不齊水仙花數、閏年啥的都會寫了~

我周圍也不少題主這樣的朋友(我發小就是),他每次一糾結要不要幹什麼什麼的時候,答主都會心平氣地跟他說:

「活得真?墨跡!要麼干,要麼滾,糾結個屁!」

綜上,我對「可以把編程作為愛好培養嗎?」的回答是:

「你可以把編程作為愛好培養,但你不可以問可不可以...」,墨跡這麼多,就是希望題主別把時間浪費在糾結和自我懷疑上,沒勁。

接下來說說 「可以按著考試的路線走嗎?」

再次明確一點:既然咱談的是愛好,那咱的目標就一個——為了爽!

題主說的二級三級指的是「全國計算機等級考試」么?我們這簡稱「國二,國三」。

的確,這考試是沒啥用,但那是對於職業程序員而言,咱現在的目的是為了爽!又不指ta吃飯。

所以你從國二考試開始學起我覺得也沒什麼不好的,起碼簡單啊~不涉及太深的東西讓你學起來也輕鬆,比什麼《C和指針》啊《c++ primer》啊作為入門教程合適,國外經典的確好,但不一定適合你,等入了門上了感覺再看不遲,何況咱是為了爽,普通玩家沒必要一上來就選「上帝模式」的。

對了,還有一老大爺叫譚浩強,他的書也簡單好學,講得不深(我認為這對你來說是優點)。推薦你譚老爺子的書。

雖然不知道你為何一見鍾情C/C++,但還是順手給你推薦個編譯器吧,Dev C++,小巧好用,VS太大了,一安安半天,把咱興緻都磨沒了。

vs _百度百科

另外關於題主說的路線以及所謂的小程序,老夫再欠一句長嘴,簡單說說那些技術能做那些程序:

(以下對於剛接觸程序的孩子可能有點用吧~)

你學C,學C++,學完了也就能做做跑在終端上的小程序,小黑框+白字元很快就滿足不了你啦,你會渴望色彩,會渴望一些高級的交互,那麼剛學完C及其加加的你剛邁過編程的門檻,就又要面臨選擇了,是繼續學習開發PC機上的程序呢?還是學著去做手機app?或者做個網站也不錯?咳咳,既然咱哥們都嘮到這兒了,那咱就給你挨個說說:

首先,PC機器上的程序,如果你想繼續學習windows平台下的桌面軟體開發(這裡就要用VS了),那麼接下來等待你的將是一個優秀的超人氣過氣組合MFC+windowsAPI,MFC是個好東西,只是現在不流行了,學習難度不大,但樂趣很多,學成之後,你能做windows下的桌面軟體,譬如什麼計算器啊,是男人就下100層啊,記事本啊鬥地主啊神馬的etc,這些用MFC就能做,不太難,但挺有意思的。再高端點的像qq啊,酷狗音樂啊,那你還得具備些專業知識,譬如做QQ,那起碼你還得了解下網路,了解了解TCP/IP啊,FTP啊巴拉巴拉的,或者你想自己給自己做個單機播放器,那就去看看多媒體流,解碼器方向的知識;我是用來提醒你這裡有分號的句子;另一套用於windows下程序設計的方案是C#配.Net,也是微軟的親兒子,上面所說MFC能幹的事兒ta都能幹,但又由於Mono的存在使得.Net的可能性被無限放大,對了,這種方案需要你熟悉另一種程序語言C#,不過當你掌握一門編程語言之後,再學其他的就很快啦~

想進一步了解Mono的同學請移步: Home | Mono

啊啊啊,想起來要提醒你啥了,你在自己寫桌面程序的時候肯定要用到不少素材,譬如圖片,音頻等,網上不容易找到100%可心的素材,所以還需要你自己get點PS啊,錄音啊什麼的小技能~

windows平台下的桌面軟體開發:

評價:難度 2 樂趣 5

路線一:學習C++ 》》》 學習MFC 》》》 寫windows桌面程序玩 (偶爾用到一兩個原生windowsAPI)

路線二:學習C# 》》》 學習.Net框架 》》》 寫windows桌面程序玩 (極其偶爾用到一兩個原生windowsAPI)

其次,還是PC機上的程序,但桌面上的玩具已然刺激不到你的G點,想做點褲褲的東西,3D遊戲不錯,你打算試試,但這個要求你C++水平相對要更紮實一些,不然你很容易瘋,在你對C++水平充滿信心之後,就可以嘗試用OpenGL自己畫東西玩啦~這一過程也正好能幫助你學習計算機圖形學的知識,當你感覺差不多的時候,就可以挑一個你看著順眼的3D引擎去熟悉,下一步拿著官方賞的文檔和列子自己捅咕。

大遊戲公司用的引擎通常都自己開發,這裡介紹三個廣為碼猴子知的引擎(民間主流)

ORGE、D3D、Unity3D

哦對了,你是自己玩,所以你還得會用3DMax建模,ORGE跟Unity3D都能導入3DMax建好的模型。

ORGE開源,但這個確實複雜,不好上手,第一次自己編譯源碼就很費初學者的精力了。

Unity3D不開源,但是極其好上手,而且用js就能給他寫腳本,而且也能用來開發手游(神廟逃亡就是用這玩意做的,I remember)

OpenGL:OpenGL - Download

ORGE:OGRE – Open Source 3D Graphics Engine

D3D:DirectX SDK - (June 2010)

Unity3D: Unity - Game Engine

3D遊戲開發:

路線一:學習C++ 》》》學習OpenGL順帶計算機圖形學的同時繼續學習C++ 》》》get技能3DMax 》》》拿著官方手冊及示列熟悉ORGE/D3D的同時繼續順帶上計算機圖形學以及不懈地學習C++ 》》》寫3D遊戲玩吧,創建你自己的虛擬世界(還得繼續學習C++及一直順帶的計算機圖形學)

評價:難度 5 樂趣 7

路線二:學javascript/C# 》》》get技能3DMax 》》》U3d玩起~

評價:難度 1 樂趣 7

Linux:略

再就是手機app開發啦,題主若有雅興自己弄個小應用哄女票開心,效果也是蠻溫情的~

額。。。累了,今天先寫到這吧,有功夫回來再補;

列個接下來的提綱給自己:1.Android跟IOS,搭建安卓開發環境麻煩一些,SDK下載超慢,IOS到是挺簡單的,就玩起來是貴了點(提醒大家珍愛腦細胞遠離黑蘋果),2.說下互聯網應用,PHP,JSP以及http://ASP.NET(python,ruby啥的我不了解,話說Django不是被解救的那傢伙嘛?)

記得提醒題主從前端開始,學下html,javascript啥的,給出W3C自學網址:w3school 在線教程

針對題主「成就感」的需求,介紹SAE:首頁 - Sina App Engine,以及用這個做網頁應用的路線(挺有意思的),現在挺多微信公眾主頁的程序都是掛在這上面的。

最後再總體補充幾個要點:資料庫,通信,文件(尤其是xml真挺好用的)

題主在問題描述里還有一句話「如果每天投入兩個小時,哪個考試級別以及多久能稍有成效自己能編小程序呢?」

我簡單吐下槽,編程不是背外語單詞,這完全是兩回事,編程需要你用整片的時間去思考、去敲代碼,中途思路被打斷是有可能要出人命的!

這裡只是幫題主旅一下學習編程的思路,不同的技術干玩法不同,各有優勢,我把我知道的一些比較有意思的技術簡單做個分享,與題主共勉~

關於C#,有人說這是C++的升級版,所以我叫 ta C艹

雖然這個說法最初是用來黑C++的,詳見:該如何優雅地黑 C++?

其實學編程沒啥門檻可言,硬要說有,就是不自信和懶。


在知乎看到過一句話:

種一棵樹最好的時間是十年前,其次是現在


我19歲學c語言,然後學的是譚浩強書版本的,代碼質量你懂的,寫的都是if else for之內的代碼

20歲學會51單片機,然後到22歲一直用c語言寫單片機的低級程序,包括控制類DSP,然後本科畢業出去實習被別人黑成菜鳥。

22歲下半年開始接觸,c語言的科學與藝術,之後 c和指針,c專家編程,c陷阱與缺陷,c標準庫,數據結構,實時系統知道了什麼是基於對象,模塊化編程。

23歲能在帶實時系統的通信級DSP上,寫幾個大模塊結構化程序了。

24歲,漸漸感覺DSP路線走不通了,開始往ARM+Linux方向轉型,

24歲學了操作系統,計算機組成,Linux內核,Linux驅動,APUE等一些東西,正在邊學邊練習的過程中。中間學過C++和網路,不怎麼用,

忘得差不多了。

研究生都快畢業了,計算機方面還是在小本菜鳥等級,不怕笑話,還是計算機相關的自動化專業,沒辦法,只能在自己選擇的路上繼續前行。

繼續努力,珍惜學習機會

另外補充一些,雖然學習編程年齡大了,但是用最好的評分高的國外教材,專註方向,少有彎路,可能後來居上,比我們這種19歲開始學,但是走了不少彎路的人來說要強吧!


題主說是想把編程當愛好, 不是當飯吃.

既然是當愛好了, 那就不再乎什麼年齡不年齡了.

但是, 這個愛好有點貴, 要花時間花精力.


不需要走考試路線,考試純靠背和刷題就能過。兩小時時間太長不知道你是否能堅持,我覺得每天半小時如果能堅持的話,從有一點基礎的電腦操作開始(經濟碩士肯定會用電腦的對吧)大約一周時間可以做個像記事本那種擁有打開文件輸入文字保存之類的帶界面的小軟體。就從python開始吧,據說入門最簡單,花上一天的時間看一下語法(沒有c語言基礎的半個小時不夠),我覺得按照一般的目錄看到文件和面對對象編程那章應該就行了。第二天,按照書本上的小例子做一下練習,繼續熟悉一下語法。第三天的話我曾經用過pyqt做過小軟體感覺還不錯,你可以試一下。界面從無到有比較難但是用現成的控制項會比較簡單。先熟悉一下pyqt本身吧,控制項放到第四天學。第五天的話可以開始操作了,先畫個草圖確定好大概的樣子和要實現的功能,然後找好相應的控制項,可以從空窗口開始,生成一個空窗口,基本就完成了一半了。第六天按照草圖添加功能,完成之後測試一下,有問題檢查代碼,沒問題搞定。享受一切成功的喜悅,後面就是繼續夯實基礎,更深層次了解pyqt運行機制,有時間找開源代碼再看看,就是這樣。


我26學的編程,剛入職一個半月!


先把需求說出來,想往哪個方向?

如果只想考級,我看還是不要學編程了,考證的東西幾乎都是過時的,根本就是浪費時間!

經濟學,可以向數據分析靠,可以先從 python 入門,見效快,學學 numpy,scipy,入門了,還可以學習 R 語言,也挺容易入門的,

網頁編程的話,我建議可以從 Ruby 開始,雖然 php 和 python 也很適合,但是 rails 的編程方式可能更好影響你的未來發展!當然現在 javascript 如日中天,但是很容易讓你養成不好的編程習慣!

不過如果你沒方向,建議從 ruby 開始的,lisp 系語言對你的編程思維有很大的鍛煉!


題主怎麼不問,25歲沒錢,怎樣掙錢呢?路是自己走的,這種學習的東西,只有在走的時候才知道會發生什麼問題,而題主在沒走之前就開始懷疑了,(這樣畏頭畏尾的什麼事都是虛的)


想要快速做出「小有成效」的程序,可以學Python


Google發布了程序員養成指南,國內互聯網巨頭是否也有類似的指南和課程推薦?推薦這個


寫項目


不要讓愛好被考試消磨掉。當然考試狂魔除外。

建議做點小程序,成就感比考試證書應該高。

保持愛好是關鍵。


我也想學啊


作者:匿名用戶

鏈接:對編程有興趣但無基礎,如何成為一名程序員? - 匿名用戶的回答

來源:知乎

著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。

序大作戰,萌出一臉血!

非常開心生平所寫的第一篇博客就獲得了廣泛的讚譽,還有幸登上了編輯推薦,看來不僅是程序人生寂靜歡喜,博客生涯也是歲月靜好啊!在此還是把本人的傑作高掛:《程序人生的寂靜歡喜》,高調還是要有的,萬一紅了呢?你說是吧?

一. 引子

大家眼裡的程序首先是這樣的:

OMCS ——卓爾不群的網路語音視頻框架

namespace OMCS.Passive
{
// 摘要:
// 多媒體設備管理器基礎介面。用於管理本地的所有多媒體設備。
public interface IMultimediaManager : IDisposable
{
//
// 摘要:
// 是否根據音頻反饋以及視頻丟幀情況自動調整視頻編碼質量。
bool AutoAdjustCameraEncodeQuality { get; set; }
//
// 摘要:
// 掉線後,是否自動重連。
bool AutoReconnect { get; set; }
//
// 摘要:
// 語音視頻聊天組入口。
IChatGroupEntrance ChatGroupEntrance { get; }
//
// 摘要:
// 是否將話筒採集到的音頻輸出給Guest。
bool OutputAudio { get; set; }
//
// 摘要:
// 是否將桌面圖像輸出給Guest。默認值為true。
bool OutputDesktop { get; set; }
//
// 摘要:
// 是否將攝像頭集到的視頻輸出給Guest。 默認值為true。
bool OutputVideo { get; set; }
//
// 摘要:
// 當通道繁忙時,採取的視頻幀(來自攝像頭)丟棄模型。默認值為DiscardWhenNeed。
FrameDisardedMode VideoFrameDisardedMode { get; set; }
//
// 摘要:
// 剛剛從話筒採集的音頻幀。
event CbGeneric& AudioCaptured;
//
// 摘要:
// 剛剛播放的音頻幀。
event CbGeneric& AudioPlayed;
//
// 摘要:
// 與多媒體伺服器建立連接,並初始化本地多媒體管理器。 如果與伺服器連接失敗,將拋出網路異常。
void Initialize(string userID, string password, string serverIP, int serverPort);
//
// 摘要:
// 和目標用戶之間是否打通了P2P通道?
bool IsP2PChannelExist(string destUserID);
}
}

可是你並不會知道他們在我眼裡其實是這樣的——

OMCS ——卓爾不群的網路語音視頻框架

二.程序大作戰

1.所謂的:「OMCS多媒體管理器,用於管理本地的所有多媒體設備。」 其實就是這個意思:

2.所謂的布爾類型的屬性,其實就是一個個開關嘛,像這樣:

2.所謂方法,其實就是一個個按鈕,就像這樣:

2.所謂事件,其實就是一個個插槽,就像這樣:

2.所謂的布爾類型的只讀屬性,其實就是一個個指示燈,就像這樣:

2.另外四個連接器可以就像這樣:

二.萌出一臉血

OMCS ——卓爾不群的網路語音視頻框架

最後,將這個零件全部組裝起來,就成為了一個OMCS 客戶端了。是不是很萌呢?只要我們調整這些開關,控制這些按鈕,外接這些插槽,並觀察指示燈的變化,就可以將「阿童木」胸前的多媒體連接器發射出去,連接到遠程機器上的多媒體設備了!

運用形象化的思維,我們可以把原本很抽象枯燥,條分縷析的代碼,變得鮮活、生動而又富有趣味,大家在理解程序的時候也可以借鑒一下哦。

OMCS ——卓爾不群的網路語音視頻框架


在我開始學編程之前也有和題主一樣的疑問,首先我不是科班出身。其次,我也是年齡比較大才發現對編程還有些興趣。現在我已經轉行做編程方面的工作。我給題主的建議是,有興趣就立即去做去實踐而不是顧慮很多卻只是故步自封原地踏步。只有你開始做才會對未知的事物有進一步了解,也才有可能激發你更大的興趣。在實踐中去調整你的方向。

我當時做法是選一個編程語言,各個編程語言面向的應用領域不同,但是基礎的語法都有想通之處。在校生應該有很多富裕時間,每天兩個小時自學足以。不建議以考試的方式來學習,考試的內容太死板。建議在學完基礎內容後,結合實際來多練習。學習的目的是用來解決實際問題的。

先邁出第一步,然後你就知道改怎麼走了。


推薦閱讀:

編程除了學語言還要學什麼?
有那些好的github上c/c++學習項目?
為什麼一個MessageBox都要佔用18M內存?
在 n 個整數里,找出2個數相加等於 sum 的所有整數?
WPF是可行的C++程序GUI解決方案么?

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