理科生,211畢業,最近時間空餘,想學習編程,無it基礎,有過人推薦下怎麼自學比較好?

以前學習生物相關專業,畢業3年了,目前這段時間空餘,想在冬天裡提升下自己,學學編程。感覺自己能靜下來。想充電提升下自己,請各位大神多指點意見,推薦下學習編程的步奏,相關順序的教材,另外,我這種零基礎情況是否需要報個培訓,如果有必要,請推薦一家機構給我,並附理由。謝謝。


如果英語讀寫流暢問題不大的話,去edX/Coursera上找一個編程入門的公開課即可。這種課數不勝數,質量都是有保證的。

Introduction to Computer Science and Programming Using Python

Programming in Scratch

不推薦任何一本書或者一門語言的原因是。。對零基礎的入門者而言光靠看書練習太難了。學習這種事還是低估一下自己的自制力比較實在。。有導師授課視頻,有lecture notes/slides翻閱,有討論區可以提問和交流,還有固定deadline的編程作業,這些對新手的助益很大。


C++Primer 5th + VisualStudio 2013 Community


本人不推薦入門書,真的沒有這個能力鑒別。

第一:我好久不買這種書看了。怎麼給你們推薦阿。

第二:我也沒時間看書。天天看兩孩子,你以為鬧著玩呢?

你想入門抓本書,報個班就入門了。重要的是行動起來。

打個比方:你想健身,先是糾結於跑步還是游泳,選了跑步,還要糾結跑鞋。

你剛入門,去XX農買個200塊就能跑。謝謝。

別私信了問看啥入門了。乖~~~~

另外,那種動不動就一二萬的班就別考慮了。我也不知道 碼農培訓那家強,謝謝!

+++++++++++++++++++++++++++++++++++++++++++

我勸你別聽輪子哥的。輪子哥不是你能模仿的。

要學東西,當然是要不斷有正向刺激,才有動力堅持,也就是循序漸進。

我建議你學android手機開發。

第一 java比c++好上手。c c++ vc 的區別就夠你喝一壺的了。

第二 手機開發容易做出東西給周圍人看,提高你的自信。

另外再說幾句。知乎大多數人都看不起培訓機構。所以一般這種問題,多數人的回答都是出個逼格很高的書單叫自己看去。

我認為,樓主應該花錢去學。編程這東西說難不難,說簡單不簡單。因人而異。有人一個函數調用就要理解半天。有人一點就通。樓主畢業3年了,估計有一定的經濟能力了,相反時間才是最寶貴的,花點錢讓人帶你入個門,真的會節省很多時間。

還拿Android開發舉例。 你自己去下SDK,就得會翻牆。想翻牆就得會配VPN。好多初學者都死開發環境的配置上了。而這些又和編程關係不大。你去花錢學,會省下很多你找資料,找SDK,下載等待的時間。

利益相關

C# 開發人員,兼職講兩次課。


做為一個EE專業(通信工程)卻投身CS的人,來多說幾句,希望有幫助:

1、編程語言:

a) 個人感覺看著習慣、用著順手很重要(當然也與對應的工作職位有關);

b) 要想操作一個操作系統OS(默認Unix / Linux),腳本語言非常有必要,推薦Bash / Zsh,包括《sed awk》,一行shell可以搞定的,也不需要十幾行C / C++ / Java;

c) 要想深入學習並理解一個OS,這時C是必須的,推薦KR的;另外還有一個簡單易懂的:《How to Think Like a Computer Scientist - C Version》;

d) 覺得可以按個人興趣和工作崗位對應一下,如果以後台開發為主,則C++ / Java;如果以前台為主,則Python / Ruby / PHP / Perl;如果是 系統管理SA / 資料庫管理DBA,則Perl / Python;如果數據處理 / 統計分析 / 金融 / 生物,可以考慮Perl / C++,小眾的像R / Matlab / Processing就不多說了;

e) 這裡要單獨提一下"正則表達式",可以做為一種工作生活技能,最好可以掌握——《精通正則表達式》(Mastering Regular Expressions 3rd);

f) 實際工作中,很可能會遇到數據前台展示的情況,Web方面的東西可能在語言學習過程中會被忽略掉。可以從LAMP或Ruby on Rails入手,自己搭建起一個環境,然後使用些框架或模板,隨便折騰,邊學邊實踐,直接可以看到可視化的效果,對新人來說,是個不錯的開始;相關資源推薦:開源中最好的Web開發的資源

g) 對於純粹的初學者,可以考慮多接觸下Python,入門易、風格佳~~推薦《Python核心編程》;

h) 關於編程理論方面,推薦《程序設計方法》《計算機程序設計與解釋》

——以上言論,只是個人工作感悟,不涉及各個語言優劣哈~~

2、操作系統:

a) 嚴重推薦一本打基礎的書籍:《深入理解計算機系統》(Computer Systems - A Programmers Perspective)

b) 對於Linux / Unix不太熟悉的新人,《鳥哥的私房菜》系列,用來入門,是個不錯的開始,主頁是:http://linux.vbird.org

c) 入門後,進階可以看:《Unix環境高級編程》

d) 網路編程方面,推薦:《Unix網路編程》(第1卷)

——其他的沒有深入看過,道聽途說的就不推薦了。

3、資料庫:

a) Mysql做為LAMP中的M,因其開源以及易用性,在IT互聯網公司使用最為廣泛。在應用實踐方面推薦:《深入淺出Mysql》

b) 實踐:《Apache+MySQL+memcached+Perl開發高速開源網站》、《PHP和MySQL Web開發》

c) Oracle:《Database Concepts》、Thomas Kyte的《Expert One on One: Oracle》,中譯本為《Oracle專家高級編程》

c) 在海量數據處理方面,以Hadoop為代表的NOSQL至少需要了解下:《Hadoop權威指南》,其他的HBase / Storm / Spark可大概做了解。

4、數據結構:

a) 《離散數學及其應用》(Discrete Mathematics and its Applications)

b) 《演算法導論》(Introduction to Algorithm)

c) 《C演算法 第一卷:基礎、數據結構、排序和搜索》(Algorithms In C:Part 1-4 Fundamentals,data structures,sorting,searching)

——只折騰過很水的數學建模,這些書零散看過一些,只能說,對演算法大牛無限膜拜~~~

5、再提2個網站,一個是http://udacity.com,一個是http://coursera.org,都提供免費的在線公開課程,很多功課全球幾十萬人一起學習。

附上一些經典的視頻資源:

UCB所有學期的所有有錄像或者錄音的課程的錄像和錄音都在這裡

http://webcast.berkeley.edu

UCB的CS課和EE課的所有課程的資源列表,能夠有的都有了

http://inst.eecs.berkeley.edu/classes-eecs.html

UCB的CS課和EE課的測驗和考試的官方題庫(這個比較少人知道吧),部分含solution。有興趣的同學可以做一做……

http://hkn.eecs.berkeley.edu/exam/browse/

斯坦福大學的「Stanford Engineering Everywhere 」免費提供學校里最受歡迎的工科課程

Stanford School of Engineering


只是想體驗一下編程樂趣又想能夠做點小玩意無疑python是最為新手友好的(我覺得只有這個特性我永遠覺得python完爆別的語言)

如果真的想入it我覺得java和c++都挺好,c雖然語法簡單但是寫起來太讓人煩躁了…而且學c++也完全不需要先有c的基礎


要看你職業想幹什麼,如果會統計加一點python或R干生物統計應該也不錯。如果是做前端,可以自己開個github, 每天做一個page. 一開始做得很簡陋,不好看也沒關係,慢慢多練習就好了。這是兩個例子:Thuongvu HoJennifer Dewalt 同樣的道理你可以每個星期/每個月做個app, 慢慢找到你喜歡做的東西。等你真正有興趣了之後再學學演算法,體系結構之類的。另外我覺得可以結合你的生物背景做點相關的開發也是可以的,生物信息學之類的。學到的東西就是自己的,生物雖然不好找工作,但那也是技能,說不定就有用處。國內專業軟體(石油,機械..)的開發上不來就是少了有專門領域知識的程序員。


謝邀。既然也只是學著來當業餘愛好,那就隨便買本書看看就好了。

推薦Python:《Learning Python》-- O"Reilly


人生苦短,我學python。

Python語法簡單容易理解,在比較流行的語言里庫也算比較全的了,比較容易寫出功能強大的代碼來。

參考的資料入手一本《python核心編程》即可,這本書全面而詳細的講述了各個語法特性,對初學者足夠友好,隨著學習的逐漸深入遇到問題可以去參考官方的文檔。


1. 編程語言

這個取決於題主學編程的初衷。

(1)Javascript(簡稱js)

如果是因為好奇想寫些簡單的東西爽爽。

優點:上手周期短,不用特殊開發工具,不需編譯。幾行代碼就可以實現網頁端程序。

成就感來的很容易,而且進一寸,有多一寸的快感

如果想體驗上手的快感,甚至可以跳過js,先學習全世界最流行的js庫——jQuery,先體驗有多爽,再反過來學js語言。

缺點:語言較低級,不夠高大上,不夠裝逼。

需要額外學習一點點Html和一點點css。

(2)Python

比js再深一點 可以了解一下動態語言,推薦Python,語法簡單,能力出眾,最近比較流行。

一張圖入門Python

(3)Java或者C#

大語言,還是推薦先從Java或者C# 入手,入門相比C C++容易,而功能足夠強大,應用廣泛。

如果選擇Java,無論Web開發、服務端還是Android開發,有比較大的選擇空間。

(4)C

作為最有生命力,影響力最大的編程語言,C語言很有必要了解,了解之後才會明白內存管理、指針這些在Java中不太關注的但很重要的東西。

關於培訓

1 有時間 有金錢,參加培訓的效果是比較最明顯的,如果有穩定工作,學編程也只是為了興趣或者充電,並不需要走培訓這條路。

2 自學

a 書籍。《21天掌握XX編程》這種書可以看21天後扔掉,比直接看《XX編程思想》適合上手。

b 視頻教程,在線或者下載觀看。我曾經幾年前下載過尚學堂馬士兵講的JavaSE及JavaEE課程,如果對Java有興趣,推薦此人的課程,還不錯,不知道現在能不能找到了。

c 強大的MOOC形式,現在國內外有很多mooc網站,比如慕課網-國內最大的IT技能學習平台

d 以上可以全選

學習編程不只是學習一個語言。

例如做Java web開發,除了學Java,還要學XML(各種軟體開發必需)、資料庫SQL,了解前端(Html CSS) 、伺服器端(如Linux命令)、以及相關的很多協議等(如Http協議)。

這不是簡單一門語言就完成所有事情。

最後一句,選什麼語言,什麼學習方式,還要看題主的初衷。

最好先了解自己的想法,再好好了解編程是什麼,學習編程需要什麼條件,再做決定。

利益相關:普通Java工程師


python入門 推薦coursera上找找python的課 以前有多倫多大學和rice開的 不知道現在還有沒 並且coursera需要翻牆

google cmu15112 看課件做作業

如果為了了解下python就夠了 否則考個master吧


在很多網路技術公司待過,我們招人有這樣一些特點:

1,我們在找同類人,找和我們一樣的人。後面的任一點都可能讓我們覺得面試者和我們一樣:外在穿著內在談吐;和我一樣認為蘋果企鵝的產品體驗超過同行業其他家,並能舉出一些例子;當前的一些熱點問題,並有自己的見解,當前程序員社區里的一些常用詞常用語;和我相同的興趣等。

2,我們要能解決問題的人,方法永遠比問題多,不斷嘗試去解決問題,看手冊,Google,社區,加群問人等。

3,有一定編程思想的人。可維護的代碼很重要,可讀性強的代碼比加了很多注釋更易維護。寫高效的代碼,但不是通過縮短命名或更多使用自增來縮短代碼。性能安全和使用安全。

4,演算法基礎,邏輯思維能力,邏輯分析問題,並能用自然語言表述出來。

5,語法基礎,能把自己所想用編程語言表達出來。

對的,我們更看中綜合能力,我們認為,語法容易學習,而一些壞習慣不容易改卻致命。

建議題主首先理解計算機,了解現在的主要應用以及用戶邏輯,選一門適合自己的語言,從一開始看書就開始實踐,在實踐中感悟編程思想。

題主如果用iPhone,建議學Object C;如果用Android手機,建議學JAVA做Android。起薪都很高,很容易找到工作。現在移動互聯網和互聯網金融很火,學HTML 5和PHP或JavaScript。

時間多,三個月足夠學會,並找到工作。

目前的培訓機構教得太呆板,培訓只是浪費時間。

建議找個熟手手把手教教幾天,其他時間自己看書練習。

答主本人在開發一個線上的培訓系統,實現手把手教的效果,先毛遂自薦。


題主寫到提升自己,看得出對編程或者軟體行業有著濃厚的好奇心,想了解計算機軟體相關的知識。

先把學什麼編程語言這個問題放一邊,就像進入任何領域之前,得先入門,對這個領域有個概括性的認識。這個階段,計算機科學導論 (豆瓣) 及類似的書籍,類似哈佛大學公開課:計算機科學導論這樣的公開課都應該是不錯的選擇。

在那之後還對編程有著熱情的話,挑個類似學習編程 | Codecademy及慕課網-國內最大的IT技能學習平台等網站開始學學簡單的編程。

如果到這一步還覺得編程有趣的話,那就可以根據之前學到的知識挑個自己喜歡的語言進行深入學習,順便看看演算法、數據結構、設計模式等等的和編程相關的通用性的知識體系(書單推薦知乎上搜索有很多)。在學習的過程中,有什麼不懂的就google,慢慢的也就對這些生硬的知識熟悉起來。

相信在這些摸索的過程中,慢慢的你就會對編程有了自己的見解。

最後附贈網上看來的趣圖一張:

/*PS: 本人只是一個菜鳥程序員,以上答案僅供參考。*/


其實我很想問樓主生物畢業三年。這三年做什麼工作?


還是從需求分析入手,樓主的目的是為了充電,而不是短期內靠編程謀生,可以考慮比較輕鬆的入手方法。

從最容易上手,最容易看見效果的編程語言上手。個人覺得可以考慮python或者javascript(0基礎的話,請繞行C/C++/Java/Haskell/C#)。有很多做生物相關計算的專業人士使用python,相關的資料和論壇網上也很多。Python可以作為一個高級計算器來入手,學習編程的一些基本概念和方法。javascript的話,由於網路瀏覽器的原因非常普及。寫完以後可以立刻在瀏覽器上進行測試,並看到結果。不論哪種語言,最好是從樓主熟悉的應用領域入手,這樣比較有動力。

選好語言以後,找個網上的教程或者買本書。每學一點就要立刻做習題鞏固,好的教程和書都會有配套的習題或者project。如果能按部就班完成一兩套教程或一本書,那時樓主可以考慮一些更加深入的東西。在完成這些之前,不建議做進一步的打算。



Java C++ 千萬不要搞.

總之先入行最重要.最快入行當然要功利一點.

既然你是學生物的.

從Python入手很不錯.全身心投入半年找個工作再補補基礎

然後開始跳槽加薪打怪升級的道路.


編程這種事情主要靠實踐,只是看書看別人的代碼,不去真正的接觸一個實際的工程,是很難學好的


半路出家的程序員的經驗----如果你只是興趣使然,不打算從事軟體工作,那麼隨便學什麼都行,建議學學python,好學好用。如果你打算以此養家糊口,盯住java一門語言學,千萬別從c,python什麼的學起。java入門後,可以學javascript。這兩門語言足矣。其他的語言,在你成為職業程序員以後再學。再強調一下,認為學軟體開發必須從c學起,大謬。


感覺樓上都不怎麼靠譜。都有點假設題主已經是馬農行業了,或者像輪子哥這種天賦型選手。

從我個人來看,興趣是第一位。不一定要有輪子哥那種牛逼的底子,只要有興趣就不錯。可以從微軟的http://VB.net或c#開始接觸。我就是初中時玩C++玩不動,後來發現vb才是真愛,因為可以快速構建帶GUI的程序,提升興趣。還有現在各種在線的編程學習課堂,也可以幫助你確定興趣和天賦。

如果感覺學的還蠻不錯,就可以接觸Python,js一類的腳本語言玩玩。我現在就是以js和HTML5開發為主要職業方向和興趣愛好了。

等題主真正確定有興趣了,就可以按樓上說的,C++ primer,java設計模式,演算法導論,編譯原理,圖形學等等。

當然,假設題主是天賦型選手,就直接上C++好了。


理工類 我比較喜歡從C或者是彙編開始學 第一畢竟是理工科生 對於很多物理 數學的知識儲備還是有的 在學彙編的時候 可以很清楚的知道它們的工作原理····比較便於入門···


推薦閱讀:

有誰是單純地喜歡編程嗎?
自學編程的人,都是怎麼找到第一份軟體開發工作的?
有什麼好的學編程的網站或者是軟體?『編程入門』?
使用 Codecademy 這類編程學習網站能夠有效提高編程水平嗎?
程序員工作只接觸一些不需要高難技術的小項目,該如何提高自己?

TAG:程序員 | 編程語言 | 編程 | 編程學習 |