如何學習編程?順便介紹些好的網站

我是數字媒體專業的,數字也學,媒體也學。。對於編程,很初級,學過JAVA,自己看過C++(對指針不是很了解),vs2010不太會用,會寫代碼和運行(查找、debug、查看錯誤還有其他高級和便捷的功能基本不會)。感覺pudn這個網站很爛,CSDN也不太好,很多人上傳的代碼都不是自己寫的,copy來copy去,copy了好幾年,都老掉牙的代碼了,有些人純粹為了賺積分,一些代碼都不能運行。

有什麼好點的網站介紹一下。

還有應該怎樣學習編程。

寫的有點多,性急嘛!

謝謝各位大神!


一國外的:

http://stackoverflow.com 有乾貨的地方。代碼遇到相關問題經常被導到這個網站去,回答質量很高,排版簡潔清晰。我現在遇到問題經常會搜索詞後面加一個詞「stackoverflow」,敲回車的同時常常要罵一下這個創始人起個名字咋那麼長$%^#@%^*.....

http://github.com 最大的開源中心,項目五花八門,從華貴絢麗的界面到低調實用的小類庫,應有盡有。需要睜大眼睛慢慢挑,適合英語好的。Ruby和Javascript的項目尤其多。

http://codecanyon.net 初次看到這個網站,小夥伴們表示都驚呆了。原來代碼也可以放在網上賣的?!! 很多coder上傳了各種代碼,每個代碼都明碼標價。看了下銷售排行,有的19刀的賣了3萬多份,額di神啊。可以看到代碼的演示效果,真的很漂亮。代碼以php、wordpress主題、Javascript、css為主,偏前台。

國內的:

http://csdn.net 國內的程序員入門級網站,內容很多很雜,包括論壇、資源下載、博客、各種資訊等等。經常只在這個網站找到穩定的資源下載。攢積分要從娃娃抓起啊,不

http://oschina.net 國內最好的開源社區,在這裡討論問題的氛圍挺不錯的。創始人紅薯也很熱心,更新很即時,經常看到新出的開源項目在這裡有翻譯介紹。

http://segmentfault.com 國內版的stackoverflow,90後的作品,已經積累了不少中文問答,人氣還有待提高。


我這樣講吧,按照樓上們的學法,基本學一半,你就放棄了,因為你嚴重缺少目標和動力,寫著寫著你就疲了,我給你講一個真實的案例:

一個哥們,以前連程序是啥都不知道,但是他有個理想,做遊戲外掛,特別羨慕做外掛的,然後以近乎痴迷的精神開始網路搜索資料,因為目標很明確,所以他找了某外掛視頻教程(不寫名字了,有廣告嫌疑),基本算零基礎的視頻,並加入了VIP群,又註冊了廣海的賬號,然後從一個啥都不會的人,上手就學VC++,按照視頻一步步做,一步步測,後來什麼內存調試、堆棧結構、動態追蹤、PE結構啊、ASM啊、OPCODE啊,WINDOWS內核驅動等等,就這麼一點點啃下來的,整整堅持了兩年,一直在學習、編碼、調試中循環往複,不會了就群里問,加了一些共同學外掛的網友,不會了就請教師兄,終於有一天成功加入了某個工作室開發團隊,並且成功寫了好幾款大型遊戲外掛,銷量曾經兩個月達到300萬,買了房,買了車,最終經過不屑的努力,被公安逮進去了。

其實我想說的就一件事,你得有非常強烈的愛好作為目標,有了目標,你就可以拿目標當主線,沿著這個主線學習分支技術,逐個通關,需要學習哪樣的時候,你自然就知道該找哪個資料,而不是無目的的到處逛論壇,不然的話,今天學學JAVA,編倆小程序,還有一個失敗的,興趣減半,明天學學C++,又搞不懂了,然後興趣全無,最終結果就是放棄了,畢竟學習編程還是個挺枯燥的事。


Google 你所要的一切。社區可以選stackoverflow和GitHub


請做一個project


我們CTO兼我的小夥伴,在我學iOS開發玩http://codeschool.com玩得廢寢忘食的時候說:

再好的教學網站,都比不上自己動手做個項目。

事實上確實如此,造物的喜悅才會讓你熬過差點崩潰死的debug夜晚。

當你眼裡有了釘子,才會到處去找鎚子。自然stackoverflow, github什麼都用起來了。


ZestGeek 的回答的特別好,那我只有補充的份啦。

其實學編程是一種思想,要理解,而不是像抄作業一樣,把代碼炒了(好吧,剛開始學編程,就是這樣學的,實在是慚愧),比如學編程,基礎是C 語言,你要理解C 語言是面向過程的編程語言,從基礎開始慢慢了解,寫一個Hello World,知道它的每一行代碼是什麼意思;條件語句,循環語句;要知道數據類型,int,long 等等;數組,指針,字元串,他們的結構是怎樣的;知道方法,一個方法有返回值;這都是最基本的,如果這些你都不理解的話,到以後學習會很吃力(我以前就是C 語言沒有學好,以至於後來學習Java 很被動),學了C 語言,算是對編程入門了,就可以學習一門面向對象編程語言,C++,C#,Java,這樣你才能對編程更加地理解,面向對象時接近人類的思考方式,和C 語言相比,思考問題的方式,是先找對象,然後是對象去做哪些事,而C 語言是面向過程語言,就考慮一步一步去做,當面對很複雜的問題,C 語言就暴露出了問題;

學習面向對象語言,理解面向對象的幾大特點,封裝,繼承,多態,使用它們能使我們生活中的問題很巧妙地解決,理解了面向對象,就可以學習集合類(數據結構),網路編程,多線程,IO 操作;

作為現在Web 流行的時代,你還要學習網頁開發,HTML,CSS,JavaScript,w3school 在線教程

上面作為入門,上面講的東西,通俗易懂,適合入門;

你還要學習關係型資料庫,實現增刪改查,使用面向對象的語言操作資料庫,這樣你就可以做網路開發啦;

好吧,上面基本上說了一些,編程語言,Web 方面,關係型資料庫,這是編程入門最基本的,當然編程不僅僅是這些,隨著以後學習的加深,你會慢慢理解編程的世界;

最後還是推薦一些網站吧,剛好也符合你提的問題

Web 開發

w3school 在線教程

  • Web 開發的東西基本全部包括;

學習編程 | Codecademy

  • 在線編程,除了基本的學習,還有Ruby 這樣語言的學習,還提供了國外開發平台的API 學習;

Mooc(在線學習網站)

  • 慕課網-免費的IT技能學習平台

  • 極客學院-中國最大的IT職業在線教育平台

  • 雲課堂 - 網易旗下大型在線學習平台

  • 網易公開課

下面就是推薦網站啦

這些主要都是博客,基本上大部分程序員都在上面寫文章,文章也層次不齊,要靠自己去甄別;

  • CSDN.NET - 全球最大中文IT社區,為IT專業技術人員提供最全面的信息傳播和服務平台

  • 51CTO.COM - 技術成就夢想

  • ITeye Java編程 Spring框架 Ajax技術 agile敏捷軟體開發 ruby on rails實踐

  • 博客園 - 開發者的網上家園

  • BlogJava - 專註於Java技術

  • IT技術博客大學習 -- 共學習 共進步! -- 收錄IT領域的優秀技術博客,在這裡你可以找到Web開發、系統架構、資料庫、前端技術、用戶體驗等領域的前沿文章

  • ChinaUnix博客

  • 開源中國 - 找到您想要的開源項目,分享和交流

  • ITPUB博客-專業IT技術博客

下面是精華網站

  • GitHub · Build software better, together.

  • 博客 - 伯樂在線

  • ImportNew - 專註Java Android 技術分享

  • SegmentFault

  • InfoQ - 促進軟體開發領域知識與創新的傳播

  • V2EX

當然還有一些大牛們,他們自己的博客網站,不僅有技術,還有對生活的見解,作為後輩,看看還是收穫不少;

  • 阮一峰的網路日誌

  • 酷殼 – CoolShell.cn

  • MacTalk-池建強的隨想錄

  • DBA Notes | 閑思錄

  • Home - 廖雪峰的官方網站

  • Home - 陽志平的網誌

  • justjavac(迷渡)

最後祝題主能夠快樂地學習編程。


學習網站得找我,來個勁爆的,學習網站導航 一個專門收集高質量國內外學習網站的小眾站點。上面公開課、web開發、移動開發、醫療、科研、外語、國外mooc等各類學習網站都有所收集。截個圖:


關於初學編程的幾點經驗:

  • 找一本適合的教程。不一定別人說寫得好就適合你,每個人的基礎和學習方式不一樣。但一定要堅持完整看下去。
  • 多寫代碼,從完全複製,到修改,再到獨立寫。從簡單到複雜。一個簡單而有效的起步方法就是把教程里的常式全部在電腦執行一遍。
  • 給自己制定目標。有實際需求最好,沒有的話,自己琢磨一個東西去做。比如一個網站、一個遊戲、一個數據處理軟體。
  • 找到可以指點你的人。但不要把別人當做搜索引擎。
  • 堅持。編程不是一個速成的事,效果也不是簡單地隨時間線性增長。需要踩過很多坑,跨過很多瓶頸。

好的網站:

stackoverflow 和 github

但這兩個恐怕對初學者早期來說,用處並不是太大

Crossin的編程教室 - 編程世界的新手村

我自己寫的教程,以及在此基礎上建立的編程學習社區。面向零基礎編程學習者,使用python。

另,可參考我在此問題中的回答 你是如何自學 Python 的? - Crossin 的回答

放個微信公眾號的二維碼:

Crossin的編程教室(crossincode)


可以去我錄製的Ruby視頻課程學習,從入門到高級的全系列課程。希望對你有幫助。

張漢東的課程中心_51CTO學院


學習(非前端)編程的第一步難道不是把瀏覽器關掉么。

如何系統、科學地自學編程知識?


http://rosettacode.org/wiki/Rosetta_Code


可以直接看文章:新手學習編程入門 - 知乎專欄

半年前給一個朋友寫了一個學習編程入門的簡單文檔,現在放出來。

1.平台

1.1 桌面平台

桌面平台以操作系統來分類,分為Linux、Windows和Mac三個平台。

1.1.1 Linux

Linux是著名的黑客Linus在大學開發的開源操作系統,建立在早期的Unix內核基礎上。由於它優良的特性及開源的管理方式,吸引了全球大批的開發者使用。Linux一般是用於伺服器,因為它作為一個操作系統來說本身極其優秀,適合在後台作為伺服器系統持續穩定地運行。 Linux上的編程基本沒有接觸過,因為本身工作和這個沒什麼交集。雖然號稱掌握了Linux就說明是個大牛,但是至少這種言論是片面的。學習Linux確實能提高對計算機的理解能力,這方面比較好的書有一個叫[《鳥哥的Linux私房菜》](http://vbird.dic.ksu.edu.tw),專門為學Linux寫的好多書,業界評價很高。

1.1.2 Windows

Windows是使用最為廣泛的操作系統,粗略分類也可以為分個人用戶版本(專業版,基本版,家庭版等)和伺服器版本(Windows Server)。不過由於Win10的推出,Windows現在實行全平台統一內核的方式管理,又新增了嵌入式版本的Windows。 Windows上的編程是最基本的,因為絕大多數人都在用Windows。從QQ到英雄聯盟,從快播到書店管理系統,從ATM到銀行交易,基本都是在用Windows,世界上可以沒有蘋果沒有Google,但是沒有Windows,恐怕一分鐘都運轉不下去。 Windows下有很多的編程框架,大致可以分為兩種:一種是微軟出品的(限於Windows就是微軟的)以.NET為代表的編程框架,另一種是其他第三方的平台。

1.1.2.1 .NET平台

由於.NET只能運行在Windows上,所以它不具備跨平台特性,也就是說,只能運行在裝有特定版本的Windows操作系統上。.NET伴隨著Windows的更新也一直從1.0升級到如今的4.5.以.NET為母體,有MFC(C++,非常古老)、WinForm(C#,主流)、WPF(C#)等編程框架。

- MFC:很古老的一種編程框架,用C++寫的,有控制項,有事件,有服務,很完備。缺點就是東西太古老,不好用,現在各高校仍然有課程在用(比如圖像處理等),但是做這東西事倍功半,不推薦;

- WinForm:非常主流的編程框架,很多軟體都是用這個框架做的。用C#作為編程語言,運行很穩定,好上手,開發成本低。

- WPF:微軟新推出的編程架構,界面很絢麗,用XAML+C#作為開發語言,優秀的MVC架構,是未來的趨勢。可惜發布時伴隨著Vista系統的失利,加上其本身龐大的資源消耗,所以基本上沒有多少人在用。不過它的思想是先進的,一路走來趕上win8和win10(商店應用)都是在用的。

1.1.2.2 非.NET平台

非.NET平台的框架一般都可以跨平台使用。

- Qt:諾基亞出品的編程框架,用C++開發。有自己的界面庫,支持跨平台。在前些年很火,不過現在不流行了。

- Java平台:Java本身是個語言,但是基於Java有很多開源的框架和平台,如Swing等,都提供自己的控制項。不過運行效率太低,因為Java本身就是個虛擬機。

- 還有其他的平台,在Windows上使用率基本很少。

1.1.3 Mac

Mac是蘋果專用操作系統,蘋果系統很大一部分軟體都是用Mac下的軟體開發工具做的。Mac下的開發框架叫Cocoa,iPhone下的叫CocoaTouch(多了個touch)。當然,Mac下的軟體也可以用上面的跨平台的框架來開發。這方面不做過多介紹。

1.2 移動平台

現在最火的就是移動平台了,這一點毋庸置疑。

1.2.1 安卓Android

安卓是一個開源的操作系統,在2008年首次推出,之後由Google收購,到現在是最火的操作系統。Android的內核是基於Linux的,由於其開源的特性,所以很好定製,使得Android在短短几年內迅速佔據移動操作系統的三分之二。 Android開發是基於Android提供的SDK(軟體開發包)進行的。主要的開發語言是Java(用來寫後台邏輯)和XML(用來寫界面)。 Android開發有一些書,這方面比較有代表性的是[《瘋狂Android講義》](瘋狂Android講義_百度百科). 早期(2013年前)Android的開發環境是Eclipse,配合Android的SDK、模擬器等,後來Google推出了整套的Android Studio進行安卓開發,效率非常高,現在基本都在採用Android Studio進行開發。

- [視頻教程](安卓Android開發_安卓Android開發視頻教程從入門到精通 - 麥子學院)

1.2.2 iOS

iOS是蘋果iPhone以及iPad上的操作系統,只能在蘋果機開發,只能用在蘋果產品上。iOS是一個及其優秀的移動操作系統,安卓在發展的早起,很多都是借鑒了iOS的開發經驗做的(當然,後來就互相抄襲了)。iOS開發使用蘋果出品的XCode軟體進行,這個軟體還可能用來開發Mac下的軟體。XCode是一整套的開發工具的集合,可以設計界面、進行調試、上傳到應用商店等。iOS開發使用Objective-C編程語言和Swift編程語言,後者是蘋果在2013年6月推出的新一代編程語言,集合了當下所有語言的優良特性,大有取代Objective-C的意思。所以Swift一直很火。這方面的教程有:

- [斯坦福大學公開課iOS開發](斯坦福大學公開課:iOS 8開發)

- iOS開發指南等。

1.2.3 Windows Phone

Windows Phone是微軟出品的手機操作系統,現在已升級到了Windows Mobile 10.它的開發環境是Visual Studio,用C#進行開發,基本就是windows下開發軟體(WPF)的模型是一致的。雖然我在大學做的最多的就是WP(因為上手快,微軟的教程給力),但是它的市場佔有率多年來一直升不上去。希望得益於Windows10的爆發,能給點力。這方面不給教程了。

1.3 Web平台

Web平台的編程基本是基於伺服器的編程。這方面分為網頁(前端)和服務(後端)。

1.3.1 前端

前端就是我們所看到的網頁。比如[百度](百度一下,你就知道)的首頁很樸素,[QQ瀏覽器](QQ瀏覽器9官方網站 - 瀏覽器_瀏覽器下載_微信電腦版)的首頁就很酷炫,等等。這些是用什麼實現的? 實現語言會在後面再介紹。概括來說

- html是所有網頁語言的鼻祖,網頁都得用它;

- CSS就是一個樣式選擇器,那些字體、顏色等都是用的CSS來控制的;

- javascript是網頁腳本(它可和java沒有半點關係),是用來寫簡單的後台邏輯交互和前端界面交互的;

- html5是最新的html的版本,支持眾多的界面特性。QQ瀏覽器的首頁就是用html5做的。

1.3.2 後端

後端是用戶看不到的,小到註冊一個用戶,大到處理幾十萬的數據,都是後端來做。這方面典型的開發語言是C++、Java、php和python、ASP等。 後端是基於伺服器進行的開發。基本上在軟體工程中處於很頂級的地位。這方面用Java開發是業界很流行的,因為Java沒有C++那麼難寫,本身又有很多框架,比如Spring等,非常適合寫後台的數據交互。

2.語言

2.1 C

C是基礎性語言。它不是面向對象的,是面向過程的語言。C誕生於1972年,其優良的特性很高的效率使它長期佔據編程語言排行榜第一名。C可被廣泛用於桌面、伺服器、嵌入式開發中。

- [C程序設計視頻教程](C程序設計案例教程(2015秋季)-學堂在線慕課(MOOC)平台)

2.2 C++

C++可以看作是對C的擴展,增加了面向對象的機制。什麼是面向對象?簡單來說就是,所有的要操作的物體都是對象,比如一個人是一個對象,一條狗也是一個對象。接著就可以在對象上定義操作,比如人走路是一個函數,人吃飯也是一個函數。這樣設計的好處就是可以封裝起來多次使用,也可以進行繼承。保留總體的相似性,又不失個體的個性。比如張三和李四都是繼承人這個類,但是張三吃飯要3分鐘,李四就要10分鐘,這就是個性。面向對象設計的思想可以在[這裡](什麼是面向對象編程思想? - Java - 知乎)找到進一步的闡述,這基本是所有現代主流語言的基礎。會面向對象,所有的語言學起來特別快。 C++可以被廣泛用於桌面端、伺服器和嵌入式的編程,使用程度非常廣泛,但是由於它的語法很難(主要是指針操作)、沒有現成的SDK進行封裝,所以並不是很適合用來寫移動端的應用。 可以認為,C++什麼都能幹,它太基礎了,效率是高級語言中最高的,但是術業有專攻,它並不是都適合寫各個平台的應用。

- [C++程序設計視頻教程](C++ Programming | C++程序設計)

2.3 C#

C#是微軟是2000年推出的在.NET平台上的編程語言,沒有指針,集合了大多數面向對象語言的精髓,好學好用,效率也不低,是主流的windows桌面應用和部分windows伺服器後台的編程語言。

- [C#視頻教程](C#編程-學堂在線慕課(MOOC)平台)

2.4 Java

Java和C#類似,差不多簡單。但是Java是跨平台的,可以寫桌面、移動(安卓)和後台伺服器,用處非常廣泛,框架也最多。

- [Java視頻教程](學堂在線-最大的中文慕課(MOOC)平台)

2.5 html

html和javascript、css等都是開發網頁前端界面顯示的語言,是很輕量級的。

- [html等教程](Codecademy - learn to code, interactively, for free)

2.6 php

php是用來開發伺服器後端的語言,非常好學好用,語法很簡單。

- [php教程](PHP 教程)

2.7 python

Python是一種腳本語言,執行效率很低,但是語法異常簡單,c++寫幾十行的東西,它幾行就可以搞定。Python理論上可以用在任何地方,但是基本上常用於後台伺服器和一部分科學研究。作為腳本語言,Python是優秀的。

- [python教程](Codecademy - learn to code, interactively, for free)

2.8 http://ASP.NET

http://ASP.NEThttp://ASP.NET是微軟出的寫伺服器後端與部分前端的框架。用C#和html編程。 - [視頻教程](ASP.NET基礎實例教程-我要自學網)

2.9 其他

其他語言還有幾十種,但是都不是很常用。這是不再介紹。 學會面向對象編程思想,走遍天下都不怕。

3.工具

3.1 Visual Studio

微軟出品的宇宙最強編程工具,沒有之一。 VS可以被廣泛用於桌面、伺服器和移動端的編程,最新的VS也可以用來做安卓和iOS,其性能之彪悍功能之強大是宇宙第一。寫C、C++、C#的天然平台,也可以用來寫Python、html等。

- [VS的官網](Visual Studio Home)

3.2 Eclipse

Eclipse是免費開源的軟體。它是一個軟體平台,配合豐富的插件,可以用來寫Java、php、C++、Python等,用來寫桌面、伺服器應用。

- [Eclipse官網](Eclipse - The Eclipse Foundation open source community website.)

3.3 intellji IDEA

Intellij IDEA是捷克Jetbrains公司出品的收費的編程軟體。是Eclipse的替代品。可以把它叫做java界的Visual studio。用來開發基於Java的任何應用。Android Studio就是基於這個軟體的框架進行開發的。

- [intellij IDEA官網](JetBrains: Development Tools for Professionals and Teams)

3.4 Android Studio

開發安卓的集成工具。

- [網站](http://www.baidu.com/link?url=ckxMsBEZ42QFFLmh0KtPkZLHHcFMaVnxPwfDvUdFFNsyo1RtqvnyaodTIqqw9Z5zamp;amp;wd=amp;amp;eqid=fed82086000f227b000000035646be0f)

4.輔助

4.1 資料庫

資料庫是存儲數據的媒介,所有後台數據交互的都必須有資料庫參與。目前最常用的資料庫有Oracle、SQL Server、MySQL、MongoDB等。資料庫獨立於編程語言,由特定的SQL語法進行支持。

4.2 Github

[Github](Build software better, together)是世界上最大的開源軟體管理平台。本文就託管在github上。世界各地的程序員把他們寫的各種類型各種語言的代碼託管在github上實現共享,有利於軟體行業的發展。git代碼管理平台是現在最火的版本控制工具。 iOS、安卓等有很多有名的項目都是託管在github上的。

4.3 MOOC

這個主要是網路公開課。現在最火的受教育形式。 近幾年,MOOC越來越火,課程的數量和質量都不斷發展,給了我們足不出戶就能領略世界大師風采的絕佳機會。本文有很多鏈接都是公開課的。推薦的不錯的有:

- [網易公開課](網易公開課),資源比較多,各個領域都有,裡面有計算機板塊,中國外國都有。上面說的MIT的演算法,我們都是在上面學的,老師講的特別好。另外它還有不斷更新的TED視頻,很值得一看。

- [coursera](http://coursera.org),斯坦福機器學習大牛Andrew Ng聯合成立的,上面都是外國大牛校的視頻。我研究生課程里的機器學習就是學的這上面的,不錯。

- [果殼MOOC學院](MOOC學院(慕課)| 發現全球在線好課),它只是一個公開課搜索中心,幫助你鏈接到各個mooc課程。

- [學堂在線](學堂在線-最大的中文慕課(MOOC)平台),清華主導的,網站做的不錯,課程質量很高,這個是要著重推薦的,我也是最近才發現,上面的計算機和數值方面課程不錯。

- [codecademy](Codecademy - learn to code, interactively, for free),這不是公開課網站,是一個手把手教你學習web語言的。這裡有Ruby,python,html等熱門web語言,而且教程設計豐富而有趣,感覺是學前端最好的地方了。

- 網路資源:大牛的博客什麼的,這方面我就沒什麼好推薦的了,看你的水平去發掘了。百度和google你是當然離不開的了。翻牆什麼的你自己去弄吧,反正百度沒有的東西,你可以去google,google也沒有,你可以嘗試一下用英文搜索,效果非常好!這裡推薦stackoverflow網站,只要你有解決不了的問題,用英文上google搜,如果stackoverflow里有類似問題,恭喜你肯定能解決。

- 書籍:我們計算機方面有很多經典的書,比如高德納老爺爺的《計算機程序設計藝術》相信你一定聽過,網上都有pdf下載,可以看一看。另外,我們這個方面像《XXX精通》等書太多了,而且基本都是大部頭的,還能防身呢!這個推薦你能下pdf就下pdf,不然這麼大,有個三五本就夠你受的了。這些書都是當字典用的,千萬不要從第一頁碼開始一頁一頁讀!效率低而且你會發現沒用。這都是你在遇到問題時去查的,不是讓你真學的。

- [我在知乎上關於計算機學習的一個回答](大一迷茫求指點? - 王晉東不在家的回答 - 知乎)


零基礎學習編程 http://www.fenby.com

學習C語言、Java語言、OC語言、安卓課程

建議你從C語言開始系統學起

再回過頭來複習你的Java

最後試著看開源代碼

目的只有一個:

語言是工具

開發創作靠思維


看經典書做開源項目吧。

中文網站幾乎沒什麼好看的,正如題主所說,拷過來拷過去,看完一個就知道所有的了。


福來了。codecademy用過嗎。沒用過?現在又來了個runnable。這裡有介紹:編程酷站 - 文在茲·大學游。強烈推薦這個。又發現個codecombat,教js的。


介紹一個「新生」的學習編程的網站吧,泡麵吧編程(http://www.paomianba.com ),雖然現在需要邀請碼。。。


介紹些好的學習編程的網站吧

1.stack overflow:國外非常流行的程序相關的IT技術問答網站 很多大牛

2.Github:全球最流行的開源項目託管平台 可以輕易找到開源代碼

3.Hacker News:Y Combinator旗下的新聞頻道 源源不斷的頂級創業者參入討論

4.CSDN:中國最大的IT社區和服務平台 提供知識傳播 職業發展 軟體開發等全生命周期服務

5.InfoQ:促進軟體開發領域知識與創新的傳播,為軟體開發者提供幫助的在線新聞/社區網站

6.實驗樓:專業的IT在線實訓平台 隨時隨地 實戰操作 增強技術


來知乎這麼久,也該回饋一下了。

1、動機,首先編程是個很大的範圍,樓主應該先明確自己的目的(想學哪方面?pc開發?手機開發?遊戲開發?windows平台?Linux平台?iOS?Android?)動機很重要,我覺得樓主想要得到更加精準的答案,還需要補充你的學習動機。找工作?自己做遊戲玩?還是做點小東西打發時間?我不認為有人會因為想學編程而去學編程。人做任何事肯定都有動機。

2、成就感,明確動機後我覺得樓主應該會找到學習的方向。舉個例子,想做pc開發。我們都知道,程序就是一個輸入,輸出。樓主可以先做一個最簡單的界面程序—計算器(模仿windows自帶的計算器做一個出來。)要做一個計算器,首先要知道怎麼繪製界面(假設你用C#—太簡單了,直接拖控健,關聯變數寫邏輯。當然具體過程需要你去看書,看C#視頻教程。)跟著書,教程一步步做出來之後,我覺得樓主應該會得到成就感。為繼續學習提供動力。

3、擴大成就感,完成了計算器之後,樓主可以嘗試一些更有難度的程序,比如五子棋,象棋。當然要做這些需要更多的知識,如何獲取?百度!能百度出來就拿來用,不能就去CSDN提問。

4、編程細節問題就是一個拿來主義,有用的就拿來用,也不要太迷信究竟是什麼來源。


作為一個也是正在學習的學生,和樓主分享下經驗。(本人電子專業的,和樓主有點交集)

首先樓上很多人說的很好了,網站像是stackoverflow,github等樓主也可以經常看看。但是目前不建議在網上學習,那些主要是有經驗的人交流用的。你就是天天逛stackoverflow也不能學會編程,倒是有問題了可以去提問,好多國外大牛在的。等火候夠了,就去看開源項目的源碼,學習牛人的經驗。

個人經驗就是,想要學好編程一定要有一本好的教材。樓主的情況還在最初級階段,所以還需要練習基本功。我大一的時候主攻c語言,看了《c程序設計語言》《c陷阱與缺陷》《c primer plus》《與c語言有關的495個問題》等比較經典的c語言書,目的就是鞏固編程能力。所以我個人建議學習一門語言最好的方法就是找到一本好的教材,然後通讀一遍,把上面幾乎所有的例題和課後題做了,你基本就可以把一門語言學的比較好了。我們當初用的還是譚老爺子的紅皮教材,上面好多錯誤,代碼風格也差勁,但是塞翁失馬焉知非福啊,敲了很多錯誤之後,發現以後自己編程的語法錯誤很少了。後來我就總結了,即使教材不好,只要你硬著頭皮把一本書啃完了,啃透了,基本也就入門了。

同時大一也開始學習linux,花了很長時間把linux下一套工具像是vim,gcc,gdb,make也算是入門了。所以樓主要是想要學好編程,最好還是接觸下linux,linux下很多開放源碼的軟體可以學習。

大二開始,我就開始搞c++,宇宙最難的編程語言吧,太龐雜了,都是大部頭,只能硬著頭皮啃。同時也開始學習演算法和數據結構,也是找了一些像是《c++ primer》《c++編程思想》《演算法導論》等美利堅的教材看。看了將近一年半c++了,從基本語法-&>類的使用(OOP)-&>stl使用-&>泛型編程-&>stl源碼。現在也只能說算是熟悉c++了,想要學好c++還有很長的路要走。大二也開始接觸了acm,刷了幾百題練習演算法和數學。

然後這學期就開始學java了,然後自學了點python。然後這個暑假要去找實習了。(目前還在忐忑)

所以個人感覺就是,編程這條路真的不是很好走,樓主得有心理準備,要學的東西很多。所以首先你要有熱情和恆心,真正喜歡的東西你才能做得好。我周圍有些人大一就已經開發出來幾款安卓軟體了,非常厲害,經常通宵搞一個難題,這才是真正的熱愛。(我大一還啥都不懂呢,這就是赤裸裸滴差距啊。當然我也比一些混日子的腦殘強多了)然後你要確定你的方向,你是要開發安卓還是ios,安卓用java搞就行,ios就去學習objective-c,要是學windows下開發就去學學mfc,要是搞linux或者嵌入式得有良好的c/c++功底。所以方向很重要,要善於取捨。現在網上資源很是豐富,你搞什麼幾乎都有對應的社區可以去交流討論,還有很多美利堅的優秀書籍可以參考。當然數字媒體很多人都去搞設計了,這也是一條路。所以樓主如果真心想走技術這條路,可以參考下這些意見。

確定方向 -&> 深入學習 -&> 做項目並且網上交流討論學習 -&> 公司實習 (總之就是要不斷提升自己,樓主也可開啟並行模式,有些可以一起做,只要把時間利用在正確的事情上你就會有競爭力。)


我目前在codeacademy學python語言,跟著它一步一步學,感覺它說得很通俗,讓我這隻文科狗也能聽懂。


推薦閱讀:

如何評價400px?
如何快速搭建一個網站?
2014 年 12 月 25 日 12306 發生大規模用戶隱私泄漏的原因是什麼?
1024*768解析度的顯示器已不再是主流,為什麼一些政府部門網站底部仍然「建議使用1024*768解析度瀏覽」?

TAG:軟體開發 | 編程 | 計算機 | 網站 | 軟體工程 | 編程學習 |