零基礎小白想學編程,哪種編程上手快?


該自學還是參加培訓班?

第一、看你的時間緊不緊。

  • 如果你急著找工作,當然參加培訓要學得快一些,可以少走一些「彎路」。但這就和喂飼料的「速成雞」一樣(看我這比喻用的),根基其實並不紮實。
  • 如果你有一大堆的時間可以揮霍,當然可以慢慢的專研琢磨,這個不斷碰壁的過程其實也是一種能力的鍛煉。

第二、看你的學習能力強不強。

最簡單的測試,整一本入門教材,跟著學跟著做,能不能最後弄出個東西來?比如一個小網站,一個小APP。能行,你就有這個能力;不行,兩眼一抹黑,連怎麼配環境都搞不定,那你還是花點錢交學費吧。

自學的話,從哪裡開始入手?

我不建議你從「基礎」開始,尤其是什麼:C語言,數據結構,離散數學……之類的,那是把你逼瘋的節奏(感覺這是知乎學院派的風格)。如果你自覺是神人級別的,當我沒說。

其實軟體工程發展到今天,編程已經是一個很「職業化」的技能。業內自嘲「IT民工」,每天「搬磚」之類的,就是這種現象的反應。不扯遠了,總之一句話,基本上都是些是個人都能學會的技術,沒有什麼神祕的。某些培訓機構招一些高考失利的考生,培訓兩年就把他們往公司裏送,他們也一樣能勝任工作。所以自學也不是件難事。但前提是,你走對了路。如果你從二進位、編譯原理、數據結構……這些開始,我估計你陷在裡面就出不來了——除非有名師指點或者天賦異稟,再或者有大機緣?不要急著做這些「學究」式的學習研究,就像學開車一樣,不需要你從發動機原理學起是一樣的。程序/語言是讓你用的,就像車是讓你開的,明白了這一點,你就可以立馬輕鬆100倍。所以,先選一輛「好開「的車,迅速的跑起來,享受這種微風拂面的快感和刺激,纔是最重要的。由於你的問題過於簡單,我不知道你成為程序員是想幹什麼,所以無法給你具體的建議。大致的:如果你是想做網站,可以向從靜態頁面(Html、CSS、javascript)入手,做一個漂漂亮亮的頁面出來,先;然後加上一些功能,比如可以發布一篇文章,自然就需要構建動態頁面的語言,我推薦http://ASP.NET,原因無它:好上手。當然,你還需要資料庫,我推薦MSSQL,原因無它:好上手……這樣一步步下來,你很快就能看到自己的成果,可以不斷的產生自激勵,你才能走得更遠。其他方面,我不是很瞭解。但大致思路查不多,你想學遊戲,就儘快弄出一個坦克大戰出來;你想學Android,就馬上整一個小APP出來;你想做嵌入式,就儘快弄個小機器人出來,呵呵。總之,要儘快做出東西來,醜也好俊也好,都要有個東西放在那裡。看著自己的作品一點點成型的快感是難以言喻的!

這就是我反對從數據結構,離散數學開始的原因,一是這些東西很難學,更重要的是,費了九牛二虎之力,學了你也就學了,你能用它幹什麼?學這些應該是你有了一定的基礎,需要進一步提高鑽研的時候,才應該考慮的東西。

其他的參考:

如何自學成為程序猿??

www.zhihu.com圖標

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

最後很煞風景的加個推廣,為了混口飯喫呀O(∩_∩)O哈哈~

  • 飛哥辦了一個IT培訓班,http://ASP.NET全棧開發,線上全程直播,可以免費收看;線下拎包入住,按周收費。如果你是碼農或者是有興趣瞭解編程的可以加QQ羣:729600626(一起幫·源棧·有意向)大家相互學習交流O(∩_∩)O哈哈~


零基礎學習編程,首先還是應該先好好了解一下各個編程語言的知識

下面是各個學科的簡單介紹,希望可以幫助到想要了解學習編程技術的同學!

創始於1972年

C是多用途的、重要的計算機程序語言,支持構建化編程,詞法變數範圍和遞歸,是開發固件或移動應用的理想語言,通常被用於編寫系統軟體

C用來做什麼

操作系統開發 軟體開發 硬體

C的優點

可移動性:C是高度可移動的,你在不做改動或僅做很小改動的情況下可以開發運行在不同平臺的軟體

C很小:C完全基於變數、宏命令、函數和架構,他們不是特別多,因此,C可以嵌入幾乎所有現代微型處理器,從冰箱到鬧鐘

學會C學會一切:因為幾乎所有編程語言都由C實現,學會就能使你方便的學會一切編程語言

C的缺點

運行時間:C語言沒有運行時檢查機制

面向對象編程:不支持面向對象編程,這就是為什麼創造C++

相當大的學習曲線:不是最好學的編程語言,也不是最難的,適用於有其他編程基礎的人

創始於1983

C++被視為編寫大型應用的最好的面向對象編程語言,C++是C語言的升級版本

C++用來做什麼

軟體開發 搜索引擎 操作系統 視頻遊戲

C++的優點

讓你與眾不同:熟練掌握C/C++能把你放在與其他程序員求職者不同的位置上,使用C/C++你能理解其他編程語言如java和python如何進行內存管理以及如何處理缺陷

性能調整:C++能允許調整你的應用性能以及影響所有計算機性能,它寫起來比java要不友善的多,但是你可以用它做任何事

C++的缺點

陡峭的學習曲線:C++學起來十分困難,但是如果你能流暢使用的話能使你遠遠超過程序員的境界

巨大的尺寸:C++及其巨大,它的大部分功能相互影響是及其複雜的方式,沒有開發者能使用全部提供的組成部件,但是會花費大量時間來挑選你的程序的子部件

創始於1983

Objectve-C是一門用途廣泛,面向對象的編程語言,在C語言的基礎上增加了Smalltalk風格的特點,這門蘋果開發的語言,主要用於osx和ios操作系統,還有各自的應用程序(APIs)

[C] 用來做什麼

IOS應用

Obj[C]的優點

庫:Objectve-C是為了和Cocoa框架配合使用而專門開發的,也就是說可以橋接蘋果開發的類庫

運行速度:用Objectve-C寫的程序更動態化,能在運行時匯總信息去判斷是內存還是數據類型,而不是在編程事判斷

使用範圍有限:雖然Objectve-C能做很酷的事情,但你不能用它在別的平臺上開發,比如android

Obj[C]的缺點

學習曲線:不是最容易掌握的語言,因為你最好同時瞭解一些C語言的知識

別指望馬上看到成果:如果你想幾周內就拿出程序來炫耀,這不是你應該選擇的路徑,可能要花上一年才能精通

不同的編程方法:蘋果有自己的編程方法,和其他人都不同

創始於1991

python是服務端解釋器的、開源的、非編譯語言,它能用於自身或其他框架,如Django

python用來做什麼

網頁開發 視頻遊戲開發 桌面GUI 軟體開發

python的優點

易於學習:python廣泛認同為最容易學習的編程語言

庫:大量令人驚訝的庫和函數使得製作東西極為容易

物聯網:python也許會成為物聯網最受歡迎的語言,如樹莓派這樣的新平臺都基於python

python的缺點

速度:作為解釋型語言,比編譯型語言慢很多

移動端:python在移動計算方面很弱,很少有智能應用是有python開發

設計:python是動態型,它需要更多測試以及錯誤僅在運行時展示

創始於1994

PHP是一種伺服器端的腳本語言,專為網頁開發兒設計,但也是一門用途廣泛的語言

PHP用來做什麼

wordPress插件 Web開發 創建資料庫訪問頁

PHP的優點

容易上手:它是一門快速並且容易的服務端腳本語言,用於網頁開發和其他廣泛的用途

社羣強大:擁有龐大的活躍社羣,被防範使用,開發者遇到的大多數問題都已經有前人的解決方案了

資料庫:對資料庫友好,比如文件系統、圖片系統等等

PHP的缺點

太容易學了:有許多醜陋的代碼,一是因為有太多初學者(因為PHP容易學)二是因為一些開源代碼已經出現超過十年,有點過時了

速度:經過驗證,PHP語言一般比它的競爭語言運行的要慢

錯誤處理:和其他語言相比,PHP的錯誤處理考慮的不夠周全,主要是因為PHP的開發歷史比較久遠,需要支持老版本

創始於1995

java是一種開發者用來創造計算機應用的程序語言,你下載程序需要java運行環境並確保它安裝在你的系統上,java也有一些web插件允許你在瀏覽器中運行應用

java用來做什麼

安卓和ios應用開發 視頻遊戲開發 桌面GUI 軟體開發

java的優點

java開發者被大量需求:2015年http://Dice.com報告表明java開發是需求量最高的軟體開發技能

一種進化的語言:這個平臺在繼續加薪功能,如lambda功能

安卓應用開發:谷歌的安卓移動平臺是世界第一的移動平臺,編寫安卓應用,開發者主要使用java

java的缺點

使用大量內存:java比C++使用更多內存更大內存佔用

學習曲線:不是學起來最簡單的語言,但也不是最難的

緩慢的啟動時間:每一個試著用java寫安卓應用人都知道同樣的代碼在模擬器匯總啟動多麼緩慢

JavaScript是最通用的客戶端腳本語言,這意味著JavaScript的代碼可以寫進HTML頁面,當一個用戶請求一個包含JavaScript的HTML頁面時,這個腳本被發送到瀏覽器然後瀏覽器通過它做一些事,

JavaScript用來做什麼

網站前端 分析 小工具 web交互

JavaScript的優點

速度:作為客戶端,JavaScript非常快,因為任何代碼功能都能立刻運行,而不是和伺服器通訊並等待應答

樸素:JavaScript學習和實施都相當簡單

多功能性:JavaScript能和其他語言相處融洽並且可以用在很多應用,不像PHP或者SSL腳本,JavaScript能嵌入到任何web頁面而不用考慮文件拓展名,

JavaScript的缺點

安全:因為代碼在客戶的電腦上運行,在某些情況下會被惡意利用,這也是一些人選擇禁用JavaScript的原因

最終用戶的信賴:JavaScript有時會被不同的瀏覽器編譯出不同的結果,服務端教本經常產生相同的輸出,客戶端腳本會有少許不預知性,不要過多涉及這個–你只要在常見瀏覽器上測試你的腳本即可

創始於1995

Ruby是動態的、面向對象的、多用途的語言,是最好的編程入門語言之一

Ruby用來做什麼

桌面GUI 網頁應用 Web開發

Ruby的優點

易於學習:ruby和python都是公認的最好入門語言

庫:大量的擴展和庫讓常遭東西十分簡單

巨大的成長中的社區:世界上每個主要城市都有ruby社區,在github上最受歡迎的語言之一

Ruby的缺點

運行速度:關於tuby和rail的主要批評都是「慢」

文檔:很難找到很好的文檔,尤其是對於一些冷門的庫或多個庫服用

性能:ROR應用運行起來不像java和C寫出來的那麼快,然而,大部分的ruby on rails的應用都足夠快

創始於2000

一種強大且靈活的程序語言,與所有語言相似,它能被用於創造大量應用,你在C#方面的潛能僅被你的想像力限制,這個語言沒有約束你能做什麼,C#用於動態網頁項目、開發工具甚至編譯器

C#用來做什麼

windows應用 商業應用 軟體開發

C#的優點

.net庫:完整的.net庫,提供接入大量功能和支持

可轉移:基於C語言,所以你學得的架構可以轉移到其他語言如java,objective-C,php以及C++

受歡迎:C#和java是最受僱主歡迎的語言

C#的缺點

不適合初學者:C#不是最適合初學者開始學習的語言,有很陡峭的學習曲線,

跨平臺:因為集合了.net,所以沒有任何跨平臺能力。

各個編程技術都有可發展的職業方向,未來生活離不開互聯網,各行各業也離不開科技的發展,也許未來還會有新的編程技術的出現,但是這都是需要我們不斷去學習,去探索。

下面附帶部分學科的學習路線圖以及學習課程+資料

黑馬程序員Java視頻教程從入門到精通(完整版)超千萬下載量?

yun.itheima.com圖標Python自學教程_Python視頻教程從入門到精通_黑馬程序員?

yun.itheima.com圖標PHP視頻教程完整版_PHP視頻教程從入門到精通_黑馬程序員?

yun.itheima.com圖標C++自學經典教程_C++視頻教程從入門到精通_黑馬程序員?

yun.itheima.com圖標

讀完下列文章,那就不是零基礎了!!!!

萌新從零開始系統性獲得電腦知識 - 檸檬學院李偉的文章 - 知乎 https://zhuanlan.zhihu.com/p/62694823

程序的本質是什麼? - 檸檬學院李偉的文章 - 知乎 https://zhuanlan.zhihu.com/p/64395956

低級語言和高級語言的區別 - 檸檬學院李偉的文章 - 知乎 https://zhuanlan.zhihu.com/p/65746260

什麼是JAVA - 檸檬學院李偉的文章 - 知乎 https://zhuanlan.zhihu.com/p/62717204

如何從零開始學Java - 檸檬學院李偉的文章 - 知乎 https://zhuanlan.zhihu.com/p/62861991

學習Java到底能做什麼 - 檸檬學院李偉的文章 - 知乎 https://zhuanlan.zhihu.com/p/62990471


看你以後方向了。

做web ,必學 js 。

爬蟲和演算法 python 。

後端 java go rust


我個人覺著應該先學C語言然後學C++這樣基本的語言就算了解了,在後邊學習那些更高級的語言時,就能明白什麼意思了,Java和Python主要就是用起來方便,它是為了程序猿們能夠更省事,讓語言更貼近人們的日常語言而開發的,所以學完C語言C++後,Java和Python可以一起學習基礎知識,但是到後邊你得選一門方向作為你的主攻方向,要不然你會覺得越學越多,會產生厭煩情緒。

很多世界一流大學在教授編程基礎的時候,都還是C--&>C++--&>組成原理--&>數據結構--&>操作系統--&>網路這樣的一條路線,這是有道理的,大學教學有嚴謹的步驟,並不是見風是雨的浮躁。對於學習編程而言,我更傾向於這種穩紮穩打的系統化學習。

所以按照大學裡規劃的課程進行學習,是一種不錯的選擇,但是也有些人直接報那些培訓機構,這些機構近幾年廣告打的非常多,他們主要以操作實踐為主,而讀書是讓你明白,它的原理,我還是比較支持多看書,明白它的運行原理是什麼,而不是不是說按部就班的操作。在面試的時候,HR有時會問你一些很簡單的書中的問題,看看你得水平到底是,在培訓機構學習的還是在學校學的。

有人說Python語言簡單,適合入門。

但我覺得Python並不適合小白入門。

首先,面向對象的設計方法與面向過程的模塊化思想並不是反對的關係,而是相包含關係;有一個很簡單的體會就是,學C後,會發現學C++的基礎比較輕鬆;接著學完C++高級階段後,會發現Java也很容易上手;Python側重於問題解決,提供了豐富的類庫以及靈活特性;而它的豐富與靈活從根上講,卻從未離開過面向過程與面向對象。

所以,對於從未接觸過編程語言的小白而言,Python雖然易用,卻很難懂。所謂的「興趣」與「成就感」甚至「當下潮流」都是好的,可問題在於 沒有生命的代碼堆砌,其溫度又能夠維持多久呢。

所有還是從C語言作為基礎開始學起。

正所謂千里之臺,始於壘土。

基礎是最重要的。


推薦閱讀:
相關文章