原文地址:Which Programming Language Should I Learn First? 你想要學(xué)習(xí)編程.也許你已經(jīng)問過你開發(fā)的朋友關(guān)于推薦哪種語言,而且也獲得了不同的回答.但他們說出一些你不懂的術(shù)語(什么是面向?qū)ο?!).為了幫助你選擇一個(gè)編程語言來學(xué)習(xí),這里給你提供一個(gè)易于理解的信息圖,憑借你的目的和興趣,有助于你做出最好的選擇.一些詳細(xì)資料,包括學(xué)習(xí)的難度,語言受歡迎程度和平均收入,每一種編程語言都會(huì)涉及.我也為每一種編程語言編譯了一個(gè)列表,最佳編程工具和資源,為了幫助你趕快行動(dòng).特別感謝Prithviraj Udaya授權(quán)我是用他在Quora上的的指環(huán)王類比注意:一個(gè)優(yōu)秀的程序員應(yīng)該至少了解一些編程語言來學(xué)習(xí)用不同方式來解決問題.為了技術(shù)不落后,他們持續(xù)學(xué)習(xí)和成長.這僅僅是你的編程之旅的開始,簡(jiǎn)單的選擇一個(gè)然后馬上開始編碼.> 大多數(shù)優(yōu)秀的程序員編程不是因?yàn)樗麄兿胍@得豐厚的薪酬或者更多的榮譽(yù),他們僅僅覺得編程有趣.> - Linus Torvalds (Linux之父)
來源于:CarlCheo.Com
點(diǎn)擊上面的信息圖查看完整大小.獲取PDF版本信息圖詳解和問題與解答:點(diǎn)擊這里跳轉(zhuǎn)或者滾動(dòng)到文章底部查看.
最佳編程工具和資源初學(xué)者:IDE代表集成開發(fā)工具.它是幫助開發(fā)人員寫代碼的工具,一般由代碼編輯器,編譯器和調(diào)試器組成.下面是最佳課程,教學(xué),數(shù)據(jù)等等.涉及每一種編程語言.可以隨意建議任何的新資源來保持以下列表更新.(譯者注:(1)原文使用標(biāo)簽頁,markdown格式暫不支持,所以在此用目錄代替索引如果想要看原文格式,請(qǐng)查看原文 (2)各語言推薦書籍中,尚無中文版本,皆保持原文顯示.)
目錄:PythonJavaC/C++JavaScriptC#RubyPHPObjective-CFor Kids有用的資源問題與解答
Python ↑官方網(wǎng)站:https://www.python.org/- 官方Python入門指南- 開啟一個(gè)文本編輯器,類似Sublime Text,之后可以移步到IDE上做一些更為復(fù)雜的項(xiàng)目,比如PyCharm或pydev課程- Treehourse - Python基礎(chǔ)課程- Udemy - Python編程終極教程- 免費(fèi) - Udacity - 計(jì)算機(jī)科學(xué)簡(jiǎn)介 - Codeacademy - Python - Google’s Python Class 免費(fèi)交互式指南- Learn Python書籍- Python Programming: An Introduction to Computer Science- Python Programming for the Absolute Beginner- 像計(jì)算機(jī)科學(xué)家一樣思考Python (免費(fèi)在線閱讀)- Learn Python The Hard Way (免費(fèi))Web開發(fā)如果你打算使用Python創(chuàng)建網(wǎng)站,嘗試Flask炕吸,一個(gè)對(duì)初學(xué)者十分友好的PythonWeb框架- 官方Flask文檔:書寫非常清晰和完善的文檔接下來,你或許繼續(xù)前進(jìn)到Django,沒流行和廣泛使用的Python Web框架- 官方Django入門指南- 教程:如何用Django跳探戈: 一個(gè) Python Django 教程(免費(fèi))- 書籍: Test-Drive Development with Python(免費(fèi)在線閱讀)
Java ↑官方網(wǎng)站: http://www.oracle.com/technetwork/java/javase/overview/index.html- 首先,你應(yīng)該理解面向?qū)ο缶幊痰母拍?OOP):- 一個(gè)車的類比:如何想非技術(shù)人解釋OOP概念?- 更多細(xì)節(jié)版本:Java教程:不要害怕OOP!- 下載和安裝Java SE 開發(fā)組件(JDK)- IDE: Eclipse- Oracle官方Java教程課程- Treehouse – Java基礎(chǔ)課程- Udemy – 面向零基礎(chǔ)的Java教程- Udemy – 初學(xué)者Java編程-Java終極教程教程(免費(fèi))- Eclipse And Java 視頻教程- 學(xué)習(xí)Java- 免費(fèi)交互式Java教程- YouTube 視頻 – Java (初學(xué)者) 編程教程書籍- 新手學(xué)Java7編程- Java編程思想 (免費(fèi)獲取舊版本:這里)- Effective Java- 學(xué)習(xí)完基礎(chǔ)和原理之后:深入淺出Java- 如果你想深入掌握J(rèn)ava: Java完全參考手冊(cè)- Think Java (免費(fèi))如果你想要?jiǎng)?chuàng)建Android應(yīng)用:- 下載 Android Studio and SDK 工具- 官方入門教程- Courses- Treehouse – 構(gòu)建一個(gè)簡(jiǎn)單的Android應(yīng)用- Udemy – 從Scartch入手,學(xué)習(xí)Android編程
C/C++ ↑關(guān)于C/C++- 一個(gè)非常好的讀物關(guān)于為什么C和C++是不同的語言? - 我應(yīng)該在學(xué)習(xí)C++之前學(xué)習(xí)C?- 為什么C不是C++的子集- IDE: Visual Studio 或者 Eclipse- Tutorials & References: Cprogramming.com關(guān)于 C- 書籍- C Programming Absolute Beginner’s Guide- 如果你想掌握C編程,必須讀– C程序設(shè)計(jì)語言- C語言程序設(shè)計(jì):現(xiàn)代方法- Learn C The Hard Way(免費(fèi))- 教程(免費(fèi))- Learn-C.org- 教程要點(diǎn) - C 教程- C 常見問題關(guān)于C++- 每個(gè)水平不錯(cuò)的書籍列表- C++權(quán)威書籍教程和列表- cplusplus.com – C++ 資源網(wǎng)站- 教程- 一個(gè)關(guān)于游戲開發(fā)不錯(cuò)的教程:Udemy - 學(xué)習(xí)C++游戲開發(fā)- 教程(免費(fèi))- LearnCpp.com- C++控制臺(tái)視頻教程- 教程要點(diǎn) – C++ 教程- 書籍- C++程序設(shè)計(jì)原理與實(shí)踐- C++ 程序設(shè)計(jì)語言- 游戲編程 – Beginning C++ Through Game Programming
JavaScript ↑- 代碼編輯器: Sublime TextCourses (Free)- Codeacademy – JavaScript- Crockford on JavaScript: 在雅虎的一個(gè)公開演講系列!教程 (免費(fèi))- Mozilla 開發(fā)社區(qū) – JavaScript 基礎(chǔ) – 學(xué)習(xí)Web- Superhero.js書籍- A Smarter Way to Learn JavaScript- JavaScript語言精粹- JavaScript模式- JavaScript權(quán)威指南- JavaScript 編程精解 (免費(fèi))對(duì)于前端開發(fā)人員, 必須學(xué)習(xí)HTML & CSS. jQuery也是重要的.- 關(guān)于HTML, CSS, 和JavaScript不錯(cuò)的類比: 以一個(gè)房子來解釋網(wǎng)站中的一部分- 書籍- Web Design with HTML, CSS, JavaScript and jQuery Set- JavaScript and JQuery: Interactive Front-End Web Development- 課程- Treehouse –學(xué)習(xí)前端Web開發(fā)JavaScript + jQuery- Codeacademy – HTML & CSS (免費(fèi))- 教程: W3Schools (免費(fèi))對(duì)于服務(wù)器端開發(fā)人員, 學(xué)習(xí) Node.js:- 課程- Treehouse – Node.js 基礎(chǔ)- nodeschool.io (免費(fèi))
C#
↑官方網(wǎng)站:http://msdn.microsoft.com/en-US/vstudio/hh341490- 首先,簡(jiǎn)單閱讀C#,.NET和ASP.NET之間的練習(xí)- 官方C#入門指南- IDE: Visual Studio- web 開發(fā): 官方ASP.NET入門指南課程- 零基礎(chǔ)學(xué)習(xí)C#編程- 零基礎(chǔ)學(xué)習(xí)C#原理 (免費(fèi))教程- LearnVisualStudio.NET- 免費(fèi)- 零基礎(chǔ)學(xué)習(xí)Visual C# .NET- 教程要點(diǎn) – C# Tutorial書籍- 深入淺出C#- C# 5.0 核心技術(shù)- CLR via C#- ASP.NET高級(jí)編程 (For web development)- Programming C# for Beginners (Free)
Ruby ↑注意: 以下資源主要針對(duì)Ruby on Rails框架.官方網(wǎng)站:http://rubyonrails.org/- 官方Ruby on Rails入門指南- IDE: RubyMine- 使用Ruby on Rails開發(fā)網(wǎng)站,必須有HTML,CSS和JavaScript的基礎(chǔ).點(diǎn)擊"JavaScript"標(biāo)簽頁獲取更多信息Courses- Treehouse – Ruby基礎(chǔ)課程- Udemy – Ruby初學(xué)者編程訓(xùn)練- Rails for Zombies (免費(fèi))教程- RailsCasts (免費(fèi)章節(jié))書籍- Ruby on Rails 教程 (免費(fèi)在線閱讀)- 適合初學(xué)者的書籍 – 應(yīng)用Rails進(jìn)行敏捷Web開發(fā)- 如果你想掌握Ruby on Rails 開發(fā) – Ruby編程語言
PHP ↑官方網(wǎng)站: http://php.net/- IDE: PhpStorm- 不錯(cuò)的最新PHP參考和資源: 正確的方法學(xué)習(xí)PHP課程- Treehouse – PHP基礎(chǔ)課程- Udemy – PHP 和MySQL開始指南- Codeacademy – PHP (免費(fèi))書籍- PHP and MySQL for Beginners- Head First PHP & MySQL學(xué)習(xí)完基礎(chǔ)知識(shí)之后,你或許會(huì)考慮使用框架:- CodeIgniter – 非常適合初學(xué)者,容易,適用于小型項(xiàng)目- Laravel – 最好的和最流行的PHP開發(fā)框架
Objective-C ↑官方網(wǎng)站: https://developer.apple.com/- 如果我想成為一名iOS開發(fā)人員,我應(yīng)該馬上學(xué)習(xí)Swift而不是Objectvie-C嗎?- Objective-C和Cocoa之間的區(qū)別是什么?- 官方入門指南:- iOS- Mac- 你或許打算學(xué)習(xí) Swift 作為你的第一個(gè)/下一個(gè)語言.課程- Treehouse – Objective-C基礎(chǔ)- Code School – 嘗試Objective-C (免費(fèi))- iOS 應(yīng)用開發(fā):- Treehouse – 使用Objective-C構(gòu)建一個(gè)簡(jiǎn)易的iPhone應(yīng)用- Udemy – 如何構(gòu)建iPhone應(yīng)用– iOS 開發(fā)課程教程(免費(fèi))- Cocoa開發(fā)中心- 編程要點(diǎn) – Objective-C Tutorial書籍- Big Nerd Ranch培訓(xùn)系列:Objective-C編程- Big Nerd Ranch培訓(xùn)系列:iOS編程- Programming in Objective-C- 蘋果開發(fā)之Cocoa編程
面向兒童 ↑- 8 – 16年齡: Scratch – 創(chuàng)建自己的游戲,輕松的故事和動(dòng)畫.- 讓孩子更多的有趣的方法來學(xué)習(xí)編程:- 10+ 年齡 : Lego Mindstorms– 編寫程序賦予機(jī)器人生命.- 3 – 8 年齡: Robot Turtles – 棋盤游戲教編程.- 不錯(cuò)的列表 兒童編碼應(yīng)用和網(wǎng)站- 兒童互動(dòng)課程 – Tynker- 一旦你的孩子學(xué)習(xí)完編程原理,你可以繼續(xù)教他們Python (參考 “Python” 標(biāo)簽頁).- 適合孩子學(xué)習(xí)Python書: 趣學(xué)Python編程
更多有用的資源 ↑- 最佳在線編程課程:- Treehouse (第一個(gè)月免費(fèi)):為零基礎(chǔ)者提供,選擇這個(gè)作為你的第一步.- Codeacademy: 適合初學(xué)者精彩和免費(fèi)的課程.- Code School (優(yōu)惠$20頭一個(gè)月): 推薦作為你第二/第三的課程.適合"中級(jí)學(xué)者".- Udemy (使用 “CARLCHEO” 優(yōu)惠劵獲得75%的優(yōu)惠): 許多在線課程列表.其中有一些是非常棒的.推薦你在注冊(cè)之前先閱讀課程簡(jiǎn)介!- Code.org- Khan Academy: 計(jì)算機(jī)編程課程- MIT OpenCourseWare: 最多訪問課程列表- edX: 來自世界最好的大學(xué)中的免費(fèi)在線課程- 如果你使用一款I(lǐng)DE,也想要獲取它源代碼來快速查看和編輯代碼:Sublime Text 或 Notepad++- Amazon: 入門級(jí)暢銷編程書籍- 最好的實(shí)用編程指南之一: Code Complete- YouTube優(yōu)秀教程視頻頻道: thenewboston- CS50.tv : 哈佛大學(xué)的計(jì)算機(jī)科學(xué)入門課程- Google Blockly:可視化編程語言(和 Scratch相似)
信息圖詳解和問題與解答 ↑
1. 為什么到處都是Python ?你是一個(gè)Python的粉絲嗎?
當(dāng)有多個(gè)方案在一個(gè)場(chǎng)景中的時(shí)候,我決定使用Python作為首選語言,因?yàn)樗粡V泛認(rèn)為是最好的編程語言初學(xué)者剧浸。下面是一些證據(jù):
Lifehacker – 首次學(xué)習(xí)者選為最佳編程語言投票(18,665投票中占34%)
有成千上萬的辯論,認(rèn)為其他編程語言是更好的,但我認(rèn)為我們應(yīng)該堅(jiān)持大多數(shù)人的意見.
2. Favourite Toys Analogy
- 樂高 (Python) 和 玩泥巴 (Ruby): 下面是原始的玩具引用類比–
我對(duì)大多數(shù)初學(xué)者推薦Python,但沒關(guān)系表蝙。無論你是偏好Ruby或Python程序員,取決于你的個(gè)性甩十。如果你年輕的時(shí)候最喜歡樂高玩具,選擇Python闹炉。如果是粘土,使用Ruby.
Mattias Petter Johansson on Quora
古老和丑陋的玩具,但是非常喜歡它! (PHP): 在90年代有很少的選擇來開發(fā)網(wǎng)站,互聯(lián)網(wǎng)革命期間PHP才慢慢 主導(dǎo)web開發(fā). 如今它仍然是 最流行的服務(wù)端腳本語言 ,但是會(huì)比C# (ASP.NET), Ruby (Ruby on Rails), JavaScript (Node.js)等等慢慢失去人氣. 查看 不錯(cuò)的類比 關(guān)于為什么PHP是丑陋的, 而且 為什么它仍然是非常有用的和重要的呢.
3. 自動(dòng)和手動(dòng)汽車的類比
C比Java給你更多的控制懈糯。使用Java,你不必?fù)?dān)心換擋(比如Java的內(nèi)存管理),但使用C,你可以開車(執(zhí)行代碼)更快更有效脊框。
4.我認(rèn)為Facebook使用PHP嗎?谷歌是使用Python ?
兩家公司都使用多個(gè)編碼語言,像Java和c++颁督。在這種情況下,我們應(yīng)該遵循規(guī)則# 1中的規(guī)定。底線是,你絕對(duì)需要學(xué)習(xí)不止一個(gè)編程語言在大多數(shù)公司找到一份工作浇雹。
5. 程序員通常面臨的挑戰(zhàn)是什么?
數(shù)小時(shí)盯著你所謂的工作代碼.
有時(shí)你覺得自己愚蠢.
你認(rèn)為花費(fèi)了許多的開發(fā)時(shí)間.
被委派來修復(fù)一切事情,而且不得不和電腦一起工作.
你同意上面的流程圖嗎?在下面評(píng)論中讓我們知道.