理科生,211畢業,最近時間空餘,想學習編程,無it基礎,有過人推薦下怎麼自學比較好?
以前學習生物相關專業,畢業3年了,目前這段時間空餘,想在冬天裡提升下自己,學學編程。感覺自己能靜下來。想充電提升下自己,請各位大神多指點意見,推薦下學習編程的步奏,相關順序的教材,另外,我這種零基礎情況是否需要報個培訓,如果有必要,請推薦一家機構給我,並附理由。謝謝。
如果英語讀寫流暢問題不大的話,去edX/Coursera上找一個編程入門的公開課即可。這種課數不勝數,質量都是有保證的。
Introduction to Computer Science and Programming Using PythonProgramming 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(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 這類編程學習網站能夠有效提高編程水平嗎?
※程序員工作只接觸一些不需要高難技術的小項目,該如何提高自己?